.
单片机原理及接口技术设计报告
1. 设计的重点和难点 1.1重点和难点
一、单片机I/O口或以扩展锁存器的方式控制点阵显示。
单片机I/O口和扩展锁存器相结合的方式控制16×16点阵显示汉字。I/O口分别提供字形代码(列码)、扫描信号(行码),凡字形代码位为“1”、行扫描信号为“1”点亮该点,否则熄灭;通过逐行扫描循环点亮字形或曲线。
二、单片机与16×16点阵块之间接口电路设计及编程。
16×16点阵块共阳的接法:把所有同一行的发光管的阳极连在一起,把所有同一列的发光管的阴极连在一起。
点阵显示汉字的编程需要查表指令,也就是MOVC A,A+DPTR指令,DPTR作为基址寄存器时,其值为16位。编写查表程序时,首先把字模的首址送入DPTR中,再将要查找的数据序号送入A中,然后就可以使用该指令进行查表操作,并将结果送累加器A中。使点阵显示器显示“绥化学院”四个字。
三、LED点阵显示系统显示汉字的取模。
一个字需要拆分为2个部分。 一般我们把它拆分为上部和下部,上部由8×16点阵组成, 下部也由8×16点阵组成。首先显示的是左上角的第一列的上半部分,亮的点为“1”,不亮的点为“0” 由上往下排列组成了8位二进制数,将其转换为16进制。上半部第一列完成后,继续扫描下半部的第一列,为了接线的方便,仍设计成由上往下扫描。 然后单片机转向上半部第二列。这一列完成后继续进行下半部分的扫描。
依照这个方法,继续进行下面的扫描,一共扫描32个8位, 可以得出32个16进制数就是汉字字模。
.
2.设计工作原理
2.1 16×16点阵显示的工作原理
要显示文字或图形,控制与组成这些文字或图形的各个点所在位置相对应的LED器件发光,就可以得到我们想要的显示结果,这种同时控制各个发光点亮灭的方法称为静态驱动显示方式。16×16的点阵共有256个发光二极管,显然单片机没有这么多端口,如果我们采用锁存器来扩展端口,按8位的锁存器来计算,16×16的点阵需要256/8=32个锁存器。这个数字很庞大,因为我们仅仅是16×16的点阵,在实际应用中的显示屏往往要大的多,这样在锁存器上花的成本将是一个很庞大的数字。而且静态显示功耗大,显示一个16×16的字的功耗为:16×16×10×5=12800mW=12.8W,普通电池根本无法驱动,要是组成大显示屏那功耗将更惊人。因此虽然静态显示效果好,但是在实际应用中的显示屏几乎都不采用这种设计,而采用另一种称为动态扫描的显示方法
动态扫描方式是逐行轮流点亮,这样扫描驱动电路就可以实现多行的同名列共用一套列驱动器。以16×16点阵为例,把所有同一行的发光管的阳极连在一起,把所有同一列的发光管的阴极连在一起(共阳的接法),先送出对应第1行发光管亮灭的数据并锁存,然后选通第1行使其燃亮一定的时间,然后熄灭;再送出第2行的数据并锁存,然后选通第2行使其燃亮相同的时间,然后熄灭,第16行之后,又重新燃亮第1行,反复轮回。当这样轮回的速度足够快(每秒24次以上),由于人眼的视觉暂留现象,就能看到显示屏上稳定的图形。该方法能驱动较多的LED,控制方式较灵活,而且节省单片机的资源。
采用扫描方式进行显示时,每行有一个行驱动器,各行的同名列共用一个列驱动器。显示数据通常存储在单片机的存储器中,按8位一个字节的形式顺序排放。显示时要把一行中各列的数据都传送到相应的列驱动器上去,这就存在一个显示数据传输的问题。从控制电路到列驱动器的数据传输可以采用并行方式或串行方式。显然,采用并行方式时,从控制电路到列驱动器的线路数量大,相应的硬件数目多。当列数很多时,并行传输的方案是不可取的。
显示数据传输采用串行传输的方法,控制电路可以只用一根信号线,将列数据一位一
1
位传往列驱动器,在硬件方面无疑是十分经济的。但串行传输过程较长,数据按顺序一位一位地输出给列驱动器,只有当一行的各列数据都已传输到位之后,这一行的各列才能并行地进行显示。对于串行传输方式来说,列数据准备时间可能相当长,在行扫描周期确定的情况下,留给行显示的时间就太少了,以致影响到LED的亮度。
采用串行传输中列数据准备和列数据显示的时间矛盾,可以采用重叠处理的方法。即在显示本行各列数据的同时,传送下一行的列数据。为了达到重叠处理的目的,列数据的显示就需要有锁存功能。对于列数据准备来说,它应能实现串入并出的移位功能。这样,本行已准备好的数据打入并行锁存器进行显示时,串行移位寄存器就可以准备下一行的列数据,而不会影响本行的显示。
一个16×16的LED点阵屏选用四块8×8点阵模块。
图1 8×8 LED点阵原理图 图2 8×8 LED点阵实物图
2.2系统的硬件设计
硬件电路大致上可以分成单片机系统及外围电路、列驱动电路和行驱动电路三部分。本电路使用AT89C51实现行驱动,对显示模块从上至下的扫描,用74HC154实现列驱动,对显示模块从左至右的扫描,然后显示字符。硬件的设计采用模块化设计,既要满足模块本身功能又要能够和整个系统兼容。
2
图3 系统硬件组成框图 一、 单片机系统
单片机系统是由AT89C51单片机、时钟电路、复位电路组成。 二、行驱动电路
单片机P1口低4位输出的行号经4/16线译码器74HC154译码后生成16条行选通信号线,再经过驱动器驱动对应的行线。一条行线上要带动16列的LED进行显示。
74HC154是一款高速CMOS器件,74HC154引脚兼容低功耗肖特基TTL(LSTTL)系列。 74HC154译码器可接受4位高电平有效二进制地址输入,并提供16个互斥的低电平有效输出。74HC154的两个输入使能门电路可用于译码器选通,以消除输出端上的通常译码“假信号”,也可用于译码器扩展。该使能门电路包含两个“逻辑与”输入,必须置为低以便使能输出端。任选一个使能输入端作为数据输入,74HC154可充当一个1-16的多路分配器。当其余的使能输入端置低时,地址输出将会跟随应用的状态。这种单片4线—16线译码器非常适合用于高性能存储器的译码器。当两个选通输入G1 和G2 为低时,它可将4 个二进制编码的输入译成16 个互相独立的输出之一。实现解调功能的办法是:用4 个输入线写出输出线的地址,使得在一个选通输入为低时数据通过另一个选通输入。当任何一个选通输入是高时,所有输出都为高。下图为74HC154的引脚图和实物图。 引脚说明: 1-11、13-17 :输出端。(outputs (active LOW))
12:GND电源地 (ground (0 V))
18-19:使能输入端、低电平有效 (enable inputs (active LOW)) 20-23:地址输入端 (address inputs) 24:VCC电源正 (positive supply voltage)
3
图4 74HC154引脚图 图5 74HC154实物图
只要控制端G1、G2任意一个为高电平,A、B、C、D任意电平输入都无效。G1、G2必须都为低电平才能操作芯片。
三、列驱动电路
列驱动电路为单片机P2、P3 口接列点阵管脚(图7)
图7 列驱动电路
2.3 系统的软件设计
软件程序是整个控制系统的核心部分。显示部分采用动态扫描的方式,实现对显示屏要显示的汉字、图像、字符等数据信息进行传输控制以及显示等功能。程序中将数据存储器分为三个区:显示缓冲区、数据存储区和接收缓冲区。单片机通过串口中断接收PC机传来的数据,暂时存放在接收缓冲区,经分析处理后按一定的规律放入数据存储区保存起来,然后再根据显示方式依次从数据存储器中取出数据放入显示缓冲区中用于显示。
软件程序主要由开始、初始化、主程序、字库组成。主程序中,同一帧的反复扫描次数的设定,决定了显示移动的速度延时程序至关重要,如设置不当,就会有闪烁感。
4