新聞中心

        EEPW首頁(yè) > 嵌入式系統(tǒng) > 設(shè)計(jì)應(yīng)用 > 數(shù)碼管動(dòng)態(tài)掃描的種類與設(shè)計(jì)

        數(shù)碼管動(dòng)態(tài)掃描的種類與設(shè)計(jì)

        作者: 時(shí)間:2016-11-29 來(lái)源:網(wǎng)絡(luò) 收藏
        數(shù)碼動(dòng)態(tài)掃描可以節(jié)省I/O口,而且省電。一般的數(shù)碼管動(dòng)態(tài)掃描可以用延時(shí)函數(shù)來(lái)實(shí)現(xiàn),也可以用定時(shí)器。用延時(shí)的話程序比較復(fù)雜,效率也差點(diǎn),容易占用單片機(jī)的資源,但是可以不用定時(shí)器;如果你兩個(gè)定時(shí)器都用在其他重要的地方,可以考慮這樣做。
        下面先講什么是動(dòng)態(tài)掃描,所謂動(dòng)態(tài)掃描,就是數(shù)碼管的段極都接在一起,利用數(shù)碼管的位選腳在不同的時(shí)間點(diǎn)亮不同的數(shù)碼管,并發(fā)送段碼,利用人眼的暫留現(xiàn)象和數(shù)碼管的余暉效應(yīng),看起來(lái)所有的數(shù)碼管就是同時(shí)亮的,實(shí)際上,它們是在同一個(gè)時(shí)刻只亮一個(gè)而已,其它是不亮的,只是它們的掃描速度很快,我們?nèi)搜鄯直娌怀鰜?lái)。
        好了,先來(lái)講延時(shí)的描:
        延時(shí)掃描有兩種方法,一直是位操作,一種是字節(jié)操作。
        首先得先寫(xiě)一個(gè)數(shù)碼管的段碼編碼,數(shù)碼管分為共陽(yáng)和共陰,其編碼是不同的,而且根據(jù)不同的電路設(shè)計(jì)編碼也有所不同。下面我就舉兩個(gè)例子的0-9的數(shù)碼管常用的編碼值;
        共陽(yáng):0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90;
        共陰:0xbf,0x86,0xdb,0xcf,0xe6,0xed,0xfd,0x87,0xff,0xef;
        先把編碼值設(shè)置成一個(gè)數(shù)組,對(duì)其進(jìn)行對(duì)10取余就可以顯示個(gè)位,取整可以顯示10位。
        延時(shí)掃描的第一種方法:位操作
        先發(fā)送段碼,再開(kāi)位選,然后延時(shí),最后關(guān)位選,接著顯示下一個(gè),以此類推。
        具體延時(shí)多久,要看數(shù)碼管的多少,一般每個(gè)點(diǎn)亮大約5ms到10ms左右,太久了會(huì)出現(xiàn)嚴(yán)重閃爍,太短了數(shù)碼管會(huì)很暗,根據(jù)具體情況做出調(diào)整。
        延時(shí)掃描的第二種方法:字節(jié)操作
        采用字節(jié)操作只需把段碼和位碼都編好,一次延時(shí)就可以了,可以用兩個(gè)FOR循環(huán)來(lái)完成,比如有8個(gè)數(shù)碼管,掃描延時(shí)5MS,可以這樣寫(xiě):
        for(i=0;i<1000;i++)
        for(j=0;j<8;j++)
        {
        P0=NUM(段碼)[j];
        P1=NUM1(位碼)[j];
        }
        現(xiàn)在來(lái)介紹定時(shí)器掃描,用定時(shí)器掃描可以使掃描時(shí)間比較準(zhǔn)確穩(wěn)定,可以用switch語(yǔ)句來(lái)實(shí)現(xiàn);例如打開(kāi)定時(shí)器1,數(shù)碼管4個(gè),可以這樣寫(xiě):
        void main()
        {
        uchar t;
        TMOD=0x01;
        TH0=0xec;
        TL0=0x78;//5ms
        TR0=1;
        while(1)
        {
        if(TF0==1)
        {
        TF0=0;
        TH0=0xec;
        TL0=0x78;
        t++;
        }
        if(t==4)
        {
        t=0;
        }
        switch(t)
        {
        case 0:發(fā)送段碼;關(guān)位選3;開(kāi)位選1;break;
        case 1:發(fā)送段碼;關(guān)位選1;開(kāi)位選2;break;
        。。。。。
        case 3:發(fā)送段碼;關(guān)位選:2;開(kāi)位選3;break;
        }
        }
        這樣寫(xiě)比較直觀,當(dāng)然,有其他方法大家可以探討!


        評(píng)論


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

        關(guān)閉
        主站蜘蛛池模板: 正镶白旗| 岫岩| 江津市| 德化县| 瑞金市| 庆安县| 江永县| 新平| 鄂尔多斯市| 方山县| 新巴尔虎右旗| 青铜峡市| 曲阳县| 淮南市| 徐州市| 林西县| 新巴尔虎右旗| 遂溪县| 九江县| 泰宁县| 宝清县| 芮城县| 环江| 石棉县| 瑞安市| 女性| 咸阳市| 象州县| 北票市| 大渡口区| 莱芜市| 宕昌县| 鞍山市| 那曲县| 迁安市| 霍邱县| 禹州市| 香格里拉县| 乡宁县| 双鸭山市| 上蔡县|