新聞中心

        EEPW首頁 > 嵌入式系統 > 設計應用 > 8051的交通燈程序

        8051的交通燈程序

        作者: 時間:2016-11-11 來源:網絡 收藏
        一個簡單的交通燈的實驗

        本文引用地址:http://www.104case.com/article/201611/316784.htm

        #include
        #define uchar unsigned char
        #define uint unsigned int
        #define MAX 30 // 紅燈亮的時間
        #define YELLOW 6 // 黃燈亮的時間
        uchar code num[11]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f}; //共陰級數碼管的段選碼
        uchar data count=0;
        void LED_display(uchar ,uchar);
        void isr_T1(void);
        uchar data i,j,x,t,time;
        bit flag=0;

        void main()
        {
        TMOD=0x10;
        TH1=0x3c; // 12 MHz 定時時間是 50 ms
        TL1=0x0b0;
        ET1=1;
        EA=1;
        TR1=1;
        time=MAX;
        P1=0x56;
        while(1)
        {
        i=time/10; // 個位
        j=time%10; // 十位
        x=0x80;
        LED_display(x,i);
        x=x>>1;
        LED_display(x,j);
        }
        }

        void LED_display(uchar wei,uchar digital) // LED 數碼管顯示子程序
        { //wei 表示位選碼,digital 表示要顯示的數字
        uchar x,y,i;
        x=wei;
        y=num[digital];
        P2=x; // 位選碼輸出
        P0=y;// 段選碼輸出

        for(i=0;i<10;i++) {}; // 延時,等待數碼管顯示

        }

        void isr_T1(void) interrupt 3
        {
        TH1=0x3c;// 12 MHz 定時時間是 50 ms
        TL1=0x0b0;

        count++;
        if(count==20)
        {
        if(time>YELLOW)
        {
        time--;
        if(flag==0) P1=0x56;
        else P1=0x65;
        }
        else if(time==1)
        {
        time=MAX;
        flag=~flag;
        }
        else
        {
        time--;
        if(flag==0) P1=0x36;
        else P1=0x63;
        }
        count=0;
        }
        }

        經過測試,可以達到效果



        關鍵詞: 8051交通燈程

        評論


        技術專區

        關閉
        主站蜘蛛池模板: 南康市| 岳阳市| 平利县| 平阳县| 水城县| 筠连县| 呼和浩特市| 徐汇区| 邹平县| 岱山县| 凯里市| 武乡县| 巴南区| 双鸭山市| 湾仔区| 广昌县| 融水| 建昌县| 南溪县| 兴仁县| 全州县| 康乐县| 永平县| 河池市| 蓝田县| 台江县| 邛崃市| 闽侯县| 靖安县| 双城市| 忻州市| 通榆县| 镇雄县| 辉南县| 施秉县| 策勒县| 灵山县| 同德县| 黄大仙区| 龙岩市| 宽甸|