I2C接口的输入与输出驱动的_第1页
I2C接口的输入与输出驱动的_第2页
I2C接口的输入与输出驱动的_第3页
已阅读5页,还剩7页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

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

2、SETBIT(VAR,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+)J

3、unsigned 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=

4、0;Delay();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/

5、 /if read 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(D

6、ata,(7-i) /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();r

7、eturn(Data);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 cha

8、r IC_Read_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(O

9、xfO); /输入状态的必须开始的时候置为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 external1_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 重载和波形发生器voi

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论