




版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、 毕 业 论 文论文题目:基于单片机的 Led 点阵广告牌设计学 院: 理工学院专 业: 电子信息工程年 级: 08 电信(2)姓 名: 胡 超指导教师: 徐小明职 称: 讲 师(2012 年 5 月)宜春学院教务处制【摘要】本设计使用 AT89C51 系列高速单片机作为主控制模块,利用简单的外围电路来驱动 8016 的点阵 LED 显示屏。利用 AT89C51 系列高速单片机本身强大的功能,可以很方便的实现单片机与计算机间的数据传输及存储,并能利用软件方便的实现显示内容的多样变化,另一方面点阵显示屏广泛的应用于医院、通讯、银行等公共场所,所以本设计具有很强的现实应用性。本 LED 显示屏能够
2、以动态扫描的方式同时显示 4 个 1616 点阵汉字,并能通过上位机软件修改显示内容和显示效果等等。把字符内码存储在空闲的单片机程序存储器空间,使本LED 显示系统能掉电存储 1024 个字符。设计中采用了 SPI 接口的 GB2312 标准字库,支持所有的国标字符和 ASCII 标准字符的显示。因为采用串行传输方式,使本系统的可扩展性得到提升,便于多个显示单元的级联。本文从 LED 的显示原理入手,详细阐述了 LED 动态显示的过程,以及硬件电路的设计、计算和软件的算法。【关键词】 动态显示;单片机;点阵字库Led dot matrix based on single chip design
3、 billboardsAbstract: This design uses STC12C series MCU as a main controller, and depends on a simple external circuit to drive 9616 the lattice LED display. By using its own powerful functions and capacity of internal E2PROM, it is easy to accomplish the MCU and PC and E2PROM for internal storage,
4、data transmission equipment ,and it also can be used conveniently to show a variety of content changes. The other dot matrix display is widely used in hospitals, communications ,airports, banks and other public places. Therefore, the design has a strong practical application. The LED Display dynamic
5、 scan can show the way at the same time six 16 16 dot matrix Chinese characters, and PC software can modify the content and effect shows, and so on. IAP used in the application of programmable technology, the characters within the code stored in the SCM free program memory space, so that the LED dis
6、play system can store 1,024 brown-out characters. SPI used in the design of the interface standard GB2312 character, to support all the GB2312 standard ASCII characters and characters of the show. Because serial transmission used, so that the system can be enhanced scalability, for a number of displ
7、ay units of the cascade. This article from the start LED display principle, elaborated on the LED display dynamic process, as well as hardware circuit design, computing and software algorithms.Key Words: MCU;Serial Data Transfer;Llattice Llibrary目录目录1 1 前言前言.5 51.1 选题的依据和意义 .51.2 国内外发展状况 .51.3、本课题研究
8、内容 .62 2 概述概述.6 62.1 LED 点阵显示屏介绍点阵显示屏介绍.62.2 LED 电子显示屏的分类电子显示屏的分类.62.3 LED 点阵显示屏的特点:.73 3 显示原理及控制方式分析显示原理及控制方式分析.7 73.1 LED 点阵模块结构点阵模块结构.73.2LED 动态显示原理动态显示原理.83.3 LED 常见的传输方式常见的传输方式.94 4 硬件电路设计硬件电路设计.9 94.1 系统硬件概述系统硬件概述.94.2 1616LED 点阵显示制作点阵显示制作.114.2.1 1616LED点阵的内部点阵的内部结结构及工作原理构及工作原理.114.2.2 用用88LE
9、D点阵构成点阵构成1616LED点阵点阵.124.3 LED 显示驱动电路显示驱动电路.135 5 字模生成字模生成.14145.1 字模简介字模简介.145.2 LED 显示屏领域字模实现技术显示屏领域字模实现技术.145.35.3 字库生成字库生成 .166.6.软件设计软件设计.18186.1 程序设计总体思路和结构程序设计总体思路和结构.186.1.1 程序设计总体思路程序设计总体思路.186.1.2 程序流程图程序流程图.186.2 各模块程序设计各模块程序设计.186.2.1 系统初始化系统初始化.186.2.2 LED动态显示动态显示.196.2.3 汉字显示的原理汉字显示的原理
10、.197 7 系统功能测试系统功能测试 .20207.1 单元模块电路测试单元模块电路测试.207.2 系统整体功能测试系统整体功能测试.20总总结结.2222致谢致谢.2323参考文献参考文献.2424附附录录.25251 前言前言1.1 选题的依据和意义LED 显示屏是利用发光二极管点阵模块或像素单元组成的平面式显示屏幕。它具有发光率高、组态灵活、使用寿命长、色彩丰富以及对室内外环境适应能力强等优点。自 20 世纪八十年代开始,LED 显示屏的应用领域已经遍布电信、证券、教育、交通、广告宣传等各方面。随着社会经济的不断进步,以及 LED 显示技术的不断完善,人们对 LED 显示屏的认识将会
11、越来越深入,其应用领域将会越来越广。 1.2 国内外发展状况 LED 显示屏的发展可分为以下几个阶段:第一阶段为 1990 年到 1995 年,主要是单色和16 级双色图文屏。用于显示文字和简单图片,主要用在车站、金融证券、银行、邮局等公共场所,作为公共信息显示工具。 第二阶段是 1995 年到 1999 年,出现了 64 级、256 级灰度的双基色视频屏。视频控制技术、图像处理技术、光纤通信技术等的应用将 LED 显示屏提升到了一个新的台阶。LED 显示屏控制专用大规模集成电路芯片也在此时由国内企业开发出来并得以应用。 第三阶段从 1999 年开始,红、纯绿、纯蓝 LED 管大量涌入中国,同
12、时国内企业进行了深入的研发工作,使用红、绿、蓝三原色 LED 生产的全彩色显示屏被广泛应用,大量进入体育场馆、会展中心、广场等公共场所,从而将国内的大屏幕带入全彩时代。 随着 LED 原材料市场的迅猛发展,表面贴装器件从 2001 年面世,主要用在室内全彩屏,并且以其亮度高、色彩艳丽、温度低的特性,可随意调整的点间距,被不同价位需求者所接受,在短短两年多时间内,产品销售额已超过 3 亿元,表面贴装全彩色 LED 显示屏应用市场进入新世纪。为了适应 2008 年奥运会的“瘦身”计划,利亚德开发了表面贴装双基色显示屏,大量用于训练馆和比赛计时计分系统。在奥运场馆全彩屏方面,为紧缩投资,全彩屏大部分
13、采用可拆卸方式,奥运期间可作为实况转播工具,赛事结束后可用于租赁,作为演出、国家政策发布等公共场合应用工具,通过这种方式可尽快收回成本。 就市场而言,中国加入 WTO、北京申奥成功等,成为 LED 显示屏产业发展的一个契机。国内 LED 显示屏市场保持持续增长,目前在国内市场上,国产 LED 显示屏的市场占有率近95%。国际上 LED 显示屏的市场容量预计以每年 30%的速度在增长。 LED 显示屏的主要制造厂商集中在日本、北美等地,我国 LED 制造厂商出口的份额在其中微不足道。据不完全统计,世界上目前至少有 150 家厂商生产全彩屏,其中产品齐全,规模较大的公司约有 30 家左右。1.3、
14、本课题研究内容本设计使用 AT89C51 系列高速单片机作为主控制模块,利用简单的外围电路来驱动 1616的点阵 LED 显示屏。利用 AT89C51 系列高速单片机本身强大的功能和内部 EPROM,可以很方便的实现单片机与计算机间的数据传输及存储,并能利用软件方便的进行显示内容的多样变化,另一方面点阵显示屏广泛的应用于医院、通讯、银行等公共场所,所以本设计具有很强的现实应用性。本 LED 显示屏能够以动态扫描的方式同时显示 4 个 1616 点阵汉字,并能通过上位机软件修改显示内容和显示效果等等。采用 IAP 在应用可编程技术,把字符内码存储在空闲的单片机程序存储器空间,使本 LED 显示系
15、统能掉电存储 1024 个字符。设计中采用了 SPI 接口的GB2312 标准字库,支持所有的国标字符和 ASCII 标准字符的显示。因为采用串行传输方式,使本系统的可塑性得到提升,便于多个显示单元的级联2 概述概述2.1 LED 点阵显示屏介绍点阵显示屏介绍LED 点阵显示屏的构成型式有多种,其中典型的有两种。一种把所需展示的广告信息烧写固化到 EPROM 芯片内,能进行固定内容的多幅汉字显示,称为单显示型;另一种在机内设置了字库、程序库,具有程序编制能力,能进行内容可变的多幅汉字显示,称可编程序型。目前,国内的 LED 点阵显示屏大部分是单显示型,其显示的内容相对较少,显示花样较单一。一般
16、在产品出厂时,显示内容就已写入显示屏控制系统中的 EPROM 芯片内,当需要更换显示内容时就非常困难,这样使该类型的显示屏使用范围受到了限制。国内的另一种LED 显示屏可编程序型 LED 显示屏,虽然增加了显示屏系统的编程能力,显示内容和显示花样都有所增加,但也存在着更换显示内容不便的缺点。随着社会经济的迅速发展,如今的广告牌都存在着显示内容丰富、信息量大、信息更换频率快等特点。因此传统的 LED显示屏控制系统已经越来越不能满足现代广告宣传业的需要。而利用计算机通信技术控制LED 显示屏,则具有显示内容丰富,信息更换灵活多变等优点2.2 LED 电子显示屏的分类电子显示屏的分类LED 显示屏的
17、分类,可以从以下几个标准进行分类:安装方式LED 显示屏,可以分为:立柱式 LED 显示屏(单立柱和双立柱) ,壁挂式 LED 显示屏,吊装式显示屏,嵌入式显示屏等。颜色LED 显示屏,分为全彩显示屏,单色(单基色)显示屏(单红,单白,单黄)和双色(双基色)显示屏(红绿色,蓝绿色)形状LED 显示屏,又可以分为常规屏和异型屏。用途LED 显示屏分为:信息发布屏,交通诱导屏,广告发布屏,车载屏,球场屏,舞台租赁屏和楼梯屏等使用环境LED 显示屏,又可以分为:室内 LED 显示屏,半户外 LED 显示屏和户外 LED 显示屏。 单基色显示屏室内显示屏:发光点较小,一般 3mm-8mm,显示面积一般
18、几至十几平方米。半户外显示屏:像素点大小之于室内和户外显示屏之间;常见于银行,商场或医院等门楣上。室外显示屏:面积一般几十平方米至几百平方米,亮度高,可在阳光下工作,具有防风、防雨、防水功能单一颜色(红色,绿色,黄色,白色,蓝色等) 。双基色显示屏:红和绿双基色,256 级灰度或者 512 级灰度、可以显示 65536 种颜色。全彩色显示屏:红、绿、蓝三基色,256 级灰度的全彩色显示屏可以显 示一千六百多万种色。2.3 LED 点阵显示屏的特点:组合型 LED 示器自八十年代开始出现,以发光二极管用高亮度发光二极管芯阵列组合后,环氧树脂和塑模封装而成。具有高亮度、功耗低、引脚少、视角大、寿命
19、长、耐湿、耐冷腐蚀等特点。点阵显示器有单色和双色两类,可显示红,黄,绿,橙等。LED 点阵有44、48、57、58、 88、1616、2424、4040 等多种;根据像素的数目分为单、双基色、三基色等,根据像素颜色的不同所显示的文字、图象等内容的颜色也不同,单基色点阵只能显示固定色彩如红、绿、黄等单色,双基色和三基色点阵显示内容的颜色由像素内不同颜色发光二极管点亮组合方式决定,如红绿都亮时可显示黄色,如果按照脉冲方式控制二极管的点亮时间,则可实现 256 或更高级灰度显示,即可实现真彩色显示。几种 LED 点阵显示器的内部电路结构和外型规格,其它型号点阵的结构与引脚可试验获得,LED 点阵显示
20、器单块使用时,既可代替数码管显示数字,也可显示各种中西文字及符号如 5 x 7 点阵显示器用于显示西文字母58 点阵显示器用于显示中西文,8 x 8 点阵用于显示中文文字,也可用于图形显示。用多块点阵显示器组合则可构成大屏幕显示器,但这类实用装置常通过微机或单片机控制驱动。3 显示原理及控制方式分析显示原理及控制方式分析3.1 LED 点阵模块结构点阵模块结构八十年代以来出现了组合型 LED 点阵显示器模块,以发光二极管为像素,它用高亮度发光二极管芯阵列组合后,环氧树脂和塑模封装而成。这种一体化封装的点阵 LED 模块,具有高亮度、引脚少、视角大、寿命长、耐湿、耐冷热、耐腐蚀等特点。LED 点
21、阵规模常见的有 44、48、57、58、88、1616 等等。根据像素颜色的数目可分为单色、双基色、三基色等。像素颜色不同,所显示的文字、图象等内容的颜色也不同。单色点阵只能显示固定色彩如红、绿、黄等单色,双基色和三基色点阵显示内容的颜色由像素内不同颜色发光二极管点亮组合方式决定,如红绿都亮时可显示黄色,如果按照脉冲方式控制二极管的点亮时间,则可实现 256 或更高级灰度显示,即可实现真彩色显示。图 3.1 示出最常见的 88 单色 LED 点阵显示器的内部电路结构和外型规格,其它型号点阵的结构与引脚可试验获得。3.2LED 动态显示原理动态显示原理 数码管的接口有静态接口和动态接口。 静态接
22、口为固定显示方式,无闪烁,其电路可采用一个并行口接一个数码管。数码管的公共端按共阴或共阳分别接地或 Vcc。采用这种接法,显示原理简单、控制方便,但硬件接线复杂,在实际应用中一般采用动态显示方式,动态显示采用扫描的方式工作,采用各数码管循环显示的方法。当循环显示的频率较高时,利用人眼的暂留特性,看不出闪烁显示现象。这种显示方式是各个数码管的段选并接在同一个接口上,该接口成为段选口,输出字形码,完成字形选择控制;各个数码管的公共端接在另一接口的不同位,完成数位选择,控制各数码管轮流点亮。点阵式 LED 汉字广告屏绝大部分是采用动态扫描显示方式,这种显示方式巧妙地利用了人眼的视觉暂留特性。将连续的
23、几帧画面高速的循环显示,只要帧速率高于 24 帧/秒,人眼看起来就是一个完整的,相对静止的画面。最典型的例子就是电影放映机。在电子领域中,因为这种动态扫描显示方式极大的缩减了发光单元的信号线数量,因此在 LED 显示技术中被广泛使用图 3.2 用动态扫描显示字符“B”的过程3.3 LED 常见的传输方式常见的传输方式目前常见的是串行传输方式,并行传输是通过 8 位锁存器将 8 位总线上的列数据进行锁存显示,各 8 位锁存器的片选信号由译码器提供。此种方式的优点是传输速度快,对微控制器(MCU)的通信速度要求较低。但是这种方案最大的缺点是不便于随意扩展显示单元的数目。再一个缺点是,每个单元的 P
24、CB 随着安放位置的不同,布线结构也不相同,可塑性较低,不利于厂家批量生产。所以采用串行传输。4 硬件电路设计硬件电路设计4.1 系统硬件概述系统硬件概述整个电路由单片机 89C51,1 个 74159,4 个 88 的 LED。该电路所设计的电子屏可显示多个汉字,需要 20 个 88 LED 点阵模块,可组成 8016 的条形点阵 AT89C51 是一种带 4K 字节 FLASH 存储器( FPEROMFlash Programmable and Erasable Read Only Memory)的低电压、高性能 CMOS 8 位微处理器,俗称单 片机。AT89C2051 是一种带 2K
25、字节闪存可编程可擦除只读存储器的 单片机。单片机 的可擦除只读存储器可以反复擦除 1000 次。该器件采用 ATMEL 高密度非易失存储器 制造技术制造,与工业标准的 MCS-51 指令集和输出管脚相兼容。由于将多功能8 位 CPU 和闪烁存储器组合在单个芯片中, ATMEL 的 AT89C51 是一种高效微控制器,AT89C2051 是它的一种精简版本。 AT89C 单片机为很多嵌入式控制系统提供了一种灵活性高且价廉 的方案。AT89C51 引脚即外观如图 4.1 所示图 4.1 AT89C51 的管脚图P0 口口:P0 口为一个 8 位漏级开路双向 I/O 口,每脚可吸收 8TTL 门电流
26、。当 P0 口的管脚第一次写 1 时,被定义为 高阻输入。P0 能够用于外部程序数据存储器,它可以被定义为数据 /地址的低八位。在 FIASH 编程时,P0 口作为原码输入口,当 FIASH 进行校验时, P0 输出原码,此时 P0 外部必须接上拉电阻。 P1 口口:P1 口是一个内部提供上拉电阻的8 位双向 I/O 口,P1 口缓冲器能接收输出4TTL 门电流。P1 口管脚写入 1 后,被内部上拉为高,可用作输入, P1 口被外部下拉为低电平时,将输出电流,这是由于内部上拉的缘故。在FLASH 编程和校验时, P1口作为低八位地址接收。 P2 口口:P2 口为一个内部上拉电阻的 8 位双向
27、I/O 口,P2 口缓冲器可接收,输出4 个 TTL 门电流,当 P2 口被写“1”时,其管脚被内部上拉电阻拉高,且作为输入。并因此作为输入时, P2 口的管脚被外部拉低,将输出电流。这是由于内部上拉的缘故。P2口当用于外部程序存储器或 16 位地址外部数据存储器进行存取时, P2 口输出地址的高八位。在给出地址 “1”时,它利用内部上拉优势,当对外部八位地址数据存储器进行读写时,P2 口输出其特殊功能寄存器的内容。 P2 口在 FLASH 编程和校验时接收高八位地址信号和控制信号。 P3 口口:P3 口管脚是 8 个带内部上拉电阻的双向 I/O 口,可接收输出 4 个 TTL 门电流。当 P
28、3 口写入“1”后,它们被内部上拉为高电平,并用作输入。作为输入,由于外部下拉为低电平, P3 口将输出电流( ILL)这是由于上拉的缘故。 P3 口也可作为 AT89C51 的一些特殊功能口,如下表所示: 口管脚 备选功能 P3.0 RXD(串行输入口) P3.1 TXD(串行输出口) P3.2 /INT0(外部中断 0) P3.3 /INT1(外部中断 1) P3.4 T0(记时器 0 外部输入) P3.5 T1(记时器 1 外部输入) P3.6 /WR(外部数据存储器写选通) P3.7 /RD(外部数据存储器读选通) P3 口同时为闪烁编程和编程校验接收一些控制信号。RST:复位输入,当
29、震荡器工作时,RST 引脚出现两个机器周期以上高电平将使单片机复位。ALE/PROG:当访问外部程序存储器或数据存储器时,ALE(地址锁存允许)输出脉冲用于所存地址的低 8 位字节。即使不访问外部存储器,ALE 乃以时钟振动频率的 1/6 输出固定的正脉冲信号,因此它可对外输出时钟或用于定时目的。要注意的是:每当访问外部数据存储器时将跳过一个 ALE 脉冲。如想禁止 ALE 的输出可在 SFR8EH 地址上置 0。此时, ALE 只有在执行 MOVX,MOVC 指令是 ALE 才起作用。另外,该引脚被略微拉高。如果微处理器在外部执行状态 ALE 禁止,置位无效。 译码器是组合逻辑电路的一个重要
30、的器件, 74LS138 的输出是低电平有效,故实现逻辑功能时,输出端不可接或门及或非门,74LS138 与前面不同,其有使能端,故使能端必须加以处理,否则无法实现需要的逻辑功能。发光二极管点亮只须使其正向导通即可,根据 LED 的公共极是阳极还是阴极分为两类译码器,即针对共阳极的低电平有效的译码器;针对共阴极 LED 的高电平输出有效的译码器。 LED,50 年前人们已经了解半导体材料可产生光线的基本知识,第一个商用二极管产生于1960 年。LED 是英文 light emitting diode(发光二极管)的缩写,它的基本结构是一块电致发光的半导体材料,置于一个有引线的架子上,然后四周用
31、环氧7 树脂密封,即固体封装,所以能起到保护内部芯线的作用,所以 LED 的抗震性能好 该电路的显示采用逐行扫描方式。工作时,由单片机取出第一行需要显示的内容经延时一段时间后再进行下一行点阵数据的显示。需要注意的是,每次只能选通一行数据,即要通过不断的逐行扫描来实现汉字或字符的显示。4.2 1616LED 点阵显示制作点阵显示制作4.2.1 1616LED 点阵的内部结构及工作原理点阵的内部结构及工作原理以 Zimo2.1 为例,每一个字由 16 行 16 列的点阵组成显示。即国家标准汉字库中的每一个字均由 256 点阵来表示。我们可以把每一个点理解为一个像素,而把每一个字的字形理解为一幅图像
32、。事实上这个汉字屏不仅可以显示汉字,也可以显示在 256 像素范围内的任何图形。这里我们以“宜”字说明,如图 4.2 所示。图 4.2 16*16LED汉字显示用 8 位的 AT89C51 单片机控制,由于单片机的总线为 8 位,一个字需要拆分为 2 个部分。一般把它拆分为上部和下部,上部由 816 点阵组成,下部也由 816 点阵组成。在本例中单片机首先显示的是左上角的第一列的上半部分,即第 0 列的 p00p07 口。方向为 p00到 p07 ,显示汉字“高”时,p02 点亮,由上往下排列,为 p0.0 灭,p0.1 灭, p0.2 灭, p0.3 灭, p0.4 灭, p0.5 亮,p0
33、.6 灭,p0.7 灭。即二进制 00000100,转换为 16 进制为 04h。上半部第一列完成后,继续扫描下半部的第一列,为了接线的方 便,我们仍设计成由上往下扫描,即从 p27 向 p20 方向扫描,从上图可以看到,这一列全部为不亮,即为 00000000,16 进制则为 00h。依照这个方法,继续进行下面的扫描,扫描的代码是0 x00,0 x10,0 x0C,0 x04,0 xE4,0 x24,0 x24,0 x25,0 x26,0 x24,0 xE4,0 x04,0 x14,0 x0C,0 x04,0 x00,0 x00,0 x40,0 x40,0 x40,0 x7F,0 x49,0
34、 x49,0 x49,0 x49,0 x49,0 x7F,0 x40,0 x40,0 x40,0 x40,0 x00由这个原理可以看出,无论显示何种字体或图像,都可以用这个方法来分析出它的扫描代码从而显示在屏幕上。不过现在有很多现成的汉字字模生成软件,就不必自己去画表格算代码了。比如说汉字字库、zimo21 等等都可以自动生成 16 进制的代码得到想要的代码值。4.2.2 用用 88LED 点阵构成点阵构成 1616LED 点阵点阵首先,从 Proteus 元件库中找到“MATRIX-8X8-RED”元器件,并将四块该元器件放入Proteus 文档区编辑窗口中。此时需要注意,如果该元器件保持初
35、始的位置(没有转动方向),我们要首先将其左转 90,使其水平放置,那么此时它的左面 8 个引脚是其行线,右边 8 个引脚是其列线(当然,如果你是将右转,则右边 8 个引脚是行线,左面 8 个引脚为其列线)。然后我们将四个元器件对应的行线和列线分别进行连接,使每一条行线引脚接一行 16 个LED,列线也相同。并注意要将行线和列线引出一定长度的引脚,以便下面我们使用。连接好的 1616 点阵如下图所示:连接成如上图的 1616 点阵只是第一步,这样分开的数块并不能达到好的显示效果,下面我们要将其进一步组合。组合实际上很简单,首先选中如上图中右侧的两块 88 点阵,然后拖动并使其与左侧的两块相并拢,
36、如下图所示:我们可以看到原来的连线已经自动隐藏了,至于线上的交点,我们不要去动。然后,我们再来最后一步,选中下侧的两块点阵,并拖动使其与上侧的两块并拢,最后的效果如下图所示:可以发现,原来紊乱的连线现在已经差不多全部隐藏起来了,一块 1616 的 LED 点阵做成了。需要注意,做成的 LED 点阵的行线为左侧的 16 个引脚,下侧的 16 个引脚为其列线,而且其行线为高电平有效,列线为低电平有效。然后,我们将其保存,以便以后使用。4.3 LED 显示驱动电路显示驱动电路5 字模生成字模生成5.1 字模简介字模简介文字的字模是一组数字,但它的意义却与数字的意义有着根本的不同,它是用数字的各位信息
37、来记载英文或汉字的形状。在电脑硬件中,根本没有汉字这个概念,也没有英文的概念,其认识的概念只有内码(将 ASCII 表的高 128 个很少用到的数值以两个为一组来表示汉字,即汉字的内码。而剩下的低 128 位则留给英文字符使用,即英文的内码)。如果你用启动盘启动系统后用 DIR 命令可能得到一串串莫名其妙的字符,但那确确实实是汉字,如果你启动 UCDOS 或其他的汉字系统后,就会看到那是一个个熟悉的汉字。在硬件系统内,英文的字模信息一般固化在ROM 里,即使在没有进入系统的 CMOS 里,也可以让你看到英文字符。而在 DOS 下,中文的字模信息一般记录在汉字库文件里(将制作好的字模放到一个个标
38、准的库中,这就是点阵字库文件)。5.2 LED 显示屏领域字模实现技术显示屏领域字模实现技术在通过软件实现的技术中,目前有许多字模生成软件。比如说汉字字库、zimo21 等软件,软件打开后输入汉字,点“检取”,十六进制数据的汉字代码即可自动生成,把我们所需要的竖排数据复制到我们的程序中即可。在通过硬件实现字模提取的技术中,有在单片机系统中增加硬汉字库的方法,主控器发送的汉字是其机内码,用两个字节来表示一个汉字。根据机内码,显示单元控制模块从汉字库中查取显示字模,实现汉字显示。由于带有硬汉字库,进行动态文字显示时,通用智能显示单元仅接受汉字的机内码即可,这样数据通讯量大大减少。因此, “动态文字
39、显示速度快”。在单片机系统中对字模的存储,根据单片机的程序存储容量和其寻址空间情况,可采取 3 种方式。(1)将提取的汉字字模数据作为常量数组存放在程序存储区内,这种方法经常使用,针对程序比较小或单片机没有外部扩展数据存储区功能的情况。如下面程序所示,将提取的要显示汉字的字模数据定义成常量数组,如要显示合肥”两字。再编制汉字显示子函数 Write Hz。其中要调用另外两个子函数 Lcd_wait 和Disp_address。Lcd_wait 为读取液晶控制器是否忙函数,而 Disp_address 为液晶控制器显示缓冲区地址设置函数,可根据液晶控制器资料。函数 Write Hz 的参数 x 和
40、 y 对应液晶屏幕的显示位置,其与液晶控制器显示缓冲区中的地址通过行*可计算出,该行中的 Wide 为事先定义好的液晶屏每行字节数,对于 DG12864液晶而言,Wide 为 16。函数 Write Hz 根据 1616 点阵汉字液晶控制器显示缓冲区的存放形式,依次改变显示地址,先将左半部 1-16 个字节写入显示缓冲区,再写入右半部 17-32 个字节。若要液晶显示“合肥”两字,只要在程序中带显示地区参数调用该函数即可。如:write Hz(0,4,0);/合write Hz(0,10,0 x20);/肥(2)将提取的汉字字模数据存放在 EPROM 或 E2PROM 内,作为扩展的数据存储器
41、供单片机调用。采用哈佛结构的单片机,如 8051 单片机及其派生产品,程序存储器(ROM)和数据存储器(RAM)可分别寻址,51 单片机 ROM 和 RAM 最大的寻址空间均为 64K,通常来说,对于中型的嵌入式系统,尤其是带液晶的单片机系统,64k 的程序空间并不足够使用,而将汉字字模作为常量数组会大大占用 ROM 的空间,而相对来说,数据存储器只需几 k 就够用了,剩下很多空间可用于功能芯片的扩展。将提取的汉字字模数据存放在 EPROM 或 E2PROM 内,并设定该芯片的片选地址,则只要知道某个汉字字模数据在该芯片的存储位置,通过程序计算出偏移地址,就可以实现显示功能,例如:设存放汉字字
42、模数据的 E2PROM 的片选地址为 0 x9000,则通过程序定义:#define Hz Dot 0 x9000#define VBYTE (unsigned char volatile xdata*)若要编制汉字显示子函数 Write Hz,只要将上面 Write Hz 函数中*行换成 Lcd_Data=*(VBYTE(Hz_Dot+p+i);*行换成 Lcd_Data=*(VBYTE(Hz_Dot+p+16+i);(3)将整个汉字字库存放在 EPROM 或 E2PROM 内,程序根据需要显示汉字的机内码来调用汉字字模。某些高端单片机,如 Motorola 的 M68300 系列 32 位
43、单片机,寻址范围可达 8M,液晶显示常用的 1616 汉字库二进制数据文件为两百多 k,将汉字字库存入大容量的 E2PROM,通过地址线可以寻址到汉字库中的每一个汉字。在计算机中对汉字的识别是通过机内码来实现的,汉字标准机内码为两字节代码。汉字在汉字库中是按照区位来排列的,每一区中有 94 个汉字,每个汉字都对应唯一的区号和在本区的位号,汉字输入法中就有区位码方法,实际上,汉字机内码和区位码有标准的对应关系,某个汉字在字库中的区号加上 0 xa0 等于其机内码的高字节,位号加上 0 xa0 等于其机内码的低字节,因此很容易通过程序计算出要显示的汉字在汉字库中的区位号,即得到了其在汉字库中的偏移
44、地址。由于 E2PROM 中存储了整个汉字库,只须在硬件上设定存放汉字库的存储器片选地址,直接将汉字作为字符数组付给汉字显示函数,通过机内码计算出区号和位号,即可方便地对汉字字模进行调用了。与前两种方法相比,无须事先提取字模和设定其地址用于程序调用,因此在进行程序升级,涉及到汉字显示时,不用更改汉字字模数据。5.3 字库生成字库生成转换成汇编的代码为:0 x40,0 x40,0 x44,0 x54,0 x54,0 xD4,0 x74,0 x5F,0 x54,0 x54,0 xD4,0 x54,0 x54,0 x44,0 x40,0 x00,0 x04,0 x04,0 x02,0 x02,0 x
45、7F,0 x4A,0 x4A,0 x4A,0 x4A,0 x4A,0 x7E,0 x01,0 x03,0 x06,0 x02,0 x00转换为汇编的代码:0 x40,0 x30,0 x10,0 x12,0 x5C,0 x54,0 x50,0 x51,0 x5E,0 xD4,0 x50,0 x18,0 x57,0 x32,0 x10,0 x00,0 x00,0 x02,0 x02,0 x02,0 x02,0 x02,0 x42,0 x82,0 x7F,0 x02,0 x02,0 x02,0 x02,0 x02,0 x02,0 x00转换成汇编的代码:0 xFE,0 x02,0 x32,0 x4A
46、,0 x86,0 x0C,0 x24,0 x24,0 x25,0 x26,0 x24,0 x24,0 x24,0 x0C,0 x04,0 x00,0 xFF,0 x00,0 x02,0 x04,0 x83,0 x41,0 x31,0 x0F,0 x01,0 x01,0 x7F,0 x81,0 x81,0 x81,0 xF1,0 x006.6.软件设计软件设计6.1 程序设计总体思路和结构程序设计总体思路和结构6.1.1 程序设计总体思路程序设计总体思路用简短的汇编程序设计,实现 LED 点阵显示内容,并使显示的内容在屏幕上从左到右的滚动显示。系统采用模块化结构,包括主程序、延时程序、显示子程序
47、和串行口中断程序。6.1.2 程序流程图程序流程图6.2 各模块程序设计各模块程序设计6.2.1 系统初始化系统初始化unsigned char i; for(i=0; i50*k; i+);/*void delay1() unsigned int i=0,flag=1;TR1=1;while(flag)while(TF1!=1) ;i+;if(i=8) flag=0;TH1=0 x00;TL1=0 x00;TF1=0;TR1=1;*/void main() unsigned char j,t; unsigned char g=0,h=0; P1=0; P0=0; TMOD=0X10; TH1
48、=0 x00;TL1=0 x00;6.2.2 LED 动态显示动态显示我们把行列总线接在单片机的 I0 口,然后把上面分析到的扫描代码送入总线, 就可以得到显示的汉字了。 在这个例子里,由于一共用到 16 行,16 列, 如果将其全部接入89c51单片机, 一共使用 32 条 IO 口,这样造成了 IO 资源的耗尽,系统也再无扩充的余地。 实际应用中我们使用 74159 来完成列方向的显示。 而行方向 16 条线则接在 p0 口和 p2 口。6.2.3 汉字显示的原理汉字显示的原理在单片机系统中,连续取 32 个字节送到 LCD 的相应位置,就能正确显示汉字后的图形符号。从 HS-12232-
49、1 使用的 SED1520 的控制原理得知,字模送显示前要旋转 90,例如“逢”的区位码是 3778,在 HZK16 中的位置为第 32*(371)*94+(781)=110752D 以后的32 个字节:04 44 FF FE 05 40 41 F8 33 10 14 E0 01 18 F6 46 1B F8 10 40 13 F8 10 40 17 FC 10 40 28 46 47 FC , 旋转 90后上 16 个字节:82 8A 92 B2 02 A7 92 5E 2A AF 2A 5A 4A 83 82 00,下 16 个字节;00 80 40 3F 04 90 95 95 95 F
50、F 95 95 95 D0 40 00在明白了以上所讲的以后,我们可以写出一个显示一个任意大小的点阵字模的函数,这个函数的功能是输出一个宽度为 w,高度为 h 的字模到屏幕的 (x,y) 坐标出,文字的颜色为 color,文字的点阵数据为 pdata 所指:/*输出字模的函数*/void _draw_model(char *pdata, int w, int h, int x, int y, int color) int i; /* 控制行 */ int j; /* 控制一行中的 8 个点 */ int k; /* 一行中的第 N 个“8 个点”了 */ int nc; /* 到点阵数据第 N
51、 个字节了 */ int cols; /* 控制列 */ BYTE static mask8=128, 64, 32, 16, 8, 4, 2, 1; /* 位屏蔽字 */ w = (w + 7) / 8 * 8; /* 重新计算 w */ nc = 0; for (i=0; ih; i+) cols = 0; for (k=0; kw/8; k+) for (j=0; j8; j+) if (pdatanc&maskj) putpixel(x+cols, y+i, color); cols+; nc+; 7 系统功能测试系统功能测试7.1 单元模块电路测试单元模块电路测试在 proteus
52、仿真软件中运行调试 AT89C51、74159 等芯片和 LED 显示器均能正常运行并整的的显示想要的结果所以各个模块都正常运行7.2 系统整体功能测试系统整体功能测试在仿真软件 proteus 中运行测试系统整体功能,一切正常。实现了汉字的右移滚动显示,完整的显示出了“宜春学院”浮动汉字。总总结结在本设计中采用程序在 LED 显示屏实现汉字的右移滚动显示。在设计中采用的芯片有AT89C51、74LS138、74159 和 88 的 LED 点阵显示屏。其特点是:1.内容能从左向右浮动显示。2.硬件结构简单,应用广泛。3.LED 数码管动态扫描显示,工作效率高,价格低廉等。4 容易上手,接触学习速度快。通过本
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
评论
0/150
提交评论