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

 找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

搜索
查看: 3487|回復: 2
打印 上一主題 下一主題
收起左側

單片機讀取eeprom里面的內容 大神幫忙看一下啊,為什么沒辦法顯示0

[復制鏈接]
跳轉到指定樓層
樓主
ID:227434 發表于 2017-9-29 22:45 | 只看該作者 回帖獎勵 |倒序瀏覽 |閱讀模式
程序目的 0-9,傳入eeprom后,讀取eeprom里面的內容,顯示到LCD1602里面,但是沒辦法顯示0求解釋:
         
  1. #include <reg52.h>
  2. #include "intrins.h"
  3. /*-----------------------宏定義----------------*/
  4. #define uint  unsigned int
  5. #define uchar unsigned char
  6. #define RS_LOW  RS=0
  7. #define RS_HIGH RS=1
  8. #define RW_LOW RW=0
  9. #define RW_HIGH RW=1
  10. #define EN_LOW EN=0
  11. #define EN_HIGH EN=1
  12. #define Read_ATadd 0xa1
  13. #define Write_ATadd 0xa0

  14. /***************設置特殊功能寄存器位變量**********/
  15. sbit SDA = P2^0;
  16. sbit SCL = P2^1;
  17. sbit RS = P1^0;
  18. sbit RW = P1^1;
  19. sbit EN = P2^5;
  20. sbit DU = P2^6;
  21. sbit WE = P2^7;
  22. /***************設置特殊功能寄存器位變量**********/
  23. Check_Busy();
  24. /*-----------------------宏定義----------------*/
  25. //unsigned char display[] = {'0','1','2','3','4','5','6','7','8','9','a','b','c','d','e','f'};//讀入的是ASCII碼,{"0123456789abcdef"}差別是什么?
  26.   unsigned char display[] =        {0x30,0x31,0x32,0x33,0x34,0x35,0x36,0x37,0x38,0x39}        ;
  27. /*-----------------------定時函數----------------*/
  28. void delay1ms()
  29. {
  30.          uchar i,j;
  31.         for(i=0;i<10;i++)
  32.                 for(j=0;j<33;j++);
  33. }

  34. void dalaynms(uchar n)
  35. {
  36.         while(n--)
  37.           {
  38.                   delay1ms();
  39.           }
  40. }
  41. /*-----------------------定時函數----------------*/

  42. /*---------------寫指令-----------------------*/
  43. void WrAdress(uchar a)
  44. {
  45.         while(Check_Busy());
  46.         RS_LOW;
  47.         RW_LOW;
  48.         EN_HIGH;
  49.         dalaynms(1);
  50.     P0=a;
  51.         EN_LOW;

  52. }
  53. /*---------------寫指令-----------------------*/

  54. /*---------------寫數據-----------------------*/
  55. void WrData(uchar a)
  56. {
  57.         while(Check_Busy());
  58.         RS_HIGH;
  59.         RW_LOW;
  60.         EN_HIGH;
  61.         dalaynms(1);
  62.     P0=a;
  63.         EN_LOW;

  64. }
  65. /*---------------寫數據-----------------------*/

  66. /*---------------讀忙指令-----------------------*/
  67. Check_Busy()
  68. {        
  69.         uchar a;
  70.         P0 = 0xff;
  71.         
  72.         RS_LOW;
  73.         RW_HIGH;
  74.         EN_LOW;
  75.         dalaynms(1);
  76.         EN_HIGH;
  77.         a = P0;        
  78.         return (bit)(a&0x80);               
  79. }
  80. /*---------------讀忙指令-----------------------*/

  81. /*---------------寫字符數據-----------------------*/
  82. void Lcd1602_Wrchar(uchar x,uchar y,uchar z)//定義為行標志,y定義為是第幾位,z定義為這個是字符串還是字符
  83. {
  84.         
  85.         if(x==0)
  86.         {
  87.                 WrAdress(0x80 +y);
  88.         }
  89.                 else                        
  90.                          WrAdress(0xC0 +y);                                                        
  91.                         WrData(z);
  92.                         WrAdress(0x0c);                        
  93.         
  94. }
  95. /*---------------寫字符數據-----------------------*/

  96. /*-----------------------start----------------*/
  97. void start()
  98. {
  99.           SCL = 1;
  100.          SDA = 1;
  101.          _nop_();
  102.          _nop_();
  103.          _nop_();
  104.          _nop_();
  105.          _nop_();
  106.          SDA = 0;
  107.          _nop_();
  108.          _nop_();
  109.          _nop_();
  110.          _nop_();
  111.          _nop_();
  112.          SCL = 0;//允許SDA進行變化
  113. }
  114.   /*-----------------------start----------------*/

  115.    /*-----------------------stop----------------*/
  116. void stop()
  117. {
  118.          SDA = 0;
  119.         SCL = 1;
  120.         _nop_();
  121.         _nop_();
  122.         _nop_();
  123.         _nop_();
  124.         _nop_();
  125.         SDA = 1;
  126.         _nop_();
  127.         _nop_();
  128.         _nop_();
  129.         _nop_();
  130.         _nop_();
  131. }
  132.    /*-----------------------stop----------------*/
  133. /*-----------------------應答----------------*/
  134. AT24C02_ack()
  135. {
  136.         bit ack;
  137.         SDA = 1;
  138.         _nop_();
  139.         _nop_();
  140.         SCL =1;
  141.         _nop_();
  142.         _nop_();
  143.         _nop_();
  144.         _nop_();
  145.         _nop_();
  146.         ack = SDA;
  147.         SCL =0;
  148. //        while(ack);
  149.         return ack;        
  150. }
  151. /*-----------------------應答----------------*/

  152.    /*-----------------------讀一個字節----------------*/
  153. At24c02_Read_bit()
  154. {                        
  155.         uchar i,x;
  156.         for(i =0;i<8;i++)
  157.    {
  158.                    SCL =1;
  159.                 x = (x<<1)|(uchar)SDA;
  160.                 SCL =0;//允許SDA進行變化        
  161.    }
  162.    return(x);
  163. }
  164. /*-----------------------讀一個字節----------------*/

  165. /*-----------------------寫一個字節----------------*/
  166. void At24c02_write_bit(uchar y)
  167. {                        
  168.         uchar i;
  169.         for(i=0;i<8;i++)
  170.         {
  171.                 SDA = (bit)(y&0x80);
  172.                 _nop_();
  173.                 y<<=1;
  174.                 SCL =1;
  175.                 _nop_();
  176.                 _nop_();
  177.                 SCL = 0;
  178.         }
  179. }
  180. /*-----------------------寫一個字節----------------*/


  181. void init()
  182. {
  183.         SDA = 1;
  184.         SCL = 1;

  185.         WE = 1;
  186.         P0 = 0xff;
  187.         WE = 0;

  188.         WrAdress(0x01);//清屏同時,數據指針也會清零即變成0x80;
  189.         WrAdress(0x38);        //設置 16×2 顯示,5×7 點陣,8 位數據接口
  190.         WrAdress(0x0f);        // 顯示(1 有效)、C 光標顯示(1 有效)、B 光標閃爍(1 有效)
  191.         WrAdress(0x06);//讀或寫一個字符后地址指針加 1 &光標加 1                        
  192. }
  193. /*-----------------------在特定位置讀字節----------------*/
  194. At24c02_Read(uchar add)
  195. {
  196.          uchar date;
  197.          start();
  198.          At24c02_write_bit(Write_ATadd);
  199.          AT24C02_ack();        
  200.          At24c02_write_bit(add);
  201.          AT24C02_ack();
  202.          start();
  203.          At24c02_write_bit(Read_ATadd);
  204.          AT24C02_ack();         
  205.            date = At24c02_Read_bit();
  206.          stop();
  207.          return(date);                  
  208. }
  209. /*-----------------------在特定位置讀字節----------------*/

  210. /*-----------------------在特定位置寫字節----------------*/
  211. void At24c02_write(uchar x,uchar addr )
  212. {
  213.         start();
  214.         At24c02_write_bit(Write_ATadd);
  215.         AT24C02_ack();
  216.         At24c02_write_bit(addr);
  217.         AT24C02_ack();
  218.         At24c02_write_bit(x);
  219.         AT24C02_ack();
  220.         stop();
  221. }

  222. void main()
  223. {        
  224.         uchar i,j;        
  225.         init();        
  226.                    while(1)
  227.                 {
  228.                         for(i=0;i<10;i++)
  229.                         {
  230.                                 At24c02_write(display[i],i);
  231.                         }
  232.                         
  233.                         for(i=0;i<10;i++)
  234.                         {        
  235.                                 j = At24c02_Read(i);               
  236.                                 Lcd1602_Wrchar(0,8,j);
  237.                                 dalaynms(200);
  238.                                 dalaynms(200);
  239.                                 dalaynms(200);
  240.                         
  241.                 }
  242.                 }
  243. }
  244.       
