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

 找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

搜索
查看: 3644|回復: 1
收起左側

C51單片機24c02儲存電壓值LCD顯示 Proteus仿真程序

[復制鏈接]
ID:389413 發表于 2020-4-17 16:22 | 顯示全部樓層 |閱讀模式
這是C51單片機設置外部儲存24c02的程序,
由LCD1602顯示被儲存的電壓
51hei.png
單片機源程序如下:

  1. #include<reg51.h>


  2. #include <intrins.h>
  3. #include<1602.h>
  4. #define uchar unsigned char
  5. #define Address_24C02 0xA0
  6. #define uint unsigned int
  7. #define ulong unsigned long
  8. #define _NOP_() _nop_();_nop_();_nop_();_nop_();_nop_()/*短暫延時 4.7us*/
  9. sbit IIc_Sad = P2^6;
  10. sbit IIc_Scl = P2^7;



  11. static void delay1(uint a)
  12. {
  13. uint x;
  14. for(;a>0;a--)
  15. for(x=114*10;x>0;x--);
  16. }
  17. /*以下五個函數是IIc 時序函數*/

  18. /* 啟動I2C 總線*/
  19. void IIc_start()
  20. {
  21. IIc_Sad = 1;
  22. IIc_Scl = 1;
  23. _NOP_();
  24. IIc_Sad = 0;
  25. _NOP_();
  26. IIc_Scl = 0;
  27. }
  28. /*停止I2C 總線*/
  29. void IIc_stop()
  30. {
  31. IIc_Sad = 0;
  32. _NOP_();
  33. IIc_Scl = 1;
  34. _NOP_();
  35. IIc_Sad = 1; //總線置于空閑狀態
  36. }
  37. /*IIC 初始化子程序*/
  38. void IIc_init()
  39. {
  40. IIc_stop(); //結束之前IIC 的操作
  41. IIc_Scl = 1; //總線置于空閑狀態
  42. IIc_Sad = 1;
  43. }
  44. /*IIC 寫一個字節 返回應答信號 返回1 設備正常*/
  45. bit IIc_write_byte(uchar date)
  46. {
  47. uchar i;
  48. bit ack;
  49. for(i=8;i>0;i--)
  50. {
  51. date <<= 1;
  52. IIc_Scl = 0;
  53. IIc_Sad = CY;
  54. _NOP_();
  55. IIc_Scl = 1;
  56. _NOP_();
  57. }
  58. IIc_Scl = 0;
  59. _NOP_();
  60. IIc_Sad = 1;/*8 位發送完后釋放數據線,準備接收應答位*/
  61. _NOP_();
  62. IIc_Scl = 1;
  63. if(IIc_Sad==0)//從機設備應答 ack=1
  64. ack = 1;
  65. else
  66. ack = 0;
  67. IIc_Scl = 0;
  68. _NOP_();
  69. return(ack);
  70. }
  71. /*IIC 讀一個字節 主機應答信號Master_ack 為1 是應答 0 時非應答*/
  72. uchar IIc_read_byte(bit Master_ack)
  73. {
  74. uchar i,vaule;
  75. IIc_Sad=1;
  76. for(i = 8;i > 0;i--)
  77. {
  78. vaule <<= 1;
  79. IIc_Scl = 1;
  80. _NOP_();
  81. if(IIc_Sad)
  82. vaule++;
  83. IIc_Scl = 0;
  84. _NOP_();
  85. }
  86. IIc_Sad = !Master_ack;//主機應答信號
  87. _NOP_();
  88. IIc_Scl = 1;
  89. _NOP_();
  90. IIc_Scl = 0;
  91. _NOP_();
  92. return vaule;
  93. }
  94. /*以下是24C02 的讀寫函數*/
  95. /*在24c02 的add 地址中寫入一個數據date;返回1 設備正常*/
  96. bit Write_byte(uchar add,uchar date)
  97. {
  98. bit val;
  99. uchar i=0;
  100. IIc_init();
  101. IIc_start();
  102. val = IIc_write_byte(Address_24C02);//寫器件地址
  103. while(val==0)
  104. {
  105. if(i++==10) //等待超時(10ms) 可能器件不存在
  106. return(0);
  107. delay1(1); //等待一會
  108. IIc_start(); //重新發送
  109. val = IIc_write_byte(Address_24C02);//寫器件地址
  110. }
  111. IIc_write_byte(add);//寫存儲的地址
  112. IIc_write_byte(date);//寫數據
  113. IIc_stop();
  114. return(1);
  115. }

  116. bit Write_more_byte(uchar add,uchar number,uchar *p)
  117. {
  118. bit val;
  119. uchar i=0;
  120. IIc_init();
  121. IIc_start();
  122. val = IIc_write_byte(Address_24C02); //寫器件地址
  123. while(val==0)
  124. {
  125. if(i++==10) //等待超時(10ms)
  126. return(0);
  127. delay1(1); //等待一會
  128. IIc_start(); //重新發送
  129. val = IIc_write_byte(Address_24C02);//寫器件地址
  130. }
  131. IIc_write_byte(add);//寫存儲的地址
  132. for(i=0;number>0;number--)
  133. {
  134. IIc_write_byte(*p++);//寫存儲的數據
  135. }
  136. IIc_stop();
  137. return(1);
  138. }

  139. uchar read_byte(uchar add)
  140. {
  141. uchar val=0;
  142. bit R_flag=0;
  143. IIc_init();
  144. IIc_start();
  145. R_flag=IIc_write_byte(Address_24C02);//寫器件地址
  146. while(R_flag==0) //器件沒有應答 可能是內部編程/擦除周期
  147. {
  148. delay1(1); //等待一會
  149. IIc_start(); //重新發送
  150. R_flag=IIc_write_byte(Address_24C02);//寫器件地址
  151. }
  152. IIc_write_byte(add);//寫存儲的地址
  153. IIc_start();
  154. IIc_write_byte(Address_24C02+1);//寫器件地址(讀)
  155. val = IIc_read_byte(0);
  156. IIc_stop();
  157. return (val);
  158. }
  159. /*在24c02 的add 地址中連續讀出一串數據*p 可以一次性讀出存儲器中所有的數據*/
  160. void read_more_byte(uchar add,uchar number,uchar *p)
  161. {
  162. bit val=0;
  163. IIc_init();
  164. IIc_start();
  165. val = IIc_write_byte(Address_24C02); //寫器件地址
  166. while(val==0) //器件沒有應答 可能是內部編程/擦除周期
  167. {
  168. delay1(1); //等待一會
  169. IIc_start(); //重新發送
  170. val=IIc_write_byte(Address_24C02);//寫器件地址
  171. }
  172. IIc_write_byte(add);//寫存儲的地址
  173. IIc_start();
  174. IIc_write_byte(Address_24C02+1);//寫器件地址(讀)
  175. for(;number>1;number--)
  176. {
  177. *p++=IIc_read_byte(1);
  178. }
  179. *p = IIc_read_byte(0); //讀最后一個數據主機不應答
  180. IIc_stop();
  181. }

  182. void main()
  183. {
  184. int i;
  185. //uchar xdata a[100];
  186. uchar temp=0;
  187. lcd_init();
  188. while(1)
  189. {

  190. //for(i=0;i<100;i++)
  191. //{
  192. //a[i]=i;
  193. //}
  194. Write_byte(0x05,8);
  195. //Write_more_byte(0,8,a);

  196. temp=read_byte(5);

  197. lcd_pos(0x0a);// 設置顯示位置
  198. lcd_wdat(0x30+temp);

  199. Write_byte(0xfa,9);
  200. //Write_more_byte(0,8,a);

  201. temp=read_byte(0xfa);

  202. lcd_pos(0x48);// 設置顯示位置
  203. lcd_wdat(0x30+temp);

  204. }
  205. }
