I2C接口的输入与输出驱动的

上传人:汽*** 文档编号:491095886 上传时间:2023-02-08 格式:DOC 页数:12 大小:52.50KB
返回 下载 相关 举报
I2C接口的输入与输出驱动的_第1页
第1页 / 共12页
I2C接口的输入与输出驱动的_第2页
第2页 / 共12页
I2C接口的输入与输出驱动的_第3页
第3页 / 共12页
I2C接口的输入与输出驱动的_第4页
第4页 / 共12页
I2C接口的输入与输出驱动的_第5页
第5页 / 共12页
点击查看更多>>
资源描述

《I2C接口的输入与输出驱动的》由会员分享,可在线阅读,更多相关《I2C接口的输入与输出驱动的(12页珍藏版)》请在金锄头文库上搜索。

1、I2C接口的输入与输出驱动的 PCF8574-pcf8574采用I2C接口,有8个准双向口,可以和外部电路连接,来实现输入输 出功能,可以用来对口线进行扩展 有几点需要注意1. 某位作为输入的时候,必须首先置为高电平2. 地址是 0100 A2 A1 A0 R/W3. 最多可以扩展8片4低电流损耗,静态电流10uA,驱动电流比较大,而且有索存功能,能够驱动LED 发光管5.带有外部中断输出,低电平有效我作了一个电路,其中P7-P4作为输入检测开关状态,P3-P0作为输出来驱动LED 灯 程序如下#in elude reg51.h(VAR|=(1vPlace)#defi ne SETBIT(VA

2、R,Place)(VAR&=(1vvPlaceF255)sbit IC_SCL=P3A6;sbit IC_SDA=P3A7;un sig ned char IC_Re_Time;un sig ned char IC_Err_Flag;void TimerOnit(void)TMOD=OxOO/timerO 工作定时器方式0, 13位技术TH0=0x1e; /5msTL0=0x0c; /5msTR0=1; /启动时钟0ET0=1; /允许时钟0进行中断EA=1; /开放所有中断void Delay(void)un sig ned char i;for(i=0;i=10;i+)Junsigned

3、char VALBIT(unsigned int Val,unsigned char Bit)un sig ned int Buf;Buf=0x0001;if(Bit)Buf=Bit;Val&=Buf;if(Val)return(Oxff);elsereturn(OxOO);/*下面是PCF8574勺操作程序1. 通信方式:I2C2. 通信端口 :IC_SCL(P3.6),IC_SDA(P3.7)3. 通信地址:0x0101000x*/void IC_Start(void) / 启动 IC 通信IC_SDA=1;Delay();IC_SCL=1;Delay();IC_SDA=0;Delay()

4、;IC_SCL=0;Delay();void IC_Stop(void) / 停止 IC 通信IC_SDA=O;Delay();IC_SCL=1;Delay();IC_SDA=1;Delay();void IC_Receive_Ack(void) / 接受 ACKIC_SDA=1;IC_SCL=1;Delay();IC_Re_Time=O;while(IC_Re_Time=30)if(IC_SDA=0)IC_Err_Flag=0;break;elseIC_Err_Flag=1;IC_SCL=O;Delay();/void IC_Send_ACK(void) / 发送 ACK/ /if read

5、 many datas at a time,this can be used/ IC_SDA=0;/ Delay();/ IC_SCL=1;/ Delay();/ IC_SCL=0;/ Delay();/ IC_SDA=1;/void IC_Send_NAck(void) / 发送 NACKIC_SDA=1;Delay();IC_SCL=1;Delay();IC_SCL=O;Delay();void IC_Write_Byte(unsigned char Data) / 写数据到 8574un sig ned char i;for(i=0;i=7;i+)if(VALBIT(Data,(7-i)

6、 /data out msbIC_SDA=1;elseIC_SDA=0;IC_SCL=1;Delay();IC_SCL=0;Delay();unsigned char IC_Read_Byte(void)/ 从 8574 读取一个数据un sig ned char i;un sig ned char Data;for(i=0;i=7;i+)IC_SCL=1;Delay();IC_SDA=1;Delay();if(IC_SDA)SETBIT(Data,(7-i); /data in msb too elseCLRBIT(Data,(7-i);IC_SCL=0;Delay();return(Dat

7、a);void IC_Write_Data(unsigned char Data)un sig ned char write_time;un sig ned char write_data;write_data=Data;for(write_time=0;write_time=2;write_time+)IC_Start();IC_Write_Byte(0x40);IC_Receive_Ack();IC_Write_Byte(write_data);IC_Receive_Ack();IC_Stop();if(IC_Err_Flag=O)break;un sig ned char IC_Read

8、_Data(void)un sig ned char Return_Data;un sig ned char read_time;for(read_time=0;read_time=2;read_time+)IC_Start();IC_Write_Byte(0x41);IC_Receive_Ack();Return_Data=IC_Read_Byte();IC_Se nd_NAck();IC_Stop();if(IC_Err_Flag=0)return(Return_Data);break;void PCF8574ni t(void)1,输出为0IC_Write_Data(OxfO); /输入

9、状态的必须开始的时候置为void ma in (void)un sig ned char temp3;TimerOni t();PCF8574_I ni t();while(1)temp3=IC_Read_Data();IC_Write_Data(0x0f);Delay();中间可以添加你需要的模块,比如显示或者其他的操作等中断服务子程序extern void externalO_rt(void)interrupt 0/INT0标准,定时中断extern void eit0_rt(void)interrupt 1/T0TH0=0x1e;TL0=0x0c;IC_Re_Time+;void ext

10、ernal1_rt(void)i nterrupt 2 usi ng 1/INT1,标准void eit1_rt(void)i nterrupt 3 us ing 1/T1void sci_rt(void)i nterrupt 4 usi ng 1/UART种工作模式,输入捕捉、自动void eit2_rt(void)i nterrupt 5 usi ng 1/T2 3 重载和波形发生器void PCA_rt(void)i nterrupt 6 us ing 1/PCAvoid KBDIT_rt(void)i nterrupt 7 usi ng/keyboard void spi_rt(void)i nterrupt 9 usi ng 1/SPIWelcome !欢迎您的下载, 资料仅供参考!

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 办公文档 > 活动策划

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号