资源描述
单片机课程设计
题 目:汽车转向信号灯设计
班 级: 电气073班
姓 名: 黄湘才
学 号: 200708947
指导教师: 苟 军年
设计时间: 2009.12.31
评语:
成绩
摘要:
该实验设计基于MCS—51开发板平台,利用其中的布尔处理机及其指令子集设计了一个汽车转向信号灯控制系统。近年来随着科技的飞速发展,单片机的应用正在不断深入,同时带动传统控制检测技术日益更新。在实时检测和自动控制的单片机应用系统中,单片机往往作为一个核心部件来使用,仅单片机方面知识是不够的,还应根据具体硬件结构软硬件结合,加以完善。
该系统模拟汽车在驾驶中的左转弯、右转弯、刹车、合紧急开关、停靠等操作。在左转弯或右转弯时,通过转弯操作杆使左转弯或右转弯开关合上,从而使左头信号灯、仪表板的左转弯灯、左尾信号灯或右头信号灯、仪表板的右转弯信号灯、右尾信号灯闪烁;闭合紧急开关时以上六个信号灯全部闪烁;汽车刹车时。左右两个尾信号灯点亮;若正当转弯时刹车,则转弯时原闪烁的信号灯应继续闪烁,同时另一个尾信号灯点亮,以上闪烁的信号灯以1HZ频率慢速闪烁;当汽车停靠开关合上时左头信号灯、右头信号灯、左尾信号灯、右尾信号灯以10HZ频率快速闪烁。非以上情况,则故障指示灯以10HZ频率闪烁。
1、引言:
当今社会,汽车已经成为一个大众化得交通工具。马路上汽车是越来越多,考虑行车和路人的安全,汽车转向信号灯已显得必不可少。
1925年,导航公司推广了双丝灯泡,远光和近光的调节通过装在转向柱上的开关来控制。信号灯的使用非常有趣。1916年,美国一个名叫C. H .托马斯的人把一带电池的灯炮装车时,对方驾驶员就能看到他打的手势。1938年,别克汽车制造商提供了转向灯作为选用的附件,但当时只在汽车尾部安装,到1940年以后汽车前面也装有转向信号灯了,而且信号开关具有随时调节的功能。
汽车转向信号灯的出现使得汽车在马路上行驶有了规章秩序,同时使行人也有了安全感。因为它就是司机对汽车控制很直接的反应,行人一看就一目了然让行人与汽车这个矛盾体中间有了“和平共存”的空间。它的作用可想而知。
2、设计方案及原理
设汽车上有一转弯控制杆。此控制杆有三个位置:中间位置时汽车不转弯;向上时,汽车左转;向下时,汽车右转。汽车转弯时,要求左右尾灯、左右头灯和仪表板上的两个指示灯相应地发出闪烁信号。当应急开关合上时,所有六个信号灯都应闪烁。汽车刹车时,两个尾灯发出不闪烁的信号。如刹车时正在转弯,则相应地转弯闪烁信号不受影响。上述功能的真值表见上表。在我们的系统中,汽车转弯或应急状态下外部信号灯和仪表板指示灯的闪烁频率为1Hz,称低频信号。当停靠开关合上时,外部信号灯以高频频率(约10Hz)闪烁。
表1 模拟驾驶开关作时信号灯输出的信号表
驾驶操作
输出信号
左转弯 灯
右转弯 灯
左头灯
右头灯
左尾灯
右尾灯
左转弯(合上左转弯开关)
闪烁
灭
闪烁
灭
闪烁
灭
右转弯(合上右转弯开关)
灭
闪烁
灭
闪烁
灭
闪烁
合上紧急开关
闪烁
闪烁
闪烁
闪烁
闪烁
闪烁
刹车(合刹车开关)
灭
灭
灭
灭
亮
亮
左转弯时刹车
闪烁
灭
闪烁
灭
闪烁
亮
右转弯时刹车
灭
闪烁
灭
闪烁
亮
闪烁
刹车时合紧急开关
闪烁
闪烁
闪烁
闪烁
亮
亮
左转弯时刹车合紧急开关
闪烁
闪烁
闪烁
闪烁
闪烁
亮
右转弯时刹车合紧急开关
闪烁
闪烁
闪烁
闪烁
亮
闪烁
停靠(合紧急开关)
灭
灭
闪烁
闪烁
闪烁
闪烁
表2 转弯信号灯工作的真值表
输入信号
输出信号
刹车开关
应急开关
左转开关
右转开关
左头灯和仪表板灯
右头灯和仪表板灯
左尾灯
右尾灯
0
0
0
0
0
0
0
0
1
0
1
0
断
断
闪烁
断
闪烁
断
断
断
闪烁
断
闪烁
断
0
0
0
1
1
1
0
0
1
0
1
0
闪烁
闪烁
闪烁
闪烁
闪烁
闪烁
闪烁
闪烁
闪烁
闪烁
闪烁
闪烁
1
1
1
0
0
0
0
0
1
0
1
0
断
断
闪烁
断
闪烁
断
通
通
闪烁
通
闪烁
通
1
1
1
1
1
1
0
0
1
0
1
0
闪烁
闪烁
闪烁
闪烁
闪烁
闪烁
通
通
闪烁
通
闪烁
通
表2所述的汽车转弯信号灯控制系统的功能可以用数字逻辑电路来实现如图1所示。除图示之外,系统中还应有高低频信号发生电路和输出驱动电路。但是这种系统灵活性差,一旦系统功能有所改动,电路也要随之改动,缺少必要的智能,如故障监测功能。
图 1
3、 硬件设计
MSC-51芯片简介
MCS-51单片机内部结构
8051是MCS-51系列单片机的典型产品,我们以这一代表性的机型进行系统的讲解。8051单片机包含中央处理器、程序存储器(ROM)、数据存储器(RAM)、定时/计数器、并行接口、串行接口和中断系统等几大单元及数据总线、地址总线和控制总线等三大总线,现在我们分别加以说明:
·中央处理器:
中央处理器(CPU)是整个单片机的核心部件,是8位数据宽度的处理器,能处理8位二进制数据或代码,CPU负责控制、指挥和调度整个单元系统协调的工作,完成运算和控制输入输出功能等操作。
·数据存储器(RAM)
8051内部有128个8位用户数据存储单元和128个专用寄存器单元,它们是统一编址的,专用寄存器只能用于存放控制指令数据,用户只能访问,而不能用于存放用户数据,所以,用户能使用的RAM只有128个,可存放读写的数据,运算的中间结果或用户定义的字型表。
·程序存储器(ROM):
8051共有4096个8位掩膜ROM,用于存放用户程序,原始数据或表格。
·定时/计数器(ROM):
8051有两个16位的可编程定时/计数器,以实现定时或计数产生中断用于控制程序转向。
·并行输入输出(I/O)口:
8051共有4组8位I/O口(P0、 P1、P2或P3),用于对外部数据的传输。
·全双工串行口:
8051内置一个全双工串行通信口,用于与其它设备间的串行数据传送,该 串行口既可以用作异步通信收发器,也可以当同步移位器使用。
·中断系统:
8051具备较完善的中断功能,有两个外中断、两个定时/计数器中断和一个串行中断,可满足不同的控制要求,并具有2级的优先级别选择。
·时钟电路:
8051内置最高频率达12MHz的时钟电路,用于产生整个单片机运行的脉冲时序,但8051单片机需外置振荡电容。
单片机的结构有两种类型,一种是程序存储器和数据存储器分开的形式,即哈佛(Harvard)结构,另一种是采用通用计算机广泛使用的程序存储器与数据存储器合二为一的结构,即普林斯顿(Princeton)结构。INTEL的MCS-51系列单片机采用的是哈佛结构的形式。
系统硬件
图2是采用单片机的汽车转向灯控制系统的基本电路。汽车中常采用12V的蓄电池供电,所以除单片机外,其它电路采用+12V电源。电路很简单,无需多加解释。闪烁频率信号由单片机内部定时器产生。
在单片机系统中,可采用余度技术和故障监控技术来提高系统的可靠性。例如我们仍可采用标准的双灯丝信号灯,两根灯丝并行使用,以增加系统的冗余度,在一根灯丝故障时,系统仍能正常工作。
即使采用了冗余技术,信号灯也难免偶然会烧坏,或因发生线路上的故障而不能正常工作。因此还希望系统具有故障监控功能,一旦发生故障,能自动报警。
图3是这类故障监控电路的可能方案之一,它利用T0作检测输入,只增加一个晶体管和几个电阻。假定其中一个信号灯是受控断开的(输出口线送高电平),而其余信号灯皆受控接通。这时晶体管Q7的6个输入端中有5个是低电平,与
图2 汽车转弯信号灯控制系统基本电路图
图3 故障监控电路
受控断开的信号灯的型心的那个输入端的电平则决定于这一路线路的状态,若由+5V电源经过灯泡,连接器,控制线和印制板都是导通的,这一路驱动晶体管也没有发生基极与地短路的现象,则该输入端应保持高电平,使Q7导通测试口T0是高电平,说明相应的线路出现了故障。
现在让点偏激发出控制使所有信号灯都接通,则Q7应截止,测试口T0应呈高电平,如果这是存在控制线与+5V电源短路或驱动晶体管断路灯故障,则Q7仍导通,T0呈低电平,表示线路中存在着另一类故障。这种故障监控功能很容易靠软件来实现。
4、 软件设计
系统软件用汇编语言编写,程序清单列于末尾,程序清单非为三部分,第一部分是输入,输出口线说明和变量定义,第二部分是背景程序(主程序),第三部分是中断服务程序。
1.口线说明和变量定义
程序清单中有说明和定义部分,在图中输入输出口线以初步拟定好,但在程序中我们不直接使用P1.0P1.1等这类的口线名称,而是采用符号地址,即用户自定义的有助记意义的名称,对于一些字节变量和布尔变量也采用了助记名。这样做给程序设计带来了方便,提高了程序的可读性和可维护性,一旦要改变具体的引脚或变量单元(或位),只要在说明和定义部分略作修改,而不必把程序中所有有关的部分一一修改。
2.背景程序(主程序)
程序清单中的背景程序,这一段程序框图见图4。
系统中利用定时器、计数器0和一个软件计数器SUB_DIV来产生为时一秒的定时信号,以实现低频(1Hz)闪烁功能。
对T0置初值D1H,使定时器0每隔0.011905秒(采用12MHz晶体,计数频率为1MHz)溢出中断一次,每次中断后重置T0,并使软件计数器SUB_DIV的值减1.SUB_DIV的初值为84,当此值减为0时,历经的时间为84×0.011905×=1.00002秒。
3.中断服务程序
定时器0溢出中断服务程序是整个程序的实际主体部分,他的框图见图4,现对中断服务程序作几点说明:
1)故障监控测试过程可参见图3的说明,发现故障时,转而执行一条指令CPL S_FAIL,S_FAIL是P2.3引脚的符号地址,若故障一直存在,则P2.3的状态每隔1秒转换一次,如在此引脚处接一个指示灯(硬件图中未表示),则告警时指示灯以10Hz的频率闪烁。
2)关于降频振荡信号(1Hz)的产生
SUB_DIV的初值为84(01010100)由84变到0,历经1.00002秒,其中SUB_DIV.7为1的时间约占117/244秒,为0的时间占127/244秒,故从SUB_DIV.7(LO_FREQ)获得的就是占空比接近于50%低频信号。
3)关于高频振荡信号(10Hz)的产生
由指令形成占空比为62.5%的10Hz高频信号。我们知道,软件计数器SUB_DIV的值,由84变为0时,SUB_DIV的低三位可以构成8种状态,如表3的左半部所示。在1.00002秒中这8种状态的重复次数=01010B=10.故把低3位的状态以某种方式组合起来,就可以形成一定的占空比10Hz信号。
表3的右半部表示不同占空比的信号作用下,在每个周期的8个状态时刻中信号灯通断情况。在50%占空比下白炽灯泡灯丝发的光不够亮,故本系统采用62.5%的占空比。上述几条指令的执行结果使PARK=1(汽车正在停靠)的状态下DIM=SUB_DIV.2OR(SUB_DIV.1AND SUB_DIV.0),由表3可以看出,在8个状态时刻中,前3个状态信号灯断开(DIM=0),后5个状态信号灯接通(DIM=1),形成占空比为62.5%的10Hz高频信号。
调节闪烁信号的亮程度可以靠对SUB_DIV的低3位进行不同的逻辑操作来实现,例如(SUB_DIV.1 OR SUB_DIV.2)的结果得占空比为75%,(SUB_DIV.0 OR SUB_DIV.1 OR SUB_DIV.2)的结果得占空比为87.5%等等。但要注意,在这8个状态中,信号灯只能通断各一次,否则闪烁频率就变了。
表3 占空比
SUB_DIV位
占 空 比
7
6
5
4
3
2
1
0
12.5%
25.0%
37.5%
50.0%
62.5%
75.0%
87.5%
×
×
×
×
×
0
0
0
断
断
断
断
断
断
断
×
×
×
×
×
0
0
1
断
断
断
断
断
断
通
×
×
×
×
×
0
1
0
断
断
断
断
断
通
通
×
×
×
×
×
0
1
1
断
断
断
断
通
通
通
×
×
×
×
×
1
0
0
断
断
断
通
通
通
通
×
×
×
×
×
1
0
1
断
断
通
通
通
通
通
×
×
×
×
×
1
1
0
断
通
通
通
通
通
通
×
×
×
×
×
1
1
1
通
通
通
通
通
通
通
图 4 转弯控制灯控制系 统的背景程序框图
图5转弯信号灯控制系统的中 断服务程序框图
5、总结
本系统基于MCS-51开发平台,充分利用了51单片机的各引脚功能,同时有效利用了中断、查询、定时器、计数器,使得汽车转向信号灯控制得以实现。
我们在网上查找了大量资料,并得到指导老师的耐心指导。通过这次毕业设计,使我得到了一次用专业知识、专业技能分析和解决问题全面系统的锻炼。使我在单片机的基本原理、单片机应用系统开发过程,以及在常用编程设计思路技巧(特别是汇编语言)的掌握方面都能向前迈了一大步,为日后成为合格的应用型人才打下良好的基础。
6、参考文献
1.孙涵芳 徐爱卿. MCS-51.96系列单片机原理及应用[M].北京:北京航空航天大
学出版社,1988
2.张毅坤. 单片微型计算机原理及应用,西安电子科技大学出版社 1998
3.余锡存 曹国华.单片机原理及接口技术[M].陕西:西安电子科技大学出版
社,2000.7
4.雷丽文 等.微机原理与接口技术[M].北京:电子工业出版社,1997.2
7、附录
1、线口说明
BRAKE EQU P1.0 ; 刹车
EMERG EQU P1.1 ; 应急
PARK EQU P1.2 ; 停靠
L_TURN EQU P1.3 ; 左转
R_TURN EQU P1.4 ; 右转
L_FRNT EQU P1.5 ; 左前灯
R_FRNT EQU P1.6 ; 右前灯
L_DASH EQU P1.7 ; 左转弯灯
R_DASH EQU P2.0 ; 右转弯灯
L_REAR EQU P2.1 ; 左后灯
R_REAR EQU P2.2 ; 右后灯
S_FAIL EQU P2.3 ; 故障信号
SUB_DIV EQU 20H ; 软件计数器
HI_FREQ EQU SUB_DIV.0 ; 高频信号
LO_FREQ EQU SUB_DIV.7 ; 低频信号
DIM EQU PSW.1 ; 位操作数暂存位
ORG 0000H
LJMP INIT
ORG 000BH ;T0中断
MOV TH0, #D1H ;设置定时器T0初值
MOV TL0,#7FH
PUSH PSW ;保护现场
AJAMP UPDATE
ORG 0040H
2主程序
INIT: MOV TL0, #7FH ;重新置初值
MOV TH0, #DIH
MOV TMOD, #01100001B ;定时器T0工作方式1
MOV SUB_DIV, #54H ;软件计数器置初值
SETB ET0 ;定时器/计数器0允许中断
SETB EA ;CPU开中断
SETB TR0 ;启动定时器0
SIMP $
UPDATE: DJNZ SUB_DIV, T0SERV ;判断定时到否
MOV SUB_DIV, #84
ORL P1, #11100000B ;P1.5,P1.6,P1.7置1
ORL P2, #00000111B ; P2.0,P2.1,P2.2置1
有关中断服务程序
CLR L_FRNT ;关左前灯
JB T0, FAULT ;T0输入1,有故障
SETB L_FRNT ;开左前灯
CLR L_DASH ;关左转弯灯
JB T0, FAULT ;T0输入1,有故障
SETB L_DASH ;开左转弯灯
CLR L_REAR
JB T0, FAULT ;T0输入1,有故障
SETB L_REAR ;开左后灯
CLR R_FRNT ;关右前灯
JB T0, FAULT ;T0输入1,有故障
SETB R_FRNT ;开右前灯
CLR R_DASH ;关右转弯灯 JB T0, FAULT ;T0输入1,有故障
SETB R_DASH ;开转弯灯
CLR R_REAR ;关右后灯
JB T0, FAULT ;T0输入1,有故障
SETB R_REAR ;开右后灯
JB T0,T0SERV ;T0输入1,有故障
FAULT: CPL S_FAIL ;故障
高频信号的实现
T0SERV: MOV C, SUB_DIV.1 ;形成占空比为
ANL C, SUB_DIV.0 ;62.5%的10Hz
ORL C, SUB_DIV.2 ;信号
ANL C, PARK ;判断是否停靠
MOV DIM, C
MOV C, L_TURN ;左转/紧急,左转弯灯
ORL C, EMERG 以1Hz闪烁
ANL C, LO_FREQ
MOV L_DASH, C
MOV F0, C ;左转/紧急,左前灯
ORL C, DIM 1Hz闪烁,停靠10Hz
MOV L_FRNT, C 闪烁
MOV C, BRAKE ;刹车/左转/停靠,
ANL C, L_TURN ;左后灯亮或闪烁
ORL C, F0
ORL C, DIM
MOV L_REAR, C
MOV C, R_TURN ;右转弯/紧急,
ORL C, EMERG 右转弯灯1Hz闪烁
ANL C, LO_FREQ
MOV R_DASH, C
MOV F0, C ;右转/紧急,
ORL C, DIM ;右前灯1Hz闪烁,
MOV R_ FRNT, C ;停靠右前灯10Hz闪烁
MOV C, BRAKE
ANL C, R_TURN
ORL C, F0 ;刹车/右转/停靠
ORL C, DIM ;右后灯亮或闪烁
MOV R_REAR, C
POP PSW ;返回现场
RETI ;中断返回
END
展开阅读全文