交通信号灯控制系统——微机程序设计

1、设计任务

    交通信号灯控制系统:要求能显示剩余时间和控制红、黄、绿三色灯的显示。

2、总体方案设计与方案论证

(1) 总体方案设计

    设计路口交通灯控制系统,使用LED显示单元的两组发光二极管(红黄绿)分别模拟十字路口的两组交通灯。

a、南北路口的绿灯、东西路口的红灯同时亮20秒。数码管20秒倒记时显示。
b、南北路口的黄灯亮5秒,同时东西路口的红灯继续亮。数码管5秒倒记时显示。
c、南北路口的红灯、东西路口的绿灯同时亮20秒。
d、南北路口的红灯继续亮、同时东西路口的黄灯亮5秒。
e、转(1)重复。(并能在此基础添加一些功能,如紧急开关按下,时间暂停,两组路口都显示红灯)

(2) 方案论证

    将交通灯的显示规律进行观察,发现有“红绿、红黄、绿红、黄红”四种状态,将交通灯的显示抽象为这四种状态的循环切换,如需产生不同的时间,只需将每种状态直接加入一个延时程序即可,为了更加准确的记录时间和显示剩余时间,我们觉得采用8253来控制一秒,循环执行十次就是十秒,二十次就是二十秒。这样便可以完成任务。
    由上论证可知,方案可行,可以进行具体设计和操作。

3、总框图及总体软件设计说明

(1) 总框图

(2) 总体软件设计说明

a、通过8253计数,每1s输出一个脉冲,刷新10次,持续十秒钟,重复减一直至零为止;
b、8255的C口低四位作为输入输出端口,C口高四位控制某个数码管显示,B口控制数码管显示值,A口控制交通灯;
c、交替选中数码管的高低位码,计数的同时数码管显示数字,并且交通灯亮;
d、8253锁存并读数进行;
e、计数至零时状态转换,数码管重新显示下一状态的数字,交通灯转换至下一状态;
f、重复上述过程,使交通灯的四个状态不断循环秒钟;

4、接口电路逻辑图及硬件设计说明,或系统资源使用说明

(1) 接口电路逻辑图

(2) 硬件设计说明

8253芯片说明

    8253有3个独立的16位计数器,有6种工作方式。
    利用8253的减法计数器原理,每送来一个脉冲就减1,减到0产生一个定时信号输出。
    因为计数频率为2MHz,计数器的最大数值为65536,所以最大的定时时间为0.5us*65536=32.768ms,达不到1S的要求,因此需要用两个计数器级联来解决问题。
    将2MHz的的时钟信号直接加在CLK0输入端,并让计数器0工作在方式2,选择计数初始值为5000,则从out0端可得到2MHz/5000=400Hz的脉冲,周期为0.25ms。再将该信号连到CLK1输入端,并使计数器1工作在方式2下,为了使out1输出周期为20s的波形,所以取时间常数为400.然后由out1输出到8255的PC0上,通过上升下降沿来判断1s是否结束。

8255芯片说明

     8255A可为外设提供3个8位I/O端口,即A口,B口,C口,每个端口又可分两组编程,能工作于3种操作模式。
    该实验使用8255A来作为输入输出的控制操作,将C口分为上下口,分别由A,B口控制。PC0用来接收8253的out1输出的信号,通过沿来判断是否完成1S计时。PC1用来判断有无紧急键按下,若为高电平则是紧急状态,使四个路口的红灯都亮。
    C口的高四位用来控制数码管的显示位数,测试知数码管为低电平有效,当状态控制字分别为1101,1110时对应的第二位和第一位亮。然后进行循环。
    A口作为输出端连接到发光二极管上,通过接收状态控制字来显示对应的灯。
    B口也是作为输出端按顺序连接到数码管的LA,B,C,D,E,F,G,H上。

