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

 找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

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

我做的超聲波測距LCD1602顯示

[復制鏈接]
跳轉到指定樓層
樓主
最近做的一個超聲波測距程序,基于51單片機希望能幫到大家 程序挺簡單的
超聲波模塊的工作原理可以百度得到


單片機源程序:
  1. /* 做一個中斷 當按下按鍵式,觸發trig,超聲波開始工作,然后將數據顯示在lcd顯示屏上 */

  2. #include <reg52.h>
  3. #define uchar unsigned char
  4. #define uint unsigned int
  5. #define ulong unsigned long
  6. uchar distance[5]="0000";
  7. uchar code table[]="  guai xue xi";
  8. uchar code table1[]="distance:";
  9. sbit lcden=P3^4;
  10. sbit lcdrs=P3^5;
  11. sbit dula=P3^5;
  12. sbit wela=P3^6;
  13. uint time=0;
  14. uint s=0;
  15. uchar num;
  16. sbit trig=P1^5;
  17. sbit echo=P1^6;
  18. sbit K=P3^2;
  19. void delay(uchar z)
  20. {                                               
  21.         uchar x,y;
  22.         for(x=z;x>0;x--)
  23.                 for(y=122;y>0;y--);
  24. }
  25. void csbinit()         //定時器的初始化
  26. {
  27.         EA=1;
  28.         EX0=1;
  29.         IT0=1;
  30.         TMOD=0x90;
  31.         TH1=0;TL1=0;TR1=0;
  32. }
  33. void write_com(uchar com)
  34. {
  35.         lcdrs=0;
  36.         P0=com;
  37.         delay(5);
  38.         lcden=1;
  39.         delay(5);
  40.         lcden=0;
  41. }
  42. void write_data(uchar date)
  43. {
  44.         lcdrs=1;
  45.         P0=date;
  46.         delay(5);
  47.         lcden=1;
  48.         delay(5);
  49.         lcden=0;
  50. }
  51. void lcdinit()
  52. {
  53.         dula=0;
  54.         wela=0;
  55.         lcden=0;
  56.         write_com(0x38);  //設置雙行全數據顯示
  57.         write_com(0x0c);  //設置開顯示,不顯示光標
  58.         write_com(0x06);  //寫一個字符后地址加1
  59.         write_com(0x01);  //顯示清0

  60. }
  61. void jldq() //xianshichengxu
  62. {  uchar num1,num2,num3;
  63.        
  64.         if(s>=12000)
  65.         {
  66.                 distance[0]='E';
  67.                 distance[1]='R';
  68.                 distance[2]='R';
  69.                 distance[3]='O';
  70.         write_com(0x80+0x40+0x9);
  71.         for(num=0;num<4;num++)
  72.         {
  73.                 write_data(distance[num]);
  74.                 delay(5);
  75.         }   
  76.         }
  77.         if((s>=10000)&&(s<12000))
  78.         {        distance[1]='.';
  79.                 distance[4]='m';
  80.                 num1=s/10000;
  81.                 num2=(s%10000)/1000;
  82.                 num3=(s%1000)/100;
  83.                 write_com(0x80+0x40+0x9);
  84.                 write_data(0x30+num1);
  85.                 write_com(0x80+0x40+0xa);
  86.                 write_data(0x30+num2);
  87.                 write_com(0x80+0x40+0xb);
  88.                 write_data(distance[1]);
  89.                 write_com(0x80+0x40+0xc);
  90.                 write_data(0x30+num3);
  91.                 write_com(0x80+0x40+0xd);
  92.                 write_data(distance[4]);
  93.         }
  94.         if((s>=1000)&&(s<10000))
  95.         {       
  96.                 num1=s/1000;
  97.                 num2=(s%1000)/100;
  98.                 num3=(s%100)/10;
  99.                 distance[1]='.';
  100.                 distance[4]='m';
  101.                 write_com(0x80+0x40+0x9);
  102.                 write_data(0x30+num1);
  103.                 write_com(0x80+0x40+0xa);
  104.                 write_data(distance[1]);
  105.                 write_com(0x80+0x40+0xb);
  106.                 write_data(0x30+num2);
  107.                 write_com(0x80+0x40+0xc);
  108.                 write_data(0x30+num3);
  109.                 write_com(0x80+0x40+0xd);
  110.                 write_data(distance[4]);       
  111.         }
  112.         if((s>=100)&&(s<1000))
  113.         {        distance[0]='0';
  114.                 distance[1]='.';
  115.                 distance[4]='m';
  116.                 num1=s/100;
  117.                 num2=(s%100)/10;
  118.                 write_com(0x80+0x40+0x9);
  119.                 write_data(distance[0]);
  120.                 write_com(0x80+0x40+0xa);
  121.                 write_data(distance[1]);
  122.                 write_com(0x80+0x40+0xb);
  123.                 write_data(0x30+num1);
  124.                 write_com(0x80+0x40+0xc);
  125.                 write_data(0x30+num2);
  126.                 write_com(0x80+0x40+0xd);
  127.                 write_data(distance[4]);       
  128.         }
  129.         if(s<100)
  130.         {
  131.                  distance[0]='0';
  132.                 distance[1]='.';
  133.                 distance[2]='0';
  134.                 distance[4]='m';
  135.                 num1=s/10;
  136.                 write_com(0x80+0x40+0x9);
  137.                 write_data(distance[0]);
  138.                 write_com(0x80+0x40+0xa);
  139.                 write_data(distance[1]);
  140.                 write_com(0x80+0x40+0xb);
  141.                 write_data(distance[2]);
  142.                 write_com(0x80+0x40+0xc);
  143.                 write_data(0x30+num1);
  144.                 write_com(0x80+0x40+0xd);
  145.                 write_data(distance[4]);
  146.         }
  147.         if(s<10)
  148.         {        distance[0]='E';
  149.                 distance[1]='R';
  150.                 distance[2]='R';
  151.                 distance[3]='O';
  152.                 write_com(0x80+0x40+0x9);
  153.         for(num=0;num<4;num++)
  154.         {
  155.                 write_data(distance[num]);
  156.                 delay(5);
  157.         }   
  158.        
  159.         }
  160. }

  161. main()
  162. {
  163.         lcdinit();
  164.         csbinit();
  165.         echo=0;
  166.        
  167.        
  168.         write_com(0x80);
  169.         for(num=0;num<13;num++)
  170.         {
  171.                 write_data(table[num]);
  172.                 delay(5);
  173.         }
  174.                 write_com(0x80+0x40);
  175.         for(num=0;num<9;num++)
  176.         {
  177.                 write_data(table1[num]);
  178.                 delay(5);
  179.         }
  180.                 write_com(0x80+0x40+0x9);
  181.         for(num=0;num<4;num++)
  182.         {
  183.                 write_data(distance[num]);
  184.                 delay(5);
  185.         }
  186.         //////////
  187.         while(1)
  188.         {   while(echo!=1);
  189.                 TR1=1;
  190.                 while(echo==1);
  191.                 TR1=0;
  192.                 time=256*TH1+TL1;
  193.                 s=(time*0.17);//算出來的是mm
  194.        
  195.                 write_com(0x80);
  196.         for(num=0;num<11;num++)
  197.         {
  198.                 write_data(table[num]);
  199.                 delay(5);
  200.         }
  201.                 write_com(0x80+0x40);
  202.         for(num=0;num<9;num++)
  203.         {
  204.                 write_data(table1[num]);
  205.                 delay(5);
  206.         }
  207.         jldq();
  208.         }
  209.   }
  210. void int0() interrupt 0
  211. {
  212.         TH1=0;TL1=0;
  213.         trig=1;
  214.         delay(20);
  215.         trig=0;
  216. }
