单片机课设 汽车转向灯
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
第1章选题背景
随着社会的发展,道路上到处都是飞速的汽车。
特别是以人为本的和谐社会的观念深入人心。
如何保证人安全,一直都是人们关注的重心。
为了减少交通事故,从汽车的各种安全设计考虑,这不仅仅是汽车本身的质量问题,还应关注汽车在行驶过程中对路人的引导指示方面。
其中汽车的各种灯就是安全警示的一个方面,汽车的转弯灯、头灯、尾灯和警示灯等能够帮助路人识别汽车的动向,尤其是当遇到紧急事件时,打开紧急开关就可以警示路人该车现在不安全了,需要小心避车。
转弯灯能提示路人该车要进行左转或是右转了,小心碰撞。
传统的汽车闪光器结构简单体积小、闪光频率稳定、监控作用明显,故被广泛使用。
但这样的继电器由于自身条件的限制,可靠性低,定时时间不够精确,使用寿命较短,且继电器受温度影响较大,对于温度变化较大的环境往往不能满足要求。
所以本文中汽车转向灯设计是用单片机来实现的,单片机控制系统不仅可避免传统的缺点,还具有功能强、使用灵活、可靠性高、成本低、体积小、面向控制、具有智能化功能等优点。
第2章汽车转弯灯
2.1基本的功能和工作方式如表1
表1
2.2工作原理
由定时器/计数器与中断系统的联合组成控制系统的工作原理。
汽车上有一个转弯控制杆,其中有三个位置:中间位置,汽车不转弯;向上,汽车左转;向下汽车右转。
转弯时,规定左右尾灯、左右头灯仪表板上2个指示灯相应地发出闪烁信号。
应急开关合上时, 6个信号灯都应闪烁。
汽车刹车时,2个尾灯发出不闪烁信号。
如正当转弯时刹车,转弯时原应闪烁的信号仍应闪烁。
它们都是频率为1Hz低频闪烁,在汽车停靠而停靠开关合上时,左头灯、右头灯、左尾灯、右尾灯按频率为30Hz的高频闪烁。
由上所述,各种情况作操作时,信号灯应输出信号。
第3章转向灯系统的工作原理及设计
3.1 开关状态检测
开关状态检测,对AT89C51来说是输入关系,可轮流检测每个开关状态,以每个开关的状态让相应的发光二极管指示,采用JNB P1.X,REL 指令来完成;也可以一次性检测五路开关状态,让它指示,可以用MOV A,P1 指令一次把P1 端口的状态全部读入,取低5位的状态来指示。
3.2 输出控制
以发光二极管D1—D6 来指示,此设计用SETB P0.X 和CLR P0.X 指令来完成,也可以用指令MOV P0,#111XXXXXB 方法来实现。
3.3 定时器和计数器
根据任务设计要求:会用到定时器。
信号的控制是定时器与中断系统的联合使用得以实现。
单片机的控制系统应用中,定时器是必需的,在汽车转弯灯的控制中也是必不可少。
3.3.1定时
(1)软件的定时
它是靠执行一个循环程序以进行时间的延迟。
软件定时的优点是时间精确,且不需外加硬件电路。
但它要增加CPU开销,因此软件定时的时间不能太长。
此外,软件定时方法有时候无法使用。
(2)硬件的定时
时间较长的定时,常使用硬件电路完成。
硬件定时方法的优点是定时功能全部由硬件电路完成,不需要占CPU的时间。
用元件参数来调节定时时间,这方面使用上不够灵活方便。
(3)可编程定时器的定时
它是通过对系统时钟脉冲的计数来实现的。
计数值由程序设定,改变计数值,同时也改变了定时时间,用起来既灵活且方便。
此外,采用计数方法实现定时,可编程定时器都兼有计数功能,能对外来脉冲进行计数。
在AT89C51内部除了有并行和串行I/O接口外,在单片机内部共有2个可编程的定时器和计数器,称定时器/计数器0和定时器/计数器1,这两个计数器由
TH0,TL0,TH1,TL1两个8位的RAM单元组成,即每个计数器都是16位的计数器,最大的计数量时65536。
3.3.2计数器和定时器功能
(1)计数器功能
记数是指对外部事件进行计数。
它的发生以输入脉冲表示,计数功能的实质就是对外来的脉冲进行计数。
AT89C51芯片有T0(P3.4)和T1(P3.5)两个信号引脚,是这两个计数器的计数输入端。
外部输入的脉冲在负跳变时有效,进行计数器加1(加法计数)。
AT89C51在每个机器周期的S5P2拍节对外部计数脉冲进行采样。
前一个机器周期采用为高电平,后一个机器周期采样为低电平,是一个有效的计数脉冲。
在下一机器周期的S3P1进行计数。
采样计数脉冲是在2个机器周期进行的。
计数脉冲频率不能高于振荡脉冲频率的1/24。
(2)定时器功能
实际也是通过计数器来实现的,但此时的计数脉冲来自单片机的内部,也每个机器周期计数器加1。
一个机器周期等于12个振荡脉冲周期,因此计数频率为振荡频率的1/12。
单片机采用12MHz晶体,计数频率为1MHz。
每微妙计数器加1。
根据计数值计算出定时时间,也可以反过来按定时时间的要求计算出计数器的预置值。
它是一个二进制的加1计数器。
在计数器计满回零时能自动产生溢出中断请求。
则已经完成。
T1、T2的最大计数值65536-1,需65535个脉冲才能把它们从全“0”状态变为全“1”状态。
输一个脉冲,计数器加1,当加到计数器各位全为1时,再去输一个脉冲,计数器各位就变为全0,发出溢出信号,使标志置1,此时向CPU申请中断。
具体结构如图1所示:
图1 定时器/记数器的结构
3.4 定时初始化
定时主要与编程有关。
编程对定时器控制寄存器(TCON)、工作方式控制寄存器(TMOD)和中断允许控制寄存器(IE)进行操作。
(1)定时器控制寄存器(TCON)
TCON寄存器既参与中断控制又参与定时控制。
其中有关定时的控制位共有4位:
TF0和TF1----记数溢出标志位
TR0和TR1----定时器运行控制位
TR0(TR1)=0----停止定时器/计数器工作
TR0(TR1)=1----启动定时器/计数器工作
该位根据需要以软件方法使其置“1”或清“0”。
(2)中断允许控制寄存器
IE寄存器中与定时器/计数器有关的位置介绍:
EA----中断允许总控制位
ET0和ET1----定时/计数中断允许控制位
ET0(ET1)=0 禁止定时/记数中断
ET0(ET1)=1 允许定时/记数中断
利用MCS-51系列单片机的可编程定时/计数器、中断系统来实现灯闪烁的延时和故障检测。
(3)工作方式控制寄存器(TMOD)
TMOD寄存器专用寄存器,设定两个定时器/计数器的工作方式。
它的低半字节定义定时器/计数器0,高半字节定义定时器/计数器1。
各位定义如表2.2所示:
表2 TMOD各位定义
其中:GATE----门控位
GATE=0 以运行控制位TR启动定时器
GATE=1 以外中断请求信号(INT1或INT0)启动定时器
C/T----定时方式或计数方式选择位
C/T=0 定时工作方式
C/T=1 计数工作方式
M1M0----工作方式选择位
M1M0=00 方式0
M1M0=01 方式1
M1M0=10 方式2
M1M0=11 方式3
初值计算:
(1)设为工作方式0,定时时间为30ms,使灯延时闪烁。
若使用定时器T0,方式1,30ms定时,fosc=12MHz。
则初值X满足(216-X)×1=30000
X=35536→1000101011010000→8AD0H
(2设计中利用定时器/计数器0,一个软件计数器产生低频(1HZ)闪烁功能。
(3)利用定时器/计数器0来产生为时30ms的定时信号,以实现高频(30HZ)闪烁功能。
(4)注意在用工作方式1时,我们必须要重新装载初值。
3.5 汽车转弯灯显示
在汽车转弯或应急状态下,外部信号灯和仪表板它们指示灯的闪烁频率为1HZ,称低频信号。
当停靠开关合上时,外部信号灯以30HZ频率闪烁此时为高频信号。
3.6 汽车转弯灯控制
汽车转弯灯设计5个按键控制信号灯的转向、停靠、应急等。
按键安排见下:S1键为刹车开关;
S2键为紧急开关;
S3键为停靠开关;
S4键为左转弯开关;
S5键为右转弯开关;
3.7 中断系统
单片机中断技术主要用于实时控制,在单片机上有两个引脚,即INT0、INT1。
外部的中断信号通过这两个引脚输入到单片机,和单片机的定时器一样,对中断系统的处理需要通过C51的软件编程实现。
利用MCS-51系列单片机的可编程定时/计数器、中断系统来实现灯闪烁的延时和故障检测。
它的重要作用有如下四点:
第一,高速CPU和低速外设之间的配合。
利用中断方式进行的I/O口操作,在宏观上可以看成CPU和外设的并行工作。
第二,实现故障的紧急处理。
当外设发生故障时,可以利用中断系统请求CPU及时处理这些故障。
第三,可以实现实时控制。
第四,便于人机联系。
操作人员可以利用键盘等实现中断,完成人工介入。
第4章系统方案和总体结构
方案如图2所示,汽车转弯灯主要有单片机、按键、复位、时钟、电源、故障检测电路、LED显示电路组成最基本的单片机系统。
单片机本身的功能强大,汽车转弯灯的驱动用单片机本身的驱动来驱动。
使得单片机的功能得到充分的运用。
本方案的故障检测电路具有故障监控性能,他能提高系统的可靠性。
图2
方案中应用单片机自身的并行口来实现其功能,由于单片机的种类很多,在选择单片机时要依据实际设计要求选择合适的单片机。
我们接触的单片机有8031、8051。
因8031无内部RAM,只要编程就必须扩展程序存储器,无疑会增加设计的难度和复杂,虽然8051有内部RAM,但从性能及设计成本考虑,我们选择AT89C51芯片。
由于AT89C51的广泛使用,使单片机的价格大大下降。
目前,AT89C51的市场零售价已经低于8255、8279、8253、8250等专用接口芯片中的任何一种;而89C51的功能实际上远远超过以上芯片。
因此,如把89C51作为接口芯片使用,在经济上是比较合算。
时钟电路由晶振及电容组成,复位电路由按键复位结构组成。
对于键盘电路我们采用独立式键盘,可以具体实现可分为以下几种情况:①直接由并行I/O 口来实现。
②使用三极管驱动LED来实现。
第5章控制系统的硬件设计
5.1 单片机控制系统电路图
5.1.1 汽车转弯灯单片机控制系统框图
汽车转弯灯单片机控制系统电路是由单片机AT89C51、复位、电源、时钟、LED显示电路、故障检测电路、按键电路构成。
电源电路给控制相关电路提供所需电源;复位电路供上电或按键时复位用。
当要求重新启动单片机或者单片机处于死循环时,都可以由此电路来实现;时钟电路用来产生时钟脉冲信号,供工作使用;通过并行I/O口构成键盘和显示电路,输入程序,即可实现汽车转弯灯中各信号灯的功能操作;系统的可靠性有所提高。
汽车转弯灯单片机控制系统框图如图3所示。
图3 汽车转弯灯单片机控制系统框图
5.1.2 汽车转弯灯单片机控制系统电路原理图
汽车转弯灯单片机控制系统电路原理图见图4。
图4
5.2单片机控制系统功能模块的设计
5.2.1 时钟电路
图5 时钟振荡电路
采用单片机内部晶振。
如图5所示。
在MCS-51系列单片机内部有一个高增益反向放大器,其输入端为
芯片引脚XTAL1,输出端为引脚XTAL2。
而在芯片外部XTAL1和 XTAL2之间跨接
晶体振荡器和微调电容,形成反馈电路,就构成了一个稳定的自激振荡器。
外接
晶体(石英或陶瓷,陶瓷的精度不高,但价格便宜)振荡器以及电容C1和C2
构成并联谐振电路,接在放大器的反馈回路中, C1和C2的大小会对振荡器频
率的高低、振荡器的稳定性、起振的快速性和温度特性有一定的影响。
因此建议
在采用石英晶体振荡器时C=30+/-10pF,陶瓷振荡器时,C=40+/-10pF,典型值
为40pF 。
在设计电路板时,振荡器和电容应尽量安装得与单片机靠近,以减小寄生电容的存在更好的保障振荡器稳定、可靠的工作。
由多片单片机组成的系统中,为了各单片机间时钟信号的同步,常引入统一的外部脉冲信号作为各单片机的振荡脉冲。
将外部震荡器的信号接至XTAL2内部时钟发生器的输入端,而内部反向发大器的输入端XTAL1应接地, XTAL2的逻辑电平不是TTL 电平,所以需要外接一个上拉电阻。
因为整个电子钟只用一块单片机,不涉及时刻信号同步问题,所以此种电路我们不选用。
如图6所示。
图6 外部时钟源接法
5.2.2 复位电路
上电复位电路如图4.6所示,是利用外部复位电路实现。
振荡器启动时间不超过10ms 。
在加电情况下,这个电可以使单片机复位。
按键手动复位又分按键脉冲电平复位和按键电平复位,如图7, 8。
电平复位将复位端通过电阻与Vcc 相连,按键脉冲复位是利用RC 分电路产生正脉冲来达到复位的。
在按键电平复位和按键脉冲复位两种简单的复位电路中,干扰易串入复位端,在大多数情况下,不会造成单片机的错误复位,但会引起内部寄存器错误复位,这里可在复位端引脚上接一个去藕电容。
需说明的是,如复位电路中R 、C 的值选择不当,使复位时间过长,单片机将处于循环复位状态。
外部时钟信号 V C C
电阻、电容参数适宜于6MHz 晶振,能保证复位信号与电平持续时间大于2个机器周期。
我们采用按键电平复位的方法,电路如图9。
图7 上电复位电 图8 按键脉冲复位电路
图9 按键电平复位电路
5.2.3 信号灯电路[2]
LED 具有二极管的特性,但在导通之后会发光,称之为发光二极管。
与普通的灯泡一样,LED 导通后,随着其俩端电压的增加,电流急剧增加,所以,必须给LED 串联一个限流电阻,否则一旦通电,LED 会被烧坏。
要用89C51单片机来控制LED ,显然这个LED 必须要与89C51单片机的某个脚相连。
89C51单片机上除了基本连线必须用
到的6个脚,还有34个引脚。
这里把LED 与89C51单片机的P0脚相连。
本次设计中按照图10的接法,当AT89C51单片机的第1脚是高电平时,LED 不亮,当第1脚是低电平时,LED 亮。
但是在汽车转弯灯里要根据汽车方向来控制信号灯,而实现LED 的亮与灭。
22μF
VCC 1K Ω
V CC
1K
Ω
VCC 200Ω
图10 信号灯电路
5.2.4 故障监控电路[3]
如图11所示。
是这类故障监控电路的方案之一,它利用T0作检测输入,只增加1个晶体管和几个电阻。
假定其中一个信号灯是受控断开的(输出口线送高电平),而其余信号灯皆受控接通。
这时晶体管Q1的6个输入端中有5个是低电平。
图11 故障监控电路
让单片机发出控制使所有信号灯都接通,则Q1应截止,测试T0应呈高电平。
如果这时存在控制线与+5伏电源短路或驱动晶体管断路等故障,则Q1仍导通,T0仍呈低电平,表示线路中存在着另一类故障。
这种故障监控功能很容易靠软
件来实现。
5.2.5报警电路
当故障监控电路检测到有故障时,系统设有报警电路中的蜂鸣器会发出响声。
报警电路如图12所示。
图12 报警电路
5.3 元器件清单
汽车转弯灯元器件清单如表3。
表3 汽车转弯灯元器件清单
名称数量名称数量LED 7 限流电阻(100Ω) 6 按键 1 电阻(1K) 3 下载线接口 1 上拉电阻(5.1K) 5 芯片插座(40PIN) 1 电容(30pF) 2 电源插针(2PIN) 1 电容(22μF) 1 整流桥 1 蜂鸣器 1 印刷板 1 三极管(NPN) 2 电阻(200Ω) 2 晶振(12MHz) 1 拨码开关 5
电源电路元器件清单如表4。
表4 电源电路元器件清单
名称数量名称数量
变压器(n=220:12)1 集成稳压
(CW7805)
1
限流电阻(300Ω)1 集成稳压
(CW7905)
1
整流桥 2 集成稳压
(CW7812)
1
电源插座 1 集成稳压
(CW7912)
1
极性电容(220
μF)
2 电容(0.1μF) 4
极性电容(3300
μF)
2 LED 4
极性电容(470
μF)
2 排线 1
单排针25 拨码开关 1
第6章汽车转弯灯控制系统软件设计
6.1 汽车转弯灯控制系统流程图
6.1.1 汽车转弯灯控制系统主程序流程图
控制系统主程序流程图如图13所示。
图13
6.2 软件和程序设计
6.2.1 软件设计
单片机的应用开发,除了保证硬件电路的正确连接以外,更重要的工作是进行软件的开发。
单片机与其他微型计算机一样,若没有软件的支持,所设计产品就没有什么用途。
在开发时,要掌握一定的程序设计和开发方法。
6.2.2 程序说明
原理图按键连线:
P3.0=刹车; P3.1=紧急; P3.2=停靠; P3.3=左转; P3.4=右转;
说明:键值是根据P3的状态来确定的。
源程序见附录1
第7章心得体会
随着这周的结束,课程设计也接近了尾声。
经过一周的奋战我的课程设计终于完成了。
通过课程设计不仅对前面所学知识的一种检验,而且也是对自己能力的一种提高。
通过这次课程设计使我明白了自己原来知识还比较欠缺。
自己要学习的东西还太多,以前老是觉得自己什么东西都会,什么东西都懂,有点眼高手低。
通过这次课程设计,我才明白学习是一个长期积累的过程,在以后的工作、生活中都应该不断的学习,努力提高自己知识和综合素质。
在这次课程设计中也使我们的同学关系更进一步了,同学之间互相帮助,有什么不懂的大家在一起商量,听听不同的看法对我们更好的理解知识,所以在这里非常感谢帮助我的同学。
不管学会的还是学不会的的确觉得困难比较多,真是万事开头难,不知道如何入手。
最后终于做完了有种如释重负的感觉。
此外,还得出一个结论:知识必须通过应用才能实现其价值!有些东西以为学会了,但真正到用的时候才发现是两回事,所以我认为只有到真正会用的时候才是真的学会了。
参考文献
[1]李广弟,朱月秀,王秀山.单片机基础[M].北京:航空航天大学出版社,2000.147~156
[2]康华光,陈大钦.电子技术基础模拟部分[M].武汉:高等教育出版社,1998.57~116
[3]谢自美.电子线路设计·实验·测试(第二版).武汉:华中理工出版社,2000
[4]徐爱钧,彭秀华。
Keil Cx51 V7.0单片机高级语言编程与μVision2应用实践[M].北京:电子工业出版社,2006.133~187
[5]丁元杰主编.单片微机原理及应用.北京:机械工业出版社.1998.8
[6]李广第主编.单片机基础.北京:北京航天工业出版社.2002
附录
源程序:
ORG 0000H
AJMP START1
ORG 0030H
SAME EQU 4EH
START1: MOV P1,#00H ;无输入时无输出START: MOV A,P3 ;读P3口数据
ANL A,#1FH ;取用P3口的低五位数据
CJNE A,#1FH,SHIY ;对P3口低五位数据进行判断
AJMP START1
SHIY: MOV SAME,A
LCALL YS ;延时
MOV A,P3 ;读P3口的数据
ANL A,#1FH ;取用P3口的低五位数据
CJNE A,#1FH,SHIY1 ;对P3口的低五位数据进行判断
AJMP START1 ;开关没有动作时无输出
SHIY1: CJNE A,SAME,START1
CJNE A,#17H,NEXT1 ;P3.3=0时进入左转分支
AJMP LEFT
NEXT1: CJNE A,#0FH,NEXT2 ;P3.4=0时进入右转分支
AJMP RIGHT
NEXT2: CJNE A,#1DH,NEXT3 ;P3.1=0时进入紧急分支
AJMP EARGE
NEXT3: CJNE A,#1EH,NEXT4 ;P3.0=0时进入刹车分支
AJMP BRAKE
NEXT4: CJNE A,#16H,NEXT5 ;P3.0=P3.3=0时进入左转刹车分支AJMP LEBR
NEXT5: CJNE A,#0EH,NEXT6 ;P3.0=P3.4=0时进入右转刹车分支
AJMP RIBR
NEXT6: CJNE A,#1CH,NEXT7 ;P3.0=P3.1=0时进入紧急刹车分支AJMP BRER
NEXT7: CJNE A,#14H,NEXT8 ;P3.0=P3.1=P3.3=0时进入左转紧急刹车分支AJMP LBE
NEXT8: CJNE A,#0CH,NEXT9 ;P3.0=P3.1=P3.4=0时进入右转紧急刹车分支AJMP RBE
NEXT9: CJNE A,#1BH,NEXT10 ;P3.2=0时进入停靠分支
AJMP STOP
NEXT10: AJMP ERROR ;其他情况进入错误分支
LEFT: MOV P1,#2AH ;左转分支
LCALL Y1s
MOV P1,#00H
LCALL Y1s
AJMP START
RIGHT: MOV P1,#54H ;右转分支
LCALL Y1s
MOV P1,#00H
LCALL Y1s
AJMP START
EARGE: MOV P1,#7FH ;紧急分支
LCALL Y1s
MOV P1,#00H
LCALL Y1s
AJMP START
BRAKE: MOV P1,#60H ;刹车分支
AJMP START
LEBR: MOV P1,#6AH ;左转刹车分支
LCALL Y1s
MOV P1,#40H
LCALL Y1s
AJMP START
RIBR: MOV P1,#6AH ;右转刹车分支LCALL Y1s
MOV P1,#40H
LCALL Y1s
AJMP START
BRER: MOV P1,#7EH ;紧急刹车分支LCALL Y1s
MOV P1,#60H
LCALL Y1s
AJMP START
LBE: MOV P1,#7EH ;左转紧急刹车分支LCALL Y1s
MOV P1,#40H
LCALL Y1s
AJMP START
RBE: MOV P1,#7EH ;右转紧急刹车分支LCALL Y1s
MOV P1,#20H
LCALL Y1s
AJMP START
STOP: MOV P1,#66H ;停靠分支
LCALL Y100ms
MOV P1,#00H
LCALL Y100ms
AJMP START
ERROR: MOV P1,#80H ;错误分支
LCALL Y1s
MOV P1,#00H
LCALL Y1s
AJMP START
YS: MOV R7,#20H ;延时
YS0: MOV R6,#0FFH
YS1: DJNZ R6,YS1
DJNZ R7,YS0
RET
Y1s: MOV R7,#04H ;延时
Y1s1: MOV R6,#0FFH
Y1s2: MOV R5,#0FFH
DJNZ R5,$
DJNZ R6,Y1s2
DJNZ R7,Y1s1
RET
Y100ms: MOV R7,#66H ;延时Y100ms1:MOV R6,#0FFH
Y100ms2:DJNZ R6, Y100ms2
DJNZ R7, Y100ms1
RET
END。