1.任务描述
本项目要求用单片机设计一个键控信号灯控制器,要求:单片机接3个发光二极管(LED)L1、L2、L3和1个独立按键S1。上电后灯全部不亮,第1次按下S1时L1点亮,第2次按下S1时L2点亮,第3次按下S1时L3点亮,第4次按下S1时灯全熄灭。之后周而复始。
2.总体设计
系统结构如图5-7所示。
3.硬件设计
键控信号灯控制器的硬件电路如图5-14所示。L1接P1.0,L2接P1.1,L3接P1.2,按键S1接P3.0。
图5-14 键控信号灯控制器硬件电路原理图
4.软件设计
软件流程图如图5-15所示。
设计思路:从上面的要求我们可以看出,L1~L3发光二极管的点亮受按键S1控制,在此,可以对按键按下的次数用一个变量flag进行记忆,未按键时flag初始值为0,按第1次flag为1,按第2次flag为2,按第3次flag为3,按第4次flag又变为0,之后周而复始。
源程序如下:(www.xing528.com)
图5-15 键控信号灯控制器
5.虚拟仿真与调试
键控信号灯控制器的Proteus仿真硬件电路图如图5-16所示,在Keil μVision3与Proteus环境下完成仿真调试。观察调试结果如下:上电后灯全部不亮,第1次按下S1时L1点亮,第2次按下S1时L2点亮,第3次按下S1时L3点亮,第4次按下S1时灯全熄灭,之后周而复始。
图5-16 键控信号灯控制器硬件电路原理图
6.能力拓展
将LED灯换成一个共阳极7段数码管接至P1口,一个按键S控制数码管显示的数字顺序:若S未被按下,数码管显示0;若S被按下第1次,数码管开始按照“1、2、3、4、5、6、7、8、9、0”顺序显示;若S被按下第2次,数码管按照“0、9、8、7、6、5、4、3、2、1”顺序显示。每个数字显示时间均为1s。
免责声明:以上内容源自网络,版权归原作者所有,如有侵犯您的原创版权请告知,我们将尽快删除相关内容。