基于单片机LED点阵广告屏设计与制作--毕业设计 - 图文

更新时间:2024-03-16 04:59:01 阅读量: 综合文库 文档下载

说明:文章内容仅供预览,部分内容可能不全。下载后的文档,内容与下面显示的完全一致。下载之前请确认下面内容是否您想要的,是否完整无缺。

陕西理工学院毕业设计

基于单片机LED点阵广告屏设计与制作

[摘要]LED显示屏作为一种新型的显示器件,是由多个发光二极管按矩阵形式排列封装而成,通常用来显示

时间、图文等信息。本设计是基于AT89C51单片机的16x16显示屏,其中包含了硬件、软件、调试等方案的设计。此外、该设计只需简单的级联就能实现显示屏的拓展,但级联时要注意不要超过驱动负载范围。

[关键词]AT89C51,LED,单片机

Based on SCM LED dot matrix screen of advertisement design and production

Abstract: LED display as a novel display device, is composed of a plurality of light emitting diodes are arranged in a

matrix form package, usually used to display time, graphic information. The design is based on the AT89C51MCU 16x16display screen, which includes hardware, software, debugging scheme design. In addition, the design simply cascade can realize the display of expansion, but to be careful not to exceed the cascade drive load range.

Key words: AT89C51; LED; single chip microcomputer

目录

引言...................................................... 2 1.LED显示屏设计的课题背景 ................................ 3

第 1 页 共 28页

陕西理工学院毕业设计

1.1 LED显示屏的设计背景..................................... 3 1.2 LED显示屏的设计依据..................................... 3

2.课题设计方案 ............................................ 3 3 硬件设计 ................................................ 4 3.1设计框图及介绍 ........................................ 4

3.2 51系列单片机简介 ....................................... 4 3.3 单片机最小应用系统电路设计 ............................. 6 3.4 LED点阵介绍 ............................................ 7 3.5 LED显示方式 ........................................... 8 3.6 点阵的移动 ............................................. 10 3.7 LED阵列驱动电路 ....................................... 13

4 软件设计 ............................................... 15

4.1 单片机延时子程序 ..................................... 15 4.2点阵左移显示的流程图及分析 ............................. 16 4.4 调试 ................................................... 19

结束语 ................................................... 19 致谢..................................................... 20

附录一.程序代码 ............................................ 21 附录二.主要芯片介绍 ....................................... 22 附录三.仿真电路图 ......................................... 25 附录四.实物图片 ............................ 错误!未定义书签。

引言

随着科技技术的不断发展,单片机以极其高的性价比受到人们的重视和关注,所以应用很广,发展

很快。单片机的优点是体积小、重量轻、抗干扰能力强,对环境要求不高,价格低廉,可靠性高,灵活性好,开发较为容易。LED显示屏分为图文显示屏和视频显示屏,均由LED矩阵块组成。图文显示屏可与计算机同步显示汉字、英文文本和图形;视频显示屏采用微型计算机进行控制,图文、图像并茂,以实时、同步、清晰的信息传播方式播放各种信息,还可显示二维、三维动画、录像、电视、VCD节目以及现场实况。LED显示屏显示画面色彩鲜艳,立体感强,静如油画,动如电影,广泛应用于交通运输、车站、商场、医院、宾馆、证券市场、工业企业管理等公共场所。

第 2 页 共 28页

陕西理工学院毕业设计

LED显示屏可以显示变化的数字、文字、图形图像;不仅可以用于室内环境还可以用于室外环境,具有投影仪、电视墙、液晶显示屏无法比拟的优点。 LED之所以受到广泛重视而得到迅速发展,是与它本身所具有的优点分不开的。这些优点概括起来是:亮度高、工作电压低、功耗小、小型化、寿命长、耐冲击和性能稳定。LED的发展前景极为广阔,目前正朝着更高亮度、更高耐气候性、更高的发光密度、更高的发光均匀性,可靠性、全色化方向发展。现代LED的发展很快,很多研究领域非常已经深刻,实际情况是:很多相关的知识已经远远超出我们在校学生的能力范围,所以在此只是简单的研究一下用单片机驱动的LED显示移动的汉字。目的有三:一是亲手制作一个简单实用的显示文字的LED点阵;二是通过制作LED点阵增强对LED点阵的了解和应用,以及复习巩固单片机知识;三是通过团队合作,增强团队合作的意识,为以后走向社会工作打下基础,并且增强了同学之间的友谊。

为了吸引观众增强显示效果,可以有多种显示模式。最简单的显示模式是静态显示。与静态显示模式相对应,就有各种动态显示模式,它们所显示的图文都是能够动的。按照图文运动的特点又可以分为闪烁、平移、旋转、缩放等多种显示模式。产生不同显示模式的方法,并不意味着一定要重新编写显示数据,可以通过一定的算法从原来的显示数据直接生成。例如,按顺序调整行号,可以使显示图文产生上下平移;而顺序调整列显示数据的位置,就可以达到左右平移的目的;刷新的时间控制,要考虑运动图形文字的显示效果。刷新太慢,动感不显著;刷新太快了,中间过程看不清。一般刷新周期可控制在几十毫秒范围之内。本次毕业设计中,由本人寻求林赞扬,洪信根等同学的帮助,我负责硬件部分电路图的设计和软件部分程序的设计和调试,目的是应用简单方便的电路连接和程序完成汉字的换色与移动。洪信根负责用设计好的点阵电路制作PCB电路板,包括完成PCB板的制作,林赞扬负责制作另外一块在面包板上连的点阵线连板子的焊接与调试,各人的分工不同只是工作侧重点的不同,大家是在一起互相学习互相帮助,共同完成设计任务。

1.LED显示屏设计的课题背景

1.1 LED显示屏的设计背景

随着科学技术的发展,社会不断的进步,电子事业也有着突飞猛进的改革。人们对公共传媒质量的要求越来越高。随着近几年来LED字符显示器的推出和不断完善,它的应用范围正在扩大,应用效果十分显著。不难看出,这一电子信息技术发展的新成果,在宣传、政治思想教育、广告娱乐等方面的应用日益突出。

由于大规模集成电路技术的发展,其控制系统已能够取代以前利用复杂电子线路或数字电路构成的控制系统,还可以软件控制来实现,并能够实现智能化。 1.2 LED显示屏的设计依据

根据LED显示屏设计的基本原理,结合其设计要求:“1.显示汉字;2.可以移动;3.可循环显示。”由此设想出以下解决方案由AT89C52单片机最小系统、控制部分、显示部分组成。进行汉字的显示,再进一步进行右移。

2.课题设计方案

本文主要讲述的是“LED点阵字符显示电路”,本课题的实现主要有两种方案。

方案一:由数字电路来实现,由移位寄存器与锁存器对字符数据进行存储,然后并行输入到显示屏,来实现汉字的显示。

方案二:由单片机编程控制来实现,方案利用单片机控制锁存器和译码器,由锁存器和译码器送出行选和列选来控制LED屏的亮灭,从而显示汉字。

方案论证:不难看出,选用数字电路来实现比较复杂。因为用数字电路实现必须要有移位寄存器与锁存器对字符数据进行存储,然后并行输入到显示屏,不但如此,而且需要很大一部分的扩展电路才能实现。用数字电路实现不但大大提高成本,而且设计出的电路的灵活性差、不易调试、成本高等缺点。方案二不仅能够改进方案一设计的不灵活,还可进行扩展。通过比较,从设计方案的

