《交通灯汇编语言课程设计.docx》由会员分享,可在线阅读,更多相关《交通灯汇编语言课程设计.docx(19页珍藏版)》请在三一办公上搜索。
1、课 程 设 计 说 明 书题 目 交通灯系统设计 系 (部) 信息工程系 专 业 电气工程及其自动化 班 级 学生姓名 学 号 070812327 12 月 7 日至 12 月 18 日 共 2 周指导教师(签字) 系 主 任(签字) 2009年 12 月 4 日课 程 设 计 任 务 书题 目 交通灯系统设计 系 (部) 信息工程系 专 业 电气工程及其自动化 班 级 学生姓名 学 号 070812327 12 月 7 日至 12 月 18 日 共 2 周指导教师(签字) 系 主 任(签字) 2009年 12 月 4 日一、设计内容及要求假设一个十字路口为东西南北走向。开始为四个路口的红灯全
2、部亮之后,东西路口的绿灯亮,南北路口的红灯亮,东西路口方向通车,延时一段时间后(20秒),东西路口的绿灯,闪烁若干次后(3秒),东西路口的绿灯熄灭,同时东西路口的黄灯亮,延时一段时间后(2秒),东西路口的红灯亮,南北路口的绿灯亮,南北路口方向通车,延时一段时间后(20秒),南北路口的绿灯闪烁若干次后(3秒),南北路口的绿灯熄灭,同时南北路口的黄灯亮,延时一段时间后(2秒),再切换到东西路口的绿灯亮,南北路口的红灯亮,之后重复以上过程。扩展部分:用LED数码管显示时间。设计要求有具体的硬件电路和软件实现,方案切实可行,使用简单方便。二、设计原始资料单片机实验十八-交通灯控制实验;为我们开始完成相
3、应的单片机设计提供了思路。利用系统提供的双色LED显示电路。单片机实验九-串行静态数码显示实验使用四只74LS164组成四位静态数码管显示电路,在数码管上滚动显示“0”到“F”十六进制字符。三、设计完成后提交的文件和图表1计算说明书部分说明具体实现过程,方案等,相关计算等2图纸部分:相关电路原理图、软件流程图、系统框图和源程序等四、进程安排12月7日发题目;12月7日-12月8日查找资料,讨论。12月8日-12月16日具体设计。12月16日-12月18日论文撰写。12月18日上交论文。五、主要参考资料 何立民. 单片机高级教程 第1版北京:北京航空航天大学出版社,2001 赵晓安. MCS-5
4、1单片机原理及应用. 天津:天津大学出版社,2001.3 李广第 单片机基础 第1版北京:北京航空航天大学出版社,1999成 绩 评 定 表口试(答辩)成绩报告成绩总评成绩目录一、设计任务与要求.11、设计任务与要求的分析1二、软件设计21、显示原理22、计数器初值计算23、每秒钟的设定24、控制系统、时间显示模块3三、硬件电路设计51、74LS164的应用52、LED显示器件工作原理 5四、安装与调试5五、结论与心得7六、参考文献7附录:1、源程序2、系统原理图摘 要本系统由单片机系统、键盘、LED 显示、数码管显示、交通灯演示系统组成。系统除基本交通灯功能外,还具有倒计时、时间设置、信号灯
5、闪烁、信号灯颜色分时亮、分时段调整信号灯的点亮时间等功能。同时给出了软硬件设计方法,设计过程包括硬件电路设计和程序设计两大步骤, 关键词:AT80C51单片机、交通灯控制系统、定时循环、数码管显示、延时。一、设计任务与要求假设一个十字路口为东西南北走向。开始为四个路口的红灯全部亮之后,东西路口的绿灯亮,南北路口的红灯亮,东西路口方向通车,延时一段时间后(20秒),东西路口的绿灯,闪烁若干次后(3秒),东西路口的绿灯熄灭,同时东西路口的黄灯亮,延时一段时间后(2秒),东西路口的红灯亮,南北路口的绿灯亮,南北路口方向通车,延时一段时间后(20秒),南北路口的绿灯闪烁若干次后(3秒),南北路口的绿灯
6、熄灭,同时南北路口的黄灯亮,延时一段时间后(2秒),再切换到东西路口的绿灯亮,南北路口的红灯亮,之后重复以上过程。扩展部分:用LED数码管显示时间。1、设计任务与要求的分析对于具体过程的分析:东西南北红灯(0.1S)东西绿南北红(20S)东西绿灯闪烁(3S)东西黄灯亮(1S)南北绿灯亮(20S)南北绿灯闪烁(3S)南北黄灯亮(2S).上述思路可分为两个循环:一个是在南北绿灯亮之前,南北红灯一直亮着(25S)随后是南北灯亮的过程中东西红灯一直亮着(25S)。分别用数码管定时20S,25S记录红灯和绿灯持续时间。25秒后南北方向的持续情况与东西对调这样就完成了一次整体循环。二、软件设计1、显示原理
7、交通信号灯控制逻辑如下:假设一个十字路口为东西南北走向。开始为四个路口的红灯全部亮之后,东西路口的绿灯亮,南北路口的红灯亮,延时一段时间后,东西路口的绿灯,闪烁若干次后(3秒),东西路口的绿灯熄灭,同时东西路口的黄灯亮,延时一段时间后(2秒),东西路口的红灯亮,南北路口的绿灯亮,延时一段时间后,南北路口的绿灯闪烁若干次后(3秒),南北路口的绿灯熄灭,同时南北路口的黄灯亮,延时一段时间后(2秒),再切换到东西路口的绿灯亮,南北路口的红灯亮,之后重复以上过程。静态数码管显示电路由四只74LS164、四只共阴极LED数码管组成。输入只有两个信号,它们是串行数据线DIN和移位信号CLK。四只74LS1
8、64首尾相连,每只74LS164的并行输出作为LED数码管的段码。双色LED是由一个红色LED管芯和一个绿色LED管芯封装在一起,共用负极,当红色正端加高电平,绿色正端加低电平时,红灯亮;红色正端加低电平,绿色正端加高电平时,绿灯亮;两端都加高电平时,黄灯亮。2、计数器初值计算该实验采用定时/计数器T0定时,循环一秒的子程序。首先采用定时50ms,然后再计数20次的方法实现。(1)T0工作在定时方式1时,控制字TMOD配置:M1M0=01,GATE=0,C/T=0,可取方式控制字01H.(2)计算计数初值X:晶振为12MHz,所以机器周期1us。计算后将3CH送入TH0中,0E1H送入TL0中
9、。2、计数器初值计算该实验采用定时/计数器T0定时,循环一秒的子程序。首先采用定时50ms,然后再计数20次的方法实现。(1)T0工作在定时方式1时,控制字TMOD配置:M1M0=01,GATE=0,C/T=0,可取方式控制字01H.(2)计算计数初值X:晶振为12MHz,所以机器周期1us。计算后将3CH送入TH0中,0E1H送入TL0中。3、控制系统、时间显示模块源程序如下DISPLAY: ;数码显示MOV A, SECOND1;东西秒寄存器MOV B, #10;拆成两个10进制数DIV ABMOV DBUF+1,AMOV A,BMOV DBUF, AMOV A, SECOND2MOV B
10、, #10;16进制数拆成两个10进制DIV ABMOV DBUF+3, AMOV A,BMOV DBUF+2, AMOV R0,#DBUFMOV R7,#4DP10:MOV DPTR,#LEDMAPMOV A,R0MOVC A,A+DPTRMOV R1,AINC R1DJNZ R7,DP10MOV R0,#TEMPMOV R1,#4DP12:MOV R7,#8MOV A,R0DP13:RLC AMOV DIN,CCLR CLKSETB CLKDJNZ R7,DP13INC R0DJNZ R1,DP12RETLEDMAP: DB 3FH,6,5BH,4FH,66H,6DH ;0,1,2,3,4
11、,5DB 7DH,7,7FH,6FH,77H,7CH ;6,7,8,9,A,BDB 58H,5EH,7BH,71H,0,40H ;C,D,E,F, , -三 硬件电路设计1、74LS164的应用对于74IS164,我们用来联系单片机与数码管,将单片机的P1.6与P1.7口输出信号显示在数码管中。2、LED数码管显示器件工作原理即为我们选择的led工作原理图。P10同时接G1、G3;P11同时接R1、R3;P12同时接G2、G4;P13同时接R2、R4;P16、P17分别接静态数码显示的DIN、CLK。四安装与调试1)系统各跳线器处在初始设状态。P10同时接G1、G3;P11同时接R1、R3;P
12、12同时接G2、G4;P13同时接R2、R4;P16、P17分别接静态数码显示的DIN、CLK。2)启动PC机,打开Keil uVision2软件,加载程序,编译,下载,运行。3)观察十字路口交通灯效果 可见开始为四个路口的红灯全部亮之后,东西路口的绿灯亮,南北路口的红灯亮,东西路口方向通车,延时一段时间后(20秒),东西路口的绿灯,闪烁若干次后(3秒),东西路口的绿灯熄灭,同时东西路口的黄灯亮,延时一段时间后(2秒),东西路口的红灯亮,南北路口的绿灯亮,南北路口方向通车,延时一段时间后(20秒),南北路口的绿灯闪烁若干次后(3秒),南北路口的绿灯熄灭,同时南北路口的黄灯亮,延时一段时间后(2
13、秒),再切换到东西路口的绿灯亮,南北路口的红灯亮五、结论与心得通过这次课程设计,加深了对很多知识的理解,自己做一个东西的时候,才会知道理论与实际的差别。这过对交通灯的设计,也学到了很多原来不熟悉或没有掌握好的知识,像查询及其数码管的应用。对于肯本上的指令理解的更深入了,原来没有记住的指令,通过这次设计,都能熟悉的运用。 通过这次设计,自己更学到了一些书本之外的知识。例如,如何控制自己的情绪,如何与同学相互配合来完成任务,必需加强团队意识,调节自己的心态。六、参考文献夏继强. 单片机实验与实践教程. 北京:北京航空航天大学出版社, 2001 赵晓安. MCS-51单片机原理及应用. 天津:天津大
14、学出版社,2001.3 51单片机开发入门与典型实例王守中 编著 人民邮电出版附录源程序 SECOND1 EQU 30H ;东西秒寄存器SECOND2 EQU 31H ;南北秒寄存器 DBUF EQU 40H ;显示缓冲1 TEMP EQU 44H ;显示缓冲2 LED_G1 BIT P1.0 ;东西绿灯 LED_R1 BIT P1.1 ;东西红LED_G2 BIT P1.2 ;南北绿灯 LED_R2 BIT P1.3 ;南北红灯 DIN BIT P1.6 ;串行显示数据 CLK BIT P1.7 ;串行显示时钟ORG 0000H LJMP START ORG 0100HSTART: LCAL
15、L STATE0 ;调用状态0 LCALL DELAY ;调用延时 MOV TMOD,#01H ;置T0工作方式1 MOV TH0, #3CH ;置T0定时初值50mS MOV TL0, #0B0H SETB TR0 ;启动T0 CLR EALOOP: MOV R2,#20 ;置1S计数初值 50mS*20=1S MOV R3,#20 ;红灯20S MOV SECOND1,#25 ;东西秒显示初值25S MOV SECOND2,#20 ;南北秒显示初值25S LCALL DISPLAY LCALL STATE1 ;调用状态1WAIT1: JNB TF0,WAIT1 ;查询50mS到否 CLR
16、TF0 MOV TH0, #3CH ;恢复T0定时初值50mS MOV TL0, #0B0H SETB TR0 ;启动T0 DJNZ R2,WAIT1 ;判1S到否?未到继续状态1 MOV R2,#20 ;置50mS计数初值 DEC SECOND1 ;东西秒显示减一 DEC SECOND2 ;南北秒显示减一 LCALL DISPLAY DJNZ R3,WAIT1 ;状态1维持20SMOV R2,#5 ;置50mS计数初值 5*4=20 MOV R3,#3 ;绿灯闪3S MOV R4,#4 ;闪烁间隔200mS MOV SECOND1,#5 ;东西秒显示初值5S MOV SECOND2,#5 ;
17、南北秒显示初值5S LCALL DISPLAYWAIT2: LCALL STATE2 ;调用状态2 JNB TF0,WAIT2 ;查询50mS到否 CLR TF0 MOV TH0, #3CH ;恢复T0定时初值50mS MOV TL0, #0B0H DJNZ R4,WAIT2 ;判200mS到否?未到继续状态2 CPL LED_G1 ;东西绿灯闪 MOV R4,#4 ;闪烁间隔200MsDJNZ R2,WAIT2 ;判1S到否?未到继续状态2 MOV R2,#5 ;置50mS计数初值 DEC SECOND1 ;东西秒显示减一 DEC SECOND2 ;南北秒显示减一 LCALL DISPLAY
18、 DJNZ R3,WAIT2 ;状态2维持3SMOV R2,#20 ;置50mS计数初值 MOV R3,#2 ;黄灯2S MOV SECOND1,#2 ;东西秒显示初值2S MOV SECOND2,#2 ;南北秒显示初值2S LCALL DISPLAYWAIT3: LCALL STATE3 ;调用状态3 JNB TF0,WAIT3 ;查询30mS到否 CLR TF0 MOV TH0, #3CH ;恢复T0定时初值50mS MOV TL0, #0B0H DJNZ R2,WAIT3 ;判1S到否?未到继续状态3 MOV R2,#20 ;置50mS计数初值 DEC SECOND1 ;东西秒显示减一
19、DEC SECOND2 ;南北秒显示减一 LCALL DISPLAY DJNZ R3,WAIT3 ;状态3维持2SMOV R2,#20 ;置50mS计数初值 MOV R3,#20 ;红灯20S MOV SECOND1,#25 ;东西秒显示初值25S MOV SECOND2,#20 ;南北秒显示初值25S LCALL DISPLAYWAIT4: LCALL STATE4 ;调用状态4 JNB TF0,WAIT4 ;查询50mS到否 CLR TF0 MOV TH0, #3CH ;恢复T0定时初值50mS MOV TL0, #0B0H DJNZ R2,WAIT4 ;判1S到否?未到继续状态4 MOV
20、 R2,#20 ;置50mS计数初值 DEC SECOND1 ;东西秒显示减一 DEC SECOND2 ;南北秒显示减一 LCALL DISPLAY DJNZ R3,WAIT4 ;状态4维持20SMOV R2,#5 ;置50mS计数初值 5*4=20 MOV R4,#4 ;闪烁间隔200mS MOV R3,#3 ;绿灯闪3S DEC SECOND1 ;东西秒显示初值5S DEC SECOND2 ;南北秒显示初值5S LCALL DISPLAYWAIT5: LCALL STATE5 ;调用状态5 JNB TF0,WAIT5 ;查询50mS到否 CLR TF0 MOV TH0, #3CH ;恢复T
21、0定时初值100mS MOV TL0, #0B0H DJNZ R4,WAIT5 ;判200mS到否?未到继续状态5 CPL LED_G2 ;南北绿灯闪 MOV R4,#4 ;闪烁200mS DJNZ R2,WAIT5 ;判1S到否?未到继续状态5 MOV R2,#5 ;置100mS计数初值 DEC SECOND1 ;东西秒显示减一 DEC SECOND2 ;南北秒显示减一 LCALL DISPLAY DJNZ R3,WAIT5 ;状态5维持3S MOV R2,#20 ;置50mS计数初值 MOV R3,#2 ;黄灯2S DEC SECOND1 ;东西秒显示初值2S DEC SECOND2 ;南
22、北秒显示初值2S LCALL DISPLAYWAIT6: LCALL STATE6 ;调用状态6 JNB TF0,WAIT6 ;查询100mS到否 CLR TF0 MOV TH0, #3CH ;恢复T0定时初值100mS MOV TL0, #0B0H DJNZ R2,WAIT6 ;判1S到否?未到继续状态6 MOV R2,#20 ;置100mS计数初值 DEC SECOND1 ;东西秒显示减一 DEC SECOND2 ;南北秒显示减一 LCALL DISPLAY DJNZ R3,WAIT6 ;状态6维持2SLJMP LOOP ;大循环STATE0: ;状态0MOV P1,#0CLR LED_G
23、1SETB LED_R1 ;东西红灯亮CLR LED_G2SETB LED_R2 ;南北红灯亮RETSTATE1: ;状态1SETB LED_G1 ;东西绿灯亮CLR LED_R1CLR LED_G2SETB LED_R2 ;南北红灯亮RETSTATE2: ;状态2CLR LED_R1CLR LED_G2SETB LED_R2 ;南北红灯亮RETSTATE3: ;状态3SETB LED_G1SETB LED_R1 ;东西黄灯亮CLR LED_G2SETB LED_R2 ;南北红灯亮RETSTATE4: ;状态4CLR LED_G1SETB LED_R1 ;东西红灯亮SETB LED_G2 ;南
24、北绿灯亮CLR LED_R2RETSTATE5: ;状态5CLR LED_G1SETB LED_R1 ;东西红灯亮CLR LED_R2RETSTATE6: ;状态6CLR LED_G1SETB LED_R1 ;东西红灯亮SETB LED_G2SETB LED_R2 ;南北黄灯亮RETDISPLAY: ;数码显示 MOV A, SECOND1 ;东西秒寄存器 MOV B, #10 ;16进制数拆成两个10进制数 DIV AB MOV DBUF+1,A MOV A,B MOV DBUF, AMOV A, SECOND2 ;南北秒寄存器 MOV B, #10 ;16进制数拆成两个10进制数 DIV
25、AB MOV DBUF+3, A MOV A,B MOV DBUF+2, AMOV R0,#DBUF MOV R1,#TEMP MOV R7,#4DP10: MOV DPTR,#LEDMAP MOV A,R0 MOVC A,A+DPTR MOV R1,A INC R0 INC R1 DJNZ R7,DP10 MOV R0,#TEMP MOV R1,#4DP12:MOV R7,#8 MOV A,R0DP13:RLC A MOV DIN,C CLR CLK SETB CLK DJNZ R7,DP13 INC R0 DJNZ R1,DP12RETLEDMAP: DB 3FH,6,5BH,4FH,66H,6DH ;0,1,2,3,4,5 DB 7DH,7,7FH,6FH,77H,7CH ;6,7,8,9,A,B DB 58H,5EH,7BH,71H,0,40H ;C,D,E,F, , -DELAY: MOV R5, #10DLOOP0: MOV R6, #40DLOOP1: MOV R7, #123DLOOP2: NOP NOP DJNZ R7, DLOOP2 DJNZ R6, DLOOP1 DJNZ R5, DLOOP0 RET END仿真图