文章目录[隐藏]
1 引 言
在大型商场、车站、码头、地铁站以及各类办事窗口等越来越多的场所需要用LED点阵显示图形和汉字。LED行业已成为一个快速发展的新兴产业,市场空间巨大,前景广阔。随着信息产业的高速发展,LED显示作为信息传播的一种重要手段,已广泛应用于室内外需要进行服务内容和服务宗旨宣传的公众场所,例如户内外公共场所广告宣传、机场车站旅客引导信息、公交车辆报站系统、证券与银行信息显示、餐馆报价信息豆示、高速公路可变情报板、体育场馆比赛转播、楼宇灯饰、交通信号灯、景观照明等。显然,LED显示已成为城市亮化、现代化和信息化社会的一个重要标志。
2 硬件电路组成及工作原理
本产品拟采用以AT89C51单片机为核心芯片的电路来实现,主要由AT89C51芯片、时钟电路、复位电路、列扫描驱动电路(74HC154)、16×16 LED点阵5部分组成,如图1所示。
其中,AT89C51是一种带4 kB闪烁可编程可擦除只读存储器(Falsh Programmable and Erasable Read OnlyMemory,FPEROM)的低电压、高性能CMOS型8位微处理器,俗称单片机。该器件采用ATMEL高密度非易失存储器制造技术制造,与工业标准的MCS-51指令集和输出管脚相兼容。由于将多功能8位CPU和闪烁存储器组合在单个芯片中,能够进行1 000次写/擦循环,数据保留时间为10年。他是一种高效微控制器,为很多嵌入式控制系统提供了一种灵活性高且价廉的方案。因此,在智能化电子设计与制作过程中经常用到AT89C51芯片。
时钟电路由AT89C51的18,19脚的时钟端(XTALl及XTAL2)以及12 MHz晶振X1、电容C2,C3组成,采用片内振荡方式。
复位电路采用简易的上电复位电路,主要由电阻R1,R2,电容C1,开关K1组成,分别接至AT89C51的RST复位输入端。
LED点阵显示屏采用16×16共256个象素的点阵,通过万用表检测发光二极管的方法测试判断出该点阵的引脚分布,如图2所示。
我们把行列总线接在单片机的IO口,然后把上面分析到的扫描代码送人总线,就可以得到显示的汉字了。但是若将LED点阵的行列端口全部直接接入89S51单片机,则需要使用32条IO口,这样会造成IO资源的耗尽,系统也再无扩充的余地。因此,我们在实际应用中只是将LED点阵的16条行线直接接在P0口和P2口,至于列选扫描信号则是由4-16线译码器74HC154来选择控制,这样一来列选控制只使用了单片机的4个IO口,节约了很多IO资源,为单片机系统扩充使用功能提供了条件。考虑到P0口必需设置上拉电阻,我们采用4.7 kΩ排电阻作为上拉电阻。
汉字扫描显示的基本过程是这样的:通电后由于电阻R1,电容C1的作用,使单片机的RST复位脚电平先高后低,从而达到复位;之后,在C2,C3,X1以及单片机内部时钟电路的作用下,单片机89C51按照设定的程序在P0和P2接口输出与内部汉字对应的代码电平送至LED点阵的行选线(高电平驱动),同时在P1.1,P1.2,P1.3,P1.4接口输出列选扫描信号(低电平驱动),从而选中相应的象素LCD发光,并利用人眼的视觉暂留特性合成整个汉字的显示。
3 汉字的点阵显示原理及字库代码获取方法
我们以UCDOS中文宋体字库为例,每一个字由16行16列的点阵组成显示。即国标汉字库中的每一个字均由256点阵来表示。我们可以把每一个点理解为一个象素,而把每一个字的字形理解为一幅图像。事实上这个汉字屏不仅可以显示汉字,也可以显示在256象素范围内的任何图形。如查用8位的AT89C51单片机控制,由于单片机的总线为8位,一个字需要拆分为2个部分,如图3所示。
为了弄清楚汉字的点阵组成规律,首先通过列扫描方法获取汉字的代码。汉字可拆分为上部和下部,上部由8×16点阵组成,下部也由8×16点阵组成。本例通过列扫描方法首先显示左上角的第一列的上半部分,即第0列的P00~P07口,方向为P00到P07,显示汉字“大”时,P05点亮,由上往下排列,为:P0.0灭,P0.1灭,P0.2灭P0.3灭,P0.4灭,P0.5亮,P0.6灭,P0.7灭。即二进制00000100,转换为十六进制为04h。上半部第一列完成后,继续扫描下半部的第一列,为了接线的方便,我们仍设计成由上往下扫描,即从P27向P20方向扫描,从图3可以看到,这一列全部为不亮,即为00000000,十六进制则为00h。依照这个方法转向第二列、第三列,…,直至第十六列的扫描,一共扫描32个8位,可以得出汉字“大”的扫描代码为:
由这个原理可以看出,无论显示何种字体或图像,都可以用这个方法来分析出他的扫描代码从而显示在屏幕上。
上述方法虽然能够让我们弄清楚汉字点阵代码的获取过程,但是依靠人工方法获取汉字代码是一件非常繁琐的事情。为此,我们经常采用字库软件查找字符代码,软件打开后输入汉字,点“检取”,十六进制数据的汉字代码即可自动生成,把我们所需要的竖排数据复制到程序中即可,如图4所示。
可见,汉字点阵显示一般有点扫描、行扫描和列扫描3种。为了符合视觉暂留要求,点扫描方法的扫描频率必须大于16×64=1 024 Hz,周期小于1 ms即可。行扫描和列扫描方法的扫描频率必须大于16×8=128 Hz,周期小于7.8 ms即可,但是一次驱动一列或一行(8颗LED)时需外加驱动电路提高电流,否则LED亮度会不足。
4 元器件选择
本设计所需元器件如表1所示。
点完灯之后把教程里重点的像串口、中断、定时器、IIC、SPI过一遍,再上块触摸屏,玩玩GUI,整点花里胡哨的项目,你的单片机能力就能再上一个等级。这个是我当时做的笔记和知识点总结,都是我自己随手记的,可能只有我自己能看懂,等我哪天不懒了估计会把这些笔记重新整理发在公众号上,努力做成别人也能看懂的样子。
5 PCB设计与元件装配
本作品采用通用的Protel 99SE板级EDA软件完成PCB图的设计,详细设计过程略。考虑到本设计用到的元件数量不多,我们基本采用单面布线策略,只使用了少量的顶层跨接导线,以便于业余设计制作。已设计好的PCB图见图5所示。
本电路对元件参数没有苛刻要求,只要元器件选择正确,无损坏,电路板制作工艺良好,把所有电子元件正确焊接装配后即可进入程序下载和调试工作阶段。制作与调试时,在AT89C2051的位置应安装20脚的IC座,以便使单片机可以从电路板中拿下去烧写程序。
6 程序设计、烧录与调试
软件程序主要由开始、初始化、主程序、字库组成。其中主程序和子程序的流程图如图6和图7所示。
下面的程序能够用来实现“为中华之崛起而学习”等汉字的显示。程序清单如下:
在完成编写程序的编译和仿真之后,准备一台可以烧写AT89C51的编程器并与电脑主机硬件连接后即可对AT89C51芯片进行程序烧录下载,然后,将烧录好程序的AT89C51单片机装入到40脚的IC座上,通电即可调试和运行,由于本例电路对元件参数的要求不是很高,只要元件较好,参数基本符合要求,焊接装配后即可正常工作。
7 结 语
虽然本设计只使用了一块16×16 LED点阵,电路简单,但是已经包涵了LED显示屏的电路基本原理和基本程序,只要扩展单片机的IO接口,并增加一些LED点阵和相关芯片,就能设计出更大面积、更多花样的LED显示屏。因此本文对同类设计具有一定的理论和实践参考价值。
参考文献:
[1]. AT89C51 datasheet http://www.dzsc.com/datasheet/AT89C51_810155.html
[2]. MCS-51 datasheet http://www.dzsc.com/datasheet/MCS-51_477840.html
[3]. 89S51 datasheet http://www.dzsc.com/datasheet/89S51_1135673.html
[4]. 74HC154 datasheet http://www.dzsc.com/datasheet/74HC154_99218.html
[5]. Protel99SE datasheet http://www.dzsc.com/datasheet/Protel99SE_1136674.html
[6]. AT89C2051 datasheet http://www.dzsc.com/datasheet/AT89C2051_810086.html
> > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > >
进一步地,由于所述主控单片机1无法直接检测太多的薄膜压力传感器21,所以主控单片机1与压力传感器矩阵2之间设置有数字控制模拟电子开关11,对主控单片机1的传感器接口进行外扩,优选地所述数字控制模拟电子开关11型号为CD4015。