IIC应用程序.docx
- 文档编号:8848949
- 上传时间:2023-02-02
- 格式:DOCX
- 页数:12
- 大小:153.92KB
IIC应用程序.docx
《IIC应用程序.docx》由会员分享,可在线阅读,更多相关《IIC应用程序.docx(12页珍藏版)》请在冰豆网上搜索。
IIC应用程序
A1,A2,A3为可编程地址输入端,我们假设地址为0,即A1,A2,A3都接地,
WP*为允许书写端控制,当WP*为高电平时禁止读和写,因此WP*也接地,允许读写操作,SDA为串行数据/地址线,SCL为串行时钟线,他们接在单片机的I/O口,
参考程序如下:
#include"reg51.h"
#defineucharunsignedchar
sbitsda=P1^6;//按照硬件自己定义;
sbitscl=P1^5;//按照硬件自己定义;
voiddelay(ucharx)
{
uchari,j;
for(i=0;i for(j=0;j<100;j++); } voidinit()//初始化; { sda=1; scl=1; } voidstart()//起始信号函数,参考时序图 { sda=1; scl=1; sda=0; } voidstop()//终止信号函数,参考时序图 { sda=0; scl=1; sda=1; } voidwrite_byte(uchardate)//写一个字节函数,参考时序图 { uchari; scl=0; for(i=0;i<8;i++) { scl=0; sda=date&0x80; scl=1; scl=0; date<<=1; } scl=0; } //*/ /*//写一个字节函数,参考时序图,和上端程序功能一样; uchari,temp; temp=SByte; for(i=0;i<8;i++) { temp=temp<<1; SCL=0; delay(); SDA=CY; delay(); SCL=1; delay(); //scl=0; //delay(); } SCL=0; delay(); SDA=1; delay(); //*/ voidrespond()//回应函数,参考时序图 { uchari; scl=0; scl=1; while((sda==1)&&(i<200)) i++; scl=0; } ucharread_byte()//读一个字节函数,参考时序图 { uchari,t; scl=0; for(i=0;i<8;i++) { t<<=1; scl=1; if(sda) { t=t|0x01; } scl=0; } returnt; } //*///读一个字节函数,参考时序图,和上段程序功能一样 /* uchari,k; SCL=0; delay(); SDA=1; delay(); for(i=0;i<8;i++) { SCL=1; delay(); k=(k<<1)|SDA; SCL=0; delay(); } returnk; voidmain()//主函数 { init(); start(); write_byte(0xa0);//写数据(固定) respond(); write_byte(3);//写入地址(自己定义,不要超出24C02最大存储量255) respond(); write_byte(0x66);//在上方的地址空间写数据,自己定义, respond(); stop(); delay(100); start(); write_byte(0xa0); respond(); write_byte(3); respond(); start(); write_byte(0xa1);//读数据,固定 respond(); P2=read_byte();//读出在你刚才写入的地址中的数据 stop(); while (1); } 应用时序参考下图: 程序仅供参考,可能本人理解也有错误,希望大家指出,谢谢,有意可加QQ503801010,共同探讨。 charSendData(unsignedcharSByte) { } 每个字节发送完成后,都要产生一个应答信号. 当一个字节发送完成后,单片机再产生一个周期的时钟信号,当时钟变为高电平的时候,单片机读取SDA线的状态,如果为低电平,则对方收到数据;如果为高电平,则对方没有收到数据。 此时,单片机可以再发一次数据。 charWriteByte(unsignedcharAddr,unsignedcharWData) { Start(); SendByte(0xA0); if(Rack())//如果为1,表示没有收到数据 { //决定是否再发一次,或终止整个过程 } SendByte(Addr); if(Rack()) { } SendByte(WData); if(Rack()) { } Stop(); } unsignedcharReadByte() {unsignedchari,RData=0; SCL=0; for(i=0;i<8;i++) { SCL=1; if(SDA) { RData|=0x01; } RData<<=1;//? ? ? } returnRData; }
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- IIC 应用程序