基于单片机的汽车转向灯设计.docx
《基于单片机的汽车转向灯设计.docx》由会员分享,可在线阅读,更多相关《基于单片机的汽车转向灯设计.docx(11页珍藏版)》请在冰豆网上搜索。
基于单片机的汽车转向灯设计
基于单片机的汽车转向灯设计
摘要
本设计采用单片机控制,在控制系统中,选择了6个开关、1个AT89C51单片机、6只发光二极管(用来模拟信号灯发光)。
其中AT89C51单片机做为控制核心,当6个开关的状态发生改变后,单片机检测到开关信号后就通过软件输出相关信号,来驱动6个汽车信号灯根据开关的相应状态闪烁或长亮。
信号灯由发光二极管模拟替代。
通过这些,本控制系统能够很好的达到控制汽车转弯信号灯的目的,同时,所采用的单片机及其他元件的成本不高,还能很好的达到控制要求,不会增加汽车的制造成本。
对生产厂家和消费者来说是非常好的选择。
关键词:
单片机汽车转弯信号灯AT89C51
Abstract
Thisdesignusesthemicrocontrollerinthecontrolsystem,selectthesixswitches,AT89C51microcontroller,eightlight-emittingdiode(LEDlightstosimulate).AT89C51microcontrollerasacontrolcenterwhich,whenthesixswitchchangesstate,themicrocontrollerdetectsthesignalafterswitchingtheoutputcorrelationsignalthroughsoftware,todrivetheeightcarlightsflashaccordingtothestatecorrespondingtotheswitchorlonglight.Analogsignalfromthelight-emittingdiodesinstead.Throughthese,thecontrolsystemcanturnagoodsignaltocontrolthecar'spurpose,thesametime,themicrocontrollerandothercomponentsusedinthecostisnothigh,butalsogoodtocontroldemandwillnotincreasethemanufacturingcostofthecar.Onmanufacturersandconsumersisaverygoodchoice.
Keywords:
SCMAutomotiveturnsignallightsAT89C51
1引言
在当今社会,科技与工业高度发达,汽车的数量逐年增多,街上的每一个角落都充斥它们的身影,但凡事都有两面性,汽车在方便了人们的生活也对交通方面和人身安全构成了威胁,为此我们应该采取有效的方法来减少事故的发生概率和提高车辆的运行效率。
因此汽车转向灯便成为每一辆汽车必不可少的装置设备。
汽车转向灯是行车安全的必备条件,除了具有照明作用,对行人和其他车辆还具有转向、会车、刹车等警示作用。
传统的汽车转向灯由于自身条件的限制,可靠性低,定时时间不够精确,使用寿命较短,且继电器受温度影响较大,对于温度变化较大的环境往往不能满足要求。
所以本文中汽车转向灯设计是用单片机来实现的,单片机控制系统不仅可避免传统的缺点,还具有功能强、使用灵活、可靠性高、成本低、体积小、面向控制、具有智能化功能等优点。
2设计方案及原理
本设计要求在汽车进行左转弯、右转弯、刹车、合紧急开关、停靠、倒车等操作时,实现对各种信号指示灯的控制。
根据设计要求,制定总体的设计思想。
汽车转向灯电路是由单片机AT89C51、复位、警报、LED显示电路、按键电路等几部分构成。
系统设计
以单片机AT89C51为核心芯片通过控制LED的显示来模拟汽车转向灯,即用开关1-6的闭合分别模拟刹车、紧急、停靠、左转、右转、倒车操作;用LED发光二极管D1-D8的亮灭显示来模拟汽车的故障指示灯、左头灯、右头灯、左转弯信号灯、右转弯信号灯、左尾灯、右尾灯、倒车灯的显示情况。
转向时,规定左右尾灯、左右头灯仪表板上2个指示灯相应地发出闪烁信号;应急开关合上时,6个信号灯都应闪烁;汽车刹车时,2个尾灯发出稳定亮信号;如正当转向时刹车,转向时原应闪烁的信号仍应闪烁。
它们都是低频闪烁,任何上述之外的开关组合,都将出现故障指示灯闪烁,闪烁频率为高频且发出警报声,按下相应复位键警报声与指示灯解除,之后可及时排查电路问题。
系统组成框图如图1所示。
图1系统组成框图
单片机系统的工作原理
开关状态检测
开关状态检测,对AT89C51来说是输入关系,可轮流检测每个开关状态,以每个开关的状态让相应的发光二极管指示;也可以一次性检测六路开关状态,即用MOVA,P2指令一次性把P2端口的状态全部读入,取低6位的状态来指示,根据此选择分支。
输出控制
发光二极管由D1-D8来指示,设计用指令MOVP1,#111XXXXXB方法来实现选择。
定时器
信号的控制是定时器得以实现的结果。
在汽车转弯灯的控制中主要利用AT89C51单片机的可编程定时器来实现灯闪烁的延时,即通过对系统时钟脉冲的计数来实现的,计数值由程序设定。
利用定时器,产生高频闪烁功能。
循环系统
通过语句的反复调用和循环来达到主程序循环,并产生低频闪烁功能。
汽车转向灯控制
在汽车转弯、停靠或应急状态下,外部信号灯和仪表板它们指示灯的闪烁频率为低频信号。
当发生错误时,信号灯频率闪烁此时为高频信号。
汽车转弯灯设计6个按键控制信号灯的转向、停靠、应急等。
按键安排为:
1键为刹车开关;2键为紧急开关;3键为停靠开关;4键为左转弯开关;5键为右转弯开关;6键为倒车开关。
汽车转向灯控制系统的硬件设计
按键电路
本设计选用拨动开关,单片机引脚作为输入使用,首先置“1”。
当键没有被按下时,单片机引脚上为高电平;而当键被按下去后,引脚接地,单片机引脚上为低电平。
是否有键按下,以及被按下的是哪一个可以通过单片机引脚电平显示出来。
图1是电路板上按键的接法,6个按键分别接到、、、、和。
对于这种接法,各程序可以采用不断查询的方法,检测是否有键闭合,判断键号并转入相应的键处理。
其电路图如图2所示。
图2按键控制电路
蜂鸣器电路
当控制系统系统进入错误分支时,单片机产生信号,警报灯闪亮,信号经过放大器放大后蜂鸣器运作,发出警报声,警示他人系统出错。
之后按下复位按钮,可将单片机发出的高电平信号钳制在低电平,使警报声和警报灯解除,之后工作人员可及时检查系统的错误原因。
其电路图如图3所示。
图3蜂鸣器电路
指示灯电路
芯片ULN2803有功率放大的驱动和反相的功能。
当单片机发出高电平时,通过ULN2803反相器变为低电平,使指示灯发亮。
其电路图如图4所示。
图4指示灯电路
汽车转向灯总电路原理图
汽车转向灯原理图如附录一所示。
汽车转向灯控制系统的软件设计
程序主旨思想
主程序中完成对汽车转向灯控制系统的初始化工作,判断是否有键被按下,当开关没有动作时无输出,调用延时程序,当判断有开关被按下时,通过逐位比较判断进入各分支,其中也在各分支中调用了延时程序和定时器,以使LED在不同的分支以相应的频率闪烁。
=刹车;=紧急;=停靠;=左转;=右转;=倒车。
键值是根据P2的状态来确定的。
例:
P2=00111110,表明刹车键按下,它的键值是3EH(只看后面六位)。
汽车转向灯设计程序清单如附录二所示。
指示灯电路流程图
流程图主要为选择分支和判断分支。
汽车转向灯流程图如附录三所示。
3仿真结果
操作说明如下:
按1刹车键,D6、D7相应信号灯亮;按2紧急键,D2、D3、D4、D5、D6、D7信号灯闪烁;按3停靠键,D2、D3、D6、D7闪烁;按4左转弯键,D2、D4、D6闪烁;按5右转弯键,D3、D5、D7闪烁;按6倒车键,D8闪烁;按1刹车、2紧急键,D2、D3、D4、D5闪烁;D6、D7亮;按4左转弯、1刹车键,D2、D4、D7闪烁;D6亮;按5右转弯、1刹车键,D3、D5、D6闪烁;D7亮;按4左转弯、1刹车、2紧急键,D2、D3、D4、D5、D7闪烁;D6亮;按5右转弯、1刹车、2紧急键,D2、D3、D5、D6、D8闪烁,D7亮。
除上述情况以外的其他操作,发生错误,蜂鸣器响,D1闪烁,按复位键停止。
以刹车状态仿真为例如附录四所示。
4总结
我本次课程设计的题目为“汽车转向灯”,选题之后我从网上查阅了相关资料,参考了许多前辈的设计,体会了其中的思想。
最终按着老师的要求设计出相关控制电路和程序。
在设计的过程中也遇到了很多的问题。
首先是在程序的设计上,在延时程序中为了到达预期的闪烁频率测试修改了多次,花了很长时间,最终采取定时器和指令循环两种延时方式最终实现了LED以分别以高频和低频闪烁。
在硬件方面我在基本功能的基础上加上了警报功能,复习了模电与数电的知识。
这次课设Visio、Proteus、Keil等一系列软件,加强了自己的操作水平。
总而言之,通过这次课设,我不仅进一步熟悉掌握了单片机和其他电路方面的知识,同时跟老师和同学学到的很多知识也使我受益匪浅。
参考文献
[1]王思明.单片机原理及应用系统设计[M].北京:
科学出版社,2012.
[2]封志存.模拟电子技术[M].兰州:
兰州大学出版社,2003.
[3]李积英.数字电子技术[M].北京:
中国电力出版社,2011.
附录一汽车转向灯总电路图
附录二汽车转向灯设计程序清单
ORG0000H
AJMPSTART1
ORG0030H
SAMEEQU4EH
START1:
MOVP1,#00H;无输入时输出
START:
MOVA,P2;读P2口数据
ANLA,#3FH;取P2口低6位数据
CJNEA,#3FH,SHIY;对P2口低6位数据判断
AJMPSTART1
SHIY:
MOVSAME,A
LCALLYS;调用延时程序
MOVA,P2;读P2口数据
ANLA,#3FH;取P2口低6位数据
CJNEA,#3FH,SHIY1;对P2口低6位数据判断
AJMPSTART1;开关无动作时无输出
SHIY1:
CJNEA,SAME,START1
CJNEA,#37H,NEXT1;=0时进入左转弯分支
AJMPLEFT
NEXT1:
CJNEA,#2FH,NEXT2;=0时进入右转弯分支
AJMPRIGHT
NEXT2:
CJNEA,#3DH,NEXT3;=0时进入紧急分支
AJMPEARGE
NEXT3:
CJNEA,#3EH,NEXT4;=0时进入刹车分支
AJMPBRAKE
NEXT4:
CJNEA,#36H,NEXT5;==0时进入左转弯刹车分支
AJMPLEBR
NEXT5:
CJNEA,#2EH,NEXT6;==0时进入右转弯刹车分支
AJMPRIBR
NEXT6:
CJNEA,#3CH,NEXT7;==0时进入紧急刹车分支?
AJMPBRER
NEXT7:
CJNEA,#34H,NEXT8;===0时进入左转紧急刹车分支
AJMPLBE
NEXT8:
CJNEA,#2CH,NEXT9;===0时进入右转紧急刹车分支
AJMPRBE
NEXT9:
CJNEA,#3BH,NEXT10;=0时进入停靠分支
AJMPSTOP
NEXT10:
CJNEA,#1FH,NEXT11;=0时启动倒车
AJMPBACK
NEXT11:
AJMPERROR;其他情况进入错误分支
LEFT:
MOVP1,#2AH;左转弯分支
LCALLY1s
MOVP1,#00H
LCALLY1s
AJMPSTART
RIGHT:
MOVP1,#54H;右转弯分支
LCALLY1s
MOVP1,#00H
LCALLY1s
AJMPSTART
EARGE:
MOVP1,#7EH;紧急分支
LCALLY1s
MOVP1,#00H
LCALLY1s
AJMPSTART
BRAKE:
MOVP1,#60H;刹车分支
AJMPSTART
LEBR:
MOVP1,#6AH;左转弯刹车分支
LCALLY1s
MOVP1,#20H
LCALLY1s
AJMPSTART
RIBR:
MOVP1,#74H;右转弯刹车分支
LCALLY1s
MOVP1,#40H
LCALLY1s
AJMPSTART
BRER:
MOVP1,#7EH;紧急刹车分支
LCALLY1s
MOVP1,#60H
LCALLY1s
AJMPSTART
LBE:
MOVP1,#7EH;左转紧急刹车分支
LCALLY1s
MOVP1,#20H
LCALLY1s
AJMPSTART
RBE:
MOVP1,#7EH;右转紧急刹车分支
LCALLY1s
MOVP1,#40H
LCALLY1s
AJMPSTART
STOP:
MOVP1,#66H;停靠分支
LCALLY1s
MOVP1,#00H
LCALLY1s
AJMPSTART
BACK:
MOVP1,#80H;倒车分支
LCALLY1s
MOVP1,#00H
LCALLY1s
AJMPSTART
ERROR:
MOVP1,#01H;错误分支
LCALLY100ms
MOVP1,#00H
LCALLY100ms
AJMPSTART
YS:
MOVR7,#20H;延时
YS0:
MOVR6,#0FFH
YS1:
DJNZR6,YS1
DJNZR7,YS0
RET
Y1s:
MOVR7,#04H;循环语句延时
Y1s1:
MOVR6,#0FFH
Y1s2:
MOVR5,#0FFH
DJNZR5,$
DJNZR6,Y1s2
DJNZR7,Y1s1
RET
Y100ms:
MOVTMOD,#01H;定时器延时
MOVTH1,#00H
MOVTL1,#00H
MOVIE,#00H
SETBTR1
Y100ms1:
JBCTF1,Y100ms2
AJMPY100ms1
Y100ms2:
CLRTR1
RET
END
附录三主程序流程图
附录四汽车转向灯仿真图