闪烁流动灯式电子门标设计
1引言
1.1课题设计提出的背景
现代社会已经进入了信息时代,信息的传播占有越来越重要的地位。同时,人们对于视觉媒体的要求也越来越高,要求传播媒体以及传播的信息能够做到直观、迅速、生动、醒目的效果。在车站、机场、商场、证券交易所以及其它一些公共场所,经常需要发布变化的实时信息或进行广告宣传,传统的黑板和纸张等作为媒介的手段不能满足其多变性和实时性的要求。而LED电子显示屏以其修改方便、实时显示、美观整洁等特点应运而生。
LED电子显示屏,作为新的媒体,运动的发光图文更容易吸引大众的注意,信息量大,随时更新,富有动感,适合远距离观看,有着非常好的广告和告示的效果。它与广告牌、灯箱、霓虹灯等传统宣传媒体比较,具有无可比拟的优势。随着LED材料技术和工艺的提升,LED电子显示屏以突出的优势成为平板显示的主流产品之一,并在社会经济的许多领域得到了广泛的应用,比如:证券交易、金融信息的显示;机场航班动态信息的显示;港口、车站旅客引导信息的显示;服务领域的业务宣传及信息的显示等等。
1.2课题设计的任务
本设计,即闪烁流动灯式电子门标设计,由LED电子显示屏输出多个汉字,采用单片机控制实现汉字的动态显示,以达到宣传和告示的作用。
2 LED电子显示屏简要介绍
2.1 LED电子显示屏概况
1
河北经贸大学经济管理学院毕业论文
LED电子显示屏是随着计算机及相关的微电子技术、光电子技术的迅猛发展而形成的一种高科技产品。它的发光部分是由发光二极管拼装组成的,具有耗电量少、亮度高、工作电压低、驱动简单、寿命长、性能稳定等优点。由于采用单元模块化结构,显示屏的大小可按用户需求灵活拼制。LED电子显示屏以其变化丰富的色彩图案,实时动态的显示模式,完美的多媒体效果和强大的视觉冲击力,将文字、图形、动画及视频等多种信息显示出来,成为信息传播时代公众理想的信息显示媒体。
早在1907年开始,人们就发现某些半导体材料制成的二极管在正向导通时有发光的物理现象,但生产出有一定发光频率的红光LED已是1969年了。到今天,LED已生产30多年了,各种类型的LED、利用LED作二次开发的产品及与LED配套的产品发展迅速,新产品不断上市,已经发展成不少新型产业了。
从20世纪70年代起,已有人开始用LED做为发光像素研制LED显示器。随着微机技术的发展和LED器件的成熟,LED显示屏也得到迅猛的发展。目前已研制出多种规格的LED屏,从色彩上讲,有单色、多色、全色显示屏,从显示尺寸上讲,LED屏现已做到了数百平方米,从显示器件上讲,LED显示屏可分为:LED数码显示屏,显示器件为七段数码管,适用于制作时钟屏、利率屏等显示数字的电子显示屏;LED点阵图文显示屏,显示器件是由许多均匀排列的发光二极管组成的点阵显示模块,适用于播放文字、图像信息;LED视频显示屏,显示器件是由许多发光二极管组成,可以显示视频、动画等各种视频文件。现已形成一个新兴的高科技产业。蓝色、纯绿色超高亮发光二极管相继研制成功并已商品化,用LED制成室外“大彩电”已成为现实,它标志着LED显示技术达到了一个新的高度。
2.2发光二极管介绍
LED(Light Emitting Diode),发光二极管,是一种固态的半导体器件,它可以直接把电能转化为光能。LED的核心部分是一个半导体的晶片,晶片的一端附在一个支架上,一端是负极,另一端连接电源的正极,使整个晶片被环氧树脂封装起来。半导体晶片由两部分组成,一部分是
2
河北经贸大学经济管理学院毕业论文
P型半导体,在它里面空穴占主导地位,另一部分是N型半导体,大部分是电子。这两种半导体连接起来的时候,它们之间就形成了一个“PN结”,当电流通过导线作用于这个晶片时,电子就会被推向P区,在P区里电子和空穴复合,然后就会以光子的形式发出能量,这就是LED发光的原理。发光二极管通常用元素周期表中Ⅲ、Ⅴ族元素的化合物,如砷化镓、磷化镓等所制成的,其光的波长也就是光的颜色是由形成PN结的材料决定的。
发光二极管常用来作为显示器件,除单个使用外,它也常作成七段式或矩阵式器件,工作电流一般为几个毫安至十几毫安之间。实践证明,LED的发光强度仅在一定范围内与正向电流成正比,当正向电流大于20mA时,亮度的增强已无法用肉眼分辨了,实际亮度已经没有增加了。因此,LED的压降一般为1.5V~2.0 V,工作电流一般选在10mA~20mA较为合理。发光二极管的主要特性、代表符号及实物图如下所示。
表1 发光二极管的主要特性
颜色 红外 红 鲜红 黄 绿 波长(nm) 900 655 635 583 565 基本材料 砷化镓 磷砷化镓 磷砷化镓 磷砷化镓 磷化镓 正向电压(10mA时)V 1.3~1.5 1.6~1.8 2.0~2.2 2.0~2.2 2.2~2.4
图1 发光二极管代表符号 图2 发光二极管实物图
3
河北经贸大学经济管理学院毕业论文
3点阵型LED显示屏显示原理分析
把多个发光二极管连接到一起有两种连接方式。把这些发光二极管的阳极接到一起作为一个引脚,这种形式称为共阳型,相反,把它们的阴极接到一起则为共阴型。对于点阵型LED显示也可以采用共阴极型或共阳极型,本设计采用共阳极型,如图3所示。
图3 4*4共阳极LED点阵
当行上有一正选通信号时,列选端四位数据为0的发光二极管便导通点亮。这样只需要将图形或文字的显示编码作为列信号跟对应的行信号进行逐次扫描,就可以逐行点亮点阵。只要扫描频率大于24Hz,由于扫描时间很快,人眼的视觉有暂留效应,就可以看到显示的是完整的图形或文字了。
4课题设计实现方案的论证
从理论上说,不论显示图形还是文字,只要控制与组成这些图形或文字的各个点所在的位置相对应的LED器件发光,就可以得到我们想要的显示结果,这种同时控制各个发光点亮灭的方法称为静态驱动显示方式。将每一个LED发光二极管的一端接至单片机的一个I/O口,另一
4
河北经贸大学经济管理学院毕业论文
端通过电阻接电源。这种方法可以直接驱动LED,原理简单,驱动能力强,LED的亮度也可以通过限流电阻调节,非常方便,但是此种方法太浪费单片机的I/O口了,只适用于很小的系统。
图4 静态驱动显示方式
但是,16*16的点阵共有256个发光二极管,显然单片机没有这么多的端口,若我们采用锁存器来扩展端口,按8位的锁存器来计算,一个16*16的点阵需要32个锁存器。这个数字是很庞大的,在实际应用中的显示屏往往要大得多,这样在锁存器上花的成本将是一个很庞大的数字。因此在实际应用中,显示屏几乎都不采用这种设计,而是采用动态扫描的显示方法。
采用动态扫描方式,通过三极管驱动连接在一起的LED发光管的一端(共阴或共阳端),LED发光管的另一脚接通用的I/O口,控制其亮灭。该方法能驱动较多的LED,控制方式较灵活,而且节省单片机的资源。
图5 动态扫描显示方式
简单说,动态扫描就是逐行轮流点亮,这样扫描驱动电路就可以实现多行(比如16行)的同名列共用一套列驱动器。以16*16点阵为例,把所有同一行发光管的阳极连在一起,把所有同一列发光管的阴极连在一起(共阳极的接法),先送出对应第一行发光管亮灭的数据并锁存,然后选通第一行使其点亮一定的时间,然后熄灭;再送出第二行的数据并锁存,然后选通第二行使其点亮相同的时间,然后熄灭;以此类推,
5
河北经贸大学经济管理学院毕业论文
第十六行之后又重新点亮第一行,这样反复轮回。当这样轮回的速度足够快(每秒24次以上)时,由于人眼的视觉暂留现象,我们就能看到显示屏上稳定的图形或文字了。
采用动态扫描方式进行显示时,每一行有一个行驱动器,各行的同名列共用一个列驱动器。显示数据通常存储在单片机的存储器上,按8位一个字节的形式顺序排放。显示时,要把一行中各列的数据都传送到相应的列驱动器上去,这就存在一个显示数据传输的问题。从控制电路到列驱动器的数据传输可以采用并行方式或串行方式。采用并行方式时,16*16的LED点阵有2列8*8的点阵,需要16个列数据输入口,而一个AT89C51只有32个I/O接口,还要同时驱动行数据,这根本不够用,并且从控制电路到列驱动器的线路数量大,相应的硬件数目多。当列数很多时,并行传输的方案是不可取的。
本设计采用串行的数据传输方式、动态扫描技术,利用AT89C51单片机进行控制,结合简单的外围电路来完成电子门标的LED显示。
5汉字的点阵显示原理及字库代码获取方法
以UCDOS中文宋体字库为例,每一个汉字由16行16列的点阵组成显示,即国标汉字库中的每一个汉字均由256点阵来表示。我们可以把每一个点理解为一个像素,而把每一个汉字的字形理解为一幅图像。事实上这个汉字显示屏不仅可以显示汉字,也可以显示256像素范围内的任何图形。用8位的AT89C51单片机控制,由于单片机总线为8位,所以一个汉字需要拆分成2个部分。以“大”字为例,见图6。为了弄清楚汉字的点阵组成规律,首先通过列扫描方法获取汉字的代码,见图7。汉字可拆分为上部和下部,上部由8*16点阵组成,下部也由8*16点阵组成。通过列扫描方法首先显示左上角的第一列的上半部分,即第0列的P0.0~P0.7口,方向为P0.0到P0.7,显示汉字“大”时,P0.5点亮,其余的都不亮,即二进制00000100B,转换成十六进制为04H。上半部分第一列完成扫描后,继续扫描下半部分的第一列,为了接线的方便,仍旧设计成由上往下扫描,即从P2.7向P2.0方向扫描,从图中可以看到,这一列全部是不亮的,即为00H。依照这个方法转向第二列,第三列,直至第十六列的扫描,一共要扫描32个8位,就可以得到汉
6
河北经贸大学经济管理学院毕业论文
字“大”的扫描代码了。从这个原理可以看出,无论显示何种字体或图像,都可以用这个方法来分析出它的扫描代码,从而显示在屏幕上。
图6 “大”字的点阵显示 图7 列扫描方法 上述方法虽然能够让我们弄清楚汉字点阵代码的获取过程,但是依靠人工方法获取汉字点阵代码是一件非常繁琐的事情。为此,我们经常采用现成的汉字字模生成软件来查找字符代码,软件打开后输入汉字,点“检取”,十六进制数据的汉字代码即可自动生成,把我们所需要的竖排数据复制到程序中即可(如下图8所示)。
图8 汉字字库提取程序
6 AT89C51单片机
7
河北经贸大学经济管理学院毕业论文
单片机(Single Chip Micro Computer)是将中央处理器、随机存储器、只读存储器、定时器芯片和一些输入/输出接口电路集成在一个芯片上的微控制器。对于一个典型的单片机系统而言,主要由单片机、晶振和复位电路、输入控制电路、输出显示电路以及外围功能器件组成。它具有体积小、功耗低、功能强、性能价格比高、易于推广等显著优点。MCS-51单片机是目前8位单片机的主流机型。AT89单片机是ATMEL公司生产的8位FLASH单片机,其内含8031CPU内核,其内部功能与MCS-51单片机兼容。
图9 AT89C51芯片引脚图
AT89C51单片机有双列直插式封装和方形封装两种形式。图9所示为AT89C51的DIP封装引脚图。AT89C51单片机内部含有4KB快闪可编程/擦除只读存储器FPEROM,引脚与8051完全兼容,指令也完全一样。片内FPEROM可循环写/擦1000次,FPEROM内数据可保存10年,片内FPEROM具有3级加密保护,空闲状态维持低功耗和掉电状态保存内FPEROM内容。目前许多嵌入式控制系统使用了这种芯片。
AT89C51单片机引脚说明如下。 Vcc:电源端,接+5V。 Vss:接地端。
8
河北经贸大学经济管理学院毕业论文
XTAL2:片内振荡电路反相放大器输出端。 XTAL1:片内振荡电路反相放大器输入端。
RESET:复位输入。当振荡器复位器件时,要保持RST脚两个机器周期的高电平时间。
/EA/Vpp:当/EA保持低电平时,则在此期间访问外部程序存储器(0000H-FFFFH),不管是否有内部程序存储器。注意加密方式1时,/EA将内部锁定为RESET;当/EA端保持高电平时,访问内部程序存储器。在FLASH编程期间,此引脚也用于施加12V编程电压(Vpp)。 /PSEN:外部程序存储器的选通信号。在由外部程序存储器取指令期间,每个机器周期两次/PSEN有效。但在访问外部数据存储器时,这两次有效的/PSEN信号将不出现。
P0口:P0口为一个8位漏级开路双向I/O口,每脚可吸收8TTL门电流。当P1口的管脚第一次写1时,被定义为高阻输入。P0能够用于外部程序数据存储器,它可以被定义为数据/地址的第八位。在FLASH编程时,P0口作为原码输入口,当FLASH进行校验时,P0输出原码,此时P0外部必须被拉高。
P1口:P1口是一个内部提供上拉电阻的8位双向I/O口,P1口缓冲器能接收输出4TTL门电流。P1口管脚写入1后,被内部上拉为高,可用作输入,P1口被外部下拉为低电平时,将输出电流,这是由于内部上拉的缘故。在FLASH编程和校验时,P1口作为第八位地址接收。
P2口:P2口为一个内部上拉电阻的8位双向I/O口,P2口缓冲器可接收输出4个TTL门电流,当P2口被写“1”时,其管脚被内部上拉电阻拉高,且作为输入。并因此作为输入时,P2口的管脚被外部拉低,将输出电流。这是由于内部上拉的缘故。P2口当用于外部程序存储器或16位地址外部数据存储器进行存取时,P2口输出地址的高八位。在给出地址“1”时,它利用内部上拉优势,当对外部八位地址数据存储器进行读写时,P2口输出其特殊功能寄存器的内容。P2口在FLASH编程和校验时接收高八位地址信号和控制信号。
P3口:P3口管脚是8个带内部上拉电阻的双向I/O口,可接收输出4个TTL门电流。当P3口写入“1”后,它们被内部上拉为高电平,并用作输入。作为输入,由于外部下拉为低电平,P3口将输出电流,这是由于上拉的缘故。P3口同时为闪烁编程和编程校验接收一些控制信
9
河北经贸大学经济管理学院毕业论文
号。P3口也可作为AT89C51的一些特殊功能口,如下表2所示。
表2 P3口的特殊功能表
口线 P3.0 P3.1 P3.2 P3.3 P3.4 P3.5 P3.6 P3.7 第二功能 RXD(串行口通信数据输入线) TXD(串行口通信数据输出线) /INT0(外部中断0信号输入) /INT1(外部中断1信号输入) T0(定时器0的脉冲信号外部输入) T1(定时器1的脉冲信号外部输入) /WR(CPU至片外数据存储器的“写选通控制”输出) /RD(CPU至片外数据存储器的“读选通控制”输出) ALE/PROG:当访问外部存储器时,地址锁存允许的输出电平用于锁存地址的低位字节。在FLASH编程期间,此引脚用于输入编程脉冲。在平时,ALE端以不变的频率周期输出正脉冲信号,此频率为振荡器频率的1/6。因此它可用作对外部输出的脉冲或用于定时目的。然而要注意的是:每当用作外部数据存储器时,将跳过一个ALE脉冲。如想禁止ALE的输出可在SFR8EH地址上置0。此时,ALE只有在执行MOVX、MOVC指令时才起作用。另外,该引脚被略微拉高。如果微处理器在外部执行状态ALE禁止,置位无效。
7硬件电路设计
硬件电路大致上可以分成单片机系统及外围电路、列驱动电路和行驱动电路以及LED点阵阵列三大部分。图10是硬件电路设计的总体框图。
7.1单片机系统及外围电路
LED点阵显示屏由单片机控制部分和显示驱动部分组成。我们使用的是AT89C51的最小系统电路,包括:电源、时钟脉冲、复位电路和
10
河北经贸大学经济管理学院毕业论文
程序存储器设定电路,暂时只是显示很少的几个汉字,不需要外接存储器进行扩展。
7.1.1时钟脉冲电路
AT89C51单片机的最高时钟脉冲频率已达到了24MHz,它内部已经具备了振荡电路,只要把AT89C51的两个引脚(即18、19脚)连接到简单的石英振荡晶体的两个引脚即可,同时石英晶体的两个引脚也要用两个30pF的电容耦合到地。
7.1.2复位电路
复位是单片机系统的初始化操作,主要功能是把PC初始化为0000H,使单片机从程序存储器的0000H单元开始执行程序。另外,系统复位还使一些特殊功能寄存器恢复到复位状态。AT89C51的复位引脚(RESET)是第9脚,当此引脚连接高电平超过两个机器周期,即可产生复位的动作。最简单的就是只有一个电阻和一个电容组成的复位电路,电阻一般选择10KΩ,电容一般选择10μF。
图10 显示屏电路框图
7.1.3程序及数据存储器设定
因为单片机内部数据存储器只有128Byte,非常有限,运行大一点的程序就显得捉襟见肘了;程序存储器空间也只有4KB,大一点的程序就存储不下了,尤其是在存储汉字点阵信息时,每个汉字是32Byte,100个汉字就到了3.1KB,程序也只有不到1KB的容量了,因此必须外接存储器来扩展。通过设定AT89C51的/EA(31脚),就可以知道单片机使用的是外部程序存储器还是内部程序存储器了。若把/EA接地,则采用
11
河北经贸大学经济管理学院毕业论文
的是外部程序存储器,若把/EA接Vcc,则采用的是内部程序存储器。目前,我们只显示几个汉字,用内部4KB程序存储空间就足够了,所以把/EA接高电平。
图11 时钟脉冲及复位电路图
7.1.4供电电源
单片机是一种超大规模集成电路,在该集成电路内有成千上万个晶体管或场效应管,因此,要使单片机正常运行就必须为其提供能量,即为片内的晶体管或场效应管供给电源,使其能工作在相应的状态。单片机需要一个+5V的直流电源。
在电子电路中,通常都需要电压稳定的直流电源供电,小功率稳压电源通常由电源变压器、整流、滤波和稳压电路四部分组成。交流电网220V的电压经过电源变压器变为所需要的电压值,然后通过整流电路将交流电压变成脉动的直流电压,由于此脉动的直流电压还含有较大的纹波,必须通过滤波电路加以滤除,从而得到平滑的直流电压。稳压电路的作用是当电网电压波动、负载和温度变化时,维持输出直流电压稳
12
河北经贸大学经济管理学院毕业论文
定。目前,电子设备中常使用输出电压固定的集成稳压器。由于它只有输入、输出和公共引出端,故称之为三端式稳压器。
常见的三端稳压器有正电压输出的78××系列和负电压输出的79××系列。78系列最大输出电流为1.5A。而单片机和其他各芯片总电流不会超过300mA,所以电流留有余量,可以放心使用。注意三端集成稳压电路的输入、输出和接地端绝不能接错,不然容易烧坏。一般三端集成稳压电路的最小输入、输出电压差约为2V,否则不能输出稳定的电压,一般应使电压差保持在4V~5V,即经变压器变压,二极管整流,电容器滤波后的电压应比稳压值高一些。在78系列三端稳压器中最常应用的是TO-220封装。
图12 7805外形图
图13 电源7805
交流电压220V输入,经过变压器,次级输出电压12V左右,通过四个二极管组成的桥式整流电路,输出12V直流电压,经过三端集成稳压器7805,输出电压+5V,为电路提供电源。整流桥式电路后的两个电容组成滤波器,滤去电流中的高频和低频成分。C1和C2分别为7805输入端和输出端的滤波电容。
因此,电路的供电电源为一片7805三端稳压器(如图13所示),耗电电流为100mA左右,提供+5V电压输出。
13
河北经贸大学经济管理学院毕业论文
7.2 LED电子显示屏驱动电路
7.2.1驱动原理分析
我们把行列总线接到单片机的I/O口,然后运用上面分析的汉字点阵显示原理及字库代码获取方法把分析到的汉字扫描代码送入总线,就可以得到所要显示的汉字了。在此,由于一共用到16行和16列,如果将其全部接入AT89C51单片机,一共要使用32个I/O口,这样造成了I/O口资源的耗尽,系统也再无扩充的余地了。实际上,我们可使用3-8线译码器74LS138来完成列方向的显示。
我们采用3-8线译码器74LS138。将从AT89C51里出来的列信号通过74LS138形成的16位信号输出端连接到16*16的点阵LED的输入端,作为点阵的列驱动信号。从AT89C51的P1.0~P1.3口输出四个信号分别输入到74LS138译码器,然后输出16位列信号,经过16个4.7KΩ的电阻,再输入到16个PNP型(S8550)三极管的B极来进行对列信号的放大,其中所有的三极管的C极接地,所有的E极接16个LED点阵的列型号引脚,得到的信号作为点阵LED的列输入信号。我们通过对74LS138的四个输入信号进行控制,改变列信号,实现动态列扫描进而控制发光二极管的亮、灭来显示出所要求的字符、汉字。
而行方向的16条线接到P0口和P2口。电路中行方向由P0口和P2口完成扫描,由于P0口没有上拉电阻,因此接一个4.7K*8的排阻上拉。若没有排阻,可用8个普通的4.7KΩ电阻。为提供负载能力,我们可接16个S8050的NPN型三极管驱动,其中所有的三极管的C极接+5V电源,所有的E极接16个LED点阵的行型号引脚,得到的信号作为点阵LED的行输入信号。这样就可以使LED点阵能够正常显示了。 汉字扫描显示的基本过程是这样的:通电后由于电阻R和电容C的作用,使单片机的复位引脚电平先高后低,从而达到复位;之后,在单片机工作时钟电路的作用下,单片机按照设定的程序在P0和P2接口输出与汉字对应的代码电平送至LED点阵的行选线(高电平驱动),同时在P1.0,P1.1,P1.2,P1.3接口输出列选扫描信号(低电平驱动),从而选中相应的LED发光,并利用人眼的视觉暂留特性合成整个汉字的显示。由程序再改变取表地址实现汉字的流动显示。AT89C51单片机最高可达到24MHz晶振以获得较高的屏幕刷新率,使汉字显示更稳定。
14
河北经贸大学经济管理学院毕业论文
7.2.2所用的元器件
如下是3-8线译码器74LS138的引脚图和功能表。从中可以看出,信号输入端A、B、C有8种特定的1、0状态组合,设置使能输入端G1为1,G2A和G2B均为0,译码器处于工作状态,在输出端只有一个输出低电平0,这样我们就可以有选择地控制电路了。
图14 74LS138引脚图
表3 74LS138功能表
输 入 G1 0 X 1 1 1 1 1 1 1 1 G2A+G2B X 1 0 0 0 0 0 0 0 0 C B A X X X X X X 0 0 0 0 0 1 0 1 0 0 1 1 1 0 0 1 0 1 1 1 0 1 1 1
输 出 Y0 Y1 Y2 Y3 Y4 Y5 Y6 Y7 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 0 1 1 1 1 1 1 1 1 0 1 1 1 1 1 1 1 1 0 1 1 1 1 1 1 1 1 0 1 1 1 1 1 1 1 1 0 1 1 1 1 1 1 1 1 0 1 1 1 1 1 1 1 1 0 1 1 1 1 1 1 1 1 0 S8550是PNP型三极管,S8050是NPN型三极管,它们都是小功率晶体三极管。
15
河北经贸大学经济管理学院毕业论文
7.3整体硬件电路原理图
由以上硬件电路设计思想,本设计的硬件电路原理图如下页所示。
8软件的程序实现
显示屏软件程序的主要功能是向显示屏提供显示数据,并产生各种控制信号,使屏幕按设计的要求显示。根据软件分层次设计的原理,可把显示屏的软件系统分成两大层:第一层是底层的显示驱动程序,第二层是上层的系统应用程序。显示驱动程序负责向点阵显示屏传送特定组合的显示数据,并负责产生列扫描信号和其它控制信号,配合完成LED电子显示屏的扫描显示工作。显示驱动程序由显示子程序实现,系统环境设置由系统初始化程序完成,显示效果处理由主程序通过调用子程序实现。
图15 主程序流程图
16
河北经贸大学经济管理学院毕业论文
图16 LED显示屏硬件电路原理图
17
河北经贸大学经济管理学院毕业论文
图17 子程序流程图
根据本设计的要求和MCS-51单片机汇编语言程序设计的方法,编制出的如下程序可以在LED点阵模块上实现“河北经贸大学欢迎您!”几个字的流动显示。
16*16点阵显示程序清单如下: ORG 0000H LJMP XB13
18
河北经贸大学经济管理学院毕业论文
X01A:CLR A;清列值 MOV 0EH,A;指向零列 X023: MOV A,0EH;取列值
CLR C
SUBB A,#10H;减16(十进制数) JC X0D2;未满16列继续扫描下一列 RET;本次扫描完毕返回主程序 X0D2: MOV 0F0H,#02H
MOV A,0EH
MUL AB;当前列值与“2”进行十进制调正 MOV 82H,A;调正结果送数据指针DPTR MOV 83H,0F0H
LCALL XB1F;取与当前列对应的扫描代码 MOV 20H,A
LCALL XB4E;扫描代码送高八位锁存器 MOV A,0EH;取列值
MOV 0F0H,#02H;当前列值与“2”进行十进制调正 MUL AB
ADD A,#01H;调正结果加1送数据指针DPTR MOV R7,A CLR A ADDC A,0F0H MOV 82H,R7 MOV 83H,A
LCALL XB1F;取与当前列对应的扫描代码 PUSH DPH;扫描代码送低八位锁存器 PUSH DPL
MOV DPTR,#0FFE0H MOVX @DPTR,A
MOV A,#01H;代码扫描从第一行开始 MOV R6,#00H
MOV R0,0EH;取与当前代码扫描对应的列值
19
河北经贸大学经济管理学院毕业论文
INC R0;列指针加1 SJMP X083
X07E: CLR C;当前代码扫描对应行的查找 RLC A;行高八位左移一位 XCH A,R6 XCH A,R6
X083: DJNZ R0,X07E;不为当前代码扫描对应行返上继续调正 MOV DPTR,#0FFE2H;当前行码送高八位锁存器 MOVX @DPTR,A
MOV DPTR,#0FFE1H;当前行码送低八位锁存器 MOV A,R6 MOVX @DPTR,A
MOV R6,#80H;当前行锁定显示250μs DJNZ R6,$ CLR A;关闭显示
MOV DPTR,#0FFE1H
MOVX @DPTR,A;行高八位锁存器清零 INC DPTR
MOVX @DPTR,A;行低八位锁存器清零 POP DPL POP DPH
INC 0EH;列指针加1 AJMP X023;继续下1行 X097:CLR A
MOV DPTR,#0FFE1H MOVX @DPTR,A INC DPTR MOVX @DPTR,A X0A0:CLR A;清扫描个数寄存器 MOV R5,A;从第一个开始扫描 X0A2:MOV A,R5;取当前扫描个数
20
RLC A;行低八位带进位左移一位
河北经贸大学经济管理学院毕业论文
CLR C SUBB A,#19H JNC X0A0
MOV A,R5
MOV DPTR,#TAB;指向汉字表首址
MOV 0F0H,#20H;设定以完整的一个汉字为最小循环单位 MUL AB ADD A,DPL MOV 0AH,A MOV A,DPH ADDC A,0F0H MOV 09H,A CLR A MOV R4,A X0BD:MOV A,R4 CLR C
SUBB A,#64H;每个汉字扫描64次 JNC X0CF;当前汉字扫描次数满64次转 MOV R2,09H MOV R1,0AH ACALL X01A
INC R4;扫描次数加1 SJMP X0BD
X0CF:INC R5;扫描个数加1指向下一个汉字
SJMP X0A2
TAB: DB 40H,04H,3FH,0FEH,10H,08H,00H,08H,80H,48H,67H,0E8H,24H, 48H,0CH,48H,14H,48H,24H,48H,0E7H,0C8H,24H,48H,20H,08H, 20H,08H,20H,28H,20H,10H;河
DB 04H,80H,04H,80H,04H,88H,04H,98H,04H,0A0H,7CH,0C0H,04H, 80H,04H,80H,04H,80H,04H,80H,04H,80H,04H,80H,1CH,82H,0E 4H,82H,44H,7EH,00H,00H;北
DB 10H,00H,13H,0FCH,20H,08H,20H,10H,44H,30H,0FCH,48H,08H,
21
河北经贸大学经济管理学院毕业论文
86H,13H,02H,20H,00H,41H,0FCH,0FCH,20H,00H,20H,1CH,20H, 0E0H,24H,47H,0FEH,00H,00H;经
DB 06H,04H,78H,0FEH,40H,44H,48H,44H,4EH,54H,72H,88H,0C1H, 10H,1FH,0F8H,10H,10H,11H,10H,11H,10H,11H,10H,11H,10H,02 H,0C0H,0CH,38H,70H,08H;贸
DB 01H,00H,01H,00H,01H,00H,01H,00H,01H,04H,0FFH,0FEH,01H, 00H,02H,80H,02H,80H,02H,40H,04H,40H,04H,20H,08H,10H,10 H,0EH,60H,04H,00H,00H;大
DB 22H,08H,11H,08H,11H,10H,00H,20H,7FH,0FEH,40H,02H,80H, 04H,1FH,0E0H,00H,40H,01H,84H,0FFH,0FEH,01H,00H,01H,00 H,01H,00H,05H,00H,02H,00H;学
DB 00H,80H,00H,80H,0FCH,80H,04H,0FCH,45H,04H,46H,48H,28H, 40H,28H,40H,10H,40H,28H,40H,24H,0A0H,44H,0A0H,81H,10H, 01H,08H,02H,0EH,0CH,04H;欢
DB 00H,00H,41H,84H,26H,7EH,14H,44H,04H,44H,04H,44H,0F4H,4 4H,14H,0C4H,15H,44H,16H,54H,14H,48H,10H,40H,10H,40H,28 H,46H,47H,0FCH,00H,00H;迎
DB 09H,00H,09H,00H,13H,0FCH,12H,04H,34H,48H,59H,40H,91H,5 0H,12H,4CH,14H,44H,11H,40H,10H,80H,02H,00H,51H,84H,50H, 92H,90H,12H,0FH,0F0H;您
DB 00H,00H,01H,80H,03H,0C0H,03H,0C0H,03H,0C0H,01H,80H,01 H,80H,01H,80H,01H,80H,01H,80H,00H,00H,00H,00H,01H,80H, 01H,80H,00H,00H,00H,00H;! XB13:MOV R0,#7FH CLR A
XB16:MOV @R0,A DJNZ R0,XB16 MOV 81H,#20H JMP X097
XB1F:MOV A,82H;本次扫描首址与当前列值相加 ADD A,R1;低八位相加 MOV 82H,A;送DPL
22
河北经贸大学经济管理学院毕业论文
MOV A,83H;高八位相加
ADDC A,R2;再加低八位进位位CY MOV 83H,A;送DPH
CLR A
MOVC A,@A+DPTR;取汉字代码 RET;返回 XB4E:PUSH DPH PUSH DPL
MOV DPTR,#0FFE3H MOVX @DPTR,A POP DPL POP DPH RET END
9总结
本设计虽然只使用了一块16*16LED点阵模块,电路简单,但是已经包括了LED电子显示屏的电路基本原理和基本程序,图形或文字显示有静止、移入移出等显示方式。本系统具有硬件少、结构简单、容易实现、性能稳定可靠、成本低等特点。
在此设计过程中通过查阅大量的相关资料,详细了解了LED的发光原理和LED电子显示屏的显示原理,了解了LED的现状及LED电子显示屏的优点。
通过本次设计,让我初步了解了LED点阵显示的基本原理和实现方法,也让我初步掌握了点阵汉字库的编码和从标准字库中提取汉字编码的方法,重新复习并进一步学习了MCS-51单片机,回顾了单片机的111条指令,灵活应用了三极管、74LS138译码器等一些常用电子元件。
在论文设计期间,我进一步提高了自己在实际设计过程中研究问题、发现问题、解决问题的能力。但是从中也有很多不足之处,对专业知识的积累还不够多,有些问题自己不能独立解决,还要大量锻炼自己的实际操作能力,只有这样才能让自己在不断学习中提高自己的水平。
23
因篇幅问题不能全部显示,请点此查看更多更全内容