一、实验目的和要求

  了解LED点阵显示的基本原理和实现方法。掌握点阵汉字库的编码和从标准字库中提取汉字编码的方法。

二、实验设备

  单片机测控实验系统
  LED点阵显示器实验模块
  Keil开发环境
  STC-ISP程序下载工具

三、实验内容

  了解16*16点阵电路的原理。编写汇编语言程序,编写一行汉字字符(至少三个字)的显示程序,并且能够从左到右(或从右到左)循环显示。

四、实验步骤

  1. 掌握点阵式LED显示屏的控制方法;
  2. 使用MCS-51汇编语言,使用LED点阵显示器显示出正确的汉字字符及动态效果;
  3. 将编译后的程序下载到51单片机,观察LED显示屏的显示结果。

五、实验原理

  高亮度LED发光管构成点阵,通过编程控制可以显示中英文字符、图形及视频动态图形。所显示字符的点阵数据可以自行编写(即直接点阵画图),也可从标准字库(如ASC16、HZ16)中提取。后者需要正确掌握字库的编码方法和字符定位的计算。

实验用的LED点阵显示屏为16*16点阵。
行和列分别使用两个移位寄存器作为输出。
当移位寄存器输出的第i行为0,第j列为1时点亮点(i,j)。
为了能够显示出一个点阵字型,需要进行循环扫描,也就是每一次只点亮一行,然后在列上输出该列对应的16个点阵值。
输出一行后暂停一段时间,输出下一行。为了达到较好的显示效果,整屏总的扫描时间不高于40ms。
上述过程中行列可以互换。
实验中使用的移位寄存器是74HC595,它是一个同时具有串行移位和输出锁存驱动功能的器件。
74HC595是具有8位移位寄存器和一个存储器,三态输出功能。 移位寄存器和存储器是分别的时钟。
数据在SRCK(移位寄存器时钟输入)的上升沿输入到移位寄存器中,在RCK(存储器时钟输入)的上升沿输入到存储寄存器中去。
移位寄存器有一个串行移位输入(行Dx(P00)、列Dy(P03)),和一个串行输出(QH),和一个异步的低电平复位,存储寄存器有一个并行8位的,具备三态的总线输出,当使能 (P02和P07为低电平)时,存储寄存器的数据输出到总线。
在控制74HC595时,首先将数据放到串行输入的SI端,然后在串行时钟SRCK上产生一个脉冲,即可输出一个bit,重复以上步骤16次,输出所有列值。
然后给存储器时钟RCK一个脉冲,将串行数据锁存起来。将使能端 输出低电平,驱动到LED点阵上。
行的输出每次只移位一次,并重新锁存即可。
其他信息见给定的参考资料。

六、实验代码

ORG 0000H
AJMP START
ORG 0030H
START:
D_X EQU P0.0 
CK_X EQU P0.1
CK_XL EQU P0.2
D_Y EQU P0.3
EN_Y EQU P0.4
CK_Y EQU P0.5 
CK_YL EQU P0.6 
EN_X EQU P0.7
COUNT EQU R0
COUNT_X EQU R3
COUNT_Y EQU R4

MOV R0,#0 ;完成第R0/2屏扫描
MOV R1,#8
MOV R2,#16
MOV COUNT_X,#0
MOV COUNT_Y,#0
MOV R5,#32 ;一屏16列,总共扫描48列,需要扫48-16=32屏
CLR EN_X
CLR EN_Y

;初始化
MAIN:
CLR A
MOV COUNT_Y,A ;COUNT_Y=0
CLR A
MOV A,COUNT
MOV COUNT_X,A ;COUNT_X=COUNT

LOOP:
ACALL DISPLAY_Y
ACALL DISPLAY_X
ACALL DELAY 
DJNZ R2,LOOP

;长延迟
MOV R1,#0FFH
MOV R7,#2FH
L_DELAY:
ACALL DELAY
DJNZ R1,L_DELAY
DJNZ R7,L_DELAY

MOV R1,#8
INC COUNT
INC COUNT ;扫一屏,COUNT加2

DJNZ R5,MAIN
MOV R5,#0FFH
AJMP START

DISPLAY_Y:
MOV DPTR,#TAB_Y
CLR A
MOV A,COUNT_Y
MOVC A,@A+DPTR
MOV R1,#8

LP_Y1:
RLC A 
CLR CK_Y 
MOV D_Y,C 
SETB CK_Y
DJNZ R1,LP_Y1

MOV R1,#8
INC COUNT_Y

CLR A
MOV A,COUNT_Y
MOVC A,@A+DPTR

LP_Y2:
RLC A 
CLR CK_Y 
MOV D_Y,C 
SETB CK_Y
DJNZ R1,LP_Y2

MOV R1,#8
INC COUNT_Y

CLR CK_YL 
NOP
SETB CK_YL

CLR EN_Y
CLR CK_YL
RET

DISPLAY_X:
MOV DPTR,#TAB_X
CLR A
MOV A,COUNT_X
MOVC A,@A+DPTR
MOV R1,#8

LP_X1:
RLC A 
CLR CK_X 
MOV D_X,C 
SETB CK_X
DJNZ R1,LP_X1

MOV R1,#8
INC COUNT_X
CLR A
MOV A,COUNT_X
MOVC A,@A+DPTR

LP_X2:
RLC A 
CLR CK_X 
MOV D_X,C 
SETB CK_X
DJNZ R1,LP_X2

MOV R1,#8
INC COUNT_X

CLR CK_XL 
NOP
SETB CK_XL

CLR EN_X
CLR CK_XL
RET

;延迟函数
DELAY:
MOV R6,#0FH
DJNZ R6,$
RET

TAB_X:
;===========================================================================
;我(0) 爱(1) 你(2)

DB 04H,00H,24H,10H,24H,12H,24H,21H,7FH,0FEH,0C4H,40H,44H,82H,04H,02H;
DB 04H,04H,0FFH,0C8H,04H,30H,44H,28H,34H,44H,05H,82H,04H,1FH,00H,00H ;"我",0

DB 01H,00H,26H,82H,34H,84H,2CH,89H,24H,91H,24H,0E1H,37H,0B2H,4CH,0AAH;
DB 44H,0A4H,44H,0A4H,4CH,0AAH,74H,0B2H,0C4H,81H,45H,01H,06H,01H,00H,00H ;"爱",1

DB 00H,80H,01H,00H,06H,00H,1FH,0FFH,0E0H,00H,02H,08H,04H,30H,18H,0C0H;
DB F0H,02H,10H,01H,13H,0FEH,10H,00H,10H,80H,14H,60H,18H,18H,00H,00H ;"你",2
;===========================================================================
TAB_Y:
;===========================================================================
DB ~80H,0FFH,~40H,0FFH,~20H,0FFH,~10H,0FFH,~08H,0FFH,~04H,0FFH,~02H,0FFH,~01H,0FFH
DB 0FFH,~80H,0FFH,~40H,0FFH,~20H,0FFH,~10H,0FFH,~08H,0FFH,~04H,0FFH,~02H,0FFH,~01H
;===========================================================================
END

七、附录

实验电路原理图:点击查看

单片机与控制实验(2)——LED点阵显示屏的更多相关文章

  1. 单片机与控制实验(5)——重量测量并在LCD12864显示

    一.实验目的和要求 掌握点阵式液晶显示屏的原理和控制方法,掌握点阵字符的显示方法.掌握模拟/数字(A/D)转换方式,进一步掌握使用C51语言编写程序的方法,使用C51语言编写实现重量测量的功能. 二. ...

  2. 「雕爷学编程」Arduino动手做(22)——8X8 LED点阵MAX7219屏

    37款传感器与模块的提法,在网络上广泛流传,其实Arduino能够兼容的传感器模块肯定是不止37种的.鉴于本人手头积累了一些传感器和模块,依照实践出真知(一定要动手做)的理念,以学习和交流为目的,这里 ...

  3. 基于Proteus仿真的Arduino学习(2)——LED点阵探究A(LED点阵基础)

    一.前言: 随着LED的普及,以LED点阵为基础的显示设置层出不穷.例如,公交车的线路提示牌.高速公路的信息提示牌,安装在大楼上的广告屏幕等.下面,我们将由简单到复杂地探索各种LED点阵的使用方法,同 ...

  4. 51单片机学习笔记(清翔版)(13)——LED点阵、74HC595

    如图3,点阵屏分单色和彩色,点阵屏是由许多点组成的,在一个点上,只有一颗一种颜色的灯珠,这就是单色点阵屏,彩色的在一个点上有三颗灯珠,分别是RGB三原色. 图4你可能没看出来,那么大块黄色的就是点阵屏 ...

  5. BeagleBone Black板第四课:简单LED控制实验

    BBB板第四课:简单LED控制实验 学习BBB板的终于目的是想像单片机一样做控制,但控制思路全然不一样(Linux下控制硬件设备实质就是对相关设备虚拟文件的读写).研究了几天头都大了还是没有进展,网上 ...

  6. LED点阵书写显示

    LED点阵书写显示屏   摘要:随着时代的发展,数字电子技术已经普及到我们生活,工作,科研,各个领域,而LED显示以其组构方式灵活.显示稳定.功耗低.寿命长.技术成熟.成本低廉等特点在车站.证券所.运 ...

  7. LED点阵显示名字

    学习了一周的单片机,然后中途有事打断了两周,现在温习一下之前学的东西,用“普中科技单片机”上的LED点阵显示自己的名字. P1接J19(绿).P2接J20(红),P0接J12(数码管段选):5V电压: ...

  8. CAN-bus接口控制实验

    CAN-bus接口控制实验 2016-04-12 20:38:41来源: eefocus 关键字:CAN  bus  接口控制   收藏 评论(0) 分享到 微博 QQ 微信 LinkedIn 一.实 ...

  9. PIC12F629帮我用C语言写个程序,控制三个LED亮灭

    http://power.baidu.com/question/240873584599025684.html?entry=browse_difficult PIC12F629帮我用C语言写个程序,控 ...

随机推荐

  1. Delphi XE7中各种字符串与字符类型的内存结构

    1. ShortString 类型 定义:type ShortString = string[255]; 内存结构与大小:ShortString 是每个字符为单字节的字符串.ShortString 的 ...

  2. noi前机房日常

    2015/6/16 上午a了一道省选分组赛day1t2,并在cf100553H双倍经验,好评 bzoj3152(ctsc2013)贪心,用priority_queue要清空 bx2k上午交了几十题,他 ...

  3. BZOJ 1236: SPOJ1433 KPSUM

    Description 用+-号连接1-n所有数字的数位,问结果是多少. Sol 数位DP. \(f[i][j][0/1][0/1]\) 表示长度为 \(i\) 的数字,开头数字是 \(j\) ,是否 ...

  4. 整理一下Entity Framework的查询 [转]

    Entity Framework是个好东西,虽然没有Hibernate功能强大,但使用更简便.今天整理一下常见SQL如何用EF来表达,Func形式和Linq形式都会列出来(本人更喜欢Func形式). ...

  5. Qt json 数据处理

    用到的头文件 #include <QJsonArray> #include <QJsonDocument> #include <QJsonObject> json解 ...

  6. GitHub for Windows呆瓜级操作1

    如何安装.注册.创建仓库等操作请参考http://www.cnblogs.com/foreveryt/p/4077380.html 1.点击右上角+号创建本地新仓库LHJ.点击Create repos ...

  7. Android-RelativeLayout(相对布局)、LinearLayout(线性布局)

    RelativeLayout(相对布局):按照各子元素之间的位置关系完成布局. 定位:android:layout_above="@id/xxx" --将控件置于给定ID控件之上 ...

  8. history命令详解

    Linux下history命令用法 ^_^在项目中希望调用history命令来获取用户的历史记录,方便分析,可是我们平时所见到的history结果是下面这样: # history | head -10 ...

  9. js获取网页中宽高度集合

    document.body.clientWidth ==> BODY对象宽度 document.body.clientHeight ==> BODY对象高度 document.docume ...

  10. zsh 自动补全导致命令显示重复

    关键字:autocomplete, zsh, backspace, securecrt, xterm, linux console 举个例子: 输入命令ls  然后按TAB补全试试,发现竟然是这样的 ...