第 3 页 共 28页

陕西理工学院毕业设计

优点及所设计的方便实用性,选择第二种设计方案。

本文是基于单片机来实现的。由于单片机具有体积小、重量轻、价格便宜、功耗低、控制功能强及运算速度快等特点,因而在国民经济建设、军事及家用电器等不同领域起到了举足轻重的作用。用单片机C语言编程,来控制16*16 LED点阵块进行显示相应的汉字、图形、图像等。使用C来开发系统会更加方便快捷。一方面不会降低对硬件的控制能力,另一方面也不会使代码长度增加多少。如果运用的好的话,就能够开发出非常高效的系统。并且非常易于维护。

3 硬件设计

3.1设计框图及介绍

LED点阵总体框图如图3.1所示,点阵电路大体上可以分成微机本身的硬件、显示驱动电路、控制信号电路三部分。控制电路部分包括一个51CUP和一些外围电路。在整个电路当中此控制电路部分相当于一个上位机,它负责控制整个电路以及相应的程序的运行、与PC机的串行通讯、以及给屏体电路部分发送命令。点阵显示屏体、以及它的行和列的各个驱动电路。由于两部分的电路在制板时可以放到一起,所以可以将其字库放到控制电路部分使用串行通讯方式来与屏体电路部分进行数据和命令的传送。

此显示电路采用扫描方式进行显示时,每行有一个行驱动器,各行的同名列共用一个列驱动器。由行译码器给出的行选通信号,从第一行开始,按顺序依次对各行进行扫描(把该行与电源的一端接通)。另一方而,根据各列锁存的数据,确定相应的列驱动器是否将该列与电源的另一端接通。接通的列,就在该行该列点燃相应的LED;未接通的列所对应的LED熄灭。

图3.1 点阵显示的总体框图

3.2 51系列单片机简介

单片机(Microcontroller,又称微处理器)是在一块硅片上集成了各种部件的微型机,这些部件包括中央处理器CPU、数据存储器RAM、程序存储器ROM、定时器/计数器和多种I/O接口电路。

8051单片机的基本结构见图3.2。

第 4 页 共 28页

陕西理工学院毕业设计

图3.2 8051单片机的基本结构

8051是MCS-51系列单片机的一个产品。MCS-51系列单片机是Intel公司推出的通用型单片机,8051单片机系列指的是MCS-51系列和其他公司的8051衍生产品。这些衍生品是在基本型基础上增强了各种功能的产品。这些产品给8位单片机注入了新的活力,给它的开发应用开拓了更广泛的前景。

8051系列的内部结构可以划分为CPU、存储器、并行口、串行口、定时器/计数器、中断逻辑几部分。

(1)中央处理器

8051的中央处理器由运算器和控制逻辑构成,其中包括若干特殊功能寄存器(SFR)。 算术逻辑单元ALU能对数据进行加、减、乘、除等算术运算;“与”、“或”、“异或”等逻辑运算以及位操作运算。

ALU只能进行运算,运算的操作数可以事先存放到累加器ACC或寄存器TMP中,运算结果可以送回ACC或通用寄存器或存储单元中,累加器ACC也可以写为A。B寄存器在乘法指令中用来存放一个乘数,在除法指令中用来存放除数,运算后B中为部分运算结果。

程序状态字PSW是个8位寄存器,用来寄存本次运算的特征信息,用到其中七位。PSW的格式如下所示,其各位的含义是:

CY:进位标志。有进位/错位时CY=1,否则CY=0。

AC:半进位标志。当D3位向D4位产生进位/错位时,AC=1,否则AC=0,常用于十进制调整运算中。

F0:用户可设定的标志位,可置位/复位,也可供测试。

RS1、RS0:四个通用寄存器组选择位,该两位的四种组合状态用来选择0~3寄存器组。。 OV:溢出标志。当带符号数运算结果超出-128~+127范围时OV=1,否则OV=0。当无符号数乘法结果超过255时,或当无符号数除法的除数为0时OV=1,否则OV=0。

P:奇偶校验标志。每条指令执行完,若A中1的个数为奇数时P=1,否则P=0,即偶校验方式。 控制逻辑主要包括定时和控制逻辑、指令寄存器 、译码器以及地址指针DPTR和程序寄存器PC等。

单片机是程序控制式计算机,即它的运行过程是在程序控制下逐条执行程序指令的过程:从程序存储器中取出指令送指令存储器IR,然后指令译码器ID进行译码,译码产生一系列符合定时要求的微操作信号,用以控制单片机的各部分动作。8051的控制器在单片机内部协调各功能部件之间的数据传送、数据运算等操作,并对单片机发出若干控制信息。这些控制信息的使用专门的控制线,诸如PSEN、ALE、EA以及RST,也有一些是和P3口的某些端子合用,如WR和RD就是P3.6和P3.7,他们的具体功能在介绍8051引脚是一起叙述。 (2)存储器组织

8051单片机的存储器结构特点之一是将程序存储器和数据存储器分开,并有各自的寻址机构和寻址方式,这种结构称为哈佛结构单片机。这种结构与通用微机的存储器结构不同,一般微机只有一个存储器逻辑空间,可随意安排ROM或RAM,访存时用同一种指令,这种结构称为普林斯顿型。

8051单片机在物理上有四个存储空间:片内程序存储器和片外程序存储器、片内数据存储器和片外数据存储器。

8051片内有256K数据存储器RAM和4KB的程序存储器ROM。除此之外,还可以在片外扩展RAM和ROM,并且各有64KB的寻址范围。也就是最多可以在外部扩展2*64KB存储器。

8051的存储器组织结构如图3.3所示。

第 5 页 共 28页

陕西理工学院毕业设计

图 3.3 8051存储器组织结构

64K字节的程序存储器(ROM)空间中,有4K字节地址区对于片内ROM和片外ROM是公用的,这4K字节地址是0000H~FFFH。而1000H~FFFFH地址区为外部ROM专用。CPU的控制器专门提供一个控制信号EA用来区分内部ROM和外部ROM的公用地址区:当EA接高电平时,单片机从片内ROM的4K字节存储器区取指令,而当指令地址超过0FFFH后,就自动的转向片外ROM取指令。当EA接低电平时,CPU只从片外ROM取指令。

程序存储器的某些单元是保留给系统使用的:0000H~0002H单元是所有执行程序的入口地址,复位以后,CPU总是丛0000H单元开始执行程序。0003H~002AH单元均匀地分为五段,用做五个中断服务程序的入口。用户程序不应进入上述区域。

8051的RAM虽然字节数不很多,但却起着十分重要的作用。256个字节被分为两个区域:00H~7FH时真正的RAM区,可以读写各种数据。而80H~FFH是专门用于特殊功能寄存器(SFR)的区域。对于8051安排了21个特殊功能寄存器,每个寄存器为8位,所以实际上128个字节并没有全部利用。

内部RAM的各个单元,都可以通过直接地址来寻找,对于工作寄存器,则一般都直接用R0~R7,对特殊功能寄存器,也是直接使用其名字较为方便。8051内部特殊功能寄存器都是可以位寻址的,并可用“寄存器名.位”来表示,如ACC.0,B.7等。 3.3 单片机最小应用系统电路设计

