基于单片机的16×16LED点阵显示屏设计毕业论文.doc
编号 毕 业 设 计(论文)题目 基于单片机的16×16LED点阵显示屏设计 二级学院 电子信息与自动化学院 专 业 测控技术与仪器 班 级 测控一班 学生姓名 丁徽徽 学号 11107030106 指导教师 米曾真 职称 副教授 时 间 2015年6月6日 目录摘要IAbstractII第一章 绪论11.1 单片机的发展阶段11.2 单片机的发展趋势11.3 单片机的特点31.4 LED简介41.5 LED的特点5第二章 功能要求及方案论证62.1 功能要求62.2 显示模块方案论证6第三章 系统电路的硬件设计93.1 设计框图93.2 单片机的选择93.3 AT89C51芯片简介103.4 系统硬件电路的设计13第四章 系统的程序设计224.1程序的编写过程224.2 程序设计流程图24第五章 软件调试及硬件制作255.1 软件调试及仿真255.2 硬件制作28结束语29致谢30附录37附录A:16*16点阵显示屏设计程序37附录B:proteus ISIS 软件仿真图48附录C:供电以后16*16点阵实物效果图49附录D:元器件清单列表50摘要本设计是基于单片机AT89C51为核心的由4个8×8的点阵显示屏形成的16×16点阵显示屏设计。系统的介绍了由AT89C51为控制系统的点阵显示屏动态设计过程。通过该芯片AT89C51控制一个行驱动器4-16线74HC154译码器和两个列驱动器74HC595级联成串行输入并行输出的移位寄存器来驱动显示屏,该显示屏能显示汉子、字符和图形等。通过按键控制汉字的滚动切换,能实现汉字的移入移出滚动显示。文中介绍了led点阵显示屏的设计思路,软件程序编写的过程、调试仿真以及硬件电路的各个部分电路的功能原理等。单片机控制的系统程序采用的是C语言编写,通过行驱动电路和列驱动电路控制相应led阳极和阴极的电平,就可以有效的控led的亮和灭,所显示的点阵数据可以软件PCtolCD2002标准字库中提取代码。Led显示稳定、功耗低、寿命长、技术成熟、价格低廉得到广泛的应用。文章主要从硬件设计和软件编程两个大的方面来对本次设计进行介绍。关键词:AT89C51;单片机;LED;16*16点阵显示;动态显示 AbstractThis design is based on AT89C51 MCU as the core is formed by 4 8 * 8 16 * 16 dot matrix display screen design. The system introduced by it for the process design of dot matrix display dynamic control system. To drive the display through the chip controls good driver 74HC154 and two row driver 74HC595, the display can show the man and character, through the switch button control characters and Chinese characters, can achieve Chinese characters out rolling display. This paper introduces the design idea of LED dot matrix display, the function principle of each part of the hardware circuit, software design etc.Single chip microcomputer control system program using the C language, the level of drive circuit to control the corresponding LED anode and cathode by driving circuit and column, can effectively control the LED on and off, as shown in the dot matrix data can be extracted from the standard font software code PCtolCD2002. Led stable display, low power consumption, long service life, mature technology, low price is widely used.Keywords: AT89C51; LED; microcontroller; Lattice display; Dynamic display.第一章 绪论1.1 单片机的发展阶段单片机作为微型计算机(microcontroller unit)的一个重要研究领域,速度非常快,应用广泛。单片机发展到现在,已经有成千上万个机种。单片机进过几年飞速的发展,可以分为以下几个阶段:第一阶段(1973-1976):单片机的初级阶段。受时代工艺发展的限制,此阶段的单片机功能简单,初级阶段的单片机应用领域相对窄,处理器速度慢,而且都采用的是双片的形式。第二阶段(1976-1979):低性能的单片机阶段。第三阶段(1979-1982):高性能的单片机阶段。此阶段的单片机大多有多级中断处理系统、片内ROM、RAM容量大,16位位定时系统,有的单片机还内置有A/D转换器而且寻址范围可达64KB,此阶段的单片机普遍带有串行I/O口,串行I/O口方便与外界进行数据交换。第四阶段(1982至今):早期的8位或4位微型处理器的发展以及16、32位单片机的退出阶段。此阶段的主要特征是:一方面因为单片机结构和系统更加完善,功能更加强大,能满足各种微控制要求。另一方面发展16位、32位微型处理器以及专用型计算机用来解决各种问题。16位单片机的产品有Intel公司生产的MCS-96系列单片机。其中32位单片机其震荡频率已达20MHz,除了具有很高的振荡频率而且具有更高的集成度,更高的震荡平率使得32位单片机的数据处理速度比16位单片机更快,性能以及处理速度同8位,16位单片机相比,具有优越性。1.2 单片机的发展趋势 目前,单片机正在朝着多品种方向和高性能方向发展,并且进一步向着生产工艺CMOS化、功耗低、价格低、性能高、体积更小和外围电路内装化多个方向发展。以下是单片机的主要发展方向。CMOS化。近些年, CHMOS技术的不断发展促进了单片机的CMOS化。CMOS芯片除了低功耗特性外,还有功耗可控性,采用的是CMOS(互补金属氧化物半导体工艺)使单片机的工作状态在功耗精细管理之内。这也是8051被80C51取代为标准微处理器芯片的原因。CMOS电路的主要特点是低价格、低功耗、低速度、高密度。因此单片机多数芯片采用的是金属栅氧化物半导体生产工艺。随着生产工艺的提高。HMOS和CHMOS工艺出现,使得CHMOS电路处理器的速度已经达到LSTTL的运算速度。因而CMOS电路将是未来主要的发展方向。 低电压化。低电压化指得是大部分单片机都有省电运行模式WAIT、STOP。当单片机处于待机状态时,运行模式为WAIT、STOP,耗能更低,发热更小。目前单片机压工作范围越来越宽,一般工作电压在36V范围。甚至有的单片机的工作电压的下线已经达到12V。目前0.8V供电的单片机已经产生。高可靠性和低噪声。高可靠性和低噪声值得是单片机能在恶劣的环境条件下工作,电磁抗干扰能力强,噪声低。各大单片机生产公司改进微处理器内部电路采用新技术来改善芯片的可靠性和噪声。串行扩展技术。近些年,单片机的半导体芯片技术迅速发展,单片机采用更多的串行拓展技术,串行拓展技术的目的是为了节约单片机的I/O口资源,用更少的数据线传输数据,使系统更加简洁,体积小可靠性高采用的技术。8051单片机的URAT既能作通用异步接受和发送器,又能作同步移位寄存器,接口电路能同时接收数据和发送数据。因此在单片机在构成多级应用系统的时候,单片机的I/O资源是不够用的,在实际开发中,我们要结合实际有效的采用串行通信和并行通信,其中各自有优缺点。高性能化。单片机的高性能主要是指单片机的很高的运算速度以及系统的控制的可靠性。改进了单片机的中断和定时控制功能。大容量化。大容量化指的是需要单片机ROM和RAM容量更大,能存储更多的数据。在很多工业控制领域,这些低存储容量是远远不够的,必须对单片机的容量进行扩充。为了扩大单片机的容量,采用新的技术新的工艺是单片机大容量化。外围电路内装化。单片机集成度的不断提高,把众多的单片机的外围电路集成在一块很小的芯片内,使系统体积更小。一般的单片机除了具有CPU、定时器/计数器、ROM、RAM、中断等功能外,数模转换功能,声音发生器、液晶显示驱动器、录像机用的锁相电路、DMA控制器等也将集成在单片机芯片内部是未来的发展方向。单片机从出现发展到现在,已经走过了将近几十年的发展历史。单片机的发展是以微处理器技术发展为先导,推动电子技术的发展,小到冰箱空调大到工业控制领域的大型机器都离不开单片机。单片机的发展速度是以时钟频率的快慢为标志。单片机在提高时钟频率追求处理速度的同时,单片机的低噪声、抗干扰能力也是单片机技术发展所追求的。在不提高时钟频率的条件下,一些单片机的生产商改善了单片机的内部时序,使用变频技术提高处理器的运算速度。在单片机的众多家族中,80C51单片机已经成为单片机的发展主流。虽然世界上微处理器的种类繁多,内部装置不兼容,但是客观事实表明,80C51可能事实上标准的单片机芯片。1.3 单片机的特点单片机作为微型机的一个重要分支,单片机把CPU、存储器、定时器和多种输入/输出接口电路各功能部件集成在一块晶体芯片上,集成度非常高,体积非常小。按照功能和组成而言,单片机芯片就是一台计算机。单片机主要有以下几个特点:(1)有优异的性能价格比。(2)集成度高、可靠性高、体积小。单片机尽可能把各个功能部件集成在一块体积小的晶体芯片上,实现了高集成度。体积小有利于抗电磁干扰能力和抗干扰能力增强。芯片本身的设计按工业要求设计的,抗干扰能力都由于一般的CPU,这种优势是其他一般CPU无法相比的。(3)控制功能强、易于拓展。单片机的逻辑功能强,单片机有丰富的逻辑指令系统,可以对I/O口进行拓展,可以对比较复杂的系统进行控制,非常适用专门的控制功能。(4)低功耗、低电压、便携式的产品。(5)具有通信功能,很容易实现分布式和多机控制,形成远程控制和控制网络。1.4 LED简介LED是放光二极管的简称,发光二极管应用领域非常广泛,人类生活已经离不开LED。LED发光能产生绿,红,兰三种颜色,根据光的分解合成原理,这种三原色的色光加以不同比例相加,从而可以混合成所有的颜色,到后期发展成为一种半导体显示器件。已经着生产工艺的提高,以及半导体材料合成技术的研究发展,这种半导体显示器件已经随成为最广泛的显示器件,小到冰箱洗衣机LED显示屏、大到电脑、电视机以及广场的大型LED显示屏,人类生活中已经LED显示屏。LED显示屏是根据半导体放光二极管像素点阵排列,点亮LED的方式是通过单片机控制的,通过编写程序,烧进单片机,从而就可以得到我们想要的显示效果,可以显示文字、图像、图形、动画、视频等各种视觉信息,形成丰富多彩的视频。LED显示屏是集计算机技术、光电子技术、信息处理技术等各种电子技术于一体的高技术的屏幕产品。采用动态扫描技术,显示效果好,图像效果清晰,无杂点,画面稳定,动画效果逼真;显示内容丰富,可显示文字、图像、视频等各种视觉信息;显示方式灵活,可以由用户采取任意编排方式显示;显示的信息量大,显示的信息不受限制。维修方便、稳定可靠、稳定可靠这些都是其他显示屏无法比拟的优势,因此使之应用的到社会经济等各个领域,主要包括证券交易金融信息显示、机场航班动态显示、港口、车站旅客引导信息显示、体育场馆信息显示、道路交通信息、显示广告媒体新产品等诸多领域。通过单片机控制点阵的行列可以显示所需要的图形和文字,显示方式灵活。可以根据需要设计程序,将设计好的程序烧到单片机里,就可以得到满意的显示效果。在对单片机进行设计的时候,可以对点阵进行动态显示也可以进行静态显示,静态显示可以克服占用单片机I/O资源多的问题。随着技术的发展,单片机的时钟速度已经达到20M,由于人眼的视觉暂留,使用动态扫描可以克服占用I/O口资源较多的问题。1.5 LED的特点LED电子显示屏具有亮度高、视角大、绿色环保、安全系数高等众多优点。应用于家庭,银行,医院,饭店等各种公共场所长时间照明以及视觉信息传递工具。LED发光二极管众多优点满足各种不同应用场景的需求,发展前景非常广阔,因此得到了广泛的应用。 (1) 亮度高:LED显示屏的亮度可调,有户外的LED显示屏便于在白天人们接受显示屏信息,相比于其他显示屏,LED显示屏是目前唯一能够在户外适用全天候的大型显示屏幕,而户内LED显示屏的亮度则大于2000md/m2就可以达到要求便于人们接受视觉信息。(2)视角大:人在注视显示屏的时候,可以从各个角度观看显示屏,不影响人接受显示屏显示的画面质量,户外视角范围可大于160°。而视角范围的大小取决于发光二极管的形状。 (3)绿色环保:不含汞氙等对环境有污染的元素,有利于回收利用处理,而且抗电磁干扰能力强。(4)安全系数高:由于所需电压低,发光效率高,发热小,不产生安全隐患,适用于煤矿等危险地方。第二章 功能要求及方案论证2.1 功能要求本方案设计的是由4个8×8组成的16×16的点阵显示屏,具体满足要求如下:(1)要求AT89C51单片机作为芯片(2)通过4个8*8的点阵led进行滚动显示(3)要求led显示屏各点亮度均匀、充足、稳定、清晰(4)按键控制文字的滚动显示切换2.2 显示模块方案论证4个8*8的点阵组成的16*16的点阵显示屏,组成256个led点阵显示屏,如果将led的点阵显示屏的阳极与列驱动器相连,而阴极与行驱动器相连,我们通过控制单片机AT89C51驱动行列驱动器,给行相应的高电平,给列低电平,那么相应的led就会发光,得到我们想要的发光图形。本章介绍led数据显示方式,这种显示方式使用8段led点阵显示屏。在实际应用中点亮led的方式有静态显示方式和动态显示方式两种显示方法。1、静态显示方式一般来讲,静态显示方式是通过编写程序烧进单片机,通过控制单片机控制驱动器驱动LED点阵,无论是显示图形还是文字,只要点亮所组成的文字图形相应的LED发光点就可以得到我们想要的显示效果,这种同时控制各个LED放光二极管的亮灭的方法称之为静态显示方式。静态点亮LED显示屏的显示方式LED亮度均匀、稳定、清晰等优点,但是静态显示存在很大的缺陷,由于单片机的I/O口资源少,当LED点阵显示屏庞大时,单片机没有那么多的I/O口同时控制可取。此课题设计的是基于单片机的16*16点阵显示屏设计,共有256个发光二极管,如果不采用其他芯片来扩展单片机的端口,16行点阵需要单片机16个端口,16列点阵需要单片机16个端口,按照8位的移位寄存器来计算,16*16的点阵需要32个锁存器,占用单片机太多的I/O口,这个显然设计不可取,现在仅仅是16*16的点阵,在实际生活着的显示屏往往大很多,这样在锁存器上的成本就是一个很大的数目,因此在实际应用中一般我们不采用这种设计,而是采用动态扫描的方法。2、动态显示方式当LED点阵数目很多时,使用芯片拓展单片机的端口。动态扫描可以解决静态扫描占用较多I/O口资源的问题,就是快速的对点阵每行进行循环点亮,采用这样的扫描方式就可以实现点阵共用行驱动器和列驱动器。具体16*16的点阵来说,把LED点阵的列与列驱动器相连,点阵的行与行驱动器相连。使用4-16线74HC154译码器作为列译码器,通过译码器选中其中一列的点阵有效,再使用两个74HC595级联而成的移位寄存器作为行驱动器,行驱动驱动译码器选中的这一列中点阵的16个发光二极管亮灭情况。当下一个程序语句到来时,4-16线74HC154译码器选中下一列有效,行驱动器驱动译码器选中的这一列16个发光二极管的亮灭情况,以此类推。这样反复点亮,由于人眼视觉暂留现象(每秒24次以上),只要速度够快,我们就能看到显示屏显示的稳定清晰的图像了。由于单片机的工作特性,时钟速度达到20M,我们将采用动态显示方式方式,把设计好的程序烧进单片机。显示数据存储在单片机AT89C51的存储单元中,显示时把一列中各行的数据都传送到相应的驱动器中,这就存在一个显示数据传输的问题。数据传输时是采用串行方式还是采用并行方式?3、数据传输方式的论证很显然,采用并行传输数据的方式,行驱动器和列驱动器的线路数量庞大,相应需要更多硬件,增加了设计成本,所以并行传输的方式不可取。为了解决并行传输数据带来的问题,采用串行传输数据方式。根据74HC595特点,串行传输数据方式只要用一根线,单片机的某个I/O口就可以将数据一位一位的传送到行驱动器中,当上升沿到来时,行驱动器74HC595对16位 数据一次性输出,驱动16*16的LED点阵显示屏,所以硬件方面很经济。串行传输数据的缺点是串行传输过程较长,数据只能一位一位地输出到驱动器中,只有当这一行的数据全部传送完毕,才能对驱动器进行显示。这样传输过程分为数据传输的准备过程和数据的输出两个部分。在串行传输过程中,由于数据的准备时间较长的时候,再编写程序的时候,扫描周期和延时程序给的的情况下,串行传输数据会影响到led显示屏的亮度。为了解决影响显示屏亮度的问题,即数据传输的准备过程和数据显示的时间较长的问题,我们可以采用重叠处理的方法。在本行驱动器在点亮显示屏的同时,我们传送下一行数据,这样就可以解决传输数据时间较长的问题。为了达到重叠处理的目的,我们需要的列驱动器必须要有锁存器的功能。这样我们可以解决列驱动器可以选用74HC595是一个串行输入并行输出的移位寄存器,具有锁存功能。这样本列数据在点亮显示屏的时候,74HC595就已经在准备下一行的列数据,不会影响上一行的数据显示。第三章 系统电路的硬件设计3.1 设计框图图3-1 点阵显示的总体框图3.2 单片机的选择单片机采用AT89C51。AT89C51单片机的外形如下:图3-2 AT89C513.3 AT89C51芯片简介AT89C51是美国ATMEL公司生产的一款8位微处理器芯片,具有高性能低功耗特点,应用领域广泛。芯片作为仪器的大脑,它负责整个程序的运行以及给部分电路部分发送命令。1、 主要性能4/8可程序设计的Flash内存32个可程序设计I/O口线5个中断源可编程的串行通道2个16位定时/计数器1000次擦写周期2、 AT89C51系列单片机的基本组成片内Flash内存,用来一些原始数据表格和程序片内RAM,用来存放经常读、写的数据1个8位中央处理单元多个优先级的嵌套中断结构,并可实现多个优先级的嵌套1个全双工口UART的串行接口,通过它可以和计算机或其他外设进行通信2个16位的计数/定时器,对外部事件进行计数,I/O口置成定时器或者置成计时器,并根据计数或定时的结果对单片机实时进行控制。图3-3 AT89系列单片机的基本结构框图3、单片机的内部组成AT89系列单片机的内部结构主要是由CPU、定时器/计数器、串行口、存储器、中断逻辑/并行口几部分组成。(1)CPUCPU是由运算器及控制器组成,作为控制中心和指挥中心,决定单片机的主要功能。ACC是一个累加器,简称累加器A,8位寄存器,当进行逻辑和算术运算时,累加器存放操作数,运算的结果还是存放在累加器中。寄存器B也是一个8位寄存器,寄存器B用于乘法和除法指令中。在除法中,除数取自B,被除数取自ACC,商数放在ACC中,而余数则放在B中。在乘法运算中,乘数的操作指令来自ACC和B中,而乘积的结果放在AB寄存器中,B寄存器是作为中间结果寄存器使用的。PSW是一个8位的寄存器,作为一个标志寄存器,用来存放各种程序状态执行的信息,供程序判别和查询。PSW的标志和格式如下:表3-1D7D6 D5 D4 D3 D2 D1 D0CYACF0RS1RS0OVP此寄存器各位的含义如下:CY(PSW.7):进位标志。执行算术运算指令时,最高位D7位有进位或者借位时,CY=1,最高位D7位没有进位或者借位,CY=0。CY作为位累加器,可以被硬件或者软件职位或清零,起作用相当于中央处理器中的累加器A,进位操作和执行比较指令也会影响CY标志位。AC(PSW.6):辅助进位标志。辅助进位标志指的是当执行加减运算指令时,低四位向高四位有进位借位时,AC会被置成1,否则就会被清零。在进行十进制加减运算时,需要进行十进制调整,需要用AC位进行判断,详见指令系统中的DAA指令。F0(PSW.5):用户标志位。F0是状态标记位,根据用户自己的需要通过软件来置位和复位。设定标志位状态以后,通过软件测试F0来控制程序的流向。RS1、RS0(PSW.4、PSW.3):8051有4组8个8位工作寄存器,每组命名R0R7。通过控制这两位的值就可以控制哪一组寄存器作为工作寄存器,这是通过软件来改变RS1、RS0的值进行选择的。RS0、RS1与寄存器区的对应关系见表3-2:表3-2RS1RS0工作寄存器组000组(00H-07H)011组(18H-0FH)102组(10H-17H)113组(18H-1FH)OV(PSW.2):溢出标志。在进行带符号位加减运算指令中,运算结果超过累加器的有效范围时,累加器A就会溢出,溢出即产生运算错误的结果,溢出标志位PSW.2=1。如果没有超过累加器的有效范围,溢出标志位PSW.2=0就表示运算结果正确。在进行乘法运算时,如果累加器A溢出,标志位PSW.2=1表示乘积的结果超过255,乘积分别在累加器A与寄存器B中;乘积结果没有超过255,标志位PSW.2=0,这时乘积只在累加器A中。在除法运算指令中,标志位PSW.2=1,就表示除数等于0,所以不能进行除法运算,反之表示除数不为零,可以进行运算。P(PSW.0):奇偶标志。奇偶标志位PSW.0表示累加器A中1的个数,累加器A中1的个数为偶数P=0,1的个数为奇数P=1。(2)存储组织AT89系列单片机的内存结构如下:(a)(b)(c)图3-4 AT89系列单片机内存的结构3.4 系统硬件电路的设计本设计的硬件电路可以分成单片机系统及外围电路、列驱动器和行驱动器电路三部分。1、 单片机系统及外围电路单片机采用AT89C51,时钟频率为采用24M的晶振,高的晶振频率能获得较高的刷新频率,可以使显示更加稳定。P0口的低四位与4-16线译码器相连用来发送行数据,P0.4P0.6口与两片级联的74HC595组成的16位输出的移位寄存器相连,用来发送列数据。单片机的外围震荡电路:图3-5 单片机的振荡电路2、 行驱动电路行驱动电路是由两片74HC595级联而成,74HC595具有8位串入并出移位寄存器和一个8位输出锁存器的结构,两片级联的74HC595具有16位串入并出移位寄存器和一个16位输出锁存器的结构,用来驱动led点阵的行。74HC595具有独立的输出锁存器个和独立的移位寄存器,在输出本行数据驱动点阵的同时,单片机已经为驱动器传输下一行的数据,能达到重叠处理的目的,缩短数据传输时间。图3-6是由两个74LS595级联成的16位输出的列驱动器:图3-6 列驱动器74HC595的外形及管脚说明图如图3-7和表3-3所示。74HC595有8个串行移位寄存器,每个串行移位寄存器连接着一个输出锁存器,当8位数据全部传输完毕保存在输出锁存器中,当上升沿到来时,进行数据输出。DS是串行数据输入端,Q0Q7是并行数据输出端,作为LED点阵驱动端,控制LED的点亮。Q7是芯片拓展端口,与下一个74HC595的串行数据输入端相连,形成16位串入并出移位寄存器和一个16位输出锁存器的结构驱动LED。SH_CP是移位寄存器时钟输入端,每来一个上升沿,Q0中的数据移动到Q1中,Q1中的数据移动到Q2 中,这样循环往复。下降沿移位寄存器中的端口数据保持不变。ST_CP是存储寄存器中的时钟输入口。下降沿到来时,存储器中的数据保持不变,上升到来时,移位寄存器中的数据存储到存储器中。通常将ST_CP拉到低电平,移位结束后再将ST_CP端移位寄存器中的数据清零。OE为输出允许高电平禁止输出。图3-7 74HC595外形图表3-3 74HC595的管脚说明符号引脚描述Q0-Q715,1,7并行数据输出GND8地Q79串行数据输出MR10主复位SH_CP11移位寄存器时钟输入ST_CP12存储器寄存器时钟输入OE13输出有效(低电平)DS14串行数据输入VCC16电源3、 列驱动电路单片机P0口低4位输出的行信号经4-16线译码器74HC154译码后生成16条列选通信号线,再需要经过驱动器驱动对应的列线。一条列线上要带动16行的LED进行显示,按每一LED器件20mA电流计算,16个LED同时发光时,需要320mA电流,选用三极管8550作为驱动管可满足要求。只要控制端G1、G2任意一个为高电平,A、B、C、D任意电平输入都无效。G1、G2必须都为低电平才能操作芯片。74HC54引脚图及内部结构逻辑图:如图3-8 74HC154的引脚图及内部结构逻辑图74hc154真值表: INPUTS 输入SELECTED OUTPUT 选定输出(L)G1G2DCBALLLLLLY0LLLLLHY1LLLLHLY2LLLLHHY3LLLHLLY4LLLHLHY5LLLHHLY6LLLHHHY7LLHLLLY8LLHLLHY9LLHLHLY10LLHLHHY11LLHHLLY12LLHHLHY13LLHHHLY14LLHHHHY15XHXXXXNONEHXXXXXNONE4、LED点阵的介绍8×8的点阵能组成64个发光二极管,本设计采用由4个8×8的点阵组成的16行16列的发光显示屏。在实际应用中根据原理可自行拓展,要组成16×16的点阵进行适当的连线就可以了。图3-9分别是8×8的内部点阵图图3-9 8×8内点阵内部图5、滚动显示16*16点阵的滚动显示,要显示一个字符或者汉字,该汉字或者字符的点阵数据可以列向16点组字,又可以横向16点组字。无论是哪一种组字方式,可以让显示屏产生横向移动,又可以让显示屏产生纵向移动。本设计以左移为例,介绍字符滚动的原理。延长数组法。将原来字符点阵数组的16个数据重复一遍延长,点阵数组的数据个数为32个。每扫描一帧取8个数据显示,下一帧取数要在数组中后移一个数取数。循环一遍扫16帧。可以假想有两块16×16的点阵模块(共32帧)水平平行排列,用一个恰好能罩住16列点阵的中空方框去罩这个点阵,第1(第1帧)罩住最左边数起第一列开始的16列,就扫描显示这16列;第2次(第2帧)使方框右移一列,罩住做左边数起第2列开始的16列,就扫描显示这16列;······;这样每扫描完一帧使方框右移一列,最后第16次(第16帧)时,罩住左边数起的第16列开始的16列,就扫描显示这16列。如此完成16帧画面的扫描显示,也就完成了整个一次移动循环扫描、之后反复循环,即可呈现显示字符沿水平向左移动的图像。 因为是列向组字(列扫描方式,点阵数据为行码,上边为低位下面为高位),希望显示移动的一个字符,第1次扫描从行码的点阵数组中取第116个数据,送行码输出口,对应于这8个数据,同时用列码输出口输出列码,分别控制第116列。扫描完前16个数据之后,第2次扫描从点阵数组中取第318个数据(第18个数据与第1个数据同),送行码输出口,对应于这16个数据,同时用列码输出口输出列码,仍分别控制扫第116列。第3次扫描从点阵数组中取第520个数据(第20个数据码与第2个数据码相同)扫描······;如此实现字符向左移动。 以上完成一个图形移动的方法,也可以看成是移动16个不同的字形。如图2.13所示,首先扫描第一个字型,同样是16行,16次扫描,16次显示;完成一个字型的扫描以后,再扫描第二个字型;完成第二个字型的扫描之后,再扫描第三个字型······依此类推,即可产生该文字的左移的感觉。由以上原理可以看到,无论使显示汉字、字符还是图像,都可以分析出它的扫描代码显示在屏幕上。当我们了解汉字、字符、图像的的显示原理,如何得到字模信息呢?目前网上有很多汉字字模生成软件,可以从网上下载汉字字模软件,图3-10所示的字模生成软件PCtolCD2002,设计的是16*16点阵汉字滚动显示,在字模选项中选择16行16列,输出进制选择16进制,软自定义格式C51格式,软件打开后输入汉字,点击生成字模之后,就可以得到我们所需要的汉字代码。我们用到的是PCtolCD2002软件,该软件实质上是BMP格式的二值图像转换成液晶屏幕上显示时对应的数据。以“丁”字为例,点击“生成字模”我们就可以得到所需要的汉字代码。丁(0)0xFF,0xFF,0xBF,0xFF,0xBF,0xFF,0xBF,0xFF,0xBF,0xFF,0xBF,0xFD,0xBF,0xFE,0x80,0xBF,0xFF,0xBF,0xFF,0xBF,0xFF,0xBF,0xFF,0xBF,0xFF,0xBF,0xFF,0xFF,0xFF,0xFF,0xFF,/*"丁",0*/图3-10字模生成软件6、16×16的硬件电路图AT89C51采用24M频率的晶振,高的晶振频率以获得很高的刷新频率,使显示稳定,没有闪烁感。单片机的I/O口分别与行驱动器与列驱动器相连,用来传送数据。P0口低4位与行驱动器相连,送出行选信号;P0.4P0.6口则用来发送点阵显示屏的列信号。16×16点阵显示屏的硬件原理如下图:图3-11 仿真电路图第四章 系统的程序设计本章主要介绍基于单片机At89C51的16*16点阵显示屏的设计过程以及程序的编写过程,由于相比汇编语言,C语言简洁紧凑、灵活方便、数据结构丰富、程序执行效率高、可读性强等众多优点,所以选择C语言编写程序。4.1程序的编写过程当单片机供电以后,单片机没有停机指令,显示屏实现汉字的连续左滚动显示效果。当有按键KEY按下时,显示屏实现汉字的连续有滚动显示效果。系统程序不断地循环执行上述显示效果。如何编写程序实现按键控制的滚动显示?程序开始,执行main()函数,先进行16*16点阵显示屏的初始化,其次进入while(1)的死循环,判断按键KEY是否按下?若没有按下,则实现左滚动显示效果,当单片机每对点阵扫描一次,就判断按键KEY是否按下。按键KEY没有按下,不断循环左滚动显示效果。当按键KEY按下,通过延时程序和if的判断语句进行消抖动处理,消抖动处理后KEY仍为0,对状态标志位flag_c进行取反处理,判断flag_c为1还是为0,如果不为0进行右滚动显示效果。同理,当单片机每对点阵扫描一次,主程序就会判断按键KEY是否按下,若没有按下,不断进行右循环效果,若按下KEY=0,则重新对标志位flag_c取反,重新进行判断为1还是位0,单片机没有停机指令,系统主程序将不断循环下去。以下以左滚动显示效果为例,介绍程序是如何不断循环滚动。程序判断Flag_c=0,执行左循环。当i=1,X=0时,首先WriteS(0xff,0xff)进行清屏处理,Wei_154(i)函数表示由74HC154译码器选中的点阵第1行有效,WriteS(HanZii*2-2+2*X,HanZii*2-1+2*X)即WriteS(HanZi0,HanZi1表示某个汉字字模代码点亮的第1行16个LED灯的亮灭情况,当for语句执行i+,Wei_154(i)这个函数表示由74HC154译码器选中的点阵第2行有效,WriteS函数就变成WriteS(HanZi2,HanZi3某个汉字字模代码点亮的第2行16个LED灯的亮灭情况,以此类推,当扫描完第16行、16列,由于是快速的扫描,人眼的视觉暂留现象,我们会看到完整没有闪烁的汉字。for(j=0;j<7;j+)语句是对每个汉字扫描7遍,控制循环的速度。每执行完两个for循环的嵌套语句,执行x+语句,即扫描下一个字点阵代码的第一列的代码进入点阵的最后一列,而上一个字代码的第2列进入点阵的第一列,这样不断执行x+语句,每次执行完x+语句,重新判断标志位flag_c=0?若没有,重复执行,这样就形成汉字的滚动显示。实现的左滚动程序如下:if(flag_c=0)for(j=0;j<7;j+)for(i=1;i<17;i+)WriteS(0xff,0xff);/消影Wei_154(i);WriteS(HanZii*2-2+2*X,HanZii*2-1+2*X);/显示内容Wei_1