十字路口电子交警的设计与功能实现综合实验报告.docx
《十字路口电子交警的设计与功能实现综合实验报告.docx》由会员分享,可在线阅读,更多相关《十字路口电子交警的设计与功能实现综合实验报告.docx(23页珍藏版)》请在冰豆网上搜索。
十字路口电子交警的设计与功能实现综合实验报告
综合实验报告
实验题目:
十字路口电子交警的设计与功能实现
学生班级:
学生姓名:
学生学号:
指导教师:
实验时间:
2016/9/16
目录
1设计内容1
2主要设备与器材1
3设计要求1
4设计方案1
4.1硬件原理框图设计1
4.2系统工作原理2
4.3系统电路图设计3
4.3.1复位电路3
4.3.2时钟电路3
4.3.38155A及数码管显示电路4
4.3.48255A及发光二极管连接电路4
4.3.5报警控制及鸣叫电路5
4.3.6电路原理图5
4.4软件流程图7
4.5系统资源分配9
4.6程序清单9
5方案论证14
5.1系统控制中心805114
5.2接口扩展15
5.3时间显示控制15
5.4交通模拟控制16
6调试过程17
7运行结果18
8参考资料19
9收获体会20
十字路口电子交警的设计与功能实现
1设计内容
设计用单片机控制的十字路口交通灯及撞红灯报警,并编程实现这些功能。
2主要设备与器材
硬件器材:
PC机一台,DVCC实验箱,主要涉及的芯片有:
8051、8255A,8155A,2个共阳7段LED数码管,蜂鸣器,12只发光二极管,导线等。
软件器材:
DVCC软件
3设计要求
1.用8255A驱动三种红、黄、绿颜色的12只发光二极管,用软件使它们模拟十字路口交通灯的功能。
2.当某一方向的红灯亮时,若有车辆通过,则用单片机控制的扬声器发声报警。
撞红灯的信号可用传感器采集并转换成数字量,这里以采集到一个3-5V的模拟电压表示。
4设计方案
4.1硬件原理框图设计
十字路口电子交警主要有5个模块部分组成,分别是时钟电路模块、复位电路模块、8155A显示模块、8255A交通灯模拟模块、撞红灯检测及报警装置模块。
时钟电路模块为8051控制中心提供时钟信号;复位电路模块为8051提供复位信号;8155A显示模块用来控制和显示时间;8255A交通灯模拟模块用来管理和控制发光二极管的发光情况,用以模拟交通灯的状态转换;撞红灯检测及报警装置模块,用于检测当某一方向亮红灯时,是否有车辆撞红灯,当有车辆闯红灯时,报警器报警。
原理框图如图1所示。
图1原理框图
4.2系统工作原理
交通灯控制系统是以8051作为控制核心,采用8255A驱动四组共12只发光二极管,红黄绿三色个4只,模拟交通灯的控制,提示车辆及人行道的通行管理。
用8155A驱动2个7段LED数码管,采用动态扫描方式显示倒计时时间。
用单片机控制的蜂鸣器发声报警提示某一方的红灯亮时有车辆撞红灯,系统功能状态如下:
1.系统开始运行时,初始态12只发光二极管均熄灭,延时1s进入正常工作状态2。
2.东西方向绿灯亮,南北方向红灯亮,东西方向人行道禁止行走,南北方向人行道通行。
LED数码管显示倒计时间30s,检测南北方向是否有车闯红灯,若有则报警提示,蜂鸣器鸣叫5次。
倒计时完成进入状态3
3.南北方向持续红灯亮,东西方向绿灯熄灭,黄灯闪烁,闪烁3次,提示东西方向通行即将禁止车辆通行,南北方向人行道也即将禁止行走。
进入状态4
4.东西方向红灯亮,南北方向绿灯亮,东西方向人行道通行,南北方向人行道禁止行走。
LED数码管显示倒计时间30s,检测南北方向是否有车闯红灯,若有则报警提示,蜂鸣器鸣叫5次。
倒计时完成进入状态5
5.东西方向持续红灯,南北方向绿灯熄灭,黄灯闪烁,闪烁3次,提示南北方向车辆通行即将禁止,东西方向人行道也即将禁止行走。
而后状态回到2中循环显示。
4.3系统电路图设计
4.3.1复位电路
复位电路用于产生复位信号,为8051的复位提供电平信号,电路图如图2所示。
图2复位电路
4.3.2时钟电路
8051单片机的主频信号采用内部产生方式,电路图如图3所示。
图3时钟电路
4.3.38155A及数码管显示电路
图4-8155A及数码管显示电路
4.3.48255A及发光二极管连接电路
图5-8255A及发光二极管电路
4.3.5报警控制及鸣叫电路
图6.1报警控制
图6.2报警器
4.3.6电路原理图
图7原理电路图
4.4软件流程图
图8主程序流程图
图9报警子程序流程图图10显示流程图
4.5系统资源分配
8051的P0口P0.0~P0.7分别与8155A的AD0~AD7相连用于控制时间显示。
与8255A的D0~D7相连,用于控制发光二极管的发光状态。
8255A的PB0~PB7,、PC0~PC3连接东南西北四个方向的发光二极管,具体连线如原理电路图图7所示。
4.6程序清单
ORG0000H
AJMPMAIN
ORG0630H
MAIN:
SETBP2.0
SETBP2.1
MOVDPTR,#0FF2BH;写8255控制字
MOVA,#80H;8255工作在方式0,输出
MOVX@DPTR,A
MOVDPTR,#0FF29H;初始化8255B口
MOVA,#00H;B口控制的所有灯熄灭
INCDPTR;初始化8255C口
MOVA,#00H;C口控制的灯熄灭
MOVX@DPTR,A
LCALLDELAY;调用延时1s子程序
;东西路口绿灯亮,南北路口红灯亮
DXLV:
MOVDPTR,#0FF29H;东西路口的绿灯亮
MOVA,#09H
MOVX@DPTR,A
INCDPTR;南北路口红灯亮
MOVA,#09H
MOVX@DPTR,A
MOVR0,#1EH
;循环30次,即调用1s延时子程序30次,完成30s延时
DX30S:
JBP1.0,WARN0
;检测是南北路口否有车辆闯红灯,若发现则发出警报,调用警报程序
WARN0:
LCALLWARN
LCALLDISPLAY
;调用延时30s子程序,并显示倒计时,依次显示30、29、28、...、0
DJNZR0,DX30S
;东西路口黄灯开始闪烁,闪烁间隔为1ms,闪烁三次,南北路口红灯亮
MOVR0,#03H
MOVDPTR,#0FF2AH;南北路口红灯亮
MOVA,#09H
MOVX@DPTR,A
DXH:
MOVDPTR,#0FF29H;东西路口黄灯亮
MOVA,#12H
JBP1.0,WARN1
;检测是否有闯灯,有则调用警报程序
WARN1:
LCALLWARN
MOVX@DPTR,A
LCALLDELAY1;调用延时0.1s
MOVDPTR,#0FF29H;黄灯熄灭
MOVA,#00H
MOVX@DPTR,A
LCALLDELAY1;调用延时0.1s
DJNZR0,DXH;判断黄灯闪烁次数
;东西路口红灯亮,南北路口绿灯亮
MOVDPTR,#0FF29H;东西路口红灯亮
MOVA,#64H
MOVX@DPTR,A
INCDPTR;南北路口绿灯亮
MOVA,#02H
MOVX@DPTR,A
MOVR0,#1EH
;循环30次,即调用1s延时子程序30次,完成2730延时
NAN30S:
JBP1.0,WARN2
;检测是东西路口否有车辆闯红灯,若发现则发出警报,调用警告程序
WARN2:
LCALLWARN
LCALLDISPLAY
;调用延时30S延时程序,并显示倒计时,依次显示30、29、28、...、0
DJNZR0,NAN30S
;东西路口红灯亮,南北路口黄灯闪烁,闪烁3次
MOVR0,#03H
NBH:
MOVDPTR,#0FF29H;东西路口红灯亮
MOVA,#0A4H
MOVX@DPTR,A
JBP1.0,WARN3
;检测是东西路口否有车辆闯红灯,若发现则发出警报,调用警告程序
WARN3:
LCALLWARN
INCDPTR;南北路口黄灯亮
MOVA,#04H
MOVX@DPTR,A
LCALLDELAY1;调用0.1s延时子程序
MOVDPTR,#0FF29H;东西路口红灯亮
MOVA,#24H
MOVX@DPTR,A
INCDPTR;南北路口黄灯熄灭
MOVA,#00H
MOVX@DPTR,A
LCALLDELAY1;调用0.1s延时子程序
DJNZR0,NBH;检测3次闪烁是否完成,否则继续闪烁
;一个循环完成,进入第二个循环
AJMPDXLV
;主程序完成
;子程序
;发现有车辆闯红灯,发出警报子程序
WARN:
JNBP1.0,D1
MOVR4,#05H;控制蜂鸣器的报警次数
D0:
CPLP1.2;打开蜂鸣器
LCALLDELAY1
SETBP1.1;关闭蜂鸣器
LCALLDELAY1
DJNZR4,D0
D1:
RET
;延时1s子程序
DELAY:
MOVR1,#50
DEL0:
MOVR2,#91
DEL1:
MOVR3,#100
DJNZR3,$
DJNZR2,DEL1
DJNZR1,DEL0
RET
;0.1s延时程序
DELAY1:
MOVR6,#250
DL1:
MOVR7,#200
DL2:
DJNZR6,DL2
DJNZR7,DL1
RET
;数码管显示子程序
DISPLAY:
MOVDPTR,#0FFF0H;初始化8155,A口B口输出
MOVA,#03H
MOVX@DPTR,A
MOVA,R0;设置显示初值
PUSHPSW
SETBRS0
MOVB,#10
DIVA,B
MOVR0,A;十位显示初始值
MOVR1,B;个位显示初始值
MOVDPTR,#0FFF2H
MOVA,#02H
MOVX@DPTR,A;选通十位数码管
MOVA,R0
MOVDPTR,#TAB
MOVCA,@DPTR+A
MOVDPTR,#0FFF1H
MOVX@DPTR,A;显示十位
MOVDPTR,#0FFF2H;选通个位数码管
MOVA,#01H
MOVX@DPTR,A
MOVA,R1
MOVDPTR,#TAB
MOVCA,@A+DPTR
MOVDPTR,#0FFF1H
MOVX@DPTR,A;显示个位
LCALLDELAY
DELAY2:
MOVR4,#04H
DLT1:
MOVR5,#0FFH
DLT2:
DJNZR5,DLT2
DJNZR4,DLT1
POPPSW
RET
TAB:
DB0C0H,0F9H,0A4H,0B0H,99H,92H,82H,0F8H,80H,90H
;共阳数码管表示0~9
END
5方案论证
5.1系统控制中心8051
8051是一块内部除包含MPU以外,还集成了4个8位双向并行接口,P0~P3口,都能作输入输出口使用。
在本次设计中4个并行接口均使用了部分或全部,具体连线如图7原理电路图所示。
控制芯片8051引脚图如下:
图11-8051引脚图
5.2接口扩展
为节省8051接口的使用,使用8155A、8255A作为并行接口扩展,8155A驱动数码管显示,8255A驱动发光二极管发光。
5.3时间显示控制
8155A在本次设计中A口和B口均作输出口,起控制字设置如下:
TM2
TM1
IEB
IEA
PC2
PC1
PB
PA
0
0
0
0
0
0
1
1
其结构图为
图12-8155结构图
其寻址空间为:
0200H~0FEFFH,I/O口的地址;
命令/状态寄存器:
0FFF0H
PA口地址:
0FFF1H;PB口地址:
0FFF2H
本次设计中是阳极数码管,当位选码为低电平是即选中该数码管,向该数码管输送数据即能显示出来。
5.4交通模拟控制
8255A作为一个可编程并行接口,有3个8位的输入输出端口PA口、PB口、PC口以及一个控制端口,其结构框图及控制字格式如下:
图13-8255A引脚图及控制字格式
本次设计中8255A的PB口和PC口作基本输出口,工作在方式0,控制字选择为:
80H,寻址空间为:
0200H~0FEFFH.
I/O端口地址分别是:
B口:
0FF29HC口:
0FF2AH控制口:
0FF2BH
发光二极管模拟十字路口的交通灯状态图如下:
图14-十字路口模拟状态图
从原理图可知发光二极管均是阳极二极管,当通过8255A的并口向某二极管发送低电平信号时,发光二极管开始发光,由于其自身拥有色彩,因而能用以模拟交通灯的绿黄红三种状态转换。
控制发光二极管的发光真值表如下表1:
PB端口值
PC端口值
东西绿灯亮,南北红灯亮
09H
09H
东西黄灯亮,南北红灯亮
12H
09H
东西黄灯熄灭,南北红灯亮
00H
09H
东西红灯亮,南北绿灯亮
64H
02H
东西红灯亮,南北黄灯亮
64H
04H
东西红灯亮,南北黄灯熄灭
64H
00H
表1-发光二极管真值表
6调试过程
由于本次设计使用的是DVCC单片机开发系统,其内部的许多芯片引脚之间已连线,因而实际的调试过程与设计原理有一定的差异,在程序代码中需要修改一部分。
调试操作的几个步骤如下:
1.启动DVCC系统及DVCC软件,检测DVCC系统与PC机的连接状况,按照原理图连线;
2.在DVCC软件中编译程序代码,检查程序是否有语法等错误;
3.调试程序,全速运行程序,观察是否能正确模拟十字路口的交通管理。
在调试过程中发现程序代码自身并无错,可是全速运行程序时,却不能正确的模拟交通管理。
发现是功能模块部分的程序代码不完善引起的,经过多次修改能正常模拟交通灯的控制及撞红灯的报警。
7运行结果
全速运行程序,设计运行的结果如下:
1.系统开始运行时,初始态12只发光二极管均熄灭,延时一段时间进入工作状态2;
2.东西方向绿灯亮,南北方向红灯亮,东西方向人行道禁止行走,南北方向人行道通行。
LED数码管显示倒计时间30s,检测南北方向是否有车闯红灯,若有则报警提示,蜂鸣器鸣叫5次。
倒计时完成进入状态3;
3.南北方向持续红灯亮,东西方向绿灯熄灭,黄灯闪烁,闪烁3次,提示东西方向通行即将禁止车辆通行,南北方向人行道也即将禁止行走。
进入状态4;
4.东西方向红灯亮,南北方向绿灯亮,东西方向人行道通行,南北方向人行道禁止行走。
LED数码管显示倒计时间30s,检测南北方向是否有车闯红灯,若有则报警提示,蜂鸣器鸣叫5次。
倒计时完成进入状态5;
5.东西方向持续红灯,南北方向绿灯熄灭,黄灯闪烁,闪烁3次,提示南北方向车辆通行即将禁止,东西方向人行道也即将禁止行走。
而后状态回到2中循环显示。
由于条件限制,时间显示不能给出结果,只能给予出发光二极管的状态转换图,如下:
图15-状态1图16-状态2
图17-状态3图18-状态4
8参考资料
[1]王守中.一读就通51单片机设计[M].北京:
电子工业出版社,2011.
[2]李忠国.单片机应用技能实训[M].北京:
人民邮电出版社,2006.
[3]先锋工作室.单片机程序设计实例[M].北京:
清华大学出版社,2003.
[4]张毅刚.单片机原理及接口技术[M].哈尔滨:
哈尔滨工业大学出版社,1990.
9收获体会
本次课程设计引导我们将理论知识转化成实际的成果,在初学单片机这门课时,被很多汇编指令搞的很头痛,比如比如DJNZ和CJNE都区分不了,源代码注释又很少,看懂汇编程序需要很长时间。
我在油校图书馆翻到一本《一读就通51单片机设计》,注释很多,我从最基本的延时子程序看,学会了不少汇编指令。
总之,本次收获不少,更加强了我搜集和整合资料的能力。