新聞中心

        EEPW首頁 > 嵌入式系統 > 設計應用 > 單片機交通燈C語言程序

        單片機交通燈C語言程序

        作者: 時間:2016-11-25 來源:網絡 收藏
        這是一款單片機交通燈C語言程序,單片機用的是AT89C51,兩只共陰兩位一體的數碼管分另顯示兩個路口的倒計時,用12只發光二極管模擬紅、黃、綠燈。電路簡單,制作容易。電子小制作。

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

        #include
        #define uchar unsigned char
        bit flag;
        sbit red1_1=P1^0; //南北紅燈D1
        sbit yel1_1=P1^1;//南北黃燈D2
        sbit gre1_1=P1^2;//南北綠燈D3
        sbit red1_2=P1^3;//南北紅燈D4
        sbit yel1_2=P1^4;//南北黃燈D5
        sbit gre1_2=P1^5;//南北綠燈D6

        sbit red2_1=P1^6;//東西紅燈D7
        sbit yel2_1=P1^7;//東西黃燈D8
        sbit gre2_1=P0^0;//東西綠燈D9
        sbit red2_2=P0^1;//東西紅燈D10
        sbit yel2_2=P0^2;//東西黃燈D11
        sbit gre2_2=P0^3;//東西綠燈D12

        uchar code tab[]={0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x83,0xf8,0x80,0x98};
        uchar n,n1,aa=0,shi,ge,shi1,ge1;
        void init();
        void xianshi1(uchar shi,uchar ge);
        void xianshi2(uchar shi1,uchar ge1);
        void delay(uchar z)
        {
        uchar x,y;
        for(x=z;x>0;x--)
        for(y=110;y>0;y--);
        }
        main()
        {
        n=30;
        shi=n/10;
        ge=n;
        n1=30;
        shi1=n1/10;
        ge1=n1;

        init();
        while(1)
        {
        if(flag!=1)
        xianshi1(shi,ge);
        else
        xianshi2(shi1,ge1);

        }
        }

        void xianshi1(uchar shi,uchar ge)
        {
        P3=0x02;
        P2=tab[ge];
        delay(200);
        P3=0x01;
        P2=tab[shi];
        delay(200);
        }

        // http://www.duankudp.com/
        void xianshi2(uchar shi1,uchar ge1)
        {
        P3=0x08;
        P2=tab[ge1];
        delay(200);
        P3=0x04;
        P2=tab[shi1];
        delay(200);

        }

        void init()
        {
        TMOD=0x01;
        TH0=(65536-50000)/256;
        TL0=(65536-50000)%6;
        EA=1;
        ET0=1;
        TR0=1;
        }

        void timer0() interrupt 1
        {
        TH0=(65536-50000)/256;
        TL0=(65536-50000)%6;
        aa++;
        if(flag!=1)
        {
        if(aa==20)
        {
        aa=0;
        red1_1=0;red1_2=0;
        gre2_1=0;gre2_2=0;//啟動南北紅燈1和東西綠燈2

        n--;
        shi=n/10;
        ge=n;

        if(n<=3)
        {
        red1_1=0;red1_2=0;
        gre2_1=1;gre2_2=1;
        yel2_1=0;yel2_2=0;//啟動南北紅燈1和東西黃燈2

        if(n<=0)
        {
        n=30;
        red1_1=1;red1_2=1;
        gre1_1=0;gre1_2=0;
        yel2_1=1;yel2_2=1;
        red2_1=0;red2_2=0;//啟動南北綠燈1和東西紅燈2http://www.5imcu.net/

        TR0=0;
        TH0=(65536-50000)/256;
        TL0=(65536-50000)%6;
        TR0=1;
        aa++;
        flag=1;

        }
        }
        }
        }
        else
        {
        if(flag==1)
        {
        // TH0=(65536-50000)/256;
        // TL0=(65536-50000)%6;
        // TR0=1;
        // aa++;
        if(aa==20)
        {
        aa=0;
        n1--;
        shi1=n1/10;
        ge1=n1;
        if(n1<=3)
        {
        gre1_1=1;gre1_2=1;
        yel1_1=0;yel1_2=0;
        red2_1=0;red2_2=0;//啟動南北黃燈1和東西紅燈2

        if(n1<=0)
        {
        n1=30;
        yel1_1=1;yel1_2=1;
        red2_1=1;red2_2=1;

        TR0=0;
        TH0=(65536-50000)/256;
        TL0=(65536-50000)%6;
        TR0=1;
        flag=0;
        }
        }
        }
        }
        }
        }



        評論


        技術專區

        關閉
        主站蜘蛛池模板: 绵竹市| 新和县| 江孜县| 盱眙县| 社旗县| 蒙城县| 乌什县| 博爱县| 南宫市| 平南县| 扬州市| 衡南县| 南溪县| 麻江县| 五原县| 南安市| 新建县| 汝南县| 衡东县| 威海市| 潍坊市| 榆林市| 双牌县| 浦北县| 宜城市| 昌平区| 德清县| 涞水县| 元江| 涪陵区| 山东省| 海南省| 饶平县| 南陵县| 晋州市| 德州市| 威远县| 贡嘎县| 连山| 瑞金市| 封开县|