超速报警器设计思路Word文档下载推荐.docx
《超速报警器设计思路Word文档下载推荐.docx》由会员分享,可在线阅读,更多相关《超速报警器设计思路Word文档下载推荐.docx(29页珍藏版)》请在冰点文库上搜索。
对于本论文设计的汽车速度报警电路而言,设计的基础就是采用现代的工艺,经过计算机的处理科技,提高设计的精确度和稳定性,再扩展其性能,是报警器不仅可以精确的显示实际速度而且还要是操作简单化。
对于此,设计的方案如图2.5所示。
图2.5设计方案图
2.2超速报警器的总原理图
超速报警电路是将汽车传感器的实际车速送到传感器电路中,从而得到一个与汽车速度频率一样的信号,并把结果送到单片机中计数。
得出的数值与51单片机内部值相比较,如果比键盘输入的上限值还要大则显示汽车超速行驶,紧接着报警电路就会通过蜂鸣器进行报警。
该系统由电源电路、时钟电路、复位电路、速度显示电路、按键电路、键盘(设定报警车速值)、报警电路、霍尔传感器连接电路和控制单片机组成。
总原理图如图2.6所示。
电源电路
时钟电路
复位电路
报警电路
按键电路
霍尔传感器连接电路
显示电路
单片机
图2.6总原理图
2.3超速报警器的优点
1、只要车主超速时超速电路就会报警,从而提醒车主保证车主的人身安全。
2、超速报警器是将传感器产生的车速信号与单片机相比较。
如果超过了标注值则可判断汽车超速,蜂鸣器报警提示。
3、超速报警器的设计将电源电路、时钟电路、复位电路、速度显示电路、按键电路、报警电路、霍尔传感器连接电路等电路组合起来组成超速报警器。
第3章超速报警器硬件设计
3.1硬件概述
3.1.1单片机的基本组成
1.内部程序存储器(ROM)
ROM只是一个通称,实际上程序存储器通常分ROM、EEPEOM和FLASHROM即是用来存放程序所对应的二进制代码的地方,因此称为程序存储器。
一旦程序固化到程序存储器后是只读部写的,因此程序存储器为READ-ONLYMEMORY.
2.中央处理器(CPU)
程序被固化到单片机后,系统上电,如果提供给单片机的电源系统、复位信号、时钟信号均满足要求,则单片机内最核心的部件CPU开始工作。
工作的基本过程:
中央处理器的控制器从ROM中将代码取出并分析该代码,根据代码对应的指令执行。
如果从ROM中取出“C2H90H”,则CPU分析后就会向P1.0输出低电平。
执行完一条指令紧接着取下一个代码,如此一条一条下去。
3.内部数据存储器(内部RAM)
51单片机的芯片8155中有256个ROM,但后面128个被专用寄存器强占了,给用户使用的只有前面128个单元。
3.1.2AT89C51引脚图
引脚图如图3.1所示。
图3.1引脚图
VCC:
供电电压。
GND:
接地。
P0口:
电路中包含1个数据输出存储器、2个三态数据输入缓冲器、1个数据输出的驱动电路和1个输出控制电路。
当对P0口进行写操作是,由锁存器和驱动电路构成数据输出通路。
由于通路中已有输出锁存器,因此数据输出时可以与外设直接连接,而不需要再加数据锁存电路。
考虑到P0口既可以作为通用I/O口进行数据的输入输出,也可以作为单片机系统的地址/数据线使用。
为此在P0口的电路中有一个多路转接电路MUX。
在控制信号的作用下,多路转接电路可以分为接通锁存器输出或地址/数据线。
当做通用的I/O口使用时,内部控制信号发出低电平,封锁与门将输出驱动电路的T1FET截止,同时使多路转接电路MUX接通锁存器的输出通路。
当P0口作为输出口使用时,内部的写脉冲加在D触发器的CP端,数据写入存储器,并向端口引脚输出。
而当P0口作为输入口使用时,数据信号则直接从引脚通过输入三态缓冲器进入内部总线。
P1口:
因为P1口通常是I/0口使用的,所以在电路结构上与P0口有一些不同之处。
首先它再也不需要多路转接电路MUX;
其次是电路的内部有上拉电阻,与场效应管共同组成输出驱动电路。
因此P1口作为输出口使用时,无须再外接上拉电阻。
当P1口作为输入口使用时,同样也需要先向其锁存器写“1”,使输出驱动电路的FET截止。
P2口:
P2口电路中比P1口多了一个多路转接电路MUX,这正好与P0口一样。
P2口可以作为通用I/O口使用。
这时多路转接开关接向锁存器Q端。
但通常情况下,P2口也可以作为系统扩展的高8位地址线使用,此时多路转接开头应接到“地址”方向。
P3口:
P3口的特点是在于为适应引脚信号第二功能的需要,增加了第二功能控制逻辑。
由于第二功能信号有输入和输出两类,因此分两种情况说明。
对于第二功能为输出的信号引脚,当作为I/O使用时,第二功能信号引线应保持高电平,与非门开通,以维持从锁存器到输出端数据输出通路的畅通。
当输出第二功能信号时,该位的锁存器应置“1”,使与非门对第二功能信号的输出是畅通的,从而实现第二功能信号的输出。
对于第二功能为输入的信号引脚,在口线的输入通路上增加了一个缓冲器,输入的第二功能信号就从这个缓冲器的输出端取得。
而作为I/O使用的数据输入,仍取自三态缓冲器的输出端。
不管是作为输入口还是第二功能信号输入,输出电路中的锁存器输出和第二功能输出信号线都应该保持高电平。
表3.1P3口第二功能
端口引脚
第二功能
P3.0
RXD(串行输入口)
P3.1
TXD(串行输出口)
P3.2
(外中断0)
P3.3
(外中断1)
P3.4
T0(定时/计数器0)
P3.5
T1(定时/计数器1)
P3.6
(外部数据存储器写选通)
P3.7
(外部数据存储器读选通)
3.1.3AT89C51单片机
AT89C51是由美国的一家公司发明的,它是一个高性能、低电压的八位单片机,芯片内有4K字节的只读程序存储器PEOM和128字节的随机数据存储器ROM,AT89C51采用了美国公司高科技的生产技术,可以兼容51单片机的指令系统,芯片是用八位CPU和FLASH存储单元。
AT89C51单片机可以运用在许多高性价比的场合,还可以灵活运用。
3.1.4AT89C51主要性能参数
1.可以和51单片机指令系统完全兼容;
2.4K字节可以通过FLASH存储器任意改写;
3.频率范围为0Hz---24MHz;
4.程序存储器可以加密;
5.内部存储器有128*8个字节;
6.输入输出接口有32个;
7.2个十六位计数/定时器;
8.中断源有六个;
9.具有掉电和低功率模式。
3.1.5AT89C51功能特性概述
AT89C51芯片具有以下几种功能:
4K字节可以通过FLASH存储器任意改写,内部存储器有128*8个字节,输入输出接口有32个,2个十六位计数/定时器,1个全双工串行通信口。
即使空闲方式终止中央处理器工作,内部存储器、定时器、计数器还可以工作。
掉电模式会自动保存内部存储器的功能,但是振荡器不工作直到下一个硬件复位。
3.1.6空闲节电模式
AT89C51有空闲模式和掉电模式两种省电模式。
这两种模式是控制电源控制寄存器PCON中的PCON.1HEPCON.0两个位来实现的。
掉电模式是PD,当PD=1时,将会把掉电模式和单片机模式同时激活,当PD和IOL同时为1,先激活掉电模式。
在空闲模式中,中央处理器会保持睡眠状态,并且芯片内所有外部设备保持激活状态,这种方式是软件产生的。
此刻,芯片中的内部存储器和所有的寄存器中的内容会保持不变。
任何中断请求和硬件复位都可以把空闲模式终止。
终止空闲工作模式的方法有两种,第一种是只要任何一条中断程序运行,PCON.0就会被硬件清理,从而终止空闲模式。
程序会先响应中断,进入到中断程序后,会将中断程序执行完并紧跟着中断返回指令,下一条要执行的指令就是进入空闲模式指令后面的一条指令。
第二种方式是通过硬件复位时空闲模式终止。
需要大家注意的是:
当有复位信号来终止空闲模式时,中央处理器常常从激活空闲模式指令的下一条模式开始执行程序,要把内部的复位操作完成,复位脉冲要保持24个机器周期有效,在这里,内部程序禁止中央处理器访问内部存储器,但可以访问别的端口。
激活空闲模式的指令后面一条指令不能是存储器的写入指令,因为这样做可能会使端口产生意外的写入。
3.1.7掉电模式
系统进入掉电模式中振荡器会终止工作,进入掉电模式的最后一条被执行的指令。
芯片中的内部存储器和功能寄存器的内容会在终止掉电模式之前冻结。
只有硬件复位后才能推出掉电模式,复位后将会重新设定功能寄存器中的内容但内部存储器中的内容不会改变,在电源没有恢复到正常电平前,复位是无效的,而且还要给予振荡器重启到正常工作的时间。
表3.2空闲和掉电模式外部引脚状态表
模式
程序存储器
ALE
P0
P1
P2
P3
空闲模式
内部
1
数据
外部
浮空
地址
掉电模式
AT89C51可以与51单片机室外指令和输出管相互配合,可以将多功能八位中央处理器和存储器组合到同一个芯片中去,可以进行一千次的修改数据循环,数据可以保留十年。
它可以向许多控制系统提供性能稳定且性价比搞得方案。
因此,在设计和制作电路中经常会用到AT89C51芯片。
电路由AT89C51的18,19脚的时钟端(XTALl及XTAL2)以及12MHz晶振X1、电容C1,C2组成,采用片内振荡方式。
复位电路采用简易的上电复位电路,主要由电阻R17,电容C3组成,分别接至AT89C51的RST复位输入端。
3.1.8时钟XTAL1和XTAL2
XTAL1和XTAL2用于产生单片机工作所需要的时钟。
单片机是一个复杂的时序电路,要使用CPU和各功能部件协调工作,必须要有一个统一的时钟。
通常,有两种产生时钟的连接方式,一种是使用芯片内部时钟震荡电路产生时钟,另一种是在片外震荡处理好的时钟直接接入片内。
内部振荡电路如图3.2所示。
外部震荡电路如图3.3所示
图3.2内部震荡电路图3.3外部振荡电路
3.2霍尔传感器连接电路
霍尔传感传感器是由著名的美国地质学家Hall
James发明的。
霍尔传感器的功能属于电磁效应的一种,这种功能是霍尔在18世纪研究导电机时不经意间发现的。
他发现虽然导体、半导体等也能实现这样的功能,但远没有霍尔元件功能强。
这项技术的发现时检测行业、工业方面有了巨大的突破。
类似半导体材料的导电性能、载流子的性能的判断都可以用霍尔效应来一一实现。
霍尔传感器图片和管脚图如图3.4所示。
图3.4霍尔传感器图片和管脚图
在不导磁的圆材料最外面放上一块带磁的钢材料,把霍尔传感器放在不导磁圆材料的周围任意地方。
只要圆盘转一圈,传感器就会产生一个脉冲。
因此利用圆盘转动的速度单片机就可以测出传感器产生脉冲的频率了。
测速示意图如图3.5所示。
图3.5测速示意图
3.3按键电路
按键是由四个开关和四个上拉电阻组成,用到了8051单片机的BTO、BT1、BT2、BT3四个管脚,四个开关分别用来速度设置、速度提升、速度下降和速度的确定,对四个开关进行操作用户可以对速度的最大值进行设定,同时还可以对速度进行调整,从而驾驶员可以根据地方的不同设置不同的速度,电路设计的灵活性非常强。
按键电路如图3.6所示。
图3.6按键电路图
3.4显示电路
显示电路是用MAX7219芯片来实现的,MAX7219是一种用来串行输入或串行输出的显示驱动器,它是共阴极显示的。
每一个芯片可以控制八个七段带有小数点的共阴极发光数码管。
下图中从A到G是发光二极管七段显示器的驱动端,SEGDP是用来控制发光二极管的小数点的。
DP是显示器七段小数点的IO,大小一般为40mA上下,若要调整可用软件进行,关闭时要接地。
DIG7到DIG0是八位数值驱动线。
电流是从发光二极管的共阴极吸入的,从而得到显示器的为驱动线,最大值可以到达500mA左右,关闭时接电源。
显示电路连接图如图3.7所示。
图3.7显示电路连接图
3.5报警电路
报警电路由两种,一种为声音报警,另一种为灯光报警。
这两种电路对大多数人人来说都可以接受。
声音报警电路由8051单片机、2个1K的电阻,一个晶体三极管和一个蜂鸣器组成。
声音报警电路如图3.8所示。
图3.8声音报警电路图
而灯光报警电路是由两个发光二极管D1、D2构成。
用这样的方法来提示司机进行减速从而使交通事故发生的次数减少。
灯管报警电路图如图3.9所示。
图3.9灯管报警电路图
3.6主控模块
本次设计是利用MCS—51系列单片机中的8051作为中心的。
因为8051的抗干扰性能极强,在干扰很大的场合都能工作。
8051中央处理器的频率是12MHZ,对于计数脉冲可以很快的进行处理。
8051的I/O共有三十二根线组成,它可以连接发光二极管显示器,传感器,存储器等。
8051使用的电压很低从而能耗也就低,这样只要使用干电池对它供电就行了。
但是8051也有它的缺点,他只能存储256B的数据,这样你可以利用外界存储器芯片来弥补它的不足。
8051最小应用系统电路如图3.10所示。
图3.108051最小应用系统
3.7MAX7219芯片
MAX7219是一种串行I/O共阴极发光二极管显示驱动器。
MAX7219有扫描电路,一般扫描电路会单独的进行工作除了要把显示的数据进行更新外,这样做可以节约时间和剩余用量的空间。
MAX7219芯片中有BCD译码器、驱动器、扫描电路、8*8的数据存储器和寄存器。
设计单片机的指令可以控制MAX7219芯片,从而它的工作方式可以改变。
MAX7219工作图如图3.11所示。
图3.11MAX7219工作图
上图主要是用来说明DIN、CLK、LOAD这三个之间是怎么工作的。
其中DIN是数据输入端,CLK和LOAD就是相当于桥梁的作用。
CLK的下降沿触发是无效的,再看CLK的上升沿部分,二进制数据已经存到了CLK的里面,之后又是下降沿又是无效的,紧接着上升沿部分,数据有存到了CLK的内部,就这样一直工作直到16个周期全部完成。
在这个过程中LOAD一直处于低电平的状态下,只要这16个二进制数工作完它就会变到高电平状态中去。
第4章超速报警器软件设计
4.1程序流程图
汽车超速报警器的总体流程图如图所示。
软件编程采用C语言,用单片机的T1作为定时器,设定定时时间为1S。
由于单片机最大允许时间只有65S,需扩展定时时间。
一般有硬件扩展和软件扩展两种方式,本文采用软件扩展方式。
设T0定时时间为50ms,定时时间一到,溢出中断,在中断服务程序中,对中断次数寄存器加1,重复定时中断20次,时间为1s。
1s定时时间到,读取定时器T1(P3.5引脚)输入的脉冲数,为实时车速的频率值。
将该频率值与单片机内部设定值比较,判定是否超速。
程序流程图如图4.1所示。
图4.1程序流程图
软件主要是由主程序、按键程序、中断程序、发光二级管显示程序、声音或灯管报警程序组成。
硬件始化、子程序的调用还有显示、报警等性能是由主程序来完成的。
数据处理程序是用来,监测汽车行驶的速度是为了计算出车辆的时速,从而产生数据告知司机。
参数输入是否得当是由按键程序来实现的。
车辆超速行驶会发出报警信号这是由报警程序来完成的。
显示程序主要是显示车主当前开车的速度,标准最大速度,是由发光二极管进行显示。
主程序清单:
main()
{
inti=0;
floatsum=0;
intflag=0;
unsignedlonginta;
chartemp[16];
//定义字符显示缓冲数组
Init_Timer0();
//初始化定时器0
Init_Timer1();
//初始化定时器1
Init_zhongduan();
//初始化外部中断0和1
LED_Init();
//初始化液晶屏
DelayMs(10);
//延时用于稳定,可以去掉
LED_Clear();
//清屏
while
(1)
{
keyscan();
sprintf(temp,"
mode:
%dlimit:
%d"
mode,speed_limit);
LED_Write_String(0,0,temp);
//显示到液晶第1行
pwm(time);
if(OVERFLOWFLAG)//检测溢出标志,溢出表明频率过高,显示溢出信息
{
OVERFLOWFLAG=0;
//标志清零
LED_Write_String(0,1,"
overflow>
655KHz"
);
}
if(TIMERFLAG)//定时100ms到,做数据处理(每100ms处理一次数据)
i++;
a=TL0+TH0*256;
//读取计数值
a=a*10;
//实际值乘以10相当于做了变换1秒钟转了a圈
a=a/4;
//因为转盘上面有4个孔除以4表示实际转的圈数
if(flag==0)//这句话在while循环中只运行一次
{
sprintf(temp,"
speed:
%06.0fr/s"
(float)a);
LED_Write_String(0,1,temp);
//显示到液晶第二行
flag=1;
}
TR0=1;
//2个定时器打开
TR1=1;
TH0=0;
//100ms过后使TH0和TL0的值为0,令计数器初值为0
TL0=0;
TIMERFLAG=0;
//关闭计时计数标志
sum=sum+a;
if(i==2)//循环2次目的是为了使显示的更清楚,消除显示跳变的现象
a=sum/2.0;
i=0;
sum=0;
if(a>
speed_limit)
{
buzzer=0;
time=time-5;
}
else
buzzer=1;
sprintf(temp,"
}
4.2脉冲计数程序设计
AT89C51单片机内有T0和T1两个加法型16位定时器,在计数时,对P3.4和P3.5引脚上输入外部信号进行计数。
程序流程图如图4.2所示。
图4.2脉冲计数程序流程图
程序清单:
a、定时器T0初始化:
voidInit_Timer0(void)
TMOD|=0x01|0x04;
//使用模式1,16位计数器,
TH0=0x00;
//给定初值
TL0=0x00;
EA=1;
//总中断打开
ET0=1;
//定时器中断打开
TR0=1;
//定时器0开关打开
}
b、定时器T1初始化:
voidInit_Timer1(void)
TMOD|=0x10;
//使用模式1,使用"
|"
符号在使用多个定时器时不受影响
TH1=HIGH;
//给定初值,使用定时器最大值从0开始计数一直到65535溢出
TL1=LOW;
ET1=1;
TR1=1;
//定时器开关打开
c、定时器T0和T1中断子程序:
voidTimer0_isr(void)interrupt1
TH0=00;
//重新给定初值
TL0=00;
OVERFLOWFLAG=1;
//溢出标志
voidTimer1_isr(void)interrupt3
staticunsignedchari;
//重新赋值10ms
i++;
if(i==10)//100ms时间单位,得100ms脉冲个数*10就是1s中脉冲个数,