点阵显示

2024-06-07

点阵显示(精选十篇)

点阵显示 篇1

一、结构分析

亚龙汉字显示屏为32×16点阵屏。一个屏最多能显示2个16×16汉字, 它的结构原理如下, 分水平2×8=16行, 垂直4×8=32列, 每个汉字占2×8行2×8列。用六个数据锁存器74HC573进行2×8行4×8列数据锁存。在行数据中加入2个ULN2803进行驱动。因此, 要使某行中某点点亮, 必须行数据为“1”, 列数据为“1”。显示时, 必须采用动态扫描方式。分16行逐行进行扫描。

二、编程思路

为了防止汉字显示与其它程序之间产生相互干扰, 程序处理时思路如下:

采用定时器进行汉字显示, 每隔1MS时间送入4×8列列数据并选通1行进行显示。

若对显示的汉字编码制表为code tabd[], 则32个数据为一个汉字, 若i为行号, 显示时从第一个汉字开始, 则4×8列数据分别为tabd[2*i];

若要从第N个汉字开始显示, 则4×8列数据分别为tabd[2*i+32N];tabd[2*i+1+32N];tabd[2*i+32+32N];tabd[2*i+33+32N];当然N=0时, 为第一个汉字开始显示。因此在主程序中可根据实际情况进行改变N值, 从而实现不同汉字的显示。如果code tabd[]中存入“电子制作”四个汉字共128个8位数据, 则令N=0, 则显示“电子”, 若令N=2, 则显示“制作”。

每一次送行数据与列数据时, 为了防止显示错乱, 必须进行一次屏消隐。即关闭显示再改变行列数据。

三、实例编程

本程序经PROTEUS模拟验证通过, 但未加ULN2803, 请注意!数据取反了。 (仿真图如图2所示) code tabd[]中请自行加入横向取模数据。

1. 主程序

下面对主程序语句详细说明:

(1) 头文件包含。对单片机特殊功能寄存器进行设置。

(2) 宏定义dzdat。对P1口进行别名定义, 操作P1可以用别名dzdat代替;宏定义COL1, COL2, COL3, COL4, ROW1, ROW2。同上理, 对P2口的某些位进行别名定义。这样做的目的是为了便于以后程序的阅读、调试与移植。

(3) 定义无符号字符变量N和i。N用于指示显示时从第N号开始两个字显示。i用于改变显示时的行号。

(4) 定义显示汉字的码表。如“电”字:显示时效果与对应的码如图3所示。

电子制作码表为:

(5) 定义显示汉字的行码表。

(6) 初始化子程序段。完成初始屏消隐, 定时器模式、初值设置, 开中断, 开定时器。

(7) 延时子程序段。可根据设置的变量值进行延时。

(8) 主程序进入后首先进行初始化程序操作。

(9) 进入循环操作体, 进行无限循环。

(10) 无限循环体中延时一段时间改变N值, 当N=0时, 显示“电子”, 当N=2时, 显示“制作”。N不允许为其它数值。

2. 定时器中断程序

下面对定时器中断程序语句详细说明

(1) 置初值。若晶振为12MHZ, 则定时为1MS, 每1MS进入中断程序一次, 进行一行的显示及行号i的修改。

(2) 判断为前8行时, 顺序运行 (3) ~ (8) 的程序。

(9) 判断为后8行时, 顺序运行 (10) ~ (15) 的程序。

(3) 、 (10) 屏消隐。把16行的点阵全部关闭。

(4) 、 (11) 送行选通信号。根据i值, 查出行码, 通过P1送入74HC573数据口, 然后选通前8行的74HC573或者后8行的74HC573, 并且锁存进来。

(5) 、 (12) 送第1×8列数据。根据N, i值, 查出第N号字第1×8列码, 通过P1送入74HC573数据口, 然后选通第1×8列的74HC573, 并且锁存进来。此时第i行第1×8列点亮。

(6) 、 (13) 送第2×8列数据。根据N, i值, 查出第N号字第2×8列码, 通过P1送入74HC573数据口, 然后选通第2×8列的74HC573, 并且锁存进来。此时第i行第2×8列点亮。

(7) 、 (14) 送第3×8列数据。根据N, i值, 查出第N+1号字第1×8列码, 通过P1送入74HC573数据口, 然后选通第3×8列的74HC573, 并且锁存进来。此时第i行第3×8列点亮。

(8) 、 (15) 送第4×8列数据。根据N, i值, 查出第N+1号字第2×8列码, 通过P1送入74HC573数据口, 然后选通第4×8列的74HC573, 并且锁存进来。此时第i行第4×8列点亮。

(16) 每进入一次中断, 则对行号i进行自加1。

(17) 判断当行号i等于16时, 让行号i归0, 让行号在 (0~15) 共16行运行。

3. 仿真效果

单片机16点阵汉字显示课程设计 篇2

1.1设计制作产品的背景、目的及设计要求

本项目为16x16点阵汉字显示“新年快乐”的设计,首先将本次实训的电路图在仿真软件上绘制完成,将点阵文件存入ROM,形成汉字编码,再进行相关转换,以新编码提取相应的点阵汉字显示。将相应编码代入运行程序,进行调试和准备。

1.2分工情况、工作计划及本人所承担工作

1.周一 1~4 进行分组,选题 和软件的安装 2.周二 1~4 进行电路的设计及程序编写 3.周三 1~4 进行电路的设计及程序编写 4.周四 1~4 进行说明书的填写 5.周五 1~4 答辩

本人在本次课程设计中承担电路图的绘制及相关程序的编写与调试。

1.3本课题的设计重点及难点

本次课程设计重点在于单片机控制系统程序采用单片机汇编语言进行编辑,通过编程控制各显示点对应LED阳极和阴极端的电平,就可以有效的控制各显示点的亮灭。而其中的难点就在于运行程序的编写及相关汉字的点阵数据,这种显示字符的点阵数据可以自行编写,也可以标准字库中提取。

在进行课题设计时需要熟练掌握相关电路软件及编程软件的使用,编写程序时需掌握一定的C语言逻辑关系的运用。在电路图的绘制时需要清楚的了解各个电路设备的功能及用途。

二、实训内容

2.1实训原理

本设计应用的扫描方法为水平方向(X方向)扫描。

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

上半部分第一列完成之后,继续扫描下半部分的第一列,为了接线的方便,我们仍设计成由上往下的扫描方式,即从A8向A15方向扫描,按照这个方法,继续进行下面的扫描,一共扫描32个8位,可以得出汉字。

2.2硬件设计 2.3软件设计

#include #define uint unsigned int #define uchar unsigned char code uchar seg[]={ 0x02,0x04,0x22,0x48,0x2A,0x52,0xA6,0x41,0x63,0xFE,0x26,0x40,0x2A,0x50,0x22,0x49,0x00,0x06,0x3F,0xF8,0x22,0x00,0x22,0x00,0x23,0xFF,0x42,0x00,0x02,0x00,0x00,0x00,/*“新”,0*/ 0x00,0x20,0x04,0x20,0x18,0x20,0xE3,0xE0,0x22,0x20,0x22,0x20,0x22,0x20,0x22,0x20,0x3F,0xFF,0x22,0x20,0x22,0x20,0x22,0x20,0x22,0x20,0x20,0x20,0x00,0x20,0x00,0x00,/*“年”,1*/ 0x00,0x80,0x07,0x00,0x00,0x00,0xFF,0xFF,0x08,0x00,0x04,0x81,0x10,0x82,0x10,0x8C,0x10,0xB0,0xFF,0xC0,0x10,0xB0,0x10,0x8C,0x1F,0x82,0x00,0x81,0x00,0x81,0x00,0x00,/*“快”,2*/ 0x00,0x00,0x00,0x04,0x07,0x08,0x39,0x10,0x21,0x60,0x21,0x02,0x21,0x01,0x2F,0xFE,0x41,0x00,0x41,0x00,0xC1,0x40,0x41,0x20,0x01,0x10,0x01,0x0C,0x00,0x00,0x00,0x00,/*“乐”,3*/ };Const uchar sm[]={0x00,0x01,0x02,0x03,0x04,0x05,0x06,0x07,0x08,0x09,0x0a,0x0b,0x0c,0x0d,0x0e,0x0f,};void delay(uint n){ uint i;for(i=0;i