VCCU1P1.0P1.1P1.2P1.3P1.4P1.5P1.6P1.7123456789R310K10111213141516171819Y112M20C230PP10P11P12P13P14P15P16P17RESETEAP30/RXDP31/TXDP32P33P34P35P36P37X2X1VssAT89C51S4ALE/PPSENP27P26P25P24P23P22P21P20VCCP00P01P02P03P04P05P06P074039383736353433323130292827262524232221P2.7P2.6P2.5P2.4P2.2P2.1P2.04.7K*4VCCS1C310uR1P0.1P0.2P0.3P0.4VCCC130PS2S3 图3.4 单片机最小应用系统原理图

第 6 页 共 28页

陕西理工学院毕业设计

注: 该最小系统由按键复位RESET电路、晶体振荡电路以及I/O接口电路组成。

复位的实现通常用2种方式: 开机上电复位和外部手动复位,本设计用的是外部手动复位。电路图3.5如下:

图3.5 单片机复位图

AT89C51工作电压VCC=5V,其EA引脚需接高电平,5V电源电路如图3.6所示。

U21VCC+5V21VinACT14V-V+2C4100u/16VC51047805GNDD6C63C7104AC100u/16v 图3.6 单片机电源原理图

注: 该电源电路主要模块为IC7805,它能输出稳定的 5V电源,图中整流桥是将市电转变为直流电,电容起到虑波作用由7805的OUT引脚输出5V电压。[6]

3.4 LED点阵介绍

8×8单色点阵共需要64个发光二极管组成,且每个二极管是放置在行线与列线的叉点上。本设计是一种实用的汉字显示屏的制作,制作的是点阵。考虑到元器件的易购性,使用8×8的点阵发光二极管模块,组成了16行16列的发光点阵。实际使用时可以根据这个原理自行扩充显示的字数。

下面的8×8单色点阵和8×8双色点阵可以看出,其实8×8双色点阵就是两块8×8单色点阵组合在一起的。要实现用两种颜色显示,只要在电路的设计中适当的连线就可以了。

8×8单色和双色点阵LED结构分别如下图3.8和3.9所示。

3

图3.7 8×8点阵外观及引脚图

第 7 页 共 28页

陕西理工学院毕业设计

图3.8 8×8单色点阵内部图 图3.9 8×8双色点阵内部图

3.5 LED显示方式[7]

汉字显示屏用于显示汉字、字符及图像信息,在公共汽车、银行、医院及户外广告等地方都有广泛的应用。下面是简单的汉字显示屏的制作,由单片机控制汉字的显示内容。为了降低成本,使用了四块8×8的LED点阵发光管的模块,组成了一个16×16的LED点阵显示屏,如图1.10所示。在这里仅做了四个汉字的显示,在实际的使用中可以根据这个原理自行的扩展显示的汉字,下面是介绍汉字显示的原理。

图3.10 四块8×8的LED点阵组成16×16的LED点阵

LED驱动显示采用动态扫描方法,动态扫描方式是逐行轮流点亮,这样扫描驱动电路就可以实现多行的同名列共用一套列驱动器。以16×16点阵为例,把所有同一行的发光管的阳极连在一起,把所有同一列的发光管的阴极连在一起(共阳的接法),先送出对应第1行发光管亮灭的数据并锁存,然后选通第1行使其燃亮一定的时间,然后熄灭;再送出第2行的数据并锁存,然后选通第2行使其燃亮相同的时间,然后熄灭;….第16行之后,又重新燃亮第1行,反复轮回。当这样轮回的速度足够快(每秒24次以上),由于人眼的视觉暂留现象,就能看到显示屏上稳定的图形。该方法能驱动较多的LED,控制方式较灵活,而且节省单片机的资源。

显示数据传输采用串行传输的方法,控制电路可以只用一根信号线,将列数据一位一位传往列驱动器,在硬件方面无疑是十分经济的。但串行传输过程较长,数据按顺序一位一位地输出给列驱动器,只有当一行的各列数据都已传输到位之后,这一行的各列才能并行地进行显示。对于串行传输方式来说,列数据准备时间可能相当长,在行扫描周期确定的情况下,留给行显示的时间就太少了,以致影响到LED的亮度。

第 8 页 共 28页

陕西理工学院毕业设计

采用串行传输中列数据准备和列数据显示的时间矛盾,可以采用重叠处理的方法。即在显示本行各列数据的同时,传送下一行的列数据。为了达到重叠处理的目的,列数据的显示就需要有锁存功能。对于列数据准备来说,它应能实现串入并出的移位功能。这样,本行已准备好的数据打入并行锁存器进行显示时,串行移位寄存器就可以准备下一行的列数据,而不会影响本行的显示。

LED点阵显示模块进行的方法有两种:

(1)水平方向(X方向)扫描,即逐列扫描的方式(简称列扫描方式):此时用一个P口输出列码决定哪一列能亮(相当于位码),用另一个P口输出行码(列数据),决定该行上那哪个LED亮(相当于段码)。能亮的列从左到右扫描完16列(相当于位码循环移动16次)即显示出一个完整的图像。

(2)竖直方向(Y方向)扫描,即逐行扫描方式(简称行扫描方式):此时用一个P口输出决定哪一行能亮(相当于位码),另一个P口输出列码(行数据,行数据为将列数据的点阵旋转90度的数据)决定该行上哪些LED灯亮(相当于段码)。能亮的行从上向下扫描完16行(相当于位码循环移位16次)即显示一帧完整的图像。

本设计应用的是第一种的扫描方法,即水平方向(X方向)扫描。

每一个字由16行16列的点阵形成显示,即每个字均由256个点阵来表示,我们可以把每一个点理解为一个像素。一般我们使用的16×16的点阵宋体字库,即所谓的16×16,是每一个汉字在纵横各16点的区域内显示的。汉字库从该位置起的32字节信息记录了该字的字模信息。事实上这个汉字屏不仅可以显示汉字,也可以显示在256像素范围内的任何图形。

我们以水平方向(x方向)扫描显示汉字的“江”为例来说明其扫描原理,每一个字由16行16列的点阵组成显示,如图下的,如果用8位的AT89S51的单片机来控制,由于单片机的总线为8位,一个字需要拆分成两个部分。一般我们把它分解成上部分和下部分,上部分由8*16的点阵组成,下部分也由8*16的点阵组成。在本例中单片机首先显示的是左上角的第一列的部分,即第0列的P00~P07口。方向为P00到P07,显示汉字“江”的时候,P00到P04都是灭的,P05亮,即二进制00001000,转换为16进制为08H,如图1.11所示。

上半部分第一列完成之后,继续扫描下半部分的第一列,为了接线的方便,我们仍设计成由上往下的扫描方式,即从P27向P20方向扫描,从上图可以看到,这一列所有的都不亮,所以代码为00000000,16进制为00H,然后单片机转向上半部的第二列,除了P05亮,其他的都不亮,即为00000100,16进制为04H,这一列扫描完成之后继续进行下半部分的扫描,除了P21亮,其他的为不亮,为二进制00100000,即16进制20H。

按照这个方法,继续进行下面的扫描,一共扫描32个8位,可以得出汉字“陕”的扫描代码为 : B 7FH,FFH,40H,00H,44H,20H,5AH,12H,61H,E2H,14H,84H,13H,88H,10H,B0H;

DB FFH,C0H,10H,A0H,11H,90H,12H,88H,14H,84H,10H,82H,00H,82H,00H,00H;\陕\

图3.11 点阵显示原理图

由这个原理可以看到,无论显示何种字体或图像,都可以用这种方法来分析出它的扫描代码从

