首页 > 其他分享 >实验十三 16×16 LED点阵显示实验

实验十三 16×16 LED点阵显示实验

时间:2023-05-17 23:34:51浏览次数:34  
标签:LED 16 00H DB MOV 02H 实验 20H

实验十三 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

原理图

标签:LED,16,00H,DB,MOV,02H,实验,20H
From: https://www.cnblogs.com/bujidao1128/p/17410669.html

相关文章

  • 5.16每日总结
    搭建python系统在桌面建立一个工作夹,然后每个章节都单独建立一个Python文件进行实验。比如可以新建一个pytips的目录,然后在该目录下,每个章节创建一个tips文件夹,里面创建对应的 .py 文件。......
  • 区块链实验-构建Merkle Tree
      主要内容:1.掌握MerkleTree的基本原理。2.编程实现MerkelTree的构建和数据完整性验证。实验条件:Win系统、Python实验内容:根据上图原理实现如下两个函数:#构建MerkleTreedefBuildTree(data):#验证数据完整性defValidate(hash,data):实现思......
  • 瑞熙贝通|实验室耗材管理系统产品功能详细介绍V3.0
    随着高校实验室突飞猛进的发展,实验室数量和实验室耗材不断增加,面对与日俱增的教学实训器材和实验室耗材,传统的实验室设备耗材管理已经无法满足目前的实验室资源的增长。实验室耗材具有数量大、种类多、规格不一、体积较小的特点,这些特点给耗材管理和登记带来了很大困难。目前,针对高......
  • MATLAB仿真16PSK与16QAM在AWGM信道下的性能 商品形式:程序
    MATLAB仿真16PSK与16QAM在AWGM信道下的性能商品形式:程序程序实现功能:1、16PSK数字调制信号在AWGN信道下的误码率随信噪比的变化曲线2、16QAM数字调制信号在AWGN信道下的误码率随信噪比的变化曲线ID:7580644055566293......
  • [COCI2015-2016#1] RELATIVNOST
    RELATIVNOSTの传送门线段树优化dp已经有很多题解讲的很好了。dp状态是一样的,但是一般的线段树优化dp空间要开$4n$,而且只利用到线段树的一点点功能(单点修改),所以可以先优化空间,从$4n$优化到$2n$。如下图所示。如果用线段树优化dp的方法会导致树不止$\logn+1$层......
  • linux-安装系统Ubuntu Server 14.04,16.04和17.10
    安装系统UbuntuServer14.04,16.04和17.10 本文以14.04位案例进行安装,其他版本相关问题会做注解1.选择要安装的系统语言本界面建议选择English,之后再选择中文安装对于14.x版本选择中文没有问题,但是对于16.04和17.10版本,该步骤选择中文后面会报错:2.选择安装过程中需要的语......
  • S3 MATLAB 图像处理综合实验平台 包括以下功能 Read image-
    S3MATLAB图像处理综合实验平台包括以下功能Readimage-open-gallery导入图片Resolutions图像模糊处理Imagehistogray灰度直方图显示,分水岭图像分割,gamma变换,直方图均衡化SpaticalFiltering图像添加噪声和滤波,以及图像锐化Frequencydomain一维和二维图像傅里叶变化Mo......
  • odoo16里面的常用方法
    一、全局搜索与显示defname_get(self):res=[]fororderinself:name=order.nameiforder.draw_number:name="%s-%s"%(name,order.draw_number)res+=[(order.id,name)]......
  • SSO2.0 6-20230516
                 ......
  • 关于CentOS8出现“Error: Failed to download metadata for repo 'appstream': Cannot
    原因因为centOS8于2021年12月31日停止了源的服务,而现在时间是2023年,所以之前的方法都不行的原因所在(本质是源的问题)。 解决方法 cd/etc/yum.repos.dsed-i's/mirrorlist/#mirrorlist/g'/etc/yumrepos.d/CentOS-*sed-i's|#baseurl=http://mirror.centos.o......