新聞中心

        EEPW首頁 > 嵌入式系統 > 設計應用 > 單片機定時器0實現信號交通燈程序

        單片機定時器0實現信號交通燈程序

        作者: 時間:2016-12-02 來源:網絡 收藏
        本程序所用的原理圖下載:點這里,單片機芯片使用的stc89c52

        /*
        *功能:定時器0實現信號交通燈
        *
        *日期:2013-05-07-08:41
        *作者:徐冉
        *特別說明:本程序代碼已經通過調試,僅供學習使用;
        *
        */
        /***********AT89C52-RC單片機實驗板***********/
        /*****************51hei-開發板*********************/
        #include
        typedef unsigned int uint;
        typedef unsigned char uchar;
        sbit LED_hong = P1^0;//紅信號燈
        sbit LED_lv = P1^2; //綠信號燈
        sbit wela = P2^7;
        sbit dula = P2^6;
        uchar code table[] = {
        0x3F, //"0"
        0x06, //"1"
        0x5B, //"2"
        0x4F, //"3"
        0x66, //"4"
        0x6D, //"5"
        0x7D, //"6"
        0x07, //"7"
        0x7F, //"8"
        0x6F, //"9"
        0x77, //"A"
        0x7C, //"B"
        0x39, //"C"
        0x5E, //"D"
        0x79, //"E"
        0x71, //"F"
        0x76, //"H"
        0x38, //"L"
        0x37, //"n"
        0x3E, //"u"
        0x73, //"P"
        0x5C, //"o"
        0x40, //"-"
        0x00, //熄滅
        0x00 //自定義
        };
        uchar num = 30, counter;
        void init();
        void display(uint num);
        void delay(uint xms);
        void main()
        {
        init();
        while(1)
        {
        if(counter == 50)
        {
        counter = 0;
        num--;
        if(num == 0)
        {
        num = 30;
        LED_hong = ~LED_hong;
        LED_lv = ~LED_lv;
        }
        }
        display(num);
        }
        }

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


        void init()
        {
        LED_hong = 0;
        LED_lv = 1;
        TMOD = 0x01;
        TH0 = 0xB8;
        TL0 = 0x00;
        TR0 = 1;
        EA = 1;
        ET0 = 1;


        }


        void display(uint num)
        {
        uchar shi, ge;


        shi = num / 10 % 10;
        ge = num % 10;


        dula = 1;
        P0 = table[shi];
        dula = 0;
        P0 = 0xff;
        wela = 1;
        P0 = 0xfe;
        wela = 0;
        P0 = 0x00;
        delay(1);


        dula = 1;
        P0 = table[ge];
        dula = 0;
        P0 = 0xff;
        wela = 1;
        P0 = 0xfd;
        wela = 0;
        P0 = 0x00;
        delay(1);
        }


        void delay(uint xms)
        {
        uint i, j;
        for(i = xms; i > 0; i--)
        for(j = 125; j > 0; j--);
        }


        void int_time0() interrupt 1
        {
        TH0 = 0xB8;
        TL0 = 0x00;
        counter++;

        }



        評論


        技術專區

        關閉
        主站蜘蛛池模板: 焉耆| 宜君县| 威远县| 张家港市| 客服| 新安县| 沾益县| 金秀| 桦南县| 张家港市| 太和县| 遂川县| 于都县| 鸡西市| 山东省| 桦川县| 余姚市| 东宁县| 昔阳县| 泸西县| 汝南县| 响水县| 香港 | 阿拉善右旗| 门源| 临洮县| 兴仁县| 东明县| 木里| 天峨县| 奈曼旗| 咸阳市| 灌云县| 延安市| 龙江县| 永安市| 凭祥市| 罗甸县| 乐东| 吐鲁番市| 深圳市|