久久久久久久999_99精品久久精品一区二区爱城_成人欧美一区二区三区在线播放_国产精品日本一区二区不卡视频_国产午夜视频_欧美精品在线观看免费

 找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

搜索
查看: 6978|回復: 5
收起左側

51單片機通過I2C串行總線擴展1片AT24C02,實現單片機對存儲器AT24C02的讀、寫

  [復制鏈接]
ID:777981 發表于 2020-6-13 14:22 | 顯示全部樓層 |閱讀模式
單片機通過I2C串行總線擴展1AT24C02,實現單片機對存儲器AT24C02的讀、寫。由于Proteus元件庫中沒有AT24C02,可用FM24C02芯片代替,即在Proteus中“關鍵字”對話框元件查找欄中輸入“24C02”,就會在左側的元件列表中顯示,然后在元件列表中選擇即可。AT89S51FM24C02的接口原理電路見圖。
圖中KEY1作為外部中斷0的中斷源,當按下KEY1,單片機通過I2C總線發送數據0xaaAT24C02,等發送數據完畢后,將0xc3P2口通過LED顯示。
KEY2作為外部中斷1的中斷源,當按下KEY2時,單片機通過I2C總線讀AT24C02,等讀數據完畢后,將讀出的最后數據0xaaP2口的LED顯示出來。

最終顯示的仿真效果是:按下KEY1,標號為D1D88LEDD3D4D5D6燈亮,如圖10-17所示。按下KEY2,則D1D3D5D7燈亮。
Proteus提供的I2C調試器是調試I2C系統的得力工具,使用I2C調試器的觀測窗口可觀察I2C總線上的數據流,查看I2C總線發送的數據,也可作為從器件向I2C總線發送數據。

仿真原理圖如下(proteus仿真工程文件可到本帖附件中下載)

仿真結果

仿真結果


