教学文库网 - 权威文档分享云平台
您的当前位置:首页 > 文库大全 > 实用文档 >

单片机AT89C52十字路口交通灯控制C语言程序

来源:网络收集 时间:2026-08-08
导读: 单片机AT89C52交通灯C程序控制 单片机AT89C52十字路口交通灯控制程序 东西方向60秒,南北方向57秒 #includereg52.h #define uchar unsigned char #define uint unsigned int #define ON 0 #define OFF 1 sbit NS_G=P2^5; //南北绿灯 sbit NS_Y=P2^4; //南北

单片机AT89C52交通灯C程序控制

单片机AT89C52十字路口交通灯控制程序

东西方向60秒,南北方向57秒

#include<reg52.h>

#define uchar unsigned char

#define uint unsigned int

#define ON 0

#define OFF 1

sbit NS_G=P2^5; //南北绿灯

sbit NS_Y=P2^4; //南北黄灯

sbit NS_R=P2^3; //南北红灯

sbit EW_G=P2^2; //东西绿灯

sbit EW_Y=P2^1; //东西黄灯

sbit EW_R=P2^0; //东西红灯

sbit LED_D1=P3^7; //南北方向数码管位控制

sbit LED_C1=P3^6; //南北方向数码管位控制

单片机AT89C52交通灯C程序控制

sbit LED_B1=P3^1; //东西方向数码管为控制

sbit LED_A1=P3^0; //东方向数码管位控制

/*********倒计时赋初值*************/

uchar EWF=20,NSF=17,X=20,Y=17,Z=20,SHU=20;

uchar count;

void Init(void)

{

TMOD=0x01;

TH0=(65536-50000)/256;

TL0=(65536-50000)%256;

EA=1;

ET0=1;

TR0=1;

}

/*******************中断服务程序**************************/

void timer1(void) interrupt 1

{

TMOD=0x01;

TH0=(65536-50000)/256;

TL0=(65536-50000)%256;

EA=1;

ET0=1;

TR0=1;

count++;

if(count>19)

{

EWF--;

NSF--;

X--;

Y--;

Z--;

SHU--;

count=0;

}

}

/******************延时**********************/

void Delay10uS(uchar z)

{

uchar x,y;

单片机AT89C52交通灯C程序控制

for(x=z;x>0;x--)

for(y=110;y>0;y--);

}

/******************led控制*******************/

unsigned char table[]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f};//共阴极数码管赋值

void display1(uchar num1,uchar num2) //控制东西方向led显示

{

P0=table[num1];

LED_A1=ON;

Delay10uS(1);

LED_A1=OFF;

P0=table[num2];

LED_B1=ON;

Delay10uS(1);

LED_B1=OFF;

}

void display2(uchar num3,uchar num4) //控制南北方向led显示

{

P0=table[num3];

LED_C1=ON;

Delay10uS(1);

LED_C1=OFF;

P0=table[num4];

LED_D1=ON;

Delay10uS(1);

LED_D1=OFF;

}

void main()

{

int i;

/************初始状态东西南北禁止通行************/

NS_R=ON; //南北方向红灯打开

EW_R=ON; //东西方向红灯打开

for(i=0;i<600;i++)

{

Delay10uS(20);

}

NS_R=OFF;//南北方向红灯关闭

EW_R=OFF;//东西方向红灯关闭

while(1)

单片机AT89C52交通灯C程序控制

{

Init(); // 初始化计时器

/****************状态1:东西绿灯(57s), 南北红灯(60s)**************/ /***************状态2:东西黄灯(3s) , 南北红灯(60s)****************/ EW_G=ON; //东西方向的绿灯打开

NS_R=ON; //南北方向的红灯打开

while(EWF!=0)

{

display1(EWF/10,EWF%10);// 东西方向红灯(60s)

display2(NSF/10,NSF%10);// 南北方向绿灯(57s)

while(EWF==3)

{

while(X!=0)

{

display1(EWF/10,EWF%10);// 东西方向红灯(3s) display2(X/10,X%10);// 南北方向黄灯(3s)

EW_G=OFF; // 东西方向的绿灯关闭

EW_Y=ON; // 东西方向的黄灯打开

}

}

}

NS_R=OFF; // 南北方向的红灯关闭

EW_G=OFF; // 东西方向的绿灯关闭

EW_Y=OFF; // 东西方向的黄灯打?

/*=*************状态3:东西红灯(60s), 南北绿灯(57s)************/ /****************状态4:东西红灯(60s), 南北黄灯(3s)***************/ EW_R=ON;// 东西方向的红灯打开

NS_G=ON;// 南北方向的绿灯打开

while(Z!=0)

{

display2(Z/10,Z%10);// 南北方向红灯(57s)

display1(Y/10,Y%10);// 东西方向绿灯(57s) while(Z==3)

{

while(SHU!=0)

{

display2(Z/10,Z%10);// 东西红灯(3s)

display1(SHU/10,SHU%10);// 南北绿灯(3s) NS_G=OFF; //南北方向的绿灯关闭

NS_Y=ON; // 南北方向的黄灯打开

}

}

单片机AT89C52交通灯C程序控制

} } EW_R=OFF; // 东西方向的红灯关闭 NS_G=OFF; // 南北方向的绿灯关闭 NS_Y=OFF; // 南北方向的黄灯关闭 EWF=60,NSF=57,X=60,Y=57,Z=60,SHU=60; //重新赋值 }

…… 此处隐藏:732字,全部文档内容请下载后查看。喜欢就下载吧 ……
单片机AT89C52十字路口交通灯控制C语言程序.doc 将本文的Word文档下载到电脑,方便复制、编辑、收藏和打印
本文链接:https://www.jiaowen.net/wenku/134169.html(转载请注明文章来源)
Copyright © 2020-2025 教文网 版权所有
声明 :本网站尊重并保护知识产权,根据《信息网络传播权保护条例》,如果我们转载的作品侵犯了您的权利,请在一个月内通知我们,我们会及时删除。
客服QQ:78024566 邮箱:78024566@qq.com
苏ICP备19068818号-2
Top
× 游客快捷下载通道(下载后可以自由复制和排版)
VIP包月下载
特价:29 元/月 原价:99元
低至 0.3 元/份 每月下载150
全站内容免费自由复制
VIP包月下载
特价:29 元/月 原价:99元
低至 0.3 元/份 每月下载150
全站内容免费自由复制
注:下载文档有可能出现无法下载或内容有问题,请联系客服协助您处理。
× 常见问题(客服时间:周一到周五 9:30-18:00)