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

 找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

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

單片機超聲波測距LCD顯示

[復制鏈接]
跳轉到指定樓層
樓主
采用了HC-SR04模塊和LCD1602模塊
自己畫的電路板
僅測量一次,不是動態測量。采用數組動態顯示的方法顯示數據
電路原理圖如下:

  1. #include <reg52.h>
  2. #include <intrins.h>
  3. #define uchar unsigned char
  4. #define uint unsigned int
  5. #define Addr 0
  6. uchar ge,shi,num_1 = 0,flag =0,S2= 0;
  7. long time = 0,S = 0;
  8. float S1 = 0;
  9. char table []={"   . cm!         "};
  10. uchar code table1[]={"ce liang zhong! "};
  11. uchar table2 [] = {"distance        "};
  12. void        lcd_w_com(uchar com);
  13. sbit Echo = P2^1 ;
  14. sbit Trig = P2^2 ;
  15. sbit lcden = P2^5;
  16. sbit lcdrw = P2^6;
  17. sbit lcdrs = P2^7;
  18. void count()                                                                                //測量函數
  19. {
  20.         while(!Echo);                                                                        //當Echo為1,開始計時
  21.   TR0=1;
  22.   while(Echo);                                                                        //當Echo為0,關閉計時
  23.   TR0=0;
  24.   time=TH0*256+TL0;
  25.   TH0=0;
  26.   TL0=0;
  27.   S=(time*1.7)/100;                                                        //計算個十百位
  28.   S1=(time*1.7)/100;
  29.         S2 = (S1-S)*10;                                                         //浮點型減整型得到小數點后一位
  30. }        
  31. void delayms(xms)
  32. {
  33.         uint i,j;
  34.         for (i = xms; i > 0;i--)
  35.         for (j = 110; j > 0; j--);
  36. }

  37. void check()                                                                        //發射超聲波
  38. {
  39.         Trig = 0;
  40.         Trig = 1;
  41.     _nop_();_nop_();_nop_();_nop_();_nop_();
  42.     _nop_();_nop_();_nop_();_nop_();_nop_();
  43.     _nop_();_nop_();_nop_();_nop_();_nop_();
  44.     _nop_();_nop_();_nop_();_nop_();_nop_();                                                                //延時20微秒
  45.         Trig = 0;
  46. }
  47. void Timer0_int()                                                                                                        //定時器初始化                                                         
  48. {
  49.         TMOD = 0x01;
  50.         TH0 = 0;
  51.         TL0 = 0;
  52.         TF0 = 0;                                                                                                        //中斷溢出標志位
  53.         EA  = 1;                                                                                                        //中斷總開關
  54.         ET0 = 1;
  55. }
  56. void lcd_init()                                                        //LCD初始化
  57. {
  58.         lcd_w_com(0x38);               
  59.         lcd_w_com(0x0c);
  60.         lcd_w_com(0x06);
  61.         lcd_w_com(0x01);
  62. }
  63. void lcd_w_com(uchar com)                                        //LCD寫入命令
  64. {
  65.         lcdrs = 0;                                                //指令寄存
  66.         lcdrw = 0;                                                 //選擇寫
  67.         P0 = com;
  68.         delayms(5);
  69.         lcden = 1;
  70.         lcden = 0;
  71. }
  72. void lcd_w_date(uchar date)                                                //LCD寫入數據
  73. {
  74.         lcdrs = 1;
  75.         lcdrw = 0;
  76.         P0 = date;
  77.         delayms(5);
  78.         lcden = 1;
  79.         lcden = 0;
  80. }
  81. void timer0() interrupt 1                                                        //中斷函數,防止超時
  82. {
  83.         flag = 1;
  84. }
  85. void main()
  86. {
  87.                         uchar n,m;
  88.                         lcd_init();
  89.                         Timer0_int();
  90.                         Trig = 0;
  91.                         flag = 0;
  92.                         check();
  93.                         count();
  94.                         table[Addr] = S/100+0x30;
  95.                         table[Addr+1] = S/10%10+0x30;
  96.                         table[Addr+2] = S%10+0x30;
  97.                         table[Addr+4] = S2+0x30;
  98.                         lcd_w_com(0x80);                                                        //顯示第一行
  99.                         for(n = 0;n < 16;n++)
  100.                         {
  101.                         lcd_w_date(table1[n]);
  102.                         delayms(100);
  103.                         }        
  104.                         lcd_w_com(0x80+0x40);                                //顯示第二行
  105.                         for(m = 0;m < 16;m++)
  106.                         {
  107.                                 lcd_w_date(table[m]);
  108.                                 delayms(100);
  109.                         }
  110.                         lcd_w_com(0x80);
  111.                         for(n=0;n<16;n++)
  112.                         {
  113.                                 lcd_w_date(table2[n]);
  114.                                 delayms(100);
  115.                         }
  116.                         while(1);
  117. }
復制代碼



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

使用道具 舉報

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

本版積分規則

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

Powered by 單片機教程網

快速回復 返回頂部 返回列表
主站蜘蛛池模板: 伊人久久综合 | 一级网站 | 有码一区 | 欧美一页| 成人自拍视频网站 | 青青草亚洲 | 国产一区二区日韩 | 毛片毛片毛片毛片 | 欧美一区二区三区 | 午夜免费 | 一级免费毛片 | 亚洲精品粉嫩美女一区 | 日本在线看片 | 日韩欧美精品 | 欧美精品成人一区二区三区四区 | 91视频麻豆 | 久久精品91久久久久久再现 | 99精品视频在线观看免费播放 | 黄色网址在线免费观看 | 欧美激情精品久久久久久免费 | 日本特黄a级高清免费大片 特黄色一级毛片 | 久久综合激情 | 精品久久一区 | 国产精品美女久久久久久久网站 | 日韩免费视频 | 97av| 蜜臀网| 久久久精品一区二区 | 精品九九久久 | 欧美日韩国产一区二区三区 | 国产高清视频在线观看播放 | 日本在线综合 | 中文字幕男人的天堂 | 51ⅴ精品国产91久久久久久 | 一级免费毛片 | 激情a| 国产精品色 | 日韩精品1区2区3区 成人黄页在线观看 | 亚洲人成人一区二区在线观看 | 亚洲在线一区 | 草草视频在线播放 |