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

 找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

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

基于51單片機的超聲波測距制作 附程序

[復制鏈接]
跳轉到指定樓層
樓主
作品以STC89C52為主控制器,通過HC-SR04超聲波測距模塊,從超聲波模塊的發射、接收、檢測、顯示硬件進行分析,模塊發射超聲波到遇到障礙物模塊接收端響應,輸出相應比例的高電平響應到將超聲波,經過時間算法,向主控傳輸時間,轉換后在LCD上顯示出相應的距離,實現距離測量。
以51單片機為主控,外部拓展距離采集的超聲波傳感器和顯示的LCD設備。
利用超聲波模塊的發射、接收、檢測、將數據信息發送到寄存器,控制LCD讀操作,進行顯示。本次系統的設計主要包括兩部分,即硬件電路和軟件程序。
硬件電路主要包括單片機電路、發射電路、接收電路、顯示電路和電源電路等。本次設計采用以AT89C52單片機為核心的低成本、高精度、微型化數字顯示超聲波測距儀的硬件電路。整個電路采用模塊化設計,由信號發射和接收、供電、顯示等模塊組成。發射探頭的信號經放大和檢波后發射出去,單片機的計時器開始計時,超聲波被發射后按原路返回,信號被接受電路接受,然后被單片機接收,計數器停止工作并得到時間。

軟件程序主要由主程序、預置子程序、發射子程序、接收子程序、顯示子程序等模塊組成。它控制單片機進行數據發送與接收,實現數據正確顯示在數碼管上。另外程序控制單片機消除各探頭對發射和接收超聲波的影響。相關部分附有硬件電路圖、程序流程圖。

制作出來的實物圖如下:


電路原理圖如下:


單片機源程序如下:
  1. #include<reg51.h>
  2. #include<intrins.h>
  3. #include<LCD.h>
  4. typedef unsigned char u8;
  5. typedef unsigned char u16;
  6. sbit Trig = P2^1;
  7. sbit Echo = P2^0;
  8. sbit beep=P1^5;       

  9. void delay(u16 i)
  10. {
  11.         while(i--);       
  12. }

  13. unsigned char PuZh[]=" Pechin Science ";
  14. unsigned char code ASCII[15] =    {'0','1','2','3','4','5','6','7','8','9','.','-','M'};

  15. static unsigned char DisNum = 0; //顯示用指針                                  
  16.        unsigned int  time=0;
  17.            unsigned long S=0;
  18.            bit      flag =0;
  19.            unsigned char disbuff[4]           ={ 0,0,0,0,};
  20.                  
  21.                  char data1=0,data2=0,data3=0;
  22.                  
  23. void UsartInit()
  24. {
  25.         SCON=0X50;                       
  26.         TMOD=0X21;                       
  27.         PCON=0X80;                       
  28.         TH1=0XF3;                               
  29.         TL1=0XF3;
  30.         ES=1;                                       
  31.         EA=1;               
  32.   TR1= 1;       
  33. }                 

  34. char dat=0;

  35. /*******************************************************************************
  36. * 函 數 名         : main
  37. * 函數功能                   : 主函數
  38. * 輸    入         : 無
  39. * 輸    出         : 無
  40. *******************************************************************************/
  41. void Conut(void)
  42.         {
  43.          time=TH0*256+TL0;
  44.          TH0=0;
  45.          TL0=0;
  46.        
  47.          S=(time*1.7)/100;     //算出來是CM
  48.          if((S>=700)||flag==1) //超出測量范圍顯示“-”
  49.          {         
  50.           flag=0;
  51.          
  52.           DisplayOneChar(0, 1, ASCII[11]);
  53.           DisplayOneChar(1, 1, ASCII[10]);        //顯示點
  54.           DisplayOneChar(2, 1, ASCII[11]);
  55.           DisplayOneChar(3, 1, ASCII[11]);
  56.           DisplayOneChar(4, 1, ASCII[12]);        //顯示M
  57.          }
  58.          else
  59.          {
  60.           disbuff[0]=S%1000/100;
  61.           disbuff[1]=S%1000%100/10;
  62.           disbuff[2]=S%1000%10 %10;
  63.           DisplayOneChar(0, 1, ASCII[disbuff[0]]);
  64.           DisplayOneChar(1, 1, ASCII[10]);        //顯示點
  65.           DisplayOneChar(2, 1, ASCII[disbuff[1]]);
  66.           DisplayOneChar(3, 1, ASCII[disbuff[2]]);
  67.           DisplayOneChar(4, 1, ASCII[12]);        //顯示M
  68.                  
  69.                  data1=disbuff[0]+48;
  70.                  data2=disbuff[1]+48;
  71.                  data3=disbuff[2]+48;
  72.         if(dat=='1'||dat=='2')
  73.         {               
  74.         SBUF=data1;
  75.         while(!TI);
  76.         TI=0;

  77.         SBUF='.';
  78.         while(!TI);
  79.         TI=0;
  80.                  
  81.         SBUF=data2;
  82.         while(!TI);
  83.         TI=0;
  84.   
  85.         SBUF=data3;
  86.         while(!TI);
  87.         TI=0;
  88.        
  89.                 SBUF='M';
  90.         while(!TI);
  91.         TI=0;
  92.        
  93.                 SBUF=0x0d;
  94.         while(!TI);
  95.         TI=0;
  96.        
  97.         SBUF=0x0a;
  98.         while(!TI);
  99.         TI=0;
  100.          }
  101.         if(dat=='1'){dat=0;}
  102. }
  103.          
  104.          
  105.         }

  106. void zd0() interrupt 1                  //T0中斷用來計數器溢出,超過測距范圍
  107.   {
  108.     flag=1;                                                         //中斷溢出標志
  109.   }

  110. void  StartModule()                          //啟動模塊
  111.   {
  112.           Trig=1;                                             //啟動一次模塊
  113.           _nop_();
  114.           _nop_();
  115.           _nop_();
  116.           _nop_();
  117.           _nop_();
  118.           _nop_();
  119.           _nop_();
  120.           _nop_();
  121.           _nop_();
  122.           _nop_();
  123.           _nop_();
  124.           _nop_();
  125.           _nop_();
  126.           _nop_();
  127.           _nop_();
  128.           _nop_();
  129.           _nop_();
  130.           _nop_();
  131.           _nop_();
  132.           _nop_();
  133.           _nop_();
  134.           Trig=0;
  135.   }



  136. void delayms(unsigned int ms)
  137. {
  138.         unsigned char i=100,j;
  139.         for(;ms;ms--)
  140.         {
  141.                 while(--i)
  142.                 {
  143.                         j=10;
  144.                         while(--j);
  145.                 }
  146.         }
  147. }

  148. void main(void)
  149. {

  150.          TMOD=0x01;                   //設T0為方式1,GATE=1;
  151.          TH0=0;
  152.          TL0=0;         
  153.          ET0=1;             //允許T0中斷
  154.          EA=1;                           //開啟總中斷       

  155.         InitLcd1602();
  156.         LcdShowStr(0,0,PuZh);
  157.         UsartInit();
  158. ……………………

  159. …………限于本文篇幅 余下代碼請從51黑下載附件…………
復制代碼

所有程序51hei提供下載:
程序.zip (37.71 KB, 下載次數: 54)

評分

參與人數 1黑幣 +50 收起 理由
admin + 50 共享資料的黑幣獎勵!

查看全部評分

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

使用道具 舉報

沙發
ID:865386 發表于 2020-12-22 12:25 | 只看該作者
似乎運行錯誤哦
回復

使用道具 舉報

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

本版積分規則

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

Powered by 單片機教程網

快速回復 返回頂部 返回列表
主站蜘蛛池模板: 成人在线国产 | av中文字幕在线观看 | 日韩成人免费视频 | 91视频一区二区三区 | 激情六月天 | 久久com | 在线观看国产视频 | 欧美video| 国产美女特级嫩嫩嫩bbb片 | 欧美日韩三级 | 国产成人精品一区二区三区在线观看 | 日韩中文在线观看 | 野狼在线社区2017入口 | 日韩在线欧美 | 成人国产免费视频 | 国产一二区免费视频 | 超级乱淫av片免费播放 | 日日操视频 | 黄色成人在线观看 | 久久国产电影 | 亚洲精品国产第一综合99久久 | 国产成人一区在线 | 情侣黄网站免费看 | 国产色片 | 亚洲美女一区 | 福利视频网站 | 成人免费观看男女羞羞视频 | 毛片免费看的 | 凹凸日日摸日日碰夜夜 | 国产亚洲精品综合一区 | 欧美精品一二三 | 请别相信他免费喜剧电影在线观看 | 亚洲一区二区在线视频 | 特黄视频| 欧美日韩电影一区二区 | 91精品国产综合久久香蕉麻豆 | 丁香久久 | 亚洲一区二区国产 | 91久久国产综合久久91精品网站 | 久久天堂 | 成人永久免费 |