復制代碼

所有資料51hei提供下載:
24c02.rar (2.61 MB, 下載次數: 40)


回復

使用道具 舉報

ID:769395 發表于 2020-6-9 14:13 | 顯示全部樓層
請問你有沒有仿真成功
回復

使用道具 舉報

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

本版積分規則

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

Powered by 單片機教程網

快速回復 返回頂部 返回列表
主站蜘蛛池模板: 第四色影音先锋 | 日韩国产中文字幕 | 黄色片大全在线观看 | 国产亚洲人成a在线v网站 | 我要看免费一级毛片 | japanhd成人 | 中文字幕一区在线观看视频 | 免费xxxx大片国产在线 | 国产精品国产三级国产aⅴ无密码 | 999国产视频 | 欧美日韩福利视频 | 99九九视频 | 中文字幕精品一区久久久久 | 999久久 | tube国产| 一区二区三区精品在线 | 久久久久久美女 | 成年人网站在线观看视频 | 中文字幕日韩一区 | 久热电影 | 欧美中文字幕在线观看 | 天堂网avav | 欧美成人激情视频 | 日韩二三区 | 成人黄色网址大全 | 日韩欧美一区二区三区 | 午夜欧美a级理论片915影院 | 亚洲毛片网站 | 日韩乱码一二三 | 国产高清91| 欧美三级电影在线播放 | 亚洲欧美成人影院 | 黄色网址av | 久热免费 | 羞羞网站免费 | 91精品一区二区三区久久久久久 | 在线看av的网址 | 久久久久久国产 | 在线日韩精品视频 | 日韩免费 | 欧美视频一区 |