5、局部程序框图及其设计说明

    首先,利用8253初始化,使其产生周期为一秒的脉冲,将主程序中规定的循环次数(即、秒数)在子程序中控制产生脉冲的个数,一个脉冲即为一秒。
    判断是否为一个脉冲,采用上升沿判断,出现一个上升沿即产生一个脉冲,循环次数减一,直到有n个脉冲,即已经过了n秒。
    紧急键的按下在延时过程中进行判断,如果按下,则循环判断紧急键的状态,并一直输出紧急状态的情况。当紧急键放开,则继续紧急前的状态继续延时。

    延时的剩余次数即为剩余时间,因此,只要将CX的值显示在数码管处即可达成显示时间的目的。
    CX中存有两位数,此时,将CX的值处以10,在AH和AL中分别得到余数(个位数字)和商值(十位数字)。
    让两位数字同时显示,则需要将两位数字分别在数码管的高低两位显示出来,并且不断循环显示,此时显示频率很快,肉眼看上去就是两位同时亮的状态。

6、源程序清单(详细注释)

CODE SEGMENT
 ASSUME CS:CODE
START:MOV AX,CS
      MOV DS,AX
      MOV DX,203H           ;8255初始化,连接端口IOY0
      MOV AL,10000001B      ;A口输出接LED,B口输出接数码管,C0~C3输入,C4~C7输出
      OUT DX,AL
      CALL INITIAL_8253     ;8253初始化
A1:   MOV DX,200h           ;8255的A口接
      MOV AL,01101111B      ;东西红,南北绿
      OUT DX,AL             ;将灯状态传送给LED显示
      MOV CX,20             ;计时20秒
      CALL action
      MOV DX,200h           ;东西红,南北黄
      MOV AL,01111011B
      OUT DX,AL
      MOV CX,5          ;计时5秒
      CALL action
      MOV DX,200h           ;东西绿,南北红
      MOV AL,10011111B
      OUT DX,AL
      MOV CX,20             ;计时20秒
      CALL action
      MOV DX,200h           ;东西黄,南北红
      MOV AL,10110111B
      OUT DX,AL
      MOV CX,5              ;计时5秒
      CALL action
      JMP A1                ;循环到状态A1,即东西红,南北绿
EXIT: MOV AH,4CH
      INT 21H

action PROC
      PUSH AX
      PUSH DX
      PUSH CX
      mov ah,al                 ;保存紧急状态前的路灯的状态
LOOP2:
      mov dx,202h
      in al,dx
      test al,02h               ;判断c口倒数第二位是否有状态
      JnZ L1                    ;无紧急状态
                            ;有紧急键则转到紧急键处理
      CALL DISP             ;显示当前时间
      mov dx,200h
      mov AL,00111111B      ;路口都显示红灯
      out dx,al
      JMP LOOP2
L1:   mov dx,200h
      mov al,ah
      out dx,al
      CALL DISP
L2:   MOV DX,202h               ;检测1s是否计完
wait1:
      CALL DISP
      IN AL,DX
      TEST AL,01H
      JZ wait1                  ;若1s没计数完,继续
wait2:
      CALL DISP
      IN AL,DX
      TEST AL,01H
      JNZ wait2
      LOOP LOOP2             ;20s或5s计数完全?若没计数完,继续
      POP CX
      POP DX
      POP AX
      RET
action ENDP

INITIAL_8253  PROC          ;8253初始化,1s
      PUSH AX
      PUSH DX
      mov al,00110101B
      mov dx,20Bh
      out dx,al
      mov al,00h
      mov dx,208h
      out dx,al
      mov al,50h
      mov dx,208h
      out dx,al
      mov al,01110101B
      mov dx,20Bh
      out dx,al
      mov al,00h
      mov dx,209h
      out dx,al
      mov al,04h
      mov dx,209h
      out dx,al
      POP DX
      POP AX
      RET
INITIAL_8253 ENDP

time1 PROC near
        lea di,time
        lea si,x1
        MOV CX,2
        MOV AL,11101111b        ;AL=DFH 1101 1111  控制 Y1~Y5 循环点亮
        MOV [si],AL
