⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 新建 文本文档.txt

📁 提供了LED点阵显示的Proteus仿真电路
💻 TXT
字号:
	ZISHU		EQU	30H	;取码偏移量
	DIS_BUFL	EQU	40H	;显示缓冲低字节区(40H~60H攻32字节)
	DIS_BUFH	EQU	60H	;显示缓冲高字节区(60H~80H攻32字节)
	LOD_BUFL	EQU	80H	;加载缓冲低字节区(80H~90H)
	LOD_BUFH	EQU	90H	;加载缓冲高字节区(90H~A0H)
	ORG  	0000H
	LJMP	START
	ORG	0100H
START:	
	SETB	EA		;开启总中断开关	
	MOV 	SCON,#00H	;串行口初始化为方式0
	MOV	ZISHU,#6

	LCALL	CLRBUF		;把显示缓冲区清零
	MOV	DPTR,#TABLE
	MOV	R0,#LOD_BUFL
	MOV	R1,#LOD_BUFH
	MOV	R2,ZISHU

NEXT:	LCALL	LOADING		;把字型码加载到加载缓冲区
	MOV	R7,16
LOOP3:	LCALL	SHIFT		;把显示缓冲区内的字型移位


	MOV	R6,#255
LOOP2:	MOV	R5,#16
	MOV	R3,#0		;扫描指针清零
	MOV	R4,#0		;取码指针清零
LOOP1:	MOV	A,R3
	MOV	P1,A		;扫描指针送P1,选中一行

	MOV	R0,DIS_BUFL
	MOV	A,R0
	ADD	A,R4
	MOV	R0,A
	MOV	A,@R0
	CLR	TI
	MOV 	SBUF,A
	JNB  	TI,$
  	CLR  	TI     ;清发送完标志	

	MOV	R0,DIS_BUFH
	MOV	A,R0
	ADD	A,R4
	MOV	R0,A
	MOV	A,@R0
	CLR	TI
	MOV 	SBUF,A
	JNB  	TI,$
  	CLR  	TI     ;清发送完标志

	MOV	R0,DIS_BUFL
	MOV	A,R0
	ADD	A,R4
	ADD	A,#16	;取下一个字需要加16的偏移量
	MOV	R0,A
	MOV	A,@R0
	CLR	TI
	MOV 	SBUF,A
	JNB  	TI,$
  	CLR  	TI     ;清发送完标志	

	MOV	R0,DIS_BUFH
	MOV	A,R0
	ADD	A,R4
	ADD	A,#16	;取下一个字需要加16的偏移量
	MOV	R0,A
	MOV	A,@R0
	CLR	TI
	MOV 	SBUF,A
	JNB  	TI,$
  	CLR  	TI     ;清发送完标志

	LCALL	DELAY
	INC	R3	;扫描指针+1
	INC	R4	;取码指针+1
	DJNZ	R5,LOOP1	;一个字需要扫描的16次是否完成?
;	DJNZ	R6,LOOP2	;一个字的显示时间是否完成?
	DJNZ	R7,LOOP3	;这个字是否每一行都移动了?
	DJNZ	R2,NEXT		;要显示的6个字是否都移动完成了?

	LJMP	$

	
;**********************************************************************************
;把显示缓冲区清零
CLRBUF:
	MOV	R0,#DIS_BUFL
L1:	MOV	@R0,#0
	INC	R0
	CJNE	R0,#80H,L1	
	RET
;**********************************************************************************
;把字型码加载到加载缓冲区
LOADING:
	PUSH	02h	;push r2
	MOV 	R2,#16
L2:
        MOV 	A,#0
        MOVC 	A,@A+DPTR
        MOV 	@R0,A	;把偶数个数字码存放在R0开始的缓冲区,共可以存放16个字码
        INC 	R0
        INC 	DPTR        
        CLR 	A
        MOVC 	A,@A+DPTR
        MOV 	@R1,A	;把奇数个数字码存放在R1开始的缓冲区,共可以存放16个字码
        INC 	R1
        INC 	DPTR
        DJNZ 	R2,L2	
	POP	02h	;pop r2
	RET
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;	
SHIFT:
	PUSH 	ACC
        SETB 	RS1		;选择另外一组工作寄存器
        MOV 	R3,#00H		;偏移量
        MOV 	R4,#16
