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

 找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

搜索
查看: 18686|回復: 19
收起左側

LCD1602為什么會顯示亂碼?單片機程序是這樣的!

  [復制鏈接]
ID:229453 發(fā)表于 2017-8-26 14:18 | 顯示全部樓層 |閱讀模式

顯示不正常是嗎?

顯示不正常是嗎?

顯示不正常是嗎?

顯示不正常是嗎?


  1. #include<reg52.h>   
  2. #include <intrins.h>  
  3. #define uint unsigned int
  4. #define uchar unsigned char
  5. sbit rs=P2^5;            //1602的數(shù)據(jù)/指令選擇控制線
  6. sbit rw=P2^6;           //1602的讀寫控制線
  7. sbit en=P2^7;          //1602的使能控制線
  8. sbit trig=P3^0;      //超聲波測距模塊Trig
  9. sbit echo=P3^1;     //超聲波測距模塊Echo
  10. bit flag1;         //觸發(fā)信號標志位//
  11. uchar count;           //中斷累加變量
  12. long int distance;    //測量所得距離
  13. unsigned char code table[ ]={"0123456789"}; //定義字符數(shù)組顯示數(shù)字

  14. void delay(uint n)                          
  15. {
  16.     uint x,y;
  17.     for(x=n;x>0;x--)
  18.     for(y=110;y>0;y--);
  19. }


  20. void delayt(uint x)
  21. {
  22.     uchar j;
  23.     while(x-- > 0)
  24.     {
  25.               for(j = 0;j < 125;j++)
  26.         {
  27.           ;
  28.         }
  29.     }
  30. }


  31. void lcd_wcom(uchar com)           
  32. {
  33.     rs=0;                //選擇指令寄存器
  34.     rw=0;               //選擇寫
  35.     P0=com;            //把命令字送入P0
  36.     delay(5);         //延時一小會兒,讓1602準備接收數(shù)據(jù)
  37.     en=1;            //使能線電平變化,命令送入1602的8位數(shù)據(jù)口,這點非常重要
  38.     en=0;
  39. }


  40. void lcd_wdat(uchar dat)      
  41. {
  42.     rs=1;             //選擇數(shù)據(jù)寄存器
  43.     rw=0;            //選擇寫
  44.     P0=dat;         //把要顯示的數(shù)據(jù)送入P0
  45.     delay(5);      //延時一小會兒,讓1602準備接收數(shù)據(jù),也就是檢測忙信號,這點非常重要。
  46.     en=1;         //使能線電平變化,數(shù)據(jù)送入1602的8位數(shù)據(jù)口
  47.     en=0;
  48.   }


  49. void lcd_init()            
  50. {
  51.     lcd_wcom(0x38);       //8位數(shù)據(jù),雙列,5*7字形  ,用到功能設定指令   
  52.     lcd_wcom(0x0c);      //開啟顯示屏,關光標,光標不閃爍,用到顯示開關控制指令
  53.     lcd_wcom(0x06);     //顯示地址遞增,即寫一個數(shù)據(jù)后,顯示位置右移一位,用到了寫入模式設置指令
  54.     lcd_wcom(0x01);    //清屏,用到了清屏指令
  55. }


  56. void lcd_xianshi()            
  57. {
  58.     lcd_wcom(0x80+0x40);
  59.         lcd_wdat('D');
  60.         lcd_wdat('i');
  61.         lcd_wdat('s');
  62.         lcd_wdat('t');
  63.         lcd_wdat('a');
  64.         lcd_wdat('n');
  65.         lcd_wdat('c');
  66.         lcd_wdat('e');
  67.         lcd_wdat(':');
  68.         lcd_wcom(0x80+0x4c);//
  69.         lcd_wdat('.');
  70.         lcd_wcom(0x80+0x4e);//單位是厘米//
  71.         lcd_wdat('c');
  72.         lcd_wdat('m');
  73. }


  74. void init_t0()
  75. {
  76.         TMOD=0x01;        
  77.          TL0=0x66;
  78.         TH0=0xfc;              //1ms
  79.     ET0=1;            
  80.         EA=1;                     
  81. }


  82. void trigger()
  83. {
  84.     trig=0;
  85.     _nop_();
  86.     _nop_();
  87.     _nop_();
  88.     _nop_();
  89.     _nop_();
  90.     _nop_();
  91.     _nop_();
  92.     _nop_();
  93.     _nop_();
  94.     _nop_();
  95.     _nop_();
  96.     _nop_();
  97.     _nop_();
  98.     _nop_();
  99.     _nop_();
  100.     _nop_();
  101.     _nop_();
  102.     _nop_();
  103.     _nop_();
  104.     _nop_();
  105.     _nop_();
  106.         trig=1;      
  107. }


  108. void init_measuring()
  109. {
  110.         trig=1;
  111.         echo=1;
  112.         count=0;
  113. }


  114. void measuring()
  115. {
  116.         uchar l;
  117.         uint h,y;
  118.         TR0 = 1;
  119.         while(echo==1)
  120.     {
  121.         ;
  122.     }      
  123.         TR0 = 0;
  124.         l = TL0;
  125.         h = TH0;
  126.         y = (h << 8) + l;
  127.         y = y - 0xfc66;//us部分
  128.         distance = y + 1000 * count;//計算總時間,單位是微秒
  129.         TL0 = 0x66;
  130.         TH0 = 0xfc;
  131.         delayt(30);
  132.         distance = 3453* distance / 20000;//原始為:(0.34毫米/us)*時間/2//      
  133. }


  134. void display(uint x)
  135. {
  136.         uchar qian,bai,shi,ge;
  137.         qian=x/1000;
  138.         bai=(x/100);
  139.         shi=(x/10);
  140.         ge=x;
  141.         lcd_wcom(0x80+0x49);//單位是厘米//
  142.         lcd_wdat(table[qian]);
  143.         lcd_wdat(table[bai]);
  144.         lcd_wdat(table[shi]);
  145.         lcd_wcom(0x80+0x4d);
  146.         lcd_wdat(table[ge]);
  147. }

  148. void main()           
  149. {   lcd_init();          //液晶初始化      
  150.     init_t0();          //定時器0初始化  
  151.         init_measuring();  //超聲波相應端口初始化

  152.         while(1)
  153.         {
  154.          lcd_xianshi();   //液晶顯示特定字符
  155.          trigger();      //觸發(fā)超聲波啟動
  156.           while(echo==0)          //等待回聲
  157.           {
  158.              ;
  159.           }
  160.             measuring();           //進行距離測量
  161.             display(distance);    //對測量結果進行顯示
  162.             init_measuring();    //超聲波相應端口初始化
  163.             delayt(600);        //每次測量間隔60ms
  164.         }
  165. }

  166. //……………………………………………中斷服務函數(shù)…………………………………………………//
  167. void T_0()interrupt 1
  168. {
  169.         TF0 = 0;
  170.         TL0 = 0x66;
  171.         TH0 = 0xfc;
  172.         count++;
  173.         if(count==18)
  174.         {
  175.           TR0 =0;
  176.           TL0 = 0x66;
  177.           TH0 = 0xfc;
  178.           count = 0;
  179.         }
  180. }

