《微机原理与接口技术》课程设计-交通灯

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 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

相关文档
最新文档