成都理工大学毕业论文 — 交通灯
按键程序: void key_scan()
{
if (KEY1 == 0) {
Delay1Ms(10); //按下延时消颤if (KEY1 == 0) {
if(key_flag == 1) key_flag = 0; //取消 else
key_flag = 1; //确定 }
while(KEY1 == 0);
Delay1Ms(5); //弹起延时消颤 while(KEY1 == 0); }
if (KEY2 == 0) {
Delay1Ms(10); //按下延时消颤if (KEY2 == 0) {
if(key_flag == 2) key_flag = 0; //取消 else
key_flag = 2; //确定 }
while(KEY2 == 0);
Delay1Ms(5); //弹起延时消颤 while(KEY2 == 0); }
if (KEY3 == 0) {
Delay1Ms(10); //按下延时消颤if (KEY3 == 0) {
if(key_flag == 3) key_flag = 0; //取消 else
key_flag = 3; //确定
21
成都理工大学毕业论文 — 交通灯
}
while(KEY3 == 0);
Delay1Ms(5); //弹起延时消颤 while(KEY3 == 0);
}if (KEY4 == 0) {
Delay1Ms(10); //按下延时消颤 if (KEY4 == 0) {
if(key_flag == 4) key_flag = 0; //取消 else
key_flag = 4; //确定 }
while(KEY4== 0);
Delay1Ms(5); //弹起延时消颤 while(KEY4 == 0); }}
22
成都理工大学毕业论文 — 交通灯
第六章 测试、数据及结果分析
6.1状态灯显示测试
当电路连接完毕后,将写好的测试程序刷写到芯片内,开启电源开关K,以及按下K1 和K2分别给端口送高电平和低电平,通电即可检测。
6.2数码管的测试
将串口和电路板上的接口连接,通过专业烧写软件,将写好的相应测试程序及.HEX文件刷写到芯片内,我们这用的ISPlayv15下载线编程软件,其显示的效果图如图6-1,开电源即可测试。
图6-1 ISP下载软件
6.3整体电路测试
23
成都理工大学毕业论文 — 交通灯
系统上电,刷写好程序即可开始测试,观测一个周期(共计S1~S4四个状态,(默认140秒)灯的显示状态是否正常,同时观察倒计的计数是否正常,以及按键调节突发事件,是否正常。
总 结
由于使用的是单片机作为核心的控制元件,使得电路的可靠性比较高,功能也比较强大,而且可以随时的更新系统,进行不同状态的组合。但是在我们设计和调试的过程中,也发现了一些问题,譬如红灯和绿灯的切换还不够迅速,红绿灯规则的效率还不是很高等等,这需要在实践中进一步完善。且功能的全面性还不够强,经过这么长的时间的失败到成功的过程,让我更加清楚的明白单片机的运用就是对其端口的控制,同时外围电路的设计以及了解,让我对以前学过的知识能更加了解和认识,比如:电路、数、模电子技术、单片机技术、自动检测技术、电路板设计、智能仪器的设计应用与传感器的使用。在这段时间中,李老师们给了我很大的帮助,还有很多班上的同学及网上好友,你们对我的帮助和指导我非常感谢!
24
成都理工大学毕业论文 — 交通灯
附录:
系统总体电路图:
交通灯总原理图
25