在线看毛片网站电影-亚洲国产欧美日韩精品一区二区三区,国产欧美乱夫不卡无乱码,国产精品欧美久久久天天影视,精品一区二区三区视频在线观看,亚洲国产精品人成乱码天天看,日韩久久久一区,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首頁(yè) > 嵌入式系統(tǒng) > 設(shè)計(jì)應(yīng)用 > 可以調(diào)整時(shí)間的電子時(shí)鐘-C語(yǔ)言

            可以調(diào)整時(shí)間的電子時(shí)鐘-C語(yǔ)言

            作者: 時(shí)間:2012-09-17 來(lái)源:網(wǎng)絡(luò) 收藏

            使用stc89c52單片機(jī),電路很簡(jiǎn)單,采用八位共陽(yáng)數(shù)碼管,p0口為數(shù)碼管的段選,p2口為位選. 通過(guò)key1-key3來(lái)

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

            重點(diǎn):

            1、函數(shù)的模塊化

            2、中斷

            #includereg52.h>
            #define uchar unsigned char
            #define uint unsigned int
            sbit p2_0=P2^0;
            sbit p2_1=P2^1;
            sbit p2_2=P2^2;
            sbit p2_3=P2^3;
            sbit p2_4=P2^4;
            sbit p2_5=P2^5;
            sbit p2_6=P2^6;
            sbit p2_7=P2^7;
            sbit key0=P3^2;
            sbit key1=P3^3;
            sbit key2=P3^4;
            sbit key3=P3^5;
            sbit p17=P1^7;
            uint t=0;
            uint key=0;
            uchar set=0;
            uchar second=00,minter=55,hour=11;
            uchar second_1,second_2,minter_1,minter_2,hour_1,hour_2;
            const uchar tab[]={ 0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90,0xbf} ; //0~~9數(shù)碼表

            void delay() //延時(shí)延時(shí)子程序
            { uint i;

            for(i=0;i240;i++);

            }
            void time_0(void) interrupt 1 using 0 //內(nèi)部定時(shí)器0內(nèi)部定時(shí)50ms
            {
            TH0=0x3c;
            TL0=0xb0;
            t++; // t是記定時(shí)次數(shù)
            }


            void display(uchar secondd,uchar minterr,uchar hourr) //顯示始終的子程序
            {
            second_1=secondd/10;
            second_2=secondd%10;
            minter_1=minterr/10;
            minter_2=minterr%10;
            hour_1=hourr/10;
            hour_2=hourr%10;
            P0=tab[second_2];
            p2_0=0;
            delay();
            p2_0=1;
            P0=tab[second_1];
            p2_1=0;
            delay();
            p2_1=1;

            p2_2=0;
            P0=0xbf;
            delay();
            p2_2=1;

            P0=tab[minter_2];
            p2_3=0;
            delay();
            p2_3=1;
            P0=tab[minter_1];
            p2_4=0;
            delay();
            p2_4=1;

            p2_5=0;
            P0=0xbf;
            delay(); //延時(shí) 是為了使— “——”顯示出來(lái),否則太快,—
            p2_5=1;

            P0=tab[hour_2];
            p2_6=0;
            delay();
            p2_6=1;
            P0=tab[hour_1];
            p2_7=0;
            delay();
            p2_7=1;
            }
            void time()
            {

            //定時(shí)1s的時(shí)間是否到?
            if(t==19) //1s到,則加一秒
            { t=0;
            second++;
            if(second==60) // 是否為60秒 ,是秒清零,分加一秒,不到則跳出
            {
            second=0;
            minter++;
            if(minter==60) // 分是否為60分,是 ,分清零,時(shí)加一;不是則跳出
            { minter=0;
            hour++;
            if(hour==24)
            {

            hour=0;
            }
            }
            }
            }

            display(second,minter,hour); //調(diào)用顯示函數(shù) 來(lái)顯示時(shí)間時(shí)間
            }

            uint scan_key() //時(shí)間 按鍵 掃描 函數(shù)
            { //延時(shí)
            delay(); //判斷 如果按鍵 按key3下則返回1 來(lái)調(diào)用 時(shí)間函數(shù),不為零則返回0 不變不調(diào)整
            if(key0==0)
            set=1;
            if(key0==1)
            set=0;
            return set;
            }

            void set_time() //調(diào)整時(shí)間函數(shù)
            { uchar m;
            if(key1==0) delay(); //調(diào)整小時(shí),確定key1健按下
            if(key1==0) hour++; // x小時(shí)數(shù)遞增
            if(hour==24) hour=0; //小時(shí)數(shù)到24,從零開(kāi)始
            for(m=0;m20;m++) //循環(huán)20次
            { time(); //調(diào)用顯示函數(shù) 來(lái)顯示時(shí)間時(shí)間

            }
            if(key2==0) delay(); //調(diào)整分鐘
            if(key2==0) minter++;
            if(minter==60) minter=0;
            delay();
            time(); //調(diào)用時(shí)間函數(shù) 來(lái)顯示時(shí)間時(shí)間
            if(key0==0)

            time();

            }
            void main() //主函數(shù) 設(shè)定 內(nèi)部時(shí)間定時(shí)
            {
            TMOD=0X01;
            TH0=0X10;
            TL0=0X00;
            EA=1;
            ET0=1;
            TR0=1;
            P2=0xff;

            while(1)
            {
            if(key0==0) // p判斷 調(diào)整時(shí)間的按鍵是否按下 即 是否需要 調(diào)整時(shí)間
            {
            p17=0;
            delay();
            delay();

            delay();
            p17=1;
            delay();
            delay();
            key=scan_key();

            }

            switch(key)
            { //定時(shí)1s的時(shí)間是否到?
            case 0: time(); break;
            case 1: set_time();break;
            default :break;
            }
            }

            }



            評(píng)論


            相關(guān)推薦

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

            關(guān)閉