交通灯控制——汇编小设计
设计任务:
设计一套十字路口的交通灯管理系统。按照顺序时间控制原则,利用中断控制器和定时器。采用定时中断方式设计实现。东西向和南北向均有红黄绿灯。具备倒计时功能。
南北向通行时间20秒,准备时间5秒。在准备时间里黄灯闪烁3次,闪烁频率为1
秒,周而复始。东西向通行时间40秒,准备时间5秒。在准备时间里黄灯闪烁3次,
闪烁频率为1秒,周而复始。东西向参照下边的时序控制图。
设计要求如下:
硬件测试通过。8259能够实现中断。8254能够实现呼吸灯。8255能够控制L8—L15的亮与灭。
交通灯控制程序。
3.LED数码管动态显示程序。二进制到十进制的代码转换程序。
十进制到显示代码的查表转换程序。
倒计时程序。
START和STOP代码。
白天/黑夜功能。(附加功能)
完善程序。
三、设计方案
1、设计思路。
东西南北各三盏灯,每三盏分别为红、黄、绿三种颜色,总共十二盏灯,而实际情况下,东西方向灯亮灭一致,南北方向灯亮灭一致,故只需要按东西为一组,南北为一组,两组交错亮灭来设计控制系统,即可达到交通灯系统的控制目的。根据以上分析那么只需要控制东南或者西北六盏灯亮灭规律就能实现控制,另外两组对应一致就行了。
2、使用的I/O设备
KK1+键、8个LED小灯泡、共阴极8段显示数码管。
3、使用的芯片
8259A中断控制器、8255并行输入输出接口芯片、8254定时/计数器芯片
4、芯片的作用
8259A用于控制中断申请以及发生中断时执行对应的子程序,8255并行接口芯片用于向I/O设备输出控制灯泡或数码管点亮的数据代码,8254定时器利用频率脉冲来实现定时申请中断和动态显示8段数码管。
四、硬件线路设计
1、硬件接线图
2、端口地址说明
五、软件设计
1、程序流程图
2、R变量和M变量说明
P8255A、P8255B、P8255C、P8255M 为8255并行输入输出接口芯片的四个端口地址。
TIMER0、TIMER1、TIMER2、TIMERM 为8254计时器的四个端口地址。
DISCODE 为共阴极8段数码显示管,从0-F的显示代码。
COUNT 为计数变量,用于记录时间。
CTDOWN0 为倒计时时间变量。
POINT 为用于表示红绿灯4种状态的标志变量。
STA 为用于数码管动态显示的标志变量。3、程序说明
此程序利用5ms的中断实现数码管的动态显示;1s的中断实现每秒使变量COUNT加一,来记录当前时刻的秒数;KK1+ 按键用于申请MIR7中断,来实现交通灯开启功能。
六、源程序
1、参考程序
P8255A EQU 0600H
P8255B EQU 0602H
P8255C EQU 0604H
P8255M EQU 0606H
TIMER0 EQU 06C0H
TIMER1 EQU 06C2H
TIMER2 EQU 06C4H
TIMERM EQU 06C6H
DATA SEGMENT
DISCODE DB 3FH,06H,5BH,4FH,66H,6DH,7DH,07H ;0--7的显示代码DB 7FH,6FH,77H,7CH,39H,5EH,79H,71H ;8--F的显示代码
INDEX DB 00H,00H,00H,00H,00H,00H,0CCH,0CCH
DYNBUFF DB 00H,00H,00H,00H,00H,00H,00H,00H ;动态显示缓冲
LOCATN DB 00H,00H,00H,00H,00H,00H,00H,00H ;动态显示位置控制
COUNT0 DB 100
CTDOWN0 DB 100
CTDOWN1 DB 100
CTDOWN2 DB 100
CTDOWN3 DB 100
DATA ENDS
SSTACK SEGMENT PARA STACK 'STACK'DW 32 DUP(?)
SSTACK ENDS
CODE SEGMENT ASSUME CS:CODE, DS:DATA,SS: SSTACK START: MOV AX,DATA MOV DS,AX
;--------------------------------------------------------------- 8255初始化
INITA: NOP
;--------------------------------------------------------------- 中断芯片
INITB: PUSH DS
MOV AX,0000H MOV DS,AX MOV AX,OFFSET MIR7MOV SI,003CHMOV [SI],AXMOV AX,CSMOV SI,003EHMOV [SI],AXMOV AX,OFFSET MIR6MOV SI,0038HMOV [SI],AXMOV AX,CSMOV SI,003AHMOV [SI],AXMOV AX, OFFSET SIR1
MOV SI, 00C4H
MOV [SI], AX
MOV AX, CS
MOV SI, 00C6H
MOV [SI], AX CLI POP DS
;--------------------------------------------------------------- 主MOV AL,11HOUT 20H,AL ;ICW1MOV AL,08HOUT 21H,AL ;ICW2MOV AL,04HOUT 21H,AL ;ICW3
MOV AL,01HOUT 21H,AL ;ICW4
;-------------------------------------------------------------初始化从片8259
MOV AL, 11H
OUT 0A0H, AL ;ICW1
MOV AL, 30H
OUT 0A1H, AL ;ICW2
MOV AL, 02H
OUT 0A1H, AL ;ICW3
MOV AL, 01H
OUT 0A1H, AL ;ICW4;--------------------------------------------------------------- MOV AL,2BH ;OCW1 = 00101011BOUT 21H,AL MOV AL, 0FDH ;OCW1 = 1111 1101BOUT 0A1H,AL STIAA1: NOPJMP AA1
;--------------------------------------------------------------- 定时器芯片
INITC: MOV DX, TIMERMMOV AL,36HOUT DX,ALMOV DX, TIMER0 ;计数器0MOV AL,0E8HOUT DX,ALMOV AL,03HOUT DX,ALMOV DX, TIMERMMOV AL,76HOUT DX,ALMOV DX, TIMER1 ;计数器1MOV AL,0E8HOUT DX,ALMOV AL,03HOUT DX,AL
;--------------------------------------------------------------- BEGIN: NOPAA2: JMP AA2
;--------------------------------------------------------------- MIR7 PROC NEARPUSH AXPUSH DXMOV AX,0137HINT 10HMOV AX,0120HINT 10HMOV AL,20HOUT 20H,ALPOP DXPOP AX IRETMIR7 ENDP
;---------------------------------------------------------------
MIR6 PROC NEARPUSH AXPUSH DXMOV AL,20HOUT 20H,ALPOP DXPOP AX IRETMIR6 ENDP
SIR1 PROC NEARPUSH AXPUSH DXMOV AL, 20H OUT 0A0H, AL OUT 20H, ALPOP DXPOP AX IRETSIR1 ENDP CODE ENDSEND START 2、最终程序清单ATIMER0 EQU 0600H ;IOY0
TIMER1 EQU 0602H
TIMER2 EQU 0604H
TIMERM EQU 0606H
P8255A EQU 0640H ;IOY1
P8255B EQU 0642H
P8255C EQU 0644H
P8255M EQU 0646H
;---------------------------------------------------------------
DATA SEGMENT
DISCODE DB 3FH,06H,5BH,4FH,66H,6DH,7DH,07H ;0--7的显示代码DB 7FH,6FH,77H,7CH,39H,5EH,79H,71H ;8--F的显示代码
DECIMAL DB 00H,00H,00H,00H,00H,00H,0CCH,0CCH ;十进制数,即查表用下标
VRAM DB 00H,00H,00H,00H,00H,00H,00H,00H ;动态显示代码缓冲
LOCATN DB 00H,00H,00H,00H,00H,00H,00H,00H ;动态显示位置控制
HOUR DB 12 ;小时
MINUTE DB 34 ;分钟
SECOND DB 50 ;秒COUNT DB 100STA DB 01H
TIM DB 23;TIME
;HH DW 21;
STB1 DB 3FH
STB2 DB 3FHCLKSTA DB 10000000B ;步进电机节拍状态
DATA ENDS
SSTACK SEGMENT PARA STACK 'STACK' ;? by 徐春秋,常玻DW 32 DUP(?)
SSTACK ENDS
CODE SEGMENT ASSUME CS:CODE, DS:DATA,SS: SSTACK
START: MOV AX,DATA MOV DS,AX
;--------------------------------------------------------------- 8255初始化
INITA: MOV DX, P8255M MOV AL, 80H ;注意,控制字根据各自的题目需求确定OUT DX, AL MOV DX, P8255B MOV AL, 0FFH OUT DX, ALAA1: ;INC TIMCALL CONVERTJMP AA1
;------------------------------
SWITCH PROC NEAR ; PUSH AXPUSH DX
K0: NOP
K1: NOP
K2: NOP
K3: NOP
K4: NOP
K5: NOP POP DXPOP AXRET
SWITCH ENDP
LEDLAMP PROC NEAR ; PUSH AXPUSH DXPOP DXPOP AXRET
LEDLAMP ENDP
;---------------------------------------------------------------
;电子时钟或交通灯题目:用于动态显示。
;---------------------------------------------------------------
DISPLY PROC NEAR ; PUSH AXPUSH DXMOV DX,P8255CMOV AL,01111111BOUT DX,ALMOV DX,P8255BMOV AL,06HOUT DX,ALPOP DXPOP AXRET
DISPLY ENDP
;---------------------------------------------------------------
DISPLY1 PROC NEAR ; PUSH AXPUSH DXMOV DX,P8255CMOV AL,10111111BOUT DX,ALMOV DX,P8255BMOV AL,5BHOUT DX,ALPOP DXPOP AXRET
DISPLY1 ENDP ;---------------------------------------------------------------
;抢答器题目:用于START和RESET子程序合二为一。
;交通灯题目:用于动态显示。
;---------------------------------------------------------------
ALTER PROC NEARPUSH AXMOV AL,STATEST AL,01HJZ EVEN1
ODD1: MOV STA,0CALL DISPLYJMP DONE2
EVEN1: MOV STA,01HCALL DISPLY1
DONE2: POP AXRET
ALTER ENDP
SUBR1 PROC NEAR ; PUSH AXPUSH DXNOPPOP DXPOP AXRET
SUBR1 ENDP
SUBR2 PROC NEAR ; PUSH AXPUSH DXNOPPOP DXPOP AXRET
SUBR2 ENDP
JUDGE PROC NEARPUSH DXPUSH AXMOV DX,P8255ACMP TIM,0 JE P0CMP TIM,20 JE P20CMP TIM,21 JE P21CMP TIM,22 JE P22CMP TIM,23 JE P23 CMP TIM,24 JE P24CMP TIM,25 JE P25CMP TIM,65 JE P65 CMP TIM,66JE P66CMP TIM,67JE P67CMP TIM,68JE P68CMP TIM,69JE P69 CMP TIM,70JE P70 JMP AAA1
BACK: NOP
AAA1: POP DX POP AXRET
JUDGE ENDP
;\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\[P0: MOV AL,83HOUT DX,ALJMP P13
P20: MOV AL,84HOUT DX,ALJMP P13
P21: MOV AL,80HOUT DX,ALJMP P13
P22: MOV AL,84HOUT DX,ALJMP P13
P23: MOV AL,80HOUT DX,ALJMP P13
P24: MOV AL,84HOUT DX,AL JMP P13
P25: MOV AL,38HOUT DX,ALJMP P13
P65: MOV AL,48HOUT DX,ALJMP P13
P66: MOV AL,08HOUT DX,ALJMP P13
P67: MOV AL,48H OUT DX,ALJMP P13
P68:MOV AL,08HOUT DX,ALJMP P13
P69:MOV AL,48HOUT DX,ALJMP P13
P70:MOV AL,83HOUT DX,ALMOV TIM,0
P13:JMP BACK;-------------------------------------------------------------
CONVERT PROCPUSH AXPUSH DXMOV AL,TIMCBWMOV CL,10DIV CLLEA BX,DISCODEXLATMOV STB1,ALMOV AL,AHXLATMOV STB2,ALPOP DXPOP AXRET
CONVERT ENDP
CODE ENDSEND START
七、调试过程
实验连线:
参照8254定时/计数器应用实验,来设计8254与系统的连线。
参照8259中断控制实验,来设计8259的连线。
参照8255并行接口实验,来设计8255与系统的连线。
8254的其他连线,参照相关实验。
数码管与矩阵键盘的接线,参考相关实验。
PC口控制交通灯。用两芯线,分别连接PC7PC6----L15L14,PC5PC4----L11L10。 模拟南北向。用四芯线连接PC3PC2PC1PC0----L5L4L3L2,模拟东西向。
硬件测试:
1、数码管静态显示程序:DISPLY1、DISPLY2。ALTER。
2、数码管动态显示程序ALTER。(在MIR7中CALL ALTER)
3、静态交通灯程序LIGHT。
4、定时中断方式秒信号和动态交通灯程序LIGHT。(在MIR6中CALL LIGHT)
5、二进制到十进制的代码转换程序CONVERT1。
6、十进制到显示代码的代码转换程序CONVERT2。
7、倒计时功能。
8、启动程序STAT(即MIR7)
9、停止程序STOP(即SIR1)
10.启停合一程序(即SIR1,奇数次按动为STAT,偶数次按动为STOP)。
倒计时显示:
东西向通行:
南北向通行:
交通灯控制——汇编小设计相关推荐
- VHDL设计交通灯控制器的课程设计
交通灯控制 设计要求:设计一个交通灯控制, 1当乡村公路无车时始终保持乡村公路红灯亮,主干道绿灯亮. 2当乡村公路有车时,而主干道通车时间已经超过他的最短通车时间时,禁止主干道通车,让乡村公路通行.主 ...
- 交通灯控制系统c语言编程,基于单片机的交通灯控制系统设计(本科)毕业论文设计.doc...
基于单片机的交通灯控制系统设计 摘 要 当你路过一个十字路口时,你是否注意到各个方向车辆和行人有有条不紊的通过十字路口.这样井然有序的情境靠什么来实现的呢?靠的是交通灯控制系统.在论文中我使用单片机S ...
- 【Arduino】交通灯控制设计 四位数码管
实验现象 在Arduino开发板上设计红黄绿Led灯定时循环同步数码管显示,以数码管时间显示进行定时循环控制,要求红绿灯定时15秒,黄灯定时5秒.并在此基础之上设计串口通信键盘输入变量进行红黄绿LED ...
- 【Proteus仿真】51单片机汇编数显大型交通灯控制
[Proteus仿真]51单片机汇编数显大型交通灯控制 Proteus仿真 学汇编的人虽然 不多,但是还是有的,分享一个汇编的案例,给需要的人予以参考学习,有些时候我们还是需要懂一些汇编指令比较好. ...
- 微型计算机k80,微型计算机原理与接口技术课程设计报告智能交通灯控制系统设计(15页)-原创力文档...
微型计算机原理与接口技术课程设计报告智能交通灯控制系统设计 摘 要 根据十字路口交通灯的控制要求,采用PLC 设计实现正常交通的时序控制,通过传感器完成对交通异常状况的智能判别及处理.在系统的设计中, ...
- c语言交通灯控制设计和原理图,十字路口交通灯控制设计(附电路图及源代码).doc...
十字路口交通灯控制设计(附电路图及源代码) <计算机控制技术> 课程设计报告 课题名称 交通灯控制设计 专 业 班 级 学生姓名 学 号 指导教师 201*年 6 月 8日 目录 TOC ...
- 51单片机 时间控制的不同时段交通灯控制设计(简单版)
这个交通灯的设计时简单版,只有一个路口(不是十字路口)的那种(想要实现十字路口可以对代码稍加修改) 使用的开发软件:Keil uVision5 单片机类型为:C51 语言类型:C语言 在这里说一下实现 ...
- 交通灯系统51单片机设计(附Proteus仿真、C程序、原理图及PCB、论文等全套资料)
设计要求 (1)利用51单片机设计一个交通灯控制系统,来实现行人与车流的分流的目的.该系统主要应用在十字路口,纵向为主干道,横向为支干道: (2)主.支干道交替通行,两个干道上的交通灯工作方式同时进行 ...
- 单片机怎么通过按键控制计时器的开始和停止_学习电路仿真:基于proteus电路仿真软件的交通灯控制电路设计...
电路仿真软件是当代重要软件之一,缺乏电路仿真软件,模拟运行环境将无法搭建.对于电路仿真软件,虽然市面上类别众多,但知名电路仿真软件为proteus.本文对于电路仿真软件的介绍,为基于proteus的交 ...
- 基于机器视觉的交通灯控制系统设计
基于机器视觉的交通灯控制系统设计 摘 要 Abstract 引言 1 课题背景 1.1概述 1.2传统交通路口信号灯 1.3基于机器视觉的交通灯控制智能系统 1.3.1国内研究现状 1.3.2国外研究 ...
最新文章
- P1759 通天之潜水(不详细,勿看)(动态规划递推,组合背包,洛谷)
- 项目Beta冲刺 用户试用报告
- 未解决-hive之drop 表分区失败
- vue知识点归纳与总结(笔记)
- 读《中台架构与实现》
- 【云栖大会】阿里云未来走势 看当家的怎么说?
- java中类定义修饰符_Java 中类和方法修饰符
- thinkphp3.2 cli模式的正确使用方法
- jni 调用sock_raw -- 端口扫描
- C语言真题考研pdf,中财信息学院C语言程序设计1999年考研真题.pdf
- 控制台输入聊天记录 输出到文件中保存 Day20
- Spring Cloud学习笔记---Spring Cloud Sleuth--新建两个互相调用的服务测试zipkin
- 太理java题库_JAVA题库(复习必备)
- “OneNMP”-超高性价比的实用网管工具
- 电子计算机为什么123安不出来,方正软件常见问题及其解决办法-精.doc
- not all arguments converted during string formatting
- linux:The CXX compiler identification is unknown
- NOIP2015总结
- 南京大学的计算机到底怎么样?
- k8s(四):核心技术-Controller