1、目录1 引言:12 单片机的相关知识23 AT89C2051简介4AT89C516AT89C205164设计分析75硬件系统设计86软件设计11结束语23参考文献241 引言:众所周知,自从加入WTO以来,中国发生了翻天覆地的变化,随着经济的发展,汽车在世界上也日益普及,汽车带来的方便性确实给我们节省了不少时间,汽车一度在中国大地上掀起了购买狂潮,但是随着汽车的日益增多,却给我们社会也带来了不少问题。近年来人们有目共睹交通事故发生的频繁率,使人们的生命及健康收到了严重的威胁,因此,研究汽车防撞方面的问题显得格外重要。如何确定在何种范围内不会碰撞,如何知道汽车以何种速度行驶才不会超速?如何知道汽
2、车以最佳的状态行驶?貌似简单的问题在具体实际过程中往往会忽略,人们在使用过程中也往往追求速度与舒服,此课题的学习会让我们了解汽车防撞的原理,从而更好的应用与实际生活当中。 本课题针对汽车运行的安全性,设计了由单片机作为中央控制单元的汽车报警系统,主要涉及GSM网络汽车防盗报警、汽车倒车防撞报警、酒后驾车报警和汽车超速报警等功能。该设计将单片机的实时控制及数据处理功能与传感器的A/D转换技术相结合,充分地利用了AT89C2051的内部资源,使报警系统工作于最佳状态,从而提高系统的综合反映灵敏度,使报警系统及时准确,实现汽车多种功能的报警控制,最大限度的保护消费者的利益。所设计的报警系统对出现的危
3、急情况,能及时进行声、光、网络报警及相应的显示,提醒车主或驾驶员尽快地采取相应的措施,有效的保护自身和他人的利益和安全,尽可能地降低事故发生率。 作为大学生,我们需要明确我们研究此课题的目的与意义。我们有责任也有义务为我们社会尽自己的绵薄之力,尽管此课题还是仅停留在实际理论上,但对于我们以后的应用却意义深远。我们必须以严谨的态度对待,务实求真!2 单片机的相关知识 2.1 单片机简介 单片机全称为单片机微型计算机(Single Chip Microsoftcomputer)。从应用领域来看,单片机主要用来控制,所以又称为微控制器(Microcontroller Unit)或嵌入式控制器。单片机
4、是将计算机的基本部件微型化并集成在一块芯片上的微型计算机。2.2 单片机的发展史1 . 4位单片机 : 1975年,美国德克萨斯仪器公司首次推出4位单片机TMS-1000;此后,各个计算机公司竞相推出四位单片机。日本松下公司的MN1400系列,美国洛克威尔公司的PPS/1系列等。四位单片机的主要应用领域有:PC机的输入装置,电池充电器,运动器材,带液晶显示的音/视频产品控制器,一般家用电器的控制及遥控器,电子玩具,钟表,计算器,多功能电话等。 2 . 8位单片机: 1972年,美国Intel公司首先推出8位微处理器8008,并于1976年9月率先推出MCS-48系列单片机。在这以后,8位单片机
5、纷纷面市。例如,莫斯特克和仙童公司合作生产的3870系列,摩托罗拉公司生产的6801系列等。随着集成电路工艺水平的提高,一些高性能的8位单片机相继问世。例如,1978年摩托罗拉公司的MC6801系列及齐洛格公司的Z8系列,1979年NEC公司的UPD78XX系列。这类单片机的寻址能力达64KB,片内ROM容量达4-8KB,片内除带有并行IO口外,还有串行IO口,甚至还有AD转化器功能。8位单片机由于功能强,被广泛用于自动化装置、智能仪器仪表、智能接口、过程控制、通信、家用电器等各个领域。 3 . 16位单片机 :1983年以后,集成电路的集成度可达几十万只管/片,各系列16位单片机纷纷面市。这
6、一阶段的代表产品有1983年Intel公司推出的MCS-96系列,1987年Intel推出了80C96,美国国家半导体公司推出的HPC16040,NEC公司推出的783XX系列等。16位单片机主要用于工业控制,智能仪器仪表,便携式设备等场合。4 . 32位单片机 :20世纪80年代末推出了32位单片机,如Motorlora公司的MC683XX系列,Intel的80960系列,以及近年来流行的ARM系列单片机。32位单片机是单片机的发展趋势,随着技术的发展及开发成本和产品价格的下降。5 . 64位单片机:近年来,64位单片机在引擎控制,智能机器人,磁盘控制,语音图像通信,算法密集的实时控制场合已
7、有应用,如英国Inmos公司的Transputer T800是高性能的64位单片机。2.3 单片机的特点 1 .单片机的存储器ROM和RAM时严格区分的。ROM称为程序存储器,只存放程序,固定常数,及数据表格。RAM则为数据存储器,用作工作区及存放用户数据。2 .采用面向控制的指令系统。为满足控制需要,单片机有更强的逻辑控制能力,特别是单片机具有很强的位处理能力。3.单片机的I/O口通常时多功能的。由于单片机芯片上引脚数目有限,为了解决实际引脚数和需要的信号线的矛盾,采用了引脚功能复用的方法,引脚处于何种功能,可由指令来设置或由机器状态来区分。 图(1)AT89C51引脚图3 AT89C205
8、1简介3.1 AT89C2051的引脚图及功能特性概述AT89C2051是一个低电压,高性能CMOS 8位单片机,片内含2k bytes的可反复擦写的只读Flash程序存储器和128 bytes的随机存取数据存储器(RAM),器件采用ATMEL公司的高密度、非易失性存储技术生产,兼容标准MCS-51指令系统,片内置通用8位中央处理器和Flash存储单元,功能强大AT89C2051单片机可为您提供许多高性价比的应用场合。 AT89C2051是一个功能强大的单片机,但它只有20个引脚,15个双向输入/输出(I/O)端口,其中P1是一个完整的8位双向I/O口,两个外中断口,两个16位可编程定时计数器
9、,两个全双向串行通信口,一个模拟比较放大器。图(2) AT8951引脚图主要功能特性: 兼容MCS51指令系统 2k可反复擦写(1000次)Flash ROM 15个双向I/O口 6个中断源 两个16位可编程定时/计数器 2.7-6.V的宽工作电压范围 时钟频率0-24MHz 128x8bit内部RAM 两个外部中断源 两个串行中断 可直接驱动LED 两级加密位 低功耗睡眠功能 内置一个模拟比较放大器 可编程UARL通道 软件设置睡眠和唤醒功能AT89C2051实物图如下:图(3) 89C51实物图3.2其和89C51单片机的比较如下:AT89C51AT89C20514KB可编程Flash存储
10、器(可擦写1000次) 2KB可编程Flash存储器(可擦写1000次) 三级程序存储器保密 两级程序存储器保密 静态工作频率:0Hz-24MHz 静态工作频率:0Hz-24MHz 128字节内部RAM 128字节内部RAM 2个16位定时/计数器 2个16位定时/计数器 一个串行通讯口 一个串行通讯口 6个中断源 6个中断源 32条I/O引线 15条I/O引线 片内时种振荡器 1个片内模拟比较器 表21AT89C51和AT89C2051主要性能表 3.3 如何使用和检测89C2051单片机:检测AT89C2051可用指针式万用表电阻检测管脚(10)(接红表笔)和其他各脚之间的电阻值。图(4)
11、89C51检测电路图下面给出的是用MF47万用表Rx1k档时测出的数据:红表笔接(10)脚,黑表笔接其余各脚的电阻值:(1)一30Ok、(2)一2Ok、(3)一2Ok、(5)一1OOk、(6)一30Ok、(7)一2Ok、(8)一2Ok、(9)一2Ok、(10)一2Ok、(11)一2Ok、(12)一40k、(13)一40k、(14)-2Ok、(15)一16Ok、(16)一16Ok、(17)一2Ok、(18)一2Ok、(19)一2Ok、(20)一4Ok。本次课题设计介绍了AT89C2051单片机的性能及特点,及以其为核心低成本、高精度、微型化、数字显示的汽车防撞报警器。 该防撞报警器利用超声波及集
12、成霍尔元件实现对汽车的测距和测速,利用单片机的实时控制和数据处理功能,完成系统的控制。文章给出了报警器的硬件电路原理及软件设计。4设计分析4.1超声波测距原理超声波测距的原理是,通过不断检测超声波发射后遇到障碍物所反射的回波,从而测出发射超声波和接收到回波的时间差T,然后求出距离SCT2,其中,C为超声波波速,常温下取为344ms。声速确定后,只要测得超声波往返的时间,即可求得距离。4.2测速原理汽车车速的测量是通过霍尔集成传感器来实现的。即,将装有永久磁铁的转盘的输入轴与车轮的转轴相连,当车轮转动 时,转盘随之转动,此时,转盘上的永久磁铁会经过霍尔集成传感器,从而在霍尔集成传感器的输入端得到
13、一个磁信号,如果转盘不停转动,霍尔集成传感器便会输出转速信号。可以说,对汽车车速的测量实质上是对转速信号的频率的测量。AT89C2051中的两个16位定时计数器寄存器T0和T1,作定时器时,可计数机器周期,计数频率为振荡频率的112;作计数器时,可对外部输入引脚P34T0和P35T1上出现从1至0的变化时增1,计数频率为振荡频率的124。4.3 系统据此判本设计实现的技术指标 车用直流电源,DC12V 传感器输出的是0-5V的电压值且电压值稳定 超声波发射频率、接收频率: 49.2kHz(中心频率) 超声波收/发延时:2.38ms 单片机晶振频率:12MHZ 报警间歇时间:约2.8s 数据传送
14、方式:SMS短信、GPRS 工作温度:-20+75 相对湿度:93%(常温) 存贮温度:-40+855硬件系统设计5.1 电路图的设计该报警器由控制系统、超声波发射电路、接收电路、测速电路、报警电路、LED显示电路组成,电路原理框图见图1。 图(5) 系统原理图5.2 电路原理的分析超声波发射电路由CC7555时基电路和超声波发射探头组成。单片机AT89C2051的P17引脚控制CC7555时基电路产生40kHz的频率信号给超声波发生器,由超声波探头发射的超声波射向障碍物。利用超声波测距具有以下特点:测量灵敏度高,穿透力强,测量速度快,测量角度大,可对较大范围内的物体进行检测。超声波接收电路由
15、超声波接收探头、放大器和整形器组成。由障碍物反射回来的超声波经接收探头,变换为电脉冲信号,再由放大器、整形器放大和整形后送入到单片机AT89C2051的P32引脚。放大器宜选用有足够增益和较低噪声的宽带放大器,以保持脉冲信号尤其是前沿不发生畸变,提高测距的精度测速电路由传感器、脉冲放大器、整形器、CC7555时基信号电路、选通门组成。霍尔集成传感器将车轮转速信号变成脉冲信号输出,经放大、整形电路后送入选通门,由CC7555时基电路产生的单位时基信号控制选通门的开与闭,以控制转速信号在单位时间内通过选通门,送入单片机AT89C2051的P35引脚,控制T1计数器计数,实现了在单位时间内的计数。报
16、警电路由CC7555电路和扬声器组成。AT89C2051的P16控制CC7555电路根据测量结果,产生一定频率的信号驱动扬声器发出报警声。在扬声器发出报警声时,时基电路CC7555处于暂稳态,此时电源向电容充电,从而使CC7555结束暂稳态回复到稳定状态,输出低电平,使扬声器停止发出报警声,直到下一次测距结束产生新的报警声。LED显示电路由数码管和驱动电路组成。用两个数码管显示距离,数码管采用静态显示,由芯片MCS14495驱动显示,P14、P15分别作为驱动芯片MCS14495的锁存信号,用于控制产生的BCD(BinaryCode Decimal,二进制编码表示的十进制数)码是显示高位还是低
17、位。控制器AT89C2051主要完成程序的执行、数据的处理和对外部电路的实时控制。内部定时器T0工作在定时方式,T0在超声波发射时开始计数,当P32引脚收到回波后,停止计数,T0所计时间即为超声波往返传输时间,单片机对该数据进行处理,即可测出距离。内部定时器T1工作在计数方式,由P35引脚输入的脉冲信号控制T1计数,由T1所计数值确定汽车的转速。单片机根据所测距离和车速进行比较,判断是否驱动报警电路报警,如设定:当车速小于等于30kms时,安全距离应大于等于1m;当车速小于等于80kms时,安全距离应大于等于2m;当车速大于80kms时,安全距离应大于等于5m。采用51系列单片机中的简易型产品
18、AT89C2051作为中央处理器,选用专用配对的超声波组件,进行超声波信号与电信号的相互转换,利用超声波传感器的选频特性,对接收到的超声波信号进行幅值判断,从而达到不同距离的选择与报警的目的。其具体操作步骤为:1、接上电源,红色电源指示灯点亮,同时数码管显示0,此时系统不发送超声波信号。 2、按动距离选择按键,蜂鸣器鸣叫,同时数码管显示0到3这几个数字,当显示1、2、3档时,设计与调试时设定的距离分别表示60厘米、50厘米、40厘米,只要有物体靠近探测器,就会发出嘟、嘟、嘟的报警声。 图(6) 汽车倒车防撞告警器 由专用倒车防撞集成电路LM1812组装成超声波防撞告警器。电路由40KHz的超声
19、波振荡器、超声波接收、控制和报警电路组成。高阻抗的超声波发射头MA40ELS和40KHZ的输出谐振回路并接。接收传感头采用与发射头MA40ELS相配套的MA40ELH,其接收放大用的谐振回路与发射回路一样,谐振在40KHZ。由IC2(NE555)组成的控警声光电路发出的是断续的报警声,同时发光二极管LED发出可见的闪烁光,进行同步闪烁。该报警器的超声波发射头和接收头并排安装在汽车尾部。电路部分安装与驾驶室内。使用大约5M的带屏蔽电缆连接以防止外界的干扰,该超声波倒车防撞距离为3M左右,报警灵敏度可由RP2进行调节。5.3方案与论证: 汽车倒车防撞报警器的组成:汽车倒车防撞报警器主要由超声波发生
20、器、超声波发射电路、超声波接收电路、信号放大电路、直流控制电路、中央处理单元、数字显示电路、报警电路和距离选择电路等部分组成。发射电路发送超声波信号,当的射的信号被物体挡住时,反射回来的信号经接收器接收,进行两级放大后,再经倍压整流,形成一个直流控制电压,当这个电压值大于设定值时,表示物体离汽车的距离已小于设定距离,比较器输出低电平信号,系统据此判断出达到报警距离,驱动蜂鸣器进行报警。6软件设计本装置的控制软件要完成系统的初始化,控制触发脉冲信号的发射与接收,根据定时时间计算障碍物的距离,根据计数频率计算汽车车速,判断所测距离是否在车速所对应的安全范围内,并根据计算和判断结果产生BCD码和相应
21、频率的脉冲信号,以驱动显示电路和发声电路。实现整个系统功能的主流程图如下图 图(7) 主程序流程图6.1硬件调试: 对于本系统的设计,其难点在于40KHz信号的产生。由于超声波传感器的中心工作频率为40KHz,当偏离这个频率时,其接收器的灵敏度将明显降低,具体可以从超声波传器的特性曲线中得知。当发送40KHz的频率时,接收到的信号最强,因此距离也就最大,而当偏离时,探测距离也将缩短,这一点是本设计总的设计思路。对于产生40KHz的驱动信号,方法有多种,可以选用电感、电容振荡元件来完成驱动信号的发生器,但是其频率稳定性较差,不容易调准,因此制作成功的可能性相对较小。本设计中,选用了单片机作为信号
22、的发生电路,由于采用了频率稳定性好的晶振作为系统的时钟,因此有极高的稳定性,由此产生的驱动信号也较为稳定,当编制不同的程序时,可以得到不同的频率输出。 电路中以接收到的信号强度值作为障碍物的判断依据,因此对起控点的选择也是本设计制作成功非常关键性的一部分。由于反射回来的超声波信号的强弱与环境因素有关,因此在调试时必须非常细心,注意收集在改变距离时,实际的直流控制电压的大小,合理地选择好电压比较环节的起控点,从而达到距离小于设定值时的报警。 本设计的原理图中所标为我们实际调试好的参数,但由于电子元件都有一定的误差值,同时由于三极管的直流放大倍数也存在差异,因此实物制作中的调试非常重要。6.2软件
23、调试软件编程如下:VOUT EQU P1.0 ; 红外脉冲输出端口中断入口程序ORG 0000H LJMP STARTORG 0010H 主 程 序 START: MOV SP,#4FHMOV R0,#40H ;40H-43H为显示数据存放单元(40H为最高位) MOV R7,#0BHLOOP1: MOV R0,#00HINC R0DJNZ R7,LOOP1MOV 20H,#00H MOV TMOD,#11H ;T1为 T0为16位定时器 MOV TH0,#00H ;65毫秒初值 MOV TL0,#00HMOV TH1,#00H MOV TL1,#00H MOV P0,#0FFHMOV P1,
24、#0FFH MOV P2,#0FFH MOV P3,#0FFH MOV R4,#04H ;超声波肪冲个数控制(为赋值的一半)SETB PX0 SETB ET0SETB EASETB TR0 ;开启计数器 LOOP4:JBC TF0,DONE SJMP LOOP4DONE: MOV TL0 ,#0B0HMOV TH0, #03CHCJNE R7, #30H LOOP5RETLOOP5 :JC R7, WORDCJNE R7,#80H, LOOP6RETLOOP6: JC R7,PHILIPMOV TMOD,20HMOV TH1,0FH MOV TL1,0CH SETB ET1SETB TR1 ;
25、开启测距定时器 MOV A, P1MOV R1,ACJNE R1,#05H BLOCKRETBLOCK:JC R1, PTFO1LJMP DISPLAYPTFO1: BAOJINGPHILIP: MOV TMOD,20H MOV TH1,0FH MOV TL1,0CH SETB ET1 SETB TR1重新开启测距定时器JNB TF1, $LJMP SPIIOSPIIO: MOV A, P1MOV R1,A CJNE R1,#02H HEHERETHEHE:JC R1, INSERLJMP DISPLAYINSER: BAOJINGWORD: MOV TMOD,20H MOV TH1,0FH
26、MOV TL1,0CH SETB ET1 SETB TR1 ;重新开启测距定时器 MOV A, P1MOV R1,A CJNE R1,#01H LOOP7RETLOOP7:JC R1, LOOP8LJMP DISPLAYLOOP8: BAOJING START1: LCALL DISPLAY JBC 00H,START1 ;收到反射信号时标志位为1 CLR EA LCALL LOOP2 ;计算距离子程序 CLR EA MOV R2,#32h;测量间隔控制(约4*100=400MS) LOOP3: LCALL DISPLAY DJNZ R2,LOOP3 CLR 00H SETBET0 MOV T
27、H0,00HSETB TR1 ;重新开启测距定时器 SETB EA SJMPSTART1 中断程序*T1中断,发超声波用 ;T1中断,65毫秒中断一次INTT1: CLR EA CLR TR0 CLR EX0 MOV TH0,#00H MOV TL0,#00H MOV TH1,#00H MOV TL1,#00H SETB ET0 SETB EA SETB TR0 ;启动计数器T0,用以计INTTLL: CPL VOUT ;40KHZ NOP DJNZ R4,INTLL ; 超声波发送完毕, MOV R4,#04H LCALL DELAY_250 ;延时,避开发射的直达声波信号 SETB EX0
28、; 开启接收回波中断 RETIOUT: RETI; 外中断0,收到回波时进入PINT0:NOP JB p3.2,LOOP CLR TR0 ;关计数器 CLR EA ; CLR EX0 ; MOV 44H,TL0 ;将计数值移入处理单元 MOV 45H,TH0 ; MOV TH0,#00h MOV TL0,#00h JNB p3.2,$ SETB 00H ;接收成功标志 LOOP: RETI报警程序START:MOV DPTR,#TAB CLR P3.1 SETB P1 P1口置一做输入 MOV A,P1 CPL A ANL A,#0F0H 低四位清零 SWAP A 高低四位互换内容 MOV R
29、0,A LCALL DISP1 MOV A,P1 CPL A A取反 ANL A,#0FH 互换后低四位清零 MOV R1,A LCALL DISP2GWPD:CJNE R0,#00H,GWJ1 与0比较 CJNE R1,#00H,SWJ1 LCALL DISP1 LCALL DISP2 LCALL BJSWJ1: LCALL YSLMIN MOV R0,#09H LCALL DISP1 DEC R1 R0自动减一 LCALL DISP2GWJ1: LCALL YSLMIN DEC R0 R0自动减一 LCALL DISP1 LJMP GWPDDISP1:MOV A,R0 MOVC A,A+D
30、PTR MOV P2,A RETDISP2:MOV A,R1 MOVC A,A+DPTR 查表指令 MOV P0,A RETYSLMIN:MOV R7,#60 MOV R6,#10 MOV TMOD,#01H 运用定时器T0工作 MOV TL0,#0B0H MOV TH0,#03H 设置初值 SETB TR0 开启T0工作 LOOP:JBC TF0,DONE SJMP LOOP 未则转循环本身循环 DONE:MOV TL0,#0B0H MOV TH0,#03CH CJNE R7,#00H,SIX 与0比较 MOV R7,#60 SIX:DJNZ R6,LOOP DJNZ R7,LOOP RET
31、 BJ:MOV TMOD,#11H 用定时器T1工作 MOV TH1,0FH MOV TL1,0CH SETB TR1 启动T1工作LOOP1:JBC TF1,LOOP2 SJMP LOOP1LOOP2:MOV TH1,#0FFH MOV TL1,#0C0H CPL P3.1 SJMP LOOP1 RET TAB:DB 0C0H,0F9H,0A4H DB 0B0H,099H,092H DB 082H,0F8H,080H DB 090HRET 显示程序40H为最高位,43H为最低位,先扫描高位 DISPLAY: MOV R1,#40H; MOV R5,#7fH; PLAY: MOV A,R5 M
32、OV P0,#0FFH MOV P2,A MOV A,R1 MOV DPTR,#TAB MOVC A,A+DPTR MOV P0,A LCALL DL1MS INC R1 MOV A,R5 JNB ACC.4,ENDOUT;G RR A MOV R5,A AJMP PLAY ENDOUT: MOV P2,#0FFH MOV P0,#0FFH RET TAB: DB 18H, 7BH, 2CH, 29H, 4BH, 89H, 88H, 3BH, 08H, 09H,0FFH共阳段码表 0 1 2 3 4 56 7 8 9 不亮A-延时程序 DL1MS: PUSH 06HPUSH 07HMOV R6
33、,#14H DL1: MOV R7,#19H DL2: DJNZ R7,DL2 DJNZ R6,DL1 POP 07HPOP 06H RET 距离计算程序 (=计数值*17/1000cm) *LOOP2: PUSH ACC PHSH PSW MOV PSW, #18h MOV R3, 45H MOV R2, 44H MOV R1, #00D MOV R0, #17D LCALL MUL2BY2 MOV R3, #03H MOV R2, #0E8H LCALL DIV4BY2 MOV 40H, R4 MOV A,40H JNZ JJ0 MOV 40H,#0AH ;最高位为零,不点亮JJ0: MO
34、V A, R0 MOV R4, A MOV A, R1 MOV R5, A MOV R3, #00D MOV R2, #100D LCALL DIV4BY2 MOV 41H, R4 MOV A,41H JNZ JJ1 MOV A,40H ;次高位为0,先看最高位是否为不亮 SUBB A,#0AH JNZ JJ1 MOV 41H,#0AH ;最高位不亮,次高位也不亮JJ1: MOV A, R0 MOV R4, A MOV A, R1 MOV R5, A MOV R3, #00D MOV R2, #10D LCALL DIV4BY2 MOV 42H, R4 MOV A,42H JNZ JJ2 MO
35、V A,41H ;次次高位为0,先看次高位是否为不亮 SUBB A,#0AH JNZ JJ2 MOV 42H,#0AH ;次高位不亮,次次高位也不亮JJ2: MOV 43H, R0 POP B POP PSW POP ACC RET 6.3调试结果分析:在软件调试中,多次运用调用子程序的方法,利P1做输入,主程序在对定时器、计数器、堆栈等进行初始化后,及判断定时器溢出,如果为1,说明要求对数据进行计算处理, 多次运用取反功能,SWAP指令将累加器中高低四位的内容互换,并将低四位清零处理,T0作为计数器使用, T1用作定时发生器,当T0记完数后,即与零进行比较,即将计数器T0清零,关闭其使用。通过计数与定时的作用,测量汽车的距离与速度,从而达到汽车防撞的目的。结束语本文介绍的汽车报警器,利用单片机AT89C2051作为报警装置的控制器,能充分发挥AT89C2051的数据处理和实时控制功能,使系统工作于最佳状态,提高系统的灵敏度。该报警器基于单片机设计,从而具有体积小、使用方便的特点。若将安全距离设为05m,就可作为汽车倒车报警器,提