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

 找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

搜索
查看: 2179|回復(fù): 1
打印 上一主題 下一主題
收起左側(cè)

51單片機1602液晶顯示-NE555頻率計/555的2號引腳連接不對

[復(fù)制鏈接]
跳轉(zhuǎn)到指定樓層
樓主
ID:339285 發(fā)表于 2018-5-27 19:27 | 只看該作者 回帖獎勵 |倒序瀏覽 |閱讀模式
  1. #include<reg52.h>
  2. #define uint unsigned int
  3. #define uchar unsigned char
  4. sbit LCD_RS= P2^6;//定義LCD引腳
  5. sbit LCD_RW= P2^5;
  6. sbit LCD_E= P2^7;
  7. uchar codeDIS[]={"NE555-------TEST"};//NE555 測試;
  8. uchar codedsptab[]={'0','1','2','3','4','5','6','7','8','9'};//字符代表碼;
  9. uchari,c[4],a[10]={0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90};
  10. uint s;
  11. /*====================延時子程序====================*/
  12. void delay(uint z)
  13. {
  14.    uchar m;
  15.        for(;z>0;z--)
  16.               for(m=124;m>0;m--);
  17. }
  18. void delay400ms(void)////400ms延時
  19. { uchar z = 5;
  20.   uintm;
  21. while(z--)
  22.   {m=7269;
  23.    while(m--);
  24.   }
  25. }
  26. /*====================LCD1602子程序====================*/
  27. /*-- 讀狀態(tài) --*/
  28. //讀狀態(tài)子程序;有返回值;返回值類型為CHAR型;
  29. //讀回的狀態(tài)通過RETURN返回;
  30. uchar read_estate(void)                              //定義有返回值的函數(shù);
  31. { P0=0Xff;                                        //把LCD端口全置1方便讀取信號;
  32. LCD_RS=0;                                                        //RS置0;
  33. LCD_RW=1;                                                       //RW置1;
  34. LCD_E=0;                                                //E端置0;
  35. delay(10);                                             //短延時;
  36. LCD_E=1;                                                   //E端置1;以鎖存數(shù)據(jù);
  37. while(P0&0x80);                //檢測忙,則一直循環(huán);
  38. return(P0);                                     //返回讀取的信號;
  39. }
  40. /*-- 寫數(shù)據(jù) --*/
  41. //寫數(shù)據(jù)子程序;無返回值;輸入變量I;
  42. //I為要寫入LCD中的數(shù)據(jù);
  43. //數(shù)據(jù)類型CHAR形;
  44. void write_data(uchar i)                      //定義輸入變量值I;
  45. {                                                                    
  46. read_estate();                                         //檢測忙信號;
  47. P0=i;                                             //把I中數(shù)據(jù)送到LCD數(shù)據(jù)端;
  48. LCD_RS=1;                                                        //RS置1;
  49. LCD_RW=0;                                                       //RW置0;
  50. LCD_E=0;                                                   //E置0;
  51. delay(10);                                             //短延時;
  52. LCD_E=1;                                                   //E置1;以鎖存數(shù)據(jù);
  53. }
  54. /*-- 寫指令 --*/
  55. //寫指令子程序;無返回值;輸入二個變量I和J.
  56. //I為要寫入LCD的指令;J為判斷要不要檢測忙.
  57. //如果J為0則不判斷檢測忙;
  58. //如果J為1則判斷檢測忙;
  59. void write_dictate(uchar i,j)                //定義二個變量;
  60. {
  61. if(j)read_estate();             //根據(jù)需要檢測忙;
  62. P0=i;                           //把要寫入的數(shù)據(jù)送到LCD數(shù)據(jù)端;
  63. LCD_RS=0;                                         //RS置0;
  64. LCD_RW=0;                                                       //RW置0;
  65. LCD_E =1;                                                  //E端置0;
  66. delay(10);                                             //延時;
  67. LCD_E =0;                                                  //E端置1;以鎖存數(shù)據(jù);
  68. }
  69. /*-- LCD初始化 --*/
  70. //LCD初始化程序;主要作用初始化LCD,對LCD進行復(fù)位以及設(shè)置;
  71. void initialization(void)                      //定義函數(shù);
  72. {
  73.   delay(50);                                             //延時5MS;
  74. write_dictate(0x38,0);                            //寫指令38H;不檢測忙;
  75. delay(50);                                             //延時5MS;
  76. write_dictate(0x38,0);                            //寫指令38H;不檢測忙;
  77. delay(50);                                             //延時5MS;
  78. write_dictate(0x38,0);                            //寫指令38H;不檢測忙;
  79. delay(50);
  80. write_dictate(0x38,1);                            //顯示模式設(shè)置;檢測忙;
  81. write_dictate(0x08,1);                            //關(guān)閉顯示;檢測忙;
  82. write_dictate(0x01,1);                            //顯示清屏;檢測忙;
  83. write_dictate(0x06,1);                            //顯示光標(biāo)移動設(shè)置;檢測忙;
  84. write_dictate(0x0C,1);                            //顯示開及光標(biāo)設(shè)置;檢測忙;
  85. }
  86. /*-- 在指定位置顯示一個字符 --*/
  87. void displayonechar(uchar x, y,ddata)
  88. {
  89. y &= 0x01;
  90. x &= 0x0f;                             //限制X不能大于15,Y不能大于1
  91. if (y) x+= 0x40;                      //當(dāng)要顯示第二行時地址碼+0x40;
  92. x+= 0x80;                             //算出指令碼
  93. write_dictate(x,0);                    //這里不檢測忙信號,發(fā)送地址碼
  94. write_data(ddata);
  95. }
  96. /*-- 在指定位置顯示一串字符 --*/
  97. void displaylistchar(uchar x,y,uchar code*ddata)
  98. {uchar a=0;
  99. y&=0x01;
  100. x&=0xf;
  101. while(ddata[a]>0x20)
  102. {if(x<=0xff)
  103.        {  
  104.          displayonechar(x, y,ddata[a]);
  105.          a++;
  106.          x++;
  107.        }
  108.    }
  109. }
  110. /*====================MAIN主程序====================*/
  111. void main()
  112. {
  113.   delay400ms();//延時400MS
  114. initialization();//LCD復(fù)位;
  115. displaylistchar(0,0,DIS);//顯示NE555 測試;
  116. displayonechar(0,1,'F'); //在LCD是顯示F=____Hz
  117. displayonechar(1,1,'=');
  118.       displayonechar(9,1,'H');
  119.    displayonechar(10,1,'z');
  120. TMOD=0X51;                //定義T0為方式一(十六位進制),T1為計數(shù)器(16位)
  121. TH0=0X3C;           //50 ms
  122. TL0=0XB0;
  123. TH1=0X00;           //初始值
  124. TL1=0X00;
  125. TR0=1;
  126. TR1=1;
  127. ET0=1;
  128. ET1=0;
  129. EA=1;
  130. i=0;
  131. /*  顯示 */     //  調(diào)用顯示子程序(顯示位,顯示行,顯示數(shù)據(jù))注:顯示行 “0”為第一行,“1為第二行”
  132. while(1)
  133. {   
  134.   if(s/10000>=1)
  135.     {
  136.        displayonechar(2,1,dsptab[s/10000]);//萬
  137.        displayonechar(3,1,dsptab[s/1000%10]);//千
  138.        displayonechar(4,1,'.');//點
  139.        displayonechar(5,1,dsptab[s/100%10]);//百
  140.        displayonechar(6,1,dsptab[s/10%10]);//十
  141.        displayonechar(7,1,dsptab[s%10]);    //個
  142.       displayonechar(8,1,'K');
  143.     }
  144.    else  if(s/1000>=1)
  145.         {
  146.         displayonechar(2,1,' ');
  147.         displayonechar(3,1,dsptab[s/1000%10]);//千
  148.         displayonechar(4,1,'.'); //點
  149.         displayonechar(5,1,dsptab[s/100%10]);//百
  150.         displayonechar(6,1,dsptab[s/10%10]); //十
  151.         displayonechar(7,1,dsptab[s%10]);    //個
  152.        displayonechar(8,1,'K');
  153.         }
  154.          else if(s/100>=1)
  155.          {
  156.              displayonechar(2,1,' ');
  157.                 displayonechar(3,1,' ');
  158.                 displayonechar(4,1,' '); //萬
  159.                 displayonechar(5,1,' ');        //千
  160.                 displayonechar(6,1,dsptab[s/100%10]);//百
  161.                 displayonechar(7,1,dsptab[s/10%10]); //十
  162.                 displayonechar(8,1,dsptab[s%10]);    //個
  163.              }
  164.                 else if(s/10>=1)      
  165.                    {
  166.                             displayonechar(2,1,'');
  167.                            displayonechar(3,1,'');
  168.                            displayonechar(4,1,''); //萬
  169.                            displayonechar(5,1,'');    //千
  170.                     displayonechar(6,1,' ');//百
  171.                       displayonechar(7,1,dsptab[s/10%10]); //十
  172.                       displayonechar(8,1,dsptab[s%10]);    //個
  173.                       }
  174.                                 else         
  175.                           {
  176.                                    displayonechar(2,1,'');
  177.                                   displayonechar(3,1,'');
  178.                                   displayonechar(4,1,''); //萬
  179.                                   displayonechar(5,1,'');    //千
  180.                            displayonechar(6,1,'');//百
  181.                              displayonechar(7,1,dsptab[s/10%10]);//十
  182.                              displayonechar(8,1,dsptab[s%10]);    //個
  183.                              }
  184. }
  185. }
  186. /*  中斷 */
  187. void t0()interrupt 1
  188. {
  189.        TH0=0X3C;
  190.    TL0=0XB0;
  191.        i++;
  192.        if(i==20)               //1 s時間到時
  193.        {
  194.        s=TH1;                     //555信號發(fā)生器的輸出口接P3.5(T1) 15腳
  195.        s=s<<8;
  196.        s=s+TL1;         
  197.        i=0;                 //清零
  198.        TH1=0X00;
  199.        TL1=0X00;
  200.        }
  201. }
  202. /*----------------------------------------------------------------*/
  203. /*----------------- 1602液晶數(shù)據(jù)讀取子程序 -----------------------*/
  204. //讀數(shù)據(jù)子程序;有返回值,返回值類型為CHAR型;
  205. /*uchar read_data(void)                             //定義有返回值的子函數(shù);
  206. {
  207. LCD_DATA=0Xff;                                        //LCD數(shù)據(jù)端口置1;
  208. LCD_RS=1;                                                        //RS置1;
  209. LCD_RW=1;                                                       //RW置1;
  210. LCD_E=0;                                                   //E置0;
  211. delay(10);                                             //短延時;
  212. LCD_E=1;                                                   //E置1;以鎖存數(shù)據(jù);
  213. return(LCD_DATA);                                     //返回讀取的值;
  214. }
  215. /*----------------------------------------------------------------*/
