视频1 视频21 视频41 视频61 视频文章1 视频文章21 视频文章41 视频文章61 推荐1 推荐3 推荐5 推荐7 推荐9 推荐11 推荐13 推荐15 推荐17 推荐19 推荐21 推荐23 推荐25 推荐27 推荐29 推荐31 推荐33 推荐35 推荐37 推荐39 推荐41 推荐43 推荐45 推荐47 推荐49 关键词1 关键词101 关键词201 关键词301 关键词401 关键词501 关键词601 关键词701 关键词801 关键词901 关键词1001 关键词1101 关键词1201 关键词1301 关键词1401 关键词1501 关键词1601 关键词1701 关键词1801 关键词1901 视频扩展1 视频扩展6 视频扩展11 视频扩展16 文章1 文章201 文章401 文章601 文章801 文章1001 资讯1 资讯501 资讯1001 资讯1501 标签1 标签501 标签1001 关键词1 关键词501 关键词1001 关键词1501 专题2001
基于8253和8255的模拟交通灯控制系统
2025-10-03 14:48:06 责编:小OO
文档
摘要

十字路口车辆穿梭,行人熙攘,车行车道,人行人道,有条不紊。井然秩序的实现,靠的是交通信号灯的自动指挥系统。交通信号灯控制方式有很多。本系统采用8255A芯片实现了A口设置红、绿、黄灯点亮时间的功能,从而控制LED发光二极管实现红、黄、绿灯循环点亮。另外结合日常生活经验,并且从亚残会中对残疾人的生活不便中得出感悟,采用8253进行控制扬声器,在红、绿灯变换之间黄灯闪烁时,同时添加了“声音提示"功能。整个系统具有固定的“红灯—黄灯—绿灯”转换间隔,并自动切换,对东西南北方向的道路进行“自动”的控制。但是,经过小组成员提出的各种假设,发现此系统需要加入更多人性化的元素:交警可以根据实际的路面情况,针对不同的突发事件,进行手工控制红绿灯的转换。例如救护车警车执行紧急任务;例如东西道路塞车,南北道路空闲无车辆行驶时,需要灵活调节红绿灯的转化。通过8255并口控制,可以达到更加人性化的效果从而方便各种人群。

第一部分  概论

1.1设计任务: 交通信号灯的控制

(1)通过8255并行接口来控制LED发光二极管的亮灭,并适当延时。

(2)黄灯闪烁时,通过8253控制扬声器发出声音,以提醒灯的转换 。

(3)通过8255并口控制,人工进行交通灯的转换。

1.2 任务要求

(1)南北路口的绿灯、东西路口的红灯同时亮5秒左右。

(2)南北路口的黄灯闪烁若干次,扬声器鸣叫,同时东西路口的红灯闪烁。

(3)南北路口的红灯、东西路口的绿灯同时亮5秒左右。

(4)南北路口的红灯闪烁、同时东西路口的黄灯亮闪烁若干次,扬声器鸣叫。

(5) 转(1)重复。紧急情况可以手动控制红绿灯的变换。

1.3设计原理

本次课程设计是交通灯实时控制器,主要是用发光二极管模拟十字路口的红绿灯。交通灯控制器的设计与实现主要是通过编写汇编语言程序利用8255的C口对灯的亮与灭进行控制,用8253对扬声器的发声进行控制。装有定时计数器 8253芯片和可编程接口 8255芯片,研究了扬声器发声的软件控制过程,利用软件编程给定8253芯片某一频率的方波信号,并且设定8255芯片的门控信号PA0 =1和PA1 =1 ,则可控制扬声器发声。

第二部分 硬件设计

2.1线路示意图

8255连接图:

8253连接图:

2.2硬件连接图:

第三部分 软件设计

3.1流程如下

主程序中主要是通过初始化8255,然后将PC口设置成为输出口,将PC口与LED灯连接起来。 

延时(通过设置指令的循环次数实现)

输入数字“1”,开始运行

东西方向绿灯亮,南北方向红灯亮,时间约5秒

东西方向黄灯闪烁,南北方向红灯闪烁,扬声器鸣叫,时间约5秒

