汽车转弯灯单片机实习报告 本文关键词:单片机,转弯,实习报告,汽车
汽车转弯灯单片机实习报告 本文简介:汽车转弯灯单片机控制系统实习报告一、实习目的1、掌握51系列单片机的常用指令。2、熟练的编写51系列单片机的分支程序和一些子程序,如延时子程序。二、实习要求模拟汽车在驾驶中的左转弯、右转弯、刹车、合紧急开关、停靠等操作。在左转弯或右转弯时,通过转弯操作杆使左转弯或右转弯开关合上,从而使左头信号灯、仪
汽车转弯灯单片机实习报告 本文内容:
汽车转弯灯单片机控制系统实习报告
一、实习目的
1、掌握51系列单片机的常用指令。
2、熟练的编写51系列单片机的分支程序和一些子程序,如延时子程序。
二、实习要求
模拟汽车在驾驶中的左转弯、右转弯、刹车、合紧急开关、停靠等操作。在左转弯或右转弯时,通过转弯操作杆使左转弯或右转弯开关合上,从而使左头信号灯、仪表板的左转弯灯、左尾信号灯或右头信号灯、仪表板的右转弯信号灯、右尾信号灯闪烁;闭合紧急开关时以上六个信号灯全部闪烁;汽车刹车时,左右两个尾信号灯点亮;若正当转弯时刹车,则转弯时原闪烁的信号灯应继续闪烁,同时另一个尾信号灯点亮,以上闪烁的信号灯以1Hz频率慢速闪烁;在汽车停靠开关合上时左头信号灯、右头信号灯、左尾信号灯、右尾信号灯以10Hz频率快速闪烁。任何在下表中未出现的组合,都将出现故障指示灯闪烁,闪烁频率为10Hz。
数码管正常情况下显示操作功能的所写,故障情况显示“HELP”
在各种模拟驾驶开关作时,信号灯输出的信号如下表:
驾驶操作
输出信号
左转弯灯
右转弯灯
左头灯
右头灯
左尾灯
右尾灯
数码管显示
左转弯(合上左转弯开关)
闪烁
灭
闪烁
灭
闪烁
灭
LZ--
右转弯(合上右转弯开关)
灭
闪烁
灭
闪烁
灭
闪烁
RZ--
合紧急开关
闪烁
闪烁
闪烁
闪烁
闪烁
闪烁
JJ--
刹车
灭
灭
灭
灭
亮
亮
SC--
左转弯时刹车
闪烁
灭
闪烁
灭
闪烁
亮
LZSC
右转弯时刹车
灭
闪烁
灭
闪烁
亮
闪烁
RZSC
刹车时,合紧急开关
闪烁
闪烁
闪烁
闪烁
亮
亮
SCJJ
左转弯,刹车合紧急开关
闪烁
闪烁
闪烁
闪烁
闪烁
亮
LSJJ
右转弯,刹车合紧急开关
闪烁
闪烁
闪烁
闪烁
闪烁
闪烁
RSJJ
停靠
灭
灭
闪烁
10Hz
闪烁
10Hz
闪烁
10Hz
闪烁
10Hz
TK
三、实习设计原理
1、8051单片机的功能
单片机是集CPU、
RAM、
ROM(或EPROM)、
I/O接口、
定时器/计数器、
中断系统为一体完整的计算机系统。
8051内部含有8位CPU、4KB的ROM和128B的RAM、4个8位I/O接口电路、一个全双工的异步接口、5个终端源和2个中断优先级。
2、单片机各引脚介绍
(1)
VCC:电源。
(2)
GND:接地。
(3)
P0口:是一个8位漏极开路的双向I/O口。
(4)
P1口:是一个具有内部上拉电路的8位双向I/O口。
(5)
P2口:是一个具有内部上拉电路的8位双向I/O口。
(6)
P3口:是一个具有内部上拉电路的8位双向I/O口,P3输出缓冲器能吸入/放出4个TTL输入。Flash编程及检验时,P3口也接收一些控制信号。
(7)
RST:复位端。当振荡器工作时,此时高电平将系统复位。
(8)
XTAL1:振荡器反向放大器输入端和内部时钟发生器的输入端。XTAL2:振荡器反相放大器输出端。
8051单片机的P3口各种专用功能表如下
引脚
替代的专用功能
P3.0
(串行输入口)
P3.1
(串行输出口)
P3.2
(外部中断0)
P3.3
(外部中断1)
P3.4
(定时器0的外部输入)
P3.5
(定时器1的外部输入)
P3.6
(外部数据存储器写选通)
P3.7
(外部数据存储器读选通)
3、开关状态检测
开关状态检测,对8051来说是输入关系,可轮流检测每个开关状态,以每个开关的状态让相应的发光二极管指示,采用JNB
P1.X,REL
指令来完成;也可以一次性检测五路开关状态,让它指示,可以用MOV
A,P1
指令一次把P1
端口的状态全部读入,取低5位的状态来指示。
4、输出控制
以发光二极管D0—D7来指示,此设计用SETB
P0.X
和CLR
P0.X
指令来完成,也可以用指令MOV
P0,#111XXXXXB
方法来实现。
5、汽车转弯灯显示
在汽车转弯或应急状态下,外部信号灯和仪表板它们指示灯的闪烁频率为1HZ,称低频信号。当停靠开关合上时,外部信号灯以30HZ频率闪烁此时为高频信号。
6、汽车转弯灯控制
汽车转弯灯设计5个按键控制信号灯的转向、停靠、应急等。按键安排见下:
S1(TK)键为停靠开关;
S2(TL)键为左转弯开关;
S3(TR)键为右转弯开关;
S4(JJ)键为紧急开关;
S5(SC)键为刹车开关;
汽车转弯灯主要有单片机、按键、复位、时钟、电源、故障检测电路、LED显示电路组成最基本的单片机系统。单片机本身的功能强大,汽车转弯灯的驱动用单片机本身的驱动来驱动。时钟电路由晶振及电容组成,复位电路由按键复位结构组成。对于键盘电路我们采用独立式键盘,可以具体实现可分为以下几种情况:①直接由并行I/O口来实现。②使用三极管驱动LED来实现。
7、时钟电路
采用单片机内部晶振。在MCS-51系列单片机内部有一个高增益反向放大器,其输入端为芯片引脚XTAL1,输出端为引脚XTAL2。而在芯片外部XTAL1和
XTAL2之间跨接晶体振荡器和微调电容,形成反馈电路,就构成了一个稳定的自激振荡器。外接晶体振荡器以及电容C1和C2构成并联谐振电路,接在放大器的反馈回路中,
C1和C2的大小会对振荡器频率的高低、振荡器的稳定性、起振的快速性和温度特性有一定的影响。因此建议在采用石英晶体振荡器时C=30+/-10pF,陶瓷振荡器时,C=40+/-10pF,典型值为40pF。在设计电路板时,振荡器和电容应尽量安装得与单片机靠近,以减小寄生电容的存在更好的保障振荡器稳定、可靠的工作。
图4.4
时钟振荡电路
8、信号灯电路
LED具有二极管的特性,但在导通之后会发光,称之为发光二极管。与普通的灯泡一样,LED导通后,随着其俩端电压的增加,电流急剧增加,所以,必须给LED串联一个限流电阻,否则一旦通电,LED会被烧坏。要用74LS373来控制LED,显然这个LED必须要与74LS373单片机的某个脚相连。这里把LED与74LS373单片机的P0脚相连。当74LS373单片机的第1脚是高电平时,LED不亮,当第1脚是低电平时,LED亮。但是在汽车转弯灯里要根据汽车方向来控制信号灯,而实现LED的亮与灭。
9
、软件设计
1.
主程序流程图
初始化
P1赋值给A
#0FEH=A?
#0FDH=A?
#0FBH=A?
#0F7H=A?
#0EFH=A?
#0FFH=A?
#04H=50H
,#1FH=P0
#04H=50H
,#0F8H=P0
#0DEH=P0
#04H=50H
,#9CH=P0
#01H=50H
,#18H=P0
#0FFH=P0
调用延时子程序
0FFH=P0
调用延时子程序
2.延时子程序流程图
#0FFH=R6,#0FFH=R7
50H=R5
R7-1≠0?
R6-1≠0?
R5-1≠0?
开
始
结
束
汽车转弯灯单片机控制系统接线图
电路原理图
四、实习步骤
1、使用汽车转弯信号灯控制实验模块。、
2、安装好仿真器,用串行数据通信线连接计算机与仿真器,把仿真头插到模块的单片机插座中,打开模块电源,插上仿真器电源插头。
3、启动计算机,打开伟福仿真软件,进入仿真环境。选择仿真器型号、仿真头型号、CPU类型;选择通信端口,测试串行口。
4、打开NIU.ASM源程序,编译无误后,全速运行程序,按表中的各种驾驶操作,打开相应开关,观察发光二极管的亮灭与闪烁,数码显示管的显示。
五、实习程序清单及注释
实现运行程序如下:
TEMP
EQU
30H
DIN
BIT
P1.6
CLK
BIT
P1.7
ORG
0000H
LJMP
BEGAIN
BEGAIN:
MOV
SP,#40H
MOV
TMOD,#01H
MOV
TH0,#3CH
MOV
TL0,#0B0H
CLR
EA
MOV
P3,#0FFH
MOV
R0,#10
MOV
A,P3
XRL
A,#0FFH
ANL
A,#1FH
MOV
DPTR,#TABLE
RL
A
JMP
@A+DPTR
TABLE:
AJMP
GO0
AJMP
GO1
AJMP
GO2
AJMP
GOX
AJMP
GO4
AJMP
GOX
AJMP
GOX
AJMP
GOX
AJMP
GO8
AJMP
GO9
AJMP
GO10
AJMP
GOX
AJMP
GO12
AJMP
GO13
AJMP
GO14
AJMP
GOX
AJMP
GO16
AJMP
GOX
AJMP
GOX
AJMP
GOX
AJMP
GOX
AJMP
GOX
AJMP
GOX
AJMP
GOX
AJMP
GOX
AJMP
GOX
AJMP
GOX
AJMP
GOX
AJMP
GOX
AJMP
GOX
AJMP
GOX
AJMP
GOX
GO0:
MOV
P1,#0FFH
LJMP
BEGAIN
GO1:MOV
P1,#11101010B
SETB
TR0
WAIT10:
JNB
TF0,WAIT10
CLR
TF0
MOV
TH0,#3CH
MOV
TL0,#0B0H
SETB
TR0
DJNZ
R0,WAIT10
MOV
R0,#10
CPL
P1.0
CPL
P1.2
CPL
P1.4
WAIT11:
JNB
TF0,WAIT11
CLR
TF0
MOV
TH0,#3CH
MOV
TL0,#0B0H
SETB
TR0
DJNZ
R0,WAIT11
MOV
TEMP,#40H
MOV
TEMP+1,#40H
MOV
TEMP+2,#05BH
MOV
TEMP+3,#38H
LCALL
DISPLAY
LJMP
BEGAIN
GO2:
MOV
P1,#11010101B
SETB
TR0
WAIT20:
JNB
TF0,WAIT20
CLR
TF0
MOV
TH0,#3CH
MOV
TL0,#0B0H
SETB
TR0
DJNZ
R0,WAIT20
MOV
R0,#10
CPL
P1.1
CPL
P1.3
CPL
P1.5
WAIT21:
JNB
TF0,WAIT21
CLR
TF0
MOV
TH0,#3CH
MOV
TL0,#0B0H
SETB
TR0
DJNZ
R0,WAIT21
MOV
TEMP,#40H
MOV
TEMP+1,#40H
MOV
TEMP+2,#05BH
MOV
TEMP+3,#77H
LCALL
DISPLAY
LJMP
BEGAIN
GO4:
MOV
P1,#11111111B
SETB
TR0
WAIT40:
JNB
TF0,WAIT40
CLR
TF0
MOV
TH0,#3CH
MOV
TL0,#0B0H
SETB
TR0
DJNZ
R0,WAIT40
MOV
R0,#10
CPL
P1.0
CPL
P1.1
CPL
P1.2
CPL
P1.3
CPL
P1.4
CPL
P1.5
WAIT41:JNB
TF0,WAIT41
CLR
TF0
MOV
TH0,#3CH
MOV
TL0,#0B0H
SETB
TR0
DJNZ
R0,WAIT41
MOV
TEMP,#40H
MOV
TEMP+1,#40H
MOV
TEMP+2,#0EH
MOV
TEMP+3,#0EH
LCALL
DISPLAY
LJMP
BEGAIN
GO8:MOV
P1,#11001111B
MOV
TEMP,#40H
MOV
TEMP+1,#40H
MOV
TEMP+2,#39H
MOV
TEMP+3,#6DH
LCALL
DISPLAY
LCALL
delay
LJMP
BEGAIN
GO9:MOV
P1,#11001010B
SETB
TR0
WAIT90:JNB
TF0,WAIT90
CLR
TF0
MOV
TH0,#3CH
MOV
TL0,#0B0H
SETB
TR0
DJNZ
R0,WAIT90
MOV
R0,#10
CPL
P1.0
CPL
P1.2
CPL
P1.4
WAIT91:JNB
TF0,WAIT91
CLR
TF0
MOV
TH0,#3CH
MOV
TL0,#0B0H
SETB
TR0
DJNZ
R0,WAIT91
MOV
TEMP,#39H
MOV
TEMP+1,#6DH
MOV
TEMP+2,#05BH
MOV
TEMP+3,#38H
LCALL
DISPLAY
LJMP
BEGAIN
GO10:MOV
P1,#11000101B
SETB
TR0
WAIT100:JNB
TF0,WAIT100
CLR
TF0
MOV
TH0,#3CH
MOV
TL0,#0B0H
SETB
TR0
DJNZ
R0,WAIT100
MOV
R0,#10
CPL
P1.1
CPL
P1.3
CPL
P1.5
WAIT101:JNB
TF0,WAIT101
CLR
TF0
MOV
TH0,#3CH
MOV
TL0,#0B0H
SETB
TR0
DJNZ
R0,WAIT101
MOV
TEMP,#39H
MOV
TEMP+1,#6DH
MOV
TEMP+2,#05BH
MOV
TEMP+3,#77H
LCALL
DISPLAY
LJMP
BEGAIN
GO12:MOV
P1,#11000000B
SETB
TR0
WAIT120:JNB
TF0,WAIT120
CLR
TF0
MOV
TH0,#3CH
MOV
TL0,#0B0H
SETB
TR0
DJNZ
R0,WAIT120
MOV
R0,#10
CPL
P1.0
CPL
P1.1
CPL
P1.2
CPL
P1.3
WAIT121:JNB
TF0,WAIT121
CLR
TF0
MOV
TH0,#3CH
MOV
TL0,#0B0H
SETB
TR0
DJNZ
R0,WAIT121
MOV
TEMP,#0EH
MOV
TEMP+1,#0EH
MOV
TEMP+2,#39H
MOV
TEMP+3,#6DH
LCALL
DISPLAY
LJMP
BEGAIN
GO13:
MOV
P1,#11000000B
SETB
TR0
WAIT130:JNB
TF0,WAIT130
CLR
TF0
MOV
TH0,#3CH
MOV
TL0,#0B0H
SETB
TR0
DJNZ
R0,WAIT130
MOV
R0,#10
CPL
P1.0
CPL
P1.1
CPL
P1.2
CPL
P1.3
CPL
P1.4
WAIT131:JNB
TF0,WAIT131
CLR
TF0
MOV
TH0,#3CH
MOV
TL0,#0B0H
SETB
TR0
DJNZ
R0,WAIT131
MOV
TEMP,#0EH
MOV
TEMP+1,#0EH
MOV
TEMP+2,#6DH
MOV
TEMP+3,#38H
LCALL
DISPLAY
LJMP
BEGAIN
GO14:MOV
P1,#11000000B
SETB
TR0
WAIT140:JNB
TF0,WAIT140
CLR
TF0
MOV
TH0,#3CH
MOV
TL0,#0B0H
SETB
TR0
DJNZ
R0,WAIT140
MOV
R0,#10
CPL
P1.0
CPL
P1.1
CPL
P1.2
CPL
P1.3
CPL
P1.5
WAIT141:JNB
TF0,WAIT141
CLR
TF0
MOV
TH0,#3CH
MOV
TL0,#0B0H
SETB
TR0
DJNZ
R0,WAIT141
MOV
TEMP,#0EH
MOV
TEMP+1,#0EH
MOV
TEMP+2,#6DH
MOV
TEMP+3,#77H
LCALL
DISPLAY
LJMP
BEGAIN
GO16:MOV
P1,#11000011B
SETB
TR0
WAIT160:JNB
TF0,WAIT160
CLR
TF0
MOV
TH0,#3CH
MOV
TL0,#0B0H
SETB
TR0
CPL
P1.2
CPL
P1.3
CPL
P1.4
CPL
P1.5
WAIT161:
JNB
TF0,WAIT161
CLR
TF0
MOV
TH0,#3CH
MOV
TL0,#0B0H
SETB
TR0
MOV
TEMP,#00H
MOV
TEMP+1,#00H
MOV
TEMP+2,#70H
MOV
TEMP+3,#78H
LCALL
DISPLAY
LJMP
BEGAIN
GOX:
MOV
TEMP,#73H
MOV
TEMP+1,#38H
MOV
TEMP+2,#79H
MOV
TEMP+3,#76H
LCALL
DISPLAY
LCALL
delay
LJMP
BEGAIN
DISPLAY:
MOV
R0,#TEMP
MOV
R3,#4
DP12:MOV
R7,#8
MOV
A,@R0
DP13:RLC
A
MOV
DIN,C
CLR
CLK
SETB
CLK
DJNZ
R7,DP13
INC
R0
DJNZ
R3,DP12
RET
Delay:
MOV
r5,#5
DLoop0:
MOV
r6,#0
DLoop1:
MOV
r7,#0
DLoop2:
NOP
NOP
DJNZ
r7,DLoop2
DJNZ
r6,DLoop1
DJNZ
r5,DLoop0
RET
END
四.总结
一周的单片机实训结束了,在我和我们组的组员的共同努力下,在老师的指导和同学的帮助下,我们成功的完成了汽车信号灯控制系统的设计任务。本学期我们学习了AT89C51单片机的编程设计,看似简单的题目自己动手编写却没想象的那么简单。刚拿到设计题目时,有种似曾相识的感觉,我们做的题目和以前实验课上做的实验很相似,通过调用几个实验的程序就能完成这个设计。我们先讨论了并决定了设计方案,但在自己编程时,却发现自己平时上课学习的知识掌握的不扎实的,在编写时常常出现这样那样的错误。调用时程序格式错误,子程序编写错误等等。最终,我们还是成功完成了本次设计,很有成就感。通过这次设计,我再一次学习了单片机的程序设计,特别是多分支程序的设计方法,对一些知识又加深了印象,加深了对所学理论知识的巩固和理解。本次实训虽然只有短短的一周,但在这一周中通过自己的努力完成的程序设计是这一学期课程学习的成果,是对自己本学期的肯定,同时又提高了自己的动手和动脑能力,更主要的是增强了对这门课程学习的信心。同时团队的合作也是十分重要的。了解到了单片机在平时日常生活中的应用是如此的广泛,在信息技术日益发达的现代社会,学习一门技术是多么的重要。在今后的学习生活中,我们要更加开阔视野,拓展自己的思路,活跃自己的大脑,锻炼自己的思维能力。认真学习知识,把学到的知识运用到日常的生活中,为以后的毕业工作打好扎实的基础。
-
14
-