1、I2C接口的输入与输出驱动的I2C接口的输入与输出驱动的PCF8574-pcf8574采用I2C接口,有8个准双向口,可以和外部电路连接,来实现输入输出功能,可以用来对口线进行扩展有几点需要注意1某位作为输入的时候,必须首先置为高电平2.地址是 0100A2A1A0R/W3.最多可以扩展8片4低电流损耗,静态电流10uA,驱动电流比较大,而且有索存功能,能够驱动LED 发光管5.带有外部中断输出,低电平有效我作了一个电路,其中P7-P4作为输入检测开关状态,P3-P0作为输出来驱动LED灯程序如下#i nclude#defi neSETBIT(VAR,Place)(VAR|=(1Place)#
2、defi neCLRBIT(VAR,Place)(VAR&=(1PlaceF255) sbitlC_SCL=P3W;sbitIC_SDA=P3A7;un sig nedcharlC_Re_Time;un sig nedcharlC_Err_Flag; voidTimerOnit(void)TMOD=OxOO;信方式:I2C2.通信端口 :IC_SCL,IC_SDA3.通信地址:0x0101000x ?*voidlC_Start(void) 启动 IC 通信?IC_SDA=1;voidlC_Stop(void) 停止 IC 通信voidlC_Receive_Ack(void) 接受 ACK?IC
3、_SDA=1;IC_SCL=1;?Delay(); ?IC_Re_Time=O; ? while(IC_Re_Time=30) if(IC_SDA=O)IC_Err_Flag=1;IC_SCL=O;Delay();voidlC_Send_ACK(void) 发送 ACK/ifreadma ny datasatatime,thisca nbeusedIC_SDA=O;Delay();IC_SCL=1;Delay();IC_SCL=O;Delay();IC_SDA=1;/voidlC_Send_NAck(void) 发送 NACKDelay();voidlC_Write_Byte(unsigned
4、charData)/ 写数据到 8574un sig nedchari; ?for(i=0;i=7;i+)if(VALBIT(Data,(7-i)/dataoutmsbIC_SDA=1;elseIC_SDA=0;IC_SCL=1;Delay();IC_SCL=0;unsignedcharlC_Read_Byte(void) 从 8574 读取一个数据un sig nedchari;un sig nedcharData;for(i=0;i=7;i+)SETBIT(Data,(7-i);/datai nm sbtoo elseCLRBIT(Data,(7-i);IC_SCL=0;Delay();r
5、eturn(Data);voidlC_Write_Data(u nsig nedcharData)un sig nedcharwrite_time;un sig nedcharwrite_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=0)break;?un sig nedcharl
6、C_Read_Data(void)un sig nedcharReturn_Data;un sig nedcharread_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;?voidPCF8574_l ni t(void)IC_Write_Data(Ox
7、fO); 输入状态的必须开始的时候置为1,输出为0voidma in(v oid)un sig nedchartemp3;Timer0_l ni t();PCF8574_I ni t();while(1)temp3=IC_Read_Data();IC_Write_Data(OxOf);Delay();中间可以添加你需要的模块,比如显示或者其他的操作等中断服务子程序*externvoidexternalO_rt(void)i nterruptO/INTO,标准,定时中断exter nv oideitO_rt(void)i nterrupt1/TOTHO=Ox1e;voideit1_rt(void)i nterrupt3usi ng1/T1 ,标准voidsci_rt(void)i nterrupt4usi ng1/UARTit2_rt(void)i nterrupt5usi ng1/T23种工作模式,输入捕捉、自动重载和波形发生器voidPCA_rt(void)i nterrupt6usi ng1/PCAvoidKBDIT_rt(void)i nterrupt7usi ng1/keyboardvoidspi_rt(void)i nterrupt9us in g1/SPI
copyright@ 2008-2022 冰豆网网站版权所有
经营许可证编号:鄂ICP备2022015515号-1