单片机交通灯综合实验报告word文档良心出品.docx
《单片机交通灯综合实验报告word文档良心出品.docx》由会员分享,可在线阅读,更多相关《单片机交通灯综合实验报告word文档良心出品.docx(13页珍藏版)》请在冰豆网上搜索。
单片机交通灯综合实验报告word文档良心出品
河北工业大学
实验报告
学院:
专业:
班级:
姓名:
学号:
实验课程:
单片机应用系统设计开发入门
指导教师:
实验名称:
交通信号灯控制实验
实验时间:
2019年5月23日
2019年5月23日
一实验要求
1实验目的及实验内容要求
实验目的:
1.熟悉外部中断源的扩展方法。
2.初步掌握单片机综合应用系统设计。
3.掌握用Proteus调试汇编源程序的方法。
实验内容要求:
用发光二极管模拟交通信号灯,用逻辑电平开关模拟控制开关,设计一个交通信号灯控制系统。
设计要求如下:
(1)A车道与B车道交叉组成十字路口,A是主道,B是支道;正常情况下,A、B两车道轮流放行。
具体放行时间和要求如下:
(2)A车道放行50s,其中绿灯常亮44s,绿灯闪烁3s(用于警告),黄灯常亮3s(用于警告)。
(3)B车道放行30s,其中绿灯常亮24s,绿灯闪烁3s(用于警告),黄灯常亮3s(用于警告)。
在交通繁忙时,交通信号灯控制系统应有手控开关,可人为地改变信号灯的状态,以缓解交通拥挤状况。
控制要求如下:
(1)在B车道放行期间,若A车道有车而B车道无车,按下开关使A车道放行15s。
(2)在A车道放行期间,若B车道有车而A车道无车,按下开关使B车道放行15s。
(3)有紧急车辆通过时,按下开关使A、B车道均为红灯,禁行15s。
2实验设备或运行软件平台
完成本实验需要使用到单片机仿真软件Proteus8,该软件是英国LabCenterElectronics公司出版的EDA工具软件,是目前比较好的仿真单片机及外围器件的工具。
从原理图布图、代码调试到单片机与外围电路协同仿真,一键切换到PCB设计,真正实现了从概念到产品的完整设计。
是目前世界上唯一将电路仿真软件、PCB设计软件和虚拟模型仿真软件三合一的设计平台。
在编译方面,它也支持IAR、Keil、MATLAB等多种编译器。
其具有的基本功能特点为:
1.原理布图。
2.PCB自动或人工布线。
3.SPICE电路仿真。
革命性的特点是1.互动的电路仿真。
2.仿真处理器及其外围电路。
二实验内容及过程
1实验设计及分析(或者实验程序)
实验原理图如下所示:
交通信号灯模拟控制系统程序流程图如下图所示:
主程序一道有车另一道无车时紧急车辆通过时
的中断服务程序的中断服务程序
实验程序及程序分析如下:
ORG0000H
LJMPMAIN;LJMP,转向主程序
ORG0003H
LJMPINT00;转向紧急车辆中断服务程序
ORG0013H
LJMPINT11;转向有车车道放行中断服务
ORG0030H
MAIN:
SETBPX0;置外部中断0为高优先级中断
MOVTCON,#00H;置外部中断0、1为电平触发
MOVIE,#85H;开CPU中断、外部中断0、1中断
LOOP:
;A道绿灯亮;B红灯亮
MOVP1,#0F3H
MOVR1,#88;44s延时循环次数
AP1:
;调用0.5s延时子程序DELAY
LCALLDELAY
DJNZR1,AP1;44s不到,继续循环(DJNZRN,REL是一条件转移指令,先将工作寄存器Rn中的数减“1”,判断结果是否为“0”,不为“0”程序就跳转到行标为REL的地方执行,否则,为“0”就不转移,继续执行下一条指令。
)
MOVR1,#6;3s延时的循环次数(循环一次延时0.5秒。
)
AP2:
;A道绿灯闪烁
CPLP1.2
LCALLDELAY;参考程序中缺少此句,若缺失会导致无法延时。
DJNZR1,AP2;3s未到,继续循环
MOVP1,#0F5H;A道黄灯亮,B道红灯亮
MOVR1,#6
AP3:
LCALLDELAY
DJNZR1,AP3;3s未到,继续循环
MOVP1,#0DEH;A道红灯亮,B道绿灯亮
MOVR1,#48;延时循环48次
BP1:
LCALLDELAY
DJNZR1,BP1;24s未到继续循环
MOVR1,#6
BP2:
CPLP1.5;B道绿灯闪烁
LCALLDELAY
DJNZR1,BP2;3s未到,继续循环
MOVP1,#0EEH;A道红灯亮,B道黄灯亮
MOVR1,#6
BP3:
LCALLDELAY
DJNZR1,BP3;3s未到,继续循环
SJMPLOOP
ORG0200H
INT00:
保护P1口数据
PUSHP1;PUSH入栈指令
MOVP1,#0F6H;A道红灯亮;B道红灯亮
MOVR2,#30;15秒延时的循环次数
DELAY0:
LCALLDELAY
DJNZR2,DELAY0
POPP1;恢复P1口数据POP是出栈指令
RETI;返回主程序
ORG0300H
INT11:
CLREA;关中断EA为总中断
PUSHP1;保护现场
PUSH04H
PUSH05H
PUSH06H
SETBEA;开中断
JNBP3.0,AP0;A道无车,转向判断B道(JNB比较转移指令。
当P3.0是0时就转移执行AP0,否则就顺序执行。
)
MOVP1,#0F3H;A道绿灯亮,B道红灯亮
SJMPDEL1;转向15秒延时程序
AP0:
JNBP3.1,EXIT;B道无车,退出中断
MOVP1,#0DEH;A道红灯亮,B道绿灯亮
DEL1:
MOVR3,#30;15s延时的循环次数
NEXT:
LCALLDELAY
DJNZR3,NEXT;15秒未到循环继续
EXIT:
CLREA
POP06H;恢复现场
POP05H
POP04H
POPP1
SETBEA
RETI;返回原程序
ORG0350H
DELAY:
MOVR4,#20;0.5秒延时子程序参考程序中为#10,经实验发现只能延时0.25s故改为#20,以达到实验目的。
LP1:
MOVR5,#50
LP2:
MOVR6,#248
NOP
LP3:
DJNZR6,LP3
DJNZR5,LP2
DJNZR4,LP1
RET
END
交通信号灯与控制管脚的对应关系如下:
控制状态
P1口控制码
P1.7
P1.6
P1.5
P1.4
P1.3
P1.2
P1.1
P1.0
未用
未用
B道
绿灯
B道
黄灯
B道
红灯
A道
绿灯
A道
黄灯
A道
红灯
A绿灯亮、B红灯亮
F3H
1
1
1
1
0
0
1
1
A黄灯亮、B红灯亮
F5H
1
1
1
1
0
1
0
1
A红灯亮、B绿灯亮
DEH
1
1
0
1
1
1
1
0
A红灯亮、B黄灯亮
EEH
1
1
1
0
1
1
1
0
A红灯亮、B红灯亮
F6H
1
1
1
1
0
1
1
0
2实验步骤及实验数据记录
1.先接线按下表所示的管脚与LED或逻辑开关的对应关系接线。
在Proteus8中原理图绘制界面中将接线接好。
管脚
P1.0
P1.1
P1.2
P1.3
P1.4
P1.5
P3.0
P3.1
P3.3
P3.2
LED或逻辑开关
L3
L1
L2
L7
L5
L6
K1
K2
K3
K8
控制对象
A红灯
A黄灯
A绿灯
B红灯
B黄灯
B绿灯
A道
B道
使有车车道放行低电平有效
紧急车辆放行低电平有效
高电平表示有车低电平表示无车
接线完成后如图所示:
2.输入程序,在Proteus8中SourceCode界面将程序输入完成后试运行保证程序正确。
出现编译成功后进行下一步。
3运行程序。
4.观察六只发光二极管的亮灭规律。
实验中六只发光二极管亮灭规律:
(0代表灭,1代表亮,2代表闪)
运行时间(s)
A绿
A黄
A红
B绿
B黄
B红
0
1
0
0
0
0
1
44
2
0
0
0
0
1
47
0
1
0
0
0
1
50
0
0
1
1
0
0
74
0
0
1
2
0
0
77
0
0
1
0
1
0
80
1
0
0
0
0
1
八十秒后开始重复0-80秒内的亮灭规律。
5.
部分连接图如图所示。
1)在A红灯、B绿灯亮时,先将K1拨至高电平(表示A道有车)、K2拨至低电平(表示B道无车),再将K3拨至低电平使有车车道(A道)放行,A绿灯、B红灯同时亮5s后返回原先状态。
对逻辑开关K1、K2、K3的操作对应于SW2开关,闭合SW2后,A红灯灭,绿灯亮,B绿灯灭,红灯亮。
15s后恢复回闭合开关前的的亮灯状态。
2)在A绿灯、B红灯亮时,先将K1拨至低电平(表示A道无车)、K2拨至高电平(表示B道有车),再将K3拨至低电平使有车车道(B道)放行,A红灯、B绿灯同时亮5s后返回原先状态。
对逻辑开关K1、K2、K3的操作对应于SW1开关,闭合SW1后,A绿灯灭,红灯亮,B红灯灭,绿灯亮。
15s后恢复回闭合开关前的的亮灯状态。
(提示:
K3拨至低电平后,应在5s内改为高电平,否则,单片机可能将再一次响应中断。
)
6.不论A道、B道的信号灯处于什么状态,将K8拨至低电平后,A红灯、B红灯同时亮20s后返回原先状态。
(提示:
K8拨至低电平后,应在20s内改为高电平,否则,单片机可能将再一次响应中断。
)对逻辑开关K8的操作对应于JINJI开关,闭合JINJI后,A只有红灯亮,B也只有红灯亮。
20s后恢复回闭合开关前的的亮灯状态。
3实验数据分析
1.一道有车而另一道无车时,K3拨至低电平即向单片机发出中断请求(低优先级别);若此时单片机正在执行主程序,会响应中断转入到相应的中断服务程序,先依次查询A、B车道的空闲状态,再去控制A、B车道的信号灯;若此时单片机正在执行紧急车辆通过时中断服务程序,单片机不会响应中断。
2.紧急车辆通过时,K8拨至低电平即向单片机发出中断请求(高优先级别),不论单片机正在执行主程序还是一道有车而另一道无车时的中断服务程序,会响应中断转入到相应的中断服务程序。
3.在进行步骤51)或2)操作时,若在闭合开关后没有在5s内断开开关,则在15秒时无法按时恢复回闭合开关时的亮灯状态。
4.操作过程中发现,若操作SW1开关后亮灯状态已经发生改变,则在15秒内再操作SW2开关则无法继续使亮灯状态改变。
三总结与体会
1实验任务完成情况
本实验完成情况良好。
通过老师的精心指导、本人的不懈努力和同学的热心帮助,能够基本上完成所有实验内容,且在实验过程中对单片机的了解更加深入了。
但也无法避免地遇到一些问题,比如对实验程序代码的理解不够深入,只停留在表面,且对51单片机的111条指令仍比较陌生,只能记住一些特别常用的。
对于此我的做法是,在分析实验程序的过程中,一遇到不熟悉的指令就XX搜索一下加深印象。
在反复的搜索过程中我也记住了不少指令。
通过课程的学习,目前达到的水平是能够基本看懂实验程序,能够绘制简单原理图,但仍无法做到独立编写实验程序。
2实验体会、收获、建议回答问题
通过对该实验的学习,本人也有了许多不小的收获。
对于一位非电技专业的学生来说,我在学习单片机的过程中确实存在许多问题。
老师讲的东西很多在课堂上都无法及时弄明白,必须要靠课余时间的学习。
所以起初在做该实验的时候也是感觉苦难重重,觉得自己肯定是无法完成的,但我不想轻易放弃,将老师上用的课件反复查看,发现很多上课没有注意到的重要知识点,这让我的实验变得更加容易完成了许多。
我觉得通过本次实验我的最大收获是学会了如何解决难题。
首先要做的就是对自己有信心,相信自己一定能够完成。
其次才是去认真解决问题。