在网盘中 使用KEIL 工程 主要有AD0804.C AD0804.H AT24CXX.C AT24CXX.H DELAY.C DELAY.H DS18B20.C DS18B20.H DS1302.C DS1302.H IIC.C IIC.H LCD1602.C LCD1602.H LCD12864.C LCD12864.H PCF8591.C PCF8591.H SMG.C SMG.H等文件 都是自己大学的时候写的注释详细 不过要用的话 要会正确添加C 文件 少添加会报错的里面不有几个主程序 希望对大家有帮助 有问题可以发邮箱给我605392141@qq.com 我会在有空的时候回复给你!谢谢! 例如: AT24CXX.C /***包****含****头****文****件****/ #include"IIC.H" /*****起*****始*****信*****号*****/ void start() { IIC_SDA=1;//数据线拉高 delay(); //延时 IIC_SCL=1;//时钟线拉高 delay(); //延时 IIC_SDA=0;//数据线拉低 delay(); //延时 IIC_SCL=0;//时钟线拉低 delay(); //延时 } /*****终*****止*****信*****号*****/ void stop() { IIC_SCL=0;//时钟线拉低 delay(); //延时 IIC_SDA=0;//数据线拉低 delay(); //延时 IIC_SCL=1;//时钟线拉高 delay(); //延时 IIC_SDA=1;//数据线拉高 delay(); //延时 } /*****应*****答*****信*****号*****/ void respons() { uint8 i; //循环变量 IIC_SCL=1;//时钟线拉高 delay(); //延时 //当i等于250默认应答 while((IIC_SDA==1)&&(i<250)) i++; //变量加加 IIC_SCL=0;//时钟线拉低 delay(); //延时 } /***非****应****答****信****号****/ void no_respons() { IIC_SCL=0;//时钟线拉低 delay(); //延时 IIC_SDA=1;//数据线拉高 delay(); //延时 IIC_SCL=1;//时钟线拉高 delay(); //延时 IIC_SDA=0;//数据线拉低 delay(); //延时 } /*****写*****单*****字*****节*****/ void IIC_write_byte(uint8 date) { uint8 i,temp; //声明变量 temp=date; //将要写入的数据赋给变量 for(i=0;i<8;i++)//按位8次循环写入 { temp<<=1; //将要写的数据左移致CY IIC_SCL=0; //时钟线拉低 delay(); //延时 IIC_SDA=CY; //将CY传给数据线 delay(); //延时 IIC_SCL=1; //时钟线拉高 delay(); //延时 } IIC_SCL=0; //时钟线拉低 delay(); //延时 IIC_SDA=1; //数据线拉高 delay(); //延时 } /*****读*****单*****字*****节*****/ uint8 IIC_read_byte() { uint8 i,k; //声明变量 IIC_SCL=0; //时钟线拉低 delay(); //延时 IIC_SDA=1; //数据线拉高 delay(); //延时 for(i=0;i<8;i++) //按位8次循环读出 { IIC_SCL=1; //时钟线拉高 delay(); //延时 k=(k<<1)|IIC_SDA;//将读出数据进行处理 IIC_SCL=0; //时钟线拉低 delay(); //延时 } return k; //返回读出数据 } /*********************************/ |
欢迎光临 圣源电子制作 (https://bbs.syyyd.com/) | Powered by Discuz! X3.4 |