基于新型规则的可编程交通控制系统.docx
《基于新型规则的可编程交通控制系统.docx》由会员分享,可在线阅读,更多相关《基于新型规则的可编程交通控制系统.docx(51页珍藏版)》请在冰豆网上搜索。
基于新型规则的可编程交通控制系统
题目:
基于新型规则的可编程交通控制系统设计
学校:
山东大学
编号:
A甲1007
作者:
鲁振兴亓磊张义家
赛前辅导及文稿整理辅导教师:
姚福安万鹏
2004年9月13号
基于新型规则的可编程交通控制系统设计
摘要
本系统由单片机系统、键盘、LCD显示、交通灯演示系统组成。
系统包括人行道、左转、右转、以及基本的交通灯的功能。
系统除基本交通灯功能外,还具有倒计时、时间设置、紧急情况处理、语音提示、LCD信息显示、分时段调整信号灯的点亮时间以及根据具体情况手动控制等功能。
一方案设计与论证:
1电源提供方案
为使模块稳定工作,须有可靠电源。
我们考虑了两种电源方案
方案一:
采用独立的稳压电源。
此方案的优点是稳定可靠,且有各种成熟电路可供选用;缺点是各模块都采用独立电源,会使系统复杂,且可能影响电路电平。
方案二:
采用单片机控制模块提供电源。
改方案的优点是系统简明扼要,节约成本;缺点是输出功率不高。
综上所述,我们选择第二种方案。
2显示界面方案
该系统要求完成倒计时、信息提示等功能。
基于上述原因,我们考虑了三种方案:
方案一:
完全采用LCD显示。
这种方案只显示有限的符号和数码字苻,无法胜任题目要求。
方案二:
完全采用点阵式LCD显示。
这种方案实现复杂,且须完成大量的软件工作;但功能强大,可方便的显示各种英文字符,汉字,图形等。
方案三:
采用LED与点阵LCD相结合的方法因为设计既要求倒计时数字输出,又要求有汉字信息提示及图形输出等,为方便观看并考虑到现实情况,用LED与LCD分别显示时间与提示信息。
这种方案既满足系统功能要求,又减少了系统实现的复杂度。
权衡利弊,第三种方案可互补一二方案的优缺,我们决定采用方案三以实现系统的显示功能。
3输入方案:
题目要求系统能手动设灯亮时间、紧急情况处理,我们讨论了两种方案:
方案一:
采用8155扩展I/O口及键盘,显示等。
该方案的优点是:
使用灵活可编程,并且有RAM,及计数器。
若用该方案,可提供较多I/O口,但操作起来稍显复杂。
方案二:
采用ZLG7289来控制键盘及数码管显示。
由于7289是串行控制方式,有专用的命令字,控制起来简单,且占用较少口线。
其电路图如图
(1)。
由于该系统对于交通灯及LCD的控制,只用单片机本身的I/O口就可实现,且本身的计数器及RAM已经够用,故选择方案二。
8155与单片机接口
4交通灯演示方案:
采用在面板上焊接三色发光二极管模拟交通红绿灯,以发光二极管拼出小人状(并闪烁)/箭头状作为人行提示/左右转提示,简单明了;且实现简单,清晰明了。
二.系统设计
1总体设计
系统总框图如下:
模块说明
※1键盘控制电路:
2×8键盘,由单片机外接ZLG7289控制。
※2单片机最小系统:
系统的主控制器,用以控制其他模块协调工作。
※3LCD显示模块:
用以显示提示信息,如天气、路况等,接口电路简单,由单片机控制。
※4LED显示(倒计时)模块:
由单片机外接ZLG7289控制,经排线与交通灯演示模块相连,用以显示交通灯倒计时时间。
※5控制接口电路:
用于连接单片机系统与交通灯演示模块,该电路含74ls139(二四译码器)、74ls373(数据锁存器),可使交通灯正常工作。
※6交通灯演示模块:
演示系统的工作情况。
该模块主要由发光二极管构成
※7语音提示模块:
采用现成的2532-120单段录放板(可录音及重复播放),用以完成语音提示。
交通灯各状态说明:
交通灯在通常工作条件中有五种状态:
绿灯+人行道(S1);绿灯+右转(S2);黄灯(S3);红灯+左转(S4);红灯(S5)五种状态。
*状态说明:
(S1)绿灯+人行道:
车辆前行;行人可通过人行道;
(S2)绿灯+右转:
车辆可向前、向右行驶。
(S3)黄灯:
过渡状态。
(S4)红灯+左转:
车辆向左行驶;但不能前行。
(S5)红灯:
禁止通行与转弯。
注:
红黄绿等均为前行方向的信号指示灯,济南较大路口均为此种设计,只是左转、人行无红灯指示。
*状态图:
*真值表:
(注:
R、G、Y、L、Rt、M分别表示红灯、绿灯、黄灯、左转、右转、人行道灯)
S
R1G1Y1L1Rt1M1
R2G2Y2L2Rt2M2
0
010001
100000
1
010010
100000
2
001000
100000
3
100100
100000
4
100000
010001
5
100000
010010
6
100000
001000
7
100000
100100
本系统还设计了应急况处理;在紧急情况下,设置交通灯状态为:
※全红:
东南西北所有方向禁止通行。
※南北红、东西绿:
南北方向禁行;东西方向通行。
※东西红、南北绿:
东西方向禁行;南北方向通行。
2各模块设计:
(1).单片机及键盘控制模块
单片机采用89C52,其中有8K程存可用。
对交通灯的控制主要用其中的计数器定时来完成。
一方面要完成对各模块的控制,另一方面也要协调好各模块的时序及口线冲突问题。
键盘采用7289串行控制,其电路图如图
(1)所示。
共采用8个按键:
数字键0-9,时间设置键,回车键,紧急情况控制键,模式转换键,手动控制键及恢复键。
时间设置可分别设计各方向的通行时间,其设置的时间应符合以下公式:
Tr1=Tg2+Ty2+Tl2+Tl1
Tg1=Tm1+Trt1
Tr2=Tg1+Ty1+Tl1+Tl2
Tg2=Tm2+Trt2
模式转换功能为根据交通状况切换到预先设定好的通行时间模式,或切换回原来模式。
手动控制为手动控制各个方向的通行时间,具有灵活的特性。
恢复键是从紧急状态或手动控制状态返回正常状态。
图
(1)
(2).LCD和LED显示模块
LED用来实现倒计时功能,可直接从7289的接口上接过来。
其控制较为简单。
LCD用来显示提示信息及在时间设置时的提示功能。
其电路图如图
(2)所示。
图
(2)
(3).交通灯演示模块
交通灯用发光二极管代替,因为P2口过一段时间后其值会发生变化,故采用P2口加锁存器和P3口一起来控制。
其电路图如图(3)。
图3
3软件系统:
※流程图
如图所示
三.调试
根据方案设计的要求,调试过程共分三大部分:
硬件调试、软件调试和软硬联调。
1硬件调试:
⑴交通灯演示电路的调试:
交通灯模块由多个发光二极管组成,接线繁琐,极易出错。
检查二极管无故障、导线无断线、连线接头无互相搭联后可先写一个软件调试程序,依次检查东南西北方向的指示灯(发光二极管)是否点亮;若未点亮,则可能是连线接错。
根据灯的亮灭情况依次查找直到电路正常工作为止。
⑵倒计时电路调试:
倒计时电路主要有数码管组成。
当交通灯程序写好后,倒计时的显示可与最小系统板上两组数码管显示比较(系统板上的这两组数码管用以检查倒计时工作情况)。
若倒计时电路中有数码管不亮,检查数码管是否良好、数码管连线是否良好。
依次检查,直至倒计时电路正常工作。
⑶语音提示电路的调试:
本系统采用现成的语音板。
语音板上电后若不能工作,可将录音板首先复位,然后录音,再重放。
依上操作,直到语音板正常工作。
⑷其它电路的调试主要看接口以及连线是否正确。
依次检查,直到正常工作。
2软件调试
本系统的软件系统很大,全部采用汇编语言编写,除语法与逻辑差错外,当确认程序没问题时,直接下载到单片机仿真调试。
采取自下到上的方法,单独调好每一个模块,最后完成一个完整的系统调试。
3软硬联调
系统做好后,进行系统的完整调试。
(1).初始化后,两个方向通行时间完全相等。
Tr1=Tr2=19s
Tg1=Tg2=12s,Ty1=Ty2=2s,Tl1=Tl2=5s,Trt1=Trt2=4s,Tm1=Tm2=8s
各灯运行及倒计时情况良好。
(2).按模式转换键后,按预先装入的模式2进行工作:
Tr1
Tg1
Ty1
Tl1
Trt1
Tm1
27
22
4
8
7
15
Tr2
Tg2
Ty2
Tl2
Trt2
Tm2
39
12
2
5
4
8
(3).按设置键后,进行时间设置:
Tr1
Tg1
Ty1
Tl1
Trt1
Tm1
21
6
2
3
2
4
Tr2
Tg2
Ty2
Tl2
Trt2
Tm2
14
9
2
5
3
6
完成后,会按重新设置的时间进行。
(4).按紧急预案键后,先出现全红状态,再按一下该键,又出现一方通行状态,再按,则另一方通行。
如此循环。
按手动控制键后,进行手动控制,每按一次,灯会转到下一个状态。
按恢复键对上两者进行恢复到正常状态。
Abstract
Thissystemismadeupofsingle-chipmicrocomputer,keyboard,lcddisplayingmoduleand
Trafficlightssystem.Thesystemincludespavement,
lefttruning,righttruning,andthebasictrafficlightsfunction.Exceptingthebasictrafficlightsfunction,it
alsoincludescouting,timeinstalling,emergencydisposaling,speechcluing,lcdinformationdisplaying,
adjustingthelightingtimeoflightsbasedondifferenttimeandcontrollingwithhandinaccordancewithcircumstancesandsoon.
参考书目:
《单片机原理及接口技术》李朝青北京航空航天大学出版社
《电路设计与仿真》清源机算计工作室机械工业出版社
《电子系统设计与实践》杨刚周群电子工业出版社
《电子系统设计》何小艇浙江大学出版社
程序:
delaydata55h
BIT_CNTDATA54H
DELAY1DATA53H
DECIMALDATA52H
SEND_BUFDATA51H
REC_BUFDATA50H
CSBITP1.3
CLKBITP1.4
DIOBITP1.5
KEYBITP1.6
DIEQUP1.7;寄存器选择信号
RWEQUP1.2;读/写选择信号
comequ2ah
datequ2bh
org1000h
redt01:
db52h,65h,64h,20h,74h,69h,6dh,65h,31h,3ah
yellowt01:
db59h,65h,6ch,6ch,6fh,77h,20h,74h,69h,6dh,65h,31h,3ah
greent01:
db47h,72h,65h,65h,6eh,20h,74h,69h,6dh,65h,31h,3ah
leftt01:
db4ch,65h,66h,74h,20h,74h,69h,6dh,65h,31h,3ah
rightt01:
db52h,69h,67h,68h,74h,20h,74h,69h,6dh,65h,31h,3ah
mant01:
db4dh,61h,6eh,20h,74h,69h,6dh,65h,31h,3ah
redt02:
db52h,65h,64h,20h,74h,69h,6dh,65h,32h,3ah
yellowt02:
db59h,65h,6ch,6ch,6fh,77h,20h,74h,69h,6dh,65h,32h,3ah
greent02:
db47h,72h,65h,65h,6eh,20h,74h,69h,6dh,65h,32h,3ah
leftt02:
db4ch,65h,66h,74h,20h,74h,69h,6dh,65h,32h,3ah
rightt02:
db52h,69h,67h,68h,74h,20h,74h,69h,6dh,65h,32h,3ah
mant02:
db4dh,61h,6eh,20h,74h,69h,6dh,65h,32h,3ah
successt:
db53h,75h,63h,63h,65h,73h,73h,13h
tishi01:
db39h,20h,0d4h,0c2h,31h,31h,0c8h,0d5h,2ch,20h,0d0h,0c7h,0c6h,0dah,0c1h,0f9h
db0c4h,0fah,0cfh,0d6h,0d4h,0dah,0ceh,0bbh,'于山大路'
db0cch,0ech,0c6h,0f8h,0b6h,0e0h,0d4h,0c6h,2ch,32h,35h,2dh,33h,31h,0b6h,0c8h
db'与经十路路口。
'
tishi02:
db'东西方向车流量较'
db'全。
'
db'大,请注意行车安'
tishi03:
db'体育新闻:
意甲今'
db'均未获胜。
'
db'日开战,米兰双雄'
org0
ljmpmain
org000bh
ljmpds0
org001bh
ljmpds1
org0030h
main:
movr0,#3
MOVDELAY,#25;延时25MS
RST_DELAY5:
DJNZDELAY1,RST_DELAY5
DJNZDELAY,RST_DELAY5
movtmod,#11h
movsp,#60h
mov2ch,#3
mov2dh,#2
mov3bh,#3
mov20h,#19
mov21h,#12
mov22h,#2
mov23h,#5
mov24h,#4
mov25h,#8
mov035h,#19
mov036h,#12
mov037h,#2
mov038h,#5
mov039h,#4
mov03ah,#8
mov046h,035h
mov47h,36h
mov48h,37h
mov049h,038h
mov04ah,039h
mov04bh,03ah
mov056h,#34
mov057h,#25
mov058h,#4
mov059h,#8
mov05ah,#7
mov05bh,#15
mov33h,22h
mov34h,20h
movb,#0ah
movr2,22h
movr3,#8
movtl0,#0b0h
movth0,#3ch
setbtr0
setbet0
setbtr1
setbet1
setbea
;ljmpds0
MOVDELAY,#25;延时25MS
RST_DELAY1:
DJNZDELAY1,RST_DELAY1
DJNZDELAY,RST_DELAY1
MOVSEND_BUF,#10100100B;初始化命令
CALLSEND
SETBCS
MAIN_LP:
JBKEY,MAIN_LP
MOVSEND_BUF,#00010101B;有键按下,发送读键盘命令
CALLSEND
CALLRECEIVE;读键盘
SETBCS
MOVA,REC_BUF
cjnea,#0fh,shuzi1
cplet0
cplet1
mov5ch,r2
mov10h,#55
jbet0,exit1
lcallred1
mov29h,#0fh
movr1,#20h
ljmpMAIN_LP2
exit1:
lcallint
ljmpMAIN_LP2
shuzi1:
cjnea,#10,shuzi10
shuzi10:
jncenter
mov1bh,a
mova,10h
cjnea,#55,shuzi22
mov31h,30h
mova,1bh
mov30h,a
lcallshuzi
mova,29h
inca
mov29h,a
shuzi22:
ljmpMAIN_LP2
enter:
cjnea,#14,jjya1
mova,29h
mov5ch,r2
cjnea,#10h,two
one:
cjner1,#26h,one1
one1:
jncone2
mov@r1,30h
ljmpexit
one2:
mov@r0,30h
incr0
ljmpexit
jjya1:
ljmpjjya
two:
mova,31h
movb,#10
mulab
adda,30h
cjner1,#26h,two1
two1:
jnctwo2
mov@r1,a
ljmpexit
two2:
mov@r0,a
incr0
exit:
mov29h,#0fh
incr1
yellow:
cjner1,#22h,green
lcallyellow1
ljmpMAIN_LP2
green:
cjner1,#21h,left
lcallgreen1
ljmpMAIN_LP2
left:
cjner1,#23h,right
lcallleft1
ljmpMAIN_LP2
right:
cjner1,#24h,man
lcallright1
ljmpMAIN_LP2
man:
cjner1,#25h,red0
lcallman1
ljmpmain_lp2
red0:
cjner1,#26h,yellow0
lcallred2
movr0,#35h
ljmpmain_lp2
yellow0:
cjner1,#28h,green0
lcallyellow2
ljmpMAIN_LP2
green0:
cjner1,#27h,left0
lcallgreen2
ljmpMAIN_LP2
left0:
cjner1,#29h,right0
lcallleft2
ljmpMAIN_LP2
right0:
cjner1,#2ah,man0
lcallright2
ljmpMAIN_LP2
man0:
cjner1,#2bh,sucsess
lcallman2
ljmpmain_lp2
sucsess:
cjner1,#2ch,go1
lcallsucsess1
mov26h,20h
mova,23h
;rla
adda,24h
adda,25h
adda,22h
mov35h,a
mova,37h
;rla
adda,38h
adda,39h
adda,3ah
mov20h,a
mov2bh,#33
setbet0
setbtr0
setbtr1
setbet1
mova,33h
cjnea,34h,hf110
hf110:
jchf120
movr2,34h
ljmphf130
hf120:
movr2,33h
hf130:
ljmpMAIN_LP2
go1:
ljmpMAIN_LP2
jjya:
mov5ch,r2
cjnea,#13,moshi
dec2ch
clrtr0
mova,2ch
cjnea,#3,j1
j1:
jcj2
mov2ch,#2
mova,2ch
j2:
cjnea,#2,jj1
movp2,#0
setbp3.6
nop
clrp3.6
setbp3.0
setbp3.1
setbp3.2
setbp3.3
setbp3.4
setbp3.5
ljmpmain_lp2
jj1:
cjnea,#1,jj2
movp2,#03h
setbp3.6
nop
clrp3.6
setbp3.0
setbp3.1
clrp3.2
clrp3.3
setbp3.4
setbp3.5
ljmpMAIN_LP2
jj2:
cjnea,#0,main_lp3
mov2ch,#3
movp2,#0ch
setbp3.6
nop
clrp3.6
clrp3.4
clrp3.5
setbp3.2
setbp3.3
setbp3.0
setbp3.1
ljmpMAIN_LP2
main_lp3:
ljmpmain_lp1
moshi:
cjnea,#12,tz
cpl7fh
jb7fh,m1
mov035h,056h
mov036h,057h
mov037h,058h
mov038h,059h
mov039h,05ah
mov03ah,05bh
mova,3ah
adda,39h
adda,38h
adda,37h
mov20h,a
mova,23h
adda,22h
adda,24h
adda,25h
mov35h,a
ljmpmain_lp2
m1:
mov035h,046h
mov036h,047h
mov037h,048h
mov038h,049h
mov039h,04ah
mov03ah,04bh
mova,3ah
adda,39h
adda,38h
adda,37h
mov20h,a
mova,23h
adda,22h
adda,24h
adda,25h
mov35h,a
ljmpmain_lp2
go:
lcallint
ljmpMAIN_LP2
tz:
cjnea,#11,main_lp1
ljmptz1
main_lp1:
ljmphf1
tz1:
decr3
clret0
clret1
cjner3,#2,tn1
movp2,#33h
setbp3.6
nop
clrp3.6
setbp3.0
setbp3.1
clrp3.2