for(j=q;j<32+q;j++)

{ P1=sm[t];

P0=seg[j];

j++;

P2=seg[j];

delay(50);t--;

if(t==0)

t=16;}

q=q+32;

if(q==128)

q=0;} } 三.结论

3.1 实训过程中遇到的问题及解决措施

在本次实验中,我组在制作的16x16点阵显示汉字“新年快乐”的课程设计中,首先在使用单片机仿真软件找寻相关设备时没有找到16x16的点阵设备,继而用四个8x8的点阵排列组合予以替代。

依据相关教材及指导教师的参考和建议,我组对于本次设计的电路图采用了通用模板设计。

此次课程设计的运行程序是我组在设计中的最大难点,后经多方查资料及参考询问,我组找到了相应汉字在点阵中的排序规律,顺利编写出代码。

3.2 今后的学习展望

经过这次的单片机课程设计,从产生设计想法到实际操作,到最终的设计完成,中间遇到的困难及困难的解决,让我更进一步了解了单片机,让我不再仅仅局限于书本上。

本次的设计经验对于我们日后的学习工作有非常重要的作用,在遇到困难时可以不仅仅从书本上找解决方案,还可以自己亲自动手实践来验证相关问题及找到解决方法。

这次难得的课程设计过程中我锻炼了自己的思考能力和动手能力。通过题目选择和设计电路的过程中,加强了我思考问题的完整性和实际生活联系的可行性。在方案设计选择和芯片的选择上,培养了我们综合应用单片机的能力,对单片机的各个管脚的功能也有了进一步的认识。还锻炼我们个人的查阅技术资料的能力,动手能力,发现问题,解决问题的能力。并且我们熟练掌握了有关器件的性能及测试方法。

四、心得体会

本次的设计经验对于我们日后的学习工作有非常重要的作用,在遇到困难时可以不仅仅从书本上找解决方案,还可以自己亲自动手实践来验证相关问题及找到解决方法。

单片机这门课是一科非常重视动手实践的科目,不能总是看书,但是也不能完全不看书。单片机并不象传统的数字电路或模拟电路那样比较直观,原因是除了“硬件”之外还存在一个“软件”的因素。正是这个“软件”的原因使得许多初学者怎么也弄不懂单片机的工作过程,怎么也不明白为什么将几个数送来送去就能让数码管显示一串字符或控制一个电机的变速。对初学单片机的人来说,需要从书中大概了解一下单片机的各个功能寄存器,如果看的多了反而容易搞乱,现在市场上大多数讲单片机的书一开始就讲解较复杂的内存、地址、存储器什么的,更让初学者感到不知所云、难以入门。如果按教科书式的学法,上来就是一大堆指令、名词,学了半天还搞不清这些指令起什么作用,能够产生什么实际效果,那么也许用不了几天就会觉得枯燥乏味而半途而废。简单的说,使用单片机实际上就是用我们自己编写的软件去控制单片机的各个功能寄存器。再简单些,就是控制单片机哪些引脚的电平什么时候输出高电平,什么时候输出低电平。由这些高低变化的电平来控制外围电路,实现我们需要的各个功能。

LED点阵显示屏数据输入器的设计 篇3

【关键词】红外接收管 LED显示屏 单片机

当前,大部分的手写板都是通过上位机直接与PC机相连,然后将手写板上的数据显示在PC机上,这种方法虽然简单但是受环境和设备的影响较大,而且无法在室外等环境下进行大规模的应用。而本次设计却有着显而易见的优势,LED对环境的要求较低,可以在室内室外均可使用,而且大小容易掌握。并且LED价格低廉容易实现大规模的应用。

一、方案设计

基于单片机的LED点阵数据输入器主要工作原理是在单片机的控制下,红外接收矩阵工作在循环扫描的状态下;当光笔触及红外接收矩阵模块时,红外接收矩阵感应到相应位置的红外接收管处于工作状态,将产生的电平信号输入到单片机中,单片机产生相应的终端,然后将写下来的数据传输至LED显示屏中。其次,可以根據按键选择不同的工作模式,书写、擦除、多次书写等。

二、硬件设计

(一)红外接收板电路设计

本设计中的单片机采用89C51或其兼容系列的芯片,整个矩阵由16*16共256个红外接收管组成,单片机使用24MHz左右频率,以使整个矩阵工作可以进行快速的循环扫描。单片机的串口与列驱动器相连,用来送显示数据。P1端的低4位与行驱动器相连,送出选择行的信号;P1.5~P1.7口则用来发送控制信号。P0和P2口暂时不用,在有必要时可以扩展系统的ROM和RAM。

(二)红外手写笔设计

红外手写笔的设计对光笔的要求比较高,必须避开外界光的影响,尤其的太阳光。同时还要求能完成LED微弱广度的识别。在这里我们选择受外界光线干扰较小的光敏二极管。其工作原理为:光敏二极管通过对点阵屏的闪烁频率进行检测,光敏二极管只要检测到闪烁,便会产生一个脉冲信号,该脉冲信号通过—个微分电路提取出来,再用窗口比较器完成信号的放大,主要采用调节电位器完成放大电路的基准电压的调节,使输出的电压值为+12V或-12V,最后使用一个NPN型三极管来完成该信号的降压取反,最终得出的电压数值必须符合单片机采样的要求(图中二极管D5的功能是防止三极管软击穿),将其作为一个输入单片机的信号。

(三)红外接收矩阵电路设计

通过单片机P1口低6位输出信号,经过3/8线译码器74LS138译码后生成16条输出信号线,由驱动器完成对应行线的驱动。每一条行线要带动16列的红外接收管完成探测,每一红外接收管器件的电流量为20mA,如果16个红外接收管同时进行工作,所需要的电流量为320mA,选用的驱动管为三极管8550便可满足其需求。

集成电路74HC595是列驱动电路的主要构成部分,它由一个输出锁存器和一个移位寄存器组成,它们之间相互独立完成工作,工作过程中可实现数据的重叠,在进行下一行数据传输的同时并不影响本列数据的显示。

(四)数据存储器的设计

本设计采用片外直接存储器RAM与单片机互相交换数据,主要是通过控制地址锁存器的方式来进行的。我们一般要求小的LED显示屏幕可显示几个到几十个汉字,我们按一个汉字的大小需要32字节的空间来计算,32KB的RAM可存储大约900个汉字,而一般我们所所使用的RAM62256一片的容量也恰好是32KB,所以从理论上讲62256基本满足我们的设计需要。

(五)通讯电路设计

在本设计中我们使用串口进行通讯。从理论上讲,计算机与终端之间的数据传送可以采用串行通讯和并行通讯二种方式。但是由于串行通讯方式具有使用线路少、成本低,简单易于实现的功能所以在本次设计中我们采用串口的方式进行通讯。

在串行通讯时,双方必须使用统一标准的借口,使不同的设备可以方便地连接起来进行通讯。RS-232接口是目前最常用的一种串行通讯接口。

(六)电源电路设计

本次电源的设计不但为本次设计提供电源,还考虑到以后经常使用不同电源的电压,因此设计出了正负12V,正负9V以及正负5V多种电压。

三、软件设计

红外接收矩阵的程序的主要原理主要通过快速不间断地扫描判断出光电笔所点的位置。大致过程为首先选择行,进行扫描检测电平是否变化,若变化单片机产生一个中断,并向下继续扫描,若无变化则不产生中断继续扫描。当扫描过一行之后行数加1,继续扫描,以此类推当所有的行数都扫描之后复位至第一行重新开始扫描。

对于51单片机来讲,实现串口通信的最佳方法就是利用中断。串口通信的大致流程可以总结为:初始化串口:1.选择串口号,串口参数等;2.打开串口;3.发送/接受数据;4.关闭串口。通信线上传输了一个字节到单片机串口上,硬件自动将其接收并存储在SBUF里,此时会产生一个中断(串口接收中断),单片机的相应中断使能(ES,EA)打开的时候,就可以进入中断,方便处理通讯。关闭中断时,仍可以使用查询的方式进行通讯处理。

