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

上传人:b****6 文档编号:4785341 上传时间:2022-12-08 格式:DOCX 页数:9 大小:80.04KB
下载 相关 举报
I2C接口的输入与输出驱动的.docx_第1页
第1页 / 共9页
I2C接口的输入与输出驱动的.docx_第2页
第2页 / 共9页
I2C接口的输入与输出驱动的.docx_第3页
第3页 / 共9页
I2C接口的输入与输出驱动的.docx_第4页
第4页 / 共9页
I2C接口的输入与输出驱动的.docx_第5页
第5页 / 共9页
点击查看更多>>
下载资源
资源描述

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

《I2C接口的输入与输出驱动的.docx》由会员分享,可在线阅读,更多相关《I2C接口的输入与输出驱动的.docx(9页珍藏版)》请在冰豆网上搜索。

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

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

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<

#defineCLRBIT(VAR,Place)(VAR&=((1<

sbitIC_SDA=P3A7;

unsignedcharlC_Re_Time;

unsignedcharlC_Err_Flag;voidTimerO」nit(void)

{

TMOD=OxOO;信方式:

I2C

2.通信端口:

IC_SCL,IC_SDA

3.通信地址:

0x0101000x?

*********************************************

voidlC_Start(void)〃启动IC通信

{?

IC_SDA=1;

}

voidlC_Stop(void)〃停止IC通信

{

}

voidlC_Receive_Ack(void)〃接受ACK

{?

IC_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

//{//ifreadmanydatasatatime,thiscanbeused

〃IC_SDA=O;

〃Delay();

〃IC_SCL=1;

〃Delay();

〃IC_SCL=O;

〃Delay();

〃IC_SDA=1;

//}

voidlC_Send_NAck(void)〃发送NACK

Delay();

}

voidlC_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;

}

unsignedcharlC_Read_Byte(void)〃从8574读取一个数据

unsignedchari;

unsignedcharData;

for(i=0;i<=7;i++)

SETBIT(Data,(7-i));//datainmsbtooelse

CLRBIT(Data,(7-i));

IC_SCL=0;

Delay();

}

return(Data);

}

voidlC_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_data);

IC_Receive_Ack();?

IC_Stop();

if(IC_Err_Flag==0)

break;

}?

}

unsignedcharlC_Read_Data(void)

{

unsignedcharReturn_Data;

unsignedcharread_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_Send_NAck();

IC_Stop();?

if(IC_Err_Flag==0)

{

return(Return_Data);

break;

}?

}

voidPCF8574_lnit(void)

{

IC_Write_Data(OxfO);〃输入状态的必须开始的时候置为1,输出为0

}

voidmain(void)

{

unsignedchartemp3;

Timer0_lnit();

PCF8574_Init();

while

(1)

{

temp3=IC_Read_Data();

IC_Write_Data(OxOf);

Delay();

;中间可以添加你需要的模块,比如显示或者其他的操作等

中断服务子程序

*******************************************************

externvoidexternalO_rt(void)interruptO//INTO

,标准,定时中断

externvoideitO_rt(void)interrupt1//TO

THO=Ox1e;

{

}

voideit1_rt(void)interrupt3using1//T1,标准

voidsci_rt(void)interrupt4using1//UART

it2_rt(void)interrupt5using1//T23

种工作模式,输入捕捉、自动重载和

波形发生器

voidPCA_rt(void)interrupt6using1//PCA

voidKBDIT_rt(void)interrupt7using1//keyboard

voidspi_rt(void)interrupt9using1//SPI

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 高等教育 > 法学

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1