《毕业设计(论文)基于AVR单片机的点阵屏系统的设计与仿真.doc》由会员分享,可在线阅读,更多相关《毕业设计(论文)基于AVR单片机的点阵屏系统的设计与仿真.doc(54页珍藏版)》请在三一办公上搜索。
1、 毕业设计(论文)题 目 基于AVR单片机的点阵屏 系统的设计与仿真 专 业 电子信息科学与技术 班 级 电技072班 学 生 指导教师 2011 年毕业设计论文题目不超过20个汉字专业:电子信息科学与技术班级:电技072班作者:指导教师: 职称:答辩日期:2011-06-18摘 要本设计是一1616点阵LED电子显示屏的设计。以美国ATMEL 公司生产的40脚单片机Atmega16为核心,介绍了以它为控制系统的LED点阵电子显示屏的动态设计和开发过程。通过该芯片控制两个行驱动器 74HC573和两个列驱动器74HC573来驱动显示屏显示。该电子显示屏可以显示各种文字或单色图像,全屏能显示1个
2、汉字,采用4块88点阵LED显示模块来组成1616点阵显示模式。显示采用动态显示,使得图形或文字能够实现静止、移入移出等多种显示方式。文中详细介绍了LED点阵显示的硬件设计思路、硬件电路各个部分的功能及原理、相应软件的程序设计,以及使用说明等。 单片机控制系统程序采用单片机C语言进行编辑,通过编程控制各显示点对应LED阳极和阴极端的电平,就可以有效的控制各显示点的亮灭。所显示字符的点阵数据可以自行编写(即直接点阵画图)。 经实践证明,该系统显示误差小,性能稳定,扩展能力强。关键词:Atmega16单片机;LED;点阵显示;C语言 AbstractThis design is a 16 16 l
3、attice LED electron display monitor design.The whole equipment is with the 40-pin Atmega16 MCU (Micro Controller Unit) produced by the American ATMEL company at the core, introduced take it as the control system LED lattice electron display monitor dynamic design and the development process. Control
4、s two good driver 74HC573 and two row driver 74HC573 through this chip actuates the display monitor demonstration. The electronic screen can show all kinds of written or monochrome images, one full screen display Chinese characters, four pieces of 88 dot-matrix LED display modules to form the 1616 d
5、ot matrix display mode. Show dynamic show that makes static graphic or text can be achieved, shifted out of various formats. This paper describes the hardware design of the LED dot matrix display, and the principle function of the various parts of the circuit, the corresponding software program desi
6、gn and the use of some such.SCM process control system used for editing MCU C language, Programming control points indicated by the corresponding LED anode and overcast extreme level. We can effectively control the defense showed bright spots. The lattice data shows characters can prepare themselves
7、 (that is, direct lattice Painting).As the practice proves, the system possesses advantages in low shows errors, stable,and strong extensible abilities.Keywords: Atmega16 Micro Controller Unit; LED; Lattice display; Dynamic display;C language.目 录前 言i第一章 绪论111 LED及LED显示屏11.2 AVR系列单片机的简介21.2.1 AVR系列单片
8、机及其特点21.2.2 单片机的发展历史简介3第二章 硬件设计42.1 设计框图及介绍42.2 AVR单片机最小应用系统电路设计(图2-2)52.3 LED点阵介绍72.4 LED显示方式82.5 点阵的移动122.6 LED点阵列驱动17第三章 软件设计213.1 单片机延时子系统213.1.1 机器周期和指令周期213.1.2 延时指令223.2点阵显示的流程图及分析23第四章 软件仿真254.1 Protues软件介绍 PROTUES仿真254.1.1 Proteus的工作过程254.1.2 Proteus软件所提供的调试手段264.1.3功能特点264.2 基于AVR单片机的Protu
9、es仿真274.3 调试27第五章 总结29致谢31参考文献32附录33附录一 1616的点阵显示屏的硬件PROTUES仿真图33附录二 程序代码33前 言 LED电子屏显示是集微电子技术、计算机技术、信息处理技术于一体的大型显示屏系统。它发布信息灵活多变,易于控制。LED 显示屏可应用于城市公共场快速准确的发布信息,如商场、车站、码头、繁华街等。她以绚丽的彩色、灵活的显示和多变的图案风糜国内外市场,深受广大用户的欢迎。投入小的成本,加上我们的智慧,就能够获得大的收益。LED 显示屏投入市场将为我国城市的发展重大作用,它的应用前景将会十分广泛。单片机的优点是体积小、重量轻、抗干扰能力强,对环境
10、要求不高,价格低廉,可靠性高,灵活性好,开发较为容易。正因为如此,在我国,单片机已被广泛地应用在工业自动化控制、自动检测、智能仪表、家用电器等各个方面。随着电子设备变成我们日常生活始终必备之物,电子显示产品也成为一个重要组件,提供快捷而方便的通讯。发光二极管(LED)电子显示屏也被广泛应用LED 电子显示屏是集微电子技术、计算机技术、信息处理技术于一体的大型显示屏系统。它以其色彩鲜艳,动态范围广,亮度高,寿命长,工作稳定可靠等优点而成为众多显示媒体以及户外作业显示的理想选择。随着市场的急速需求,在现有的市场上已经出现许多有关点阵显示器有关的产品,如广告活动字幕机,股票显示板,活动广告栏等。它们
11、的优点是可按需要的大小,形状,颜色来组合,可与微处理器连接,做各种广告文字或图形变化,从而来实现市场的各种需求。本文介绍了此系统的研究意义,并详细介绍了基于AVR单片机ATMEGA16的LED电子显示屏的开发设计过程,从最基本的控制原理开始入手把系统分成各个模块,然后对各个模块进行详细的PROTUES仿真设计。系统可以实现字符数字或者汉字的左移右移上移下移。无论是基于单片机技术还是基于逻辑电路其最基本的原理是相同的,即:LED 构成的电子显示屏容入单片机技术,使其在上面显示人们所需要的信息。我们用 LED 显示屏显示信息,不论显示图形还是文字,都是控制与组成这些图形或文字的各个点所在位置相对应
12、的LED器件发光。通常事先把需要显示的图形文字转换成点阵图形,在按照显示控制的要求以一定的格式形成显示数据。对于只控制通断的图文显示屏来说,每个LED 发光器件占据数据中的1 位(1bit),在需要该LED器件发光的数据中相应的位填1,否则填0。当然,根据控制电路的安排,相反的定义同样时可行的。这样依照所需显示的图形文字,按显示屏的各行各列逐点填写显示数据,就可以构成一个显示数据文件。显示图形的数据文件,其格式相对自由,只要能够满足显示控制的要求即可。文字的点阵格式比较规范,可以采用现行计算机通用的字库字模。组成一个字的点阵,其大小也可以有1616、2424、3232、4848 等不同规格。(
13、本文制作的是1616 的四块屏的组合)。通过本次设计与制作LED 显示屏,使我懂得了基本的项目开发与设的过程。还有要作一个项目必须要分工合作,每个人负责一个模块的设计在开发过程中要细心,还要有不怕苦的精神。本系统最复杂的就是软件试阶段,这个阶段的工作量最大,往往是解决了一个问题却又产生了一个新的问题,这就需要我们有足够的耐心与力,还要有扎实的专业知识。 LED 显示屏正在向更高的方向发展,其应用也越来越广泛,而这些是基于电子的发展基础之上的,所以,消费类电子的发展也越来越迅速。LED 显示屏投入市场将为我国城市的繁荣、美化起到重大作用。它的应用前景十分广泛,但暂时在整个消费电子领域还还不算领先
14、,所以,这还需要我们的共同努力!第一章 绪论11 LED及LED显示屏 LED 就是Light Emitting Diode(发光二极管)的缩写。在某些半导体材料的PN结中,注入的少数载流子与多数载流子复合时会把多余的能量以光的形式释放出来,从而把电能直接转换为光能。PN结加反向电压,少数载流子难以注入,故不发光。这种利用注入式电致发光原理制作的二极管叫发光二极管,通称LED。发光二极管是由p 型和n 型半导体组成的二极管。在LED 的p - n 结附近,n 型材料中多数载流子是电子,p 型材料中多数载流子是空穴。p -n 结上未加电压时构成一定的势垒,当加正向偏压时,在外电场作用下,p 区的
15、空穴和n 区的电子就向对方扩散运动,构成少数载流子的注入,从而在p - n结附近产生导带电子和价带空穴的复合,同时释放出相对应的能量h(h 为普朗克常数,为光子频率)而发光。该能量相当于半导体材料的带隙能量Eg(Ev) ,其与发光波长(nm) 的关系为= 1239. 6PEg。LED显示屏是一种通过控制半导体发光二极管的显示方式,用来显示文字、图形、图像、动画、行情、视频、录像信号等各种信息的显示屏幕。LED显示屏分为图文显示屏和视频显示屏,均由LED矩阵块组成。图文显示屏可与计算机同步显示汉字、英文文本和图形;视频显示屏采用微型计算机进行控制,图文、图像并茂,以实时、同步、清晰的信息传播方式
16、播放各种信息,还可显示二维、三维动画、录像、电视、VCD节目以及现场实况。LED显示屏显示画面色彩鲜艳,立体感强,静如油画,动如电影,广泛应用于车站、码头、机场、商场、医院、宾馆、银行、证券市场、建筑市场、拍卖行、工业企业管理和其它公共场所。它的优点:亮度高、工作电压低、功耗小、微型化、易与集成电路匹配、驱动简单、寿命长、耐冲击、性能稳定。1.2 AVR系列单片机的简介1.2.1 AVR系列单片机及其特点 可靠性高:因为芯片是按工业测控环境要求设计的,故抗干扰的能力优于PC机。系统软件(如:程序指令,常数,表格)固化在ROM中,不易受病毒破坏。许多信号的通道均在一个芯片内,故运作时系统稳定可靠
17、。便于扩展:片内具有计算机正常运行所必需的部件,片外有很多供扩展用的(总线,并行和串行的输入/输出)管脚,很容易组成一定规模的计算机应用系统。控制功能强:具有丰富的控制指令:如:条件分支转移指令,I/O口的逻辑操作指令,位处理指令。实用性好:体积小,功耗低,价格便宜,易于产品化。1.2.2.2 AVR单片机的发展历史简介AVR单片机是1997年由ATMEL公司研发出的增强型内置Flash的RISC(Reduced Instruction Set CPU) 精简指令集高速8位单片机。AVR的单片机可以广泛应用于计算机外部设备、工业实时控制、仪器仪表、通讯设备、家用电器等各个领域。 1997年,由
18、Atmel公司挪威设计中心的A先生和V先生,利用Atmel公司的Flash新技术,共同研发出RISC精简指令集高速8位单片机,简称AVR。高可靠性、功能强、高速度、低功耗和低价位 , 一直是衡量单片机性能的重要指标,也是单片机占领市场、赖以生存的必要条件。AVR单片机硬件结构采取8位机与16位机的折中策略,即采用局部寄存器存堆(32个寄存器文件)和单体高速输入/输出的方案(即输入捕获寄存器、输出比较匹配寄存器及相应控制逻辑)。提高了指令执行速度(1Mips/MHz),克服了瓶颈现象,增强了功能;同时又减少了对外设管理的开销,相对简化了硬件结构,降低了成本。故AVR单片机在软/硬件开销、速度、性
19、能和成本诸多方面取得了优化平衡,是高性价比的单片机。AVR单片机内嵌高质量的Flash程序存储器,擦写方便,支持ISP和IAP,便于产品的调试、开发、生产、更新。内嵌长寿命的EEProm可长期保存关键数据,避免断电丢失。片内大容量的RAM不仅能满足一般场合的使用,同时也更有效的支持使用高级语言开发系统程序,并可像MCS-51单片机那样扩展外部 RAM。1.2.2 单片机的发展历史简介单片机诞生于20世纪70年代末,经历了SCM、MCU、SoC三大阶段。 1.SCM即单片微型计算机(Single Chip Microcomputer)阶段,主要是寻求最佳的单片形态嵌入式系统的最佳体系结构。“创新
20、模式”获得成功,奠定了SCM与通用计算机完全不同的发展道路。在开创嵌入式系统独立发展道路上,Intel公司功不可没。 2.MCU即微控制器(Micro Controller Unit)阶段,主要的技术发展方向是:不断扩展满足嵌入式应用时,对象系统要求的各种外围电路与接口电路,突显其对象的智能化控制能力。它所涉及的领域都与对象系统相关,因此,发展MCU的重任不可避免地落在电气、电子技术厂家。从这一角度来看,Intel逐渐淡出MCU的发展也有其客观因素。在发展MCU方面,最著名的厂家当数Philips公司。 Philips公司以其在嵌入式应用方面的巨大优势,将MCS-51从单片微型计算机迅速发展到
21、微控制器。因此,当我们回顾嵌入式系统发展道路时,不要忘记Intel和Philips的历史功绩。 3.单片机是嵌入式系统的独立发展之路,向MCU阶段发展的重要因素,就是寻求应用系统在芯片上的最大化解决;因此,专用单片机的发展自然形成了SoC化趋势。随着微电子技术、IC设计、EDA工具的发展,基于SoC的单片机应用系统设计会有较大的发展。因此,对单片机的理解可以从单片微型计算机、单片微控制器延伸到单片应用系统。第二章 硬件设计2.1 设计框图及介绍 从理论上说,不论显示图形还是文字,只要控制与组成这些图形或文字的各个点所在的位置相对应的LED器件发光,就可以得到我们想要的显示结果,这种同时控制各个
22、发光点亮灭的方法称为静态驱动显示方式。1616的点阵共有256个发光二极管,显然单片机没有这么多的端口,如果我采用锁存器来扩展端口,按8位的锁存器来计算,1616的点阵需要256/8=32个锁存器。这个数字很庞大,因为我们仅仅是1616的点阵,在实际应用中的显示屏往往要大得多,这样在锁存器上花的成本将是一个很庞大的数字。因此在实际应用中的显示屏几乎都不采用这种设计,而采用另外一种称为动态扫描的显示方法。 动态扫描的意思简单地说就是逐行轮流点亮,这样扫描驱动电路就可以实现多行(比如16行)的同名列共用一套驱动器。具体就1616的点阵来说,把所有同1行的发光管的阳极连在一起,把所有同1列的发光管的
23、阴极连在一起(共阳极的接法),先送出对应第一行发光管亮灭的数据并锁存,然后选通第1行使其燃亮一定时间,然后熄灭;再送出第二行的数据并锁存,然后选通第2行使其燃亮相同的时间,然后熄灭;以此类推,第16行之后,又重新燃亮第1行,反复轮回。当这样轮回的速度足够快(每秒24次以上),由于人眼的视觉暂留现象,就能够看到显示屏上稳定的图形了。采用扫描方式进行显示时,每一行有一个行驱动器,各行的同名列共用一个驱动器。显示数据通常存储在单片机的存储器中,按8位一个字节的形式顺序排放。显示时要把一行中各列的数据都传送到相应的列驱动器上去,这就存在一个显示数据传输的问题。从控制电路到列驱动器的数据传输可以采用并列
24、方式或串行方式。显然,采用并行方式时,从控制电路到列驱动器的线路数量大,相应的硬件数目多。当列数很多时,并列传输的方案是不可取的。采用串行传输的方法,控制电路可以只用一根信号线,将列数据一位一位传往列驱动器,在硬件方面无疑是十分经济的。但是,串行传输过程较长,数据按顺序一位一位地输出给列驱动器,只有当一行的各列数据都以传输到位之后,这一行的各列才能并行地进行显示。这样,对于一行的显示过程就可以分解成列数据准备(传输)和列数据显示两部分。对于串行传输方式来说,列数据准备时间可能相当长,在行扫描周期确定的情况下留给行显示的时间就太少了,以致影响到LED的亮度。解决串行传输中列数据准备和列数据显示的
25、时间矛盾问题,可以采用重叠处理的方法。即在显示本行各列数据的同时,传送下一列数据。为了达到重叠处理的目的,列数据的显示就需要具有所存功能。经过上述分析,就可以归纳出列驱动器电路应具有的功能。对于列数据准备来说,它应能实现串入并处的移位功能;对于列数据显示来说,应具有并行锁存的功能。这样,本行已准备好的数据打入并行锁存器进行显示时,串并移位寄存器就可以准备下一行的列数据,而不会影响本行的显示。图2-1为显示屏电路实现的结构框图。单片机列驱动电路电源行驱动电路LED显示点阵 图2-1 显示屏电路结构框图2.2 AVR单片机最小应用系统电路设计(图2-2) 图2-2 AVR单片机 Atmega16的
26、最小系统注: 该最小系统由按键复位电路、晶体振荡电路AD转换滤波线路ISP下载接口JTAG仿真接口电源以及串口电路组成。复位的实现通常用2种方式: 开机上电复位和外部手动复位,本设计用的是外部手动复位。电路图2-3如下:图2-3 单片机复位图单片机Atmega16的工作电压VCC=5V,其EA引脚需接高电平,5V电源电路如图2-4所示。图2-4 单片机电源原理图注: 该电源电路主要模块为IC7805,它能输出稳定的 5V电源,图中整流桥是将市电转变为直流电,电容起到虑波作用由7805的OUT引脚输出5V电压。2.3 LED点阵介绍88单色点阵共需要64个发光二极管组成,且每个二极管是放置在行线
27、与列线的叉点上。本设计是一种实用的汉字显示屏的制作,制作的是双色点阵。考虑到元器件的易购性,没有使用88的点阵发光二极管模块,而是直接使用了256个高亮度发光管,组成了16行16列的发光点阵。实际使用时可以根据这个原理自行扩充显示的字数。对比下面的88单色点阵和88双色点阵可以看出,其实88双色点阵就是两块88单色点阵组合在一起的。要实现用两种颜色显示,只要在电路的设计中适当的连线就可以了。图2-5 88点阵外观及引脚图88单色和双色点阵LED结构分别如下图2-6和2-7所示。 图2-6 88单色点阵内部图 图2-7 88双色点阵内部图2.4 LED显示方式汉字显示屏用于显示汉字、字符及图像信
28、息,在公共汽车、银行、医院及户外广告等地方都有广泛的应用。下面是简单的汉字显示屏的制作,由单片机控制汉字的显示内容。为了降低成本,使用了四块88的LED点阵发光管的模块,组成了一个1616的LED点阵显示屏,如图2-8所示。在这里仅做了四个汉字的显示,在实际的使用中可以根据这个原理自行的扩展显示的汉字,下面是介绍汉字显示的原理。图2-8 四块88的LED点阵组成1616的LED点阵LED驱动显示采用动态扫描方法,动态扫描方式是逐行轮流点亮,这样扫描驱动电路就可以实现多行的同名列共用一套列驱动器。以1616点阵为例,把所有同一行的发光管的阳极连在一起,把所有同一列的发光管的阴极连在一起(共阳的接
29、法),先送出对应第1行发光管亮灭的数据并锁存,然后选通第1行使其燃亮一定的时间,然后熄灭;再送出第2行的数据并锁存,然后选通第2行使其燃亮相同的时间,然后熄灭;.第16行之后,又重新燃亮第1行,反复轮回。当这样轮回的速度足够快(每秒24次以上),由于人眼的视觉暂留现象,就能看到显示屏上稳定的图形。该方法能驱动较多的LED,控制方式较灵活,而且节省单片机的资源。显示数据传输采用串行传输的方法,控制电路可以只用一根信号线,将列数据一位一位传往列驱动器,在硬件方面无疑是十分经济的。但串行传输过程较长,数据按顺序一位一位地输出给列驱动器,只有当一行的各列数据都已传输到位之后,这一行的各列才能并行地进行
30、显示。对于串行传输方式来说,列数据准备时间可能相当长,在行扫描周期确定的情况下,留给行显示的时间就太少了,以致影响到LED的亮度。采用串行传输中列数据准备和列数据显示的时间矛盾,可以采用重叠处理的方法。即在显示本行各列数据的同时,传送下一行的列数据。为了达到重叠处理的目的,列数据的显示就需要有锁存功能。对于列数据准备来说,它应能实现串入并出的移位功能。这样,本行已准备好的数据打入并行锁存器进行显示时,串行移位寄存器就可以准备下一行的列数据,而不会影响本行的显示。LED点阵显示模块进行的方法有两种:(1)水平方向(X方向)扫描,即逐列扫描的方式(简称列扫描方式):此时用一个P口输出列码决定哪一列
31、能亮(相当于位码),用另一个P口输出行码(列数据),决定该行上那哪个LED亮(相当于段码)。能亮的列从左到右扫描完16列(相当于位码循环移动16次)即显示出一个完整的图像。(2)竖直方向(Y方向)扫描,即逐行扫描方式(简称行扫描方式):此时用一个P口输出决定哪一行能亮(相当于位码),另一个P口输出列码(行数据,行数据为将列数据的点阵旋转90度的数据)决定该行上哪些LED灯亮(相当于段码)。能亮的行从上向下扫描完16行(相当于位码循环移位16次)即显示一帧完整的图像。本设计应用的是第一种的扫描方法,即水平方向(X方向)扫描。每一个字由16行16列的点阵形成显示,即每个字均由256个点阵来表示,我
32、们可以把每一个点理解为一个像素。一般我们使用的1616的点阵宋体字库,即所谓的1616,是每一个汉字在纵横各16点的区域内显示的。汉字库从该位置起的32字节信息记录了该字的字模信息。事实上这个汉字屏不仅可以显示汉字,也可以显示在256像素范围内的任何图形。我们以水平方向(x方向)扫描显示汉字的“西”为例来说明其扫描原理,每一个字由16行16列的点阵组成显示,如图下的,如果用8位的Atmega16单片机来控制,由于单片机的总线为8位,一个字需要拆分成两个部分。一般我们把它分解成上部分和下部分,上部分由8*16的点阵组成,下部分也由8*16的点阵组成。在本例中单片机首先显示的是左上角的第一列的部分
33、,即第0列的P00P07口。方向为P00到P07,显示汉字“西”的时候,P00到P04都是灭的,P05亮,即二进制00100000,转换为16进制为40H,如图2-9所示。上半部分第一列完成之后,继续扫描下半部分的第一列,为了接线的方便,我们仍设计成由上往下的扫描方式,即从P27向P20方向扫描,从上图可以看到,这一列所有的都不亮,所以代码为00000000,16进制为00H,然后单片机转向上半部的第二列,除了P05亮,其他的都不亮,即为00000100,16进制为04H,这一列扫描完成之后继续进行下半部分的扫描,除了P2.1亮,其他的为不亮,为二进制00000000,即16进制00H。按照这
34、个方法,继续进行下面的扫描,一共扫描32个8位,可以得出汉字“西”的扫描代码为 :40H,00H,4FH,FEH,48H,14H,48H,24H48H,44H,7FH,84H,48H,04H,48H,04H,48H,04H,7FH,84H,48H,44H,48H,44H,48H,44H,4FH,FEH,40H,00H,00H,00H, 图2-9 点阵显示原理图由这个原理可以看到,无论显示何种字体或图像,都可以用这种方法来分析出它的扫描代码从而显示在屏幕上。了解汉字的显示原理之后,那如何得到汉字的字模信息呢?现在有一些现成的汉字字模生成软件,可从网上下载汉字字库提取程序直接提取字库,如图2-10
35、所示的为一种字模生成软件,软件打开后输入汉字,点击“检取”后,十六进制数据汉字代码即可以自动生成,把我们需要的竖排数据复制到我们的程序即可。 图2-10 汉字字模生成软件2.5 点阵的移动以下以1616点阵为例介绍点阵的移动。要显示一个字符,该字符的点阵数据可以列向(纵向)16点组字,又可以行向(横向)16点组字。无论哪一种组字方法,都既可以显示字符的水平方向的移动,又可以显示竖直方向的移动。1显示字符的左右移动(1)列扫描方式左移动:列向组字显示字符水平方向的移动(左滚动) 在这里有两个方法: 方法1:延长数组法。将原来字符点阵数组的16个数据重复一遍延长,点阵数组的数据个数为32个。每扫描
36、仪帧取8个数据显示,下一帧取数要在数组中后移一个数取数。循环一遍扫16帧。可以假想有两块1616的点阵模块(共32帧)水平平行排列,用一个恰好能罩住8列点阵的中空方框去罩这个点阵,第1(第1帧)罩住最左边数起第一列开始的16列,就扫描显示这16列;第2次(第2帧)使方框右移一列,罩住做左边数起第2列开始的16列,就扫描显示这16列;这样每扫描完一帧使方框右移一列,最后第16次(第16帧)时,罩住左边数起的第16列开始的16列,就扫描显示这16列。如此完成16帧画面的扫描显示,也就完成了整个一次移动循环扫描、之后反复循环,即可呈现显示字符沿水平向左移动的图像,如图2-11所示。 图2-11 方框
37、图法左右移动示意图因为是列向组字(列扫描方式,点阵数据为行码,上边为地位下面为高位),希望显示移动的一个字符,第1次扫描从行码的点阵数组中取第116个数据,送行码输出口,对应于这8个数据,同时用列码输出口输出列码,分别控制第116列。扫描完前16个数据之后,第2次扫描从点阵数组中取第214个数据(第17个数据与地1个数据同),送行码输出口,对应于这16个数据,同时用列码输出口输出列码,仍分别控制扫地116列。第3次扫描从点阵数组中取第318个数据(第18个数据码与地2个数据码相同)扫描;如此实现字符向左移动。以上完成一个图形移动的方法,也可以看成是移动16个不同的字形。如图2-12所示,首先扫
38、描第一个字型,同样是16行,16次扫描,16次显示;完成一个字型的扫描以后,再扫描第二个字型;完成第二个字型的扫描之后,再扫描第三个字型依此类推,即可产生该文字的左移的感觉。 图2-12 字形法左右移动示意图假设如果原本某个汉字的字型(第一个字型),其编码为:00H,10H,20H,30H,40H,50H,60H,70H,80H,90H,0A0H,0B0H,0C0H,0D0H,0E0H,0F0H;第二个字型的编码为:10H,20H,30H,40H,50H,60H,70H,80H,90H,0A0H,0B0H,0C0H,0D0H0E0H,0F0H, 00H;也就是把第一个字型的编码中,第1行显示数
39、据,变为第2行显示数据;第2行显示数据,变成第3行显示数据;第3行显示数据,变成第4行显示数据;第4行显示数据,变成第5行显示数据,以此类推。当第一个字型扫描显示完成之后,就进行这样的动作调整,以产生第二个字型的编码。同样的,当第二个字型扫描完成之后,就进行这样的调整动作,以产生第三个字型的编码。这个调整动作时先将16个编码根据序填入存储器,例如第1行编码存入20H,第二行编码存入21H,要进行左移调整时,则先将20H地址的数据转移到36H地址,再将21H地址的数据转移到20H地址,将22H地址的数据转移到21H地址,将23H地址的数据转移到22H地址,将24H地址的数据转移到23H地址,将2
40、5H地址的数据转移到24H地址,将26H地址的数据转移到25H地址,将27H地址的数据转移到26H地址,将28H地址的数据转移到27H地址。方法2:数组数据“循环左移法”(适合用C语言编写,在此仅作了解)。注意,不是把二进制数据按位循环左移,而是把数组中的数据按其在数组中的位置循环左移。具体的方法入下。原字符点阵数组中的16个数据不延长,但下一帧取的16个数据,是把上一帧的16个数据的位置(先后顺序)“循环左移”一次,即原来第2个移到第1个,原来第3个移到第2个原来第1个移到第16个。实现数组数据循环左移的方法有:第一,遍一个“数组数据循环左移子程序”,该子程序每执行一次可把数组中的额数据循环
41、左移一次,主程序中先调用一次该子程序,时数组中的数据循环左移这一次,然后再从数组中取数据显示。当数组中的额数据个数较多时,片内RAM将不够大,必须将数组定义在片外RAM中。第二,不用子程序,而是用变量判断控制实现数组数据的循环左移。(2) 行扫描方式左移:行向组字显示字符水平方向的左移。如果是行向组字(行扫描方式,点阵数据为列码,左边为敌位右边为高位),希望显示向左移动的一个字符,第1次扫描从列码的点阵数组中取第116个数据,送到列码输出口,对应的8个数据,同时用行码输出口输出行码,分别控制扫描第116行。扫描完成这16个数据之后,第2次扫描的第16个数据,应将原来第1次扫描的16列码每一个都
42、循环右移一位(如果是显示右移则应循环左移),再进行扫描。如此,每进行下一次扫描,把上一次扫描的16个列码都循环右移一位,再进行扫描。数据的右移与数据的左移相似,只是取码的顺序相反而已,在此就不再赘述。2数据的上下移动(1)列扫描方式向上移动列向组字显示字符竖直方向的移动。若是列向组字,希望显示向上移动一个字符,第1次扫描从行码的点阵数组中取第116个数据,送行码输出口,对应于这16个数据,同时用列码输出口输出列码,分别控制扫描第116列。由于是列向组字(上高下低),扫描完成这16个数据后,第2次扫描的16个数据,应将原来的第1次扫描的16个行码每一个都循环右移一位,使显示的点都上移一行(如果是
43、显示向下滚动则应循环左移),再进行扫描。如此,每进行下一次的扫描,把上一次的16个行码都循环右移一位,再进行扫描就实现了数据的向上移动。也可以用字型的方法容易理解,以下的1616的LED显示一个字是8个字型,首先扫描的而是第一个字型,同样是16行,16列扫描,16次显示;完成一个字型后,再扫描第二个字型;完成第二个字型后,再扫描第三个字型,以此类推,即可产生该文字向上移动的感觉当把第一个字型编码中,每行显示的数据都右移一位,以产生第二个字型编码,即可产生字符向上滚动的感觉。当第一个字符扫描完成后,就进行这样的调整动作,以产生第二个字型的编码。同样的,当第二个字型完成之后,就进行这样的调整动作,
44、以产生第三个字型的编码。调整的动作是先将8个编码根据序填入储存器,例如第1行编码存入20地址,第2行编码存入21地址,要进行上移调整时,则从20地址数据开始,每笔数据都右移一位即可。 下图2-13仅以字型移动的方法画图。 图2-13 字形法上下移动示意图(2)行扫描方式上下移动行向组字显示字符竖直方向的移动方法1:延长数组法。如果是行向组字,希望显示向上移动的一个字符,第1次扫描从列码的点阵数组中取第116个数据,送列码输出口,对应于这8个数据,同时用行码输出口输出行码,分别控制扫描第116行。第2次扫描从点阵数组中取第217个额数据(第17个数据与地1个数据同),分别送列码输出口,对应于这1
45、6个数据,同时用行码输出口输出行码,仍分别控制地116行。第3次扫描从点阵数组中取第318个数据(第18个数据与地2个数据同)扫描;如此就实现了字符的向上移动。方法2:数组数据“循环左移法”。实现数组数据循环左移的方法与上类似。也有:用数组数据循环左移子程序;不用子程序,而是用变量判断控制实现数组数据的循环左移。2.6 LED点阵列驱动正向点亮一颗LED,至少也得10到20毫安,若电流不够大,则LED不够亮!而不管是8051的输入还是输出端其高态输出电流都不是很高,不过12毫安而已。因此,很难直接高态驱动LED。这时候就需要额外的驱动电路,分别针对共阳极和共阴极LED阵列,有两种不同的驱动方式
46、。针对输出态的不同,分为:高态扫描-高态显示,高态扫描-低态显示,低态扫描-高态显示和低态扫描-低态显示四种方式。下面针对设计中实际用到的一种驱动方式介绍一种:共阴型低态扫描-低态显示信号驱动电路。图2-14所示是针对共阴性LED阵列而设计的驱动电路,在这种驱动电路采用低态扫描,也就是任何时间只有一个高态信号,其他则为低态。一行扫描完成之后,再把高态信号转到临近的其他行。扫描信号经限流电阻接到PNP晶体管的基极,晶体管的集电极接地,射极则连至LED点阵的列引脚,若要同时点亮该列的16个LED,则晶体管的电流必须大于200毫安才行。常用的2N3904之类就可以达到当低态的列扫描信号输入晶体管的基
47、极后,该晶体管即为正向,而产生电流,即可使该列的LED具有点亮的条件。所要的显示信号连接到一个PNP晶体管的基极,而该晶体管的射极连接到VCC,同样的,当低态的显示信号输入时,晶体管的集电极电流将流入行LED的阳极,即可点亮该行的LED。如图2-14所示。图2-14 共阴型低态扫描-低态显示信号驱动电路 若要并接多个LED阵列,如连接使用4个88LED阵列,连接成1616LED阵列,则一个扫描信号同时驱动两个LED阵列。如在本设计中要显示的字比较大,用一个88的点阵无法显示完整,这就需要用四块88的点阵组成一块1616的点阵,这样就可以显示完整的汉字了,若要并联多个88的LED组成1616的点阵,则一个扫描信号同时要驱动两行的LED。如下图2-15所示。 图2-