基于单片机的交通灯信号控制器设计
一:功能要求
设计一个基于单片机的交通灯信号控制器。已知东、西、南、北四个方向各有红黄绿色三个灯,在东西方向有两个数码管,在南北方向也有两个数码管。要求交通灯按照表1进行显示和定时切换,并要求在数码管上分别倒计时显示东西、南北方向各状态的剩余时间。
二:任务分析与整体设计思路
通过分析可知本次设计要求实现的功能主要包括计时功能、动态扫描以及状态的切换等几部分。
计时功能:要实现计时功能则需要使用定时器来计时,通过设置定时器的初始值来控制溢出中断的时间间隔,再利用一个变量记录定时器溢出的次数,达到定时1秒钟的功能。当计时每到1秒钟后,东西、南北信号灯各状态的暂存剩余时间的变量减1。当暂存剩余时间的变量减到0时,切换到下一个状态,同时将下一个状态的初始的倒计时值装载到计时变量中。开始下一个状态,如此循环重复执行。
根据表1我们可以将其整个过程看做是一个以60秒钟为一个单位的大循环,这个单位又可以细分为4个小的部分,如下图所示:
当东西方向为红灯时,南北方向有25秒的绿灯加5秒的红灯组成;当南北方向为红灯时,南北方向有25秒的绿灯加5秒的红灯组成。这一点在做数码管倒计时显示的时候应该多加注意。
动态扫描:需要使用4个数码管分别显示东西、南北的倒计时数字,将暂存各状态剩余时间的数字从变量中提取出“十位”和“个位”,用动态扫描的方式在数码管中显示。
三:硬件电路图设计
硬件protuse仿真电路如图所示。考虑到现实的情况,东西与南北方向的电路是呈镜像的。因此只需要考虑斜对称电路中的任何一边。
本电路设计是用P0口的P0.0至P0.5控制南北方向六盏灯,用P1口作数码管的段选,用P2口的前四个端口作为数码管的位选。具体连接方式见图。
四:代码分析
五:问题思考
1、代码的继续优化
2、显示黄灯时黄灯的闪烁实现
3、功能的继续增强
……
【注】代码文档和仿真文件下载地址http://download.csdn.net/source/3049609