led点阵屏常见问题及解决办法

led点阵屏常见问题及解决办法,第1张

要用8×8的LED点阵显示数字0~9,先用proteus 画出仿真图,然后用取模软件画出数字8×8点阵图形,并按行取模,每个数字共8个字节数据,显示时取出字模并逐行扫描就行了。

以下是16x16的点阵LED电子图文显示屏的源程序采用汇编语言编写(也可采用C语言编写,C程序KeiluVision2 V230环境下调试通过。

以下为用汇编语言编写的字符显示控制程序:

; 单个16x16的点阵电子屏字符显示器

; ATA89C52 12MHz晶振

; 2004211 LRM

;显示字用查表法,不占用内存,字符用16x16共阳LED点阵,

;效果:向上滚动显示5个字,再重复循环。

;R1:查表偏址寄存器,B:查表首址,R2:扫描地址(从00~0FH)。

;R3:滚动显示时控制移动速度,单字显示可控制静止显示的时间。

;;

;中断入口程序 ;

;;

ORG 0000H

LJMP START

ORG 0003H

RETI

ORG 000BH

LJMP INTTO

ORG 0013H

ERTI

ORG 001BH

ERTI

ORG 0023H

RETI

ORG 002BH

RETI

;;

;初始化程序;

;;

;;

; 主程序 ;

;;

START: MOV 20H,#00H ;清零标志,00H为第16行开始扫描标志,01为1帧

;扫描结束标志

MOV A,#0FFH ;端口初始化

MOV P1,A

MOV P1,A

MOV P3,A

MOV P0,A

CLR P16 ;串行寄存器输入打入输出控制位

MOV TMOD,#01H ;使用T0做16位定时器,行扫描用。

MOV TH0,#0FCH ;1ms初值(12MHz)

MOV TL0,#18H

MOV SCON,#00H ;串口0方式传送显示字节

MOV IE,#82H ;T0中断允许,总中断允许

MOV SP,#70H

MAIN: LCALL DISI ;显示准备,黑屏,15s

MOV DPTR,#TAB

LCALL MOVDISP ;向上滚动显示一页(8个字)

INC DPH

LCALL MOVDISP ;向上滚动显示一页(8个字)

INC DPH

LACLL MOVDISP ;向上滚动显示一页(8个字)

AJMP MAIN

;;

; 多字滚动显示程序 ;

;;

;每次8个字,入口时定义好DPTR值

MOVDISP: MOV B,#00H ;向上移动显示,查表偏值暂存(从00开始)

DISLOOP: MOV R3,#07H ;移动速度

DISMOV: MOV R2,00H ;第0行开始

MOV R1,B

SETB TR0 ;开扫描(每次一帧)

WAITMOV: JBC 01H,DISMOV1 ;标志为1扫描一帧结束(16ms为1帧,每行1ms)

AJMP WAITMOV

DISMOV1: DJNZ R3,DISMOV ;1帧重复显示(控制移动速度)

INC B ;显示字的下一行(每行2字节)

INC B

MOV A,R1 ;R1为0,8个字显示完

JZ MOVOUT

AJMP DISLOOP

MOVOUT: RET ;移动先是结束

;;

; 单字显示程序 ;

;;

;显示表中某个字;

;;

DIS1: MOV R3,#5AH ;静止显示时间控制(16ms#=16s)

DIS11: MOV R2,#00H ;一帧扫描初始值(行地址从00~0FH)

MOV DPTR,#TAB ;取表首址

MOV R1,#00H ;查表偏址(显示第一个字)

SETB TR0 ;开扫描(每次一帧)

WAIT11: JBC 01H,DIS111 ;为1,扫描一帧结束

AJMP WAIT11

DIS111: DJNZ R3,DIS11

RET

;;

; 扫描程序 ;

;;

;1ms刷新一次,每行显示1s

INTT0: PUSH ACC

MOV TH0,#0FCH ;1ms初值重装

MOV TL0,#18H

JBC 00H,GOEND ;16行扫描标志为1,结束

INC R1 ;取行右边字节偏址

MOV A,R1

MOVC A,@A+DPTR ;查表

MOV SBUF,A ;串口0方式发送

WAIT: JBC TI,GO ;等待发送完毕

AJMP WAIT1

GO: DEC R1 ;取行左边字节偏址

MOV A,R1

MOVC A,@A+DPTR

MOV SBUF,A

WAIT1: JBC T1,GO1

AJMP WAIT1

GO1: SETB P17 ;关行显示,准备刷新

NOP ;串口寄存器数据稳定

SETB P16 ;产生上升沿,行数据打入输出端

NOP

NOP

CLR P16 ;恢复低电平

MOV A,R2 ;修改显示行地址

ORL A,#0F0H ;修改显示行地址

MOV R2,A ;修改显示行地址

MOV A,P1 ;修改显示行地址

ORL A,#0FH ;修改显示行地址

ANL A,R2 ;修改显示行地址

MOV P1,A ;修改完成

CLR P17 ;开行显示

INC R2 ;下一行扫描地址值

INC R1

INC R1 ;下一行数据地址

MOV A,R2

ANL A,#0FH

JNZ GO2

SETB 00H ;R2为01H,现为末行扫描,置标志

GO2: POP ACC

RETI

GOEND: CLR TR0 ;一帧扫描完毕,关扫描

SETB 01H ;一帧扫描完毕,置结束标志

POP ACC

RETI ;退出

;;

; 扫描文字表 ;

;;

TAB:DB 0FFH,0FFH,0FFH,0FFH,0FFH,0FFH,0FFH,0FFH,0FFH,0FFH,0FFH,0FFH,0FFH,00FFH,0FFH,0FFH ;黑屏

DB

0F9H,0BFH,0C7H,0AFH,0F7H,0B7H,0F7H,0B7H,0F7H,0BFH,000H,001H,0F7H,0BFH,0F7H,0B7H ;我

DB

0F1H,0D7H,0C7H,0CFH,037H,0DFH,0F7H,0AFH,0F6H,06DH,0F7H,0F5H,0D7H,0F9H,0EFH,0FDH ;

DB

0FFH,007H,0C0H,06FH,0EDH,0EFH,0F6H,0DFH,0C0H,001H,0DDH,0FDH,0BDH,0FFH,0C0H,003H ;爱

DB

0FBH,0FFH,0F8H,00FH,0F3H,0DFH,0F4H,0BFH,0EFH,03FH,09CH,0CFH,073H,0F1H,0CFH,0FBH ;

DB

0F7H,0DFH,0F9H,0CFH,0FBH,0BFH,0C0H,007H,0DEH,0F7H,0C0H,007H,0DEH,0F7H,0DEH,0F7H ;单

DB

0C0H,007H,0DEH,0F7H,0FEH,0FFH,000H,001H,0FEH,0FFH,0FEH,0FFH,0FEH,0FFH,0FEH,0FFH

DB

0FFH,0BFH,0EFH,0BFH,0EFH,0BFH,0EFH,0BBH,0E0H,001H,0EFH,0FFH,0EFH,0FFH,0EFH,0FFH ;片

DB

0E0H,00FH,0EFH,0EFH,0EFH,0EFH,0EFH,0EFH,0DFH,0EFH,0DFH,0EFH,0BFH,0EFH,07FH,0FFH

DB

0EFH,0FFH,0EFH,007H,0EFH,077H,001H,077H,0EFH,077H,0EFH,077H,0C7H,077H,0CBH,077H ;机

DB

0ABH,077H,0AFH,077H,06EH,0F7H,0EEH,0F5H,0EDH,0F5H,0EDH,0F5H,0EBH,0F9H,0EFH,0FFH ;

DB

0FFH,0FFH,0FFH,0FFH,0FFH,0FFH,0FFH,0FFH,0FFH,0FFH,0FFH,0FFH,0FFH,0FFH,0FFH,0FFH ;黑屏

DB

0FFH,0FFH,0FFH,0FFH,0FFH,0FFH,0FFH,0FFH,0FFH,0FFH,0FFH,0FFH,0FFH,0FFH,0FFH,0FFH ;

END

首先你要确定点阵的大小,黑白(单色)点阵一个 点占一位二进制数据,128128点占16128个字节,即2K。用专门的软件将图形转化成十六进制数据,存储于表格中,显示时再一个一个读出,进行显示。

点阵显示屏有的是一个点一个点写入,有的是一行一行(或半行)写入,程序当然是不一样的。

以上就是关于led点阵屏常见问题及解决办法全部的内容,包括:led点阵屏常见问题及解决办法、基于单片机的LED点阵显示设计、怎么利用8×8led点阵屏循环显示数字0-9编写程序并用Proteus仿真验证等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!

欢迎分享,转载请注明来源:内存溢出

原文地址:https://54852.com/zz/9761220.html

(0)
打赏 微信扫一扫微信扫一扫 支付宝扫一扫支付宝扫一扫
上一篇 2023-05-01
下一篇2023-05-01

发表评论

登录后才能评论

评论列表(0条)

    保存