标题: 这是我用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://www.51hei.com/bbs/) |
Powered by Discuz! X3.1 |