單片機超聲波仿真原理圖如下(proteus仿真工程文件可到本帖附件中下載)
QQ截圖20190103220600.png (51.03 KB, 下載次數: 37)
下載附件
仿真運行
2019-1-3 22:19 上傳
QQ截圖20190103222251.png (91.09 KB, 下載次數: 34)
下載附件
2019-1-3 22:23 上傳
QQ截圖20190103220754.png (55.51 KB, 下載次數: 35)
下載附件
文件包含內容
2019-1-3 22:19 上傳
單片機超聲波測距源程序如下:
- #include <reg51.h>
- #include <intrins.h>
- #include "lcd.h"
- sbit Trig = P1^6;
- sbit Echo = P1^7;
- 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,};
- /*******************************************************************************
- * oˉ êy Ãû : main
- * oˉêy1|Äü : Ö÷oˉêy
- * êä èë : ÎT
- * êä 3ö : ÎT
- *******************************************************************************/
- void Conut(void)
- {
- time=TH0*256+TL0;
- TH0=0;
- TL0=0;
-
- S=(time*1.7)/100;
- 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]);
- }
- 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]);
- }
- }
- void zd0() interrupt 1
- {
- 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;
- TH0=0;
- TL0=0;
- ET0=1;
- EA=1;
- InitLcd1602();
- LcdShowStr(0,0,PuZh);
- while(1)
- {
- StartModule();
- while(!Echo);
- TR0=1;
- while(Echo);
- TR0=0;
- Conut();
- delayms(80);
- }
-
- }
復制代碼
0.png (8.91 KB, 下載次數: 35)
下載附件
2019-1-5 02:55 上傳
所有資料51hei提供下載:
超聲波測距.zip
(195.67 KB, 下載次數: 77)
2019-1-3 22:23 上傳
點擊文件名下載附件
程序及仿真文件 下載積分: 黑幣 -5
|