51单片机实现交通灯控制程序
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
51单片机实现交通灯控制程序2010-04-28 23:02
当出现交通事故时,按下单片机右侧开关,所有红灯亮,交通停止,通行时间保持,弹起开关,交通接停止时的时间继续进行
#include<reg52.h>
#include<stdio.h>
#define unchar unsigned char
#define unint unsigned int
sbit key=P3^2;
unchar code dis[]=
{
0xc0,0xf9,0xa4,0xb0,0x99,
0x92,0x82,0xf8,0x80,0x90,0xff
};
unint i,j,k;
unint s;
unchar h;
void delay(unint c); void cut0();
void cut1();
void cut2();
void cut3();
void cut4();
void cut5();
void cut6();
void cut7();
void main()
{
TMOD=0X06;
TH0=0Xff;
TL0=0xff;
TR0=1;
EA=1;
EX0=1;
EX1=1;
ET0=1;
P1=0x00;
P3=0xff;
P0=0xf6;
P2=0xf5;
for(h=29;h>0;h--) { for(s=24;s>0;s--) {
cut0();
P3=0xfc;
P1=0xff;
P3=0xfd;
P1=dis[h/10];
delay(1);
P3=0xfc;
P1=0xff;
P1=dis[h%10];
delay(1);
}
}
for(h=4;h>0;h--)
{
cut1();
P2=0xf3;
delay(10);
P2=0xf7;
delay(10);
P3=0xfc;
P1=0xff;
P3=0xfe;
P1=dis[h%10];
delay(20);
}
P2=0xee;
for(h=29;h>0;h--) { for(s=24;s>0;s--) {
cut2();
P3=0xfc;
P1=0xff;
P3=0xfd;
P1=dis[h/10];
delay(1);
P3=0xfc;
P1=0xff;
P3=0xfe;
P1=dis[h%10];
delay(1);
}
}
for(h=4;h>0;h--)
{
P2=0xde;
delay(10);
P2=0xfe;
delay(10);
P3=0xfc;
P1=0xff;
P3=0xfe;
P1=dis[h%10];
delay(20);
}
P2=0xf6;
P0=0xf5;
for(h=29;h>0;h--) { for(s=24;s>0;s--) {
cut4();
P3=0xfc;
P1=0xff;
P3=0xfd;
P1=dis[h/10];
delay(1);
P3=0xfc;
P1=0xff;
P3=0xfe;
P1=dis[h%10];
delay(1);
}
}
for(h=4;h>0;h--)
{
cut5();
P0=0xf3;
delay(10);
P0=0xf7;
delay(10);
P3=0xfc;
P1=0xff;
P3=0xfe;
P1=dis[h%10];
delay(20);
}
P0=0xee;
for(h=29;h>0;h--) { for(s=24;s>0;s--) {
cut6();
P3=0xfc;
P1=0xff;
P3=0xfd;
P1=dis[h/10];
delay(1);
P3=0xfc;
P1=0xff;
P3=0xfe;
P1=dis[h%10];
delay(1);
}
}
for(h=4;h>0;h--)
{
cut7();
P0=0xde;
delay(10);
P0=0xfe;
delay(10);
P3=0xfc;
P1=0xff;
P3=0xfe;
P1=dis[h%10];
delay(20);
}
}
void delay(unint c)
{
while(c--)
for(j=1500;j>0;j--); }
void cut0()
{
key=1;
if(key==0)
while(1)
{
P2=0xf6;
key=1;
if(key==1)
{
P2=0xf5;
break ;
}
}
}
void cut1()
{
key=1;
if(key==0)
while(1)
{
P2=0xf6;
key=1;
if(key==1)
{
P2=0xf7;
break ;
}
}
}
void cut2()
{
key=1;
if(key==0)
while(1)
{
P2=0xf6;
key=1;
if(key==1) {
P2=0xee; break ;
}
}
}
void cut3() {
key=1;
if(key==0)
while(1)
{
P2=0xf6; key=1;
if(key==1) {
P2=0xfe; break ;
}
}
}
void cut4() {
key=1;
if(key==0)
while(1)
{
P0=0xf6; key=1;
if(key==1) {
P0=0xf5; break ;
}
}
}
void cut5() {
key=1;
if(key==0)
while(1)
{
P0=0xf6; key=1;
if(key==1) {
P0=0xf7; break ;
}
}
}
void cut6() {
key=1;
if(key==0)
while(1)
{
P0=0xf6; key=1;
if(key==1) {
P0=0xee; break ;
}
}
}
void cut7() {
key=1;
if(key==0)
while(1)
{
P0=0xf6; key=1;
if(key==1) {
P0=0xfe; break ;
}
}
}。