实 训 报 告
| 学 院: | 电子与信息学院 |
| 课程名称: | 单片机课程设计 |
| 设计题目: | 交通灯控制电路设计 |
| 专 业: | 通行工程 |
| 班 级: | |
| 姓 名: | |
| 学 号: | |
| 指导教师: | |
| 时 间: | 2010-05-30 |
掌握MCS-51单片机的原理和基本应用,学会应用单片机实现交通灯的信号控制以及时间控制等实用功能。并且通过软硬结合加深对单片机各个接口功能的理解与掌握。
二、实训设计内容要求.
设计并制作一个十字路口的交通灯控制电路(用红、绿、黄发光二极管模拟显示灯),同时用2位数码管显示禁止与通行时间。要求:
A.绿灯亮表示允许通行,时间设定为20s;红灯亮表示禁止通行,时间设定为20s;黄灯亮表示警告,时间设定为3s。
B.时间显示为倒计时,六个指示灯准确的交替显示。
三、系统设计.
3.1 硬件设计.
3.1.1 实现总体模型:
3.1.2 实现实际电路:
3.1.3 80C51芯片介绍:
(1)80C51引脚图管脚图及各引脚功能介绍:
Vss(20脚):接地
VCC(40脚):主电源+5V
XTAL1(19脚):接外部晶体的一端。在片内它是振荡电路反相放大器的输入端。在采用外部时钟时,对于HMOS单片机,该端引脚必须接地;对于CHMOS单片机,此引脚作为驱动端。
XTAL2(18脚): 接外部晶体的另一端。在片内它是一个振荡电路反相放大器的输出端,振荡电路的频率是晶体振荡频率。若需采用外部时钟电路,对于HMOS单片机,该引脚输入外部时钟脉冲;对于CHMOS单片机,此引脚应悬浮。
RST(9脚): 单片机刚接上电源时,其内部各寄存器处于随机状态,在该脚输入24个时钟周期宽度以上的高电平将使单片机复位(RESET)
PSEN(29脚): 在访问片外程序存储器时,此端输出负脉冲作为存储器读选通信号。CPU在向片外存储器取指令期间,PSEN信号在12个时钟周期中两次生效。不过,在访问片外数据存储器时,这两次有效PSEN信号不出现。PSEN端同样可驱动8个LSTTL负载。我们根据PSEN、ALE和XTAL2输出端是否有信号输出,可以判别80C51是否在工作。
ALE/PROG(30脚):在访问片外程序存储器时,此端输出负脉冲作为存储器读选通信号。CPU在向片外存储器取指令期间,PSEN信号在12个时钟周期中两次生效。不过,在访问片外数据存储器时,这两次有效PSEN信号不出现。PSEN端同样可驱动8个LSTTL负载。我们根据PSEN、ALE和XTAL2输出端是否有信号输出,可以判别80C51是否在工作。
EA/VPP(31脚): 当EA端输入高电平时,CPU从片内程序存储器地址0000H单元开始执行程序。当地址超出4KB时,将自动执行片外程序存储器的程序。当EA输入低电平时,CPU仅访问片外程序存储器。在对87C51EPROM编程时,此引脚用于施加编程电压VPP。
(2)80C51单片机的内部结构:
(3)80C51存贮器的结构:
(4)80C51特殊功能寄存器:
(5)时钟接法:
(6)复位方式:
复位信号是高电平有效,高电平有效的持续时间应为24个时钟周期以上,若时钟频率为6MHz,则复位信号至少应持续4μs以上,才可以使单片机可靠复位。
复位后各寄存器状态:(PC)= 0000H .
3.1.4 工作原理:
(1) 由80C51单片机的P1口显示红、绿、黄灯的亮灭情况;由P0口显示每个灯的亮灭时间。绿、黄、红时间分别为20秒、3秒、20秒循环,由80C51单片机的 P0口输出显示。
(2) 通过单片机的P2口中任两位来控制数码管的高低位显示,模拟接线接21、22脚,在实际电路焊接中是接了23、26即对应P2.2(十位)、P2.5(个位)口来控制,软件中相应位也对应为P2.2和P2.5即可。
(3)南北红,东西绿,红灯倒计时20秒后然后灭。
(4)南北黄,东西黄,黄灯闪动3秒。
(5)南北绿,东西红,绿灯倒计时20秒后,重新开始循环。
3.2 软件设计.
3.2.1 时间的设定:
采用软延时的方法。MCS-51单片机的工作频率为12MHZ,机器周期是时钟周期的12倍,所以一个机器周期的时间为12*(1/12M)=1us。我们可以知道具体每条指令的周期数,这样我们就可以通过指令的执行条数来确定时间。
①延时10MS程序如下:
DLY10MS:MOV R6,#20
D1: MOV R7,248
DJNZ R7,$
DJNZ R6,D1
RET
②延时100MS程序如下:
DLY100MS:MOV R6,#200
D10: MOV R7,248
DJNZ R7,$
DJNZ R6,D10
RET
3.2.2 时间及信号灯的显示:
80C51虽然有4个8位I/O端口,但真正能提供借用的只有P1口,因为P2和P0口通常用于传送外部传送地址和数据,P3口也有它的第二功能。当定时器定时为1秒,时程序跳转到时间显示及信号灯显示子程序,它将依次显示信号灯时间 ,同时一直显示信号灯的颜色,这时在返回定时子程序定时一秒,再显示黄灯的下一个时间,这样依次把所有的灯色的时间显示完后在重新给时间计数器赋初值 ,重新进入循环。
3.2.3 输出信号与数码管的连接:
LED 灯的显示原理:通过同名管脚上所加电平的高低来控制发光二极管是否点量而显示不同的字形如 SP,g,f,e,d,c,b,a 管角上加上7FH所以 SP上为0伏,不亮其余为TTL高电平,全亮则显示为8。采用共阴级连接。
其中 PC0\\PB0-a,PC1\\PB1-b,PC2\\PB2-c,PC3\\PB3-d,PC4\\PB4-e, PC5\\PB5-f,PC6\\PB6-g,PC7\\PB7 -SP接单片机的32脚。
驱动代码表如下:
| 显示数值 | (dop) g f e d c b a | 驱动代码(16进制) |
| 0 | 0 0 1 1 1 1 1 1 | 7DH |
| 1 | 0 0 0 0 0 1 1 0 | 28H |
| 2 | 0 1 0 1 1 0 1 1 | 5BH |
| 3 | 0 1 0 0 1 1 1 1 | 7AH |
| 4 | 0 1 1 0 0 1 1 0 | 2EH |
| 5 | 0 1 1 0 1 1 0 0 | 76H |
| 6 | 0 1 1 1 1 1 0 0 | 77H |
| 7 | 0 0 0 0 0 1 1 1 | 38H |
| 8 | 0 1 1 1 1 1 1 1 | 7FH |
| 9 | 0 1 1 1 1 1 1 1 | 7EH |
四、调试方法及步骤.
1.用伟福编译器先调试设计好的程序,方法是打开伟福编译器后新建项目,加入模块文件.asm保存到文件夹下,名字自定即可,然后打开.asm模块文件,再编译检查是否正确通过。
2.若出现错误,就要修改错误,(比如指令错误,或者是符号错误等)编译全部通过后再接外围硬件电路,接上仿真头,硬件电路供电后再开启仿真头,然后正确设置好仿真器,最后全速运行,查看硬件电路显示结果是否与原设计思想一致。
3.显示结果正确后结束仿真,先停止运行程序,再关掉仿真头开关,最后断电,撬开仿真器。
五、结果与讨论.
实验结果正确显示了先是南北红,东西绿,倒计时20秒后,黄灯闪亮3秒,接着南北绿,东西红,倒计时20秒后,黄灯闪亮3秒,如此重复执行。如果按下复位键,所有的状态重新开始,即是南北方向亮绿灯。由于人行道和车道的状态一致,所以只用两组灯就可以,且由于显示时间一致,所以用一个2位7段译码管显示4路时间。
六、参考文献.
1.《单片机原理及应用技术》 主编 吴黎明
2.《电子技能与EDA技术》 主编 韩 克 柳秀山
七、实验感想.
在本次实训作品交通灯控制电路的设计和制作中,我对电子设计方面有了很大的提高,同时也更加的了解十字路口交通灯的工作原理和实际应用过程。也对前一阶段的单片机课程学习和各种EDA设计软件的学习有了进一步的巩固和提高。对一些单片机的应用,延迟电路的设计应用和数码管的电路程序的应用有了更多的理解。
在设计的过程,先是设计好电路图后,开始到实验室进行电路焊接,最后到作品的调试,其中在整个过程中,遇到了很大的挑战和困难,不过最后在同学们的帮助下都得以一一解决。从开始数码管的选择错误到最后的电路调试,从开始的程序编写,到最后的软件测试,大家互相帮助,共同进步。同时对相关设计软件应用也有了进一步的了解和熟悉,也对电子设计的整体流程有了更多的理解。
经过这次实训课程设计,我学到了很多书本上没有的,比较实际、实用的东西,学会了怎样将理论知识运用到实际设计当中,对实验设备和设计软件的使用和分析问题解决问题的能力也有了很大的提高。同时也明白了电路焊接和作品调试时,需要更多的耐心。通过这次实训课程设计,不仅可以在专业上可以学到更多的知识,同时也对平时的学习和工作中产生了影响,那就是认认真真的去完成每一件事。
附录(程序清单)
ORG 00H
AJMP START
ORG 0BH
RETI
ORG 30H
START:MOV SP,#60H ;置堆栈指针
MOV A,#0FFH
MOV P0,A
MOV P1,A
MOV P2,A ;初始化端口
CLR 00H ;显示标志位初始化
MOV DPTR,#TAB ;装入显示表头
LOOP1:MOV R0,#20 ;南北红,东西绿
MOV P1,#11011110B
LIN: ACALL TO_BCD
ACALL DISPLAY1
MOV A,#00H
CLR C ;进位位清0
SUBB A,R0
DEC R0
CJNE R0,#00,LIN
LOOP2: MOV R0,#3 ;黄灯亮
KE: MOV P1,#11101101B
ACALL TO_BCD
ACALL DISPLAY2
ACALL DLY100MS
MOV P1,#11111111B
ACALL DISPLAY2
ACALL DLY100MS
MOV A,#00H
CLR C
SUBB A,R0 ;进位位清0
DEC R0
JC KE
LOOP3:MOV R0,#20 ; 南北绿,东西红
MOV P1,#11110011B
LIN1:ACALL TO_BCD
ACALL DISPLAY1
MOV A,#00H
CLR C ;进位位清0
SUBB A,R0
DEC R0
CJNE R0,#00,LIN1
LOOP4:MOV R0,#3 ;黄灯亮
YE:MOV P1,#11101101B
ACALL TO_BCD
ACALL DISPLAY2
ACALL DLY100MS
MOV P1,#11111111B
ACALL DISPLAY2
ACALL DLY100MS
MOV A,#00H
CLR C
SUBB A,R0
DEC R0
JC YE
AJMP LOOP1
TO_BCD:MOV A,R0 ;BCD转换
MOV B,#10
DIV AB
MOV R1,A
MOV R2,B
RET
DISPLAY2:MOV A,#40 ;20*20=0.4S
MOV R3,A
NEXT2:MOV A,R2 ;个位显示
ACALL DISPLAY
CLR P2.5
ACALL DLY10MS
SETB P2.5
MOV A,R1 ;取十位显示
ACALL DISPLAY
CLR P2.2
ACALL DLY10MS
SETB P2.2
DJNZ R3,NEXT2
RET
DELAY:MOV R7,#10 ;延时1s程序
DEL1:MOV R6,#200
DEL2:MOV R5,#248
DJNZ R5,$
DJNZ R6,DEL2
DJNZ R7,DEL1
RET
DISPLAY1:MOV A,#50 ;50*20=1S
MOV R3,A
NEXT:MOV A,R2 ;个位显示
ACALL DISPLAY
CLR P2.5
ACALL DLY10MS
SETB P2.5
MOV A,R1;取十位
ACALL DISPLAY
CLR P2.2
ACALL DLY10MS
SETB P2.2
DJNZ R3,NEXT
RET
DISPLAY:MOVC A,@A+DPTR
MOV P0,A
RET
DLY10MS:MOV R6,#20
D1: MOV R7,248
DJNZ R7,$
DJNZ R6,D1
RET
DLY100MS:MOV R6,#200
D10: MOV R7,248
DJNZ R7,$
DJNZ R6,D10
RET
ORG 300H
;LED显示数据
TAB:
DB 7DH,28H,5BH,7AH,2EH,76H,77H,38H,7FH,7EH;
;77H,7CH,39H,5EH,79H,71H,00H,共阴数码管字段码
;TAB:DB 5FH,06H,3BH,2FH
DB 66H,6DH,7DH,07H
DB 7FH,6FH
END下载本文