手写板数据存储程序利用两个指针完成数据的交换,但是实际上80C51并没有两个相互独立的地址指针,但是通过修改特殊功能寄存器OA2H中的数据(0或者1)使一个地址指针指向两个不同的16位地址,就像操作两个地址指针一样。同样在进行存储数据的时候要对相应的端口进行初始化,否则将会出现数据上的错误。

四、结论

通常LED点阵屏的显示数据都是由PC机完成数据输入,然后传送到LED显示屏。本设计是区别于一般的手写板,解决了一般手写板只能为电脑输入数据的问题,而LED显示屏其本身基于有着很强广泛的应用,这使得手写板在应用上更加广泛,因此我们可以看出,本设计有着很广阔的应用场景。

参考文献:

[1] 杨代勇,何让平,黄亚玲,魏超,陈炳权. 基于FPGA+MCU的大型LED显示屏系统设计[J]. 吉首大学学报(自然科学版). 2011(04)

点阵显示 篇4

LED点阵显示屏是由一系列发光二极管排列组合而成的点阵, 根据字形控制点阵屏局部发光完成字母、数字和汉字显示。LED屏的显示多采用计算机控制, 目前生产厂家提供的LED屏控制系统都是通过控制LED屏来显示各种数据的。由于数据种类的多样混杂, 数据不能以一种稳定格式进行保存。本文所介绍的显示方法用到的系统虽也是控制LED屏显示的软件, 但它是采用表格数据库保存数据, 将表格数据库和LED屏显示直接连接起来, 让LED屏显示表格数据库中的内容, 从而解决LED屏不能统一管理数据显示的问题, 也使得各种文字信息的公布变得更加方便。

显示中, 我们需用到现行计算机通用的字库字模, 一个字的点阵分为16×16、24×24、32×32和48×48等不同规格。一个LED显示屏成品主要由控制卡和单元板两部分组成。组装LED屏时, 必须先确定接口的一致性, 才方便组装。如果接口不一致, 需自行制作转换线。

在系统中信号先由PC机发送给控制卡, 通过控制卡识别信号, 再根据识别情况返回一个信号给PC机, 如果控制卡识别成功, 将把显示信号发给LED屏, 让其显示相应信息。PC机上的控制软件对显示信号进行操作, 先将PC机上的字符机器码编译成LED屏显示码, 通过串口发送给控制卡, 再根据控制卡返回的信号在PC机上判断LED屏是否显示成功, 然后控制卡会自动将正确的显示码发送给LED屏。

2 应用中提取字符显示编码的方法

在许多单片机与嵌入式应用系统中, 经常要用到文字显示, 如何提取字符点阵显示信息, 本文接下来就这一问题介绍一种简易、快速的提取方法。PC机中的数据通过串口通信发送, 在程序中一般以16进制表示2进制数, 常见的编码有ASCII码、Binary码、Unicode码等。在要介绍的提取方法中, LED屏显示数据的编码是相对独立的, 它的编码由厂家设定, 显示数据中, 数字和字母的编码由ASCII码转换而来, 汉字编码由Unicode码转换而来。

2.1 显示西文字符

字母和数字的显示编码是将它们的ASCII码减去0x0a作为高8位, 将0x63作为低8位;若是多个字母或数字, 则将它们的ASCII码减去0x0a并从高到低依次存放, 再将0x63存放在低8位即可。

以字母“A”为例说明:

字母“A”的ASCII码为0x41, 0x41-0x0a=0x37, 将0x37作为高8位, 0x63作为低8位, 得到字母“A”的LED屏显示编码为0x3763。

2.2 显示汉字

(1) 汉字内码转换成Unicode码

汉字在PC机中存储的汉字标准交换码是一种计算机内部码, 是微机内部使用的代码、系统处理的对象。在计算机内英文字符是用一个字节的ASCII码表示, 由于汉字众多, 对一个汉字需用两个字节表示, 且为了与系统中ASCII码相区别, 将这两个字节的最高位置1, 作为机器内的汉字代码即机内码, 简称内码。要将汉字内码转换成LED屏显示码就必须先将其转换成Unicode码, 在VC++中有一个函数能完成此转换功能, 该函数为:

该函数最后返回一个整数, 若函数调用成功且转换的字符不为空, 则返回宽型字符的数值;若函数调用成功而转换的字符为空, 则返回一个能接收转换字符缓冲大小的数值;若函数调用失败, 则返回0。该函数有六个参数:第一个参数表示转换要得到的编码类型;第二个参数表示转换类型的设置;第三个参数表示将要转换的字符串;第四个参数表示将要转换的字符串的字节数;第五个参数表示转换后字符存储区的首地址;第六个参数表示存储区的大小。

(2) Unicode码转换成显示编码

将汉字在PC机上存储的汉字标准交换码转换成Unicode码后, 将Unicode码的低8位加上0x70所得的除进位以外的8位作为高8位, 再将Unicode码的高8位减去0x43后与上一步的进位相加作为低8位;若是多个汉字, 则通过同样的方式转换后, 从高到低依次存放即可。

以汉字“我”为例说明:

汉字“我”在PC机上存储的汉字标准交换码为4650, 利用MultiByteToWideChar函数转换得到其Unicode码为0x6211, 其Unicode码的低8位为0x11, 0x11+0x70=0x81, 所得除进位以外的8位0x81作为高8位;Unicode码的高8位为0x62, 0x62-0x43=0x1F, 上一步没有进位, 0x1F直接作低8位, 汉字“我”的LED屏显示编码就为0x811F。

发送给LED屏的数据除了字符的显示编码外还有它从高位起的48个字节和从低位起的4个字节, 这些数据共同组成LED显示字符的数据包, 其中高位字节的第19个字节表示进入动画, 第20个字节表示环绕边框, 第21个字节表示进入速度, 第22个字节表示停留时间, 第41个字节表示字体颜色, 第45个字节表示字符个数, 其低位字节的第1、2个字节表示验证码, 这是前面高位所有数求和所得的两个字节, 然后交换其本身的高低字节得到。

结论

本文论述了如何在LED显示屏上显示字符信息的方法, 并结合实例进行了说明。从而很好地解决了在LED显示屏上显示表格信息这一难题。此方法通过直接将计算机中的数据库和LED显示屏连接, 实现了用计算机控制LED屏的功能, 加上计算机中数据库技术已十分成熟, 因此可以方便地对数据进行存储、修改、删除, 所以本文提出的LED点阵显示屏字符信息显示的方法解决了其他LED显示系统不便于设计表格和保存数据的问题。

所述方法在LED点阵显示屏、学风信息显示系统等方面的应用, 充分显示了此显示方法具有灵活性好、功能强、简单易操作等优点, 有很好的发展前景。

参考文献

[1]李卫东.微机控制LED点阵显示屏[J].大连理工大学, 2000, (1) :23-24.

[2]黄永顺.从国标字库中提取汉字点阵信息的方法及应用[J]漳州师范师院学报, 2004, (17) :48-50.

[3]赵堂春, 李勇, 陶砂.基于32×16LED显示屏混合字符显示的设计与实现[J].制造业自动化, 2010, (5) :45-50.

[4]余金栋, 写式LED点阵显示屏的设计[J].电子技术, 2010, (5) :50-55.

[5]哲源.掌握VisualC++MFC程序设计与剖析[M].北京:清华大学出版社, 2001, 120-123.

[6]李刚.MSCEComm控件在串口编程中的应用[J].重庆电力高等专科学校学报, 2003, (4) :11-62.

LED8x8点阵显示设计说明报告 篇5

姓名:王立学号:***44

LED8x8点阵显示设计说明报告

一、设计任务

1.设计要求

利用一块点阵数码板,按编程者要求实现任意符号的显示。2.此次设计研究的主要内容及应解决的问题

此次设计研究的主要内容是设计一个符号显示牌:通过程序控制符号显示牌,使符号显示牌,在无按键按下时,显示数字“0-9”,当第一次按下按键时,显示字母“μ”,当第二次按下按键时显示汉字“公”。应解决的问题:单片机P1口的输出电流不足以驱动二极管,需要加驱动,本次研究中以S8050作为驱动,同时在S8050NPN晶体管基极加4.7K的电阻。实验前要弄清晶体管三个引脚代表的极性,以免符号显示牌不亮导致而设计失败。

