历史上的今天
返回首页

历史上的今天

今天是:2025年02月03日(星期一)

2021年02月03日 | 如何采用C51单片机读写CAT24C32

2021-02-03 来源:eefocus

#include


#include//我的自定义LCD1602头文件


/*---------------------------------------------------------------


24C32可存储4K(1024*4)个字节(8bit),因此寻址地址最大为0x0FFF,24C32为从机。


----------------------------------------------------------------*/


#defineWriteDeviceAddress0x0A2//定义器件在I2C总线中的写地址(注意:根据自定义从机地址接口改变)


#defineReadDviceAddress0x0A3//定义器件在I2C总线中的读地址(注意:根据自定义从机地址接口改变)


sbitSCL=P0^4;//我的24C32接口设置


如何采用C51单片机读写CAT24C32


sbitSDA=P3^7;


//2us延时子程序


voiddelay_2us(uchari)


{


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;


SCL=1;


delay_2us(1);


flag=SDA;


SCL=0;


return(flag);


}


/*--------------------------------------------------------------------------


//写入8个bit到24C32


---------------------------------------------------------------------------*/


Write8Bit(ucharinput)


{


uchartemp;


for(temp=0;temp《8;temp++)


{


SDA=(bit)(input&0x80);


SCL=1;


delay_2us(1);


SCL=0;


input=input《《1;


}


}


/*--------------------------------------------------------------------------


//写入一个字节到24C32中


---------------------------------------------------------------------------*/


voidWrite24C32(ucharch,uintaddress)


{


Start();


Write8Bit(WriteDeviceAddress);


while(CACK());


Write8Bit(address/256);(注意:地址分两次传送,高位在前!)


while(CACK());


Write8Bit(address%256);


while(CACK());


Write8Bit(ch);


while(CACK());


Stop();


}


/*--------------------------------------------------------------------------


//从24C32中读出8个bit


---------------------------------------------------------------------------*/


ucharRead8Bit()


{


unsignedchartemp,rbyte=0;


for(temp=0;temp《8;temp++)


{


SDA=1;


SCL=1;


rbyte=rbyte|((unsignedchar)(SDA));


if(temp《7)//注意:仅左移7次


{


rbyte=rbyte《《1;


}


SCL=0;


}


return(rbyte);


}


/*--------------------------------------------------------------------------


从24c32中读出1个字节


---------------------------------------------------------------------------*/


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’进0x1FF


LCD1602_puts(0,0,“24C32W_TestOK!”);


newchar=Read24C32(0x01FF);//从0x1FF接收数据


LCD1602_puts(0,1,“ReadValue=”);


LCD1602_puts(10,1,newchar);


while(1);


}


推荐阅读

史海拾趣

Chiefdom Electronic Co Ltd公司的发展小趣事

随着全球化的深入发展,Chiefdom Electronic Co Ltd意识到国际化布局对于提升竞争力的重要性。公司开始积极拓展海外市场,设立海外研发中心和销售网络,以便更好地了解当地市场需求和文化特点。通过本地化运营和定制化服务,公司成功打入多个国际市场,并获得了良好的业绩回报。这些国际化布局不仅提升了公司的整体竞争力,还为其在全球电子行业中占据了更加重要的地位。

Grayhill公司的发展小趣事
使用万用表等工具测量电路的输出电压和电流,确保它们符合设计要求。
Davies Molding公司的发展小趣事

Davies Molding公司在追求经济效益的同时,始终关注社会责任和可持续发展。公司积极参与环保公益活动,推动绿色生产,降低对环境的影响。此外,Davies Molding公司还注重员工福利和社会公益事业,为员工提供良好的工作环境和发展空间,为社会做出积极贡献。这些举措不仅提升了公司的社会形象,也为公司的长期发展奠定了坚实基础。

CWIND公司的发展小趣事

在电子行业的早期阶段,CWIND公司以其卓越的技术研发能力脱颖而出。公司创始人张先生带领一支由资深工程师组成的团队,针对当时市场上电子产品普遍存在的功耗高、性能不稳定等问题,进行了深入研究。经过数月的努力,他们成功研发出了一款低功耗、高性能的芯片,这款芯片在市场上迅速获得了认可,为CWIND公司打开了市场的大门。随着技术的不断迭代和更新,CWIND逐渐在电子行业中建立了自己的技术壁垒。

