l 多個數碼管—數字變換—輪流顯示—軟件控制—掃描子程序—位指令控制
001imvqdzy6J5X7SvZL91&690.jpeg (37.41 KB, 下載次數: 67)
下載附件
2014-6-17 15:34 上傳
//多數碼管輪換顯示、定位顯示—左移或右移—可以引出進位顯示
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
程序說明:
關于數碼管問題,需要指出,單管顯示、多口多管顯示(一口一管、雙口多管)、靜態顯示、計數顯示、多口多管進位(一口一管、雙口多管)、多口控制與掃描
a) 多個按鍵與多個數碼管(位輸入與字節輸出)—動態—數組—掃描子程序
001imvqdzy6J5X8HjUYa0&690.jpeg (84.69 KB, 下載次數: 80)
下載附件
2014-6-17 15:35 上傳
//多數碼管輪換顯示—可以引出進位顯示—數表的應用
ORG 0000H
START:
MAIN:
MOV R0,#00H ;寄存器中放數值0
MOV DPTR,#TABLE ;指針指向數表
DISP: ;段標記
MOV A,R0 ;將寄存器中的數值轉移到累加器中
MOVC A,@A+DPTR ;以DPTR作為基礎,與累加器相加得到新地址給累加器
MOV P2,A ;將累加器的地址給P2口
MOV P3,#08H ;個位數顯示位控制
ACALL DELAY ;調延時子程序
INC R0 ;寄存器R0加1
CJNE R0,#33H,DISP ;寄存器與立即數33比較,不相等則轉移到DISP循環。相等則順序執行
MOV R1,#00H ;寄存器中放數值0
MOV DPTR,#TABLE1 ;指針指向數表
DISP1: ;段標記
MOV A,R1 ;將寄存器中的數值轉移到累加器中
MOVC A,@A+DPTR ;以DPTR作為基礎,與累加器相加得到新地址給累加器
MOV P2,A ;將累加器的地址給P2口
MOV P3,#04H ;十位數顯示位控制
ACALL DELAY ;調延時子程序
INC R1 ;寄存器R0加1
CJNE R1,#33H,DISP1 ;寄存器與立即數33比較,不相等則轉移到DISP循環。相等則順序執行
LJMP MAIN
DELAY: ;延時子程序---RET為止
MOV R7,#0FFH ;給寄存器植入某個數值
LOOP0:
MOV R6,#0FFH ;給寄存器植入某個數值
LOOP1:
DJNZ R6,LOOP1 ;減1比較,直至寄存器中的數值為零跳轉
DJNZ R7,LOOP0 ;減1比較,直至寄存器中的數值為零跳轉
RET ;返回子程序DELAY
TABLE:
DB 0C0H,0FFH,0C0H,0FFH ;間隔交替用于體現閃爍,去除則為連續遞進。
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個一組的數碼管同步顯示—數表
001imvqdzy6J5X8ft5517&690.jpeg (46.33 KB, 下載次數: 109)
下載附件
2014-6-17 15:34 上傳
ORG 0000H
START:
MAIN:
MOV R0,#00H ;寄存器中放數值0
MOV DPTR,#TABLE ;指針指向數表
DISP: ;段標記
MOV A,R0 ;將寄存器中的數值轉移到累加器中
MOVC A,@A+DPTR ;以DPTR作為基礎,與累加器相加得到新地址給累加器
MOV P2,A ;將累加器的地址給P2口
MOV P3,#0FH ;四位數顯示位控制
ACALL DELAY ;調延時子程序
INC R0 ;寄存器R0加1
CJNE R0,#33H,DISP ;寄存器與立即數33比較,不相等則轉移到DISP循環。相等則順序執行
LJMP MAIN
DELAY: ;延時子程序—RET為止
MOV R7,#0FFH ;給寄存器植入某個數值
LOOP0:
MOV R6,#0FFH ;給寄存器植入某個數值
LOOP1:
DJNZ R6,LOOP1 ;減1比較,直至寄存器中的數值為零跳轉
DJNZ R7,LOOP0 ;減1比較,直至寄存器中的數值為零跳轉
RET ;返回子程序DELAY
TABLE:
DB 0C0H,0FFH,0C0H,0FFH ;間隔交替用于體現閃爍,去除則為連續遞進。
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個一組的數碼管異步顯示(流水、輪流、循環)—數表
ORG 0000H
START:
MAIN:
MOV R0,#00H ;寄存器中放數值0
MOV DPTR,#TABLE ;指針指向數表
DISP: ;段標記
MOV A,R0 ;將寄存器中的數值轉移到累加器中
MOVC A,@A+DPTR ;以DPTR作為基礎,與累加器相加得到新地址給累加器
MOV P3,A ;將累加器的地址給P3口
MOV P2,#08H ;一位數顯示位控制;個位
ACALL DELAY ;調延時子程序
ACALL DELAY
ACALL DELAY ;調延時子程序
MOV P2,#04H ;一位數顯示位控制;十位
ACALL DELAY ;調延時子程序
ACALL DELAY
ACALL DELAY ;調延時子程序
MOV P2,#02H ;一位數顯示位控制;十位
ACALL DELAY ;調延時子程序
ACALL DELAY
ACALL DELAY ;調延時子程序
MOV P2,#01H ;一位數顯示位控制;十位
ACALL DELAY ;調延時子程序
ACALL DELAY
ACALL DELAY ;調延時子程序
INC R0 ;寄存器R0加1
CJNE R0,#16H,DISP ;寄存器與立即數16比較,不相等則轉移到DISP循環。相等則順序執行
MOV P3,#0FFH
LJMP MAIN
DELAY: ;延時子程序---RET為止
MOV R7,#0FFH ;給寄存器植入某個數值
LOOP0:
MOV R6,#0FFH ;給寄存器植入某個數值
LOOP1:
DJNZ R6,LOOP1 ;減1比較,直至寄存器中的數值為零跳轉
DJNZ R7,LOOP0 ;減1比較,直至寄存器中的數值為零跳轉
RET ;返回子程序DELAY
TABLE: ;間隔交替用于體現閃爍,去除則為連續遞進。
DB 0FFH,0FFH,0C0H,0F9H,0A4H,0B0H,99H,92H,82H,0F8H,80H,90H,88H,83H,0C6H,0A1H,86H,8EH,0FFH,0FFH
END
關于進位顯示問題
b) 單個按鍵與多個數碼管—點陣(位操作—輸入與字節操作—輸出)—靜態
>數碼管--點陣單輸出點陣顯示
點陣被廣泛用于各種文字與圖形的顯示場合。其靈活性和多樣性是其普及的主要原因。點陣在本質上仍然是LED顯示技術,也就是發光二極管顯示問題。用發光二極管組成一個矩形陣列,這可以用發光點來組成各種形式的文字與圖形。由于是矩形震裂,這需要通過兩個P口來進行控制和組合。一個P口顯示文字與圖形,一個P口用來掃描產生運動
|