用汇编语言编写8X8LED点阵字符显示程序

本文详细介绍了如何使用51单片机实现1.8X8LED点阵的动态显示。通过控制P0口和P2口来分别控制共阴极和共阳极,利用动态刷新技术避免人眼察觉到闪烁。同时,解释了消隐技术的重要性,防止字符显示模糊。通过特定的数据编码和汇编代码,实现了字符的行刷新,并提供了具体的编码表和延时程序。此外,还提供了一个1秒的调试用程序。
摘要由CSDN通过智能技术生成

1.8X8 LED

LED 点阵是由发光二极管排列组成的显示器件,在我们日常生活的电器中随处可见。

 

点阵一次只能控制一行LED灯的亮灭,本文使用51单片机P0口控制共阴极,P2口控制共阳极

由于一次只能控制一行LED灯,所以得用动态刷新的方式,当刷新得时间间隔低于30ms,人眼就不能观察到间隔,只能捕捉到一幅画面。

 控制好刷新时间就可以显示字符

同时点阵可以分为行刷新和列刷新,本文涉及行刷新

 

 2.消隐

在点阵显示字符时,由于较高的刷新率,在前面的等还没有完全熄灭时后面的灯就点亮了,这样会让字符糊成一坨,难以辨认

 具体思路:

先送数据(点亮)——>后选通——>延时——>送数据(熄灭)——>延时——>送数据(点亮)  
 

   …………

    MOV P2,R4        
    LCALL TIME_25MS    ;调用延时程序
    MOV P0,#0FFH    ;给P0高电平,让所有灯熄灭
    MOV P2,#00H        ;给P2低电平,让所有灯熄灭

    …………

3.行列数据编码

想让点阵点亮最重要的是进行数据编码,对显示字符进行编码,高电平为1,低电平为0

由于A5开发板是动态刷新行显示,所以LED的每一行都要编码

LED点阵的行是共阳极,所以选通行要给高电平,给其他行低电平。

列是共阴极,给选通的列低电平,其他列高电平(下图由EXCEL制作)

 

TAP_ROW:DB 80H,40H,20H,10H,08H,04H,02H,01H	;行点亮编码
TAP_CUL:DB 0EBH,0EFH,000H,0EFH,0D5H,0D3H,0A6H,070H	;列点亮编码

 编码表是一 一对应关系,与实际接线顺序相关,具体现象需要调试

 4.汇编代码

 

ORG 0000H
	MOV R2,#00H			;查表计数累加
MAIN :
	MOV TMOD,#01H 	;使用计时方式1
	MOV DPTR,#TAP_ROW ;行编码查表
	MOV A,R2
	MOVC A,@A+DPTR
	MOV R4,A		  ;列编码查表
   	MOV DPTR,#TAP_CUL 
	MOV A,R2
	MOVC A,@A+DPTR
	MOV R5,A
	INC R2			;计数累加,用于判断LED点亮到第几行,完成第八行返回就第一行
	MOV P0,R5		;选通列的数据
	MOV P2,R4		;选通行的数据
	LCALL TIME_25MS	;调用延时程序
	MOV P0,#0FFH	;给P0高电平,让所有灯熄灭
	MOV P2,#00H		;给P2低电平,让所有灯熄灭
	CJNE R2,#09H,SUU ;判断 是否查表超过7次,小于或大于7次跳转
SUU:
	JC MAIN			 ;小于7次跳转初始化
	MOV R2,#00H		 ;大于7次清零R2
	LJMP MAIN		 ;跳转循环主函数
TIME_25MS:			 ;延时1MS程序
	CLR TF0
	MOV TH0,#0FCH
	MOV TL0,#018H
	SETB TR0
	JNB TF0,$
RET

TAP_ROW:DB 80H,40H,20H,10H,08H,04H,02H,01H	;行点亮编码
TAP_CUL:DB 0EBH,0EFH,000H,0EFH,0D5H,0D3H,0A6H,070H	;列点亮编码

END

1s调试用程序

TIME_1S: MOV      R7,#10    ;延时1S子程序,调试程序用
DL1:   MOV      R6,#200
DL2:   MOV      R5,#248
       DJNZ     R5,$
       DJNZ     R6,DL2
       DJNZ     R7,DL1
        RET

  • 12
    点赞
  • 85
    收藏
    觉得还不错? 一键收藏
  • 16
    评论
评论 16
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值