1.在DVCC实验箱上,学习模拟交通灯控制的实现方法。 2.熟练掌握用定时器来控制时间。 3.掌握数码管的显示
“智能”交通信号灯模拟控制系统设计报告
一、课程设计的目的:
1.在DVCC实验箱上,学习模拟交通灯控制的实现方法。 2.熟练掌握用定时器来控制时间。 3.掌握数码管的显示 二、元件、器件
1. DVCC系列单片机防真实验系统 2. PC机
3. WD-5V稳压电源 三、内容描述
1. 分析交通管理
十字路口为南北走向与东西走向。需用到4组灯,每组要有红黄绿各一盏。初状态0为东西红灯,南北红灯。然后状态1东西绿灯通车,同时南北红灯暂停。延时一段时间之后,东西红灯、南北绿灯灭,同时黄灯闪几下。再转状态3,南北绿灯通车,东西红灯。过一段时间转状态4,南北绿灯、东西红灯灭,黄灯闪几秒。最后循环到状态1。(但由于实验箱上的端口有限,本实验只用了两组灯——东、南方向)
2.本实验同时用了数码管显示红灯的时间倒计时。在红黄绿灯转换是用了黄灯闪烁来提示。
3. 智能控制
为了实现智能控制,本实验这增加了一个功能,即在任何时候有外部环境影响一定时间时(本程序设计成5秒)时东西方向自动切换成红灯,而南北方向则切换成绿灯,或者反
之。而这里的外部环境是如果南北方向绿灯,但没人通过‘1’,而此时东西为红灯但等待通过的人很多‘0’,如果这种状态保持一定时间(本程序设计成5秒)则两通行方向状态自动转换,由于实验设备有限本实验用两个开关来作为外不状态的控制。
3.资源的分配
东、南方向的绿黄红灯分别接单片机的p1.0~p1.5。显示部分是串行输出,所以接单片机的串行口p3.0、p3.1。另外外部影响的开关接p3.2、p3.2。
四、硬件电路设计及描述:
硬件部分直接利用DVCC仿真系统实现,本设计应用电路如下:
五、软件设计流程及描述:
六、实验程序:
;======================================================= ;作者: 郭晶荣.何文烨 ;时间: 2006.03.22 ;项目: 交通灯智能控制
;功能简介 : 包括显示倒计绿灯和黄灯的时间,时间的延时完 ; 全应用了定时器控制,还有自动切换红绿灯的功能 ; r0控制绿灯时间,r6控制黄灯闪烁的次数及时间 ; 闪一次为1秒,默认的r0为20秒,r6为3秒 ;应用的端口:p1.0~~p1.6(控制交通灯)
; p3.0,p3.1 (串行口数据传送口)
; p3.2,p3.3 (外部干扰,一高一低时自动切换状态)
; ======================================================== org 0000h
ajmp start org 000bh ajmp tt0
org 0030h start:
mov scon, #00h ; mov tmod,#01h ; setb ea ; setb et0
mov th0,#3ch ; mov tl0,#0afh
mov r2,#01h ;r2 mov p1,#0e4h ; mov r0,#01h ;r0 acall yanxian ;main: ;状态1
mov p1,#0e1h ; mov 65h,#01h ; 65h mov r0,#014h ;r0 acall yanxian ; mov r6,#03h ;60h 设定串行通信的模式为0 设定定时器为工做方式1 打开中断 设定时器初直 ,定时0。1秒 标志位,用于定时 全部红灯 是绿灯的时间 延时1秒 东边绿灯
是判断是否有人的标志位 是设置绿灯亮的时间 保持绿灯亮,及显示倒计时 为设置黄灯闪的次数
san1:
mov p1,#0d2h ;黄灯亮
mov 69h,#05h ;控制定时器时间 mov r2,#01h
acall huang ;黄灯闪次数的显示 acall ding ; mov p1,#00h ; mov 69h,#05h mov r2,#01h acall ding djnz r6, san1 ;状态2
mov p1,#0cch ; mov 65h,#00h ; mov r0,#14h acall yanxian mov r6,#03h san3: mov p1,#0d2h mov 69h,#05h mov r2,#01h acall huang acall ding mov p1,#00h mov 69h,#05h mov r2,#01h
闪烁的时间 黄灯灭 南边绿灯 标志位 acall ding djnz r6,san3 ljmp main
;************************************* ;延时和显示程序
;************************************* yanxian:
clr ti ;清t0益处标志 mov a,r0 ;进行BCD码的转化 mov 64h,#00h mov r1,a inc r1 loopp: mov r4,#00h mov r3,#00h mov r5,#08h mov a,r0 loop: mov 69h,#10 clr c rlc a mov r3,a mov a,r4 addc a,r4 da a
mov r4,a ;转化后的数据放入r4 mov a,r3