HC-SR04超声波测距仪 基础代码

>_<:超声波测距仪模块:
>_<:51单片机,11.0592MHz晶振,将采集数据发送到串口的基础例子:
>_<:代码:


1 /***********************************************************************************************************/
2 //HC-SR04 超声波测距模块 DEMO 程序
3 //晶振:11 。0592
4 //接线:模块TRIG接 P1.2 ECH0 接P1.1
5 //串口波特率9600
6 /***********************************************************************************************************/
7 #include
8 #include
9 #include
10
11 #define uchar unsigned char
12 #define uint unsignedint
13 #define RX P1_1
14 #define TX P1_2
15
16
17 unsigned int time=0;
18 unsigned int timer=0;
19 floatS=0;
20 bitflag =0;
21
22
23 /********************************************************/
24 void Conut(void)
25 {
26time=TH0*256+TL0;
27TH0=0;
28TL0=0;
29S=(time*1.87)/100;//算出来是CM
30if(flag==1)//超出测量
31{
32flag=0;
33printf("-----n");
34}
35printf("S=%fn",S);
36 }
37 /********************************************************/
38 void delayms(unsigned int ms)
39 {
40unsigned char i=100,j;
41for(;ms;ms--)
42{
43while(--i)
44{
45j=10;
46while(--j);
47}
48}
49 }
50 /********************************************************/
51 void zd0() interrupt 1//T0中断用来计数器溢出,超过测距范围
52 {
53flag=1;//中断溢出标志
54 }
55 /********************************************************/
56 void StartModule()//T1中断用来扫描数码管和计800MS启动模块
57 {
58TX=1;//800MS 启动一次模块
59_nop_();
【HC-SR04超声波测距仪 基础代码】60_nop_();
61_nop_();
62_nop_();
63_nop_();
64_nop_();
65_nop_();
66_nop_();
67_nop_();
68_nop_();
69_nop_();
70_nop_();
71_nop_();
72_nop_();
73_nop_();
74_nop_();
75_nop_();
76_nop_();
77_nop_();
78_nop_();
79_nop_();
80TX=0;
81 }
82 /********************************************************/
83 void main(void)
84 {
85TMOD=0x21;//设T0为方式1,GATE=1;
86SCON=0x50;
87TH1=0xFD;
88TL1=0xFD;
89TH0=0;
90TL0=0;
91TR0=1;
92ET0=1;//允许T0中断
93TR1=1;//开启定时器
94TI=1;
95
96EA=1;//开启总中断
97
98
99while(1)
100{
101StartModule();
102while(!RX);//当RX为零时等待
103TR0=1;//开启计数
104while(RX);//当RX为1计数并等待
105TR0=0;//关闭计数
106Conut();//计算
107delayms(10);//100MS
108}
109 }


    推荐阅读