基于单片机的交通灯设计_基于单片机交通灯设计

2020-02-27 其他范文 下载本文

基于单片机的交通灯设计由刀豆文库小编整理,希望给你工作、学习、生活带来方便,猜你可能喜欢“基于单片机交通灯设计”。

基于单片机的交通灯设计

设计程序:

#include #define uchar unsigned char /**************************变量、控制位定义**************************/ uchar code table[10]={0xC0,0xF9,0xA4,0xB0,0x99,0x92,0x82,0xF8,0x80,0x90};//0~~9段选码

//共阳极

uchar

code table1[5]={0xf3,0xf5,0xde,0xee,0xf6};/*各种状态下红绿灯段选码, 状态1:A绿灯,B红灯;状态2:A黄灯亮,B红灯;状态3:A红灯,B绿灯;状态4:A红灯,B黄灯亮;状态5:A红灯,B红灯;*/ uchar

code tab[4]={0x1E,0x2D,0x4E,0x8D};//数码管显示位选码 sbit key1=P1^0;//放行A sbit key2=P1^1;//放行B sbit key3=P1^2;//禁止通行

uchar EW=40,SN=30,K1_T=15,K2_T=15,K3_T=20;//初始化交通灯时间 uchar count;//计时中断次数 uchar i,j;//循环控制变量 char Timer;//子程序说明语句 void Proce();void Display(uchar j);void Delay(uchar a);/**************************主程序**************************/ main(){ IP=0X02;//设置定时器中断为高优先级//成为中断嵌套

TMOD=0x01;//定时器工作方式

TH0=0x3C;//定时器初始化

TL0=0xB0;IT0=1;//中断触发方式为下降沿触发

EA=1;//CPU开中断

ET0=1;//开定时中断

TR0=1;//启动定时

EX0=1;//启动外部中断0 while(1)

{

Proce();

} } /*************************交通灯显示子程序*************************/ void Display(uchar j)//j控制显示table中连续位的起始点 {

char h,l;

h=Timer/10;//EW通行时间十位

l=Timer%10;//EW通行时间个位

for(i=0;i

P0=table1[j];//通行状况显示

P3=tab[i];//位选显示

i++;

//j++;

if(i%2)//两位计时显示

{

P2=table[l];

Delay(400);

}

else

{

P2=table[h];

Delay(400);

} } Delay(5);

//设置扫描时间

} /*********键控*******/ void Keyboard()interrupt 0 using 0 {

if(key1==0)

{ Timer=K1_T;

while(Timer>0)

{

j=0;

Display(0);

//显示一次

}

if(key2==0)

{

Timer=K2_T;

while(Timer>0)

{

j=2;

Display(j);

}

if(key3==0)

{

Timer=K3_T;

while(Timer>0)

{

j=4;

Display(j);

}

} } /**************************延时子程序**************************/ void Delay(uchar a)//循环a次 { uchar x;x=a;while(x--){;} }

/************************TO计时中断服务程序************************/ void timer0(void)interrupt 1 using 1//T0中断 { TH0=0x3C;TL0=0xB0;//定时计数初值

count++;//中断溢出一次count+1 if(count==20){

Timer--;

count=0;//中断次计数,count回,倒计时时间

} } /**************************亮灯控制**************************/ void Proce(){ Timer=EW;//初始化方向通行时间

while(Timer>3)//状态:A绿灯,B红灯;{

j=0;

Display(j);//调用显示函数

} while(Timer>0)//状态:A黄灯亮,B红灯;{

j=1;

Display(j);

} Timer=SN;while(Timer>3)//状态:A红灯,B绿灯;{

j=2;

Display(j);} while(Timer>0)//状态:A红灯,B黄灯亮;{

j=3;

Display(j);

}

}

电路图如下:

《基于单片机的交通灯设计.docx》
将本文的Word文档下载,方便收藏和打印
推荐度:
基于单片机的交通灯设计
点击下载文档
相关专题 基于单片机交通灯设计 设计 交通灯 单片机 基于单片机交通灯设计 设计 交通灯 单片机
[其他范文]相关推荐
    [其他范文]热门文章
      下载全文