汽车尾灯控制电路设计论文C语言带仿真Word下载.docx
《汽车尾灯控制电路设计论文C语言带仿真Word下载.docx》由会员分享,可在线阅读,更多相关《汽车尾灯控制电路设计论文C语言带仿真Word下载.docx(23页珍藏版)》请在冰豆网上搜索。
参考文献21
致谢22
汽车尾灯控制电路
摘要
本课题介绍了一种新型简便的基于单片机的汽车尾灯控制电路的设计方法,本设计主要解决如何更加灵活的汽车尾灯控制器进行控制,左转,右转和急刹车信息等。
通过设计汽车尾灯显示控制电路,能很好的综合运用我们所学到的单片机,C语言,模拟电路知识,熟悉电子电路设计的基本方法。
有多种方法来设计汽车尾灯控制电路,主要是运用单片机的相关知识用硬件来设计制作一个16位汽车尾灯显示控制电路的。
它的特点是电路简单,制作方便,容易操作,可反复擦写,性能可靠。
本设计主要由四部分组成,包括按键电路,LED灯电路,驱动电路,复位电路。
本文介绍了一种以STC89C52单片机为核心的控制电路。
该电路以发光二极管LED灯为显示电路。
汽车的尾灯是其运行方式的最直接表示方式,令行人或其他车辆清晰明白它将要发生的动态变化。
从而避免交通事故的发生。
设计此电路要求严格符合交通规则,尾灯闪亮或熄灭准确,才不会让行人或其他车辆产生误解。
目前在国内外,整个社会的趋势都是低能耗,环保,高效为主题的。
所以LED尾灯是发展的趋势,而且现在部分高档车已经开始配置。
【关键词】发光二极管单片机设计程序
Cartaillightcontrolcircuit
Abstract
Thisissueintroducesanewtypeofsimplemicrocontroller-basedautomotivetaillampcontrolcircuitdesign,thedesignofthemainsolutiontoamoreflexiblecontrollertocontrolthecartaillights,turnleft,turnrightandbrakehardinformation.Throughthedesignofautomobiletaillightsdisplaycontrolcircuit,theuseofwellintegratedsinglechipwehavelearned,Clanguage,analogcircuit,becomefamiliarwiththebasicmethodsofelectroniccircuitdesign.Therearemanywaystodesignacartaillightcontrolcircuit,primarilywiththeuseofmicrocomputerhardwaredesignknowledgetoproducea16-bitautomotivetaillightdisplaycontrolcircuit.Itischaracterizedbysimplecircuit,madeeasytooperate,canberepeatedlyerasedandreliableperformance.
Thedesignmainlyconsistsoffourparts,includingthekeycircuit,LEDlightcircuit,drivercircuit,resetcircuit.ThispaperdescribesamicrocontrollercorewithSTC89C52controlcircuit.ThecircuitwithLEDLEDlightsforthedisplaycircuit.Automobiletaillightsarethemostdirectwayofitsrunthatway,sothatpedestriansorothervehicles,itwillclearlyunderstandthedynamicchangestooccur.Inordertoavoidtrafficaccidents.Thecircuitdesignofstrictrulesoftheroad,taillightsflashorgooutaccurately,itwillnotallowpedestriansorothervehiclesmisleading.Currently
Athomeandabroad,thetrendofthewholecommunityarelowenergyconsumption,environmentalprotection,andefficientasthetheme.Therefore,thedevelopmenttrendofLEDtaillights,andnowpartofthehigh-endcarsalreadyconfigured.
【Keywords】Light-emittingdiodeMCUCircuitdesign
绪论
汽车作为现代交通工具已大量进入人们的生活,随着电子技术的发展,对于汽车的控制电路,也已从过去的全人工开关控制发展到了智能化控制。
在夜晚或因天气原因能见度不高的时候,人们对汽车安全行驶要求很高.汽车尾灯控制系统给大家带来了方便。
汽车尾灯控制器是随汽车智能化技术的发展而迅速发展起来的,汽车尾灯一般是用基于微处器的硬件电路结构构成,正因为硬件电路的局限性,不能随意的更改电路的功能和性能,且可靠性得不到保证,因此对汽车尾灯控制系统的发展带来一定的局限性。
难以满足现代汽车的智能化发展[8]。
随着(EDA)仿真技术的发展,数字系统的设计技术和设计工具发生了深刻的变化。
利用硬件描述语言对数字系统的硬件电路进行描述是EDA的关键技术之一。
C语言是目前主流的硬件描述语言,它具有很强的电路描述和建模能力,且有与具体硬件电路无关和与设计平台无关的特性.在语言易读性和层次化结构设计方面表现出强大的生命力和应用潜力。
本文采用先进的EDA技术,利用MAX+PLUSII工作平台和VHDL语言,设计了一种基于FPGA的汽车尾灯控制系统.并对系统进行了仿真及验证。
用一片FPGA芯片实现从而大大简化了系统结构,降低了成本。
提高了系统的先进性和可靠性,能实现控制器的在系统编程。
采用这种器件开发的数字系统其升级与改进极为方便。
LED(1ightemittingdiode,发光二极管)由于其具备体积小、寿命长、低能耗、耐震动、无频闪及反应速度快等优点已成为备受瞩目的新一代车灯光源技术。
目前通用的汽车尾灯光源仍然是白炽灯和节能灯占主导地位,加上红、黄等配光透镜实现配光要求,缺点是易损坏、耗电量大、寿命短、激励响应时间长,给道路交通带来安全隐患等。
现有的LED汽车尾灯主要有两种:
一种是用多个LED密布于灯壳内直接经配光透镜配光,其缺点是用了多颗LED或者用大功率LED,成本高;
另外一种是将LED排布成平面或者柱状置于灯壳内,经自由曲面反射腔配光或自由曲面反射腔和配光透镜联台配光,其缺点是自由曲面反射腔制作工艺复杂。
现针对目前LED汽车尾灯配光困难、体积大等缺陷,有效利用LED光源体积小、亮度高等特点,设计出一种节能、高效的新型组合式LED汽车尾灯。
1设计系统的介绍及研究内容
1.1设计系统的介绍
1.1.1设计语言C语言的介绍
C语言是CombinedLanguage(组合语言)的中英混合简称。
是一种计算机程序设计语言。
它既具有高级语言的特点,又具有汇编语言的特点。
它可以作为工作系统设计语言,编写系统应用程序,也可以作为应用程序设计语言,编写不依赖计算机硬件的应用程序。
因此,它的应用范围广泛,不仅仅是在软件开发上,而且各类科研都需要用到C语言,具体应用比如单片机以及嵌入式系统开发。
C语言发展如此迅速,而且成为最受欢迎的语言之一,主要因为它具有强大的功能。
许多著名的系统软件,如DBASEⅣ都是由C语言编写的。
用C语言加上一些汇编语言子程序,就更能显示C语言的优势了,像PC-DOS、WORDSTAR等就是用这种方法编写的[2]。
1.1.2设计软件Proteus的介绍
Proteus(海神)的ISIS是一款Labcenter出品的电路分析实物仿真系统,可仿真各种电路和IC,并支持单片机,元件库齐全,使用方便,是不可多得的专业的单片机软件仿真系统。
它可以仿真、分析各种模拟电路与集成电路,软件提供了大量模拟与数字元器件及外部设备,各种虚拟仪器,特别是它具有对单片机及其外围电路组成的综合系统的交互仿真功能。
该软件的特点:
1.全部满足我们提出的单片机软件仿真系统的标准,并在同类产品中具有明显的优势。
2.具有模拟电路仿真、数字电路仿真、单片机及其外围电路组成的系统的仿真、RS-232动态仿真、C调试器、SPI调试器、键盘和LCD系统仿真的功能;
有各种虚拟仪器,如示波器、逻辑分析仪、信号发生器等。
3.目前支持的单片机类型有:
68000系列、8051系列、AVR系列、PIC12系列、PIC16系列、PIC18系列、Z80系列、HC11系列以及各种外围芯片。
4.支持大量的存储器和外围芯片。
总之该软件是一款集单片机和SPICE分析于一身的仿真软件,功能极其强大,可仿真51、AVR、PIC。
1.1.3设计依据
早期的单片机都是8位或4位的。
其中最成功的是INTEL的8031,因为简单可靠而性能不错获得了很大的好评。
此后在8031上发展出了MCS51系列单片机系统。
基于这一系统的单片机系统直到单片机也被称为微控制器(Microcontroller),是因为它最早被用在工业控制领域。
单片机由芯片内仅有CPU的专用处理器发展而来。
最早的设计理念是通过将大量外围设备和CPU集成在一个芯片中,使计算机系统更小,更容易集成进复杂的而对体积要求严格的控制设备当中。
INTEL的Z80是最早按照这种思想设计出的处理器,从此以后,单片机和专用处理器的发展便分道扬镳。
现在还在广泛使用。
随着工业控制领域要求的提高,开始出现了16位单片机,但因为性价比不理想并未得到很广泛的应用。
90年代后随着消费电子产品大发展,单片机技术得到了巨大的提高。
随着INTELi960系列特别是后来的ARM系列的广泛应用,32位单片机迅速取代16位单片机的高端地位,并且进入主流市场。
而传统的8位单片机的性能也得到了飞速提高,处理能力比起80年代提高了数百倍。
目前,高端的32位单片机主频已经超过300MHz,性能直追90年代中期的专用处理器,而普通的型号出厂价格跌落至1美元,最高端的型号也只有10美元。
当代单片机系统已经不再只在裸机环境下开发和使用,大量专用的嵌入式操作系统被广泛应用在全系列的单片机上。
而在作为掌上电脑和手机核心处理的高端单片机甚至可以直接使用专用的Windows和Linux操作系统[6]。
1.2研究的内容
本次设计的任务是根据已知条件,设计、制作一个汽车尾灯显示的51电路。
设汽车尾部左右两侧各有3个指示灯(用发光管模拟),要求是:
1.
汽车正常行驶时,尾灯全部熄灭。
2.当汽车右转弯时,右侧3个指示灯按右循顺序点亮。
3.
当汽车左转弯时,左侧3个指示灯按左循顺序点亮。
4.
临时刹车时,所有指示灯同时闪烁。
5.
选择电路方案,完成对确定方案电路的设计。
设计要求画出电路原理图(或仿真电路图)并阐述其基本原理;
元器件及参数选择;
电路仿真与调试;
制作实际运行装置。
2设计方案分析及比较
在设计本电路时,一共考虑过两种方案。
下面简单的介绍一下这两种方案:
第一种方案:
通过把脉冲电路、开关控制电路、三进制电路、译码与显示驱动电路等模块组合来实现。
首先,通过555定时器构成的多谐振荡器产生频率为1Hz的脉冲信号,该脉冲信号用于提供给双J-K触发器构成的三进制计数器和开关控制电路中的三输入与非门的输入信号。
其次,双J-K触发器构成的三进制计数器用于产生00、01、10的循环信号,此信号提供左转、右转的原始信号。
最后,左转、右转的原始信号通过6个与非门以及7410提供的高低电位信号,将原始信号分别输出到左、右的3个汽车尾灯上。
得到的信号即可输出到发光二极管上,实现所需功能[11]。
这种方案的实现复杂,成本高,调试起来不容易成功,太过繁琐。
第二种方案:
通过STC89C52单片机编写程序,来控制LED的亮灭。
这种方案中单片机编程较直接,用硬件电路搭建方便,通过STC89C52单片机编写程序,来控制LED的亮灭。
这样可以大大简化系统结构,降低材料的成本。
提高系统的先进性和可靠性,能实现控制器的系统编程。
经过小组商量,我们选择了使用第二种方法。
一、由于现在单片机技术普及,加上用单片机实现起来很方便也很简单,所以我决定使用单片机来驱动整个电路的运行。
二、单片机的运行都是要有晶振驱动的,有的单片机是内部晶振驱动单片机,有的单片机是外部设计含有晶振的驱动电路来驱动单片机的运行。
所以要设计一个驱动电路去驱动单片机。
三、需要往单片机中下载编好的程序,一是用在线下载,二是用下载器下载到单片机中。
在没有下载器的情况下,使用在线下载很方便。
3设计方案规划及设计(具体设计)
3.1系统设计框架图
如图3.1所示。
图3.1框架图
3.1.1设计任务
设计一个汽车尾灯控制电路,用6个发光二极管模拟汽车尾灯,即左尾灯(L1-L3)3个发光二极管;
右尾灯(D1-D3)3个发光二极管。
用两个开关分别控制左转弯尾灯显示和右转弯尾灯显示。
当右转弯开关被打开时,右转弯尾灯显示的3个发光二极管按右循环显示。
当左转弯开关被打开时,左转弯尾灯显示的3个发光二极管按左循环显示。
当急刹车时,6个发光二极管闪烁[1]。
图3.2右转弯显示规律图
图3.3左转弯显示规律图
图3.4急刹车显示规律图
根据以上要求,要实现当右转弯开关打开时,右转弯尾灯显示的3个发光二极管按右循环规律显示,如图3.2;
当左转弯开关打开时如图3.3;
急刹车时如图3.4。
根据不同的状态,绘制汽车尾灯和汽车运行状态表如表3.1所示。
设左转弯按键为key1,右转弯按键为key2,急刹车按键为key3。
表3.1汽车尾灯和汽车运行状态表
开关控制
汽车运行状态
右转尾灯
左转尾灯
key1key2key3
D1D2D3
L1L2L3
000
正常运行
灯灭
100
左转弯
L3→L2→L1→L3
010
右转弯
D1→D2→D3→D1
001
急刹车
闪烁
3.1.2总体设计思想
经过以上所述的设计内容及要求的分析,可以将电路分为以下几部分:
1、单片机扫描与3个按键相连的IO口的高低电平来确定是那个按键按下去了;
2,根据不同的按键按下去的情况,控制与6个LED相接的IO口的高低电平来控制LED亮灭情况。
3.2整体电路工作原理
按键电路、LED显示电路、含有晶振的驱动的电路、复位电路。
单片机在不停的扫描3个按键相连的IO口的高低电平,当3个按键中的一个按键按下去后,单片机会确定是那个按键按下去了;
当没有按键按下去的时候,这3个IO口管脚都是高电平;
当某一个按键按下去后,与该按键想连接的IO口管脚变成低电平;
根据不同的按键按下去的情况,控制与6个LED相接的IO口的高低电平来控制LED亮灭情况。
3.2.1单元电路设计
仿真原理图如图3.5所示。
图3.5仿真原理图
1)按键电路:
最左边为急刹车按键,中间为右刹车按键,最右边为左刹车按键。
当某一个按键按下去后,与该按键想连接的IO口管脚变成低电平[8]。
如图3.6所示。
图3.6按键电路图
2)LED电路:
要在左转向的时候,左边的3个灯左循环点亮,右转向的时候,右边的3个灯右循环循环点亮,急刹车的时候全部的LED闪烁,于是我选择了左循环的3个不同颜色的LED,右循环的3个LED的颜色和左循环的3个LED颜色一样,当循环点亮的时候很直观。
如图3.7所示。
图3.7LED电路图
3.2.2其他部分的设计
1)含有晶振的驱动的电路:
没有驱动电路的话,也就是晶振不起振,那单片机就不能工作。
如图3.8所示。
图3.8含驱动电路图
使用的是12M的晶振,两个电容一般很小(小于30PF)。
2)复位电路的设计:
如图3.9所示。
图3.9复位电路图
3.3单片机
单片机是一种集成在电路芯片,是靠程序运行的,并且可以修改。
只因为单片机可以通过你编写的程序可以实现高智能,高效率,以及高可靠性!
我选用的是STC89C52型号单片机[11],STC的优点是:
加密性强,很难解密或破解,解密费用很高、国内能解密的人少,一般的仿制者望而退步;
超强抗干扰,高抗静电,宽电压,不怕电源抖动,而且单片机内部的电源供电系统、复位电路等经过特殊处理等;
通过编写的程序可以实现高可靠性;
超低功耗;
在系统可编程,无需编程器,可远程升级等。
我们选用的是stc89c52型单片机,stc89c52的内核系列单片机引脚功能:
如图3.10所示。
图3.10内核系列单片机引脚
Vcc(40脚),GND(20脚)—单片机电源引脚,不同型号单片机接入对应电压电源,常压为+5V,低压为+3.3V。
XTAL1(19脚),XTAL2(18脚)—外接时钟引脚。
XTAL1为片内振荡电路的输入端,XTAL2为片内振荡电路的输出端。
RST(9脚)—单片机的复位脚。
PSEN(29脚)—全称是程序存储器允许控制端。
ALE/PROG(30脚)—在单片机扩展外部RAM时,ALE用于控制把P0口的输出低8位地址送锁存器锁存起来,以实现地位地址和数据的隔离。
EA/Vpp(31脚)—EA接高电平时,单片机读取内部程序存储器[6]。
I/O口引脚—P0口,P1口,P2口,P3口。
1、P0口(39脚—32脚)—双向8位三态I/O口,每个口可独立控制。
2、P1口(1脚—8脚)—准双向8位I/O口,每个口可独立控制,内带上拉电阻,这种接口输入没有高阻状态,输入也不能锁存。
3、P2口(21脚—28脚)—准双向8位I/O口,每个口可独立控制,内带上拉电阻,与P1口相似。
4、P3口(10脚—17脚)—准双向8位I/O口,每个口可独立控制,内带上拉电阻,并且具有第二功能。
3.4程序流程图
如图3.11所示。
图3.11程序流程图
程序流程:
1、初始化,让单片机的P2口的所有IO管脚全部为高电平
2、进行键盘扫描:
A、判断P1口的低三位哪一个管脚为低电平
B、如果全是高电平,说明没有按键按下
C、如果不是全为高电平,说明有一个按键按下去
D、根据P1口低三位哪一位的电平为低电平来判断是哪个按键按下去的
E、如果是右循环按键按下去了,通过赋值与计算后的再赋值,让P2口对应的右边的3个LED灯按右循环依次点亮。
F、如果是左循环按键按下去了,通过赋值与计算后的再赋值,让P2口对应的左边的3个LED灯按左循环依次点亮。
G、如果是急刹车按键按下去了,通过赋值与计算后的再赋值,让P2口对应6个LED灯闪烁。
3.5开始程序
C语言程序设计具体如下:
#include<
reg52.h>
voiddelay(unsignedintz)延时程序,for循环一直减到0
{
unsignedintx;
unsignedchary;
for(x=z;
x>
0;
x--)
for(y=110;
y>
y--);
}
voidkeyscan()键盘扫描程序,,先判断按键按下去没有,哪个
{按下去了,然后根据那个按键按下去的情况,
unsignedchartemp,temp1,temp2,i,temp3;
进行算法分析和计算,通过给与LED的管脚
temp1=P1;
赋值高低电平来控制灯亮灭情况
temp1=temp1&
0x07;
if(temp1!
=0x07)
{
delay(10);
temp2=P1;
temp2=temp2&
if(temp1==temp2)
{
switch(temp1)
{
case0x06:
//右转向灯
{
temp=0xfe;
for(i=1;
i<
=3;
i++)
{
delay(1000);
P2=temp;
temp=temp-i;
if(temp==0xf8)
temp=0xfe;
if(i==3)
i=0;
temp3=P1;
temp3=temp3&
if(temp3==0x07)
{
P2=0xff;
i=4;
}
}
if(i==5)
break;
}
case0x05:
//左转向灯
temp=0xdf;
temp=temp+(16/i);
if(temp==0xfc)
temp=0xdf;
i=4