仿真原理图如下(proteus仿真工程文件可到本帖附件中下载)
单片机+车速监测+报警 程序
#include "reg51.h"
#include "lcd1602.h"
#include "ADC0832.h"
sbit beep=P2^7;//蜂鸣器
uchar sec=0;//计时
uint freq=0;//频率
uchar lim=100;
uchar hang1[]="speed:000km/h";
uchar hang2[]="limit:000km/h";
void main()
{
init_1602();//初始化LCD1602
write_string(1,0,hang1); //显示初始化
TMOD|=0X01;//选择为定时器0模式,工作方式1,仅用TR0打开启动。
//设置INT0
IT0=1;//跳变沿出发方式(下降沿)
EX0=1;//打开INT0的中断允许。
TH0=0X3C; //50ms
TL0=0Xb0;
ET0=1;//打开定时器0中断允许
EA=1;//打开总中断
TR0=1;//打开定时器
while(1);
}
void Timer0() interrupt 1 //定时器0中断
{
//定时
if(sec<20)//定时1s
sec++;
else
{
sec=0;
EX0=0;//关INT0
lim=ADC(1);
hang1[6]=freq/100+0x30;//显示速度
hang1[7]=freq%100/10+0x30;
hang1[8]=freq%10+0x30;
write_string(1,0,hang1);
hang2[6]=lim/100+0x30;//显示速度
hang2[7]=lim%100/10+0x30;
hang2[8]=lim%10+0x30;
write_string(2,0,hang2);
if(freq>lim)//报警
beep=0;
else
beep=1;
freq=0;
EX0=1;//开INT0
}
TH0=0X46; //50ms
TL0=0X2f;
}
void Int0() interrupt 0 //外部中断0的中断函数
{
freq++;
}
下载:
01车速监测报警仿真设计.7z
(93.23 KB, 下载次数: 0)
|