找回密碼
 立即注冊(cè)

QQ登錄

只需一步,快速開(kāi)始

搜索
查看: 3478|回復(fù): 0
收起左側(cè)

51系列單片機(jī) 匯編 proteus 數(shù)碼管--點(diǎn)陣

[復(fù)制鏈接]
ID:262 發(fā)表于 2014-6-17 15:36 | 顯示全部樓層 |閱讀模式
l  多個(gè)數(shù)碼管—數(shù)字變換—輪流顯示—軟件控制—掃描子程序—位指令控制
001imvqdzy6J5X7SvZL91&690.jpeg
//多數(shù)碼管輪換顯示、定位顯示—左移或右移—可以引出進(jìn)位顯示

ORG 0000H

MAIN:

MOV A,#00H    MOV P2,A    CPL A     MOV P3,A

MOV P2,#0C0H  MOV P3,#01H

ACALL YANSHI

MOV P2,#0F9H  MOV P3,#02H

ACALL YANSHI

MOV P2,#0A4H  MOV P3,#04H

ACALL YANSHI

MOV P2,#0B0H  MOV P3,#08H

ACALL YANSHI

MOV P2,#99H   MOV P3,#01H

ACALL YANSHI

MOV P2,#92H  MOV P3,#02H  ACALL YANSHI

MOV P2,#082H  MOV P3,#04H  ACALL YANSHI  MOV P2,#0f8H  MOV P3,#08H  ACALL YANSHI

MOV P2,#80H   MOV P3,#01H  ACALL YANSHI  MOV P2,#90H  MOV P3,#01H  ACALL YANSHI

MOV P2,#088H  MOV P3,#01H  ACALL YANSHI  MOV P2,#83H  MOV P3,#01H  ACALL YANSHI

LCALL MAIN

YANSHI:  MOV R5,#04H   F2: MOV R7,#0FFH     F1: DJNZ  R7, F1   DJNZ  R6, F2

  RET

END

程序說(shuō)明:

關(guān)于數(shù)碼管問(wèn)題,需要指出,單管顯示、多口多管顯示(一口一管、雙口多管)、靜態(tài)顯示、計(jì)數(shù)顯示、多口多管進(jìn)位(一口一管、雙口多管)、多口控制與掃描



a)  多個(gè)按鍵與多個(gè)數(shù)碼管(位輸入與字節(jié)輸出)—?jiǎng)討B(tài)—數(shù)組—掃描子程序

001imvqdzy6J5X8HjUYa0&690.jpeg

//多數(shù)碼管輪換顯示—可以引出進(jìn)位顯示—數(shù)表的應(yīng)用

ORG 0000H

START:

MAIN:

     MOV R0,#00H  ;寄存器中放數(shù)值0

        MOV DPTR,#TABLE ;指針指向數(shù)表

DISP:                ;段標(biāo)記

     MOV A,R0  ;將寄存器中的數(shù)值轉(zhuǎn)移到累加器中

        MOVC A,@A+DPTR  ;以DPTR作為基礎(chǔ),與累加器相加得到新地址給累加器

        MOV P2,A   ;將累加器的地址給P2口

        MOV P3,#08H ;個(gè)位數(shù)顯示位控制

        ACALL DELAY  ;調(diào)延時(shí)子程序

        INC R0 ;寄存器R0加1

        CJNE R0,#33H,DISP ;寄存器與立即數(shù)33比較,不相等則轉(zhuǎn)移到DISP循環(huán)。相等則順序執(zhí)行



      MOV R1,#00H  ;寄存器中放數(shù)值0

        MOV DPTR,#TABLE1 ;指針指向數(shù)表