二、总体设计方案

2.1 硬件电路组成

本产品采用以89C51单片机为核心芯片的电路来实现,主要由89C51芯片、晶振电路、三极管驱动电路、按键控制电路、8×8 LED点阵5部分组成,电路框图如图1所示。其中,89C51是一种带4kB闪烁可编程可擦除只读存储器(Falsh Programmable and Erasable Read OnlyMemory,FPEROM)的低电压、高性能CMOS型8位微处理器,俗称单片机。该器件采用ATMEL高密度非易失存储器制造技术制造,工业标准的MCS一51指令集和输出管脚相兼容。由于将多功能8位CPU和闪烁存储器组合在单个芯片中,能够进行1 000次写/擦循环,数据保留时间为10年。他是一种高效微控制器,为很多嵌人式控制系统提供了一种灵活性高且价廉的方案。因此,在智能化电子设计与制作过程中经常用到89C51芯片。时钟电路由89C51的18,19脚的时钟端(XTAI 1及XTAL2)以及12 MHz晶振X、电容C2、C3组成,采用片内振荡方式。复位电路采用简易的上电复位电路,主要由电阻R,R2,电容C,开关K 组成,分别接至89C51的RST复位输人端。LED点阵显示屏采用8x8共64个象素的点阵,可通过万用表检测发光二极管的方法测试判断出该点阵的引脚分布。我们把行列总线接在单片机的I/O口,然后把上面分析到的扫描代码送入总线,就可以得到显示的字符了。我们在实际应用中是将LED点阵的8条列线通过驱动电路接在P1口,8条行线通过限流电阻接在P0口。单片机89C51按照设定的程序在P1和P0接口输出与内部字符对应的代码电平送至LED点阵的行列线(高电平驱动),从而选中相应的象素LED发光,并利用人眼的视觉暂留特性合成整个字符的显示。再改变取表地址实现字符的滚动显示。硬件电路组成框图如图2-1所示。

图2-1 硬件电路组成框图

2.2 系统各单元电路设计 2.2.1 89C51单片机最小系统

最小系统包括晶体振荡电路、复位开关和电源部分。图2-2为89C51单片机的最小系统。图2-2 单片机最小系统

2.2.2 按键控制电路

单片机开始工作时,P2.0是高电平。当按键按下时,检测到一个低电平信号,改变P0口输出信号,控制8×8 LED点阵显示屏显示不同字符。

图2-3 按键控制电路

2.2.3 三极管驱动电路

扫描驱动电路的功能主要是有P1口输出高电平使三极管发射结导通,发射结输出足够大的电流使二极管导通。

图2-4 三极管驱动电路 2.2.4 8×8 LED点阵介绍 图(4)为8×8点阵LED外观及引脚图,只要其对应的X、Y轴顺向偏压,即可使LED发亮。例如如果想使左上角LED点亮,则电子模块中的0口为1,A口为0即可。应用时限流电阻可以放在横轴或列轴。

图2-5 8×8点阵LED外观及引脚

(1)把“单片机系统”区域中的P0端口用8芯排芯连接到“点阵模块”区域中的“A~H”端口上;

(2)把“单片机系统”区域中的P1端口用8芯排芯连接到“点阵模块”区域中的“0~7”端口上;

为了方便于单片机连接,我们在焊接的过程中特意将0~7接口排列出来作为列,将A~H接口作为行,这样我们就可以直接将AT89C51单片机的P0口与0~7接口一次连接,将AT89C51单片机的P1口与A~H接口一次连接。要使LED发亮即使给予数字端高电平,字母端给予低电平,就能使二极管发亮。

2.3 字符的点阵显示原理及字库代码获取方法

我们以UCDOS中文宋体字库为例,每一个字由8行8列的点阵组成显示。我们可以把每一个点理解为一个象素,而把每一个字的字形理解为一幅图像。事实上这个汉字屏不仅可以显示汉字,也可以显示在64象素范围内的任何图形。如查用8位的AT89C51单片机控制,如图所示

图2-6 8×8点阵等效电路

为了弄清楚汉字的点阵组成规律,首先通过列扫描方法获取汉字的代码。首先将8行分成4位的上、下两部分,把发光的象素位编为0不发光的象素位为1的十六进制代码。这样就把要显示的“公”字编为如下代码:

0x7f,0xbf,0xc1,0xdf,0xdf,0xdf,0xc1,0xdf

由这个原理可以看出,无论显示何种字体或图像,都可以用这个方法来分析出他的扫描代码从而显示在屏幕上。上述方法虽然能够让我们弄清楚字符点阵代码的获取过程。字符点阵显示一般有点扫描、行扫描和列扫描3种。为了符合视觉暂留要求,点扫描方法的扫描频率必须大于16×64—1024 Hz,周期小于1 ms即可。行扫描和列扫描方法的扫描频率必须大于16×8—128 Hz,周期小于7.8 ms即可。

三、程序设计

3.1程序流程图

开始初始化依次显示0~9是否按键NoYes依次显示0~9显示字符μ是否按键NoYes显示字符μ显示汉字公是否按键NoYes显示汉字公

图3-1 主程序流程图

3.2程序设计

根据上述所说的程序流程图,设计程序如附录1。

四、调试及性能分析

4.1系统调试 4.1.1软件调试

首先根据各单元电路模块,利用Proteus软件将总的硬件原理图绘制好,设计好各模块要使用的I/O口,如:8×8点阵LED显示屏时候插反,先检测下,无硬件错误后,再进行程序编程。

利用C语言的编程方式,将系统要求的基本功能,以及创新功能根据程序流程图编写出来,用Keil软件调试无误后,生成Hex文件。

双击Proteus中的AT89C51芯片,将Keil生成的Hex加载到芯片内,进行仿真,经调试后所编写的程序能够完美实现系统所需的各种功能。

4.1.2硬件调试

硬件调试主要是检测硬件电路是否有短路、断路、虚焊等。具体步骤及测试结果如下:(1)检查电源与地线是否全部连接上,用万用表对照电路原理图测试各导线是否完全连接,对未连接的进行修复。

(2)参照原理图,检查各个器件之间的连接是否连接正确,是否存在虚焊,经测试,各连接不存在问题。

(3)以上两项检查并修复完后,给该硬件电路上电,电源指示灯点亮。

(4)将烧录好程序的最小单片机系统接入各模块后,各模块能过正常工作,如:数码管正常发光。

4.2设计分析

将烧录好程序的最小单片机系统与各模块连接好后,8×8点阵LED显示屏显示初始值。按键一次之后,显示屏显示滚动字符μ,再按键一次,显示屏显示汉字“公”。

经软件调试和硬件调试后,所设计的系统完美实现了所需的控制要求和创新要求。

附录1:程序清单

#include #define uchar unsigned char #define uint unsigned int uchari,j,k,scan,num,count;sbit key=P2^0;uchar code table1[]= {0x7f,0xbf,0xc1,0xdf,0xdf,0xdf,0xc1,0xdf};//μ uchar code table2[]= {0xf7,0xdb,0xad,0xb7,0xbe,0xdd,0xbb,0xf7};uchar code table[][8]= {{0xff,0xff,0xc3,0xbd,0xbd,0xc3,0xff,0xff}, //0 {0xff,0xbf,0xbb,0x81,0x80,0xbf,0xbf,0xff}, {0xff,0xff,0xbb,0x9d,0xad,0xb3,0xff,0xff}, {0xff,0xff,0xdd,0xbe,0xb6,0xc9,0xff,0xff}, {0xff,0xef,0xe7,0xeb,0x81,0xef,0xef,0xff}, {0xff,0xff,0xd1,0xb5,0xb5,0xcd,0xff,0xff}, {0xff,0xff,0xc1,0xb6,0xb6,0xcd,0xff,0xff}, {0xff,0xff,0xfd,0xfd,0x8d,0xf5,0xf9,0xff}, {0xff,0xff,0xc9,0xb6,0xb6,0xc9,0xff,0xff}, {0xff,0xff,0xd9,0xb6,0xb6,0xc1,0xff,0xff}};//9 void delay(uint z){ uintx,y;for(x=z;x>0;x--)

