设计任务:
设计一套十字路口的交通灯管理系统。按照顺序时间控制原则,利用中断控制器和定时器。采用定时中断方式设计实现。东西向和南北向均有红黄绿灯。具备倒计时功能。
南北向通行时间20秒,准备时间5秒。在准备时间里黄灯闪烁3次,闪烁频率为1
秒,周而复始。东西向通行时间40秒,准备时间5秒。在准备时间里黄灯闪烁3次,
闪烁频率为1秒,周而复始。东西向参照下边的时序控制图。


设计要求如下:

  1. 硬件测试通过。8259能够实现中断。8254能够实现呼吸灯。8255能够控制L8—L15的亮与灭。

  2. 交通灯控制程序。
    3.LED数码管动态显示程序。

  3. 二进制到十进制的代码转换程序。

  4. 十进制到显示代码的查表转换程序。

  5. 倒计时程序。

  6. START和STOP代码。

  7. 白天/黑夜功能。(附加功能)

  8. 完善程序。
    三、设计方案
    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)。

倒计时显示:
东西向通行:

南北向通行:

交通灯控制——汇编小设计相关推荐

  1. VHDL设计交通灯控制器的课程设计

    交通灯控制 设计要求:设计一个交通灯控制, 1当乡村公路无车时始终保持乡村公路红灯亮,主干道绿灯亮. 2当乡村公路有车时,而主干道通车时间已经超过他的最短通车时间时,禁止主干道通车,让乡村公路通行.主 ...

  2. 交通灯控制系统c语言编程,基于单片机的交通灯控制系统设计(本科)毕业论文设计.doc...

    基于单片机的交通灯控制系统设计 摘 要 当你路过一个十字路口时,你是否注意到各个方向车辆和行人有有条不紊的通过十字路口.这样井然有序的情境靠什么来实现的呢?靠的是交通灯控制系统.在论文中我使用单片机S ...

  3. 【Arduino】交通灯控制设计 四位数码管

    实验现象 在Arduino开发板上设计红黄绿Led灯定时循环同步数码管显示,以数码管时间显示进行定时循环控制,要求红绿灯定时15秒,黄灯定时5秒.并在此基础之上设计串口通信键盘输入变量进行红黄绿LED ...

  4. 【Proteus仿真】51单片机汇编数显大型交通灯控制

    [Proteus仿真]51单片机汇编数显大型交通灯控制 Proteus仿真 学汇编的人虽然 不多,但是还是有的,分享一个汇编的案例,给需要的人予以参考学习,有些时候我们还是需要懂一些汇编指令比较好. ...

  5. 微型计算机k80,微型计算机原理与接口技术课程设计报告智能交通灯控制系统设计(15页)-原创力文档...

    微型计算机原理与接口技术课程设计报告智能交通灯控制系统设计 摘 要 根据十字路口交通灯的控制要求,采用PLC 设计实现正常交通的时序控制,通过传感器完成对交通异常状况的智能判别及处理.在系统的设计中, ...

  6. c语言交通灯控制设计和原理图,十字路口交通灯控制设计(附电路图及源代码).doc...

    十字路口交通灯控制设计(附电路图及源代码) <计算机控制技术> 课程设计报告 课题名称 交通灯控制设计 专 业 班 级 学生姓名 学 号 指导教师 201*年 6 月 8日 目录 TOC ...

  7. 51单片机 时间控制的不同时段交通灯控制设计(简单版)

    这个交通灯的设计时简单版,只有一个路口(不是十字路口)的那种(想要实现十字路口可以对代码稍加修改) 使用的开发软件:Keil uVision5 单片机类型为:C51 语言类型:C语言 在这里说一下实现 ...

  8. 交通灯系统51单片机设计(附Proteus仿真、C程序、原理图及PCB、论文等全套资料)

    设计要求 (1)利用51单片机设计一个交通灯控制系统,来实现行人与车流的分流的目的.该系统主要应用在十字路口,纵向为主干道,横向为支干道: (2)主.支干道交替通行,两个干道上的交通灯工作方式同时进行 ...

  9. 单片机怎么通过按键控制计时器的开始和停止_学习电路仿真:基于proteus电路仿真软件的交通灯控制电路设计...

    电路仿真软件是当代重要软件之一,缺乏电路仿真软件,模拟运行环境将无法搭建.对于电路仿真软件,虽然市面上类别众多,但知名电路仿真软件为proteus.本文对于电路仿真软件的介绍,为基于proteus的交 ...

  10. 基于机器视觉的交通灯控制系统设计

    基于机器视觉的交通灯控制系统设计 摘 要 Abstract 引言 1 课题背景 1.1概述 1.2传统交通路口信号灯 1.3基于机器视觉的交通灯控制智能系统 1.3.1国内研究现状 1.3.2国外研究 ...

最新文章

  1. P1759 通天之潜水(不详细,勿看)(动态规划递推,组合背包,洛谷)
  2. 项目Beta冲刺 用户试用报告
  3. 未解决-hive之drop 表分区失败
  4. vue知识点归纳与总结(笔记)
  5. 读《中台架构与实现》
  6. 【云栖大会】阿里云未来走势 看当家的怎么说?
  7. java中类定义修饰符_Java 中类和方法修饰符
  8. thinkphp3.2 cli模式的正确使用方法
  9. jni 调用sock_raw -- 端口扫描
  10. C语言真题考研pdf,中财信息学院C语言程序设计1999年考研真题.pdf
  11. 控制台输入聊天记录 输出到文件中保存 Day20
  12. Spring Cloud学习笔记---Spring Cloud Sleuth--新建两个互相调用的服务测试zipkin
  13. 太理java题库_JAVA题库(复习必备)
  14. “OneNMP”-超高性价比的实用网管工具
  15. 电子计算机为什么123安不出来,方正软件常见问题及其解决办法-精.doc
  16. not all arguments converted during string formatting
  17. linux:The CXX compiler identification is unknown
  18. NOIP2015总结
  19. 南京大学的计算机到底怎么样?
  20. k8s(四):核心技术-Controller

热门文章

  1. GoEasy实现简单聊天室
  2. 宗海图cad_技术绘制论文,关于CAD技术机械制图关键技术相关参考文献资料-免费论文范文...
  3. plsql存过声明游标_PLSQL游标使用
  4. RK3568-ANDROID11-4G-EC20-驱动篇(移远模块)
  5. Canny 算子的非极大值抑制
  6. Spark安装及配置详细步骤
  7. 华为价值评价体系的四个基本假设
  8. Nginx 集群和IP反向代理
  9. 基于SVP的格密码计算复杂性问题
  10. 从SVN下载项目到本地的eclipse 工作空间