新聞中心

        EEPW首頁 > 嵌入式系統(tǒng) > 設(shè)計應(yīng)用 > C51二位數(shù)碼管顯示程序設(shè)計

        C51二位數(shù)碼管顯示程序設(shè)計

        作者: 時間:2016-11-27 來源:網(wǎng)絡(luò) 收藏

        #define uint unsigned int
        #define uchar unsigned char
        sbit k1=P2^0;
        sbit k2=P2^1;
        uint code table[]={0X00,0X80,0X10,0X90,0X20,0XA0,0X30,0XB0,0X40,0XC0};
        void delay(uint z)
        {
        uint a,b;
        for(a=z;a>0;a--)
        {
        for(b=z;b>0;b--);
        }
        }
        void main()
        {
        int c=99,t,shi,ge;
        for(t=99;t>0;t--)
        {
        shi=c/10;
        ge=c;
        k1=0,k2=1;
        P1=table[shi];
        delay(300);
        P1=0XFF;

        k2=0,k1=1;
        P1=table[ge];
        delay(200);
        P1=0XFF;
        k1=0,k2=0;
        c--;
        if(c==0)
        c=99;

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


        }
        }

        回答:

        肯定不同時的啊 因為你是顯示為十再顯示個的

        其實所謂的同時顯示就是循環(huán)掃描 時間間隔短了 自然看著就是同時了

        你要做的就是在顯示延時的同時顯示一下十位 再顯示一下個位 而不是顯示完一個再顯示另一個

        最好的做法是放在中斷中 這樣能確保顯示效果

        bit flag;

        int shi ,ge;

        這三個為外部變量在延時的過程中調(diào)用這個函數(shù) 應(yīng)該就OK了

        void showled()

        {

        if (flag==0)

        {

        P1=table[shi];k2=1,k1=0;

        }

        else

        {

        P1=table[ge];k2=0,k1=1;

        }

        flag=~flag;

        }



        評論


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

        關(guān)閉
        主站蜘蛛池模板: 白银市| 岳阳市| 襄垣县| 尉氏县| 石林| 仁寿县| 淮安市| 洱源县| 绥滨县| 乐平市| 鄯善县| 于田县| 女性| 嘉义县| 宝坻区| 孟村| 文化| 宜君县| 文昌市| 芦溪县| 陆河县| 南康市| 武强县| 石台县| 依安县| 日土县| 保靖县| 方山县| 定西市| 焦作市| 迭部县| 荣成市| 玉环县| 那坡县| 陵川县| 惠安县| 罗定市| 理塘县| 保定市| 卢湾区| 同江市|