for(y=110;y>0;y--);} void main(){ key=1;num=0;while(1){

if(num==0)

{

for(j=0;j<10;j++)

{

if(key==0)

{

delay(10);

if(key==0)

{

num=1;

公 // //1 //2 //3 //4 //5 //6 //7 //8

while(!key);

}

}

if(num!=0)

break;

for(k=0;k<30;k++)

{

scan=0x01;

for(i=0;i<8;i++)

{

P0=table[j][i];

P1=scan;

delay(2);

scan<<=1;

}

} } } if(num==1){

for(j=0;j<8;j++)

//8组数据

{

if(key==0)

{

delay(10);

if(key==0)

{

num=2;

while(!key);

}

}

if(num!=1)

break;

for(k=0;k<10;k++)

{

scan=0x01;

//初始扫描信号

for(i=8;i>0;i--)

//扫描周期

{

if(i>j)P0=table1[8+(j-i)];

else P0=table1[j-i];

P1=scan;

delay(2);

scan<<=1;

}

}

}

}

if(num==2)

{

if(key==0)

{

delay(10);

if(key==0)

{

num=0;

while(!key);

}

}

scan=0x01;

for(i=0;i<8;i++)

{

P0=table2[count++];

if(count==8)count=0;

P1=scan;

delay(2);

scan<<=1;

}

}

} }

附录2:点阵的放置与接线方法:

点阵显示 篇6

LED电子显示屏随着计算机及相关的微电子、光电子技术的迅猛发展而形成的一种新型信息显示媒体,被广泛应用于商场、学校、银行、邮局、机场、车站、码头、金融证券市场、文化中心、信息中心休息设施等公共场所。而使LED电子显示屏能够稳定显示和便利的控制是关键问题之一。

单片机是最小的计算机,它具有结构简单、应用方便而且性价比高等优点,是嵌入式系统中普遍选用的控制器件。在传统的单片机应用系统的开发过程中,先要根据目标系统要求做出硬件系统,然后通过仿真器对系统硬件和软件进行调试,最后将调试成功的程序固化到单片机中。在这一过程中,先要做出硬件系统,后才能调试,给设计带来不小的麻烦。而Proteus软件可以仿真、分析各种模拟器件和集成电路,利用它可随时搭建一个单片机应用系统并对其仿真,提高了开发效率、降低开发成本、缩短开发周期[1,2,3,4,5,6,7,8,9,10]。在此 基础上设计了一款 基于Proteus仿真平台的汉字点阵显示系统。

1 汉字点阵显示系统的硬件设计

汉字点阵显示系统的硬件包括控制模块、行驱动模块、列驱动模块和LED点阵显示模块等。以256像素显示一个汉字为例,设计的汉字点阵显示原理图如图1所示。

1.1 控制模块设计

控制模块采用美国ATMEL公司生产的AT89C51单片机。它是一款低电压、高性能COMS 8位单片机。晶振采用的12MHz。主要使用它的P1和P2口分别来驱动汉字点阵显示系统的行和列。当要用P0口为驱动I/O口时,要使用上拉电阻。连线如图1所示。

1.2 行驱动模块设计

行驱动模块采用8位串行输入/输出或者并行输出移位寄存器74HC595。它的使用步骤是:第一步,将要准备输入的数据移入74HC595的数据输入端14脚,即SI数据线;第二步,使74HC595的11脚SH_CP移位寄存器时钟输入产生一个上升沿,将位数据逐位移入74HC595中;第三步,使74HC595的12脚ST_CP移位寄存器时钟输入产生一个上升沿,将并行输出数据。

1.3 列驱动模块设计

列驱动模块采用4线-16线译码器74HC154。当控制端E1、E2都为底电平时,A、B、C、D电平输入都有效。

1.4 点阵显示模块设计

256像素需要16行和16列的点阵LED构成,由于PROTEUS中没有16×16的点阵LED显示屏,只有8×8的点阵MATRIX-8×8-RED,所以要有4块8×8的点阵LED显示屏构成1块16×16的点阵LED显示屏。

1.4.1 8×8的点阵LED显示器原理

要使8×8点阵LED相应的点亮,要满足这个点的行Y为高电平和列X为底电平。8×8点阵LED内部等效电路如图2所示。

1.4.2 16×16点阵LED显示屏的构成

先把8×8的点阵MATRIX-8×8-RED放好,如果元件名称在左上方,那么左边的端口就是行,右边的端口就是列。左右两块8×8的点阵MATRIX-8×8-RED分别是行相连,上下两块8×8的点阵MATRIX-8×8-RED分别是列相连,构成16×16的点阵LED显示屏的如图3所示。图3中左边构成的行的端口由上到下是从低位到高位的过程,右下方构成的端口分别和74HC154的输出端口8到1和端口16到9相连。

1.5 汉字显示原理

根据视觉的暂留现象,如果周期小于0.1s,那么,人感觉灯一直在亮。所以可以让每列轮流显示,当16列显示完成时,人的视觉会感觉16列同时在亮,要求每一列显示在6.25ms内完成。

2 汉字点阵显示系统的软件设计

汉字点阵显示系统的软件包括码字的生成,码字的行信息传送,码字列信息传送并最终显示。汉字点阵显示系统的程序流程图如图4所示。

部分主程序代码如下:

2.1 码字的生成

码字是表示要显示的汉字,就是让相应的灯亮,这里数字“1”代表亮,数字“0”代表灭。码字可以用软件生成,也可直接生成。如“中国”这两个汉字的码字放在mazi[][32]数组中,如下所示,

2.2 码字的行信息传送

码字的行信息传送主要是由单片机P2端口控制74HC595芯片驱动LED点阵的行。

向74HC595写数据的代码如下:

2.3 码字列信息传送并最终显示

码字的列选择主要是由单片机P1端口控制74HC154芯片驱动LED点阵的列。

列选函数代码如下:

3 仿真及结果

在Keil uVision软件中进行C语言编写与调试。

然后生成*.hex”文件。将*.hex加载到单片机中即可开始虚拟仿真。仿真结果如图5所示,“中国”轮流显示。

4 结束语

Proteus软件是一款操作简单,易于仿真与调试,仿真结果准确的仿真工具,为嵌入式开发者提供了一个虚拟的开发平台。开发者可以在没有硬件的条件下对基于单片机某种的系统功能进行仿真调试,特别是针对功能扩展时,节约了资源,缩短了开发周期。从某种意义上讲,Proteus软件的仿真结果可直接应用于实际工程中,因利用软件画出的电路图可直接生成相应的PCB板图,从而制造出相应的硬件系统。

参考文献

[1]王波.基于Proteus的51单片机16×64LED的设计[J].西安航空技术高等专科学校学报,2011,29(1):67-70.

[2]王孟,陈林.基于Proteus的Led大屏幕的设计与仿真[J].微计算机信息,2008,24(61):223-225.

[3]陈立.基于Proteus的单片机汉字LED点阵滚动显示[J].电脑知识与技术,2010,6(8):2012-2013.

[4]杨延宁,刘立军,张志勇,等.基于Proteus的单片机汉字点阵显示电路设计[J].液晶与显示,2009,24(1):98-100.

[5]石长华,周杰.基于Proteus的单片机汉字点阵显示设计与仿真[J].景德镇高报,2007,22(4):1-3.

[6]季晓松,李正生,等.基于Proteus的单片机系统设[J].机电工程技术,2009,39(9):33-34.

[7]赵艳辉,赵修良,黄顺,等.基于Proteus的核信号输入LCD处理显示单元[J].电子设计工程,2011,19(6):27-29.

[8]郭循钊,邝帆,邵平,许宏科,等.基于单片机的多功能交通灯控制系统设计与仿真实现[J].公路交通技术,2010(1):128-130.

[9]李云刚,邹逢兴,龙志强,等.单片机原理与应用系统设计[M].北京:中国水利水电出版社,2008.