復制代碼


評分

參與人數(shù) 1黑幣 +5 收起 理由
a1270839275 + 5 很給力!

查看全部評分

回復

使用道具 舉報

ID:82765 發(fā)表于 2017-8-26 15:55 來自觸屏版 | 顯示全部樓層
提示: 作者被禁止或刪除 內容自動屏蔽
回復

使用道具 舉報

ID:7485 發(fā)表于 2017-8-26 20:36 | 顯示全部樓層
那么多的NOP?
回復

使用道具 舉報

ID:111634 發(fā)表于 2017-8-26 22:08 | 顯示全部樓層
單憑那么多NOP就可把該程序槍斃了!
回復

使用道具 舉報

ID:229453 發(fā)表于 2017-8-26 23:39 | 顯示全部樓層
cjjcjj1 發(fā)表于 2017-8-26 15:55
你好!你說的亂碼,具體是什么樣子,發(fā)圖片看下

這也顯示不正常
回復

使用道具 舉報

ID:229453 發(fā)表于 2017-8-26 23:45 | 顯示全部樓層
cjjcjj1 發(fā)表于 2017-8-26 15:55
你好!你說的亂碼,具體是什么樣子,發(fā)圖片看下

我發(fā)了,麻煩您幫忙看看是啥情況,謝謝。
回復

使用道具 舉報

ID:197714 發(fā)表于 2017-8-27 00:32 | 顯示全部樓層
前面顯示的是正常的  ,說明你的程序還是基本可以的啊。網(wǎng)上找例程看看。檢查一下時序
回復

使用道具 舉報

