利用protues防真软件、和Keil软件实现交通信号灯的制作,实验选用了51单片机作为核心元件,12盏放光二极管作为显示器件, 红、绿、黄三种颜色的灯各四盏,分别在四个方向各放三盏不同颜色的灯,利用Keil编程软件编写程序,然后加载到protues防真软件里,实验结果要实现其中一个方向的红灯亮时,相对的方向红灯也亮,另外两个方向的绿灯亮,其余的灯熄灭,同理亮绿灯也是这样,当黄灯亮时,持续闪烁5秒钟,5秒过后转换成其他灯亮,最终结果与公路上的交通信号灯的效果一样。
二、硬件图
交通信号灯包含以下主要元件:51单片机、发光二极管、电阻、电容、晶振等。电路原理图如下图所示:
三、流程图
P0端口有一个8位的寄存器,在单片机C51程序中此寄存器的名字就是P0,通过对这个寄存器P0操作就可以实现对P0端口的操作。首先设两个变量,初始时所有的灯都灭,接着东西方向的红灯亮绿灯灭,南北方向的红灯灭绿灯亮,一段时间后四个方向只有黄灯闪亮,五秒过后,东西方向的红灯灭绿灯亮,南北方向的红灯亮绿灯灭,一段时间后四个方向又只黄灯亮,五秒过后再次循环。具体流程图如下图所示:
四、流水灯程序
根据流程图编写程序如下所示:
#include unsigned int i,t; while(1) { P0_5=0;P0_0=0; for(t=0;t<50000;t++); P0_5=1; for(i=0;i<10;i++) { P0_4=~P0_4; for(t=0;t<30000;t++); } P0_3=0;P0_0=1;P0_2=0; for(t=0;t<50000;t++); P0_2=1; for(i=0;i<10;i++) { P0_1=!P0_1; for(t=0;t<30000;t++); } P0_3=1; } } 五、调试小结 交通信号灯比流水灯更复杂一点,开始拿到任务时无从下手, 原理图有了,但是编程不会,我们经过讨论,发现交通信号灯的程序跟流水灯的程序有相似之处,都会用到for语句的延时功能。在刚开始,我们利用流水灯的程序改写, 一步一步的改写、编译,再仿真,发现不对再改,经过一次一次的和同学交流讨论,终于得出了一个可行的程序,在仿真的软件里也达到了现实交通灯的效果。虽然这次实验成功了,但是程序不是我们自己独立编写的,是和同学讨论的结果,从中我们懂得现有的知识还不够,需要在今后的学习中加强这方面的知识。单片机其实是一个很神奇有趣的课程,我很喜欢。 2012年3月12日 因篇幅问题不能全部显示,请点此查看更多更全内容