第 9 页 共 28页

陕西理工学院毕业设计

而显示在屏幕上。了解汉字的显示原理之后,那如何得到汉字的字模信息呢?现在有一些现成的汉字字模生成软件,可从网上下载汉字字库提取程序直接提取字库,如图1.12所示的为一种字模生成软件,软件打开后输入汉字,点击“检取”后,十六进制数据汉字代码即可以自动生成,把我们需要的竖排数据复制到我们的程序即可

图3.12 汉字字模生成软件

3.6 点阵的移动

以下以16×16点阵为例介绍点阵的移动。要显示一个字符,该字符的点阵数据可以列向(纵向)16点组字,又可以行向(横向)16点组字。无论哪一种组字方法,都既可以显示字符的水平方向的移动,又可以显示竖直方向的移动。

1.显示字符的左右移动

(1)列扫描方式左移动:列向组字显示字符水平方向的移动(左滚动) 在这里有两个方法:

方法1:延长数组法。将原来字符点阵数组的16个数据重复一遍延长,点阵数组的数据个数为32个。每扫描仪帧取8个数据显示,下一帧取数要在数组中后移一个数取数。循环一遍扫16帧。可以假想有两块16×16的点阵模块(共32帧)水平平行排列,用一个恰好能罩住8列点阵的中空方框去罩这个点阵,第1(第1帧)罩住最左边数起第一列开始的16列,就扫描显示这16列;第2次(第2帧)使方框右移一列,罩住做左边数起第2列开始的16列,就扫描显示这16列;······;这样每扫描完一帧使方框右移一列,最后第16次(第16帧)时,罩住左边数起的第16列开始的16列,就扫描显示这16列。如此完成16帧画面的扫描显示,也就完成了整个一次移动循环扫描、之后反复循环,即可呈现显示字符沿水平向左移动的图像,如图1.13所示。

图3.13 方框图法左右移动示意图

第 10 页 共 28页

陕西理工学院毕业设计

因为是列向组字(列扫描方式,点阵数据为行码,上边为地位下面为高位),希望显示移动的一个字符,第1次扫描从行码的点阵数组中取第1~16个数据,送行码输出口,对应于这8个数据,同时用列码输出口输出列码,分别控制第1~16列。扫描完前16个数据之后,第2次扫描从点阵数组中取第2~14个数据(第17个数据与地1个数据同),送行码输出口,对应于这16个数据,同时用列码输出口输出列码,仍分别控制扫地1~16列。第3次扫描从点阵数组中取第3~18个数据(第18个数据码与地2个数据码相同)扫描······;如此实现字符向左移动。

以上完成一个图形移动的方法,也可以看成是移动16个不同的字形。如图2.13所示,首先扫描第一个字型,同样是16行,16次扫描,16次显示;完成一个字型的扫描以后,再扫描第二个字型;完成第二个字型的扫描之后,再扫描第三个字型······依此类推,即可产生该文字的左移的感觉。

图3.13字形法左右移动示意图

假设如果原本某个汉字的字型(第一个字型),其编码为:

00H,10H,20H,30H,40H,50H,60H,70H,80H,90H,0A0H,0B0H,0C0H,0D0H0E0H,0F0H; 第二个字型的编码为:

10H,20H,30H,40H,50H,60H,70H,80H,90H,0A0H,0B0H,0C0H,0D0H0E0H,0F0H, 00H,

也就是把第一个字型的编码中,第1行显示数据,变为第2行显示数据;第2行显示数据,变成第3行显示数据;第3行显示数据,变成第4行显示数据;第4行显示数据,变成第5行显示数据······以此类推。

当第一个字型扫描显示完成之后,就进行这样的动作调整,以产生第二个字型的编码。同样的,当第二个字型扫描完成之后,就进行这样的调整动作,以产生第三个字型的编码。这个调整动作时先将16个编码根据序填入存储器,例如第1行编码存入20H,第二行编码存入21H······要进行左移调整时,则先将20H地址的数据转移到36H地址,再将21 H地址的数据转移到20 H地址,将22 H地址的数据转移到21 H地址,将23 H地址的数据转移到22 H地址,将24 H地址的数据转移到23 H地址,将25 H地址的数据转移到24 H地址,将26 H地址的数据转移到25 H地址,将27 H地址的数据转移到26 H地址,将28 H地址的数据转移到27H地址······

方法2:数组数据“循环左移法” (适合用C语言编写,在此仅作了解)。注意,不是把二进制数据按位循环左移,而是把数组中的数据按其在数组中的位置循环左移。具体的方法入下。

原字符点阵数组中的16个数据不延长,但下一帧取的16个数据,是把上一帧的16个数据的位置(先后顺序)“循环左移”一次,即原来第2个移到第1个,原来第3个移到第2个······原来第1个移到第16个。实现数组数据循环左移的方法有:第一,遍一个“数组数据循环左移子程序”,该子程序每执行一次可把数组中的额数据循环左移一次,主程序中先调用一次该子程序,时数组中的数

第 11 页 共 28页

陕西理工学院毕业设计

据循环左移这一次,然后再从数组中取数据显示。当数组中的额数据个数较多时,片内RAM将不够大,必须将数组定义在片外RAM中。第二,不用子程序,而是用变量判断控制实现数组数据的循环左移。

(2) 行扫描方式左移:行向组字显示字符水平方向的左移。如果是行向组字(行扫描方式,点阵数据为列码,左边为敌位右边为高位),希望显示向左移动的一个字符,第1次扫描从列码的点阵数组中取第1~16个数据,送到列码输出口,对应的8个数据,同时用行码输出口输出行码,分别控制扫描第1~16行。扫描完成这16个数据之后,第2次扫描的第16个数据,应将原来第1次扫描的16列码每一个都循环右移一位(如果是显示右移则应循环左移),再进行扫描。如此,每进行下一次扫描,把上一次扫描的16个列码都循环右移一位,再进行扫描。

数据的右移与数据的左移相似,只是取码的顺序相反而已,在此就不再赘述。 2.数据的上下移动 (1)列扫描方式向上移动

列向组字显示字符竖直方向的移动。若是列向组字,希望显示向上移动一个字符,第1次扫描从行码的点阵数组中取第1~16个数据,送行码输出口,对应于这16个数据,同时用列码输出口输出列码,分别控制扫描第1~16列。由于是列向组字(上高下低),扫描完成这16个数据后,第2次扫描的16个数据,应将原来的第1次扫描的16个行码每一个都循环右移一位,使显示的点都上移一行(如果是显示向下滚动则应循环左移),再进行扫描。如此,每进行下一次的扫描,把上一次的16个行码都循环右移一位,再进行扫描就实现了数据的向上移动。

也可以用字型的方法容易理解,以下的16×16的LED显示一个字是8个字型,首先扫描的而是第一个字型,同样是16行,16列扫描,16次显示;完成一个字型后,再扫描第二个字型;完成第二个字型后,再扫描第三个字型······以此类推,即可产生该文字向上移动的感觉

当把第一个字型编码中,每行显示的数据都右移一位,以产生第二个字型编码,即可产生字符向上滚动的感觉。

当第一个字符扫描完成后,就进行这样的调整动作,以产生第二个字型的编码。同样的,当第二个字型完成之后,就进行这样的调整动作,以产生第三个字型的编码。调整的动作是先将8个编码根据序填入储存器,例如第1行编码存入20地址,第2行编码存入21地址······要进行上移调整时,则从20地址数据开始,每笔数据都右移一位即可。