復制代碼
分享到:  QQ好友和群QQ好友和群 QQ空間QQ空間 騰訊微博騰訊微博 騰訊朋友騰訊朋友
收藏收藏 分享淘帖 頂 踩
回復

使用道具 舉報

沙發
ID:232869 發表于 2017-9-30 09:09 | 只看該作者
你讀取eeprom的數據對了沒有 你先單步調試 看看讀寫的 數據是不是正確的  然后再看顯示的部分  
慢慢來很好解決的
單片機一定要會調試程序查找原因
回復

使用道具 舉報

板凳
ID:227434 發表于 2017-9-30 18:30 來自手機 | 只看該作者
caoxiaoyong 發表于 2017-9-30 09:09
你讀取eeprom的數據對了沒有 你先單步調試 看看讀寫的 數據是不是正確的  然后再看顯示的部分  
慢慢來很 ...

單步調試,在哪兒能看到eeprom的內容,這個是外部的eeprom,所以不知道在哪能看
回復

使用道具 舉報

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

本版積分規則

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

Powered by 單片機教程網

快速回復 返回頂部 返回列表
主站蜘蛛池模板: 国产在线观看一区二区 | 欧美成人a| 男女网站免费观看 | 国产一区二区免费 | 麻豆视频国产在线观看 | 涩涩视频在线播放 | 免费亚洲成人 | 欧美精品综合在线 | 成年人免费在线视频 | 成人网视频 | 黄色a级一级片 | 韩三级在线观看 | 中文字幕视频在线看 | 国产乱码精品1区2区3区 | 久久中文字幕一区 | 国产高清一二三区 | 蜜桃av鲁一鲁一鲁一鲁 | 久久毛片 | 日韩欧美国产一区二区三区 | 天天操狠狠操 | 欧美久久久久 | 91久久久久久久久 | 热re99久久精品国99热观看 | 国产成人精品久久 | 在线免费观看黄色av | 中文字幕在线视频一区二区三区 | 国产精品久久久久久久免费大片 | 久久国产精品亚洲 | 精品欧美一区二区在线观看 | 91在线精品视频 | 久综合 | 特级毛片www | 中文字幕av第一页 | 操人网站 | 久久久影院 | 一区二区三区欧美在线 | 狠狠躁躁夜夜躁波多野结依 | 国产高清视频一区 | 久久久精品一区二区三区四季av | 国产视频精品视频 | 狠狠亚洲 |