交通灯汇编语言课程设计【精选文档】

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

交通灯汇编语言课程设计【精选
文档】
(文档可以直接使用,也可根据实际需要修改使用,可编辑推荐下载)
课程设计说明书
题目交通灯系统设计
系(部) 信息工程系
专业电气工程及其自动化
班级
学生姓名
学号070812327
12 月7 日至12 月18 日共 2 周
指导教师(签字)
系主任(签字)
2009年12 月 4 日
课程设计任务书
题目交通灯系统设计
系(部) 信息工程系
专业电气工程及其自动化
班级
学生姓名
学号070812327
12 月7 日至12 月18 日共 2 周
指导教师(签字)
系主任(签字)
2009年12 月 4 日
成绩评定表
目录
一、设计任务与要求 (1)
1、设计任务与要求的分析 (1)
二、软件设计 (2)
1、显示原理 (2)
2、计数器初值计算 (2)
3、每秒钟的设定 (2)
4、控制系统、时间显示模块 (3)
三、硬件电路设计 (5)
1、74LS164的应用 (5)
2、LED显示器件工作原理 (5)
四、安装与调试 (5)
五、结论与心得 (7)
六、参考文献 (7)
附录:
1、源程序
2、系统原理图
摘要
本系统由单片机系统、键盘、LED 显示、数码管显示、交通灯演示系统组成。

系统除基本交通灯功能外,还具有倒计时、时间设置、信号灯闪烁、信号灯颜色分时亮、分时段调整信号灯的点亮时间等功能。

同时给出了软硬件设计方法,设计过程包括硬件电路设计和程序设计两大步骤,
关键词:AT80C51单片机、交通灯控制系统、定时循环、数码管显示、延时。

一、设计任务与要求
假设一个十字路口为东西南北走向。

开始为四个路口的红灯全部亮之后,东西路口的绿灯亮,南北路口的红灯亮,东西路口方向通车,延时一段时间后(20秒),东西路口的绿灯,闪烁若干次后(3秒),东西路口的绿灯熄灭,同时东西路口的黄灯亮,延时一段时间后(2秒),东西路口的红灯亮,南北路口的绿灯亮,南北路口方向通车,延时一段时间后(20秒),南北路口的绿灯闪烁若干次后(3秒),南北路口的绿灯熄灭,同时南北路口的黄灯亮,延时一段时间后(2秒),再切换到东西路口的绿灯亮,南北路口的红灯亮,之后重复以上过程。

扩展部分:用LED数码管显示时间。

1、设计任务与要求的分析
对于具体过程的分析:东西南北红灯(0.1S)东西绿南北红(20S)东西绿灯闪烁(3S)东西黄灯亮(1S)南北绿灯亮(20S)南北绿灯闪烁(3S)南北黄灯亮(2S).上述思路可分为两个循环:一个是在南北绿灯亮之前,南北红灯一直亮着(25S)随后是南北灯亮的过程中东西红灯一直亮着(25S)。

分别用数码管定时20S,25S记录红灯和绿灯持续时间。

25秒后南北方向的持续情况与东西对调.这样就完成了一次整体循环。

二、软件设计
1、显示原理
交通信号灯控制逻辑如下:假设一个十字路口为东西南北走向。

开始为四个路口的红灯全部亮之后,东西路口的绿灯亮,南北路口的红灯亮,延时一段时间后,东西路口的绿灯,闪烁若干次后(3秒),东西路口的绿灯熄灭,同时东西路口的黄灯亮,延时一段时间后(2秒),东西路口的红灯亮,南北路口的绿灯亮,延时一段时间后,南北路口的绿灯闪烁若干次后(3秒),南北路口的绿灯熄灭,同时南北路口的黄灯亮,延时一段时间后(2秒),再切换到东西路口的绿灯亮,南北路口的红灯亮,之后重复以上过程。

静态数码管显示电路由四只74LS164、四只共阴极LED数码管组成。

输入只有两个信号,它们是串行数据线DIN和移位信号CLK。

