单片机课程设计汽车灯.docx
《单片机课程设计汽车灯.docx》由会员分享,可在线阅读,更多相关《单片机课程设计汽车灯.docx(12页珍藏版)》请在冰豆网上搜索。
![单片机课程设计汽车灯.docx](https://file1.bdocx.com/fileroot1/2023-1/6/3538b83f-84bd-401c-a2a3-b5045823c449/3538b83f-84bd-401c-a2a3-b5045823c4491.gif)
单片机课程设计汽车灯
单片机原理及系统课程设计
专业:
电气工程及其自动化
班级:
电气1004班
姓名:
王英帅
学号:
指导教师:
任丽苗
评语:
平时(40)
修改(30)
报告(30)
总成绩
兰州交通大学自动化与电气工程学院
2013年3月7日
摘要,基于单片机的工作原理,以八路抢答器为理念,制作广泛
抢答按扭
优先编
码电路
锁存器
译码电路
译码显示
主持人控制开关
控制电路
报警电路
主持人断开控制开关
抢答无效
报警电路
显示电路
1引言
本设计的设计内容是:
基于单片机的汽车灯控制系统的设计。
模拟汽车在驾驶中的左转弯、右转弯、刹车、合紧急开关、停靠等操作。
在左转弯或右转弯时,通过转弯操作杆使左转弯或右转弯开关合上,从而使左头信号灯、仪表板的左转弯灯、左尾信号灯或右头信号灯、仪表板的右转弯信号灯、右尾信号灯闪烁;闭合紧急开关时以上六个信号灯全部闪烁;汽车刹车时,左右两个尾信号灯点亮;若正当转弯时刹车,则转弯时原闪烁的信号灯应继续闪烁,同时另一个尾信号灯点亮,以上闪烁的信号灯以1Hz频率慢速闪烁;在汽车停靠开关合上时左头信号灯、右头信号灯、左尾信号灯、右尾信号灯以10Hz频率快速闪烁。
任何在下表中未出现的组合,都将出现故障指示灯闪烁,闪烁频率为10Hz。
2设计方案及原理
2.1系统硬件设计概述
该设计方案中,选用ATMEL公司的8位通用单片机AT89C51,让其P0口为系统的输入端口,输入信号由开关的通断产生,而P1口为系统的输出端口,输出给7个LED指示灯。
同时,本设计中将刹车输入信号以中断的方式进行输入,这样在一定程度上就保证了诸如刹车这种紧急情况下实时性较高的需要。
详细的硬件设计方案见后续章节。
2.2系统软件设计概述
根据系统的设计需要,为满足系统实时性的需求,我们把刹车信号处理成外部中断0的形式,其他输入信号以普通的输入信号进行输入,CPU以轮询的方式对它们进行查询。
若CPU发现有输入信号的组合是所期望输入信号组合的任何一组时,则驱动相应的指示灯发出相应的指示情况。
详细的软件设计方案见后续章节。
3硬件设计
3.1硬件设计方案
如前所述,在该设计方案中,选用ATMEL公司的8位通用单片机AT89C51,让其P0口为系统的输入端口,输入信号由开关的通断产生,其中,P0.0为左转弯开关,P0.1为右转弯开关,P0.2为紧急开关,P0.3为停靠开关。
P1口为系统的输出端口,输出给7个LED指示灯。
其中,P1.0到P1.2引脚分别连接汽车的左转弯灯、左头灯和左尾灯,为便于区分,这三个灯均用黄灯表示;P1.3到P1.5引脚分别连接汽车的右转弯灯、右头灯和右尾灯;P1.6引脚连接汽车的故障指示灯。
同时,本设计中将刹车输入信号以外部中断0的方式进行输入,这样在一定程度上就保证了诸如刹车这种紧急情况下实时性较高的需要。
3.2硬件设计原理图
在Proteus仿真环境下所搭建的系统硬件电路图如图3.1所示。
图3.1系统硬件原理图
4软件设计
4.1软件设计方案
根据设计要求,我们把左转弯信号输入、右转弯信号输入、紧急信号输入和停靠信号输入当做普通的信号输入给单片机进行处理,此时CPU采用轮询的方式对各个信号的组合方式逐个地进行排查:
若CPU发现有有效的信号输入,则驱动相应指示灯进行相应的显示,若发现有无效的信号输入,则驱动故障指示灯闪烁,若上述情况都未发生,则CPU继续轮询排查各个输入信号的组合,直到有信号输入。
由于刹车信号是一种很紧急的信号,故此处将刹车信号处理成外部中断信号进行输入,以保证实时性,将损失降低到最小。
此时CPU正在执行主程序(即CPU正以轮询的方式排查各输入信号的组合),当有刹车信号输入时,程序立即转向中断服务程序去处理,其中包含着与刹车有关的各个有效信号的组合,当输入信号的组合有效时,则发出相应的动作,若输入无效信号时,则故障指示灯闪烁。
考虑到一般刹车之后都需要重新启动汽车及整个汽车的控制系统,我们把当系统进入到中断时的各个有效状态人为地设置为重复等待状态,直到系统重新上电复位之后,又恢复到正常的等待状态。
4.2系统设计流程图
4.2.1主程序流程图
在主程序中,首先将输出端口与清零,以免对后续的程序执行结果产生错误的影响。
片内存储单元30H、31H和32H分别用来当做左转弯、右转弯、紧急开关是否闭合的标志存储器,若有相应的信号出现时,则相应的标志存储器置为#FFH,否则,相应的标志存储器清零。
设置这三个标志存储器的目的是为了当有刹车中断产生是,便于CPU辨认是否在刹车的情况下有左转弯、右转弯或者是紧急开关闭合。
为了能够使系统在汽车处于运行状态下连续可靠地工作,主程序采用循环扫描,即轮询的方式工作。
主程序流程图如图4.1所示。
4.2.2中断程序流程图
在中断服务程序中,首先同主程序一样,先将输出口清零,以免影响后续程序执行结果。
紧接着,程序通过一级一级的判断与排查,看是否有与题中所给出的信号组合相符的信号组合出现,若出现了,则相应的指示灯要出现相应的动作,并进入循环执行的状态,直到系统从刹车状态中解除出来,重新上电复位后,又重头开始执行程序;否则,故障指示灯显示。
中断程序流程图如图4.2所示。
图4.1主程序流程图
图4.2中断程序流程图
5总结
经过将近一周时间的单片机课程设计,我又重新温习回顾了有关8051单片机的基本结构和一些基本的指令,并进一步加深了用单片机进行整个系统硬件和程序设计的方法与步骤,巩固了利用单片机进行系统软件设计时的一些技巧与方法。
就本次所选的设计题目而言,我在设计的过程中,首先通过仔细分析题目,来找到解决问题的突破口,这一步对于后续过程的设计具有指导意义。
其次,根据所分析的结果,综合考虑各种必要条件后,设计出了系统的硬件电路图。
接着,进行系统的软件设计,这一步需要详细分析题中各种情况之间的逻辑关系与其自身的要求,还要综合考虑到实际情况的需要。
在搞清楚这些关系之后,为系统编写汇编程序源代码。
然后,在KeilC应用软件环境下,对汇编源代码进行编译、汇编与连接,并将生成的可执行文件与硬件系统相关联,最后在Proteus仿真环境下进行仿真,调试仿真结果是否正确。
通过此次课程设计,我复习掌握了不仅有关单片机的知识,还收获了一些有关论文写作规范的要求,这让我受益匪浅。
参考文献
[1]李华,王思明,张金敏.单片机原理及应用[M].兰州:
兰州大学出版社,2001.5.
[2]徐爱均.单片机原理实用教程-基于Proteus虚拟仿真[M].北京:
电子工业出版社,2009.1.
[3]李广弟.单片机基础[M].北京:
北京航空航天大学出版社,1994.
[4]房小翠.单片机实用系统设计技术[M].北京:
国防工业出版社,1999.
[5]胡汉才.单片机原理及接口技术.清华大学出版社,1995.
附录
ORG0000H
LJMPMAIN
ORG0003H
LJMPINTRT0
MAIN:
MOVP1,#00H;输出口清0
MOV30H,#00H;标志清0
MOV31H,#00H;
MOV32H,#00H;
SETBEX0
SETBEA
HP1:
MOVA,P0;左转判断
CLRC
SUBBA,#01H
JZZZW
JNZJX1
ZZW:
MOV30H,#0FFH;左转指示
SS1:
MOVP1,#07H
LCALLDELAY1
MOVP1,#00H
LCALLDELAY1
SJMPHP1
JX1:
MOV30H,#00H
HP2:
CLRC;右转判断
MOVA,P0
SUBBA,#02H
JZYZW
JNZJX2
YZW:
MOV31H,#0FFH;右转指示
SS2:
MOVP1,#38H
LCALLDELAY1
MOVP1,#00H
LCALLDELAY1
SJMPHP2
JX2:
MOV31H,#00H;合紧急开关判断
HP3:
CLRC
MOVA,P0
SUBBA,#04H
JZHJJ
JNZJX3
HJJ:
MOV32H,#0FFH;合紧急开关指示
SS3:
MOVP1,#3FH
LCALLDELAY1
MOVP1,#00H
LCALLDELAY1
SJMPHP3
JX3:
MOV32H,#00H
HP4:
CLRC;合停靠开关判断
MOVA,P0
SUBBA,#08H
JZTK
JNZJX4
TK:
MOVP1,#36H;合停靠开关指示
LCALLDELAY10
MOVP1,#00H
LCALLDELAY10
SJMPHP4
JX4:
CLRC;有无输入判断
MOVA,P0
JZTZ
CLRC;左转判断
MOVA,P0
SUBBA,#01H
JZTZ
CLRC;右转判断
MOVA,P0
SUBBA,#02H
JZTZ
CLRC;合紧急开关判断
MOVA,P0
SUBBA,#04H
JZTZ
CLRC;合停靠开关判断
MOVA,P0
SUBBA,#08H
JZTZ
AJMPGZ
GZ:
MOVP1,#40H;故障指示
LCALLDELAY10
MOVP1,#00H
LCALLDELAY10
AJMPJX4
TZ:
AJMPMAIN;返回继续
INTRT0:
CLREA;关中断
MOVP1,#00H
CLRC;左转判断
MOVA,30H
SUBBA,#0FFH
JZZZS
CLRC;右转判断
MOVA,31H
SUBBA,#0FFH
JZYZS
PSC:
MOVA,P0;刹车判断
JZSC
JNZGZ1
SC:
MOVP1,#24H
CLRC;刹车合紧急开关判断
MOVA,P0
SUBBA,#04H
JZHJS
SJMPSC
GZ1:
MOVP1,#40H;故障指示
LCALLDELAY10
MOVP1,#00H
LCALLDELAY10
SJMPGZ1
ZZS:
CLRC;左转弯刹车合紧急开关判断
MOVA,P0
SUBBA,#05H
JZZSJ
ZS:
MOVP1,#27H;左转弯刹车指示
LCALLDELAY1
MOVP1,#00H
SETBP1.5
LCALLDELAY1
SJMPZZS
ZSJ:
MOVP1,#3FH;左转弯刹车合紧急开关指示
LCALLDELAY1
MOVP1,#00H
SETBP1.5
LCALLDELAY1
SJMPZSJ
YZS:
CLRC;右转弯刹车合紧急开关判断
MOVA,P0
SUBBA,#06H
JZYSJ
YS:
MOVP1,#3CH;右转弯刹车指示
LCALLDELAY1
MOVP1,#00H
SETBP1.2
LCALLDELAY1
SJMPYZS
YSJ:
MOVP1,#3FH;右转弯刹车合紧急开关指示
LCALLDELAY1
MOVP1,#00H
SETBP1.2
LCALLDELAY1
SJMPYSJ
HJS:
MOVP1,#3FH;刹车时合紧急开关指示
LCALLDELAY1
MOVP1,#00H
SETBP1.2
SETBP1.5
LCALLDELAY1
SJMPHJS
RETI
DELAY10:
MOVR7,#200;延时0.1s子程序
L:
MOVR6,#123
NOP
L1:
DJNZR6,L1
DJNZR7,L
RET
DELAY1:
MOVR5,#10;延时1s子程序
L2:
MOVR7,#200
L3:
MOVR6,#123
NOP
L4:
DJNZR6,L4
DJNZR7,L3
DJNZR5,L2
RET
END