單片機源程序如下:
- /*
- 超聲波測距原理:
- 本產(chǎn)品使用方法簡單,一個控制口發(fā)一個10US以上的高電平,
- 就可以在接收口等待高電平輸出.一有輸出就可以開定時器計時,
- 當此口變?yōu)榈碗娖綍r就可以讀定時器的值,此時就為此次測距的時間,
- 方可算出距離.如此不斷的周期測,就可以達到你移動測量的值了~~
- */
- // 操作方法一:在觸發(fā)口發(fā)過20us高電平脈沖后,接收口打開高電平檢測中斷,一旦進入檢測中斷就打開定時中斷和開定時器,開始計時,檢測中斷關閉,在定時中斷里需要判斷接收口是否為低電平
- #include <STC12C5A60S2.h>
- #include <string.h>
- unsigned char abc;
- sbit pulse=P2^5;
- sbit RXD2_MCU=P4^2; //trig觸發(fā)信號
- sbit TXD2_MCU=P4^3; //echo回應信號
- void delay(void) //m給定多少,大致就是多少us延遲
- {
- unsigned int m;
- for(m=1;m<=200;m++)
- {;}
- }
- void delay2s(void) //m給定多少,大致就是多少us延遲
- {
- unsigned int m,n,k;
- for(k=1;k<=40;k++)
- for(m=1;m<=200;m++)
- for(n=1;n<=200;n++);
- }
- void delay100us(void) //m給定多少,大致就是多少us延遲
- {
- unsigned int m;
- for(m=1;m<=10;m++)
- {;}
- }
- void main(void)
- {
- RXD2_MCU=0;
- delay2s();
- delay2s();
- delay2s();
- delay2s();
- delay2s();
- RXD2_MCU=1;
- delay100us();
- RXD2_MCU=0;
-
- while(1)
- {
- #if 0
- pulse=1;
- delay();
- pulse=0;
- delay();
- #endif
- }
- }
復制代碼
所有資料51hei提供下載:
http://www.zg4o1577.cn/bbs/dpj-95918-1.html
|