点阵LED电子显示屏控制系统设计 篇7

1 LED及LED显示屏

LED (Light Em itting Diode) 发光二极管是一种能够将电能转化为可见光的固态的半导体器件。LED核心是一个半导体的晶片, 当电流通过导线作用于这个晶片的时候, 电子就会被推向其PN结的P区跟空穴复合, 然后就以光子的形式发出能量, 从使点亮LED。

LED显示屏 (LEDpane l) 是一种由半导体发光二极管构成的点阵模块组成的显示屏幕, 它是通过控制半导体发光二极管的亮灭情况来显示的方式, 根据要显示的文字、图形、图像、动画、视频、录像信号等各种信息来选择相应的发光二极管的亮灭, 从而实现显示各种信息的目的。LED显示屏具有节能、发光效率高、使用寿命长、组态灵活等优点, 在国内外得到了很大的推广, 广泛应用于大型剧场、商城、酒店的出入口及洗手间的标示牌等各种室内、户外显示屏。

2 电子显示屏系统分析

通过对LED主控电路、亮度连续可调电路、驱动电路、键盘电路等硬件电路做多方位的分析, 选择出最佳方案, 从而实现对16×16点阵显示屏的驱动, 完成电子显示屏的电路设计方案。

2.1 LED显示屏的显示

LED显示屏不论显示图形还是文字, 都是控制与组成这些图形或文字的各个点所在位置相对应的LED器件发光。通常先把需要显示的图形文字转换成点阵图形, 再按照显示控制的要求显示数据。对于只控制通断的显示屏来说, 每个LED发光器件占据数据中的1bit, 在需要该LED器件发光的数据中相应的位填1, 否则填0。根据控制电路的设计, 相反的定义同样是可以的。这样依照所需显示的图形文字, 按显示屏的各行各列逐点填写显示数据, 就可以构成一个显示数据文件。其中, 文字的点阵格式比较规范, 采用UCDOS中文宋体字库。

在UCDOS中文宋体字库中, 每一个字由16行16列的点阵组成显示。如果用8位的AT89S52单片机控制, 由于单片机的总线为8位, 一个字需要拆分为2个部分, 即拆分为上部和下部, 上部由8×16点阵组成, 下部也由8*16点阵组成。在本例中单片机首先显示的是左上角的第一列的上半部分, 即第0列的p0口。方向为p0.0到p0.7。上半部第一列完成后, 继续扫描下半部的第一列, 为了接线的方便, 我们仍设计成由上往下扫描, 即从p2.7向p2.0方向扫描, 然后单片机转向上半部第二列, 这一列完成后继续进行下半部分的扫描。依次, 继续进行下面的扫描, 一共扫描32个8位, 可以得出字模的扫描代码。

2.2 LED主控芯片选择

第一代8位单片机系统功能较差, 如INTEL公司的MCS-48系列, 它实际上是8位通用CPU单元电路和基本I/O接口电路、小容量存储器、中断控制系统的简单组合, 没有串行通信功能, 中断控制和管理能力也较差。第二代8位机通用性强, 但个性不突出, 依然存在很多问题。而新一代8位单片机, 其特点是功能齐全, 片内数据存储器容量大, 带有可编程阵列, 使用灵活, 电磁兼容性好, 能满足本设计的应用要求。因此本设计使用的单片机AT89S52。

2.3 亮度可调方案选择

对于LED显示屏的亮度可以通过在软件中调节刷新频率。刷新频率高的时候, 连续点亮的时间短, 显示屏亮度低, 当刷新频率调低时, 连续点亮的时间延长, 显示屏变亮, 因此通过调节占空比来实现显示屏亮度的调整。但是由于软件调节亮度变化不连续, 不能实现连续的亮度调节, 并且会出现闪烁。调节的效果不明显。另外可通过调节电位器来改变电压, 实现亮度的调节。调节电位器实现线性电压调整, 从而控制三极管使显示屏压降发生改变, 从而达到连续调节亮度的目的。电位器的调节范围较大, 因此用此方法来调节。

2.4 驱动芯片的选择

在不使用专用的LED控制芯片的情况下可以采用通用芯片74LS595, 这个芯片具有8位锁存, 串—并移位寄存器和三态输出, 可以用它的锁存功能实现硬件电路对数据的刷新。但是需要更多的控制信号, 而且芯片的级联不方便。由于ATMEL公司对AT89S52提供了足够的内存来做为数据缓冲区对显示数据进行存储, 我们可以用移位寄存器74LS154实现LED点阵显示的行列控制。

2.5 软件程序设计的选择

P0, P2口送字模扫描代码到16×16点阵LED显示屏的阳极, P1, P3口直接送扫描信号到显示屏的阴极。这样做直接有效, 可是占用了P3口, 浪费了有限的I/O资源, 无法接入控制键盘, 完成不了设计要求。P0, P2口送字模扫描代码到16×16点阵LED显示屏的阳极, P1口通过两个74LS154移位寄存器扩展电路, 送扫描信号到显示屏的阴极。而由于人眼的视觉停留效应, 只要扫描频率足够高, 从显示器就看不出闪烁现象。所以采用P1口送扫描信号到显示屏的阴极。

3 电子显示屏系统组成

由以上的分析可得出, 电子显示屏系统的由AT89S52单片机及相关外围电路具体包括时钟电路、复位电路、键盘模块、显示控制电路和电子显示屏等部分组成, 具体如图1所示:

4 结语

本文主要讨论了电子显示屏系统设计的关键问题, 并且对如何才能实现系统功能进行了论证, 设计所采用动态扫描方案, 通过字模来点亮显示屏, 达到显示所要求内容的目的。

参考文献

[1]乔威, 王小利.智能点阵电子显示屏控制系统设计[J].实验室研究与探索, 2010.

点阵显示 篇8

关键词:点阵显示,实时更新,串口,USB

1 前言

LED点阵显示屏以其亮度高、工作电压低、功耗小、小型化、寿命长、耐冲击和性能稳定的优点迅速成长为平板显示的主流产品, 在信息显示领域得到了广泛的应用。

2 设计方案

选定以PC机为上位机, 单片机为核心控制器件, LED点阵显示模块为显示输出设备, 外加译码电路和驱动电路, 采用串行方式传输的设计方案。

完成本设计方案的重点和难点如下:STC89C52的各I/O口分配和驱动函数的调用;LED点阵显示模块的驱动和相关数据的显示;译码电路和驱动电路的设计。

(1) 系统总体设计

点阵式LED汉字显示屏系统由单片机、电源电路、时钟电路、复位电路、驱动电路和LED点阵电路6大部分组成。系统总体设计框图如图1所示。

单片机模块。单片机部分采用深圳宏晶科技公司出品的STC89C52RC;

电源模块。电源电路通过变压整流元件为单片机和其他电路提供稳定的+5V工作电压。本设计采用USB数据线与PC机通信, 故而本系统电源模块直接采用PC机经USB接口供电。

时钟电路模块。将单片机P05口定义为时钟延迟, 经软件设计控制系统的显示延迟。

复位电路模块。复位电路设计为在需要时, 可手动使单片机程序计数器复位清零。由单片机复位 (RESET) 引脚连接硬件按钮和利用软件设计控制分别实现复位。

驱动电路模块。通过阳极驱动电路向16*16点阵送字型码, 本设计采用2块74HC595芯片;通过阴极驱动电路对16*16点阵进行列扫描, 本设计采用2块74HC138芯片。74HC595及74HC138芯片。

LED点阵模块。采用一片16*16LED点阵显示屏作为点阵显示输出。

本设计是实现一个基于STC89C52的点阵显示, 设计的核心是利用单片机读取显示字型码, 通过中断控制和驱动电路对16*16 LED点阵进行动态列扫描, 以实现汉字或字符的静态、滚动显示和对指示灯及蜂鸣器的控制, 模拟实现点阵广告牌的基本功能 (可通过扩展LED点阵显示模块实现) 。

(2) 系统硬件电路设计利用电路PCB设计软件Altium Designer 6 (PROTEL) 完成了系统硬件电路的设计制作。Protel硬件电路原理图如图2所示。

