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

 找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

搜索
查看: 2120|回復: 6
收起左側

按鍵按下一次1602顯示字符內容,斷電后送電顯示器1602繼續顯示停電前的字符內容

[復制鏈接]
ID:488631 發表于 2019-12-19 19:48 | 顯示全部樓層 |閱讀模式
按對應按鈕時1602顯示對應字符內容,斷電在送電又恢復初始狀態,不能實現利用24c02讀寫達到斷電保護的目的。請各位大佬指點一下小弟錯在何處。

單片機源程序如下:
  1. #include<reg52.h>
  2. #include<intrins.h>
  3. #define uchar unsigned char
  4. #define uint  unsigned int
  5. uchar code table[]="I LOVE DIANZI";
  6. uchar code table1[]="   ABCD     ";
  7. uchar num,sec;
  8. sbit key1 = P3^0;
  9. sbit key2 = P3^1;
  10. sbit key3 = P3^2;
  11. sbit key4 = P3^3;
  12. /* sbit key5 = P3^4;
  13. sbit key6 = P3^5;
  14. sbit key7 = P3^6;
  15. sbit key8 = P3^7;*/
  16. sbit sda = P2^0;
  17. sbit scl = P2^1;
  18. bit write = 0;
  19. bit k1 = 0;
  20. bit k2 = 0;
  21. sbit lcdrs = P2^6;
  22. sbit lcdwr = P2^5;
  23. sbit lcden = P2^7;
  24. void delay1s(uint z)
  25. {
  26.   uint x,y;
  27.   for(x=z;x>0;x--)
  28.    for(y=110;y>0;y--);
  29. }
  30. void delay()
  31. {;;}
  32. void at_start()
  33. {
  34. sda = 1;
  35. delay();
  36. scl = 1;
  37. delay();
  38. sda = 0;
  39. delay();
  40. }
  41. void at_stop()
  42. {
  43. sda = 0;
  44. delay();
  45. scl = 1;
  46. delay();
  47. sda = 1;
  48. delay();
  49. }
  50. void at_respons()
  51. {
  52. uchar i;
  53. scl = 1;
  54. delay();
  55. while((sda==1)&&(i<255))i++;
  56. scl = 0;
  57. delay();
  58. }
  59. void at_init()
  60. {
  61. sda = 1;
  62. delay();
  63. scl = 1;
  64. delay();
  65. }
  66. void at_write_byte(uchar date)
  67. {
  68. uchar i,temp;
  69. temp =date;
  70. for(i=0;i<8;i++)
  71. {
  72.   temp=temp<<1;
  73.   scl = 1;
  74.   delay();
  75.   sda = CY;
  76.   delay();
  77.   scl = 1;
  78.   delay();
  79. }
  80. scl = 0;
  81. delay();
  82. sda = 1;
  83. delay();
  84. }
  85. uchar at_read_byte()
  86. {
  87. uchar i,k;
  88. scl = 0;
  89. delay();
  90. sda = 1;
  91. delay();
  92. for(i=0;i<8;i++)
  93. {
  94.   scl = 1;
  95.   delay();
  96.   k = (k<<1)|sda;
  97.   scl = 0;
  98.   delay();
  99.   }
  100.   return k;
  101. }
  102. void at_write_add(uchar address,uchar date)
  103. {
  104. at_start();
  105. at_write_byte(0xa0);
  106. at_respons();
  107. at_write_byte(address);
  108. at_respons();
  109. at_write_byte(date);
  110. at_respons();
  111. at_stop();
  112. }
  113. uchar at_read_add(uchar address)
  114. {
  115. uchar date;
  116. at_start();
  117. at_write_byte(0xa0);
  118. at_respons();
  119. at_write_byte(address);
  120. at_respons();
  121. at_start();
  122. at_write_byte(0xa1);
  123. at_respons();
  124. date=at_read_byte();
  125. at_stop();
  126. return date;
  127. }  
  128. bit lcd_busy()
  129. {
  130.   bit result;
  131.   lcdrs = 0;
  132.   lcdwr = 1;
  133.   lcden = 1;
  134.   delay();
  135.   delay();
  136.   delay();
  137.   result=(bit)(P0&0x80);
  138.   lcden = 0;
  139.   return(result);
  140.   }
  141. void lcd_send_com(uchar com)
  142. {
  143.   while(lcd_busy());
  144.   lcdrs = 0;
  145.   lcdwr = 0;
  146.   P0 = com;
  147.   delay1s(5);
  148.   lcden = 1;
  149.   delay1s(5);
  150.   lcden = 0;
  151.   }
  152. void lcd_send_data(uchar date)
  153. {
  154.   while(lcd_busy());
  155.   lcdrs = 1;
  156.   lcdwr = 0;
  157.   P0 = date;
  158.   delay1s(5);
  159.   lcden=1;
  160.   delay1s(5);
  161.   lcden=0;

  162.   }
  163. void lcd_init()
  164. {
  165. lcden = 0;
  166. lcdrs = 0;
  167. lcdwr = 0;
  168. lcd_send_com(0x38);
  169. lcd_send_com(0x0c);
  170. lcd_send_com(0x06);
  171. lcd_send_com(0x01);
  172. }
  173. uchar keyscan()
  174. {
  175.    
  176.   if(key1==0)
  177.   {
  178.    delay1s(5);
  179.    if(key1==0)
  180.    {
  181.    k1 = 1;
  182.    lcd_send_com(0x80);
  183.     for(num = 0;num<13;num++)
  184.      {
  185.       lcd_send_data(table[num]);
  186.      delay1s(5);
  187.   }   
  188. }  
  189. while(!key1);

  190.    
  191.   }

  192.    else if(key2==0)
  193.     {
  194.      delay1s(5);
  195.      if(key2==0)
  196.     {
  197.     k1 = 2;
  198.      lcd_send_com(0x80);
  199.        for(num = 0;num<13;num++)
  200.        {
  201.           lcd_send_data(table[num]);
  202.         delay1s(5);
  203.      }   
  204.   }
  205. while(!key2);
  206. }
  207.     return k1;
  208. }
  209. void displaychar()
  210. { uchar p1;

  211. p1=at_read_add(8);
  212. delay1s(20);
  213. if(p1==1)
  214. {
  215.   lcd_send_com(0x80);
  216.     for(num = 0;num<13;num++)
  217.      {
  218.       lcd_send_data(table[num]);
  219.      delay1s(5);
  220.   }
  221. }
  222. else if(p1==2)
  223. {
  224.   lcd_send_com(0x80);
  225.     for(num = 0;num<13;num++)
  226.      {
  227.       lcd_send_data(table1[num]);
  228.      delay1s(5);
  229.   }
  230. }

  231. }
  232. void main()
  233. {
  234.    at_init();
  235.    lcd_init();
  236.    displaychar();

  237. while(1)
  238. {
  239. keyscan();
  240.     at_write_add(8,k2);

  241. }
  242. }