DISP1:                ;段標(biāo)記

     MOV A,R1  ;將寄存器中的數(shù)值轉(zhuǎn)移到累加器中

        MOVC A,@A+DPTR  ;以DPTR作為基礎(chǔ),與累加器相加得到新地址給累加器

        MOV P2,A   ;將累加器的地址給P2口

        MOV P3,#04H ;十位數(shù)顯示位控制

        ACALL DELAY  ;調(diào)延時(shí)子程序

        INC R1 ;寄存器R0加1

        CJNE R1,#33H,DISP1 ;寄存器與立即數(shù)33比較,不相等則轉(zhuǎn)移到DISP循環(huán)。相等則順序執(zhí)行

        LJMP MAIN

DELAY:                   ;延時(shí)子程序---RET為止

     MOV R7,#0FFH  ;給寄存器植入某個(gè)數(shù)值

LOOP0:

     MOV R6,#0FFH  ;給寄存器植入某個(gè)數(shù)值

LOOP1:

     DJNZ R6,LOOP1  ;減1比較,直至寄存器中的數(shù)值為零跳轉(zhuǎn)

        DJNZ R7,LOOP0 ;減1比較,直至寄存器中的數(shù)值為零跳轉(zhuǎn)

        RET   ;返回子程序DELAY

TABLE:

  DB  0C0H,0FFH,0C0H,0FFH ;間隔交替用于體現(xiàn)閃爍,去除則為連續(xù)遞進(jìn)。

DB 0C0H,0FFH,0F9H,0FFH,0A4H,0FFH,0B0H,0FFH,99H,0FFH,92H,0FFH,82H,0FFH,0F8H,

DB 80H,0FFH,90H,0FFH,88H,0FFH,83H,0FFH,0C6H,0FFH,0A1H,0FFH,86H,0FFH,8EH, 00H

TABLE1:

DB 0C0H,0F9H,0A4H,0B0H,99H,92H,82H,0F8H,80H,90H,88H,83H,0c6H,0A1H,86H,8EH

END





//4個(gè)一組的數(shù)碼管同步顯示—數(shù)表
001imvqdzy6J5X8ft5517&690.jpeg
ORG 0000H

START:

MAIN:

     MOV R0,#00H  ;寄存器中放數(shù)值0

        MOV DPTR,#TABLE ;指針指向數(shù)表

DISP:                ;段標(biāo)記

     MOV A,R0  ;將寄存器中的數(shù)值轉(zhuǎn)移到累加器中

        MOVC A,@A+DPTR  ;以DPTR作為基礎(chǔ),與累加器相加得到新地址給累加器

        MOV P2,A   ;將累加器的地址給P2口

        MOV P3,#0FH ;四位數(shù)顯示位控制

        ACALL DELAY  ;調(diào)延時(shí)子程序

        INC R0 ;寄存器R0加1

        CJNE R0,#33H,DISP ;寄存器與立即數(shù)33比較,不相等則轉(zhuǎn)移到DISP循環(huán)。相等則順序執(zhí)行

   

        LJMP MAIN

DELAY:                   ;延時(shí)子程序—RET為止

     MOV R7,#0FFH  ;給寄存器植入某個(gè)數(shù)值

LOOP0:

     MOV R6,#0FFH  ;給寄存器植入某個(gè)數(shù)值

LOOP1:

     DJNZ R6,LOOP1  ;減1比較,直至寄存器中的數(shù)值為零跳轉(zhuǎn)

        DJNZ R7,LOOP0 ;減1比較,直至寄存器中的數(shù)值為零跳轉(zhuǎn)

        RET   ;返回子程序DELAY

TABLE:

    DB 0C0H,0FFH,0C0H,0FFH ;間隔交替用于體現(xiàn)閃爍,去除則為連續(xù)遞進(jìn)。

DB 0C0H,0FFH,0F9H,0FFH,0A4H,0FFH,0B0H,0FFH,99H,0FFH,92H,0FFH,82H,0FFH,0F8H,

DB 80H,0FFH,90H,0FFH,88H,0FFH,83H,0FFH,0C6H,0FFH,0A1H,0FFH,86H,0FFH,8EH,





















//4個(gè)一組的數(shù)碼管異步顯示(流水、輪流、循環(huán))—數(shù)表



ORG 0000H

START:

MAIN:

     MOV R0,#00H  ;寄存器中放數(shù)值0

        MOV DPTR,#TABLE ;指針指向數(shù)表

DISP:                ;段標(biāo)記

     MOV A,R0  ;將寄存器中的數(shù)值轉(zhuǎn)移到累加器中

        MOVC A,@A+DPTR  ;以DPTR作為基礎(chǔ),與累加器相加得到新地址給累加器

        MOV P3,A   ;將累加器的地址給P3口

        MOV P2,#08H ;一位數(shù)顯示位控制;個(gè)位

              ACALL DELAY  ;調(diào)延時(shí)子程序

              ACALL DELAY

                     ACALL DELAY  ;調(diào)延時(shí)子程序



        MOV P2,#04H ;一位數(shù)顯示位控制;十位

        ACALL DELAY  ;調(diào)延時(shí)子程序

              ACALL DELAY

                     ACALL DELAY  ;調(diào)延時(shí)子程序



                     MOV P2,#02H ;一位數(shù)顯示位控制;十位

        ACALL DELAY  ;調(diào)延時(shí)子程序

              ACALL DELAY

                     ACALL DELAY  ;調(diào)延時(shí)子程序



                     MOV P2,#01H ;一位數(shù)顯示位控制;十位

        ACALL DELAY  ;調(diào)延時(shí)子程序

              ACALL DELAY

                     ACALL DELAY  ;調(diào)延時(shí)子程序



        INC R0 ;寄存器R0加1

        CJNE R0,#16H,DISP ;寄存器與立即數(shù)16比較,不相等則轉(zhuǎn)移到DISP循環(huán)。相等則順序執(zhí)行

                    MOV P3,#0FFH

        LJMP MAIN

DELAY:                   ;延時(shí)子程序---RET為止

     MOV R7,#0FFH  ;給寄存器植入某個(gè)數(shù)值

LOOP0:

     MOV R6,#0FFH  ;給寄存器植入某個(gè)數(shù)值

LOOP1:

     DJNZ R6,LOOP1  ;減1比較,直至寄存器中的數(shù)值為零跳轉(zhuǎn)

        DJNZ R7,LOOP0 ;減1比較,直至寄存器中的數(shù)值為零跳轉(zhuǎn)

        RET   ;返回子程序DELAY

TABLE: ;間隔交替用于體現(xiàn)閃爍,去除則為連續(xù)遞進(jìn)。

    DB 0FFH,0FFH,0C0H,0F9H,0A4H,0B0H,99H,92H,82H,0F8H,80H,90H,88H,83H,0C6H,0A1H,86H,8EH,0FFH,0FFH



END



關(guān)于進(jìn)位顯示問(wèn)題



b)  單個(gè)按鍵與多個(gè)數(shù)碼管—點(diǎn)陣(位操作—輸入與字節(jié)操作—輸出)—靜態(tài)



>數(shù)碼管--點(diǎn)陣單輸出點(diǎn)陣顯示

點(diǎn)陣被廣泛用于各種文字與圖形的顯示場(chǎng)合。其靈活性和多樣性是其普及的主要原因。點(diǎn)陣在本質(zhì)上仍然是LED顯示技術(shù),也就是發(fā)光二極管顯示問(wèn)題。用發(fā)光二極管組成一個(gè)矩形陣列,這可以用發(fā)光點(diǎn)來(lái)組成各種形式的文字與圖形。由于是矩形震裂,這需要通過(guò)兩個(gè)P口來(lái)進(jìn)行控制和組合。一個(gè)P口顯示文字與圖形,一個(gè)P口用來(lái)掃描產(chǎn)生運(yùn)動(dòng)
回復(fù)

使用道具 舉報(bào)

本版積分規(guī)則

手機(jī)版|小黑屋|51黑電子論壇 |51黑電子論壇6群 QQ 管理員QQ:125739409;技術(shù)交流QQ群281945664

Powered by 單片機(jī)教程網(wǎng)

快速回復(fù) 返回頂部 返回列表