四只74LS164首尾相连,每只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中。

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 AB
MOV DBUF+1,A
MOV A,B
MOV DBUF, A
MOV A, SECOND2
MOV B, #10
;16进制数拆成两个10进制
DIV AB
MOV DBUF+3, A
MOV A,B
MOV DBUF+2, A
MOV R0,#DBUF
MOV R7,#4
DP10: MOV DPTR,#LEDMAP
MOV A,@R0
MOVC A,@A+DPTR
MOV @R1,A
INC R1
DJNZ R7,DP10
MOV R0,#TEMP
MOV R1,#4
DP12: MOV R7,#8
MOV A,@R0
DP13: RLC A
MOV DIN,C
CLR CLK
SETB CLK
DJNZ R7,DP13
INC R0
DJNZ R1,DP12
RET
LEDMAP: 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, , -
三.硬件电路设计
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;
P12同时接
G2、G4;P13同时接R2、R4;P16、P17分别接静态数码显示的DIN、CLK。

2)启动PC机,打开Keil uVision2软件,加载程序,编译,下载,运行。

3)观察十字路口交通灯效果
可见开始为四个路口的红灯全部亮之后,东西路口的绿灯亮,南北路口的红灯亮,东西路口方向通车,延时一段时间后(20秒),东西路口的绿灯,闪烁若干次后(3秒),东西路口的绿灯熄灭,同时东西路口的黄灯亮,延时一段时间后(2秒),东西路口的红灯亮,南北路口的绿灯亮,南北路口方向通车,延时一段时间后(20秒),南北路口的绿灯闪烁若干次后(3秒),南北路口的绿灯熄灭,同时南北路口的黄灯亮,延时一段时间后(2秒),再切换到东西路口的绿灯亮,南北路口的红灯亮.
五、结论与心得
通过这次课程设计,加深了对很多知识的理解,自己做一个东西的时候,才会知道理论与实际的差别。

这过对交通灯的设计,也学到了很多原来不熟悉或没有掌握好的知识,像查询及其数码管的应用。

对于肯本上的指令理解的更深入了,原来没有记住的指令,通过这次设计,都能熟悉的运用。

通过这次设计,自己更学到了一些书本之外的知识。

例如,如何控制自己的情绪,如何与同学相互配合来完成任务,必需加强团队意识,调节自己的心态。

