实验十三 16×16 LED点阵显示实验
实验目的
1、了解16×16矩阵LED显示的基本原理和功能。
2、掌握16×16矩阵LED和单片机的硬件接口和软件设计方法。
实验说明
汉字显示屏广泛应用与汽车报站器,广告屏等。实验介绍一种实用的汉字显示屏的制作,考虑到电路元件的易购性,采用了16×16的点阵模块;汉字显示的原理我们以UCDOS中文宋体字库为例,每一个字由16行16列的点阵组成显示。即国标汉字库中的每一个字均由256点阵来表示。我们可以把每一个点理解为一个像素,而把每一个字的字形理解为一幅图像。所以在这个汉字屏上不仅可以显示汉字,也可以显示在256像素范围内的任何图形。
我们以显示汉字“大”为例,来说明其扫描原理:在UCDOS中文宋体字库中,每一个字由16行16列的点阵组成显示。如果用8位的AT89C51单片机控制, 由于单片机的总线为8位,一个字需要拆分为2个部分。一般我们把它拆分为上部和下部,上部由816点阵组成, 下部也由816点阵组成。在本例中单片机首先显示的是左上角的第一列的上半部分,即第0列的p00---p07口。方向为p00到p07 ,显示汉字“大”时,p05点亮,由上往下排列,为p0.0 灭,p0.1 灭, p0.2 灭p0.3 灭, p0.4 灭, p0.5 亮,p0.6 灭,p0.7 灭。即二进制00000100,转换为16进制为 04h.。上半部第一列完成后,继续扫描下半部的第一列,为了接线的方便,我们仍设计成由上往下扫描,即从p27向p20方向扫描,从上图可以看到,这一列全部为不亮, 即为00000000,16进制则为00h。 然后单片机转向上半部第二列,仍为p05点亮,为00000100,即16进制04h。这一列完成后继续进行下半部分的扫描,p21点亮,为二进制00000010,即16进制02h. 依照这个方法,继续进行下面的扫描,一共扫描32个8位, 可以得出汉字“大”。
实验内容及步骤
1、单片机最小应用系统的 P0,P3口分别接16×16点阵单元的JD15,JD14,最小系统的P1.0,P1.1,P1.2,P1.3分别接点阵模块的A,B,C,D;J21的短路帽打在VCC处。
2、用串行数据通信线连接计算机与仿真器,把仿真器插到模块的锁紧插座中,请注意仿真器的方向:缺口朝上。
3、打开Keil uVision2仿真软件,首先建立本实验的项目文件,接着添加“1616 LED.ASM”源程序,进行编译,直到编译无误。
4、全速运行程序,点阵显示轮流显示八个汉字(杭州西湖,浙江天煌)。
5、也可以把源程序编译成可执行文件,把可执行文件用ISP烧录器烧录到89S52/89S51芯片中运行。(ISP烧录器的使用查看附录二)
源程序
/*****************************************************************
1、单片机最小应用系统的 P0,P3口分别接16×16点阵单元的JD15,JD14,
最小系统的P1.0,P1.1,P1.2,P1.3分别接点阵模块的A,B,C,D;
J21的短路帽打在VCC处。
2、用串行数据通信线连接计算机与仿真器,把仿真器插到模块的锁紧插座中
,请注意仿真器的方向:缺口朝上。
3、打开Keil uVision2仿真软件,首先建立本实验的项目文件,
接着添加“1616 LED.ASM”源程序,进行编译,直到编译无误。
4、全速运行程序,点阵显示轮流显示八个汉字(杭州西湖,浙江天煌)。
5、也可以把源程序编译成可执行文件,
把可执行文件用ISP烧录器烧录到89S52/89S51芯片中运行。
(ISP烧录器的使用查看附录二)
/****************************************************************/
ORG 00H
START: MOV A,#0FFH ;开机初始化,清除画面
MOV P0,A ;清除P0口
ANL P3,#00 ;清除P2口
MOV R2,#200
D1: MOV R3,#248 ;延时
DJNZ R3,$
DJNZ R2,D1
MOV 20H,#00H ;取码指针的初值
l1: MOV R1,#100 ;每个字的停留时间
L2: MOV R6,#16 ;每个字16个码
MOV R4,#00H ;扫描指针清零
MOV R0,20H ;取码指针存入R0
L3: MOV A,R4 ;扫描指针存入A
MOV P1,A ;开三极管扫描输出
INC R4 ;扫描下一个
MOV A,R0
MOV DPTR,#TABLE ;取数据代码上半部分
MOVC A,@A+DPTR
MOV P0,A ;查表送P0口
INC R0
MOV A,R0
MOV DPTR,#TABLE ;取数据代码下半部分
MOVC A,@A+DPTR
MOV P3,A ;查表送P2口
INC R0
MOV R3,#02
D2: MOV R5,#248
DJNZ R5,$
DJNZ R3,D2
MOV A,#00H
MOV P0,A
ANL P3,#00H
DJNZ R6,L3 ;16个码是否完成?
DJNZ R1,L2 ;每个字的停留时间是否到了?
MOV 20H,R0
CJNE R0,#0FFH,L1 ;8个字的256个码检测是否送完 ?
JMP START
TABLE:
DB 08H,20H,08H,0C0H,0BH,00H,0FFH,0FFH ;杭
DB 09H,01H,08H,82H,10H,04H,13H,0F8H
DB 92H,00H,72H,00H,12H,00H,17H,0FCH
DB 32H,02H,10H,02H,00H,0EH,00H,00H
DB 01H,00H,0EH,02H,00H,0CH,0FFH,0F0H ;州
DB 00H,00H,08H,00H,06H,00H,00H,00H
DB 7FH,0FCH,00H,00H,08H,00H,06H,00H
DB 00H,00H,0FFH,0FFH,00H,00H,00H,00H
DB 20H,00H,23H,0FFH,22H,02H,22H,0AH ;西
DB 22H,12H,3FH,0E2H,22H,02H,22H,02H
DB 22H,02H,3FH,0E2H,22H,12H,22H,12H
DB 22H,02H,67H,0FFH,22H,00H,00H,00H
DB 08H,20H,84H,3FH,46H,40H,68H,80H ;湖
DB 09H,0FEH,09H,04H,0FFH,04H,09H,04H
DB 0BH,0FDH,09H,02H,7FH,0FCH,44H,42H
DB 44H,41H,0FFH,0FEH,40H,00H,00H,00H
DB 08H,20H,44H,20H,26H,7FH,30H,80H ;浙
DB 09H,42H,08H,41H,0FFH,0FEH,08H,82H
DB 09H,04H,3FH,0F8H,22H,00H,22H,00H
DB 43H,0FFH,46H,00H,02H,00H,00H,00H
DB 08H,20H,84H,20H,46H,7FH,60H,80H ;江
DB 01H,04H,20H,04H,20H,04H,20H,04H
DB 20H,04H,3FH,0FCH,20H,04H,20H,04H
DB 60H,04H,20H,0CH,00H,04H,00H,00H
DB 02H,01H,42H,01H,42H,02H,42H,04H ;天
DB 42H,08H,42H,30H,42H,0C0H,7FH,00H
DB 42H,0C0H,42H,30H,42H,08H,42H,04H
DB 0C2H,02H,46H,03H,02H,02H,00H,00H
DB 01H,02H,0EH,04H,00H,08H,0FFH,0F0H ;煌
DB 08H,0AH,10H,86H,3EH,92H,2AH,92H
DB 6AH,92H,0AAH,0FEH,2AH,92H,2AH,0B2H
DB 7EH,92H,20H,86H,00H,02H,00H,00H
END