交通急救控制系统设计.docx
- 文档编号:8506377
- 上传时间:2023-01-31
- 格式:DOCX
- 页数:24
- 大小:173.24KB
交通急救控制系统设计.docx
《交通急救控制系统设计.docx》由会员分享,可在线阅读,更多相关《交通急救控制系统设计.docx(24页珍藏版)》请在冰豆网上搜索。
交通急救控制系统设计
交通急救控制系统设计
摘要:
《单片机原理与应用》是一门实践性和实用性都很强的课程,学习的目的在于应用。
本课程设计是配合“单片机原理与应用”课堂教学的一个重要的实践教学环节,它能起到巩固课堂和书本上所学知识,加强综合能力,提高系统设计水平,启发创新思想的效果。
十字路口车辆穿梭,行人熙攘,车行车道,人行人道,有条不紊。
那么靠什么来实现交通的井然秩序呢?
靠的是交通信号灯的自动指挥系统,来实现交通的井然有序。
交通信号灯控制方式很多。
本系统采用美国ATMEL公司生产的单片机AT89S51,以及其它芯片来设计交通灯控制。
实现了通过AT89S51芯片的P1口设置红、绿灯点亮的功能,通过AT89S51芯片的RXD、TXD输入、输出设置显示时间。
交通灯的点亮采用发光二极管实现,时间的显示采用七段数码管实现。
单片机系统采用的直流供电。
为了系统稳定可靠,系统内集成了“看门狗”芯片,避免了系统因为死机而停止工作的情况发生。
系统实用性强、操作简单、扩展性好。
一、设计课题:
4
(一)设计任务要求4
(二)系统设计说明4
(三)系统设计思路5
1)紧急情况处理功能及其实现5
2)倒计时计数功能及其实现5
二、硬件设计5
(一)硬件框图5
(二)74LS273地址锁存器6
(三)8279键盘/显示模块7
三、软件设计9
(一)主要模块流程图9
1)急救车红绿灯显示9
2)急救车路过中断显示10
3)整体流程图10
五、源程序11
六、小结21
1、设计课题:
交通急救控制系统设计
(1)设计任务要求
1)允许按十字路口交通需求设置控制状态
2)允许修改各状态下的通行时间
3)有剩余时间显示
4)全部按LED显示
(2)系统设计说明
1)可以自增系统功能
2)允许用MCS-51系列或其他类型的单片机
3)系统程序采用汇编或C语言编程
4)硬件原理图采用电子CAD绘制
(3)系统设计思路
1)紧急情况处理功能及其实现
在十字交通路口常出现的紧急情况,若不及时处理将形成不良隐患。
比如,交道口的行人有紧急情况发生,那么交警可以对信号灯进行手动控制,按下紧急情况处理键,通过软件使所有红灯亮,路口车辆禁行,行人通行,直至紧急情况结束后再转成常规的自动状态。
2)倒计时计数功能及其实现
本系统使用数码管完成倒计时显示功能。
以南北方向为例,数码管显示的数值从绿灯的设置时间最大值往下减,每秒钟减1,一直减到0。
然后又从红灯的设置时间最大值往下减,一直减到0。
接下来又显示绿灯时间,如此循环。
系统共有4个二位的LED数码管,分别放置在模拟交通灯控制板上的四个路口。
因为相同直线方向上的数码管应该显示同样的内容,所以我们可以把它们同样对待。
也就是说各个方向的数码管个位(把数码管第二位定义为个位,第一位定义为十位)用一根信号线控制,十位用另一根信号线控制。
这里采用动态显示。
考虑到单片机的P1口驱动数码管七位段码的能力,我们利用一片74LS245芯片来作为数码管的位驱动芯片。
经实验证明,该8路同相三态双向总线收发器芯片的驱动能力完全可以满足本设计的显示要求。
2、硬件设计
(1)
接口电路
AT89S51
单片机系统
硬件框图
8279
键盘控制
LED显示
74LS273
系统各部分工作:
(1)程序设置初始时间,通过AT89S51单片机内部相应寄存器来实现。
(2)由AT89S51单片机的定时器每秒钟通过P1.0口向74LS273的数据端口送信息,由74LS273的输出口显示红、绿、黄灯的点亮时间情况;由双色LED灯的DG1.DG2.DR1.DR2显示每个灯的点亮情况。
(3)AT89S51通过程序设置各个信号灯的点亮时间,通过程序设置红绿灯亮闪时间为10秒循环,由AT89S51的P1口向74LS273的数据口输出。
(4)通过AT89S51单片机的P1口来控制系统是工作。
(5)8279键盘控制模块:
A键控制红绿灯开始运行以及中断后的重新启动。
B键暂停进入调时模式。
C键中断开始救护车模式。
数字键在进入调时模式后修改时间。
(二)74LS273地址锁存器
以74LS273作为输出口,控制4个双色LED灯(可发红,绿,黄光),模拟交通灯管理。
74LS273是一种带清除功能的8D触发器,1D~8D为数据输入端,1Q~8Q为数据输出端,正脉冲触发,低电平清除,常用作数据锁存器,地址锁存器。
(三)8279键盘/显示模块
8279键盘显示接口电路,编程实现按键的读取,并将按键值显示在数码管上。
8279可按其功能分为:
键盘功能块;显示功能块;控制功能块,与CPU接口功能块控制功能块包括控制和定时寄存器,定时和控制,扫描计数器三部分,它主要用来控制键盘和显示功能块工作。
控制和定时寄存器:
用于存贮来自CPU的编程命令,CPU对8279编程以确定键盘与显示器工作方式和其它工作条件时,先把命令控制数据放到数据总线上,然后使A0=1WR=0CS=0,并在WR上升沿把命令键存在控制和定时寄存器中,并经译码,建立适当的功能。
定时和控制:
它含基本的定时计数器,第一个计数器是一个分频系数为2-31的前置定时器。
分频系数可由程序预置,使内部频率为100KHz,从而能给出5.1ms键盘扫描时间和10.3ms反跳时间,其它计数器将此基本频率分频后,提供适当的按键扫描。
行扫描.键盘阵列扫描以及显示器扫描次数。
扫描计数器:
扫描计数器有两种工作方式,在编码工作方式时,计数器提供一种二进制计数。
通过管脚SL0-SL3输出后经外部译码才能提供给键盘和显示器的扫描作用,在译码工作方式时,扫描计数器对最低二位进行译码。
SL0-SL3输出4选1的译码信号,作为显示器和键盘的译码扫描。
键盘功能块包括:
返回缓冲器,键盘反跳及控制,8x8FIFO传感器RAM,FIFO/传感器RAM状态.
3、软件设计
(1)主要模块流程图
1)急救车红绿灯显示
2)急救车路过中断显示
3)整体流程图
初始化完成后,调用按键扫描程序,取得按键状态,并根据当前系统状态调用相应的子程序。
A键初始化开始运行程序,B键暂停并进入调时模式,此时按数字键依次修改东西南北各方向绿灯时间,再次按A键重启。
C键进入中断模式,双色LED显示全为红色,再次按A键重启。
5、源程序
Z8279EQU08701H;8279状态/命令口地址
D8279EQU08700H;8279数据口地址
LEDMODEQU00H;左边输入八位字符显示
;外部译码键扫描方式,双键互锁
LEDFEQEQU2FH;扫描速率
LEDCLSEQU0C1H;清除显示RAM
LEDWR0EQU80H;设定的将要写入的显示RAM地址
READKBEQU40H;读FIFORAM地址0的命令字
ORG0000H
AJMPSTART
ORG001BH;INTT1入口地址
AJMPINT_T1
ORG0040H
START:
MOVSP,#60H
LCALLINIT8279;初始化8279
MOVR3,#9;红灯亮的时间
MOVR2,#5;绿灯亮的时间
MOVR1,#4;黄灯亮的时间
MOVR0,#5;急救车亮的时间
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
MOVR0,#36H
MOV@R0,#9
MOVR0,#37H
MOV@R0,#5
MOVR0,#38H
MOV@R0,#4
MOVR0,#39H
MOV@R0,#0
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
MOVTMOD,#10H
MOVTL1,#00H;50mS的时间常数
MOVTH1,#04CH
MOVR7,#20
MOVR6,#0
SETBET1
SETBEA;允许中断
WAIT:
LCALLGETKEY;读键盘
CJNEA,#0FFH,CONT;判断是否有键输入
MOVA,B
CJNEA,#3CH,KEY_A;输入键是'C',转CLEAR_T
LCALLCLEAR_T
KEY_A:
CJNEA,#3AH,KEY_B;输入键是'A',转START_T
LCALLSTART_T
KEY_B:
CJNEA,#3BH,CONT;输入键是'B',转SET_T
LCALLSET_T
CONT:
CJNER6,#0FFH,WAIT;若无秒标志则循环
;;;;;;;;;;;;;;;;;;;;中断后的处理显示情况;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
CJNER0,#0FFH,HUIFU
CJNER2,#0FFH,XIANS3
MOVR2,#0
DECR1
XIANS4:
LCALLDISPLAY3
LCALLDISPLAY6
CJNER1,#0,HUIFU
MOVR0,#0FEH
MOVR3,36H
MOVR2,37H
MOVR1,38H
SJMPHUIFU
XIANS3:
LCALLDISPLAY2
LCALLDISPLAY6
SJMPHUIFU
HUIFU:
MOVR6,#0;清标志
SJMPWAIT;循环
CLEAR_T:
;时间清零子程序
CLRTR1;关计数器
MOVR3,#0H
MOVR2,#10
MOVR1,#0H
MOVR0,#1
MOVP1,#0FH
LCALLDISPLAY7
MOVA,R0
DECA
MOVR0,A
JZST
POP3
POP2
POP1
POP0
POPACC
POPDPL
POPDPH
RET
START_T:
;电子钟计时子程序
SETBTR1
LCALLDISPLAY1
LCALLDISPLAY4
RET
SET_T:
;设置初值子程序
CLRTR1;关计数器
MOVR4,#7
LCALLGETWORD;读小时数
CJNEA,#0FFH,INVALID;判断输入合法性
MOVA,B
MOVB,#10
DIVAB
SWAPA
ADDA,B
MOVR3,A;保存输入的值
MOVR0,#36H
MOV@R0,A
MOVR4,#5
LCALLGETWORD;读分钟数
CJNEA,#0FFH,INVALID;判断输入合法性
MOVA,B
MOVB,#10
DIVAB
SWAPA
ADDA,B
MOVR2,A;保存输入的值
MOVR0,#37H
MOV@R0,A
MOVR4,#3
LCALLGETWORD;读分钟数
CJNEA,#0FFH,INVALID;判断输入合法性
MOVA,B
MOVB,#10
DIVAB
SWAPA
ADDA,B
MOVR1,A;保存输入的值
MOVR0,#38H
MOV@R0,A
MOVR4,#1
LCALLGETWORD;读10毫秒数
CJNEA,#0FFH,INVALID;判断输入合法性
MOVA,B
MOVB,#10
DIVAB
SWAPA
ADDA,B
MOVR0,#39H
MOV@R0,A
MOVR0,A;保存输入的值
AJMPSET_TOK
INVALID:
LCALLCLEAR_T;时间清零
SET_TOK:
RET
GETWORD:
;读数子程序
WKEY1:
LCALLGETKEY;读键盘
CJNEA,#0FFH,WKEY1;无键输入,则再读
MOVA,B
ADDA,#0C6H
JCERROR1;判断输入是否大于9
MOVA,B
SUBBA,#30H
JCERROR1;判断输入是否小于0
MOVR5,A
LCALLDISLED;显示输入的字符
MOVB,#10
MULAB
PUSHACC;保存输入的值
WKEY2:
LCALLGETKEY;读键盘
CJNEA,#0FFH,WKEY2;无键输入则再读
MOVA,B
ADDA,#0C6H;判断输入是否大于9
JCERROR2
MOVA,B
SUBBA,#30H;判断输入是否小于0
JCERROR2
DECR4
MOVR5,A
LCALLDISLED;显示输入的字符
MOVB,A
POPACC
ADDA,B
MOVB,A;把得到的值存在B
MOVA,#0FFH;置合法输入标志
AJMPKEYOK
ERROR2:
POPACC
ERROR1:
MOVA,#0;置非法输入标志
KEYOK:
RET
INIT8279:
;8279初始化子程序
PUSHDPH;保存现场
PUSHDPL
PUSHACC
NOP
MOVDPTR,#Z8279
MOVA,#LEDMOD;置8279工作方式
MOVX@DPTR,A
MOVA,#LEDFEQ;置键盘扫描速率
MOVX@DPTR,A
MOVA,#LEDCLS;清除LED显示
MOVX@DPTR,A
POPACC;恢复现场
POPDPL
POPDPH
RET
;读取键盘子程序
;输入:
无;输出:
B:
读到的键码A:
按键的标志
GETKEY:
PUSHDPH;保存现场
PUSHDPL
PUSHPSW
MOVDPTR,#Z8279
MOVXA,@DPTR;读8279状态
ANLA,#07H;屏蔽D7-D3
JNZGETVAL;判断是否有键输入
MOVA,#0H;置标志(无键输入)
SJMPNKBHIT
GETVAL:
MOVA,#READKB;读FIFORAM命令
MOVX@DPTR,A
MOVDPTR,#D8279
MOVXA,@DPTR;读键
ANLA,#3FH;屏蔽SHIFT和CTRL键
MOVDPTR,#KEYCODE;键码表起始地址
MOVCA,@A+DPTR;查表
MOVB,A;置返回键值
MOVA,#0FFH;置标志(有键输入)
NKBHIT:
POPPSW;恢复现场
POPDPL
POPDPH
RET
;显示字符子程序
;输入:
R4,位置R5,值
DISLED:
PUSHDPH;保存现场
PUSHDPL
PUSHACC
MOVA,#LEDWR0;置显示起始地址
ADDA,R4;加位置偏移量
MOVDPTR,#Z8279
MOVX@DPTR,A;设定显示位置
MOVDPTR,#LEDSEG;置显示常数表起始位置
MOVA,R5
MOVCA,@A+DPTR;查表
MOVDPTR,#D8279
MOVX@DPTR,A;显示数据
POPACC;恢复现场
POPDPL
POPDPH
RET
DELAY:
;延时子程序
PUSH2
PUSH0;保存现场
PUSH1
MOV1,#0H
DELAY2:
MOV0,#0B2H
DJNZ0,$
DJNZ1,DELAY2
DJNZ2,DELAY
POP1;恢复现场
POP0
POP2
RET
INT_T1:
;INT_T1中断服务子程序
PUSHDPH;保护现场
PUSHDPL
PUSHACC
PUSHPSW
CLRTR1
MOVTL1,#00H;50mS定时常数
MOVTH1,#4CH
SETBTR1
DJNZR7,EXIT;判断1秒种到了没有
MOVR7,#20
MOVR6,#0FFH
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
DECR3
DECR2
CJNER0,#0FFH,ABC
SJMPEXIT
ABC:
CJNER2,#0FFH,XIANS1
MOVR2,#0
DECR1
CJNER1,#0FFH,XIANS2
MOVR3,36H
MOVR2,37H
MOVR1,38H
MOVR0,#0FFH
SJMPEXIT
XIANS1:
LCALLDISPLAY1
LCALLDISPLAY4
SJMPEXIT
XIANS2:
LCALLDISPLAY1
LCALLDISPLAY5
SJMPEXIT
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
EXIT:
POPPSW;恢复现场
POPACC
POPDPL
POPDPH
RETI;中断返回
;;;;;;;;;;;;;;东西显示红灯;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
DISPLAY1:
MOVA,R3
ANLA,#0FH
MOVR5,A
MOVR4,#6
LCALLDISLED
MOVR4,#4
LCALLDISLED
MOVA,R3
SWAPA
ANLA,#0FH
MOVR5,A
MOVR4,#7
LCALLDISLED
MOVR4,#5
LCALLDISLED
RET
;;;;;;;;;;;;;;东西显示绿灯;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
DISPLAY2:
MOVP1,#0A5H
MOVA,R2
ANLA,#0FH
MOVR5,A
MOVR4,#6
LCALLDISLED
MOVR4,#4
LCALLDISLED
MOVA,R2
SWAPA
ANLA,#0FH
MOVR5,A
MOVR4,#7
LCALLDISLED
MOVR4,#5
LCALLDISLED
RET
;;;;;;;;;;;;;;东西显示黄灯;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
DISPLAY3:
MOVP1,#05H;南北红灯,东西黄灯
MOVA,R1
ANLA,#0FH
MOVR5,A
MOVR4,#6
LCALLDISLED
MOVR4,#4
LCALLDISLED
MOVA,R1
SWAPA
ANLA,#0FH
MOVR5,A
MOVR4,#7
LCALLDISLED
MOVR4,#5
LCALLDISLED
RET
;;;;;;;;;;;;;;;;;;;;南北显示绿灯;;;;;;;;;;;;;;;;;;
DISPLAY4:
MOVP1,#5AH;东西红,南北绿
MOVA,R2
ANLA,#0FH
MOVR5,A
MOVR4,#0
LCALLDISLED
MOVR4,#2
LCALLDISLED
MOVA,R2
SWAPA
ANLA,#0FH
MOVR5,A
MOVR4,#3
LCALLDISLED
MOVR4,#1
LCALLDISLED
RET
;;;;;;;;;;;;;;;;;南北显示黄灯;;;;;;;;;;;;;;;;;;;;;;;;;;;;
DISPLAY5:
MOVP1,#0AH;南北黄灯,东西红灯
MOVA,R1
ANLA,#0FH
MOVR5,A
MOVR4,#0
LCALLDISLED
MOVR4,#2
LCALLDISLED
MOVA,R1
SWAPA
ANLA,#0FH
MOVR5,A
MOVR4,#3
LCALLDISLED
MOVR4,#1
LCALLDISLED
RET
;;;;;;;;;;;;;;南北显示红灯;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
DISPLAY6:
MOVA,R3
ANLA,#0FH
MOVR5,A
MOVR4,#0
LCALLDISLED
MOVR4,#2
LCALLDISLED
MOVA,R3
SWAPA
ANLA,#0FH
MOVR5,A
MOVR4,#3
LCALLDISLED
MOVR4,#1
LCALLDISLED
RET
;;;;;;;;;;;;;;南北显示红灯;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
DISPLAY7:
MOVA,R0
ANLA,#0FH
MOVR5,A
MOVR4,#0
LCALLDISLED
MOVR4,#2
LCALLDISLED
MOVR4,#4
LCALLDISLED
MOVR4,#6
LCALLDISLED
MOVA,R0
SWAPA
ANLA,#0FH
MOVR5,A
MOVR4,#3
LCALLDISLED
MOVR4,#1
LCALLDISLED
MOVR4,#5
LCALLDISLED
MOVR4,#7
LCALLDISLED
RET
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
LEDSEG:
DB3FH,06H,5BH,4FH,66H,6DH,7DH,07H;'0,1,2,3,4,5,6,7'
DB7FH,6FH,77H,7CH,39H,5EH,79H,71H;'8,9,A,B,C,D,E,F'
;键盘键码表
KEYCODE:
DB30H,31H,32H,33H,34H,35H,36H,37H;'0,1,2,3,4,5,6,7'
DB38H,39H,3AH,3BH,3CH,3DH,3EH,3FH;'8,9,A,B,C,D,E,F'
END
6、小结
通过这次交通灯的课程设计,使我得到了一次用专业知识、专业技能分析和解决
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 交通 急救 控制系统 设计