• 您現在的位置是:首頁 >動態 > 2023-10-29 02:06:20 來源:

    單片機設計交通燈程序(交通燈程序)

    導讀 大家好,我是小夏,我來為大家解答以上問題。單片機設計交通燈程序,交通燈程序很多人還不知道,現在讓我們一起來看看吧!我實訓是做了這個...

    大家好,我是小夏,我來為大家解答以上問題。單片機設計交通燈程序,交通燈程序很多人還不知道,現在讓我們一起來看看吧!

    我實訓是做了這個項目,發給你看看,功能主要和e68a84e8a2ad3231313335323631343130323136353331333330356163交通燈的差不多,還可以顯示具體的時間,跳轉的時候,時間是倒計時的,當到0以后,下面燈轉換

    #include<reg51.h>

    unsigned int shi,ge,js;

    void delay(unsigned char i);

    sbit P2_0=P2^0;

    sbit P2_1=P2^1;

    unsigned int i=0;

    unsigned char key_press();

    unsigned char key_scan();

    unsigned int m=0;m2=0;n1=6;n2=2;

    void TIMERO_1();

    void TIMERO_0();

    unsigned char led[4]={0xee,0xdb,0xf5,0xdb};

    unsigned char code tabe[13]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f,0x77,0x7c,0x00};

    unsigned char num;

    unsigned char key_scan()

    { unsigned char hang,lie,key;

    P3=0x0f;

    if(P3!=0x0f)

    delay(100);

    if(P3!=0x0f)

    {

    switch(P3&0x0f)

    {

    case 0x0e:hang=0;break;

    case 0x0d:hang=1;break;

    case 0x0b:hang=2;break;

    //case 0x07:hang=3;break;

    }

    P3=0xf0;

    switch(P3&0xf0)

    {

    case 0xe0:lie=0;break;

    case 0xd0:lie=1;break;

    case 0xb0:lie=2;break;

    case 0x70:lie=3;break;

    }

    while(P3!=0xf0);

    key=hang*4+lie;

    }

    // else

    // key=12;

    return (key);

    }

    unsigned char key_press()

    {

    unsigned char temp,key_flag;

    P3=0x0f;

    delay(100);

    temp=P3;

    if (temp!=0x0f)

    {

    key_flag=1;

    }

    else

    {

    key_flag=0;

    }

    return key_flag;

    }

    void TIMERO_0() interrupt 1

    {

    TH0=0X3C;

    TL0=0XB0;

    m++;

    if(m==20)

    {

    m=0;

    n1--;

    shi=n1/10;

    ge=n1%10;

    }

    if(n1==0)

    {i=i+1;

    n2=3;

    TR1=1;

    TR0=0;

    }

    //if(ge==0)

    //{ge=2;}

    }

    void TIMERO_1() interrupt 3

    {

    TH1=0X3C;

    TL1=0XB0;

    m2++;

    if(m2==20)

    {

    m2=0;

    n2--;

    shi=n2/10;

    ge=n2%10;

    }

    if(n2==0)

    {

    i=i+1;

    n1=js;

    TR0=1;

    TR1=0;

    if(i== 4)

    {

    i=0;

    }

    //if(ge==0)

    //{ge=js;}

    }

    }

    void display(unsigned char a,b,c,d,e,f)

    {

    P2_1=1;

    P2_0=0;

    P0=0x20;

    P2_0=1;

    P2_1=0;

    P0=tabe[a];

    delay(10);

    P0=0x00;

    P2_1=1;

    P2_0=0;

    P0=0X10;

    P2_0=1;

    P2_1=0;

    P0=tabe[b];

    delay(10);

    P0=0x00;

    P2_1=1;

    P2_0=0;

    P0=0x08;

    P2_0=1;

    P2_1=0;

    P0=tabe[c];

    delay(10);

    P0=0x00;

    P2_1=1;

    P2_0=0;

    P0=0x04;

    P2_0=1;

    P2_1=0;

    P0=tabe[d];

    delay(10);

    P0=0x00;

    P2_1=1;

    P2_0=0;

    P0=0x02;

    P2_0=1;

    P2_1=0;

    P0=tabe[e];

    delay(10);

    P0=0x00;

    P2_1=1;

    P2_0=0;

    P0=0x01;

    P2_0=1;

    P2_1=0;

    P0=tabe[f];

    delay(10);

    P0=0x00;

    delay(10);

    }

    void main()

    {

    TMOD=0X11;

    TH0=0X3C;

    TL0=0XB0;

    TH1=0X3C;

    TL1=0XB0;

    ET1=1;

    ET0=1;

    EA=1;

    P1=0XFF;

    while(1)

    {

    P0=0;

    if(key_press())

    { num=key_scan();

    if(num<=9)

    {

    shi=ge;

    ge=num;

    js=shi*10+ge;

    n1=js;

    }

    if(num==10)

    {

    TR0=0;

    TR1=0;

    shi=ge;

    ge=num;

    }

    if(num==11)

    {

    TR0=1;

    i=0;

    js=shi*10+ge;

    }

    }

    P1=led[i];

    display(12,12,12,12,shi,ge);

    }

    }

    void delay(unsigned char i )

    {

    unsigned char j, k;

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

    for(j=0;j<255;j++);

    }

    本文到此講解完畢了,希望對大家有幫助。

  • 成人app