汽车转弯灯单片机实习报告
汽车转弯灯单片机控制系统实习报告
一、实习目的
1、掌握51系列单片机的常用指令。
2、熟练的编写51系列单片机的分支程序和一些子程序,如延时子程序。
二、实习要求
模拟汽车在驾驶中的左转弯、右转弯、刹车、合紧急开关、停靠等操作。在左转弯或右转弯时,通过转弯操作杆使左转弯或右转弯开关合上,从而使左头信号灯、仪表板的左转弯灯、左尾信号灯或右头信号灯、仪表板的右转弯信号灯、右尾信号灯闪烁;闭合紧急开关时以上六个信号灯全部闪烁;汽车刹车时,左右两个尾信号灯点亮;若正当转弯时刹车,则转弯时原闪烁的信号灯应继续闪烁,同时另一个尾信号灯点亮,以上闪烁的信号灯以1Hz频率慢速闪烁;在汽车停靠开关合上时左头信号灯、右头信号灯、左尾信号灯、右尾信号灯以10Hz频率快速闪烁。任何在下表中未出现的组合,都将出现故障指示灯闪烁,闪烁频率为10Hz。
数码管正常情况下显示操作功能的所写,故障情况显示“HELP” 在各种模拟驾驶开关作时,信号灯输出的信号如下表: 输出信号 驾驶操作 左转弯灯 右转弯灯 左头灯 右头灯 左尾灯 右尾灯 数码管显示 闪烁 灭 闪烁 灭 闪烁 灭 闪烁 闪烁 闪烁 灭 灭 闪烁 闪烁 灭 灭 闪烁 闪烁 闪烁 闪烁 灭 闪烁 灭 闪烁 灭 闪烁 灭 闪烁 闪烁 闪烁 闪烁 10Hz 灭 闪烁 闪烁 灭 灭 闪烁 闪烁 闪烁 闪烁 闪烁 10Hz 闪烁 灭 闪烁 亮 闪烁 亮 亮 闪烁 闪烁 闪烁 10Hz 灭 闪烁 闪烁 亮 亮 闪烁 亮 亮 闪烁 闪烁 10Hz LZ-- RZ-- JJ-- SC-- LZSC RZSC SCJJ LSJJ RSJJ 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:接地。
- 2 -
(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 替代的专用功能
RXD(串行输入口) TXD(串行输出口) INT0(外部中断0) P3.3 P3.4 P3.5 P3.6 INT1(外部中断1) T0(定时器0的外部输入) T1(定时器1的外部输入) WR(外部数据存储器写选通) P3.7 RD(外部数据存储器读选通)
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)键为左转弯开关;
- 3 -
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的亮与灭。
- 4 -
9 、软件设计 1. 主程序流程图
初始化 P1赋值给A #0FEH#04H=50H ,调用延#0FDH#04H=50H ,0FFH=调用#0FBH#0DEH=#0F7H#04H=50H ,#0EFH#01H=50H ,#0FFH
#0FFH - 5 -
2.延时子程序流程图
开 #0FFH=R6,R7-1R6-1R5-1结
汽车转弯灯单片机控制系统接线图
电路原理图
- 6 -
- 7 -
- 8 -
四、实习步骤
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
- 9 -
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
- 10 -
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
- 11 -
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
- 12 -
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
- 13 -
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
- 14 -
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
- 15 -
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
- 16 -
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
- 17 -
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
- 18 -
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
- 19 -
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
- 20 -
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
- 21 -
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
- 22 -
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
四.总结
一周的单片机实训结束了,在我和我们组的组员的共同努力下,在老师的指导和同学的帮助下,我们成功的完成了汽车信号灯控制系统的设
- 23 -
计任务。本学期我们学习了AT89C51单片机的编程设计,看似简单的题目自己动手编写却没想象的那么简单。刚拿到设计题目时,有种似曾相识的感觉,我们做的题目和以前实验课上做的实验很相似,通过调用几个实验的程序就能完成这个设计。我们先讨论了并决定了设计方案,但在自己编程时,却发现自己平时上课学习的知识掌握的不扎实的,在编写时常常出现这样那样的错误。调用时程序格式错误,子程序编写错误等等。最终,我们还是成功完成了本次设计,很有成就感。通过这次设计,我再一次学习了单片机的程序设计,特别是多分支程序的设计方法,对一些知识又加深了印象,加深了对所学理论知识的巩固和理解。本次实训虽然只有短短的一周,但在这一周中通过自己的努力完成的程序设计是这一学期课程学习的成果,是对自己本学期的肯定,同时又提高了自己的动手和动脑能力,更主要的是增强了对这门课程学习的信心。同时团队的合作也是十分重要的。了解到了单片机在平时日常生活中的应用是如此的广泛,在信息技术日益发达的现代社会,学习一门技术是多么的重要。在今后的学习生活中,我们要更加开阔视野,
- 24 -
拓展自己的思路,活跃自己的大脑,锻炼自己的思维能力。认真学习知识,把学到的知识运用到日常的生活中,为以后的毕业工作打好扎实的基础。
- 25 -
因篇幅问题不能全部显示,请点此查看更多更全内容