欧密格光电(Amicc)公司的发展小趣事

在电子行业的早期阶段,CWIND公司以其卓越的技术研发能力脱颖而出。公司创始人张先生带领一支由资深工程师组成的团队,针对当时市场上电子产品普遍存在的功耗高、性能不稳定等问题,进行了深入研究。经过数月的努力,他们成功研发出了一款低功耗、高性能的芯片,这款芯片在市场上迅速获得了认可,为CWIND公司打开了市场的大门。随着技术的不断迭代和更新,CWIND逐渐在电子行业中建立了自己的技术壁垒。

GHz Technology ( Microsemi )公司的发展小趣事

在激烈的市场竞争中,CWIND公司始终坚持以客户为中心的服务理念。公司建立了完善的客户服务体系,为客户提供从产品咨询、购买到售后服务的全方位支持。同时,公司还注重品牌建设和宣传推广工作。通过加大广告投放力度、举办品牌活动等方式,CWIND逐渐提升了品牌知名度和美誉度。在消费者心中树立起了良好的品牌形象和口碑效应。

问答坊 | AI 解惑

基于LM331和单片机的压力数据采集

基于LM331和单片机的压力数据采集基于LM331和单片机的压力数据采集…

查看全部问答>

2009年度国家最高科学技术奖揭晓

中科院院士谷超豪、孙家栋获奖 1月11日上午,一年一度的国家科学技术奖励大会在北京人民大会堂举行,中科院院士谷超豪、孙家栋获得2009年度国家最高科学技术奖,奖金500万元。   谷超豪   数学家。1926年5月15日生于浙江温州 ...…

查看全部问答>

高难度的问题,代码空间不够用

我们的程序基于NXP的一款内置512KB FLASH ROM的CPU设计,现在发现程序空间不够修改BUG和增加新功能使用。 在代码优化和结构调整上已做过文章,能省出来的非常有限。 我们的程序里有8国语言,现全部放在FLASH里,不想放在外部EEPROM中处理起来太过 ...…

查看全部问答>

2440WINCE向总线读写失败,寻求支持。

#define nGCS4                        0x20000000 ............... ............... #define WRITE_BUS(io_addr, val)        (*((volatile unsigned char * ...…

查看全部问答>

Wince5.0中如何隐藏文件夹?

   NK.bin中有些系统文件,通过下载,被存放在文件夹ResidentFlash中,通过USB功能,用户能看到这个文件夹及下面的所有文件,当某些文件被破坏后,系统也就遭到破坏,不能正常使用了。故想隐藏该文件夹,让用户看不到相关的文件,请问该如 ...…

查看全部问答>

现在哪种嵌入式系统用得比较多?

现在国内公司哪种嵌入式系统用得比较多?WinCE 、Linux 还是 Vxworks ?…

查看全部问答>

安装wince5.0问题

我刚装了wince5.0,打开platform builder 5.0的时候,弹出两个提示筐,分别为: No primary processors are available. The build system will be disabled,It is likely that a build system \'add-on\' processor(pkg),installed by setup,fa ...…

查看全部问答>

请教开发实时流媒体开发库jrtplib的菜问题,100分不够再加。

        RTPSessionParams sessParams;         sessParams.SetOwnTimestampUnit(1.0 / 30.0); //30 video frames per second         sessParams.SetUsePollThread(1); //backgrou ...…

查看全部问答>

紧急求助

各位: 大家好,附件产品就是水位传感器,那位仁兄能帮我解释下,附件的原理,是怎么来运动的, 另外还有上电自检2.5S ,靠什么来自检的。 另外可变电阻R10,是来起什么作用的。 …

查看全部问答>

这两个指令间需要多长时间?

如果SYS_CLK是72M   PCLK2=36M时 GPIO_SetBits(GPIOB,GPIO_pin_1); GPIO_ResetBits(GPIOB,GPIO_pin_1); 这两个库函数调用需要多长时间?…

查看全部问答>