復制代碼


超聲波測距及實時顯示.zip

38.59 KB, 下載次數: 52, 下載積分: 黑幣 -5

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

使用道具 舉報

沙發
ID:224003 發表于 2017-9-16 20:52 | 只看該作者
7.27m,單位搞錯了吧,看圖上沒那么遠的吧
回復

使用道具 舉報

板凳
ID:224003 發表于 2017-9-16 20:53 | 只看該作者
7.27m,單位搞錯了吧,看圖上沒那么遠吧
回復

使用道具 舉報

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

本版積分規則

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

Powered by 單片機教程網

快速回復 返回頂部 返回列表
主站蜘蛛池模板: 在线免费观看黄色 | 精品一级| 亚洲精品1区 | 国产成人一区在线 | 国产高清毛片 | 高清免费在线 | 国产91亚洲精品一区二区三区 | 狠狠色综合网站久久久久久久 | 欧美性生活一区二区三区 | av黄色在线 | 国产精品美女www爽爽爽 | 中文字幕a√ | 99福利在线观看 | 日韩在线精品强乱中文字幕 | 四虎影院免费在线 | 国产一级在线观看 | 国产一区二区自拍 | 欧美成ee人免费视频 | 91资源在线观看 | 久久精品亚洲欧美日韩精品中文字幕 | 99reav| 日韩在线一区二区 | 日韩伦理一区二区 | 一级在线观看 | 黑人精品xxx一区一二区 | 男人的天堂中文字幕 | 欧美日在线 | 国产精品一区二区久久久久 | 中文字幕免费在线观看 | 久久久久久久网 | 久久久国产一区二区三区四区小说 | 午夜小视频在线播放 | 在线视频中文字幕 | 中文字幕日韩一区 | 成人午夜精品 | 中文字幕99 | 美日韩免费视频 | 国产高清精品一区二区三区 | 毛片毛片毛片毛片毛片 | 久久一区精品 | 中文字幕欧美日韩 |