ID:229281 發(fā)表于 2017-8-27 09:09 | 顯示全部樓層
你個十百千計算有問題,
回復

使用道具 舉報

ID:229453 發(fā)表于 2017-8-27 09:52 | 顯示全部樓層
朱小文 發(fā)表于 2017-8-27 00:32
前面顯示的是正常的  ,說明你的程序還是基本可以的啊。網(wǎng)上找例程看看。檢查一下時序

嗯好的
回復

使用道具 舉報

ID:207127 發(fā)表于 2017-8-27 10:47 | 顯示全部樓層
不明白你說的什么
回復

使用道具 舉報

ID:229453 發(fā)表于 2017-8-27 17:03 | 顯示全部樓層
史艷高 發(fā)表于 2017-8-27 09:09
你個十百千計算有問題,

謝謝啦,多虧你提供思路現(xiàn)在我已經解決了,確實是計算有問題!哈哈
回復

使用道具 舉報

ID:229588 發(fā)表于 2017-8-27 20:05 | 顯示全部樓層
我也出現(xiàn)過這種情況,但是由于硬件問題,1602的2腳和15腳加的電位器
回復

使用道具 舉報

ID:82765 發(fā)表于 2017-8-28 11:45 | 顯示全部樓層
提示: 作者被禁止或刪除 內容自動屏蔽
回復

使用道具 舉報

ID:228347 發(fā)表于 2017-8-28 13:01 來自觸屏版 | 顯示全部樓層
cjjcjj1 發(fā)表于 2017-8-28 11:45
qian=x/1000;
        bai=(x/100);
        shi=(x/10);

這是正解!
回復

使用道具 舉報

ID:229453 發(fā)表于 2017-8-28 13:48 | 顯示全部樓層

是呀!!!!!!
回復

使用道具 舉報

ID:229453 發(fā)表于 2017-8-28 13:49 | 顯示全部樓層
cjjcjj1 發(fā)表于 2017-8-28 11:45
qian=x/1000;
        bai=(x/100);
        shi=(x/10);

嗯,已經解決了謝謝。
回復

使用道具 舉報

ID:229884 發(fā)表于 2017-8-29 15:59 | 顯示全部樓層
字符顯示重疊了
回復

使用道具 舉報

ID:321034 發(fā)表于 2018-6-7 17:22 | 顯示全部樓層
請問 while(echo==1)
    {
        ;
    }      
        TR0 = 0;
        l = TL0;
        h = TH0;
        y = (h << 8) + l;
        y = y - 0xfc66;//us部分
        distance = y + 1000 * count;//計算總時間,單位是微秒
        TL0 = 0x66;
        TH0 = 0xfc;
        delayt(30);
        distance = 3453* distance / 20000;//原始為:(0.34毫米/us)*時間/2//      
}
這一段 時啥意思啊
回復

使用道具 舉報

ID:592003 發(fā)表于 2020-6-23 16:27 | 顯示全部樓層
把掃描程序延一下時
回復

使用道具 舉報

ID:592003 發(fā)表于 2020-6-23 16:28 | 顯示全部樓層
你這要給數(shù)字或一個0x30
回復

使用道具 舉報

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

本版積分規(guī)則

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

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

快速回復 返回頂部 返回列表
主站蜘蛛池模板: 国产激情一区二区三区 | 91麻豆精品国产91久久久久久 | 久久国内精品 | 亚洲精品一区国语对白 | 新91视频网| 超碰导航 | 日本xx视频免费观看 | 久久青草av| 日韩成人在线播放 | 欧美中文在线 | 久久午夜精品 | 成年人黄色小视频 | 91久久国产综合久久 | 欧美一区二区三区精品免费 | 国产成人精品a视频一区www | a毛片| 一级片子| 精品视频一区二区三区在线观看 | 人和拘一级毛片c | 国产97视频在线观看 | 中文字幕在线第二页 | av在线免费观看网址 | 国产精品久久久久久久久久 | 久在线精品视频 | 91精品国产91久久久久久密臀 | 欧美一区视频在线 | 看片国产 | 国产精品一区在线 | 精品三区 | 午夜精品一区二区三区在线观看 | 91在线一区二区 | 久久亚洲视频网 | 国产成人精品综合 | av中文字幕网站 | 久久久精品一区二区 | 在线午夜 | 久久亚洲国产精品 | 国产精品久久久久久婷婷天堂 | 久草免费在线视频 | 成人精品一区二区户外勾搭野战 | 国产丝袜人妖cd露出 |