利用嵌入式系统软硬件设计仿真平台Proteus软件设计点阵式LED滚动字符显示屏仿真电路原理图如图3所示。在Proteus软件中, 单片机模型本身包含了工作电源和可改变的工作频率, 因此在仿真时无需设计电源电路和时钟电路。需要说明的是在Proteus软件目前版本中还没有16*16点阵模块, 故而本设计中采用Proteus软件中现有的8*8点阵模块组合成一个16*16点阵模块。从图3中可以看出, 两片74HC138组成一个4-16译码器, 驱动点阵的各列, 节省了单片机的IO口, 同样两片74HC595寄存器用来控制点阵各行。点阵行低电平有效, 点阵列高电平有效。当某一列x为高电平, 同时某一行y为低电平时, 相应的点阵x列第y行 (y, x) 被点亮。

(3) 系统软件程序设计

单片机程序软件代码的设计采用C语言通过使用Keil u Vision3来实现程序的编写与调试。在Keil中新建项目, 选择盘符保存;选择Atmel公司的AT89C52芯片 (因为Keil中没有STC芯片的选项, 故选择与之功能相近且互相兼容的AT89C52代替) , 确定;新建文件, 命名为“STC89C52.C” (因为是采用C语言编程) ;在新建的文件中开始单片机程序的编写。

(1) 系统初始化, 依据硬件电路原理图定义好各特殊功能位声明。

(2) 设定显示模式

测试采用动态显示, 定义延时程序void delay_s (unsigned char n) 。

(3) 读取预显示内容

制作点阵显示汉字时通常是用汉字字模点阵数据生成工具来提取预显示字模代码。16*16点阵即是每一个字由16行16列的点阵组成显示, 即国标汉字库中的每一个字均由256点阵来表示。我们可以把每一个点理解成一个像素, 而把每一个字的字形理解为一副图像。事实上此点阵显示屏不仅可以显示汉字, 也可以显示在256像素范围内的任何图形。点阵内部结构及外形如图11所示, 8*8点阵共由64个发光二极管组成, 且每个发光二极管是放置在行线和列线的交叉点上, 当对应的某一行置高电平, 某一列置低电平, 则相应的二极管就亮;如要将第一个点点亮, 则9脚接高电平13脚接低电平, 则第一个点就亮了;如要将第一行点亮, 则第9脚要接高电平, 而13、3、4、10、6、11、15、16这些引脚接低电平, 那么第一行就会点亮;要想将第一列点亮, 则第13脚接低电平, 而9、14、8、12、1、7、2、5这些引脚接高电平, 那么第一列就会点亮。

一般选择用四个8*8点阵组合成一个16*16的点阵, 显示汉字时使用宋体字库。

本设计中使用一片16*16点阵, 采用汉字字模点阵数据批量生成工具Font Library提取预显示字模 (毕业设计点阵显示汉字输出) 代码。

预显示“毕业设计点阵显示汉字输出” (采用宋体4号字, 每组16bit) 。

(4) 送扫描脉冲和点阵显示

由于STC89C52单片机是8位机, 每次只能送出8位数据, 因此要向16×16点阵送出16行阳极驱动, 需要送两次, 或先送上8行, 或先送下8行, 为了能够实现每一列字型码的完整显示, 采用74HC595进行锁存, 否则会出现字型残缺现象。

(4) 程序验证与测试

(1) 在Keil中编译及测试

由于程序采用C语言编写, 我们可以采用任意一种C程序编译器编写本系统所需程序。再次选用在Keil环境中完成程序的编写, 是因为使用Keil除程序编写便捷外, 其包含完整的51单片机头文件库, 各种特殊定义, 并能调试、编译, 生成能让单片机运行的HEX文件, 界面简洁明了。

(2) 运用Proteus软件仿真LED点阵显示

Proteus它不仅能仿真单片机外围电路或没有单片机参与的其它电路的工作情况, 也能仿真单片机CPU的工作情况。从某种意义上讲Proteus仿真, 基本接近于工程应用。利用设计好的仿真电路图, 调用已生成的HEX文件, 即可运用Proteus软件仿真实现本设计 (基于STC89C52单片机16×16LED的点阵显示) 要求。仿真如图6所示。

(5) 整机测试

将keil编译器生成并仿真成功的HEX文件下载到单片机中, 连接好各模块, 逐一测试实现LED点阵显示功能。因本设计采用了PL2303, 故而实现的是利用USB口与PC连接下载, 实现方便。

3 设计总结

点阵显示 篇9

关键词:MCS-51,单片机,点阵LED

引言

LED是指发光二极管, 在某些半导体的PN结中, 注入的少数载流子与多数载流子复合时会把多余的能量以光的形式释放出来, 从而把电能直接转换为光能。PN结加反向电压, 少数载流子难以注入, 故不发光。这种利用注入式电致发光原理制作的二极管叫发光二极管, 简称LED。由于电子显示屏制作简单, 安装方便, 被广泛应用于各种公共场合, 如公交汽车的报站器、广告屏以及公告牌等等。介绍的LED点阵电子显示屏, 其功能有固定汉字、字母、数字的显示;平行左移、右移;固定信息的循环显示;显示屏的亮度连续可调;时间的显示和上位机对显示内容可修改的功能。

1 16*64点阵LED显示屏的硬件组合

(1) MCU的选择:由于软件对空间的需求和硬件的简化, 本系统MCU采用的是AT89S52, 它具有8KB的ROM, 128字节的RAM, 不需再外扩存储器了。

(2) 行以及列驱动电路:因为要驱动16行选, 所以采用四六译码器74LS154, 它只需占用AT89S52的四个I/O口, 起到了节省I/O口资源的目的。它是输出低电平有效, 所以用它驱动共阳集LED (行是高电平有效) 行时需在每个输出口接三极管8550。

列选就采用TPIC6B595芯片, 因为它可以直接连到列上驱动列选, 起到简化硬件设计的作用。TPIC6B595内含8位串入、串/并出移位寄存器和8位三态输出锁存器。寄存器和锁存器分别有各自的时钟输入 (CLK和ST) , 都是上升沿有效。当CLK从低到高电平跳变时, 串行输入数据 (SDA) 移入寄存器;当ST从低到高电平跳变时, 寄存器的数据置入锁存器。清除端 (CLR) 的低电平只对寄存器复位, 而对锁存器无影响。当输出允许控制 (EN) 为高电平时, 并行输出 (Q0~Q7) 为高阻态, 而串行输出不受影响。本系统要求驱动64列, 所以采用8片级联的TPIC6B595作为列驱动电路。

(3) 时间芯片:为了实现时间的显示, 采用时间芯片DS1302;该芯片内部采用石英晶体振荡器, 其芯片精度不大于10ms/年, 且具有完备的时钟闹钟功能, 因此, 可直接对其以用于显示或设置, 使得软件编程相对简单;与单片机之间能简单地采用同步串行的方式进行通信仅需用到三个口线1 RES复位2 I/O数据线3 SCLK串行时钟时钟/RAM的读/写数据以一个字节或多达31个字节的字符组方式通信DS1302工作时功耗很低保持数据和时钟信息时功率小于1m W;该芯片可接备用电源, 当主电源的电压低于备用电源时, 芯片自动使用备用电源供电, 既使程序不能执行时也保证了时间的准确性, 满足了系统的要求。

(4) 键盘的设计:根据系统的要求设计了8个按键, 分别是:固定汉字的显示;固定英文字母的显示;固定数字的显示;汉字的左移;汉字的右移;当前时间的显示;显示屏变暗;显示屏变亮。考虑到程序的执行效率, 键盘采用独立式设计, 占用了8个I/O口。本系统将其连接到P1口, P0口作为输入口时, 需外接1K的上拉电阻。