六、参考文献
夏继强. 单片机实验与实践教程. 北京:北京航空航天大学出版社, 2001赵晓安. MCS-51单片机原理及应用. 天津:天津大学出版社,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 0100H
START:
LCALL STATE0 ;调用状态0
LCALL DELAY ;调用延时
MOV TMOD,#01H ;置T0工作方式1
MOV TH0, #3CH ;置T0定时初值50mS
MOV TL0, #0B0H
SETB TR0 ;启动T0
CLR EA
LOOP: MOV R2,#20 ;置1S计数初值 50mS*20=1S MOV R3,#20 ;红灯20S
MOV SECOND1,#25 ;东西秒显示初值25S
MOV SECOND2,#20 ;南北秒显示初值25S
LCALL DISPLAY
LCALL STATE1 ;调用状态1
WAIT1: JNB TF0,WAIT1 ;查询50mS到否
CLR 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维持20S
MOV R2,#5 ;置50mS计数初值 5*4=20
MOV R3,#3 ;绿灯闪3S
MOV R4,#4 ;闪烁间隔200mS
MOV SECOND1,#5 ;东西秒显示初值5S
MOV SECOND2,#5 ;南北秒显示初值5S
LCALL DISPLAY
WAIT2: 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 ;闪烁间隔200Ms
DJNZ R2,WAIT2 ;判1S到否?未到继续状态2
MOV R2,#5 ;置50mS计数初值
DEC SECOND1 ;东西秒显示减一
DEC SECOND2 ;南北秒显示减一
LCALL DISPLAY
DJNZ R3,WAIT2 ;状态2维持3S
MOV R2,#20 ;置50mS计数初值
MOV R3,#2 ;黄灯2S
MOV SECOND1,#2 ;东西秒显示初值2S
MOV SECOND2,#2 ;南北秒显示初值2S
LCALL DISPLAY
WAIT3: 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 ;东西秒显示减一
DEC SECOND2 ;南北秒显示减一
LCALL DISPLAY
DJNZ R3,WAIT3 ;状态3维持2S
MOV R2,#20 ;置50mS计数初值
MOV R3,#20 ;红灯20S
MOV SECOND1,#25 ;东西秒显示初值25S
MOV SECOND2,#20 ;南北秒显示初值25S
LCALL DISPLAY
WAIT4: LCALL STATE4 ;调用状态4
JNB TF0,WAIT4 ;查询50mS到否
CLR TF0
MOV TH0, #3CH ;恢复T0定时初值50mS
MOV TL0, #0B0H
DJNZ R2,WAIT4 ;判1S到否?未到继续状态4 MOV R2,#20 ;置50mS计数初值
DEC SECOND1 ;东西秒显示减一
DEC SECOND2 ;南北秒显示减一
LCALL DISPLAY
DJNZ R3,WAIT4 ;状态4维持20S
MOV R2,#5 ;置50mS计数初值 5*4=20 MOV R4,#4 ;闪烁间隔200mS
MOV R3,#3 ;绿灯闪3S
DEC SECOND1 ;东西秒显示初值5S
DEC SECOND2 ;南北秒显示初值5S
LCALL DISPLAY
WAIT5: LCALL STATE5 ;调用状态5
JNB TF0,WAIT5 ;查询50mS到否
CLR TF0
MOV TH0, #3CH ;恢复T0定时初值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 ;南北秒显示初值2S
LCALL DISPLAY
WAIT6: 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维持2S
LJMP LOOP ;大循环
STATE0: ;状态0
MOV P1,#0
CLR LED_G1
SETB LED_R1 ;东西红灯亮
CLR LED_G2
SETB LED_R2 ;南北红灯亮
RET
STATE1: ;状态1
SETB LED_G1 ;东西绿灯亮
CLR LED_R1
CLR LED_G2
SETB LED_R2 ;南北红灯亮
RET
STATE2: ;状态2
CLR LED_R1
CLR LED_G2
SETB LED_R2 ;南北红灯亮
RET
STATE3: ;状态3
SETB LED_G1
SETB LED_R1 ;东西黄灯亮
CLR LED_G2
SETB LED_R2 ;南北红灯亮
RET
STATE4: ;状态4
CLR LED_G1
SETB LED_R1 ;东西红灯亮
SETB LED_G2 ;南北绿灯亮
CLR LED_R2
RET
STATE5: ;状态5
CLR LED_G1
SETB LED_R1 ;东西红灯亮
CLR LED_R2
RET
STATE6: ;状态6
CLR LED_G1
SETB LED_R1 ;东西红灯亮
SETB LED_G2
SETB LED_R2 ;南北黄灯亮
RET
DISPLAY: ;数码显示
MOV A, SECOND1 ;东西秒寄存器
MOV B, #10 ;16进制数拆成两个10进制数 DIV AB
MOV DBUF+1,A
MOV A,B
MOV DBUF, A
MOV A, SECOND2 ;南北秒寄存器
MOV B, #10 ;16进制数拆成两个10进制数 DIV AB
MOV DBUF+3, A
MOV A,B
MOV DBUF+2, A
MOV R0,#DBUF
MOV R1,#TEMP
MOV R7,#4
DP10: 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,#4
DP12: MOV R7,#8
MOV A,@R0
DP13: RLC A
MOV DIN,C
CLR CLK
SETB CLK
DJNZ R7,DP13
INC R0
DJNZ R1,DP12
RET
LEDMAP: 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, #10
DLOOP0: MOV R6, #40
DLOOP1: MOV R7, #123
DLOOP2:
NOP
NOP
DJNZ R7, DLOOP2
DJNZ R6, DLOOP1
DJNZ R5, DLOOP0 RET
END
仿真图。

相关文档
最新文档