东西方向红灯亮,南北方向绿灯亮,时间约5秒

东西方向红灯闪烁,南北方向黄灯闪烁,扬声器鸣叫,时间约5秒

3.2程序清单

data segment

io8255a        equ 28ah

io8255aa       equ 288h

io8255b        equ 28bh

io8253a        equ 280h

io8253b        equ 283h

portc1  db  24h,44h,04h,44h,04h,44h,04h   ;六个灯可能

    db  81h,82h,80h,82h,80h,82h,80h   ;的状态数据

    db  0ffh                          ;结束标志

string1 db '************************************',0ah,0dh,'$'

string2 db '*       auto traffic lights        *',0ah,0dh,'$'

string3 db '************************************',0ah,0dh,'$'

string4 db '************************************',0ah,0dh,'$'

stringstart db '          PRESS 1 TO START          ',0AH,0DH,'$'

string5 db '************************************',0ah,0dh,'$'

string6 db '************************************',0ah,0dh,'$'

STRINGEND DB '        PRESS ANY KEY TO EXIT       ',0AH,0DH,'$'

string7 db '************************************',0ah,0dh,'$'

table dw 524

data ends

code  segment

      assume  cs:code,ds:data

start:

    mov   ax,data

    mov   ds,ax

    MOV     AH,0FH  ; 清屏

    INT     10H 

    MOV     AH,0h 

    INT     10H 

    LEA   DX,string1

    MOV   AH,09H

    INT   21H

    LEA   DX,string2

    MOV   AH,09H

    INT   21H

    LEA   DX,string3

    MOV   AH,09H

    INT   21H

    LEA   DX,string4

    MOV   AH,09H

    INT   21H

    LEA   DX,STRINGSTART

    MOV   AH,09H

    INT   21H

    LEA   DX,string5

    MOV   AH,09H

    INT   21H

KEY:MOV   AH,01H

    INT   21H

    CMP   AL,"1"

    JNZ   KEY

    MOV     AH,0FH  ; 清屏

    INT     10H 

    MOV     AH,0h 

    INT     10H 

    LEA   DX,string6

    MOV   AH,09H

    INT   21H

    LEA   DX,STRINGEND

    MOV   AH,09H

    INT   21H

    LEA   DX,string7

    MOV   AH,09H

    INT   21H

    mov   dx,io8255b

    mov   al,80h

    out   dx,al           ;设置8255为C口输出

    mov   dx,io8255a

re_on:    mov   bx,0

on:    mov   al,portc1[bx]

       push  ax

       push  Bx

       push  Cx

       push  Dx

       test  al , 42h

       jz   cont

sin:   call  sing

cont:  pop DX

       POP CX

       POP BX

       POP AX

       out dx,al

    cmp   al,0ffh

    jz    re_on

    out   dx,al           ;点亮相应的灯  

    inc   bx

    mov   cx,250           ;参数赋初值

    test  al,21h          ;是否有绿灯亮

    jz    de1             ;没有,短延时

    mov   cx,2000         ;有,长延时

de1:    mov   di,9000         ;di赋初值9000

de0:    dec   di              ;减1计数

    jnz   de0             ;di不为0

    loop  de1

    push dx

    mov ah,06h

    mov dl,0ffh

    int 21h

    pop dx

    jz  on                ;没有,转到on

exit:    mov   ah,4ch          ;返回

    int   21h

    