復制代碼


回復

使用道具 舉報

ID:584814 發表于 2019-12-20 08:24 | 顯示全部樓層
全程無備注看得太眼花,提供點思路:
沒存進的可能,沒讀出的可能,被初始化的可能。
回復

使用道具 舉報

ID:661787 發表于 2019-12-21 10:03 | 顯示全部樓層
建議寫程序時給程序添加解釋說明
回復

使用道具 舉報

ID:664105 發表于 2019-12-21 14:54 | 顯示全部樓層
有條理的寫程序,每一段要明白自己要干什么
回復

使用道具 舉報

ID:488631 發表于 2019-12-25 14:48 | 顯示全部樓層
好的,謝謝各位大佬指教,我從新添加注釋又發了,謝謝!
回復

使用道具 舉報

ID:437615 發表于 2019-12-25 17:09 | 顯示全部樓層
你的板子有沒有問題,有沒有延時斷電功能
回復

使用道具 舉報

ID:475247 發表于 2019-12-25 20:54 | 顯示全部樓層
思路是這樣的,你按鍵按下后讓24c02記下按鍵值,開機后用24c02讀出的值來執行顯示任務,這樣能起到開機恢復斷電前畫面。
回復

使用道具 舉報

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

本版積分規則

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

Powered by 單片機教程網

快速回復 返回頂部 返回列表
主站蜘蛛池模板: 免费观看国产视频在线 | 国产精品五月天 | 日本高清视频在线播放 | 美女131mm久久爽爽免费 | 99热这里| 国产精品美女一区二区三区 | 99久久成人 | 夫妻午夜影院 | 在线观看中文字幕dvd播放 | 国产精品99久久久久久久久久久久 | 成年人免费在线视频 | 麻豆国产一区二区三区四区 | 国产精品99久久久久久www | 一区二区三区在线播放 | 国产亚韩| 天天操夜夜操免费视频 | 国产免费一级片 | 精品国产一区二区三区久久影院 | 精品久久久久久久久亚洲 | 91视频88av| 久久久久久久综合色一本 | 国产性网 | 久久av一区二区三区 | 亚洲三级在线观看 | 日本小视频网站 | 成人av电影免费在线观看 | 国产欧美精品一区二区三区 | 国产亚洲精品精品国产亚洲综合 | 精品国产91亚洲一区二区三区www | 免费视频99 | 99免费精品视频 | 男女下面一进一出网站 | 国产精品jizz在线观看老狼 | 国产在线麻豆精品入口 | 日本三级精品 | 欧美高清性xxxxhdvideosex | 精品美女久久久久久免费 | 免费精品视频 | 高清18麻豆| 精品天堂| 欧美国产日韩在线观看 |