下图2.15仅以字型移动的方法画图。

第 12 页 共 28页

陕西理工学院毕业设计

图3.15 字形法上下移动示意图

(2)行扫描方式上下移动

行向组字显示字符竖直方向的移动

方法1:延长数组法。如果是行向组字,希望显示向上移动的一个字符,第1次扫描从列码的点阵数组中取第1~16个数据,送列码输出口,对应于这8个数据,同时用行码输出口输出行码,分别控制扫描第1~16行。第2次扫描从点阵数组中取第2~17个额数据(第17个数据与地1个数据同),分别送列码输出口,对应于这16个数据,同时用行码输出口输出行码,仍分别控制地1~16行。第3次扫描从点阵数组中取第3~18个数据(第18个数据与地2个数据同)扫描;······如此就实现了字符的向上移动。

方法2:数组数据“循环左移法”。实现数组数据循环左移的方法与上类似。也有:用数组数据循环左移子程序;不用子程序,而是用变量判断控制实现数组数据的循环左移。 3.7 LED阵列驱动电路

正向点亮一颗LED,至少也得10到20毫安,若电流不够大,则LED不够亮!而不管是8051的输入还是输出端其高态输出电流都不是很高,不过1~2毫安而已。因此,很难直接高态驱动LED。这时候就需要额外的驱动电路,分别针对共阳极和共阴极LED阵列,有两种不同的驱动方式。针对输出态的不同,分为:高态扫描-高态显示,高态扫描-低态显示,低态扫描-高态显示和低态扫描-低态显示四种方式。下面针对设计中实际用到的一种驱动方式介绍一种:共阴型低态扫描-低态显示信号驱动电路。

图2.17所示是针对共阴性LED阵列而设计的驱动电路,在这种驱动电路采用低态扫描,也就是任何时间只有一个高态信号,其他则为低态。一行扫描完成之后,再把高态信号转到临近的其他行。扫描信号经限流电阻接到PNP晶体管的基极,晶体管的集电极接地,射极则连至LED点阵的列引脚,若要同时点亮该列的16个LED,则晶体管的电流必须大于200毫安才行。常用的2N3904之类就可以达到当低态的列扫描信号输入晶体管的基极后,该晶体管即为正向,而产生电流,即可使该列的LED具有点亮的条件

所要的显示信号连接到一个PNP晶体管的基极,而该晶体管的射极连接到VCC,同样的,当低态的显示信号输入时,晶体管的集电极电流将流入行LED的阳极,即可点亮该行的LED。如图1.17

第 13 页 共 28页

陕西理工学院毕业设计

所示.

图3.17共阴型低态扫描-低态显示信号驱动电路

若要并接多个LED阵列,如连接使用4个8×8LED阵列,连接成16×16LED阵列,则一个扫描信号同时驱动两个LED阵列。如在本设计中要显示的字比较大,用一个8×8的点阵无法显示完整,这就需要用四块8×8的点阵组成一块16×16的点阵,这样就可以显示完整的汉字了,若要并联多个8×8的LED组成16×16的点阵,则一个扫描信号同时要驱动两行的LED。如下图1.18所示。

图3.18 16×16的点阵驱动图

这时候就需要靠锁存器(74LS373)将这两组显示信号锁住,此处的锁存器是以低态输出的,其输出的电压可达24毫安,足以驱动一个LED;若嫌不足,可以选用74A373其输出的电压可达48

第 14 页 共 28页

陕西理工学院毕业设计

毫安,当74LS373得G脚为高态时,数据可以从输入端传输到锁存器中;G脚为低态时,数据被锁住,不会随输入端而变。另外OC脚为输出控制引脚,当OC脚为高态时,输出呈现高阻抗;OC为低态时,数据会由锁存器输出。

在这个电路之中驱动的扫描信号总共有16条,如果直接由8051输出,将占用2个PORT口,浪费了宝贵的资源,不太理想,在此使用的是一个4对16的译码器 (74LS154),这个译码器是将输入的16进位码解码输出低态的扫描信号。输出的低态扫描信号可直接接到PNP晶体管的基极,如果太大的话也可以先经过限流电阻再接到PNP晶体管的基极,信号最后经过晶体管的放大后即可推动16个LED点阵了。

4 软件设计

4.1 单片机延时子程序

延时程序在单片机编程中使用非常广泛,也很重要,在本毕业设计的程序中用到了延时子程序,所以在此详细的叙述一下。在弄清延时程序指令的用法之前,要清楚的了解延时程序的基本概念,机器周期和指令周期的区别和联系、相关指令的用法等。

我们知道程序设计是单片机开发最重要的工作,而程序在执行过程中常常需要完成延时的功能。例如在本设计中,行向的扫描要控制每行的扫描时间,还有所有的字移动有一定的时间间隔,而在所有的字移动一遍结束的一瞬间到下一遍移动开始的一瞬间要有延时,这时的延时可以和移动的时间相同以保持移动的连贯性,也可以不同作为每次从头开始的停顿,在上述就可以通过延时程序来完成。

1. 机器周期和指令周期

(1)机器周期是指单片机完成一个基本操作所花费的时间,一般使用微秒来计量单片机的运行速度,51单片机的一个机器周期包括12 个时钟振荡周期,也就是说如果51 单片机采用12MHz 晶振,那么执行一个机器周期就只需要1μs;如果采用的是6MHz 的晶振,那么执行一个机器周期就需要2 μs。

(2)指令周期是指单片机执行一条指令所需要的时间,一般利用单片机的机器周期来计量指令周期。

在51 单片机里有单周期指令(执行这条指令只需一个机器周期),双周期指令(执行这条指令只需要两个 机器周期),四周期指令(执行这条指令需要四个机器周期)。除了乘、除两条指令是四周期指令,其余均 为单周期或双周期指令。也就是说,如果51 单片机采用的是12MHz 晶振,那么它执行一条指令一般只需 1~2 微秒的时间;如果采用的是6MHz 晶振,执行一条指令一般就需2~4微秒的时间。

以12MHZ晶振为例,指令周期、机器周期与时钟周期的关系是:

指令周期:CPU执行一条指令所需要的时间称为指令周期,它是以机器周期为单位的,指令不同,所需的机器周期也不同。

时钟周期:也称为振荡周期,一个时钟周期=晶振的倒数。 MCS-51单片机的一个机器周期=6个状态周期=12个时钟周期。

MCS-51单片机的指令有单字节、双字节和三字节的,它们的指令周期不尽相同,一个单周期指令包含一个机器周期,即12个时钟周期,所以一条单周期指令被执行所占时间为12×(1/12000000)=1μs。

了解以上概念后,那么可以依据单片机器件手册中89C51的指令执行周期和其所用晶振频率来完成需要精确延时时间的延时程序。

2. 延时指令

在单片机编程里面并没有真正的延时指令,从上面的概念中我们知道单片机每执行一条指令都需要一 定的时间,所以要达到延时的效果,只须让单片机不断地执行没有具体实际意义的指令,从而达到了延时 的效果。

(1)数据传送指令 MOV

第 15 页 共 28页

陕西理工学院毕业设计

数据传送指令功能是将数据从一个地方复制、拷贝到另一个地方。

如:MOV R7,#80H ;将数据80H 送到寄存器R7,这时寄存器R7 里面存放着80H,就单这条 指令而言并没有任何实际意义,而执行该指令则需要一个机器周期。

(2)空操作指令 NOP

空操作指令功能只是让单片机执行没有意义的操作,消耗一个机器周期。 (3)循环转移指令 DJNZ

循环转移指令功能是将第一个数进行减1 并判断是否为0,不为0 则转移到指定地点;为0 则往下执行。

如:DJNZ R7,KK ;将寄存器R7 的内容减1 并判断寄存器R7 里的内容减完1 后是否为0,如果 不为0 则转移到地址标号为KK 的地方;如果为0 则执行下一条指令。这条指令需要2个机器周期。

循环转移指令(DJNZ )除了可以给定地址标号让其跳转外,还可以将地址标号改成$,这样 程序就跳回本指令执行。例如: DJNZ R7,$ ;R7 内容减1 不为0,则再次执行本指令;为0 则往下执行,当R7 的值改为10 时,则执行完该条程序所需的时间为2*10=20 μs。

利用以上三条指令的组合就可以比较精确地编写出所需要的延时程序。 下面是本设计的程序中延时程序的计算:

MOV R3,#200; ① 1

D1: MOV R5,#250; ② 1 F1: DJNZ R5, F1; ③ 2*R5

DJNZ R3,D1; ④ 2*R3+(1+2*R5)*R3 RET 2

上面这个子程序共有四条指令,现在分别就每一条指令 被执行的次数和所耗时间进行分析。 第一句:MOV R3,#200 在整个子程序中只被执行一次,且为单周期指令,所以耗时1μs 第二句:MOV R5,#250 从②看到④只要R3-1不为0,就会返回到这句,共执行了R3次,共耗时200μs

第三句:DJNZ R5,F1 只要R5-1不为0,就反复执行此句(内循环R5次),又受外循环R3控制,所以共执行R3*R5次,因是双周期指令,所以耗时2*R3*R5μs。 所以精确延时时间为:1+(1×200)+(2×250×200)+(2×200)+2 =(2*250+3)*200+3 =100603μs ≈100ms =0.1s

4.2点阵左移显示的流程图及分析

流程图(图2.1)和程序的简要说明:在程序的开始设定初始的地址是0H,并定义了”选择符号F”的初值为0,为下面的点阵扫描的出口选择准备。在主程序的开始的延时子程序,延时0.1秒,既是在程序通电启动开始的停顿,也作为一次移动的末尾时到开始下一次重复移动开始之间的停顿,在上面的“延时子程序”中已经介绍了计算的方法。程序接着向下运行,定义了取码指针的位置,设为00H的初始位置,再下面的74LS154扫描指针的初值设为00H,是因为扫描要从开始的零点开始扫。 程序的循环运行是从M3开始的,M3的开始10行程序是点阵颜色的选择,即确定列扫描出口的选择,因为F的初值是0,所以先从扫描信号先从P1口输出,即首先显示的是红色的点阵。扫描信号输出后,取码指针先去的第一个码送到点阵的上半部分,打开上部分点阵的74LS373锁存器关闭下面部分74LS373锁存器,把信号送到点阵的上部分。再指针加1,关闭上部分点阵的74LS373锁存器,打开下面部分74LS373锁存器,取相邻的码送到点阵的下半部分,紧挨着的延时程序是设定每列扫描的时间: MOV R3,#50; DJNZ R3,$;

第 16 页 共 28页

陕西理工学院毕业设计

延时时间为:1+(2*50)=101us≈0.1ms

下面的“DJNZ R6,M3;”到M3的循环可以计算显示一次一个整屏的时间为0.1ms*16=1.1 ms,再下面的“DJNZ R1,M2;”到M2的循环可以计算出每个屏的停留时间,也是向左每移动一下的时间间隔为0.1ms*16*65=104ms=0.1s。

当字型向左移动一位的时候,取码指针应在先加2再进行下一个字型的取码,因为本设计每1列的码为2个。最后的部分代码: XRL A,#128; JNZ M1; CPL F0;

JMP START;

的意思是:在控制字型移动完以后,返回到头重新开始移动,因为在本设计是显示6个字型,6个字型的码为192个,取码指针的初始为0,每次加2,到192时循环结束,改变F的状态,跳到程序的最上面开始部分,开始黄色字型的移动显示。

说明一下:本设计是以显示6个字的循环为例的,正如前面所说,字型可以任意加进去,显示任意多的字左移的显示,还可以显示一些符号和图形。只要有字型的代码,再稍微改一下程序就可以显示了。

显示效果:开始停0.1秒,显示向左移动的红色字“XXXX”,移动的速度为每0.1秒移动一下,到左后一个字。 在主程序的开始的延时作为一次移动的末尾时到开始下一次重复移动开始之间的停顿,和字符移动的时间间隔相同,保持了移动的平稳连贯性。

第 17 页 共 28页

陕西理工学院毕业设计

开始 START: 清除屏幕 取码指针载入A 到TABLE取下半部数据 F=0 P0.0置1,P0.1清0输出至P2延时 取码值加1并延时 取码指针20H初值为00 清除屏幕 154扫描指针初值为00 扫描下一行 M2 显示1屏? Y 清除154扫描设置每屏停留时间 N 每屏4字,取码指针存R0 M3 扫描指针→A Y F=0? P0.2清零P0. 1清零P0. 2置1输出至P0.3扫描 M4 取码指针载入A N N N M1 每屏停留的时间Y 取码指针载入A P0.1置1输出至P0.1扫指针加2并回存 到TABLE取上半部数据 P0.0清0,P0.1置1输出至P2口显示 取下一个码 8个字都左移完? Y F0取反 RET 图4.1点阵左移显示的流程图 第 18 页 共 28页

陕西理工学院毕业设计

4.3 PROTEUS仿真

Proteus仿真时,单片机需要加载程序,加载程序为.HEX文件。本设计利用Keil μVision2, 在新建Keil项目时选择AT89C51单片机作为CPU,将源程序导入,在“Options For Target”对话窗口中,选中“Output”选项中的“Create HEX File”,编译链接后就可以生成.HEX文件。在Proteus ISIS中,选中AT89C51并单击鼠标左键,对AT89C51进行设置,设置单片机时钟频率为12MHz,按照正确的文件路径加载.HEX文件。对单片机设置完毕后就可以开始仿真了。仿真过程中如有硬件问题可在Proteus ISIS中直接修改,如有软件问题可在Keil μVision2中直接修改,通过Keil与Proteus的联合调试就可以得到满意的结果。利用Proteus实现了对点阵式LED滚动汉字显示屏的仿真,说明程序和电路图都没有问题。 4.4 调试

调试主要分为硬件调试和软件调试:

硬件调试:在焊接电路板的时候,应该从最基本的最小系统开始,分模块,逐个进行焊接测试。在对各个硬件模块进行测试时,要保证软件正确的情况下去测试硬件,要不然发生错误时,不知道到底是哪一方出错了。当然,在设计的过程中也存在着失误和不足,在调试中进行修改了。

软件调试:软件部分是先参考书上的例子,然后自己根据硬件电路写程序,由于以前所学是单片机汇编语言,所以这个系统在编写程序过程中都采用汇编语言编写。刚刚开始,编写不会一次性通过,经过仔细分析修改最后编译成功。但是,在实际写如S51中,LED显示屏出现各种各样的乱码,通过再次认真仔细分析多次修改程序后,程序能够正常运行。

[8]

结束语

本次毕业设计从5月中旬到现在有一个多月,回顾着些天我感到学到了很多东西,在写这个心得的时候,我想就这些天的收获,说一说自己内心的想法。

本设计的是一个室内用16x16的点阵LED图文显示屏,能够在目测条件下LED显示屏各点亮度均匀、充足,可显示图形和文字,显示图形和文字应稳定、清晰无串扰。图形或文字显示有静止、移入移出等显示方式。本系统具有硬件少,结构简单,容易实现,性能稳定可靠,成本低等特点。

总结本文的研究工作,主要做了下面几点工作:

一、通过查阅大量的相关资料,详细了解了LED的发光原理和LED显示屏的原理,了解了LED的现状,清楚地了解了LED显示屏与其它显示屏相比较有那些优点,明确了研究目标。并且通过对单片机资料的查阅和应用,更进一步增加了对单片机知识的理解和运用能力。并证实了自己的思路:“查资料→思考总结→运用→找出差错,再查资料和向别人询问→再次运用”的正确性。

二,本文设计的LED显示屏能够实现在目测条件下LED显示屏各点亮度均匀、充足,可显示图形和文字,显示图形和文字应稳定、清晰无串扰。图形或文字显示有静止、移入移出等显示方式。

三,本文列出了系统具体的硬件设计方案,硬件结构电路图,软件流程图和具体汇编语言程序设计与调试等方面。

四,在这次毕业设计的过程中学会了 Protel 的基本使用,感到Protel对应用电子专业的同学来说是一门很有用的课程。在运用Protel时要格外小心,例如在画PCB电路板的时候,要注意基本的布板原则。例如,在进行PCB布板的时候,滤波电容不够靠近芯片的电源脚和地脚。

五,通过这次毕业设计,重新复习并进一步增强了动手的能力,学以致用,把只是运用到实际生活中才是根本目的。

六,存在问题:没有考虑仿真软件是一个理想的仿真环境,而实际连接的电路板会由于譬如连接不当,相邻器件间的干扰等等的问题导致在仿真软件中能良好运行的程序,出现显示问题,经过排查和合理的器件摆放焊接,问题解决。

总体来说这次的毕业设计很成功,达到了预想的目的:学到了知识,提高了能力,完成了任务。有点缺憾是时间有限,不能进一步深入和扩散学习和研究。希望有时间可以对程序和电路图作更进一步的改进,譬如实现点阵的上下移动,对角线移动,三色显示等。

第 19 页 共 28页

陕西理工学院毕业设计

致谢

经过一个月的努力,毕业设计终于完成了,在此期间,学到了很多有用的知识,把理论知识运用到实践中,积累了宝贵的经验。

在此期间,特别感谢刘老师对我的指导和关怀,还有同学们对我的帮助,是他们在我毕业的最后关头给了我们巨大的帮助与鼓励,使我能够顺利完成毕业设计,在此表示衷心的感激。老师们认真负责的工作态度,严谨的治学精神和深厚的理论水平都使我收益匪浅。他无论在理论上还是在实践中,都给与我很大的帮助,使我得到不少的提高这对于我以后的工作和学习都有一种巨大的帮助,感谢他耐心的辅导,同时感谢母校对我四年来的教育和关心,在这里我不仅学到了专业知识,还学到了很多做人的道理。使我明确了以后的方向,树立了良好的价值观,在这里学到的一切都使我终身受益。

再次衷心感谢所有关心和帮助过我的老师和同学,谢谢你们。

参考文献

[1]张义,陈敌北编著.例说8051[M].北京:人民邮电出版社,2006年.8-9页.

[2]周越主编.单片机技术实验实训教程[M].北京:中国水利水电出版社,2007年.53-55页. [3]周越主编.单片机应用技术[M].北京:中国水利水电出版社,2009年.132-133页. [4]李全利编.单片机原理及应用技术[M].北京:高等教育出版社,2004年.55-57 页. [5]李忠国,陈刚编著.单片机应用技能实训[M].北京:人民邮电出版社,2006年.78-79页. [6]赵建领编著.Protel电路设计与制版宝典[M].北京:电子工业出版社,2007年.311-312页. [7]郭振民,丁红主编.电子设计自动化EDA[M].北京:中国水利水电出版社,2009年.95-96页.

[8]周润景等编著.Proteus在MCS-51&ARM7系统中的应用百例[J].电子制作,·2006年第六期:12-13页.

[9] 杨延宁,刘立军, 基于Proteus的单片机汉字点阵显示电路设计[A] CHINESE JOURNAL OF LIQUID CRYSTALS

AND DISPLAYS. 液晶与显示[C]. 西北大学,光子学与光子技术研究所: ZHANG Zhi-yong.2009.24-25页. [10] 郭兆正LED点阵显示屏的设计[A].何利明.单片机应用技术选编[C]辽宁:渤海大学学报:郭兆正.2005,35-37页 [11] Grantham K. H. Pang ,Chi-Ho Chan ,Thomas T. O. Kwan. Tricolor light-emitting diode dot matrix display system

withaudio output[J]. IEEE Transactions on Industry Applications,2001,37:1-1

[12] KATSUSHIRO IIO ,SHINYA KONDOH . A Memorable and Flexible Dot Matrix Type Display Using Ferroelectric Liquid Crystals[J]. Ferroelectrics ,2008,365:11-12.

第 20 页 共 28页

陕西理工学院毕业设计

附录一.程序代码

ORG 0000H;

CLR F0;颜色选择符号F0清零 START: MOV A,#00H;清除屏幕 MOV P2,A;显示信号输出到P2口 MOV R3,#200;延时程序 D1: MOV R5,#250; F1: DJNZ R5,F1; DJNZ R3,D1;

MOVE:MOV 20H,#00;取码指针地址20H初值为00 MOV R4,00H;74LS154扫描指针初值为00 M1:MOV R1,#65;每屏停留时间

M2:MOV R6,#16;每屏一个字,16个数据码 MOV R0,20H;取码指针存入R0 M3: MOV A,R4;扫描指针载入A CLR P0.2;清P0.2 SETB P0.3;P0.3置1

MOV P1,A;输出至P1扫描列 SJMP M4;

ORGANGE:MOV P3,A; CLR P0.3;

M4: MOV A,R0;取码指针载入A

MOV DPTR,#TABLE;数据指针指到 TABLE MOVC A,@A+DPTR;到TABLE取上半部数据码 SETB P0.1;P0.1口置1 CLR P0.0;清P0.0口

MOV P2,A;输出至P2口显示 INC R0;取下一个码

MOV A,R0;取码指针载入A

MOV DPTR,#TABLE;数据指针指到TABLE MOVC A,@A+DPTR;到TABLE取下半部码 SETB P0.0; CLR P0.1;

MOV P2,A;输出到P2口显示 INC R0;取码值加1 MOV R3,#50;延时 DJNZ R3,$;

MOV A,#00H;清除屏幕 MOV P2,A;

INC R4;扫描下一行

DJNZ R6,M3;判断显示一屏

MOV R4,#00;清除74LS154扫描指针为00 DJNZ R1,M2;每屏停留时间 MOV A,20H;取码指针载入A ADD A,#02;指针加2

第 21 页 共 28页

陕西理工学院毕业设计

MOV 20H,A;再存入20H地址取码指针 XRL A,#128;四个字是否都左移完? JNZ M1;否,跳到M1

SJMP START;是,跳到START TABLE:

