標題: 這是我用edsim51做的仿真,動態顯示1234,如果要實現同時顯示1234,怎么做 [打印本頁]
作者: BSq 時間: 2020-3-17 20:08
標題: 這是我用edsim51做的仿真,動態顯示1234,如果要實現同時顯示1234,怎么做
ORG 0100
TABLE: DB 0C0h,0F9H,0A4H,0b0H,99H,92H,82H,0F8H,80H,90H ;表:共陽數碼管 0-9
ORG 0000H
LJMP MAIN
ORG 0200H
MAIN: MOV DPTR,#TABLE
M1: SETB P3.3
SETB P3.4 ;選擇千位數碼管
MOV A,#1 ;千位顯示1,顯示數值可以自己改,0-9
MOVC A,@A+DPTR ;查表輸出定義好的數碼管段值到P1口,顯示相應的0-9
MOV P1,A
LCALL DELAY ;延時,停留一會,讓人眼感觸到它的亮度
MOV P1,#0FFH ;清除數碼管顯示,因是共陽型,所以不是0
CLR P3.3 ;關閉千位數碼管,選擇百位數碼管
MOV A,#2 ;百位顯示2,顯示數值可以自己改,0-9
MOVC A,@A+DPTR ;查表輸出定義好的數碼管段值到P1口,顯示相應的0-9
MOV P1,A
LCALL DELAY ;延時,停留一會,讓人眼感觸到它的亮度
MOV P1,#0FFH ;清除數碼管顯示,因是共陽型,所以不是0
CLR P3.4
SETB P3.3 ;關閉百位數碼管,選擇十位數碼管
MOV A,#3 ;十位顯示3,顯示數值可以自己改,0-9
MOVC A,@A+DPTR ;查表輸出定義好的數碼管段值到P1口,顯示相應的0-9
MOV P1,A
LCALL DELAY ;延時,停留一會,讓人眼感觸到它的亮度
MOV P1,#0FFH ;清除數碼管顯示,因是共陽型,所以不是0
CLR P3.3 ;關閉十位數碼管;選擇個位數碼管
MOV A,#4 ;個位顯示4
MOVC A,@A+DPTR ;查表輸出定義好的數碼管段值到P0口,顯示相應的0-9
MOV P1,A
LCALL DELAY ;延時,停留一會
MOV P1,#0FFH ;清除數碼管顯示
LJMP M1 ;循環掃描輸出,不掃描則不顯示或顯示不正確,即為動態顯示,
DELAY: MOV R5,#10 ;此次延時子程序不用很長時間
DJNZ R5,$
RET
END
作者: wulitouaaaa 時間: 2020-3-31 03:07
你好 請問你有安裝包嗎
作者: Y_G_G 時間: 2020-3-31 08:54
;我這個共陰的,你可以參考一下,硬件不一樣可以在程序開始的偽指令那改一下
;共陰的掃描要把顯示部分的位選改一下
;程序沒有進行過仿真.是直接燒錄在開發板的,實際驗證過了
;=========================================================================================
;名稱:1234顯示程序
;作者:=
;日期:2020-03-31
;最后更新日期:2020-03-31
;MCU:STC8A4K32S2
;使用片上24MHZ時鐘,
;=========================================================================================
COM0 EQU P2.3
COM1 EQU P2.2
COM2 EQU P2.1
COM3 EQU P2.0 ;數碼管的4個位選端口
S1 BIT P1.5 ;按鍵
OUT EQU P0 ;PO用于顯示
P2M0 EQU 096H ;
P2M1 EQU 095H ;控制P2端口輸出模式的兩個寄存器
;===========================================================================
LED_1 DATA 030H ;
LED_10 DATA 031H ;
LED_100 DATA 032H ;
LED_1000 DATA 033H ;
ORG 0000H
LJMP MAIN
ORG 0200H
MAIN: MOV LED_1,#1
MOV LED_10,#2
MOV LED_100,#3
MOV LED_1000,#4 ;先把四個清除
MOV DPTR,#TABLE
CALL DISPLAY
JMP MAIN
;===========================================================================
;顯示子程序
DISPLAY: MOV A,LED_1
CLR COM0 ;打開位選
CALL DISP_LED ;數碼管通過查表顯示
SETB COM0 ;關閉位選
;===================================================
MOV A,LED_10
CLR COM1 ;打開位選
CALL DISP_LED ;數碼管通過查表顯示
SETB COM1 ;關閉位選
;===================================================
MOV A,LED_100
CLR COM2 ;打開位選
CALL DISP_LED ;數碼管通過查表顯示
SETB COM2 ;關閉位選
;===================================================
MOV A,LED_1000
CLR COM3 ;打開位選
CALL DISP_LED ;數碼管通過查表顯示
SETB COM3 ;關閉位選
;===================================================
RET
;=================================================================================================
;數碼管查表顯示
DISP_LED: MOV DPTR,#TABLE
MOVC A,@A+DPTR
MOV OUT,A ;
CALL DELAY1MS ;延時1mS
RET
;==================================================================================================
DELAY1MS: PUSH 30H
PUSH 31H
MOV 30H,#32
MOV 31H,#39
NEXT: DJNZ 31H,NEXT
DJNZ 30H,NEXT
POP 31H
POP 30H
RET
;===================================================================================
;TABLE: DB 0C0h,0F9H,0A4H,0b0H,99H,92H,82H,0F8H,80H,90H ;表:共陽數碼管 0-9
TABLE: DB 0FCH,060H,0DAH,0F2H,066H,0B6H,0BEH,0E0H,0FEH,0F6H; ;表:共陰數碼管 0-9
;===================================================================================
END
作者: BSq 時間: 2020-3-31 09:29
請問你是指edsim51的安裝包嗎
?
| 歡迎光臨 (http://m.raoushi.com/bbs/) |
Powered by Discuz! X3.1 |