《微机原理与接口技术》课程设计-交通灯
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
信息工程系 计算机科学与技术 12计本1班 1214110214 黄 福 朱 茜
2015年06月29日
院 系: 专 业: 年级班级: 学 号: 姓 名: 指导教师: 设计日期:
目录
一.课程设计目的 (3)
二.课程设计任务 (3)
三.总体设计方案 (3)
五.程序设计流程图 (4)
六. 程序连接图 (5)
七.程序清单 (5)
八.实验结果 (8)
九.课程设计总结和体会 (8)
一.课程设计目的
用汇编语言和微机原理实验箱完成实现双方向交通信号灯控制系统,以达到熟练运用汇编语言编程以及实验箱上各个芯片的灵活运用。
⒈了解交通灯管理的基本工作原理
⒉熟悉8253定时计数器的工作方式和编程应用
⒊熟悉8255A并行接口的工作方式和编程应用
二.课程设计任务
本次课程设计的内容为双方向交通信号灯的控制和管理。
具体要求如下:
1.东西方向车辆放行20秒钟。即东西方向的绿灯和南北方向的红灯同时点亮25秒钟和黄灯点亮3秒钟。
2.南北方向车辆放行20秒钟后,转为南北方向的黄灯点亮3秒钟,以警示将切换红绿灯。此时东西方向仍维持红灯点亮。
3.循环重复执行1和2两步骤。
三.总体设计方案
1、用实验系统8255A实现对信号灯的控制(B端口),A端口的PA6、PA7口用来和8253共同控制信号灯点亮的时间。
2、实验中,8255选用(10010000)方式选择字,A组工作0方式,A端口输入,PC4-PC7输出,B组0方式,B端口输出,PC3-PC0输出
3、实验中,8253采用两个计数器级联的方式达到定时的效果,8253计数器0的CLK0输入1MHZ的时钟脉冲,工作在模式3即方波发生器,理论设计OUT0 输出周期为0.01S的方波,则计数器0的初值为10000;OUT0输出的方波分别作为计数器1、计数器2的CLK1和CLK2的输入时钟脉冲,计数器1和计数器2工作方式为模式1,计数器1的初值为2500,即OUT1输出25秒,控制红绿灯的时间;计数器2初值为300,即OUT2输出3秒,控制黄灯的时间。
四.部分电路设计及功能解说
本程序设置的是东西车道亮路灯20秒,黄灯亮3秒,同时南北车道红灯23秒,接下来是东西车道红灯23秒,南北车道绿灯20秒,黄灯亮3秒。8253计数器1的OUT1连接8255A的PA7,计数器2的OUT2连接PA6,通过判断PA6和PA7的高低电平来控制信号灯亮的时间。
五.程序设计流程图
开始
初始化8255A
初始化8253
东西路口绿灯亮,南北路口红灯亮,延时20
秒后,东西路口黄灯亮并延时3秒
东西路口红灯亮,南北路口绿灯亮,延时20
秒后,南北路口黄灯亮并延时3秒
结束
六. 程序连接图
七.程序清单
CODE SEGMENT
ASSUME CS : CODE
ORG 2000H
START :MOV DX ,0FF2BH
MOV AL,90H
OUT DX,AL ;初始化8255A,A口输入,B口、C口输出
MOV DX,0043H
MOV AL,36H
MOV DX,AL ;初始化8253计数器0,工作方式为模式3
MOV AL,72H
OUT DX,AL ;初始化8253计数器1,工作方式为模式1 MOV AL,0B2H
OUT DX,AL ;初始化8253计数器2,工作方式为模式1 MOV DX,0FF29H
L:MOV AL,7DH
OUT DX,AL ;东西路口绿灯亮,南北路口红灯亮
CALL TIMER_G ;调用延时20秒子程序
MOV AL,7EH
OUT DX,AL ;东西路口黄灯亮,南北路口红灯亮
CALL TIMEY ;调用延时3秒子程序
MOV AL,0DBH
OUT DX,AL ;东西路口红灯亮,南北路口绿灯亮
CALL TIMER_G ;调用延时20秒子程序
MOV AL,0EBH
OUT DX,AL ;东西路口红灯亮,南北路口黄灯亮
CALL TIMEY ;调用延时3秒子程序
JMP L ;跳转到东西路口绿灯亮,南北路口红灯亮TIMER_G PROC
PUSH DX
PUSH AX ;将寄存器AX,DX压栈
MOV DX,0040H
MOV AX,10000
OUT DX,AL
MOV AL,AH
OUT DX,AL ;给8253计数器0赋初值
MOV AX,2000
MOV DX,0041H
OUT DX,AL
MOV AL,AH
OUT DX,AL ;给8253计数器1赋初值
MOV DX,0FF28H
P:IN AL,DX ;取8255A中A口的数据
CMP AL,80H ;若PA7为1则CPU继续检测PA7,直到PA7为0 JNZ P ;则继续执行程序,延时完成
POP AX
POP DX
RET
TIMEY PROC
PUSH DX
PUSH AX
MOV DX,0040H
MOV AX,10000
OUT DX,AL
MOV AL,AH
OUT DX,AL ;给8253计数器0赋初值
MOV DX,0042H
MOV AX,300
OUT DX,AL
MOV AL,AH
OUT DX,AL ;给8253计数器2赋初值
MOV DX,0FF28H
Q:IN AL,DX ;若PA6为1则CPU继续检测PA6,直到PA6为0 CMP AL,40H ;则继续执行程序,延时完成
JNZ Q
POP AX
POP DX
RET
CODE ENDS
END START