点阵LED显示设计.ppt
- 文档编号:8780452
- 上传时间:2023-05-14
- 格式:PPT
- 页数:47
- 大小:683KB
点阵LED显示设计.ppt
《点阵LED显示设计.ppt》由会员分享,可在线阅读,更多相关《点阵LED显示设计.ppt(47页珍藏版)》请在冰点文库上搜索。
项目11点阵LED显示设计,知识目标:
1.掌握88矩阵式LED的工作原理和字符的显示方法;2.掌握1616矩阵式LED的工作原理和字符的显示方法;3.学会电子元器件74LS164、74HC573的原理和使用方法。
能力目标:
1.能根据设计任务要求正确选用元器件,并绘制电路原理图;2.能够编写驱动矩阵式LED的字符和汉字显示程序;3.会用keilC51软件对源程序进行编译调试及与protues软件联调,实现电路仿真。
任务1单个字符显示设计,单个LED或者是数码管作为显示器件,只能显示简单的几个有限的简单字符,对于复杂的字符(比如汉字)以及图形等则无法显示。
矩阵式LED将诸多个LED按矩阵的方式组合一起,通过控制每个LED的工作,可完成各种字符和图形的显示。
有关点矩阵显示器的商品,市面上有很多,例如活动字幕机广告、汽车站与火车站的车次显示板、活动布告板、股票显示板等。
本任务利用AT89S51单片机来实现单个字符这一功能。
任务1单个字符显示设计,1.提出任务,用AT89S51作为控制核心,外接88矩阵式LED,编写程序,使88矩阵式LED循环点亮09这十个数字,时间间隔为1s。
2.分析任务,任务1单个字符显示设计,
(1)硬件电路设计电路组成。
这里选择具有内部程序存储器的AT89S51单片机作为控制电路,其P0接88矩阵式LED的阳极,由于P0口没有上拉能力,所以采用接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”的数字显示。
数字“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”代码建立如下图所示:
其显示代码为00H,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,任务1单个字符显示设计,要想在88的LED点阵上显示一个数字,因为点阵的公共端是连接在一起的,就像我们在前面讲过的数码管的动态显示类似,是不能同时将这些LED进行点亮的。
只能采用按行或者是按列进行控制。
那么,怎么样去控制LED显示一个字符的呢?
送显示代码过程简单如下:
送第一列线代码到P0端口,同时置第一行线为“0”,其它行线为“1”,延时2ms左右,送第二列线代码到P0端口,同时置第二行线为“0”,其它行线为“1”,延时2ms左右,如此下去,直到送完最后一列代码,又从头开始送。
以显示字符“0”为例:
任务1单个字符显示设计,首先在P0送首个行码00H,在P2口首个列码FEH;接着在P0送第二个行码00H,在P2口第二个列码FDH;再在在P0送第三个行码3EH,在P2口第三个列码FBH;再在在P0送第四个行码3EH,在P2口第四个列码F7H;依次把所在的行码送完,这样就可以显示一个“0”字了,接着再重复上述过程,把所有的数字都显示完就可以达到效果了。
任务1单个字符显示设计,思考:
如果要显示AF等字符,该怎样修改程序呢?
任务1单个字符显示设计,3.源程序编写根据程序流程图编写的源程序如下:
/文件名dz11-1.c#include“reg51.h”#defineucharunsignedcharunsignedcharcodetab=0xfe,0xfd,0xfb,0xf7,0xef,0xdf,0xbf,0x7f;unsignedcharcodedispcode108=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,0x04,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的代码;unsignedintcount;/定义计数变量ucharta,tb;,任务1单个字符显示设计,voidmain(void)TMOD=0x01;/设定定时器0工作方式1,处于定时状态TH0=(65536-2000)/256;/延时20msTL0=(65536-2000)%256;TR0=1;/启动定时器0ET0=1;/开放定时器0中断EA=1;/允许全局中断while
(1);voidt0(void)interrupt1using0TH0=(65536-3000)/256;TL0=(65536-3000)%256;P2=tabta;/送列码P1=dispcodetbta;/显示字符内容ta+;if(ta=8),任务1单个字符显示设计,ta=0;count+;if(count=500)/判断是否到1scount=0;/计时到,将计数变量清0,以便重新计数tb+;if(tb=10)tb=0;,4.程序调试与电路仿真运行C语言编辑软件,在编辑区中输入上面的源程序,并以“dz11-1.c”为文件名存盘。
运行KeilC51,然后建立一个“dz11-1.uv2”的工程项目。
把源程序文件“dz11-1.c”添加到工程项目中,进行编译,得到目标代码文件“dz11-1.hex”。
运行Proteus,在编辑窗口中绘制如图11-1所示的电路图并存盘。
然后选中单片机AT89s51,左键点击AT89s51,出现如图11-2所示的对话框,在ProgramFile后面的“”按钮,找到刚才编译好的“dz11-1.hex”文件,然后点击“OK”就可以进行仿真了。
点击模拟调试按钮的运行按钮“”,进入调试状态。
此时可看到从0开始显示一直到9,重复循环。
任务1单个字符显示设计,任务1单个字符显示设计,知识链接1.点矩阵的结构与种类LED点阵显示器件是将要显示的字符(包括汉字),主要适用于汉字显示。
点矩阵显示器的种类,按大小分,可分为57,58,68,88等4种;按LED发光变化颜色分,可分为单色、双色、三色;按LED的极性排列方式又可分为共阳极与共阴极。
任务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工作原理作说明。
其它类型的点矩阵工作原理,读书可以触类旁通。
图11-8是88点矩阵的内部结构图。
任务1单个字符显示设计,任务1单个字符显示设计,从图中可以看出,8X8点阵共需要64个发光二极管组成,且每个发光二极管是放置在行线和列线的交叉点上,当对应的某一行置1电平,某一列置0电平,则相应的二极管就亮。
若要使某一行亮,则对应的行置1,而列则采用扫描依次输出0来实现。
若要使某一列亮,则对应的列置0,而列则采用扫描依次输出1来实现。
任务1单个字符显示设计,任务小结LED点阵的应用很广,对于不同的应用环境和应用要求,可以有各种各样的应用方式。
通过本任务的学习,了解88矩阵式LED的工作原理和字符的显示方法,掌握了88矩阵式LED与单片机接口技术、掌握了单片机是如何控制矩阵式LED的字符的显示程序。
任务1单个字符显示设计,思考与练习修改程序dz10-2.c,使之循环点亮0F。
编写程序实现88点阵中的一列或一行依次点亮。
编写程序实现在88点阵显示“”图案。
任务1单个字符显示设计,57、88点矩阵由于太小,不能良好地显示汉字。
在实际的应用中,要能良好地显示一个汉字,则至少需要1616点阵,所以显示一个汉字则采用4块88点阵来组成,显示汉字的原理与88点阵显示字符一样。
以“欢迎”二字为例,字符的点阵图如图11-9和图11-10所示。
任务2移动汉字显示设计,任务2移动汉字显示设计,用AT89S51作为控制核心,在1616点阵式LED上编写程序实现移动汉字的显示,显示的汉字为“柳州欢迎您!
”。
任务2移动汉字显示设计,1.提出任务,
(1)硬件电路设计电路组成。
电路包括单片机、电源电路、时钟电路、复位电路、驱动电路和LED点阵电路等。
由于在Proteus软件目前版本中还没有1616点阵模块,因此采用现有的88点阵模块组合成一个1616点阵模块。
本设计中需要四片74HC138译码器,循环扫描各列,显示一个完整的汉字需要扫描32次。
硬件电路原理图如图11-11所示。
2.任务分析,任务2移动汉字显示设计,任务2移动汉字显示设计,
(2)软件设计思路由于单片机总线为8位,一个字需要拆分为2个部分首先通过列扫描方法获取汉字代码。
汉字可拆分为上部和下部,上部由816点阵组成,下部也由816点阵组成,也可以分为左部分和右部分,左部分是168点阵组成,右部分也由168点阵组成,因此一个汉字要用16232个字节来表示。
汉字点阵显示一般有点扫描、行扫描和列扫描3种。
为了符合视觉暂留要求,点扫描方法扫描频率必须大于1664=1024Hz,周期小于1ms即可。
行扫描和列扫描方法扫描频率必须大于168=128Hz,周期小于7.8ms即可,但是一次驱动一列或一行(8颗LED)时需外加驱动电路提高电流,否则LED亮度会不足。
由以上扫描方法原理,逐个扫描然后求出相应的代码。
任务2移动汉字显示设计,3.源程序编写根据程序流程图编写的源程序如下:
/文件名dz11-2.c#include#defineint8unsignedchar#defineint16unsignedint#defineint32unsignedlongint8flag,n;voiddelay(void);int16offset;int8codetable32=0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,/*/0x00,0x20,0x04,0x40,0x40,0x80,0x05,0x00,0x7f,0xf8,0x09,0x00,0x00,0x08,0x1f,0x90,0x11,0x20,0x27,0xc0,0x08,0x00,0x0f,0xfe,0x10,0x80,0x10,0x40,0x1f,0x80,0x00,0x00,/*柳*/0x00,0x00,0x00,0x84,0x07,0x08,0x00,0x30,0x3f,0xc0,0x00,0x00,0x07,0x00,0x00,0x00,0x3f,0xf0,0x40,0x00,0x03,0x00,0x00,0x00,0x7f,0xfd,0x00,0x00,0x00,0x00,0x00,0x00,/*州*/0x28,0x04,0x24,0x08,0x22,0x32,0x21,0xC2,0x26,0xC2,0x38,0x34,0x04,0x04,0x18,0x08,0xF0,任务2移动汉字显示设计,0x30,0x17,0xC0,0x10,0x60,0x10,0x18,0x14,0x0C,0x18,0x06,0x10,0x04,0x00,0x00,/*欢*/0x02,0x02,0x82,0x04,0x73,0xF8,0x20,0x04,0x00,0x02,0x3F,0xE2,0x20,0x42,0x40,0x82,0x40,0x02,0x3F,0xFA,0x20,0x02,0x20,0x42,0x20,0x22,0x3F,0xC2,0x00,0x02,0x00,0x00,/*迎*/0x01,0x00,0x02,0x04,0x0C,0x1C,0x3F,0xC0,0xC0,0x1C,0x09,0x02,0x16,0x02,0x60,0x92,0x20,0x4A,0x2F,0x82,0x20,0x02,0x24,0x0E,0x22,0x00,0x31,0x90,0x20,0x0C,0x00,0x00,/*您*/0x00,0x00,0x00,0x08,0x1F,0xDC,0x3F,0x08,0x3C,0x00,0x30,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,/*!
*/0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00/*/;voidmain(void)int8i;int8*p;flag=0x10;n=0;TMOD=0x01;TH0=0xb1;TL0=0xe0;,任务2移动汉字显示设计,ET0=1;EA=1;TR0=1;p=,voiddelay(void)int16i;for(i=0;i210)offset=0;n=0;,任务2移动汉字显示设计,4.程序调试与电路仿真运行C语言编辑软件,在编辑区中输入上面的源程序,并以“dz11-2.c”为文件名存盘。
运行KeilC51,然后建立一个“dz11-2.uv2”的工程项目。
把源程序文件“dz11-2.c”添加到工程项目中,进行编译,得到目标代码文件“dz11-2.hex”。
运行Proteus,在编辑窗口中绘制如图11-11所示的电路图并存盘。
然后选中单片机AT89s51,左键点击AT89s51,出现如图10-12所示的对话框,在ProgramFile后面的“”按钮,找到刚才编译好的“dz11-2.hex”文件,然后点击“OK”就可以进行仿真了。
点击模拟调试按钮的运行按钮“”,进入调试状态。
此时可看到移动的字符“柳州欢迎您!
”,重复循环。
任务2移动汉字显示设计,任务2移动汉字显示设计,任务小结LED点阵显示模块可显示汉字、图形、动画及英文字符等;显示方式有静态、横向滚动、垂直滚动和翻页显示等。
通过本任务的学习,了解1616矩阵式LED的工作原理和汉字的显示方法,掌握了1616矩阵式LED与单片机接口技术、以及74LS164、74HC573的原理和使用方法,掌握了单片机是如何控制矩阵式LED的汉字的显示程序。
任务2移动汉字显示设计,思考与练习修改程序dz11-2.c,使之循环显示“北京欢迎您!
”。
修改程序dz11-2.c,使之循环显示“2009我爱你中国”。
任务2移动汉字显示设计,
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 点阵 LED 显示 设计