如何采用C51单片机读写CAT24C32.doc

上传人:白大夫 文档编号:3429775 上传时间:2019-08-24 格式:DOC 页数:6 大小:28KB
返回 下载 相关 举报
如何采用C51单片机读写CAT24C32.doc_第1页
第1页 / 共6页
亲,该文档总共6页,到这儿已超出免费预览范围,如果喜欢就下载吧!
资源描述

《如何采用C51单片机读写CAT24C32.doc》由会员分享,可在线阅读,更多相关《如何采用C51单片机读写CAT24C32.doc(6页珍藏版)》请在三一文库上搜索。

1、如何采用C51单片机读写CAT24C32#include#include/我的自定义LCD1602头文件/*-24C32可存储4K(1024*4)个字节(8bit),因此寻址地址最大为0x0FFF,24C32为从机。-*/#defineWriteDeviceAddress0x0A2/定义器件在I2C总线中的写地址(注意:根据自定义从机地址接口改变)#defineReadDviceAddress0x0A3/定义器件在I2C总线中的读地址(注意:根据自定义从机地址接口改变)sbitSCL=P0;/我的24C32接口设置sbitSDA=P3;/2us延时子程序voiddelay_2us(uchari

2、)while(-i);/开始总线voidStart()SDA=1;SCL=1;delay_2us(1);SDA=0;delay_2us(1);SCL=0;/结束总线voidStop()SDA=0;SCL=1;delay_2us(1);SDA=1;delay_2us(1);SDA=0;SCL=0;/发送应答位信号/voidMACK()/SDA=0;/SCL=1;/delay_2us(1);/SCL=0;/SDA=1;/发送非应答位信号voidMNACK()SDA=1;SCL=1;delay_2us(1);SCL=0;SDA=0;/检测从机应答信号bitCACK()bitflag;SDA=1;SC

3、L=1;delay_2us(1);flag=SDA;SCL=0;return(flag);/*-/写入8个bit到24C32-*/Write8Bit(ucharinput)uchartemp;for(temp=0;temp8;temp+)SDA=(bit)(inputSCL=1;delay_2us(1);SCL=0;input=input1;/*-/写入一个字节到24C32中-*/voidWrite24C32(ucharch,uintaddress)Start();Write8Bit(WriteDeviceAddress);while(CACK();Write8Bit(address/256)

4、;(注意:地址分两次传送,高位在前!)while(CACK();Write8Bit(address%256);while(CACK();Write8Bit(ch);while(CACK();Stop();/*-/从24C32中读出8个bit-*/ucharRead8Bit()unsignedchartemp,rbyte=0;for(temp=0;temp8;temp+)SDA=1;SCL=1;rbyte=rbyte|(unsignedchar)(SDA);if(temp7)/注意:仅左移7次rbyte=rbyte1;SCL=0;return(rbyte);/*-从24c32中读出1个字节-*/

5、ucharRead24C32(uintaddress)ucharch;Start();Write8Bit(WriteDeviceAddress);while(CACK();Write8Bit(address/256);while(CACK();Write8Bit(address%256);while(CACK();Start();Write8Bit(ReadDviceAddress);while(CACK();ch=Read8Bit();MNACK();Stop();return(ch);/*-主函数-*/voidmain(void)/主程序ucharnewchar;LCD1602_init();/1602初始化Write24C32(8,0x01FF);/写5进0x1FFLCD1602_puts(0,0,“24C32W_TestOK!”);newchar=Read24C32(0x01FF);/从0x1FF接收数据LCD1602_puts(0,1,“ReadValue=”);LCD1602_puts(10,1,newchar);while(1);

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

当前位置:首页 > 其他


经营许可证编号:宁ICP备18001539号-1