收藏 分享(赏)

项目11_点阵LED显示设计.ppt

上传人:tkhy51908 文档编号:8871257 上传时间:2019-07-15 格式:PPT 页数:47 大小:683KB
下载 相关 举报
项目11_点阵LED显示设计.ppt_第1页
第1页 / 共47页
项目11_点阵LED显示设计.ppt_第2页
第2页 / 共47页
项目11_点阵LED显示设计.ppt_第3页
第3页 / 共47页
项目11_点阵LED显示设计.ppt_第4页
第4页 / 共47页
项目11_点阵LED显示设计.ppt_第5页
第5页 / 共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”代码建立如下图所示:其显示代码为 00H,00

5、H,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 单个字符

6、显示设计,要想在88的LED点阵上显示一个数字,因为点阵的公共端是连接在一起的,就像我们在前面讲过的数码管的动态显示类似,是不能同时将这些LED进行点亮的。只能采用按行或者是按列进行控制。那么,怎么样去控制LED显示一个字符的呢?送显示代码过程简单如下:送第一列线代码到P0端口,同时置第一行线为“0”,其它行线为“1”,延时2ms左右,送第二列线代码到P0端口,同时置第二行线为“0”,其它行线为“1”,延时2ms左右,如此下去,直到送完最后一列代码,又从头开始送。以显示字符“0”为例:,任务1 单个字符显示设计,首先在P0送首个行码00H,在P2口首个列码FEH; 接着在P0送第二个行码00H

7、,在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=0xfe,0xfd,0

8、xfb,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,0x04,0x00, /定义4的

9、代码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, tb;,任务1 单个字符显示设计,v

10、oid main(void) TMOD=0x01; / 设定定时器0工作方式1, 处于定时状态TH0=(65536-2000)/256; / 延时20msTL0=(65536-2000)%256;TR0=1; / 启动定时器0ET0=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; / 显示字符内容ta+;if(ta=8),任务1 单个字符显示设计,ta=

11、0;count+;if(count=500) / 判断是否到1scount=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所示的电路图并存盘。然后选中单片机AT89s51,左键点击AT89s51,出现如图11-2所示的对话

12、框,在Program File后面的 “ ”按钮,找到刚才编译好的“dz11-1.hex”文件,然后点击“OK”就可以进行仿真了。点击模拟调试按钮的运行按钮“ ”,进入调试状态。此时可看到从0开始显示一直到9,重复循环。,任务1 单个字符显示设计,任务1 单个字符显示设计, 知识链接 1. 点矩阵的结构与种类 LED点阵显示器件是将要显示的字符(包括汉字),主要适用于汉字显示。点矩阵显示器的种类,按大小分,可分为57,58,68,88等4种;按LED发光变化颜色分,可分为单色、双色、三色;按LED 的极性排列方式又可分为共阳极与共阴极。,任务1 单个字符显示设计,下面简单介绍几种常见的类型。

13、单色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

14、 单个字符显示设计,任务1 单个字符显示设计,从图中可以看出,8X8点阵共需要64个发光二极管组成,且每个发光二极管是放置在行线和列线的交叉点上,当对应的某一行置1 电平,某一列置0电平,则相应的二极管就亮。若要使某一行亮,则对应的行置1,而列则采用扫描依次输出0来实现。若要使某一列亮,则对应的列置0,而列则采用扫描依次输出1来实现。,任务1 单个字符显示设计,任务小结 LED点阵的应用很广,对于不同的应用环境和应用要求,可以有各种各样的应用方式。通过本任务的学习,了解88矩阵式LED的工作原理和字符的显示方法,掌握了88矩阵式LED与单片机接口技术、掌握了单片机是如何控制矩阵式LED的字符的

15、显示程序。,任务1 单个字符显示设计,思考与练习 修改程序dz10-2.c,使之循环点亮0F。 编写程序实现88点阵中的一列或一行依次点亮。 编写程序实现在88点阵显示“”图案。,任务1 单个字符显示设计,57、88点矩阵由于太小,不能良好地显示汉字。在实际的应用中,要能良好地显示一个汉字,则至少需要1616点阵,所以显示一个汉字则采用4块88点阵来组成,显示汉字的原理与88点阵显示字符一样。以“欢迎”二字为例,字符的点阵图如图11-9和图11-10所示。,任务2 移动汉字显示设计,任务2 移动汉字显示设计,用AT89S51作为控制核心,在1616点阵式LED上编写程序实现移动汉字的显示,显示