sing proc near

    mov al,31h

    sub al,31h

    shl al,1             ;转为查表偏移量

    mov bl,al            ;保存偏移到bx

    mov bh,0

    

    mov ax,4240H         ;计数初值 = 1000000 / 频率, 保存到AX

    mov dx,0FH

    div word ptr[table+bx]

    mov bx,ax

    

    mov dx,io8253b        ;设置8253计时器0方式3

    mov al,00110110B

    out dx,al

    mov dx,io8253a         

    mov ax,bx

    out dx,al            ;写计数初值低字节

    

    mov al,ah

    out dx,al            ;写计数初值高字节

    

    mov dx,io8255b       ;设置8255 A口输出

    mov al,10000000B

    out dx,al

    

    mov dx,io8255aa            

    mov al,03h

    out dx,al            ;置PA1PA0 = 11(开扬声器)

    call delay           ;延时

    mov al,0h

    out dx,al            ;置PA1PA0 = 00(关扬声器   

    sing endp

delay proc near          ;延时子程序

    push cx

    push ax

    mov ax,15

x1: mov cx,0ffffh

x2: dec cx

    jnz x2

    dec ax

    jnz x1

    pop ax

    pop cx

    ret    

delay endp  

    

code ends

    end start

第四部分 系统测试与性能分析

4.1系统测试 

利用微机实验箱上的8255A并行口、发光二级管以及扬声器,构成发声交通灯控制系统。测试结果与预期相同,东西、南北方向的红、绿灯交错亮灭。进入系统,根据菜单界面提示,按数字“1”开始执行程序;东西方向绿灯亮,南北方向红灯亮;5秒后东西方向绿灯灭,东西方向的黄灯和南北方向的红灯闪烁;5秒后东西方向红灯亮,南北方向绿灯亮;5秒后南北方向绿灯灭,东西方向的红灯和南北方向的黄灯闪烁;5秒后东西方向绿灯亮,南北方向红灯亮;如此循环,知道按下任意键退出,程序结束。

4.2测试图示

图4-21 

图4-22 交通灯界面菜单:按1后自动演示

图4-23 交通灯界面菜单:按任意键后退出

图4-24按任意键后退出后界面

4.3性能分析

本系统实现了交通灯自动变换的基本功能,并通过扬声器提醒灯的转换,使系统更人性化。利用编程给定8253芯片某一频率的方波信号,控制扬声器发声。但缺点是用8255递减的方法不能很精确地计算和控制灯亮的时间。但本次试验的主要目的是通过灯闪速的同时,鸣叫扬声器提醒行人,以达到人性化的效果。

                  第五部分 总结体会

5.1课程体会

(1)想法很重要。设计的思想很大程度上决定了实验的高度。根据亲身的考察和体验,红绿灯加入扬声器这一人性化的功能,提醒行人有很大的实际意义。除了此项功能,我们也一直在寻找其他的新功能,例如加人行通道的红绿灯,绿灯时播放音乐,以及温馨提示。但是由于条件资源的,我们只能通过8255和8253控制扬声器的鸣叫。但是也达到了实验的目的。

(2)汇编语言知识和微机原理知识要扎实。通过这次实验,我们小组三个成员受益匪浅。实验的完成需要扎实的基础知识,于是我们回去复习了汇编语言的书籍,查阅了相关文献和资料。这次实验不仅是对课程内容掌握程度的一次考验,而且是一次很好的训练机会,训练了我们查找资料的能力。通过此次课程设计的锻炼,自己的动手能力有了很大的提高,查找问题、解决问题的能力也有了相应的进步。

(3)做实验,总要信。在本次的实验过程中,遇到很多我们无法解决的问题。经过我们小组成员间的相互讨论,寻求同学的指导,就把自己发觉不到的错误找出来了,从而继续进行实验。过程中遇到很多困难,几天都呆在寒冷的实验室,途中也会遇到挫折,毫无头绪的时候。毅力和坚持的勇气很重要,支撑我们走过实验的每一步。本次试验虽然还存在不足的地方,但这是我们努力过的成果和结晶,红绿灯自动转换,扬声器鸣叫拿一刹那,我们都欣慰地尖叫了。阳光总在风雨后,做实验,总要信。

附录:

(1)参考资料

《微型计算机原理与接口技术》吕林涛主编,科学出版社

《TPC-USB教师实验指导书》

《微机原理与单片机课程设计》教学大纲 

《扬声器的发声原理》清华大学出版社

http://www.cnblogs.com/del/  万一的 Delphi 博客

http://www.pudn.com/downloads121/sourcecode/embed/detail512755.html

(2)元件清单

TPC通用微机接口实验箱

(8255芯片一片,8253芯片一片,扬声器(喇叭))下载本文

显示全文
专题