LOOPS:
        CLR 	C		;清进位标志C
        MOV 	A,#LOD_BUFH
        ADD 	A,R3
        MOV 	R0,A
        MOV 	A,@R0
        RLC	A		;带进位左移,高字节的最高位移进Cy
        MOV 	@R0,A		;移位后放回缓冲区
        MOV 	A,#LOD_BUFL
        PUSH 	PSW		;保护Cy,避免ADD进位影响
        ADD 	A,R3	
        MOV 	R0,A
        MOV 	A,@R0
        POP 	PSW
        RLC 	A		;高字节最高位移进低字节最低位   低字节高位进入Cy
        MOV 	@R0,A

        MOV 	A,#DIS_BUFH	;显示缓冲区地址送A
        PUSH 	PSW
        ADD 	A,R3
        MOV 	R0,A
        MOV 	A,@R0
        POP 	PSW
        RLC 	A		;上缓冲区低字节的高位进入  这个缓冲区高字节低位,
        MOV 	@R0,A

        MOV 	A,#DIS_BUFL
        PUSH 	PSW
        ADD 	A,R3
        MOV 	R0,A
        MOV 	A,@R0
        POP 	PSW
        RLC 	A
        MOV 	@R0,A
	
	MOV 	A,#DIS_BUFH
        PUSH 	PSW
        ADD 	A,R3
	ADD	A,#16		;取下一个字的高字节需要+16的偏移量
        MOV 	R0,A
        MOV 	A,@R0
        POP 	PSW
        RLC 	A
        MOV 	@R0,A

	MOV 	A,#DIS_BUFL
        PUSH 	PSW
        ADD 	A,R3
	ADD	A,#16
        MOV 	R0,A
        MOV 	A,@R0
        POP 	PSW
        RLC 	A
        MOV 	@R0,A

        INC 	R3		;偏移量+1,准备移下一对字节(下一列)
        DJNZ 	R4,LOOPS 	;一个字的16列是否都移动了?
        CLR 	RS1
        POP 	ACC	
	RET

;***********************************************************************************
DELAY:
	SETB	RS0
	MOV	R2,#100
J:	DJNZ	R2,J
	CLR	RS0
	RET
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;

TABLE :	
/*
;空格
db 00H,00H,00H,00H,00H,00H,00H,00H
db 00H,00H,00H,00H,00H,00H,00H,00H
db 00H,00H,00H,00H,00H,00H,00H,00H
db 00H,00H,00H,00H,00H,00H,00H,00H
;空格
db 00H,00H,00H,00H,00H,00H,00H,00H
db 00H,00H,00H,00H,00H,00H,00H,00H
db 00H,00H,00H,00H,00H,00H,00H,00H
db 00H,00H,00H,00H,00H,00H,00H,00H
*/
;四
DB  00H,00H,00H,04H,7FH,0FEH,44H,44H
DB  44H,44H,44H,44H,44H,44H,44H,44H
DB  44H,44H,44H,44H,48H,3CH,50H,04H
DB  40H,04H,7FH,0FCH,40H,04H,00H,00H
	
;川
DB  00H,04H,10H,04H,10H,84H,10H,84H
DB  10H,84H,10H,84H,10H,84H,10H,84H
DB  10H,84H,10H,84H,10H,84H,10H,84H
DB  10H,84H,20H,04H,40H,04H,00H,04H

;师
DB  08H,04H,0BH,0FEH,48H,20H,48H,20H
DB  48H,24H,49H,0FEH,49H,24H,49H,24H
DB  49H,24H,49H,24H,49H,24H,49H,24H
DB  11H,34H,11H,28H,20H,20H,40H,20H

;范
DB  08H,20H,08H,20H,7FH,0FCH,08H,20H
DB  20H,00H,13H,0F0H,4AH,10H,22H,10H
DB  22H,10H,0AH,50H,0F2H,20H,22H,00H
DB  22H,02H,22H,02H,21H,0FEH,20H,00H
;大
DB  01H,00H,01H,00H,01H,00H,01H,00H
DB  01H,04H,0FFH,0FEH,01H,00H,02H,80H
DB  02H,80H,02H,40H,04H,40H,04H,20H
DB  08H,10H,10H,0EH,60H,04H,00H,00H

;学
DB  22H,10H,11H,10H,11H,20H,00H,44H
DB  7FH,0FEH,40H,04H,80H,08H,1FH,0E0H
DB  00H,40H,01H,84H,0FFH,0FEH,01H,00H
DB  01H,00H,01H,00H,05H,00H,02H,00H

;!
DB  00H,00H,18H,00H,18H,00H,18H,00H
DB  18H,00H,18H,00H,18H,00H,18H,00H
DB  18H,00H,18H,00H,18H,00H,00H,00H
DB  18H,00H,18H,00H,00H,00H,00H,00H

;空格
db 00H,00H,00H,00H,00H,00H,00H,00H
db 00H,00H,00H,00H,00H,00H,00H,00H
db 00H,00H,00H,00H,00H,00H,00H,00H
db 00H,00H,00H,00H,00H,00H,00H,00H
end

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -