新聞中心

        EEPW首頁 > 嵌入式系統(tǒng) > 設計應用 > 世上最簡單的遙控(數碼管顯示)電子鐘(C語言編寫)

        世上最簡單的遙控(數碼管顯示)電子鐘(C語言編寫)

        作者: 時間:2016-11-29 來源:網絡 收藏
        /*此程序為紅外遙控電子鐘,晶振為12M,MCU型號為51系列,電路很簡單四位共陽數碼管,紅外接收管sm0038接在P3.2*/

        #include
        #define uchar unsigned char
        #define uint unsigned int
        #define c(x) (x*120000/120000)
        sbit IR=P3^2;

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

        sbit ge=P2^3;//數碼管四位選控制端
        sbit shi=P2^2;
        sbit bai=P2^1;
        sbit qian=P2^0;

        char miao,fen=59,shij=23;//時分秒3個變量
        uchar num,ding; //兩定時器計數變量
        uint temp;//遙控解碼變量
        uchar i;
        uchar j;
        bit flag;//控制小數點亮與滅變量
        bit power;//控制數碼管亮與滅變量
        bit flash;//進入時間調整標志位變量

        uchar IRBUF[4]; //用于保存解碼結果
        uchar code table[]={
        0xc0,0xf9,0xa4,0xb0,0x99,
        0x92,0x82,0xf8,0x80,0x90,
        0x88,0x83,0xc6,0xa1,0x86,
        0x8e
        };

        uint Low()
        {
        TL0=0;
        TH0=0;
        TR0=1;
        while(!IR&&(TH0&0x80)==0);
        TR0=0;
        return TH0*256+TL0;
        }
        //=============================================================
        uint High()
        {
        TL0=0;
        TH0=0;
        TR0=1;
        while(IR&&(TH0&0x80)==0);
        TR0=0;
        return TH0*256+TL0;
        }
        void xian(uchar shik,uchar fen)
        {
        P0=table[shik/10];
        if(power==0)
        qian=0;
        else
        qian=1;
        // delay(2);
        qian=1;
        if(flag==0)
        P0=table[shik%10]&0x7f;
        else
        P0=table[shik%10]|0x80;
        if(power==0)
        bai=0;
        else
        bai=1;
        //delay(2);
        bai=1;
        P0=table[fen/10];
        if(power==0)
        shi=0;
        else
        shi=1;
        //delay(2);
        shi=1;
        P0=table[fen%10];
        if(power==0)
        ge=0;
        else
        ge=1;
        //delay(2);
        ge=1;
        }
        void yin()
        {
        while(1)
        {
        restart:
        while(IR)
        {

        xian(shij,fen);
        if(flash==1)
        {
        if(ding>5)
        {
        ding=0;
        power=~power;
        //xian(shij,fen);
        }
        }
        }
        temp=Low();
        if(tempc(9500)) continue;//引導脈沖低電平9000
        temp=High();
        if(tempc(5000)) continue;//引導脈沖高電平4500
        for(i=0;i<4;i++) //4個字節(jié)
        {
        for(j=0;j<8;j++) //每個字節(jié)8位
        {
        temp=Low();
        if(tempc(800)) goto restart;
        temp=High();
        if(tempc(2000)) goto restart;
        IRBUF[i]>>=1;
        if(temp>c(1120)) IRBUF[i]|=0x80;
        }
        }
        return;
        }
        }


        上一頁 1 2 下一頁

        關鍵詞: 遙控數碼管電子

        評論


        技術專區(qū)

        關閉
        主站蜘蛛池模板: 涞水县| 米脂县| 阳高县| 日喀则市| 南充市| 长乐市| 贺兰县| 怀宁县| 共和县| 安福县| 纳雍县| 乐清市| 临清市| 靖边县| 类乌齐县| 邯郸县| 唐山市| 于都县| 和林格尔县| 儋州市| 绥阳县| 宁乡县| 彭州市| 永嘉县| 龙游县| 蒙阴县| 洛阳市| 武清区| 同仁县| 芜湖市| 临城县| 黔西县| 陵水| 曲水县| 胶南市| 盐池县| 鲜城| 临沭县| 梅州市| 洛川县| 安福县|