《点阵led显示设计教材》由会员分享,可在线阅读,更多相关《点阵led显示设计教材(47页珍藏版)》请在金锄头文库上搜索。
1、项目11 点阵LED显示设计, 知识目标: 1. 掌握88矩阵式LED的工作原理和字符的显示方法; 2. 掌握 1616矩阵式LED的工作原理和字符的显示方法; 3. 学会电子元器件74LS164、74HC573的原理和使用方法。 能力目标: 1. 能根据设计任务要求正确选用元器件,并绘制电路原理图; 2. 能够编写驱动矩阵式LED的字符和汉字显示程序; 3. 会用keil C51软件对源程序进行编译调试及与protues软件联调,实现电路仿真。,任务1 单个字符显示设计,单个LED或者是数码管作为显示器件,只能显示简单的几个有限的简单字符,对于复杂的字符(比如汉字)以及图形等则无法显示。矩阵
2、式LED将诸多个LED按矩阵的方式组合一起,通过控制每个LED的工作,可完成各种字符和图形的显示。有关点矩阵显示器的商品,市面上有很多,例如活动字幕机广告、汽车站与火车站的车次显示板、活动布告板、股票显示板等。本任务利用AT89S51单片机来实现单个字符这一功能。,任务1 单个字符显示设计,1.提出任务,用AT89S51作为控制核心,外接88矩阵式LED,编写程序,使88矩阵式LED循环点亮09这十个数字,时间间隔为1s。,2.分析任务,任务1 单个字符显示设计,(1)硬件电路设计 电路组成。这里选择具有内部程序存储器的AT89S51单片机作为控制电路,其P0接88矩阵式LED的阳极,由于P0
3、口没有上拉能力,所以采用接8个限流电阻后上接电源提供上拉电流,P2接矩阵式LED的阴极,硬件电路原理图如图11-1所示。,任务1 单个字符显示设计,任务1 单个字符显示设计,(2)软件设计思路 为了能LED正常的显示0-9等数字,首先要了解0-9这十个数字的具体显示代码。具体代码可以通过软件转换得到,也可以采用绘制方法得到,然后写出相应的代码。因此0-9等十个数字的代码可以由由如下方法取得。,任务1 单个字符显示设计,假设显示数字“0”,如下图所示: 因此,形成的列代码为 00H,00H,3EH,41H,41H,3EH,00H,00H;只要把这些代码分别送到相应的列线上面,即可实现“0”的数字
4、显示。,数字“1”代码建立如下图所示: 其显示代码为 00H,00H,00H,00H,21H,7FH,01H,00H,任务1 单个字符显示设计,任务1 单个字符显示设计,数字“2”代码建立如下图所示: 其显示代码为 00H,00H,27H,45H,45H,45H,39H,00H,数字“3”代码建立如下图所示: 其显示代码为 00H,00H,22H,49H,49H,49H,36H,00H,任务1 单个字符显示设计,任务1 单个字符显示设计,数字“4”代码建立如下图所示: 其显示代码为 00H,00H,0CH,14H,24H,7FH,04H,00H,数字“5”代码建立如下图所示: 其显示代码为 0
5、0H,00H,72H,51H,51H,51H,4EH,00H,任务1 单个字符显示设计,数字“6”代码建立如下图所示: 其显示代码为 00H,00H,3EH,49H,49H,49H,26H,00H,任务1 单个字符显示设计,数字“7”代码建立如下图所示: 其显示代码为 00H,00H,40H,40H,40H,4FH,70H,00H,任务1 单个字符显示设计,数字“8”代码建立如下所示: 其显示代码为 00H,00H,36H,49H,49H,49H,36H,00H,任务1 单个字符显示设计,数字“9”代码建立如下所示: 其显示代码为 00H,00H,32H,49H,49H,49H,3EH,00H
6、,任务1 单个字符显示设计,要想在88的LED点阵上显示一个数字,因为点阵的公共端是连接在一起的,就像我们在前面讲过的数码管的动态显示类似,是不能同时将这些LED进行点亮的。只能采用按行或者是按列进行控制。那么,怎么样去控制LED显示一个字符的呢?送显示代码过程简单如下:送第一列线代码到P0端口,同时置第一行线为“0”,其它行线为“1”,延时2ms左右,送第二列线代码到P0端口,同时置第二行线为“0”,其它行线为“1”,延时2ms左右,如此下去,直到送完最后一列代码,又从头开始送。以显示字符“0”为例:,任务1 单个字符显示设计,首先在P0送首个行码00H,在P2口首个列码FEH; 接着在P0
7、送第二个行码00H,在P2口第二个列码FDH; 再在在P0送第三个行码3EH,在P2口第三个列码FBH; 再在在P0送第四个行码3EH,在P2口第四个列码F7H; 依次把所在的行码送完,这样就可以显示一个“0”字了,接着再重复上述过程,把所有的数字都显示完就可以达到效果了。,任务1 单个字符显示设计,思考: 如果要显示AF等字符,该怎样修改程序呢?,任务1 单个字符显示设计,3. 源程序编写 根据程序流程图编写的源程序如下: /文件名dz11-1.c #include “reg51.h” #define uchar unsigned char unsigned char code tab=0x
8、fe,0xfd,0xfb,0xf7,0xef,0xdf,0xbf,0x7f; unsigned char code dispcode108= 0x00,0x00,0x3e,0x41,0x41,0x41,0x3e,0x00, /定义0的代码 0x00,0x00,0x00,0x00,0x21,0x7f,0x01,0x00, /定义1的代码 0x00,0x00,0x27,0x45,0x45,0x45,0x39,0x00, /定义2的代码 0x00,0x00,0x22,0x49,0x49,0x49,0x36,0x00, /定义3的代码 0x00,0x00,0x0c,0x14,0x24,0x7f,0x0
9、4,0x00, /定义4的代码 0x00,0x00,0x72,0x51,0x51,0x51,0x4e,0x00, /定义5的代码 0x00,0x00,0x3e,0x49,0x49,0x49,0x26,0x00, /定义6的代码 0x00,0x00,0x40,0x40,0x40,0x4f,0x70,0x00, /定义7的代码 0x00,0x00,0x36,0x49,0x49,0x49,0x36,0x00, /定义8的代码 0x00,0x00,0x32,0x49,0x49,0x49,0x3e,0x00 /定义9的代码 ; unsigned int count; / 定义计数变量 uchar ta,
10、 tb;,任务1 单个字符显示设计,void main(void) TMOD=0x01; / 设定定时器0工作方式1, 处于定时状态 TH0=(65536-2000)/256; / 延时20ms TL0=(65536-2000)%256; TR0=1; / 启动定时器0 ET0=1; / 开放定时器0 中断 EA=1; / 允许全局中断 while(1) ; void t0(void) interrupt 1 using 0 TH0=(65536-3000)/256; TL0=(65536-3000)%256; P2=tabta; / 送列码 P1=dispcodetbta; / 显示字符内容
11、 ta+; if(ta=8),任务1 单个字符显示设计, ta=0; count+; if(count=500) / 判断是否到1s count=0; / 计时到,将计数变量清0,以便重新计数 tb+; if(tb=10) tb=0; ,4.程序调试与电路仿真 运行C语言编辑软件,在编辑区中输入上面的源程序,并以“dz11-1.c”为文件名存盘。 运行Keil C51,然后建立一个“dz11-1.uv2”的工程项目。把源程序文件“dz11-1.c”添加到工程项目中,进行编译,得到目标代码文件“dz11-1.hex”。 运行Proteus,在编辑窗口中绘制如图11-1所示的电路图并存盘。然后选中
12、单片机AT89s51,左键点击AT89s51,出现如图11-2所示的对话框,在Program File后面的 “ ”按钮,找到刚才编译好的“dz11-1.hex”文件,然后点击“OK”就可以进行仿真了。点击模拟调试按钮的运行按钮“ ”,进入调试状态。此时可看到从0开始显示一直到9,重复循环。,任务1 单个字符显示设计,任务1 单个字符显示设计, 知识链接 1. 点矩阵的结构与种类 LED点阵显示器件是将要显示的字符(包括汉字),主要适用于汉字显示。点矩阵显示器的种类,按大小分,可分为57,58,68,88等4种;按LED发光变化颜色分,可分为单色、双色、三色;按LED 的极性排列方式又可分为共
13、阳极与共阴极。,任务1 单个字符显示设计,下面简单介绍几种常见的类型。 单色57的外观,即共阳极LED结构如图11-3所示。 单色57的内部结构,即共阴与共阳LED阵列图如图11-4所示。,任务1 单个字符显示设计,任务1 单个字符显示设计,单色57点阵引脚图如图11-5所示。,任务1 单个字符显示设计,单色88点阵引脚图如图11-6所示。,任务1 单个字符显示设计,双色88点阵引脚图如图11-7所示。,任务1 单个字符显示设计,2. 点矩阵的工作原理 由于点矩阵的种类很多,不能一一说明其工作原理,不过所有的点矩阵的工作原理都差不多相同。下面就以8X8点阵LED工作原理作说明。其它类型的点矩阵
14、工作原理,读书可以触类旁通。图11-8是88点矩阵的内部结构图。,任务1 单个字符显示设计,任务1 单个字符显示设计,从图中可以看出,8X8点阵共需要64个发光二极管组成,且每个发光二极管是放置在行线和列线的交叉点上,当对应的某一行置1 电平,某一列置0电平,则相应的二极管就亮。若要使某一行亮,则对应的行置1,而列则采用扫描依次输出0来实现。若要使某一列亮,则对应的列置0,而列则采用扫描依次输出1来实现。,任务1 单个字符显示设计,任务小结 LED点阵的应用很广,对于不同的应用环境和应用要求,可以有各种各样的应用方式。通过本任务的学习,了解88矩阵式LED的工作原理和字符的显示方法,掌握了88
15、矩阵式LED与单片机接口技术、掌握了单片机是如何控制矩阵式LED的字符的显示程序。,任务1 单个字符显示设计,思考与练习 修改程序dz10-2.c,使之循环点亮0F。 编写程序实现88点阵中的一列或一行依次点亮。 编写程序实现在88点阵显示“”图案。,任务1 单个字符显示设计,57、88点矩阵由于太小,不能良好地显示汉字。在实际的应用中,要能良好地显示一个汉字,则至少需要1616点阵,所以显示一个汉字则采用4块88点阵来组成,显示汉字的原理与88点阵显示字符一样。以“欢迎”二字为例,字符的点阵图如图11-9和图11-10所示。,任务2 移动汉字显示设计,任务2 移动汉字显示设计,用AT89S5
16、1作为控制核心,在1616点阵式LED上编写程序实现移动汉字的显示,显示的汉字为“柳州欢迎您!”。,任务2 移动汉字显示设计,1.提出任务,(1)硬件电路设计 电路组成。电路包括单片机、电源电路、时钟电路、复位电路、驱动电路和LED点阵电路等。由于在Proteus软件目前版本中还没有1616点阵模块,因此采用现有的88点阵模块组合成一个1616点阵模块。本设计中需要四片74HC138译码器,循环扫描各列,显示一个完整的汉字需要扫描32次。硬件电路原理图如图11-11所示。,2.任务分析,任务2 移动汉字显示设计,任务2 移动汉字显示设计,(2)软件设计思路 由于单片机总线为8位,一个字需要拆分为2个部分首先通过列扫描方法获取汉字代码。汉字可拆分为上部和下部,上部由816点阵组成,下部也由816点阵组成,也可