吉林大学单片机实验课实验四——LED点阵显示屏

  实验要求再16x16点阵上循环显示至少三个汉字,这里并没有规定循环方式,字符串可以在尾部到达边界时恢复原状再继续移动,也可以在头部超出边界后,超出部分从对边显示出来,本程序采用第二种循环方式,个人认为看起来比较平滑, 也可以应用在实际工作中。

  循环显示的主要思想是一个虚拟的视窗,可以把所有要显示的字符看作一个16xN的数组,而这个虚拟的视窗大小为16x16(即点阵的大小,视窗从数组的左端开始向右滑动,每次把视窗内的数位输出到点阵中,若视窗内的数位超出了数组的右端,则超出的数位从左端开始计算。

如图所示,这样就可以实现汉字的循环显示

ORG 0000H
	LJMP	START
ORG	000BH
	LJMP T0IN
ORG 0040H
	CHINA:
	DB 00H,00H,00H,00H,00H,00H
	DB 00H,00H,00H,00H,00H,00H
	DB 08H,08H,10H,0a0H,02H,20H
	DB 04H,08H,08H,0a0H,04H,20H
	DB 7fH,0c8H,00H,0a0H,0bH,0feH
	DB 20H,88H,3bH,0f8H,10H,20H
	DB 11H,28H,08H,0a0H,29H,0fcH
	DB 0aH,28H,08H,0a0H,48H,20H
	DB 04H,28H,0bH,0f8H,08H,20H
	DB 0aH,28H,08H,0a0H,0bH,0feH
	DB 11H,08H,08H,0a0H,08H,22H
	DB 20H,0a8H,14H,0a2H,08H,2aH
	DB 40H,58H,23H,0fcH,08H,26H
	DB 00H,08H,00H,00H,08H,22H
	DB 00H,00H,00H,00H,08H,20H
	DB 00H,00H,00H,00H,00H,00H
	START:
	ROWBLN EQU 48
	ROWLEN EQU 6
	DISLEN EQU 16
	TIMLEN EQU 2
	X_DAT EQU P0.0
	Y_DAT EQU P0.3
	X_DCLK EQU P0.1
	Y_DCLK EQU P0.5
	X_BCLK EQU P0.2
	Y_BCLK EQU P0.6
	X_EBLE EQU P0.7
	Y_EBLE EQU P0.4
	
	MOV	SP,#30H
	MOV	TMOD,#01H
	MOV	IE,#82H
	MOV	IP,#02H
	MOV	TH0,#3CH
	MOV	TL0,#0B0H
	MOV	TCON,#10H
	
	MOV R0,#00H//SHIFT
	MOV R1,#0FH//DISOFFSET
	MOV R2,#00H//ROW
	MOV R4,#TIMLEN//TIMER
	
	MOV DPTR,#CHINA
	FLUSH:
	CLR X_BCLK
	CLR Y_BCLK
	CLR X_EBLE
	CLR Y_EBLE
	
	OUTPUT:
	CLR X_DCLK
	CLR Y_DCLK
	MOV A,R2
	MOV B,#ROWLEN
	MUL AB
	MOV R3,A
	
	MOV A,R0
	ADD A,R1
	MOV B,#ROWBLN
	DIV AB
	MOV A,B
	MOV B,#8
	DIV AB
	ADD A,R3
	MOVC A,@A+DPTR
	
	MOV R3,B
	CJNE R3,#00H,FINDBIT
	JMP COLSET
	FINDBIT:
	RL A
	DJNZ R3,FINDBIT
	COLSET:
	RLC A
	MOV X_DAT,C
	
	CLR C
	MOV A,#15
	SUBB A,R2
	CJNE A,01H,ROW_OFF
	CLR Y_DAT
	JMP UPJMP
	ROW_OFF:
	SETB Y_DAT
	UPJMP:
	SETB X_DCLK
	SETB Y_DCLK
	
	DEC R1
	CJNE R1,#0FFH,OUTPUT
	SETB X_BCLK
	SETB Y_BCLK
	SETB X_EBLE
	SETB Y_EBLE
	
	MOV R1,#0FH
	INC R2
	CJNE R2,#10H,FLUSH
	MOV R2,#00H
	JMP FLUSH
	
	T0IN:
	MOV TCON,#00H
	
	DJNZ R4,T0END
	MOV R4,#TIMLEN
	INC R0
	CJNE R0,#ROWBLN,T0END
	MOV R0,#00H
	
	T0END:
	MOV	TH0,#3CH
	MOV	TL0,#0B0H
	MOV	TCON,#10H
	RETI
	END

隔了一个假期,自己的代码也有点生疏了,有问题的欢迎留言(转载请注明)

  • 4
    点赞
  • 56
    收藏
    觉得还不错? 一键收藏
  • 8
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 8
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值