DB 7FH,FFH,40H,00H,44H,20H,5AH,12H,61H,E2H,14H,84H,13H,88H,10H,B0H; DB FFH,C0H,10H,A0H,11H,90H,12H,88H,14H,84H,10H,82H,00H,82H,00H,00H; DB 40H,00H,4FH,FEH,48H,14H,48H,24H,48H,44H,7FH,84H,48H,04H,48H,04H; DB 48H,04H,7FH,84H,48H,44H,48H,44H,48H,44H,4FH,FEH,40H,00H,00H,00H; DB 22H,08H,22H,08H,3FH,F0H,22H,10H,22H,12H,00H,02H,7FH,A2H,49H,22H; DB 49H,22H,7FH,FEH,49H,22H,49H,22H,49H,22H,7FH,A2H,00H,02H,00H,00H; DB 00H,04H,00H,04H,40H,04H,40H,04H,40H,04H,40H,04H,40H,04H,7FH,FCH; DB 40H,04H,40H,04H,40H,04H,40H,04H,40H,04H,40H,04H,00H,04H,00H,00H; DB 02H,00H,0CH,40H,08H,40H,48H,40H,3AH,40H,2AH,40H,0AH,42H,8AH,41H; DB 7AH,FEH,2BH,40H,0AH,40H,18H,40H,EAH,40H,4CH,40H,08H,40H,00H,00H; DB 7FH,FFH,40H,00H,4CH,40H,52H,20H,61H,C1H,30H,82H,24H,8CH,24H,F0H; DB A4H,80H,64H,80H,24H,FEH,24H,81H,24H,81H,30H,81H,20H,8FH,00H,00H;END 附录二.主要芯片介绍 1. 8051系列的单片机

AT89C51单片机为很多嵌入式控制系统提供了一种灵活性高且价廉的方案。图片见下图附录1。

附录1 89S51管脚图

(1).管脚说明

VCC:供电电压。 GND:接地。

P0口:P0口为一个8位漏级开路双向I/O口,每脚可吸收8TTL门电流。当P1口的管脚第一次写1时,被定义为高阻输入。P0能够用于外部程序数据存储器,它可以被定义为数据/地址的第八位。在FIASH编程时,P0 口作为原码输入口,当FIASH进行校验时,P0输出原码,此时P0外部必须被拉高。

P1口:P1口是一个内部提供上拉电阻的8位双向I/O口,P1口缓冲器能接收输出4TTL门电流。P1口管脚写入1后,被内部上拉为高,可用作输入,P1口被外部下拉为低电平时,将输出电流,这是由于内部上拉的缘故。在FLASH编程和校验时,P1口作为第八位地址接收。

P2口:P2口为一个内部上拉电阻的8位双向I/O口,P2口缓冲器可接收,输出4个TTL门电流,

第 22 页 共 28页

陕西理工学院毕业设计

当P2口被写“1”时,其管脚被内部上拉电阻拉高,且作为输入。并因此作为输入时,P2口的管脚被外部拉低,将输出电流。这是由于内部上拉的缘故。P2口当用于外部程序存储器或16位地址外部数据存储器进行存取时,P2口输出地址的高八位。在给出地址“1”时,它利用内部上拉优势,当对外部八位地址数据存储器进行读写时,P2口输出其特殊功能寄存器的内容。P2口在FLASH编程和校验时接收高八位地址信号和控制信号。

P3口:P3口管脚是8个带内部上拉电阻的双向I/O口,可接收输出4个TTL门电流。当P3口写入“1”后,它们被内部上拉为高电平,并用作输入。作为输入,由于外部下拉为低电平,P3口将输出电流(ILL)这是由于上拉的缘故。

P3口也可作为AT89C51的一些特殊功能口,如下表所示: 口管脚 备选功能

P3.0 RXD(串行输入口) P3.1 TXD(串行输出口) P3.2 /INT0(外部中断0) P3.3 /INT1(外部中断1) P3.4 T0(记时器0外部输入) P3.5 T1(记时器1外部输入)

P3.6 /WR(外部数据存储器写选通) P3.7 /RD(外部数据存储器读选通)

P3口同时为闪烁编程和编程校验接收一些控制信号。

RST:复位输入。当振荡器复位器件时,要保持RST脚两个机器周期的高电平时间。

ALE/PROG:当访问外部存储器时,地址锁存允许的输出电平用于锁存地址的地位字节。在FLASH编程期间,此引脚用于输入编程脉冲。在平时,ALE端以不变的频率周期输出正脉冲信号,此频率为振荡器频率的1/6。因此它可用作对外部输出的脉冲或用于定时目的。然而要注意的是:每当用作外部数据存储器时,将跳过一个ALE脉冲。如想禁止ALE的输出可在SFR8EH地址上置0。此时, ALE只有在执行MOVX,MOVC指令是ALE才起作用。另外,该引脚被略微拉高。如果微处理器在外部执行状态ALE禁止,置位无效。

/PSEN:外部程序存储器的选通信号。在由外部程序存储器取指期间,每个机器周期两次/PSEN有效。但在访问外部数据存储器时,这两次有效的/PSEN信号将不出现。

/EA/VPP:当/EA保持低电平时,则在此期间外部程序存储器(0000H-FFFFH),不管是否有内部程序存储器。注意加密方式1时,/EA将内部锁定为RESET;当/EA端保持高电平时,此间内部程序存储器。在FLASH编程期间,此引脚也用于施加12V编程电源(VPP)。 XTAL1:反向振荡放大器的输入及内部时钟工作电路的输入。 XTAL2:来自反向振荡器的输出 2. 74LS154

(1),74ls154功能简介:54/74154 为 4 线-16 线译码器,当选通端(G1、G2)均为低电平时,可将地址端(ABCD)的二进制编码在一个对应的输出端,以低电平译出。 如果将G1和G2中的一个作为数据输入端,由ABCD对输出寻址,74LS154还可作1线-16线数据分配器。

第 23 页 共 28页

陕西理工学院毕业设计

附录2 74LS154管脚图

(2)引脚功能介绍

A、B、C、D 译码地址输入端(低电平有效)

G1、G2 选通端(低电平有效) 0-15 输出端(低电平有效)

(3)74ls154真值表:

附录3 74LS373

3. 74LS373

第 24 页 共 28页

陕西理工学院毕业设计

附录4 74LS373管脚图

373为三态输出的八D透明锁存器,共有54/74S373和54/74LS373两种线路结构型式。373为三态输出的8 D透明锁存器, 373的输出端O0-O7可直接与总线相连。当三态允许控制端OE为低电平时,O0-O7为正常逻辑状态,可用来驱动负载或总线。当OE为高电平时,O0-O7呈高阻态,即不驱动总线,也不为总线的负载,但锁存器内部的逻辑操作不受影响。当锁存允许端LE为高电平时,O随数据D而变。当LE为低电平时,O被锁存在已建立的数据电平。当LE端施密特触发器的输入滞后作用,使交流和直流噪声抗扰度被改善400mV。

(1) 373引出端符号:

D0~D7-----数据输入端 OE-----三态允许控制端(低电平有效) LE-----锁存允许端 O0-O7-----输出端

(2) 74LS373真值表

附录5 74LS373真值表

附录三.仿真电路图

第 25 页 共 28页

陕西理工学院毕业设计

第 26 页 共 28页

陕西理工学院毕业设计

附录四.实物图片

第 27 页 共 28页

本文来源:https://www.bwwdw.com/article/6zj8.html

Top