道路交通信号灯C语言源程序.docx

上传人:b****6 文档编号:13548899 上传时间:2023-06-15 格式:DOCX 页数:18 大小:16.07KB
下载 相关 举报
道路交通信号灯C语言源程序.docx_第1页
第1页 / 共18页
道路交通信号灯C语言源程序.docx_第2页
第2页 / 共18页
道路交通信号灯C语言源程序.docx_第3页
第3页 / 共18页
道路交通信号灯C语言源程序.docx_第4页
第4页 / 共18页
道路交通信号灯C语言源程序.docx_第5页
第5页 / 共18页
道路交通信号灯C语言源程序.docx_第6页
第6页 / 共18页
道路交通信号灯C语言源程序.docx_第7页
第7页 / 共18页
道路交通信号灯C语言源程序.docx_第8页
第8页 / 共18页
道路交通信号灯C语言源程序.docx_第9页
第9页 / 共18页
道路交通信号灯C语言源程序.docx_第10页
第10页 / 共18页
道路交通信号灯C语言源程序.docx_第11页
第11页 / 共18页
道路交通信号灯C语言源程序.docx_第12页
第12页 / 共18页
道路交通信号灯C语言源程序.docx_第13页
第13页 / 共18页
道路交通信号灯C语言源程序.docx_第14页
第14页 / 共18页
道路交通信号灯C语言源程序.docx_第15页
第15页 / 共18页
道路交通信号灯C语言源程序.docx_第16页
第16页 / 共18页
道路交通信号灯C语言源程序.docx_第17页
第17页 / 共18页
道路交通信号灯C语言源程序.docx_第18页
第18页 / 共18页
亲,该文档总共18页,全部预览完了,如果喜欢就下载吧!
下载资源
资源描述

道路交通信号灯C语言源程序.docx

《道路交通信号灯C语言源程序.docx》由会员分享,可在线阅读,更多相关《道路交通信号灯C语言源程序.docx(18页珍藏版)》请在冰点文库上搜索。

道路交通信号灯C语言源程序.docx

道路交通信号灯C语言源程序

#include"reg51.h"

#include"absacc.h"

sbitSN_LED_RED=P1^3;

sbitSN_LED_GREEN=P1^5;

sbitSN_LED_YELLOW=P1^4;

sbitEW_LED_RED=P1^0;

sbitEW_LED_GREEN=P1^2;

sbitEW_LED_YELLOW=P1^1;

unsignedcharcodedisptab[]={0xC0,0xF9,0xA4,0xB0,0x99,0x92,0x82,0xF8,0x80,

0x90,0x88,0x83,0xC6,0xA1,0x86,0x8E,0xFF};

unsignedcharcodebittab[]={0xFE,0xFD,0xFB,0xF7,0xEF,0xDF,0xBF,0x7F};

unsignedcharnum=0;//数码管序号

unsignedcharled[]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f};

charset_value[4]={60,4,40,4};//设置数码管在显示值

unsignedcharsign[4]={1,0,0,0};

unsignedchardisp_ew,disp_sn;

unsignedcharfalsh_sign,direction_sign,flash_count;

unsignedintsecnum;

unsignedcharkey;

voiddelay_ms(unsignedinta);

voidadd_process();

voidsub_process();

voidset_process();

voidscan_key();

voidinit();

voiddelay_ms(unsignedinta)

{unsignedchari;

while(a--)

{i=70;

while(i--);

}

}

voidadd_process()

{

delay_ms(600);

if(!

P3^2)

{

delay_ms(500);

if(P3^2)

{

if(key==1)

{

set_value[0]=set_value[0]+10;

if(set_value[0]>99)

{

set_value[0]=set_value[0]%10;

}

disp_ew=set_value[0];

}

if(key==2)

{

set_value[1]++;

if(set_value[1]>9)

{

set_value[1]=0;

}

disp_ew=set_value[1];

}

if(key==3)

{

set_value[2]=set_value[2]+10;

if(set_value[2]>99)

{

set_value[2]=set_value[2]%10;

}

disp_sn=set_value[2];

}

if(key==4)

{

set_value[3]++;

if(set_value[3]>9)

{

set_value[3]=0;

}

disp_sn=set_value[3];

}

}

while(!

P3^2)

{

if(key==1)

{

set_value[0]=set_value[0]+10;

if(set_value[0]>99)

{

set_value[0]=set_value[0]%10;

}

disp_ew=set_value[0];

}

if(key==2)

{

set_value[1]++;

if(set_value[1]>9)

{

set_value[1]=0;

}

disp_ew=set_value[1];

}

if(key==3)

{

set_value[2]=set_value[2]+10;

if(set_value[2]>99)

{

set_value[2]=set_value[2]%10;

}

disp_sn=set_value[2];

}

if(key==4)

{

set_value[3]++;

if(set_value[3]>9)

{

set_value[3]=0;

}

disp_sn=set_value[3];

}

delay_ms(1200);

}

}

else

{

while(!

P3^2);

if(key==1)

{

set_value[0]++;

if(set_value[0]>99)

{

set_value[0]=0;

}

disp_ew=set_value[0];

}

if(key==2)

{

set_value[1]++;

if(set_value[1]>9)

{

set_value[1]=0;

}

disp_ew=set_value[1];

}

if(key==3)

{

set_value[2]++;

if(set_value[2]>99)

{

set_value[2]=0;

}

disp_sn=set_value[2];

}

if(key==4)

{

set_value[3]++;

if(set_value[3]>9)

{

set_value[3]=0;

}

disp_sn=set_value[3];

}

}

}

voidsub_process()