復(fù)制代碼


測試系統(tǒng).zip

36.36 KB, 下載次數(shù): 13, 下載積分: 黑幣 -5

Proteus仿真圖

分享到:  QQ好友和群QQ好友和群 QQ空間QQ空間 騰訊微博騰訊微博 騰訊朋友騰訊朋友
收藏收藏 分享淘帖 頂 踩
回復(fù)

使用道具 舉報

沙發(fā)
ID:1 發(fā)表于 2018-5-27 23:41 | 只看該作者
請先把問題描述清楚吧,帖子先轉(zhuǎn)到這里來
回復(fù)

使用道具 舉報

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

本版積分規(guī)則

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

Powered by 單片機教程網(wǎng)

快速回復(fù) 返回頂部 返回列表
主站蜘蛛池模板: 亚洲精品一区av在线播放 | 亚洲一区二区视频在线播放 | 欧美高清视频一区 | 日本不卡一区二区三区在线观看 | 在线激情视频 | 综合色播 | 精品国产乱码久久久久久果冻传媒 | 看片网站在线 | 综合久久综合久久 | 伦理二区| 亚洲国产成人在线观看 | 日本免费一区二区三区四区 | 成人免费视频久久 | 亚洲欧美日韩一区二区 | 成人av一区| 91久久精品 | 97国产成人 | 午夜一级黄色片 | 欧美日韩综合视频 | 久久精品久久久久久 | 午夜久久久久久久久久一区二区 | 欧洲性生活视频 | www.夜夜骑.com | 欧美精品一区二区三区四区 在线 | 影音先锋中文在线 | 欧美成人免费电影 | 99热电影| 久久国产区| a级黄色片视频 | 久久久久久久久国产成人免费 | 中文字幕在线中文 | 国产成人99 | 日韩中文字幕 | 99福利网| 欧美在线一区二区三区 | 中文字幕 在线观看 | 成年人在线| 欧美日韩三级 | 久久精品国产一区二区三区 | 国产精品s色 | 国产精品欧美一区二区 |