16、的汉字为“柳州欢迎您!”。,任务2 移动汉字显示设计,1.提出任务,(1)硬件电路设计 电路组成。电路包括单片机、电源电路、时钟电路、复位电路、驱动电路和LED点阵电路等。由于在Proteus软件目前版本中还没有1616点阵模块,因此采用现有的88点阵模块组合成一个1616点阵模块。本设计中需要四片74HC138译码器,循环扫描各列,显示一个完整的汉字需要扫描32次。硬件电路原理图如图11-11所示。,2.任务分析,任务2 移动汉字显示设计,任务2 移动汉字显示设计,(2)软件设计思路 由于单片机总线为8位,一个字需要拆分为2个部分首先通过列扫描方法获取汉字代码。汉字可拆分为上部和下部,上部由

17、816点阵组成,下部也由816点阵组成,也可以分为左部分和右部分,左部分是168点阵组成,右部分也由168点阵组成,因此一个汉字要用16232个字节来表示。汉字点阵显示一般有点扫描、行扫描和列扫描3种。为了符合视觉暂留要求,点扫描方法扫描频率必须大于1664=1024 Hz,周期小于1 ms即可。行扫描和列扫描方法扫描频率必须大于168=128 Hz,周期小于7.8 ms即可,但是一次驱动一列或一行(8颗LED)时需外加驱动电路提高电流,否则LED亮度会不足。由以上扫描方法原理,逐个扫描然后求出相应的代码。,任务2 移动汉字显示设计,3. 源程序编写 根据程序流程图编写的源程序如下: / 文件

18、名dz11-2.c #include #define int8 unsigned char #define int16 unsigned int #define int32 unsigned long int8 flag, n; void delay(void); int16 offset; int8 code table32= 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

19、,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

20、,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,0x0

21、0,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,0

22、x00,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,0x

23、00,0x00,0x00,0x00,0x00 /* “ “ */ ; void main(void) int8 i;int8 *p;flag=0x10;n=0;TMOD=0x01;TH0=0xb1;TL0=0xe0;,任务2 移动汉字显示设计,ET0=1;EA=1;TR0=1;p= , void delay(void) int16 i;for (i=0;i210) offset=0;n=0; ,任务2 移动汉字显示设计,4.程序调试与电路仿真 运行C语言编辑软件,在编辑区中输入上面的源程序,并以“dz11-2.c”为文件名存盘。 运行Keil C51,然后建立一个“dz11-2.uv2”的工程

24、项目。把源程序文件“dz11-2.c”添加到工程项目中,进行编译,得到目标代码文件“dz11-2.hex”。 运行Proteus,在编辑窗口中绘制如图11-11所示的电路图并存盘。然后选中单片机AT89s51,左键点击AT89s51,出现如图10-12所示的对话框,在Program File后面的 “ ”按钮,找到刚才编译好的“dz11-2.hex”文件,然后点击“OK”就可以进行仿真了。点击模拟调试按钮的运行按钮“ ”,进入调试状态。此时可看到移动的字符“柳州欢迎您!”,重复循环。,任务2 移动汉字显示设计,任务2 移动汉字显示设计,任务小结 LED点阵显示模块可显示汉字、图形、动画及英文字符等;显示方式有静态、横向滚动、垂直滚动和翻页显示等。通过本任务的学习,了解1616矩阵式LED的工作原理和汉字的显示方法,掌握了1616矩阵式LED与单片机接口技术、以及74LS164、74HC573的原理和使用方法,掌握了单片机是如何控制矩阵式LED的汉字的显示程序。,任务2 移动汉字显示设计,思考与练习 修改程序dz11-2.c,使之循环显示“北京欢迎您!”。 修改程序dz11-2.c,使之循环显示“2009我爱你中国”。,任务2 移动汉字显示设计,

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 企业管理 > 管理学资料

本站链接:文库   一言   我酷   合作


客服QQ:2549714901微博号:道客多多官方知乎号:道客多多

经营许可证编号: 粤ICP备2021046453号世界地图

道客多多©版权所有2020-2025营业执照举报