普中51单片机自行车测速代码
时间: 2023-07-23 15:43:15 浏览: 109
51单片机学习代码-普中51单片机.zip
以下是普中51单片机自行车测速代码的参考实现:
```c
#include <reg52.h>
#include <intrins.h>
#define TRIG P2_0
#define ECHO P2_1
#define LED P1
typedef unsigned char uint8;
typedef unsigned int uint16;
sbit beep = P3^5;
uint16 distance = 0;
uint16 time = 0;
void delay(uint16 t) {
while(t--);
}
void beep_short() {
beep = 1;
delay(100);
beep = 0;
}
void beep_long() {
beep = 1;
delay(300);
beep = 0;
}
void timer0_init() {
TMOD &= 0xF0;
TMOD |= 0x01;
TH0 = 0;
TL0 = 0;
EA = 1;
ET0 = 1;
TR0 = 1;
}
void main() {
timer0_init();
while(1) {
TRIG = 1;
delay(10);
TRIG = 0;
while(!ECHO);
TR0 = 1;
while(ECHO);
TR0 = 0;
distance = (uint16)(time * 17 / 100);
if(distance > 0 && distance < 50) {
LED = 0xFF;
beep_short();
} else {
LED = 0x00;
}
}
}
void timer0() interrupt 1 {
TH0 = 0;
TL0 = 0;
time++;
}
```
这段代码使用了普中51单片机的定时器和外部中断,通过测量超声波传感器发送出去的声波的回声时间计算出距离,从而实现自行车测速。其中,TRIG 是超声波传感器的触发引脚,ECHO 是回声引脚,LED 是用来指示测速结果的 LED 灯,beep 是蜂鸣器引脚。在测得距离后,如果距离在 0 到 50 厘米之间,则 LED 灯亮起并发出短促的蜂鸣声,表示自行车速度较快。否则,LED 灯灭掉,不发出声音。
阅读全文