新聞中心

        EEPW首頁 > 嵌入式系統(tǒng) > 設(shè)計(jì)應(yīng)用 > 51單片機(jī)教程:動(dòng)態(tài)掃描顯示接口電路及程序

        51單片機(jī)教程:動(dòng)態(tài)掃描顯示接口電路及程序

        作者: 時(shí)間:2012-08-02 來源:網(wǎng)絡(luò) 收藏

        DISP:

        PUSH ACC ;ACC入棧

        PUSH PSW ;PSW入棧

        MOV A,DISPBUFF ;取第一個(gè)待數(shù)

        MOV DPTR,#DISPTAB ;字形表首地址

        MOVC A,@A+DPTR ;取字形碼

        MOV P0,A ;將字形碼送P0位(段口)

        CLR FIRST ;開第一位器位口

        LCALL DELAY ;延時(shí)1毫秒

        SETB FIRST ;關(guān)閉第一位器(開始準(zhǔn)備第二位的數(shù)據(jù))

        MOV A,DISPBUFF+1 ;取顯示緩沖區(qū)的第二位

        MOV DPTR,#DISPTAB

        MOVC A,@A+DPTR

        MOV P0,A ;將第二個(gè)字形碼送P0口

        CLR SECOND ;開第二位顯示器

        LCALL DELAY ;延時(shí)

        SETB SECOND ;關(guān)第二位顯示

        POP PSW

        POP ACC

        RET

        DELAY: ;延時(shí)1毫秒

        PUSH PSW

        SETB RS0

        MOV R7,#50

        D1: MOV R6,#10

        D2: DJNZ R6,$

        DJNZ R7,D1

        POP PSW

        RET

        DISPTAB:DB 28H,7EH,0a4H,64H,72H,61H,21H,7CH,20H,60H

        END

        從上面的例程中能看出,顯示必須由CPU持續(xù)地調(diào)用顯示,才能保證持續(xù)持續(xù)的顯示。

        上面的這個(gè)能實(shí)現(xiàn)數(shù)字的顯示,但不太實(shí)用,為什么呢?這里僅是顯示兩個(gè)數(shù)字,并沒有做其他的工作,因此,兩個(gè)數(shù)碼管輪流顯示1毫秒,沒有問題,實(shí)際的工作中,當(dāng)然不可能只顯示兩個(gè)數(shù)字,還是要做其他的事情的,這樣在二次調(diào)用顯示之間的時(shí)間間隔就不一不定了,如果時(shí)間間隔比較長,就會使顯示不連續(xù)。而實(shí)際工作中是很難保證所有工作都能在很短時(shí)間內(nèi)完成的。況且這個(gè)顯示程序也有點(diǎn)“浪費(fèi)”,每個(gè)數(shù)碼管顯示都要占用1個(gè)毫秒的時(shí)間,這在很多合是不允許的,怎么辦呢?我們能借助于定時(shí)器,定時(shí)時(shí)間一到,產(chǎn)生中斷,點(diǎn)亮一個(gè)數(shù)碼管,然后馬上返回,這個(gè)數(shù)碼管就會一直亮到下一次定時(shí)時(shí)間到,而不用調(diào)用延時(shí)程序了,這段時(shí)間能留給主程序干其他的事。到下一次定時(shí)時(shí)間到則顯示下一個(gè)數(shù)碼管,這樣就很少浪費(fèi)了。

        DIY機(jī)械鍵盤相關(guān)社區(qū):機(jī)械鍵盤DIY




        評論


        相關(guān)推薦

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

        關(guān)閉
        主站蜘蛛池模板: 玛曲县| 宜宾县| 崇阳县| 云安县| 策勒县| 昭平县| 明光市| 洪湖市| 土默特右旗| 渑池县| 岢岚县| 获嘉县| 蓬安县| 大理市| 霍城县| 荃湾区| 且末县| 平凉市| 贡嘎县| 临高县| 竹溪县| 霍州市| 河津市| 册亨县| 金乡县| 苍南县| 耿马| 武冈市| 绥芬河市| 延川县| 越西县| 太谷县| 沙坪坝区| 武邑县| 竹山县| 湛江市| 左贡县| 离岛区| 阿尔山市| 铜陵市| 漳浦县|