標題: 基于51單片機的超聲波測距制作 附程序 [打印本頁]
作者: 余清風 時間: 2020-12-20 15:00
標題: 基于51單片機的超聲波測距制作 附程序
作品以STC89C52為主控制器,通過HC-SR04超聲波測距模塊,從超聲波模塊的發射、接收、檢測、顯示硬件進行分析,模塊發射超聲波到遇到障礙物模塊接收端響應,輸出相應比例的高電平響應到將超聲波,經過時間算法,向主控傳輸時間,轉換后在LCD上顯示出相應的距離,實現距離測量。
以51單片機為主控,外部拓展距離采集的超聲波傳感器和顯示的LCD設備。
利用超聲波模塊的發射、接收、檢測、將數據信息發送到寄存器,控制LCD讀操作,進行顯示。本次系統的設計主要包括兩部分,即硬件電路和軟件程序。
硬件電路主要包括單片機電路、發射電路、接收電路、顯示電路和電源電路等。本次設計采用以AT89C52單片機為核心的低成本、高精度、微型化數字顯示超聲波測距儀的硬件電路。整個電路采用模塊化設計,由信號發射和接收、供電、顯示等模塊組成。發射探頭的信號經放大和檢波后發射出去,單片機的計時器開始計時,超聲波被發射后按原路返回,信號被接受電路接受,然后被單片機接收,計數器停止工作并得到時間。
軟件程序主要由主程序、預置子程序、發射子程序、接收子程序、顯示子程序等模塊組成。它控制單片機進行數據發送與接收,實現數據正確顯示在數碼管上。另外程序控制單片機消除各探頭對發射和接收超聲波的影響。相關部分附有硬件電路圖、程序流程圖。
制作出來的實物圖如下:
2.jpg (37.42 KB, 下載次數: 57)
下載附件
2020-12-20 14:59 上傳
電路原理圖如下:
1.png (74.91 KB, 下載次數: 44)
下載附件
2020-12-20 14:59 上傳
單片機源程序如下:
- #include<reg51.h>
- #include<intrins.h>
- #include<LCD.h>
- typedef unsigned char u8;
- typedef unsigned char u16;
- sbit Trig = P2^1;
- sbit Echo = P2^0;
- sbit beep=P1^5;
- void delay(u16 i)
- {
- while(i--);
- }
- unsigned char PuZh[]=" Pechin Science ";
- unsigned char code ASCII[15] = {'0','1','2','3','4','5','6','7','8','9','.','-','M'};
- static unsigned char DisNum = 0; //顯示用指針
- unsigned int time=0;
- unsigned long S=0;
- bit flag =0;
- unsigned char disbuff[4] ={ 0,0,0,0,};
-
- char data1=0,data2=0,data3=0;
-
- void UsartInit()
- {
- SCON=0X50;
- TMOD=0X21;
- PCON=0X80;
- TH1=0XF3;
- TL1=0XF3;
- ES=1;
- EA=1;
- TR1= 1;
- }
- char dat=0;
- /*******************************************************************************
- * 函 數 名 : main
- * 函數功能 : 主函數
- * 輸 入 : 無
- * 輸 出 : 無
- *******************************************************************************/
- void Conut(void)
- {
- time=TH0*256+TL0;
- TH0=0;
- TL0=0;
-
- S=(time*1.7)/100; //算出來是CM
- if((S>=700)||flag==1) //超出測量范圍顯示“-”
- {
- flag=0;
-
- DisplayOneChar(0, 1, ASCII[11]);
- DisplayOneChar(1, 1, ASCII[10]); //顯示點
- DisplayOneChar(2, 1, ASCII[11]);
- DisplayOneChar(3, 1, ASCII[11]);
- DisplayOneChar(4, 1, ASCII[12]); //顯示M
- }
- else
- {
- disbuff[0]=S%1000/100;
- disbuff[1]=S%1000%100/10;
- disbuff[2]=S%1000%10 %10;
- DisplayOneChar(0, 1, ASCII[disbuff[0]]);
- DisplayOneChar(1, 1, ASCII[10]); //顯示點
- DisplayOneChar(2, 1, ASCII[disbuff[1]]);
- DisplayOneChar(3, 1, ASCII[disbuff[2]]);
- DisplayOneChar(4, 1, ASCII[12]); //顯示M
-
- data1=disbuff[0]+48;
- data2=disbuff[1]+48;
- data3=disbuff[2]+48;
- if(dat=='1'||dat=='2')
- {
- SBUF=data1;
- while(!TI);
- TI=0;
- SBUF='.';
- while(!TI);
- TI=0;
-
- SBUF=data2;
- while(!TI);
- TI=0;
-
- SBUF=data3;
- while(!TI);
- TI=0;
-
- SBUF='M';
- while(!TI);
- TI=0;
-
- SBUF=0x0d;
- while(!TI);
- TI=0;
-
- SBUF=0x0a;
- while(!TI);
- TI=0;
- }
- if(dat=='1'){dat=0;}
- }
-
-
- }
- void zd0() interrupt 1 //T0中斷用來計數器溢出,超過測距范圍
- {
- flag=1; //中斷溢出標志
- }
- void StartModule() //啟動模塊
- {
- Trig=1; //啟動一次模塊
- _nop_();
- _nop_();
- _nop_();
- _nop_();
- _nop_();
- _nop_();
- _nop_();
- _nop_();
- _nop_();
- _nop_();
- _nop_();
- _nop_();
- _nop_();
- _nop_();
- _nop_();
- _nop_();
- _nop_();
- _nop_();
- _nop_();
- _nop_();
- _nop_();
- Trig=0;
- }
- void delayms(unsigned int ms)
- {
- unsigned char i=100,j;
- for(;ms;ms--)
- {
- while(--i)
- {
- j=10;
- while(--j);
- }
- }
- }
- void main(void)
- {
- TMOD=0x01; //設T0為方式1,GATE=1;
- TH0=0;
- TL0=0;
- ET0=1; //允許T0中斷
- EA=1; //開啟總中斷
- InitLcd1602();
- LcdShowStr(0,0,PuZh);
- UsartInit();
- ……………………
- …………限于本文篇幅 余下代碼請從51黑下載附件…………
復制代碼
所有程序51hei提供下載:
程序.zip
(37.71 KB, 下載次數: 54)
2020-12-20 14:56 上傳
點擊文件名下載附件
下載積分: 黑幣 -5
作者: 江紅 時間: 2020-12-22 12:25
似乎運行錯誤哦
歡迎光臨 (http://www.zg4o1577.cn/bbs/) |
Powered by Discuz! X3.1 |
主站蜘蛛池模板:
狠狠操婷婷
|
欧美另类视频在线
|
国家aaa的一级看片
h片在线看
|
在线视频国产一区
|
亚洲一区二区网站
|
涩涩视频在线观看
|
在线视频a
|
在线欧美激情
|
亚洲精品国产第一综合99久久
|
国产精品s色|
一区二区三区在线看
|
久久中文免费视频
|
久久av网站
|
国产精品国产a级
|
成av人电影在线
|
91精品国产自产精品男人的天堂
|
欧美中文字幕在线观看
|
午夜影视大全
|
日韩三级电影在线看
|
91精品国产综合久久精品图片
|
产真a观专区
|
亚洲精品久久久久中文字幕欢迎你
|
男女羞羞视频大全
|
国产一级毛片精品完整视频版
|
午夜影院在线观看
|
欧美中文字幕一区二区
|
欧洲视频一区二区
|
亚洲欧美日韩精品
|
欧美精品一区二区三区四区五区
|
www日本高清视频
|
狠狠操狠狠干
|
av毛片在线播放
|
一区二区三区视频在线观看
|
青青久在线视频
|
国产精品久久久久久久久久
|
懂色一区二区三区免费观看
|
精品一区二区三
|
国产精品3区
|
黄色一级大片在线免费看产
|
成人在线观看免费
|
亚洲一区 中文字幕
|