l31:        mov dx,202h
        mov al,0ffh
        out dx,al
        MOV DX,201H         ;B口输出段码
        MOV AL,[DI]
        OUT DX,AL
        INC DI
        MOV AL,[si]
        MOV DX,202H         ;c口输出
        OUT DX,AL
        ROl byte ptr[si],1          ;循环左移一位
        loop l31
        RET
time1 ENDP

DISP PROC                       ;数码管显示
        PUSH AX
        PUSH BX
        PUSH DX
        PUSH CX
        lea di,time
        MOV AX,CX
        MOV CL,0AH              ;将CL中16进制数转化为十进制数
        DIV CL
        MOV BX,OFFSET table1
        XLAT
        mov [di],al
        inc di
        mov al,ah
        MOV BX,OFFSET table1
        XLAT
        mov [di],al
        call time1
        POP CX
        POP DX
        POP BX
        POP AX
        RET
DISP ENDP

table1 DB 3FH,06H,5BH,4FH,66H,6DH,7DH,07H,7FH,6FH
time db 2 dup(?)
x1 db ?

code ends
    end start

7、系统功能与操作说明

a、南北路口的绿灯、东西路口的红灯同时亮20秒。数码管20秒倒记时显示。
b、南北路口的黄灯亮5秒,同时东西路口的红灯继续亮。数码管5秒倒记时显示。
c、南北路口的红灯、东西路口的绿灯同时亮20秒。
d、南北路口的红灯继续亮、同时东西路口的黄灯亮5秒。
e、转a循环
f、期间,紧急开关按下,时间暂停,两组路口都显示红灯;紧急开关拨起,继续暂停前的状态继续

8、总结

    这个设计是利用四种状态来表示两个路口的红绿灯状态,使用这样化整为零的方法,再利用8255对四种状态进行切换控制,使每种状态之间利用一个延时子程序先进行大概的延时,再利用8253进行对一秒钟的准确延时,利用循环的方式,循环十次为十秒,则完成了对每种信号灯状态的准确定时;为了解决AB口都被占用,而还需要输出口进行对数码管高低位选择的控制,则想到了使用C口的高四位进行该项操作,至于之后的紧急状态的设置,则靠C口的低四位进行输入控制,只需判断相应位置的状态便可以进行这一类的操作。
    整个实验最困难的地方就是最开始对四种状态的分析,世界上的任何事物总可以使用各种状态来表示,事物的变换规律也可以使用状态之间的转化来体现出来。我们可以将身边的事物转化为某种逻辑关系,这样就能实现各种功能的设备了。
时间: 2024-10-13 07:09:21

交通信号灯控制系统——微机程序设计的相关文章

交通信号灯远电力101通讯规约 设备运行数据 透传模块串口通信

方案需求 智慧交通信号控制系统是基于交通大数据的智能自动化应用系统.系统在大数据的基础上,对道路车流量.人流量.路况态势进行判断.智慧交通信号控制系统接入流量检测器.排队长度检测器.速度检测器等,对系统配时方案进行校正和验算.自动控制红绿灯时间,故障情况监测上报,远程人工在线调控红绿灯,为消防车.急救车.警务车等特殊车辆进行预警让道. 系统可根据各车道车流量反馈信息,根据相应算法设置各信号灯时间.控制系统和控制中心相连接,可以实现跨区域交通控制.在遇到救护车.消防车等突发情况下,可以由交警通过无

智能无线交通信号控制系统方案

前言   随着城市车辆数目的急剧增长,车辆与路面的矛盾越来越突出,城市交通拥挤和堵塞导致道路的容量和管理效率降低 ,也是交通污染和事故的间接因素.尽管造成这种现象的原因很多 ,但各交叉口交通信号的不协调.不优化是主要的技术原因.由此而产生的城市智能交通优化交通信号系统将在很大程度上解决这一问题. 原有的交通信号控制系统采用光纤接入通信方式,施工困难,成本高,受地形.气候影响较大,设备维护困难:改用3G/4G网络,灵活性高,实现在线保持机制,3G/4G路由器网络速率已经满足信号机数据传输,通过运营

黑马程序员——交通信号灯管理系统

