单片机外部中断按键控制交通灯(基于单片机的十字交通信号控制)
单片机外部中断按键控制交通灯(基于单片机的十字交通信号控制)使用外部中断功能,当外部中断触发时,四个路口黄灯闪烁并倒计时5秒。黄灯闪烁若干次后,再切换到东、西路口方向。延迟一段时间后,东、西路口绿灯灭,黄灯开始闪烁。黄灯闪烁若干次后,led1东、西路口红灯亮,南、北路口绿灯亮,南、北方向通车。延迟一段时间后,南、北路口绿灯灭,黄灯闪烁。
本程序由本人亲自调试出来,如有侵权请联系删除!以单片机P1口作为输出,控制十二个发光二极管的亮灭,以P0作为输出,控制数码显示9~1的倒数,模拟交通灯控制。本实验是模拟交通灯的控制,故实验前首先应该了解交通灯的亮灭规律:
设——某十字路口2、4为南、北方向,1、3为东、西方向。
初始状态为四个路口的红灯全亮。
然后,东、西路口绿灯亮,南、北路口红灯亮,东、西路口通车。
延迟一段时间后,东、西路口绿灯灭,黄灯开始闪烁。
黄灯闪烁若干次后,led1东、西路口红灯亮,南、北路口绿灯亮,南、北方向通车。
延迟一段时间后,南、北路口绿灯灭,黄灯闪烁。
黄灯闪烁若干次后,再切换到东、西路口方向。
使用外部中断功能,当外部中断触发时,四个路口黄灯闪烁并倒计时5秒。
程序部分
#include<reg52.h>
#define uchar unsigned char
#define uint unsigned int
sbit key=P3^2;
uchar code smgduan[]={0x00 0x06 0x5b 0x4f 0x66 0x6d 0x7d 0x07
0x7f 0x6f}; //1~9数字段码(注:0x00是为了占用段码表第0位随便写的)
仿真电路图
图画得不是很好,将就着看吧!
分享我的实验成果,希望对大家用帮助!