ic接口的输入与输出驱动的pcf.docx

  1. 1、本文档共11页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
文件排版存档编号:[UYTR-OUPT28-KBNTL98-UYNN208] 文件排版存档编号:[UYTR-OUPT28-KBNTL98-UYNN208] IC接口的输入与输出驱动的PCF I2C接口的输入与输出驱动的PCF8574- pcf8574采用I2C接口,有8个准双向口,可以和外部电路连接,来实现输入输出功能,可以用来对口线进行扩展 有几点需要注意 1.某位作为输入的时候,必须首先置为高电平 2.地址是0100A2A1A0R/W 3.最多可以扩展8片 4.低电流损耗,静态电流10uA,驱动电流比较大,而且有索存功能,能够驱动LED发光管 5.带有外部中断输出,低电平有效 我作了一个电路,其中P7-P4作为输入检测开关状态,P3-P0作为输出来驱动LED灯 程序如下 #include"" #defineSETBIT(VAR,Place)(VAR|=(1<<Place)) #defineCLRBIT(VAR,Place)(VAR&=((1<<Place)^255)) sbitIC_SCL=P3^6; sbitIC_SDA=P3^7; unsignedcharIC_Re_Time; unsignedcharIC_Err_Flag; voidTimer0_Init(void) { TMOD=0x00;信方式:I2C 2.通信端口:IC_SCL,IC_SDA 3.通信地址:0x0101000x ***********************************************/ voidIC_Start(void)//启动IC通信 { IC_SDA=1; Delay(); IC_SCL=1; Delay(); IC_SDA=0; Delay(); IC_SCL=0; Delay(); } voidIC_Stop(void)//停止IC通信 { IC_SDA=0; Delay(); IC_SCL=1; Delay(); IC_SDA=1; Delay(); } voidIC_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(); } //voidIC_Send_ACK(void)//发送ACK //{//ifreadmanydatasatatime,thiscanbeused //IC_SDA=0; //Delay(); //IC_SCL=1; //Delay(); //IC_SCL=0; //Delay(); //IC_SDA=1; //} voidIC_Send_NAck(void)//发送NACK { IC_SDA=1; Delay(); IC_SCL=1; Delay(); IC_SCL=0; Delay(); } voidIC_Write_Byte(unsignedcharData)//写数据到8574 { unsignedchari; for(i=0;i<=7;i++) { if(VALBIT(Data,(7-i)))//dataoutmsb IC_SDA=1; else IC_SDA=0; IC_SCL=1; Delay(); IC_SCL=0; Delay(); } } unsignedcharIC_Read_Byte(void)//从8574读取一个数据 { unsignedchari; unsignedcharData; for(i=0;i<=7;i++) { IC_SCL=1; Delay(); IC_SDA=1; Delay(); if(IC_SDA) SETBIT(Data,(7-i));//datainmsbtoo else CLRBIT(Data,(7-i)); IC_SCL=0; Delay(); } return(Data); } voidIC_Write_Data(unsignedcharData) { unsignedcharwrite_time; unsignedcharwrite_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_

文档评论(0)

Duan700507 + 关注
实名认证
内容提供者

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

1亿VIP精品文档

相关文档