单片机控制的循环彩灯控制系统的设计实习报告
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
单片机控制的循环彩灯控制系统的设计实习报告
第一篇:单片机控制的循环彩灯控制系统的设计实习报告
一、实习目的《单片机原理与接口技术》课程实习安排在该课程理论教学结束后进行。
其目的是通过实习,使学生进一步弄懂所学到的课本知识,巩固和深化对单片机的结构、指令系统、中断系统、键盘/显示系统、接口技术、系统扩展、定时/计数控制、程序设计、应用开发等基本理论知识的理解,提高单片机应用技术的实践操作技能,掌握单片机应用系统设计、研制方面的一般方法,培养利用单片机进行科技革新、开发和创新的基本能力、为毕业后从事和单片机相关的工作打下一定的基础。
二、实习内容利用TDN86/51二合一微机实验教学系统设计一个用8051单片机控制的循环彩灯控制系统。
三、设计过程:
1、能输出4种花型,并能由人工进行花型的切换。
(按键)*利用单片机8031的P1.7做总开关,P1.0、P1.1做花型控制开关,P1.5、P1.6做调速开关。
实习花型:(1)使彩灯从右到左逐一循环点亮。
(2)使彩灯交替闪烁。
(3)使彩灯从右到左逐一点亮,当全部点亮后同时闪烁一次。
(4)使彩灯从中间到两边顺序点亮,直至全部点亮;再将彩灯从两边到中间熄灭,直至全部熄灭。
2、循环彩灯的循环速度可调。
*P1.5做加速控制开关,P1.6做减速控制开关。
3、按键要求:(1)启动/暂停。
按动一次启动,再按一次暂停。
是一个双态转换键*“1”---启动,“0”---停止。
(2)花型变化。
按一次,立即停止当前花型的显示,转换为下一种花型。
4种花型可以循环切换。
表1.1 拨动开关与对应的花型 P1.0 P1.1 花型 0 0 花型1 1 0 花型2
花型3 1 1 花型4(3)速度+。
按键一次,速度略加快一点。
速度-。
按键一次,速度略减慢一点。
表1.2 拨动开关功能表
P1.5 P1.6 P1.7 功能功能功能 0 0 0 无加速无减速停止 1 1 1 加速减速启动 4在LED显示器上显示相应的花型号。
5、显像管显示相应数据
花型显像管 A 花型1 B 花型2 C 花型3 D 花型4
6、利用软件子程序或单片机内部的定时/计数器实现定时功能,以模拟循环速度的基准值。
四、实习器材TDN86/51二合一微机实验教学系统1台,配套计算机一台,连接导线若干
五、实验原理图:0 1 如上图所示,8031的P0口接8155的AD0-7口,P2.7和P2.6分别接了8155的片选线和I0口,而8031的P1口做开关接口,8155的PA和PC接显像管的字位和字形,PB 接LED。
六、程序及程序流程图:
开始
字型码赋值给R6 初始化字位码初始值给人R0 总开关字位码 C 口
花型控制开关
显示数据
查表字形码
C口花型显示字形显示结束调速 P1.7=0? 否否 P1.6=1? 是否P1.5=1? P1.0=0? 是是 P1.1=0? P1.0=0? 是否是否花型1 花型2 花型3 花型4
ORG 0000H
LJMP MAIN
ORG 1000H MAIN: SETB P2.6;8155初始化 CLR P2.7 ;片选线工作 MOV R0,#00H ;指向命令/状态口 MOV A,#07H ;命令字送A MOVX @R0,A ;装入8155 MOV DPTR,#DTAB ;控制花型的亮灭数据MOV R4,#0FEH ;右量MOV R2,#0FFH ;全灭CHECK: JNB P1.7,MAIN
;总开关
JB P1.0,NEXT 控制花型开关 JB P1.1,TWO ONE: MOV R6,#77H ;字形码“A”(花型1)LCALL SHOW ;调用显示程序 MOV A,R4 RL A
;左移
MOV R4,A
MOV R0,#02H ;PB输出 MOVX @R0,A LCALL DELAY ;调用延时程序 LJMP CHECK TWO: MOV R6,#7CH
;字型码“B”(花型2)LCALL SHOW MOV R3,#0AAH;10101010(0亮)MOV A,R3 MOV R0,#02H MOVX @R0,A
LCALL DELAY
MOV R3,#55H ;01010101 MOV A,R3 MOVX @R0,A LCALL DELAY LJMP CHECK NEXT: JB P1.1,FOUR THREE: MOV R6,#39H ;字型码“C”(花型3)LCALL SHOW MOV R0,#02H
MOV A, R2
MOVX @R0,A LCALL DELAY CLR C RLC A ;带位左移MOV R2,A CJNE A,#00H,NEXT3 MOVX @R0,A LCALL DELAY MOV A,#0FFH ;全灭 MOVX @R0,A LCALL DELAY MOV A,#00H ;全亮
MOVX @R0,A
LCALL DELAY
LJMP MAIN NEXT3: LJMP CHECK FOUR: MOV R6,#5EH ;字型码“D”(花型4)
LCALL SHOW MOV R0,#02H CLR A MOVC A,@A+DPTR
;查表
MOVX @R0,A LCALL DELAY
INC DPTR
CJNE A,#0FFH,NEXT4 MOVX @R0,A LCALL DELAY LJMP MAIN NEXT4: LJMP CHECK DTAB: DB 0E7H,0C3H,81H,00H DB
81H, 0C3H, 0E7H,0FFH SHOW: MOV R0,#03H ;字位码送PC 口
MOV A,#00H
显示程序 MOVX @R0,A MOV R0,#01H ;字位码送PA口 MOV A,R6 MOVX @R0,A LCALL DELAY RET DELAY: JB P1.6,DELAY1 ;延时程序 JB P1.5,DELAY2 MOV R7,#5 L0: MOV R6,#100 L1: MOV R5,#100 L2: DJNZ R5,L2 DJNZ R6,L1
DJNZ R7,L0
SJMP LAST
MOV R7,#15
;减速 DELAY1: SJMP L0 MOV R7,#01 ;加速 DELAY2: SJMP L0 RET LAST: END
七、实习总结:学了一年的单片机,对这门功课一直抱着最害怕的心理,因为总觉得很难的样子,而且很多知识好像总是不能入脑一样,这时记得了,转身就会忘记,或许就是学得不牢固吧。
不过它也有让人觉得有趣的时候,就是在实验室做实验的时候。
将程序输入单片机,然后接上硬件电路,成功之后就会显示出我们要的结果,那样是很有趣的事情。
这次的实习是一个循环灯的实验。
当然这次不像以前那样,总是有程序让我们照打,然后接线,运行就可以了。
现在的要我们自己的找程序,自己想怎么根据程序去接电路,一切都是要自己去动脑袋。
开始的时候我和很多同学一样,由开始不知道怎么做,然后一点一点去失败,然后终于有了概念,自己要怎样去想怎样去做。
后来参考了别人的那个程序,然后加上自己的理解,修改了一下那个程序,将花型变化了,还有显示的数据变化,有一个新的模式。
不过其实总的结构还是万变不离其中的。
我每一次改变,都会试一下,看看行不行,会不会有影响等等的。
最后调试到我觉得可以之后,才交功课的。
学了一年的单片机,几乎都要“使尽脑汁“了,完成了还是很高兴,有过构想,要是就这样把程序和方针的电路弄在一起,也做个电路板,还是不错的。
第二篇:单片机控制的交通灯控制系统设计
摘要
本设计是单片机控制的交通灯控制系统设计。
由单片机系统、LED显示、交通灯演示系统、键盘电路及其控制电路组成。
该系统除基本交通灯功能外,还具有倒计时、紧急情况处理、调整通行时间以及根
据具体情况手动控制等功能。
十字路口的交通灯在工作时应具有如下特点:红灯表示该条道路禁止通性;黄灯表示该条道路上未过停车线的车辆禁止通行,已过停车线的车辆继续通性;绿灯亮表示该条道路允许通行。
该系统使用12MHZ晶振与单片机AT89S52相连接,通过软件编程的方法实现十字路口的交通灯控制,输入装置是键盘开关,用于控制交通灯的运行模式以及设置通行时间,显示装置是两位的LED七段数码管。
该系统是由AT89S52单片机控制的,可以实现以下功能:
1.南北方向(主干道)车道和东西方向(支干道)两条交叉道路上的车辆交替运行,主干道每次通行时间都设为30秒、支干道每次通行间为20秒,时间可设置修改。
2.在绿灯转为红灯时,要求黄灯先亮5秒钟,才能变换运行车道。
3.黄灯亮时,要求每秒闪亮一次。
4.东西方向、南北方向车道除了有红、黄、绿灯指示外,每一种灯亮的时间都用显示器进行显示(采
用计时的方法)。
5.一道有车而另一道无车(实验时用开关 K0 和 K1 控制),交通灯控制系统能立即让有车道放行。
6.有紧急车辆要求通过时,系统要能禁止普通车辆通行,A、B道均为红灯。
关键字:AT89S52单片机,交通灯,LED显示,键盘开关电路。
目录
1概述…………………………………………………………………………-3-1.1设计背景……………………………………………………………-3-1.2设计目的……………………………………………………………-3-1.3设计要
求……………………………………………………………-3-2 系统总体方案及硬件设计………………………………………………-4-2.1 设计原理……………………………………………………………-4-2.2 各功能模块设计……………………………………………………-4-2.2.1单片机AT89S52介绍…………………………………………-4-2.2.2总体方案………………………………………………………-5-2.2.3时钟电路模块…………………………………………………-6-2.2.4复位电路模块…………………………………………………-6-2.2.5交通灯演示模块………………………………………………-7-2.2.6 LED显示模块…………………………………………………-7-2.2.7键盘开关模块…………………………………………………-8-3 软件设计…………………………………………………………………-10-3.1程序流程图…………………………………………………………-10-3.2系统软件设计………………………………………………………-11-3.2.1 LED的编程……………………………………………………-11-3.2.2交通灯模块的编程设计………………………………………-12-3.2.3定时器程序……………………………………………………-12-3.2.4键盘程序………………………………………………………-13-3.2.4.1通行时间设置程序………………………………………-13-3.2.4.2紧急情况处理程序………………………………………-14-3.2.4.3状态调整程序……………………………………………-14-4 Proreus仿真……………………………………………………………-15-4.1正常工作状态………………………………………………………-15-4.2时间调整……………………………………………………………-17-4.3紧急状况……………………………………………………………-19-4.4状态调整……………………………………………………………-20-5课程设计体会……………………………………………………………-22-参考文献……………………………………………………………………-23-附1:源程序代码…………………………………………………………-24-附2:系统原理图…………………………………………………………-32-概述 1.1 设计背景
人们越来越关注城市交通问题,而交通灯在安全行车过程中起十分重要的作用, 现在交通灯一般设在十字路口,在醒目位置用红、绿、黄三种颜色的指示灯, 加上一个倒计时的显示计时器来控制行车, 对于一般情况下的安全行车、车辆分流发挥着作用, 但根据实际行车过程中出现的情况, 主要有如下几个缺点:
1、车道让车轮流放行时间相同且固定, 在十字路口, 经常出现有些车道车辆较多, 放行时间应该长些;而有些车道车辆较少,放行时间应短些。
2、没有考虑紧急车通过时, 两车道应采取的措施, 譬如, 有消防车通过执行紧急任务时, 两车道的车都应停止, 让紧急车辆通过。
根据行车过程中出现的实际情况, 如何合理高效地利用交通灯指示交通情况,这是一个迫切需要解决的问题。
1.2 设计目的
1.进一步熟悉和掌握单片机的结构及工作原理。
2.掌握单片机的接口技术及相关外围芯片的外特性,控制方法。
3.通过课程设计,掌握以单片机核心的电路设计的基本方法和技术。
4.通过实际程序设计和调试,逐步掌握模块化程序设计方法和调试技术。
5.了解开发单片机应用系统的全过程,为今后从事相关事业打下基础。
1.3 设计要求
1.设计一个十字路口的交通灯控制电路,要求南北方向(主干道)车道和东西方向(支干道)车道两条交叉道路上的车辆交替运行,主干道每次通行时间都设为30秒、支干道每次通行时间为20秒,时间可设置修改。
2.在绿灯转为红灯时,要求黄灯先亮5秒钟,才能变换运行车道;
3.黄灯亮时,要求每秒闪亮一次。
4.东西方向、南北方向车道除了有红、黄、绿灯指示外,每一种灯亮的时间都用显示器进行显示(采
用计时的方法)。
5.一道有车而另一道无车(实验时用开关 K0 和 K1 控制),交通灯控制系统能立即让有车道放行。
6.有紧急车辆要求通过时,系统要能禁止普通车辆通行,A、B道均为红灯。
系统总体方案及硬件设计
2.1 设计原理
本设计使用的是单片机作为核心的控制元件,使得电路的可靠性比较高,功能也比较强大,而且可以随时更新系统,根据道路情况适时调整交通灯的状态,全面有效地利用交通灯指示交通情况。
该设计是以单片机AT89S52为核心完成的,在硬件电路中采用P1口点亮交通指示灯,采用P0口和P2口作为2位LED数码管的驱动接口,可显示各个方向的交通灯的持续时间,单片机外围接有按键开关电路,可以响应外部中断及键盘程序,实现紧急情况处理、调整交通灯的点亮时间等功能。
芯片选用AT89C51 单片机,电路由下列部分组成:时钟电路、复位电路、键盘电路、交通灯演示电
路、LED显示电路。
2.2 各功能模块设计 2.2.1 单片机AT89S52介绍
AT89S52是一个低电压,高性能CMOS型8位单片机,片内含8KB的可反复擦写的Flash只读程序存储器(ROM)和256 B的随机存取数据存储器(RAM)。
AT89S52是一个低功耗高性能单片机,40个引脚,32个外部双向输入/输出(I/O)端口,同时内含2个外中断口,2个16位可编程定时计数器,2个全双工串行通信口,AT89S52可以按照常规方法进行编程,也可以在线编程。
其将通用的微处理器和Flash存储器结合在一起,特别是可反复擦写的Flash存储器可有效地降低开发成本。
引脚使用说明:
I/O端口的编程实际上就是根据应用电路的具体功能和要求对I/O 寄存器进行编程。
具体步骤如下:
l.根据实际电路的要求,选择要使用哪些I/O端口。
2.初始化端口的数据输出寄存器,应避免端口作为输出时的开始阶段出现不确定状态,影响外围电
路正常工作。
3.根据外围电路功能,确定PO端口的方向,初始化端口的数据方
向寄存器。
对于用作输入的端口可以不考虑方向初始化,因为PO的复位缺省值为输入。
4.用作输入的PO管脚,需上拉电阻。
5.最后对I/O端口进行输出(写数据输出寄存器)和输入(读端口)编程,完成对外围电路的相应功能。
几个特殊管脚:
XTAL1:反向振荡放大器的输入及内部时钟工作电路的输入。
XTAL2:来自反向振荡器的输出。
RST:复位输入。
当振荡器复位器件时,要保持RST脚两个机器周期的高电平。
2.2.2 总体方案此交通灯系统位于一个十字路口,此路口为东南西北走向。
南北方向为主干道,东西方向为支干道。
各干道有一组红、绿、黄三色的指示灯,指挥车辆和行人安全通行。
红灯亮禁止通行,绿灯亮允许通行,黄灯亮提示人们注意红、绿灯的状态即将切换。
此交通灯系统工作过程分为4个状态。
状态0南北方向绿灯亮,东西方向红灯亮。
过25秒后转为状态1,南北方向绿灯灭,黄灯每秒闪亮一次,东西方向还是红灯亮。
历时5秒钟再转为状态2,南北方向红灯亮,东西方向绿灯亮。
过15秒后转为状态3,南北方向还是红灯亮,东西方向绿灯灭,黄灯每秒闪亮
一次。
历时5秒钟又循环至状态0。
交通灯的状态表如下:
状态(时间)主干道—SN 红—R 0 1 2 3 0 0 1 1
绿—G 1 0 0 0
黄—Y 0 1/0 0 0
表01 交通灯的状态表
注:
1:SN:南北方向。
WE:东西方向。
2:状态:0:熄。
1:亮。
1/0:闪。
2.2.3 时钟电路模块
时钟电路模块给单片机提供特定的时钟周期,以备单片机工作使
用。
单片机的机器周期有6MHz和12MHz的两种。
这里采用的是12MHZ的晶振,以给单片机提供12MHz的机器周期。
另外有两个30P的电容,两晶振引脚分别连到XTAL1和XTAL2振荡脉冲输入引脚。
其电路图如图02所示:
支干道—WE 红—R 1 1 0 0
绿—G 0 0 1 0
黄—Y 0 0 0 1/0
图02 时钟电路模块
2.2.4 复位电路模块
单片机系统的复位电路采用的是上电+按钮复位电路形式,其中电阻R采用10KΩ的阻值,电容采用
电容值为10μF的电解电容。
其具体连接电路如图03所示:
图03 复位电路模块 2.2.5 交通灯演示模块
此交通灯演示模块由单片机的P1口作信号输出端来控制12个交通灯的亮灭,交通灯采用的是发光二极管。
因为单片机的输出电流非常小,为了使发光二极管能够发光或者更亮,二极管采用共阳极接法。
即阳极通过470Ω电阻接+5V直流电源,阴极接单片机P1口。
同时南北方向同色灯连同上拉电阻一起并联,东西方向也是一样,以保证同一干道上的同色灯同时点亮或熄灭,并且流过二极管的电流不会因并联
而减半。
其具体连接电路如图04所示:
图04交通灯演示电路 2.2.6 LED显示模块由于同一干道上的两个方向的红灯,绿灯,黄灯点亮时间相同,所以南北方向只需一个数码管显示
相应的时间即可,同理东西方向也只需一个。
本次交通灯设计采用两位一体的共阴极数码管来显示相应的时间。
由单片机的P0口输出字型码,P2口的前四位P2.0~P2.3作位选端。
位选端接LED的共阴极,故低电位有效。
因为单片机I/O口的驱动电
流很小,一般只有几个毫安。
为了增加驱动能力,每个LED上都加上一个上拉电阻,接入+5V电源,本次设计采用的是排阻。
当P0口输出低电平时,LED不导通,上拉电阻电流灌进单片机,而当P0口输出高电平时,LED导通。
而且上拉电阻的电流也通过LED,这自然就增加了LED的发光亮度。
其具体连接电路如图05所示:
图05 LED显示电路 2.2.7 键盘开关模块
此系统通过5个开关实现所有的要求,开关一端接地,另一端接单片机的P3口。
K0接P3^7,当主干道有车而支干道无车时,按一下K0键,可以实现主干道通行。
K1接P3^6,当支干道有车而主干道无车时,按一下K1键,可以实现支干道通行。
K2接P3^3,利用中断1的方式对紧急情况进行处理,即使东南西北四个方向都亮红灯停车。
K4接P3^2,利用中断0的方式对各个干道的通行时间进行设置。
在相应中断0期间,K0,K1起调整时间的作用。
每按一下K0,主干道通行时间加一,每按一下K0,主干道通行时间加一。
K3接P3^5,按一下K3,可以使系统退出中断,回到主程序。
其具体连接电路如06图示:
图06 键盘开关电路软件设计 3.1 系统流程图
(注:判断框SN=0,WE=0处的Y,N位置标反了,读者自己改正。
)
3.2 系统软件设计本次单片机课程设计软件部分利用C语言编程,采用模块化程序设计。
程序部分由主程序、定时器程序、T0/T1中断服务程序、键盘扫描程序、交通灯点亮程序、LED数码管扫描显示程序和延时程序构成。
3.2.1 LED的编程
本次交通灯设计采用两位一体的共阴极数码管来显示相应的时间。
数码管为七段数码管,由8个发光二极管构成,通过不同的组合可用来显示数字0-9,字符A-F、H、L、P、R、U、Y、符号“-”及小数点“.”。
本设计只需要显示数字0-9,来表示相应的时间。
共阴极数码管的8个发光二极管的阴极连接在一起接位选端。
两个两位一体的共阴极数码管共有4个位选端,分别接在P2^O-P2^3,低电平有效。
数码管各个阳极管脚接各段的驱动电路输出端,既P0口。
P0^0接a,P0^1接b,……P0^6接g,P0^7接dp,高电平有效。
本设计采用逐位扫描的方式实现相应时间的动态显示。
先将P2^1置低电平,P2^0、P2^
2、P2^3置高电平,来选中南北方向数码管的个位,此时P0口的数据接传送给它显示。
经延时一段时间,将P2^1置低电位选中南北方向数码管的十位,此时P0口的数据接传送给它显示。
再用同样的方法依次驱动东西方向数码管。
通过不断改变P0口、P2口的输出,用循环扫描的方式,即可实现LED的动态显示。
LED动态显示的流程图如图08:
3.2.2交通灯模块的编写设计
本次设计的交通灯演示模块由单片机的P1口作信号输出端来控制12个交通灯的亮灭。
P1^1-P1^6依次连接南北的红灯、绿灯、黄灯,东西的红灯、绿灯,黄灯。
所以4种状态依次为0x6A,0x66,0x5C,0x3C。
当交通灯的剩余时间为零时,改变P1口的输出,进而改变交通灯的点亮状态。
交通灯依次循环上面的4个状态,就可以实现指挥交通的作用。
3.2.3 定时器程序
本次设计用定时计数器T1,TMOD是定时计算器的工作方式控制寄存器,通过对该寄存器的操作可以改变T1的工作方式。
T1有4种工作方式,由TMOD寄存器中间的M1、M0这两位来决定。
本次设计的定时计数器工作在工作方式1,M1、M0设定为01。
定时计算器采用加1计数的方式,当接收到一个驱动事件时计数器加1。
工作方式1的内部计数器宽度为16位,由TH1的8位和TL1的8位组成。
当TL1溢出时将向TH1进位,当TH1溢出后会产生相应的溢出中断。
驱动事件之间的时间间隔即为定时计数器的定时宽度。
在定时的工作方式下,定时宽度是单片机的机械周期,也是外部时钟频率的1/12。
本次设计的外部时钟频率为12MHz。
可知,接收106个驱动
事件的时间为1s。
定是1s的流程图如图09所示:
3.2.4 键盘程序
为了实现设置通行时间、紧急情况处理、有车放行等功能,本次设计中有键盘电路。
通行时间设置由外部中断0实现,紧急情况由外部中断1处理,有车放行是用普通的键盘程序实现的。
按键实际是一种常用的按钮,按键未按下时,键的两个触点处于断开状态,按键按下时,两个触点闭合。
按键是利用机械触点来实现键的闭合和释放,由于弹性作用的影响,机械触点在闭合及断开瞬间均
有抖动过程,从而使键输入也出现抖动。
抖动时间一般为5—10ms。
本次设计采用软件的办法消抖。
在第一次检测到有键按下时不动作,延时10ms,再次检测按键的状态,如果仍保持闭合状态,则确定真的有键按下。
当按键释放后,转入按键的处理程序延时程序如下: /*延时t毫秒*/ void delay(uchar t) {
uchar i;/*定义无符号字符常量*/ for(t;t>0;t--)/*执行t次循环*/ { for(i=2000;i>0;i--)/*由于时钟脉冲是12MHz,执行2000次循环的时间为1ms*/
{ } } }
3.2.
4.1 通行时间设置程序
本次设计通过外部中断0设置各个干道的通行时间。
外部中断0的请求信号由P3^2引脚输入,采用低电平有效的方式响应中断,即IT0=1。
响应中断0期间,CPU禁止响应其他中断,按键K0,K1起调整时间的作用。
采用加1的方式,每按一下K0,主干道通行时间加1,每按一下K1,支干道通行时间加1。
通行时间可以直接在数码管上显示出来。
按一下K3,可以使系统退出中断,回到主程序断点处,从下一个状态开始执行新设置的通行时间。
CPU再开放总中断。
由于本次设计使用两位一体的共阴极数码管显示时间,故设置各个干道的通行时间的范围为0—100s。
考虑道路通车的实际情况,时
间太短无法通过交通路口,所以本设计中通行时间下限为6s(绿灯1s,黄灯5s)。
在6—99s之间可以任意设置通行时间,更合理高效的指挥交通。
3.2.
4.2 紧急情况处理程序
本次设计通过外部中断1实现对紧急情况的处理。
与外部中断0相仿。
外部中断1的请求信号有P3^3引脚输入,采用低电平有效的方式相应中断,即IT0=1。
响应中断1期间,CPU 禁止响应其他中断,东南西北四个方向均亮红灯,各个干道都禁止通行。
由于不确定要持续多久,不采用倒计时的方式显示时间,数码管显示00。
紧急情况结束时,按一下K3,可以使系统退出中断,回到主程序断点处,CPU再开放总中断。
3.2.
4.3 状态调整程序
在实际交通系统中,很有可能会不时的出现一道有车而另一道无车的情况,为了更合理高效的指挥交通,本次设计的交通灯控制系统能立即让有车道放。
由开关 K0 和 K1 控制。
采用查询的方式不断扫描K0、K1,看有没有键按下。
按一下K0键,可以实现主干道通行,按一下K1键,可以实现支干道通行。
此时交通状态的改变是因为另一路无车,所以不需要设置返回,直接按主程序循环指挥。
也有可能较长时间出现一道有车另一道无车的情况,只需多次按K0或K1键即可。
Proteus仿真4.1 正常工作状态
本次设计的交通灯控制系统共有四个工作状态,分别是状态0、状态
1、状态2和状态3。
开始时先执行状态0,南北方向绿灯亮,东西方向红灯亮。
历时25秒。
如图10所示:
图10 状态0 25秒后转为状态1,南北方向绿灯灭,黄灯每秒闪亮一次,东西方向还是红灯亮。
历时5秒。
如图
11所示:
图11 状态1 5秒后再转状态2,南北方向红灯亮,东西方向绿灯亮。
历时15秒。
如图12所示:
图12 状态2 15秒后转状态3,南北方向还是红灯亮,东西方向绿灯灭,黄灯每秒闪亮一次。
历时5秒。
如图1
3所示:
图13 状态3
此状态结束后再回到状态0,如此循环进行。
4.2 时间调整
按一下开关K4,系统响应外部中断0,进入通行时间调整程序。
各个干道的通行时间有数码管显
示。
如图14所示:
图14 时间调整
按键K0,K1起调整时间的作用,每按一下K0,主干道通行时间加1,每按一下K1,支干道通行时间加1。
多次按键即可调整到合理的通行时间。
如图15所示:
图15 通行时间+1 按一下K3,可以使系统退出中断,回到主程序断点处,从下一个状态开始执行新设置的通行时间。
如图16、17所示:
图16 主干道按新设置的时间执行
图17 支干道按新设置的时间执行
4.3 紧急情况
当出现紧急情况时,按一下开关K2,系统响应外部中断1,各个方向均亮红灯禁止通行,数码管均显示0。
按一下K3,可以使系统退出中断,回到主程序断点处。
如图18所示
图18 紧急情况 4.4 状态调整
为了更合理高效的指挥交通,当南北方向有车而东西方向无车时,按K0,系统会自动跳转到状态0,实现南北方向通行。
如图19所示:图19 南北方向有车而东西方向无车时,南北放行
当东西方向有车而南北方向无车时,按K1,系统会自动跳转到状态2,实现东西方向通行。
如图20
所示:
图20 东西方向有车而南北方向无车时,东西放行课程设计体会
很荣幸有这次课程设计的机会,我可以把理论的学习与实践有机的结合起来。
在设计过程中,首先要分析课题,根据所学知识绘制出系统总体设计框图。
然后按照自己的设计思路,利用所给的元器件绘制出设计图。
在绘制设计图连接各个元器件的时候,要尽量使布线合适,从而使所作设计图清晰易看。
绘制完设计图后,接下来就是要根据设计所要求的功能和已完成的设计图编写程序,在编程时,首先应该绘制出主程序流程图,然后采用模块化程序设计的方式,编写实现各个功能的子程序,再将各个子程序与主程序连接起来。
在设计程序时要不断对程序进行修改,同时在设计程序的过程中要养成注释程序的习惯,在对程序进行修改的时候,可以通过注释很容易的看出各句程序的功能,清晰明朗。
当程序设计出来之后,就可以通过仿真软件对其进行编译,生成仿真所需要的HEX文件。
将生成的文件加载到系统图的单片机上,就可以进行系统仿真。
通过仿真,检测所作设计是否能实现预期功能。
本次课程设计使我对单片机的工作原理有了更深刻的认识,掌握了许多在以前学习中混淆不清的知识点。
在翻阅相关书籍和查询相关资料过程中学到了丰富的单片机知识,开阔了眼界,增广了知识面。
在编辑程序中,对C语言又有了新的认识和理解。
实物焊接中不仅锻炼了自己的动手能力,而且真正作到了
理论联系实际的重要性,收益匪浅。
本次课程设计我参考的三本书。
一本是余发山教授的《单片机原理及其应用技术》,一本是在图书馆借的王为青老师编写的《单片机Keil Cx51应用开发技术》,还有一本就是贾宗璞老师的《C语言程序设计》。
在此向编者表示诚挚的谢意。
本次设计中,我曾多次在课堂上向谭兴国老师请教各个模块设计的细节问题,得到了谭老师的大力
帮助,在此深表感谢!
参考文献 [1] 余发山,王福忠.单片机原理及应用技术徐州:中国矿业大学出版社,2008 [2] 贾宗璞,许合利.C语言程序设计徐州:中国矿业大学出版社,2007 [3] 王为青,程国刚.单片机Keil Cx51应用。