I2C接口的输入与输出驱动的PCF8574-.docVIP

  1. 1、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
  2. 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  3. 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  4. 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  5. 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  6. 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  7. 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
......word...专业技术行业资料...... ......范文范例学习参考指导....... I2C接口的输入与输出驱动的PCF8574- pcf8574采用I2C接口,有8个准双向口,可以和外部电路连接,来实现输入输出功能,可以用来对口线进行扩展 有几点需要注意 1.某位作为输入的时候,必须首先置为高电平 2.地址是0100 A2 A1 A0 R/W 3.最多可以扩展8片 4.低电流损耗,静态电流10uA,驱动电流比较大,而且有索存功能,能够驱动LED发光管 5.带有外部中断输出,低电平有效 我作了一个电路,其中P7-P4作为输入检测开关状态,P3-P0作为输出来驱动LED灯 程序如下 #include reg51.h #define SETBIT(VAR,Place)???????? (VAR|=(1Place)) #define CLRBIT(VAR,Place)???????? (VAR=((1Place)^255)) sbit IC_SCL=P3^6; sbit IC_SDA=P3^7; unsigned char IC_Re_Time; unsigned char IC_Err_Flag; void Timer0_Init(void) { ?TMOD=0x00;?//timer0工作定时器方式0,13位技术 ?TH0=0x1e;?//5ms ?TL0=0x0c;?//5ms ?TR0=1;??//启动时钟0 ?ET0=1;??//允许时钟0进行中断 ?EA=1;??//开放所有中断 } void Delay(void) { ?unsigned char i; ?for(i=0;i=10;i++) ?{ ??; ?}? } unsigned char VALBIT(unsigned int Val,unsigned char Bit) { ?unsigned int Buf; ?Buf=0x0001; ?if(Bit) ??? Buf=Bit; ?Val=Buf; ?if(Val) ?? return(0xff); ?else ?? return(0x00); } /********************************************** ????????? 下面是PCF8574的操作程序 1.通信方式:I2C 2.通信端口: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(); ?IC_SCL=0; ??Delay();? } void IC_Stop(void)???//停止IC通信 { ? ?IC_SDA=0; ??Delay(); ?IC_SCL=1; ??Delay(); ?IC_SDA=1; ??Delay();????? } void IC_Receive_Ack(void)??//接受ACK {??? ?IC_SDA=1; ?IC_SCL=1;? ??Delay();?? ?IC_Re_Time=0;? ?while(IC_Re_Time=30) ?{ ??if(IC_SDA==0) ??{ ???IC_Err_Flag=0; ???break; ??}? ??else ??{ ???IC_Err_Flag=1; ??} ?} ?IC_SCL=0; ??Delay(); } //void IC_Send_ACK(void)???//发送ACK //{??????//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)???//发送NACK { ?IC_SDA=1; ??Delay(); ?IC_SCL=1; ??Delay(); ?IC_SCL=0; ??Delay(); } void IC_Write_Byte(unsigned char Data)?//写数据到8574 { ?unsigned char i;? ?for(i=0;i=7;i++) ?{ ??if(VALBIT(Data,(7-i)))?//data out msb ???IC_SDA

文档评论(0)

xfnzn + 关注
实名认证
文档贡献者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档