题目: 模拟实现十字路口的交通灯管理系统逻辑,具体需求如下: 异步随机生成按照各个路线行驶的车辆. 例如: 由南向而来去往北向的车辆 右转车辆 由东向而来去往南向的车辆"); } public Lamp blackOut(){ this.lighted = false; if(opposite!=null){ Lamp.valueOf(opposite).blackOut(); } Lamp nextLamp = null; if(next!=null){ nextLamp = Lamp.val

交通信号灯调试程序

一,以下内容需要的软件以及使用方法和操作方法请看我以前的博文.这里发下要使用到的proteus电路图 链接:https://pan.baidu.com/s/1W9vbEOxdCtdtd3VAaV1rkg 提取码:dxak 二,要交通灯的要求. 1,先东西南北红灯亮,1秒. 2,东西红灯亮,南北绿灯亮,10秒. 3,东西红灯闪,南北黄灯闪,3秒. 4,东西绿灯亮,南北红灯亮,10秒. 5,东西黄灯闪,南北绿灯亮,3秒. 三,开始 1,使用proteus软件打开交通灯的电路图(直接打开电路图即可),

交通信号灯

两路红绿灯及倒计时 module jiaotong(clk,reset,lamp,downtime); input clk,reset; output reg [5:0]lamp; output[6:0]downtime; reg [6:0]timedown; reg[1:0]state; reg [31:0]count1; always@(clk) //产生0~100s的计时 begin if(reset) count1<=0; //计数器必须赋初值,否者无法进行计数 else if(coun

asp.net C# 控制台模拟红绿灯(交通信号灯)

一.需求分析 通过控制台输入绿灯,黄灯,红灯显示时间,然后倒计时,周而复始. 二.运行效果 1.输入显示时间 2.绿灯,黄灯,红灯,倒计时周而复始 三.实现代码 using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Threading; using System.Threading.Tasks; namespace ConsoleApp1 { class

黑马程序员--交通灯管理

模拟实现十字路口的交通灯管理系统逻辑,具体需求如下: 异步随机生成按照各个路线行驶的车辆. 例如: 由南向而来去往北向的车辆 ---- 直行车辆 由西向而来去往南向的车辆 ---- 右转车辆 由东向而来去往南向的车辆 ---- 左转车辆 ... 信号灯忽略黄灯,只考虑红灯和绿灯. 应考虑左转车辆控制信号灯,右转车辆不受信号灯控制. 具体信号灯控制逻辑与现实生活中普通交通灯控制逻辑相同,不考虑特殊情况下的控制逻辑. 注:南北向车辆与东西向车辆交替放行,同方向等待车辆应先放行直行车辆而后放行左转车辆

智能交通

智能交通系统(Intelligent Transportation System,简称ITS)是未来交通系统的发展方向,它是将先进的信息技术.数据通讯传输技术.电子传感技术.控制技术及计算机技术等有效地集成运用于整个地面交通管理系统而建立的一种在大范围内.全方位发挥作用的,实时.准确.高效的综合交通运输管理系统. 基本信息 ITS可以有效地利用现有交通设施.减少交通负荷和环境污染.保证交通安全.提高运输效率,因而,日益受到各国的重视.    智能交通的发展跟物联网的发展是离不开的,只有物联网技术

多线程实战(一) : 交通灯管理系统

一. 项目要求: 模拟实现十字路口的交通灯管理系统逻辑,具体需求如下: 1. 异步随机生成按照各个路线行驶的车辆. 例如: 由南向而来去往北向的车辆 ---- 直行车辆 由西向而来去往南向的车辆 ---- 右转车辆 由东向而来去往南向的车辆 ---- 左转车辆 ... 2. 信号灯忽略黄灯,只考虑红灯和绿灯. 3. 应考虑左转车辆控制信号灯,右转车辆不受信号灯控制. 4. 具体信号灯控制逻辑与现实生活中普通交通灯控制逻辑相同,不考虑特殊情况下的控制逻辑. 注:南北向车辆与东西向车辆交替放行,同方