单片机源程序如下:
- /*
- 超声波测距原理:
- 本产品使用方法简单,一个控制口发一个10US以上的高电平,
- 就可以在接收口等待高电平输出.一有输出就可以开定时器计时,
- 当此口变为低电平时就可以读定时器的值,此时就为此次测距的时间,
- 方可算出距离.如此不断的周期测,就可以达到你移动测量的值了~~
- */
- // 操作方法一:在触发口发过20us高电平脉冲后,接收口打开高电平检测中断,一旦进入检测中断就打开定时中断和开定时器,开始计时,检测中断关闭,在定时中断里需要判断接收口是否为低电平
- #include <STC12C5A60S2.h>
- #include <string.h>
- unsigned char abc;
- sbit pulse=P2^5;
- sbit RXD2_MCU=P4^2; //trig触发信号
- 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.51hei.com/bbs/dpj-95918-1.html
|