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

 找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

搜索
查看: 3504|回復: 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 單片機教程網

快速回復 返回頂部 返回列表
主站蜘蛛池模板: 国产精品亚洲精品久久 | 日韩午夜电影在线观看 | 日韩成人在线观看 | 欧美二区在线 | av手机在线播放 | 亚洲高清免费视频 | 色婷婷综合久久久中字幕精品久久 | 久久精品色欧美aⅴ一区二区 | 亚洲毛片在线观看 | 精品一区二区久久久久久久网站 | 亚洲图片视频一区 | 久热久热| 中文字幕日韩一区 | 日本精品一区 | 天天想天天干 | 日本午夜免费福利视频 | 综合久久一区 | 狠狠入ady亚洲精品经典电影 | 成人精品在线观看 | 亚洲一区二区精品视频 | 日韩网站在线观看 | 日本淫视频 | 国产高清一区二区 | 国产三级一区二区三区 | 国产激情精品一区二区三区 | 女朋友的闺蜜3韩国三级 | 欧美久久大片 | 国产精品中文字幕在线 | 一区二区在线不卡 | 成人a免费 | 欧美在线视频二区 | 欧美午夜一区二区三区免费大片 | www.日本精品 | 欧美精品综合在线 | 黄色免费网址大全 | 天天av综合| 精品美女久久久 | 色视频网站 | 国产在线视频三区 | 日韩欧美字幕 | 欧美日韩视频 |