單片機源程序如下:
  1. #include<reg51.h>
  2. #include<intrins.h>
  3. #include<stdio.h>
  4. #define uchar unsigned char
  5. #define uint unsigned int
  6. #define out P2
  7. sbit scl=P1^1;
  8. sbit sda=P1^0;
  9. sbit key1 =P3^2;
  10. sbit key2=P3^3;
  11. uchar data mem[4]_at_0x55;
  12. uchar mem[4]={0x41,0x42,0x43,0xaa};
  13. uchar data rec_mem[4]_at_0x60;
  14. void start(void);
  15. void stop(void);
  16. void sack(void);
  17. bit rack(void);
  18. void ackn(void);
  19. void send_byte(uchar);
  20. uchar rec_byte(void);
  21. void write(void);
  22. void read(void);
  23. void delay4us(void);
  24. void main(void)
  25. {
  26. EA=1 ;EX0=1;EX1=1;
  27. while(1);
  28. }
  29. void ext0()interrupt 0
  30. {
  31. write();
  32. }
  33. void ext1()interrupt 2
  34. {
  35. read();
  36. }
  37. void read(void)
  38. {
  39. uchar i;
  40. bit f;
  41. start();
  42. send_byte(0xa0);
  43. f=rack();
  44. if(!f)
  45. {
  46. start();
  47. send_byte(0xa0);
  48. f=rack();
  49. send_byte(0x00);
  50. f=rack();
  51. if(!f)
  52. {
  53. or(i=0;i<3;i++)
  54. {
  55. rec_mem[i]=rec_byte();
  56. sack(); .
  57. rec_mem[3]=rec_byte();ackn();
  58. }
  59. }
  60. }
  61. stop();out=rec_mem[3];while(!key2);
  62. }
  63. void write(void)
  64. {
  65. uchar i;
  66. bit f;
  67. start();
  68. send_byte(0xa0);
  69. f=rack();
  70. if(!f){
  71. send_byte(0x00);
  72. f=rack();
  73. if(!f){
  74. for(i=0;i<4;i++)
  75.         {
  76. send_byte(mem[i]);
  77. f=rack();
  78. if(f)break;
  79. }
  80.         }
  81. }
  82. stop();out=0xc3;while(!key1);
  83. }
  84. void start(void)
  85. {
  86. scl=1;
  87. sda=1;
  88. delay4us();
  89. sda=0;
  90. delay4us();
  91. scl=0;
  92. }
  93. void stop(void)
  94. {
  95. scl=0;
  96. sda=0;
  97. delay4us();
  98. scl=1;
  99. delay4us();
  100. sda=1;
  101. delay5us();
  102. sda=0;
  103. }
  104. bit rack(void)
  105. {
  106. bit flag;
  107. scl=1;
  108. delay4us();
  109. flag= sda;
  110. scl=0;
  111. }
  112. return(flag);
  113. }
  114. void sack(void)
  115. {
  116. sda=0;
  117. delay4us();
  118. scl=1;
  119. delay4us();
  120. scl=0;
  121. delay4us();
  122. sda=1;
  123. delay4us();
  124. }
  125. void ackn(void)
  126. {
  127. sda=1;
  128. delay4us();
  129. scl=1;
  130. delay4us();
  131. scl=0;
  132. delay4us();
  133. sda=0;
  134. }
  135. uchar rec_byte(void)
  136. {
  137. uchar i,temp;
  138. for(i=0;i<8;i++)
  139. {
  140. temp<<=1;
  141. scl=1;
  142. delay4us();
  143. temp|=sda;
  144. scl=0;
  145. delay4us();
  146. }
  147. ……………………

  148. …………限于本文篇幅 余下代碼請從51黑下載附件…………
復制代碼
51hei.png
所有資料51hei提供下載:
protues仿真工程文件.rar (50.38 KB, 下載次數: 151)

評分

參與人數 1黑幣 +50 收起 理由
admin + 50 共享資料的黑幣獎勵!

查看全部評分

回復

使用道具 舉報

ID:769562 發表于 2020-6-15 16:25 | 顯示全部樓層
大佬大佬
回復

使用道具 舉報

ID:980960 發表于 2021-11-14 21:39 | 顯示全部樓層
想請問一下通過I2C串行總線擴展的.c文件為什么在建立工程后再編譯就會顯示失敗啊
回復

使用道具 舉報

ID:551172 發表于 2021-12-15 21:55 | 顯示全部樓層
我這里一直有一個錯誤
I2C.c(11): error C129: missing ';' before '_at_0x55'
I2C.c - 1 Error(s), 0 Warning(s).  一直沒找到
回復

使用道具 舉報

ID:294858 發表于 2023-6-7 09:23 | 顯示全部樓層
有錯誤,不能運行
回復

使用道具 舉報

ID:883242 發表于 2023-6-8 00:37 | 顯示全部樓層
xiaozhou1210 發表于 2021-12-15 21:55
我這里一直有一個錯誤
I2C.c(11): error C129: missing ';' before '_at_0x55'
I2C.c - 1 Error(s), 0 Wa ...

_at_0x55中間應該有一個空格。
回復

使用道具 舉報

您需要登錄后才可以回帖 登錄 | 立即注冊

本版積分規則

小黑屋|51黑電子論壇 |51黑電子論壇6群 QQ 管理員QQ:125739409;技術交流QQ群281945664

Powered by 單片機教程網

快速回復 返回頂部 返回列表
主站蜘蛛池模板: 亚洲精品久久久久久国产精华液 | 日本aa毛片a级毛片免费观看 | 国产精品久久久久久久久大全 | 久久久久国产一区二区三区四区 | 亚洲精品v | 福利视频网址 | 国产一区二区三区四区在线观看 | 亚洲精品一区二区三区免 | 91精品久久久久久久 | 久久在线精品 | 欧美视频一区二区三区 | 99精品久久久久久 | 欧美日韩高清一区二区三区 | 理论片87福利理论电影 | 一区二区三区视频在线 | 亚洲精品国产成人 | 欧美日韩免费在线 | 亚洲精品乱码久久久久久蜜桃91 | 日韩成人av在线 | 精品国产乱码一区二区三区 | 亚洲不卡一| 在线视频中文字幕 | 老牛影视av一区二区在线观看 | 日日噜 | 一级亚洲| 亚洲区视频 | 日韩视频一区二区三区 | 亚洲欧美一区二区三区国产精品 | 亚洲国产精品成人 | 91大神新作在线观看 | 亚洲欧美日韩精品久久亚洲区 | 亚洲精品在线观看视频 | 国产一区二区在线播放视频 | 亚洲视频在线观看 | 国产精品久久久久久久久久 | 欧美日韩综合精品 | 欧美日韩视频在线 | 亚洲成人av一区二区 | 中文字幕韩在线第一页 | 日本一区二区三区在线观看 | 91久久精品国产91久久性色tv |