色婷婷AⅤ一区二区三区|亚洲精品第一国产综合亚AV|久久精品官方网视频|日本28视频香蕉

          新聞中心

          EEPW首頁 > 嵌入式系統(tǒng) > 設(shè)計應(yīng)用 > 單片機實現(xiàn)交通燈控制系統(tǒng)的雙模式

          單片機實現(xiàn)交通燈控制系統(tǒng)的雙模式

          作者: 時間:2011-09-09 來源:網(wǎng)絡(luò) 收藏
          初始函數(shù)主要是對定時/計數(shù)器和一些參數(shù)初值的設(shè)定:

          本文引用地址:http://cafeforensic.com/article/172507.htm

            #include

            #define uint unsigned int

            #define uchar unsigned char

            uint aa,num,MODEL1,numa,HMODE1;

            uchar shi,ge,gtime,rtime;

            … …

            sbit dula=P1^0; // 段選

            sbit wela=P1^1; // 位選

            sbit LED1=P1^2; // 東西(紅燈)

            sbit LED2=P1^5; // 南北(紅燈)

            sbit LED3=P1^6; // 南北(黃燈)

            sbit LED4=P1^3; // 東西(黃燈)

            sbit LED5=P1^7; // 南北(綠燈)

            sbit LED6=P1^4; // 東西(綠燈)

            sbit KEY1=P3^5;

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

            uchar table1[]={0xbf,0x7f};

            void delay(uchar z) // 延時函數(shù)

            { uchar x,y;

            for(x=z;x>0;x--)

            for(y=110;y>0;y--); }

            void init()

            { TMOD=0x01; // 選擇方式一,16 位計數(shù)器

            TH0=15536/256;

            TL0=15536%256; // 定時器高、低位,置入初值

            EA=1; // 中斷允許總控制位

            ET0=1; // 定時器0 中斷允許控制位

            TR0=1; // 定時器0 運行控制位

            aa=0;

            gtime=60;

            rtime=40;

            num=1;

            numa=1;

            MODEL1=1;

            HMODE1=0;}

            定時的函數(shù)及原理:

            當工作于定時狀態(tài)時,定時/計數(shù)器對機器周期進行計數(shù),每個機器周期包括12個振蕩周期,以晶振頻率為12MHZ 為例,則:

            1 個機器周期=12/晶振頻率=12/12000000=0.001ms定時時間為:TC=XTP。其中,TP 為機器周期,TC 為定時時間。

            則應(yīng)裝入計數(shù)/定時器的初值為:

            

            (注:M=2n , TP 為機器周期,TC 為定時時間)

            對于方式1,一次最大的定時時間為:T=(216-0)×0.001=65.536ms ,為了便于計算,設(shè)定每次最大定時時間為50ms,計算應(yīng)裝入的初值:N = 65536 − 50000 = 15536

            顯示子函數(shù):

            通過對鎖存器進行位選,段選的控制,使數(shù)碼管顯示需要的數(shù)字。

            void display(shi,ge)

            { dula=1;

            P0=table[shi];

            dula=0;

            wela=1;

            P0=table1[0];

            wela=0;

            delay(5);

            P0=0xff; // 對數(shù)碼管消影

            dula=1;

            P0=table[ge];

            dula=0;

            wela=1;

            P0=table1[1];

            wela=0;

            delay(5);

            P0=0xff;}

            一函數(shù):

            void mod1()

            { if(num==1>ime>5) // 東西道紅燈亮,南北道綠燈亮,最后5 秒切換成黃燈

            { LED5=0;

            LED1=0; }

            if(num==2) // 東西道綠燈亮,南北道紅燈亮

            { LED2=0;

            LED6=0;

            LED5=1;

            LED3=1;

            LED1=1; }

            if(num==1>ime==5) // 東西道紅燈亮,南北道黃燈亮5 秒

            { LED5=1;

            LED2=1;

            LED3=0; }

            shi=gtime/10;

            ge=gtime%10;

            if(aa==20) // 50ms×20=1s, 即過1s 數(shù)碼管數(shù)字減1

            { aa=0;

            gtime--; }

            display(shi,ge);

            if(gtime==0num!=2)

            { gtime=60;

            num=2; }

            if(gtime==0num==2)

            { num=1;

            gtime=60;

            LED2=1;

            LED6=1; } }

            



          評論


          相關(guān)推薦

          技術(shù)專區(qū)

          關(guān)閉