求单片机80c51交通灯程序

急需80c51毕业设计,题目是“交通灯”~~
2025-01-04 03:43:52
推荐回答(2个)
回答1:

我编写了一个:P1.0—P1.2分别为南北方向的红,黄,绿灯; P1.3——P1.5为东西方向的红,黄,绿灯;共阴极数码管的a,b,c,d,e,f,g,dp分别接P0.0-P0.7;数码管V0-V2分别接P2.0——P2.2(V0为百位,V1为10位,V2为个位);南北为主干道,能行时间180秒,黄灯亮3秒,东西为乡村道,通行时间为60秒,黄灯亮3秒;采用T0为中断源,扫描显示数码管,T1为定时器,每次定时0.5秒,两次计数1秒。
打字难打,我在实验板上试过,但不知是不是你 想要的。
#include
#define uint unsigned int
#define uchar unsigned char
#define led P0 //数码管7段显示由P0控制
uchar count, times
#define sec times%10 //个位
#define tse time/10%10 //十位
#define hse times/100 //百位
bit n_s, w_e; //南北,东西
sbit n_red=P1^0; //南北红灯
sbit n_ylw=P1^1; //南北黄灯
sbit n_grn=P1^2; //南北绿灯
sbit w_red=P1^3; //东西红灯
sbit w_ylw=P1^4; //....
sbit w_grn=P1^5; //....
uchar code table[]={0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90}; //数码管显示码存表

/*中断函数,供数码管显示用*/
T0_srv() interrupt 1 using 1
{
TH0=-(5000/256);
TL0=-(5000%256);
led=0xff;
P2=((0xfe<>(8-count)));
count++;
if(count==3) count=0;
if((P2|0xf0)==0xfe)
{
led=table[hse];
}
else
{
if((P2|0xf0)==0xfd
{
led=table[tse];}
else
{
led=table[sec];}
}

/*延时函数(延时i秒)*/
void delay(uint i)
{
uint j,k;
TR1=1;
for(j=i*2;j>0;j--)
{
for(k=10;k>0;k--)
{
TH1=0x3c; //TH与TL写入初值,0.05秒
Tl1=0xb0;
while(TF1==0);
TF1=0;
}
if((j<7)&&(n_s==1)) //n_s为南北通行标致
n_grn=~n_grn; //n_s最后3秒,绿灯闪烁
if((j<7)&&(w_e==1)) //w_e为东西通行标致
w_grn=~w_grn; //w_e最后3秒,绿灯闪烁
if(j%2==0) times--; /*计时2次0.5秒, time减1*/
}
TR1=0; //停止计时
}

void north_south() //南北通行函数
{
n_s=1;
times=180; //通行180秒
P1=0xf3; //南北亮绿灯,东西亮红灯
delay(180);
n_s=0;
}

void nor_yellow() //南北黄灯函数
{
times=3; //黄灯亮3秒
P1=0xf5;
delay(3);
}

void west_east() //东西通行函数
{
w_e=1;
times=60; //通行60秒
P1=0xde; //东西绿灯,南北红红灯
delay(60);
w_e=0;
}

void wst_yellow() //东西黄灯函数
{
times=3;
P1=0xee; //东西黄灯,南北红灯
delay(3);
}

void main(void)
{
TMOD=0x11; //T0与T1工作在方式1
TH0=-(5000/256); //T0装入初值
TL0=-(5000%256);
IE=0x82; //允许T0中断
TR0=1; //开能T0
P2=0xfe; //数码管扫描初值(从百位开始)
count=0; //计数初值为0
while(1) //无限循环
{
north_south(); //调用南北通行函数
nor_yellow(); //调用南北黄灯函数
west_east(); //调用东西通行函数
wst_yellow(); //调用东西黄灯函数
}
}

/*你很有诚意,虽然只是30分悬赏,但已是你所有家当,希望能帮到你*/

回答2:

我做过这个的设计。

做这个,大概要三天。
具体要求得说出来,百度留言。