在线看毛片网站电影-亚洲国产欧美日韩精品一区二区三区,国产欧美乱夫不卡无乱码,国产精品欧美久久久天天影视,精品一区二区三区视频在线观看,亚洲国产精品人成乱码天天看,日韩久久久一区,91精品国产91免费

<menu id="6qfwx"><li id="6qfwx"></li></menu>
    1. <menu id="6qfwx"><dl id="6qfwx"></dl></menu>

      <label id="6qfwx"><ol id="6qfwx"></ol></label><menu id="6qfwx"></menu><object id="6qfwx"><strike id="6qfwx"><noscript id="6qfwx"></noscript></strike></object>
        1. <center id="6qfwx"><dl id="6qfwx"></dl></center>

            新聞中心

            EEPW首頁 > 嵌入式系統(tǒng) > 設計應用 > 51單片機 定時器 流水燈 數(shù)碼管計時

            51單片機 定時器 流水燈 數(shù)碼管計時

            作者: 時間:2016-11-25 來源:網(wǎng)絡 收藏
            這個就是前面的歷程的一個綜合定時器T0控制流水燈,T1控制時間,通過數(shù)碼管顯示出來。

            代碼如下:

            本文引用地址:http://www.biyoush.com/article/201611/321309.htm

            //Led流水燈,五位數(shù)碼管100000秒計時
            #include //頭文件
            #include //循環(huán)左旋函數(shù)所在頭文件
            #define uint unsigned int //宏定義無符號整形
            #define uchar unsigned char //宏定義無符號字符型
            sbit weixuan=P2^7; //聲明P2.7為位選端口
            sbit duanxuan=P2^6; //聲明P2.6為段選端口
            uint number1,number2,aa,number; //number1:T0計滿次數(shù);number2:T1計滿次數(shù);number:顯示的秒數(shù);aa:P0端口顯示賦值
            uint no1,no2,no3,no4,no5; //分別代表五個數(shù)碼管顯示的數(shù)字(字符斷碼數(shù)字序號)
            void delay(uint); //聲明延時函數(shù)
            void display(uint,uint,uint,uint,uint); //聲明數(shù)碼管顯示函數(shù)
            uchar code table[]={ //字符斷碼
            0x3f,0x06,0x5b,0x4f,
            0x66,0x6d,0x7d,0x07,
            0x7f,0x6f,0x77,0x7c,
            0x39,0x5e,0x79,0x71}; //C語言編碼定義

            void main() //主函數(shù)入口
            {
            aa=0xfe; //aa初始化,點亮第一的LED
            //定時器初始化
            TMOD=0x11; //TMOD賦值,確定T0/T1工作方式
            TH0=(65536-46080)/256;//TH0/TL0;TH1/TL1計算初值
            TL0=(65536-46080)%6;
            TH1=(65536-46080)/256;
            TL1=(65536-46080)%6;
            EA=1; //總中斷打開
            ET0=1; //開T0/T1中斷
            ET1=1;
            TR0=1; //TR0/TR1置位,啟動定時器
            TR1=1;
            while(1) //不可少的大循環(huán)
            {
            display(no1,no2,no3,no4,no5); //數(shù)碼管顯示
            }
            }
            //延時函數(shù)主體
            void delay(uint s)
            {
            uint i,j;
            for(i=s;i>0;i--)
            {
            for(j=110;j>0;j--)
            {
            }
            }
            }
            //顯示數(shù)碼管顯示函數(shù)主體
            void display(uint no1,uint no2,uint no3,uint no4,uint no5) //數(shù)碼管顯示函數(shù)主體
            {
            //數(shù)碼管1顯示 ①送斷碼;②選擇要顯示數(shù)碼管
            duanxuan=1; //打開段選鎖存器
            P0=table[no5]; //送斷碼
            duanxuan=0; //關閉(鎖住)鎖存器
            P0=0xff; //必不可少的清屏
            weixuan=1; //打開位選鎖存器
            P0=0xfe; //選擇數(shù)碼管
            weixuan=0; //關閉鎖存器
            delay(2); //延時
            //數(shù)碼管2顯示
            duanxuan=1;
            P0=table[no4];
            duanxuan=0;
            P0=0xff;
            weixuan=1;
            P0=0xfd;
            weixuan=0;
            delay(2);
            //數(shù)碼管3顯示
            duanxuan=1;
            P0=table[no3];
            duanxuan=0;
            P0=0xff;
            weixuan=1;
            P0=0xfb;
            weixuan=0;
            delay(2);
            //數(shù)碼管4顯示
            duanxuan=1;
            P0=table[no2];
            duanxuan=0;
            P0=0xff;
            weixuan=1;
            P0=0xf7;
            weixuan=0;
            delay(2);
            //數(shù)碼管5顯示
            duanxuan=1;
            P0=table[no1];
            duanxuan=0;
            P0=0xff;
            weixuan=1;
            P0=0xef;
            weixuan=0;
            delay(2);
            }
            //定時器T0方式一中斷服務程序
            void T0_time_no1() interrupt 1
            {
            TH0=(65536-46080)/256; //預裝初始值
            TL0=(65536-46080)%6;
            number1++; //number1判斷計滿次數(shù),4次為200ms
            if(number1==4)
            {
            number1=0;
            aa=_crol_(aa,1); //循環(huán)左旋函數(shù),把aa左旋之后賦值給aa
            P1=aa; //P1顯示流水燈
            }
            }
            //定時器T1方式一中斷服務程序
            void T1_time_no1() interrupt 3
            {
            TH1=(65536-46080)/256; //預裝初始值
            TL1=(65536-46080)%6;
            number2++; //用于判斷T1計滿次數(shù)
            if(number2==4) //number2=20,就是1s時間
            {
            number2=0;
            number++; //用于裝總數(shù)字
            no5=number/10000; //把一個5位數(shù)分離出來給五個數(shù)碼管顯示
            no4=number000/1000;
            no3=number00/100;
            no2=number0/10;
            no1=number;
            if(number==1000000) //達到最大值100000,重新開始計時
            {
            number=0;
            }
            }
            }

            以上,結束。



            評論


            技術專區(qū)

            關閉