{

delay_ms(600);

if(!

P3^3)

{

delay_ms(500);

if(P3^3)

{

while(!

P3^3);

if(key==1)

{

set_value[0]=set_value[0]-10;

if(set_value[0]<0)

{

set_value[0]=set_value[0]+100;

}

disp_ew=set_value[0];

}

if(key==2)

{

set_value[1]--;

if(set_value[1]<0)

{

set_value[1]=9;

}

disp_ew=set_value[1];

}

if(key==3)

{

set_value[2]=set_value[2]-10;

if(set_value[2]<0)

{

set_value[2]=set_value[2]+100;

}

disp_sn=set_value[2];

}

if(key==4)

{

set_value[3]--;

if(set_value[3]<0)

{

set_value[3]=9;

}

disp_sn=set_value[3];

}

}

while(!

P3^3)

{

if(key==1)

{

set_value[0]=set_value[0]-10;

if(set_value[0]<0)

{

set_value[0]=set_value[0]+100;

}

disp_ew=set_value[0];

}

if(key==2)

{

set_value[1]--;

if(set_value[1]<0)

{

set_value[1]=9;

}

disp_ew=set_value[1];

}

if(key==3)

{

set_value[2]=set_value[2]-10;

if(set_value[2]<0)

{

set_value[2]=set_value[2]+100;

}

disp_sn=set_value[2];

}

if(key==4)

{

set_value[3]--;

if(set_value[3]<0)

{

set_value[3]=9;

}

disp_sn=set_value[3];

}

delay_ms(1200);

}

}

else

{

while(!

P3^3);

if(key==1)

{

set_value[0]--;

if(set_value[0]<0)

{

set_value[0]=99;

}

disp_ew=set_value[0];

}

if(key==2)

{

set_value[1]--;

if(set_value[1]<0)

{

set_value[1]=9;

}

disp_ew=set_value[1];

}

if(key==3)

{

set_value[2]--;

if(set_value[2]<0)

{

set_value[2]=99;

}

disp_sn=set_value[2];

}

if(key==4)

{

set_value[3]--;

if(set_value[3]<0)

{

set_value[3]=9;

}

disp_sn=set_value[3];

}

}

}

voidset_process()

{

while(!

P3^0);

ET1=0;

TR1=0;

key=key+1;

falsh_sign=1;

if(key>5)

{

key=1;

}

if(key==1)

{

disp_ew=set_value[0];

P1=0xfb;

direction_sign=1;

}

if(key==2)

{

disp_ew=set_value[1];

P1=0xfd;

direction_sign=1;

}

if(key==3)

{

disp_sn=set_value[2];

P1=0xdf;

direction_sign=2;

}

if(key==4)

{

disp_sn=set_value[3];

P1=0xef;

direction_sign=2;

}

if(key==5)

{

disp_sn=set_value[0]+set_value[1];

disp_ew=set_value[0];

P1=0xf3;

falsh_sign=0;

ET1=1;

TR1=1;

}

}

voidscan_key()

{

while(P3^0&&P3^2&&P3^3);

delay_ms(15);

if(!

P3^0)

{

set_process();

}

if(!

P3^2)

{

add_process();

}

if(!

P3^3)

{

sub_process();

}

else

return;

}

voiddisp_t0(void)interrupt1

{

TR0=0;

num++;

num=(num%4);

P2=0xff;

P0=0xff;

P2=bittab[num];

switch(num)

{

case0:

P0=disptab[disp_sn%10];break;

case1:

P0=disptab[disp_sn/10];break;

case2:

P0=disptab[disp_ew%10];break;

case3:

P0=disptab[disp_ew/10];break;

default:

;

}

TH0=0xD8;

TL0=0xF0;

TR0=1;

}

voiddisp_count_t1(void)interrupt3

{

TH1=0x3C;

TL1=0xB0;

secnum++;

if(secnum==20)

{

disp_sn--;

disp_ew--;

if(disp_ew==0&&sign[0]==1)

{

disp_ew=set_value[1];

EW_LED_GREEN=1;

EW_LED_YELLOW=0;

sign[1]=1;

sign[0]=0;

}

if(disp_ew==0&&sign[1]==1)

{

disp_ew=set_value[2]+set_value[3];

disp_sn=set_value[2];

SN_LED_RED=1;

EW_LED_YELLOW=1;

EW_LED_RED=0;

SN_LED_GREEN=0;

sign[2]=1;

sign[1]=0;

}

if(disp_sn==0&&sign[2]==1)

{

disp_sn=set_value[3];

SN_LED_GREEN=1;

SN_LED_YELLOW=0;

sign[3]=1;

sign[2]=0;

}

if(disp_sn==0&&sign[3]==1)

{

disp_sn=set_value[0]+set_value[1];

disp_ew=set_value[0];

EW_LED_RED=1;

SN_LED_YELLOW=1;

EW_LED_GREEN=0;

SN_LED_RED=0;

sign[0]=1;

sign[3]=0;

}

secnum=0;

}

}

voidinit()

{

direction_sign=0;

falsh_sign=0;

flash_count=0;

secnum=0;

key=0;

P0=0xff;

disp_sn=set_value[0]+set_value[1];

disp_ew=set_value[0];

EW_LED_GREEN=0;

SN_LED_RED=0;

P3=0xf8;

TMOD=0x11;

TH0=0xD8;

TL0=0xF0;

TH1=0x3C;

TL1=0xB0;

EA=1;

TR0=1;

ET0=1;

TR1=1;

ET1=1;

}

voidmain()

{

init();

while

(1)

{

scan_key();

}

}

展开阅读全文
相关资源
猜你喜欢
相关搜索
资源标签

当前位置:首页 > 医药卫生 > 基础医学

copyright@ 2008-2023 冰点文库 网站版权所有

经营许可证编号:鄂ICP备19020893号-2