《×8LED点阵显示汉字43416.pdf》由会员分享,可在线阅读,更多相关《×8LED点阵显示汉字43416.pdf(15页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。
1、 第 1 章 88LED 点阵显示汉字的研究背景及目的要求 88LED 点阵显示汉字的研究背景 点阵 LED 显示器是把一些 LED 组合在同一个包装中,常见的规格有 57,88,1616 等几种。通常,若要显示阿拉伯数字、英文字母、特殊符号等,则可 采用 57 的点阵即可够用,若要显示中文字,则需要 4 片 88 的点阵组成 1616 的点阵显示器才能显示一个中文字。LED 电子显示屏是利用发光 二极管点阵模块或像素单元组成的平面式显示屏幕。它是集微电子技术、光电子 技术、计算机技术、信息处理技术于一体的显示系统,是目前国际上极为先进的 显示媒体。由于它具有发光效率高、使用寿命长、组态灵活、
2、色彩丰富、工作性 能稳定以及对室内室外环境适应能力强等优点而日渐成为显示媒体中的佼佼者。在我国改革开放之后,特别是进入 90 年代国民经济高速增长,对公众场合发布 信息的需求日益强烈,LED 显示屏的出现正好适应了这一市场形势,因而在 LED 显示屏的设计制造技术与应用水平上都得到了迅速的提高,生产也得到了迅速的 发展,并逐步形成产业,成为光电子行业的新兴产业领域。LED 显示屏经历了从 单色、双色图文显示屏,到图像显示屏的发展过程。随着信息产业的高速发展,LED 显示屏作为信息传播的一种重要手段成为现代信息化社会的一个闪亮标志。近年 LED 显示屏已广泛应用于室内、外需要进行 服务内容和服务
3、宗旨宣传的公众场所如银行、营业部、车站、机场、港口、体育 场馆等信息的发布,政府机关政策、政令,各类市场行情信息的发部和宣传等。汉字显示方式是先根据所需要的汉字提取汉字点阵,将点阵文件存入 ROM,形成新的汉字编码。而在使用时则需要先根据新的汉字编码组成语言,再由 MCU 根据新编码提取相应的点阵进行汉字显示。LED 的发展前景极为广阔,目前正朝着更高亮度、更高耐气候性、更高的发光密度、更高的发光均匀性,可靠性、全色化方向发展。SPCE061A单片机介绍 SPCE061A 是凌阳科技公司 nSPTM(Microcontroller And Signal Processor)系列产品中的16位微
4、控制器芯片,内置32k闪存,其较高的处理速度使芯片能够非常容易、快速地处理复杂的数字信号,适用于数字语音识别等应用领域。在工作电压范围内,SPCE061A 的工作速度范围为,具备8通道10位ADC 输入功能,内置的具有自动增益控制的麦克风输入功能,双通道10位DAC音频输出功能及A、B两个I/O口输入输出功能2。语音处理功能:SPCE061A的语音处理功能是由凌阳公司自行开发的具有(转载自文章资源库,请保留此标记。)音频编解码及各种语音压缩算法实现的。各种算法相应的程序模块存放在语音算法库SCAM-LIB中,使用时只需调用相应的模块就可方便地实现语音合成、语音播放、录音、识别等功能。A/D 转
5、换功能:SPCE061A内部集成了8 通道10 位的A/D 转换器,采用逐次逼近原理实现模/数转换,在检测连续变化的模拟量,如温度、压力、流量、转速、声音、亮度时非常方便,在语音类仪器仪表、家用电器中得到较好的应用。开发调试方便:SPCE061A的开发是通过在线调试器PROBE 实现的。它既是一个编程器(即程序烧写器),又是一个实时在线调试器,因此在其应用项目开发调试中非常方便。凌阳SPCE061A单片机不仅具有体积小、集成度高、可靠性好且易于扩展;较强的中断处理能力;高性能价格比;低功耗、低电压等优点外,还有很强的模块化,例如:位操作模块、自动语音录音以及播放模块。另外,它还配有专门的编译环
6、境IDE,这些都为软件的设计提供了方便。在硬件方面,单片机有输入输出端口,这就方便了单片机与机器人、计算机的连接。设计要求 利用 SPCE061A 单片机和 LED 点阵显示模块,来设计点阵显示的硬件电路,并编制相应程序,实现中文字符的显示。编制键盘扫描程序,将键值显示在 LED显示器上。本设计的目的是:(1)了解 LED 点阵显示的基本原理和实现方法。(2)掌握 DM Tool 字模提取工具的使用方法。(3)掌握 SPCE061A 控制 88LED 点阵显示的方法。第 2 章 88LED 点阵显示汉字的设计方案及基本原理 88LED 点阵显示汉字设计方案 根据 LED 汉字显示主要内容:点阵
7、显示原理与应用 LED 点阵显示屏广泛应用与汽车报站器,广告屏等。88 LED 点阵是最基本的点阵显示模块,理解 88 LED 点阵的工作原理就可以基本掌握 LED 点阵显示技术。88 点阵共需要 64 个发光二极管组成,且每个发光二极 管是放置在行线和列线的交叉点上,当对应的某一列置 1 电平,某一行置 0 电平,则相应的二极管就亮;要实现显示图形或字体,只需考虑其显示方式。通过编程控制各显示点对应 LED 阳极和阴极端的电平,就可以有效的控制各显示点的亮灭。这样,就可以通过 SPCE061A编写程序显示要求的汉字。如图 2-1 所示:图2-1 SPCE061A 显示 88LED 点阵显示汉
8、字基本原理 1.88LED点阵的工作原理 双色 88LED点阵是由 64 个双色LED构成,用它可以显示英文字符、数字和一些简单的图片和简单的汉字。实验箱双色 88LED点阵电路原理图如图 4-23,用行驱动和列驱动可以点亮 LED点阵模块。图中 RCOL1RCOL8 分别控制着88LED的每一列显示成红色,称为红色 LED的列驱动,低电平有效;而 GCOL1GCOL8分别控制着88LED的每一列显示成绿色,称为绿色 LED 的列驱动,同样是低电平有效;COM1COM8是他们的数据口,当送入其中一个口高电平时,相应行的 LED被点亮,而当送入其中一个口低电平时,相应行 LED就会被熄灭,所以也
9、称为行驱动。比如,当想要第一行(从下到上)的第一个 LED显示成红色的时候,只需送 RCOL1一个低电平,而且送 COM1 一个高电平即可,也即选中红色的第一列(从右到左),并给第一行(从下到上)送一个高电平,就可以使得第一行第一列(同前)的LED显示成红色。注意J32、J33和J34中引针的接法,1号引针引出的是RCOL8、GCOL8 和 COM8,这是因为在 88LED点阵的实物图中,如果按照从上到下的顺序 RCOL8、GCOL8控制第一列 LED 点亮,按照从左到右的顺序 COM8 控制第一行 LED 点亮,在下文中都是按照这种顺序。只要让某些 LED亮,就可以组成数字、英文字符、简单的
10、汉字和图形。当然不管是哪种形式,哪种图案的哪些 LED亮必须是固定的。事实上,当利用 88LED 点阵显示时,是按照列显示的,比如先显示第一列,再显示第二列,一直显示到第八列,而不是同时显示的。比如,当显示第一幅图象时,先给RCOL1 RCOL8送数据“0 x0001”,再给 COM1COM8 送数据“0 x001C”点亮第一列的三个 LED;接着给 RCOL1 RCOL8 送数据一“0 x0002”,再给 COM1COM8送数据“0 x0022”点亮第二列的两个 LED;之后给 RCOL1 RCOL8 送数据一个“0 x0004”,再给 COM1COM8送数据“0 x0048”点亮第三列的两
11、个LED;依次点亮第四列到第八列图中的 LED,就可以构成一个完整的图中的时钟图形。学交流电时,曾学过当电流频率大于 50Hz 时,就不能感觉到灯泡的闪烁。图象的显示和它是同一个原理,由于 CPU 的速度很快,感觉不到先后顺序,而是看到一个完整的图象显示在 88LED 点阵上。所以,只要点亮 88LED 点阵不同位置的 LED 就可以显示任意的字符。取字原理:由于采用共阴极的 LED 显示模块,故在取字符时,取字符阴码,即点亮 LED 灯的信号为 1。取模顺序是从左到右,逐行取位,即第一个点作为最高位。每取 8 个点作为一个字节。取字的字体由软件写入时的字体决定,每个 LED 灯的亮灭都是由一
12、个数位来标志的。图 2-2 取字例图 每一个字由 16 行 16 列的点阵组成显示。即国标汉字库中的每一个字均由每一个字由 16 行 16 列的点阵组成显示。即国标汉字库中的每一个字均由 256 点阵来表示。我们可以把每一个点理解为一个像素,而把每一个字的字形理解为一幅图像。事实上这个汉字屏不仅可以显示汉字,也可以显示在 256 像素 范围内的任何图形。2.SPCE061A控制双色 88LED点阵显示 SPCE061A可以通过给I/O送数据控制双色 88LED点阵显示,比如把 IOA0 连接 J32的第1个引针,IOB0连接J34的第1个引针时。即把IOA0和RCOL8连接,IOB0 和COM
13、8连接,当要点亮从上到下第一行、从左到右第一列的一个LED,只需给IOA0 送“0”,给IOB0 送“1”就可以了。硬件连接图如下:IOA7IOA0 连接 GRE-的 18;IOA15IOA8 连接 RED-的 18;IOB0IOB7 连接 COM+的 18,即用 8pin 排线分别连接 J26 和 J33、J27 和 J32、J28 和 J34。硬件连接图如图 2-3。注意硬件连接图中 J26 与 J33、J27 与 J32 时的连接顺序(J27(或者 J26)的第 0 号引针连接 J32(或者 J33)的第 8 号引针)。图 2-3 SPCE061A与双色88LED点阵连接 IOA0IOA
14、7 SPCE061A IOA8IOA15 GRE-18 双色 8*8LED 点阵模块 RED-18 第 3 章 88LED 点阵显示汉字程序设计 主程序流程图 主程序流程图如图 3-1:在主程序里,初始化 I/O 口,由于要在中断中扫描键盘,所以需要开 128Hz 中断;在 88LED 点阵上循环显示“东北石油大学”六个汉字:根据时间顺序显示动态汉字,各个动态汉字符合实验要求。整个程序由几个部分组成:主程序、显示汉字子程序、内码转换与显示子程序、延迟子程序。主程序主要在系统接通电流后初始化后开串口中断接收 PC 机端信息。程序架构和实现 a于 LED 的扫描驱动是一个重复的不间断的过程,自然,
15、定时中断是最好的实现方法 b新模块的实现程序设计中,一般将此模块置于定时中断中或主程序循环体中,通过检测对应的消息来决定其是否需要执行数据的刷新。c点阵发生器主要是通过定义相应的点阵来保存各种需要显示数据。图 3-1 主程序流程图 程序代码(见附录)开始 初始化LED 清点阵屏 延时,清看门狗 显示汉字“东”延时,清看门狗 显示汉字“北”显示汉字“石”延时,清看门狗 显示汉字“油”延时,清看门狗 显示汉字“大”延时,清看门狗 延时,清看门狗 显示汉字“北”显示汉字“学”第 4 章 88LED 点阵显示汉字调试结果及分析 88LED 点阵显示汉字调试结果及分析 实验步骤如下:1.建立一个新工程
16、ex1_LED_Dots 和 ex2_Led_Show_Key,在工程里新建 C 语言文件。2.拷贝头文件 和 到新建工程 ex1_Led_Show,这两个文件在 IDE 的安装路径SPCE061Ainclude 路径下可以找到。3.添加、到工程的“Head Files”;添加后可以直接用这两个头文件中申明的变量或者地址单元。4.按照程序流程图编写程序。All。6.按照硬件连接图连接电路,注意断开 JP3 和 JP7 的所有引针,以免影响输出显示数据。7.下载程序到实验箱,根据数码管显示的现象,判断是否和实验要求相统一。实验结果:根据 88LED 点阵显示的工作原理,在显示屏上显示“东北石油大
17、学”六个汉字,并能持续一段时间,达到实验效果。结果分析:用 8 位的 SPCE061A 单片机控制,由于单片机的总线为 8 位,故汉字由 88 点阵组成。在单片机首先显示的是左上角第一列 8,即第 0 列的 p00p07 口。方向为 p00 到 p07,显示汉字“东”时点亮,由上往下排列。第一列完成后,继续扫描,为了接线的方便,我们仍设计成由上往下扫描,即从 p27 向p20 方向扫描,这一列完成后继续进行扫描,依照这个方法,一共扫描 8 个 8 位。图 4-1 调试图 图 4-2 组装连接图 经处理后,结果正确,实现了在 88LED 点阵上循环显示“东北石油大学”六个汉字。结论与体会 通过这
18、次课程设计使我们能够熟悉利用 SPCE061A 和 LED 汉字显示,掌握利用LED显示器显示汉字的方法。通过这次SPCE061A凌阳16位单片机的课程设计,使我重温了 C 语言程序设计,学会了使用 SPCE061A 编写程序并编译生成可执行文件,了解了单片机程序的导入及编写的相关技术,并通过仿真软件和使用开发板实践,对课本上的知识有了更深的理解。课程设计是一门专业课,给我很多专业知识以及专业技能上的提升,同时又是一门讲道课,一门辩思课,给人许多道和思,并且课程设计使我对抽象的理论有了具体的认识。通过这次课程设计,我掌握了常用 LED 和单片机元件的识别和测试;熟悉了常用仪器、仪表;了解了电路
19、的连线方法;以及如何提高电路的性能等等。我认为,在这学期的实验中,不仅培养了独立思考、动手操作的能力,在各种其它能力上也都有了提高。更重要的是,在实验课上,我们学会了很多学习的方法。课程设计,不仅可以巩固了以前所学过的知识,而且学到了很多在书本上所没有学到过的知识。通过这次课程设计使我懂得了理论与实际相结合是很重要的,只有理论知识是远远不够的,只有把所学的理论知识与实践相结合起来,从理论中得出结论,才能真正为社会服务,从而提高自己的实际动手能力和独立思考的能力。此次设计也让我明白了思路即出路,有什么不懂不明白的地方要及时请教或上网查询,只要认真钻研,动脑思考,动手实践,就没有弄不懂的知识,收获
20、颇丰。参考文献 1罗亚非凌阳 16 位单片机应用基础M.北京:北京航空航天大学出版社,2005.2 李春茂.LED 结构原理与应用技术M.机械工业出版社.2011-01.3何立民.单片机系统设计M.北京:北京航空航天大学出版社,1998.4薛钧义、张彦斌.凌阳十六位单片机原理及应用M.北京:北京航空航天大学出版社,2003.5实验箱使用说明书Z,凌阳大学计划网站.6SPCE061A英文数据手册Z,凌阳大学计划网站.7参考网址附录 初始化部分程序如下:#include unsigned int i,j,k,num,m1=0;unsigned int kk=0,jj=0;unsigned char
21、 code zi=/*-文字:东 -*/*-宋体 12;此字体下对应的点阵为:宽 x 高=8x8 -*/0 x08,0 x40,0 x0C,0 x40,0 x08,0 x40,0 x17,0 xFC /*-文字:北 -*/*-宋体 12;此字体下对应的点阵为:宽 x 高=8x8 -*/0 x00,0 x00,0 x7F,0 xFC,0 x00,0 x10,0 x1F,0 x90 /*-文字:石 -*/*-宋体 12;此字体下对应的点阵为:宽 x 高=8x8 -*/0 x01,0 x00,0 x01,0 x04,0 x7F,0 xFE,0 x02,0 x00 /*-文字:油 -*/*-宋体 12
22、;此字体下对应的点阵为:宽 x 高=8x8 -*/0 x10,0 x80,0 x10,0 x80,0 x20,0 x80,0 x7C,0 xFC /*-文字:大 -*/*-宋体 12;此字体下对应的点阵为:宽 x 高=8x8 -*/0 x10,0 x00,0 x11,0 xFC,0 x10,0 x08,0 x10,0 x10 /*-文字:学 -*/*-宋体 12;此字体下对应的点阵为:宽 x 高=8x8 -*/0 x01,0 x00,0 x01,0 x80,0 x01,0 x00,0 x01,0 x00 ;/=void delay(unsigned int num)while(-num)*P_
23、Watchdog_Clear=C_WDTCLR;void led_init(void)delay(50000);SCK_SCLK=1;LCK=0;G1_DATA=0;OE=1;delay(50);/=uart_soft(unsigned char dat)unsigned char ii;for(ii=0;ii8;ii+)SCK_SCLK=0;G1_DATA=dat&0 x80;dat=1;SCK_SCLK=1;/=void main()*P_IOA_Dir=0 xFFFF;*P_IOA_Attrib=0 xFFFF;*P_IOA_Data=0 xFFFF;*P_IOB_Dir=0 xFFFF;*P_IOB_Attrib=0 xFFFF;*P_IOB_Data=0 xFFFE;led_init();while(1)*P_Watchdog_Clear=C_WDTCLR;for(jj=0;jj=15;jj+)for(k=1;k=6;k+)for(i=0;i2;i+)uart_soft(zikk+i);kk=kk+32;kk=jj+2;LCK=0;LCK=1;P0=jj+1+m1;kk=kk+jj;kk=0;if(num=60)if(+num=6)num=0;m1+;if(m1=16)m1=0;*/