(5) 上位机的硬件设计:本系统要求上位机 (PC机) 可对点阵LED显示屏的显示内容进行修改, 所以必需在PC机和AT89S52之间建立通讯管道, 也就是要构造通信总线。PC机的总线接口都为标准总线接口, 所以, 上、下位机之间的通信必须采用标准总线。本系统中, 大部分的计算都在下位机执行, 上、下位机的通信并不是非常繁忙, 所以, 设计时选用了通用的串行总线RS-232。RS-232总线, 设计简单, 连线方便, 容易调试, 在没有调制解调器的情况下最大传输距离可以达到50英尺, 可以满足系统要求。串行口采用的是TTL电平, 因此必须得有电平转换电路, 采用单电源电平转换芯片MAX232A可以使电路变得简单, 可靠。

2部分C语言程序

(1) 固定显示的程序

void unmove (uchar tupian[][64]) //固定显示函数

(2) 左移显示的程序

void zmove (uchar tupian[][64]) //实现图像的左移

(3) 右移显示的程序

void ymove (uchar tupian[][64]) //实现图像的右移

参考文献

[1]张毅刚, 彭喜元, 姜守达.新编MCS-51单片机应用设计[M].哈尔滨:哈尔滨工业大学出版社.

[2]吴金戌, 沈金阳, 郭庭吉.8051单片机实践与应用[M].北京:清华大学出版社.

点阵显示 篇10

时钟, 自从它发明的那天起, 就成为人类的朋友, 每个人都离不开它。从机械钟表到电子钟, 一直伴随着我们的生活[1-2]。本方案通过认真了解机械钟表和电子钟的原理, 设计了多功能数字电子钟, 将机械钟表和电子钟结合在一起, 以数字模拟机械、实现优势互补为重要理念, 增加用户交互和人性化设计。

本文通过加入自动适应环境模块、矩阵按键模块、语音录放模块增加了时钟与用户交互的方式和方便性, 实现人性化设计。

1 系统功能

本多功能数字电子钟具有如下功能:1 显示时间、调整时间、报时、定时;2带LED点阵模拟显示机械钟表;3带语音录放功能;4带按键输入控制;5电池供电。

本设计分为以下8个模块:1单片机控制模块:电子钟控制核心;2时间管理模块:利用时钟芯片获取当前时间更新信息;3LED点阵显示模块:利用数字电路控制方式实现对机械钟表的模拟和功能增强;4语音录放模块:通过耳机收集音乐数据、话筒收集语音信息完成提示音录入;5 时间显示模块:由数码管显示时分秒;液晶LCD1602显示年月日星期和自定义的待办事项;6 按键输入控制模块:利用4×4矩阵按键输入数字、字母和部分控制信号;7动力支持模块:利用电池提供电源;8语音与信息存储模块:将录入的语音信息存储至芯片中。系统整体功能框图如图1所示。

2 硬件电路制作

结合电子钟的整体结构和电路设计, 电子钟三层电路板整体设计如下:

(1) 顶层电路板。该层是电子钟的显示模块, 如图2所示。包括数码管、LCD1062和LED点阵[3]。

(2) 中间层电路板。该层是电子钟的控制核心和语音录放等模块, 如图3所示。

(3) 底层电路板。该层是电子钟的动力支持模块和键盘输入控制模块, 如图4所示。

3 软件设计与实现

根据各个模块功能又可分为以下几个子程序流程:

单片机控制 (Mcu_Control) 、串口 (UART) 、时钟 (Timer) 、显示 (Display) 、报时定时 (Time_Alarm) 。

(1) 单片机控制 (Mcu_Control) 。这是整个软件设计中的主程序, 流程如图5 所示。 电子钟启动时STCAA12C5A60S2将周期性地从时钟芯片DS1302中获取时间信息更新时间。在获取了时间信息后, 通过串口传输数据给AT89C2051显示时间, 同时检测定时报时和待办事项是否发生, 若发生则进行定时报时和待办事项提示。在两次获取时间信息的指令之前可以接受中断或者其它形式的触发, 但在获取时间信息过程中为保证时间准确将屏蔽所有触发[4]。

(2) 串口 (UART) 。串口传输的程序流程如图6 所示。

在每1次发送数据之前需检测从设备是否准备好, 若准备好则开始传输数据;传输完成之后则等待从设备发出接收完成标志, 若已接收则可发送下一数据。

(3) 时钟 (Timer) 。 时钟程序流程说明了时钟芯片DS1302与STC12C5A60S2之间通信的时序, 如图7所示。

在DS1302 工作时, 若主电源电压小于备用电池电压, 则切换至备用电池。

(4) 报时定时 (Time_Alarm) 。报时定时流程如图8所示, 检测设定时间点及待办事项, 整点及半点进行提示。

(5) 显示 (Display) 。显示流程如图9所示, 说明了数码管、LCD1602和LED点阵显示时间的过程。

4 调试及功能演示

(1) 时间获取。 通过时钟芯片DS1302 获取时间信息, 写好它与单片机通信用的三线式驱动时序, 在程序中分别使用单字节和触发模式进行传输测试, 注意不要把DS1302的主电源和备用电源引脚装反。

(2) 显示 (数码管显示时分秒、液晶显示年月日星期、点阵模拟机械时分秒针) 。进行这一部分的调试, 可以用基本的功能测试函数来完成, 如:让六位数码管分别静态显示从0-9不断变化的字符, 之后以很慢的速度进行一次动态显示;让LCD1602完成初始化, 即设置显示模式、清屏、设置光标闪烁和位置;对于LED点阵, 首先通过IO口输出高电平让点阵全亮, 并测试总的输入电流、记录亮度情况, 接着让点阵的水平和竖直径向上的LED全亮, 最终验证点阵显示的图形和字符编码是否相同[5]。

(3) 串行UART接口。串行口是控制核心STC12C5A60S2 和扩展控制AT89C2051之间的通信接口, 调试前应保证定时器设置和串口中断设置正确、单片机晶振符合串行通信要求。对于STC12C5A60S2, 可编写串行发送数据程序至电脑的超级终端或其它串口调试软件, 对于AT89C2051, 可编写串行接收数据程序接收来自超级终端等数据并显示。

(4) 时间调整。如果是旋转时间调整旋钮, 则应确保AD转换部分相关寄存器设置正确, 且必须在AD转换时打开转换电源。

如果是按键输入调整时间, 则应检测HD7279对时间调整按键的编码是否和AT89C2051 的解码一致, 显示部分能否及时改变时间值并从新的值开始工作, 同时还要更新DS1302的时间值。

(5) 报时、定时。报时和定时需要一直查询时间值是否为整点、半点或用户所定时间值, 故查询程序的位置需要放置准确。

(6) 按键输入。HD7279通过对按键键值编码之后串行传输到单片机中, 需要确保单片机的键值编码表与HD7279相同。同时为了增加稳定性和准确性, 还需要增加按键去抖动程序。

(7) 语音录放。这部分模拟分立元件比较多, 需检测每个元件的输入输出是否正确, 对于话筒电路, 应检测话筒电路的信噪比和放大倍数, 包含AD和DA转换。对于单片机内部AD转换应确保寄存器设置正确, AD和DA两部分都应避免相互干扰或者干扰其它电路。

(8) 存储数据写入与读出。存储器由于设置有缓冲区, 读写的速度很快, 因此在主要存储器的读写时序上要提供足够的延时时间才能完成读写。

6 结语

本研究结合机械式钟表和电子钟的优点, 利用数字模拟机械, 使用人性化设计, 设计了多功能数字电子钟, 实现了显示时间、定时、整点半点报时、时间调整功能, 且带有数码管、LCD1602和LED点阵显示功能与语音录放提示功能。本电子钟智能方便, 增强了用户交互体验、体现了人性化设计。

参考文献

[1]宋风娟, 付侃, 薛雅丽.STC12C5A60S2单片机高速A/D转换方法[J].煤矿机械, 2010, 31 (6) :219-221.

[2]张红, 于平, 程文播.基于单片机控制的LED点阵显示屏系统[J].微计算机信息, 2009, 25 (1) :92-93.

[3]詹新生, 张江伟.基于单片机的16×64LED点阵显示屏的设计[J].电子元器件应用[J].电子元器件应用, 2009, 11 (8) :8-10.

[4]乔威, 王小利.智能点阵电子显示屏控制系统设计[J].实验室研究与探索, 2010 (2) :17-20.

上一篇:通信系统程控交换设备下一篇:地方历史文化实力提升