本科毕业设计---基于arm的汉字显示系统设计

合集下载

汉字显示系统设计(单片机)

汉字显示系统设计(单片机)

实验报告单实验名称:汉字显示系统设计实验项目:实验目的:1. 掌握单片机应用系统的设计方法;2.深刻理解单片机片内主要硬件的功能和运行原理;3.深刻理解单片机相应系统的开发过程。

实验器材:装有Proteus和Keil uVision的电脑。

实验原理:实验步骤:1.在仿真系统Proteus中实现电路原理图设计;新建设计文档、设置工作环境、选择并放置元器件、对原理图进行布线、原理图的电器规则检查、调整、保存和输出报表等。

2.源代码的设计与生成目标代码;在Keil uVision5平台进行C语言和汇编语言源代码的输入、编译与调试,并生成可执行文件.hex。

C语言存储为.c文件,汇编语言存储为.asm文件。

3.调试与仿真;在Proteus中将可执行文件.hex加载到单片机中,对系统进行虚拟仿真。

在调试时也可使用Proteus与Keil uVision联合仿真调试。

程序代码及实验结果:#include<reg51.h>#include<intrins.h>#define uchar unsigned charuchar code table[]={0xf0,0x01,0x02,0x03,0x03,0x02,0x01,0xf0};uchar i=1;void main(){P3=0X01;EA=1;ET0=1;TMOD=0x00;TH0=(8192-2000)/32;TL0=(8192-2000)%32 ;TR0=1;while(1);}void Display() interrupt 1{TH0=(8192-2000)/32;TL0=(8192-2000)%32 ;P0=0xff;P0=table[i];P3=_crol_(P3,1);i++;if(i==8){i=0;}}.ORG 000HAJMP MAINMAIN:L1:MOV P0,#0X7F MOV P3,#0X04 LCALL DELAY L2:MOV P0,#0X7F MOV P3,#0X10 LCALL DELAY L3:MOV P0,#0XBF MOV P3,#0X08 LCALL DELAY L4:MOV P0,#0XC7 MOV P3,#0X1C LCALL DELAY L5:MOV P0,#0XC7 MOV P3,#0X22 LCALL DELAY L6:MOV P0,#0XFD MOV P3,#0X7F LCALL DELAY L7:MOV P0,#0XC2 MOV P3,#0X08 LCALL DELAY AJMP L1 DELAY:MOV R5,#010H D1:MOV R6,#010H DJNZ R6,$ DJNZ R5,D1 RETEND实验结果:一个“鼎”动态扫描:实验结果动态扫描:通过此次综合实验,掌握了单片机应用系统的设计方法;深刻理解了单片机内主要硬件的功能和运行原理;深刻知悉了单片机相应系统的开发过程;对学习过的单片机知识有一个综合性的运用。

基于ARM的LCD显示设计与实现

基于ARM的LCD显示设计与实现

西安工业大学北方信息工程学院本科毕业设计(论文)题目:基于ARM的LCD显示设计与实现系别:电子信息系专业:通信工程班级:B090310学生:杨海竹学号:B09031044指导教师:任安虎2013年06月毕业设计(论文)任务书系别电子信息系专业通信工程班级B090310 姓名杨海竹学号B090310441.毕业设计(论文)题目:基于ARM的LCD显示设计与实现2.题目背景和意义:随着科技的发展,ARM在社会各个方面的应用越来越广。

液晶显示是嵌入式系统中反映系统输入/输出的人机交互界面,液晶显示以其微功耗、体积小、显示内容丰富、模块化,接口电路简单等诸多优点得到广泛应用。

因此,研究基于ARM的LCD 显示有其实际应用意义。

3.设计(论文)的主要内容(理工科含技术指标):基于LPC2000系列的ARM处理器实现控制液晶屏LCD显示。

进行ARM处理器最小系统设计,ARM与LCD接口、控制按键电路设计,并进行软件设计完成输入数据的显示。

4.设计的基本要求及进度安排:基本要求:①查阅国内外相关文献,了解系统的工作原理;②进行系统方案设计;③进行系统硬件原理图设计;④编写程序并调试;⑤完成毕业设计论文及答辩。

进度安排:第16-17周:学习相关参考文献,对课题做初步了解;第18-19周:整理思路,构思开题报告,准备开题答辩;第1-3周:查阅相关资料,完成硬件模块框图;第4-8周:搭建硬件环境;第9-11周:完成LCD液晶屏驱动程序设计及调试;第12-13周:系统调试,实现所有编程,达到设计功能要求;第14-15周:撰写论文,定稿、打印、准备毕业答辩。

5.毕业设计(论文)的工作量要求①实验(时数)*或实习(天数):不少于200学时②图纸(幅面和张数)*:2张③其他要求:完成与课题相关的3000字左右的英文文献资料翻译。

指导教师签名:年月日学生签名:年月日系主任审批:年月日目录1 绪论 (1)1.1前言 (1)1.2课题研究背景 (1)1.3课题研究意义 (1)1.4国内外相关研究情况 (2)1.5论文结构安排 (3)2 相关技术及系统方案设计 (4)2.1 ARM技术简介 (4)2.2 硬件设计原理 (4)2.2.1 系统设计方案 (4)2.2.2 硬件设计原理框图 (4)3 单元电路设计 (6)3.1 LPC2103 (6)3.1.1 LPC2103介绍 (6)3.1.2 LPC2103 电路设计图 (6)3.2 外围电路设计 (7)3.2.1电源电路 (7)3.2.2 系统时钟电路 (7)3.2.3 复位电路 (8)3.2.4 JTAG 接口电路 (8)3.3 LCD 显示电路设计 (9)3.3.1 LCD12864液晶显示屏简介 (9)3.3.2 显示模块的设计 (9)3.4按键控制接口电路设计 (9)3.5 DS18B20温度采集模块 (10)3.5.1数字温度传感器DS18B20的介绍 (10)3.5.2 温度采集电路的设计 (11)4 软件设计 (12)4.1 软件开发环境 (12)4.1.1 ADS集成开发环境简介 (12)4.1.2 ADS1.2开发环境搭建 (12)4.2主程序流程图设计 (16)4.3子程序流程图设计 (20)4.3.1 DS18B20程序流程图设计 (20)4.3.2 LCD12864程序流程图设计 (21)4.3.3 KEY程序流程图设计 (30)5 系统调试 (24)5.1硬件调试 (30)5.1.1 Protel99简介 (30)5.1.2原理图调试 (31)5.2软件调试 (31)6结论 (34)6.1 总结 (34)6.2 体会 (34)致谢 (35)参考文献 (36)毕业设计(论文)知识产权声明 (37)毕业设计(论文)独创性声明 (38)附录1硬件原理图 (39)附录2源程序设计 (40)基于ARM的LCD显示设计与实现摘要在当前的数字信息技术和网络技术高速发展的后PC时代,嵌入式系统技术已经广泛地渗透到人们生活的各个方面。

基于ARM的文本独立笔迹鉴别系统设计

基于ARM的文本独立笔迹鉴别系统设计

基于ARM的文本独立笔迹鉴别系统设计张乃千;杨海;樊振方【摘要】Writer Identification is one of the characteristics technology to determine the writer's identity by analyzing handwriting information. In order to improve the accuracy and scientificity of writer identification, atext-independent writer identification system based on ARM embedded system is developed. This system includes three parts: handwriting capture terminal, data transfer terminal and PC processing terminal. Firstly, the overall design and detailed workflow of the system is described. Meanwhile, the handwriting capture terminal and data transfer terminal is analyzed. Finally, combined with handwriting image preprocessing techniques and texture analysis methods, a real-time writer identification is designed by multidimensional Gabor transform and Support Vector Machines methods. According to the experiments, the system has high identification rates and achieve the desired good effects.%笔迹鉴别是通过分析手写笔迹信息来判断书写者身份的特征分析技术,为提高笔迹鉴别的科学性和准确性,设计了基于ARM嵌入式系统的文本独立(Text-independent)笔迹鉴别系统。

大学本科毕业设计_点阵LED汉字显示系统的设计(硬件部分)

大学本科毕业设计_点阵LED汉字显示系统的设计(硬件部分)

点阵LED汉字显示系统的设计(硬件部分)摘要LED电子显示屏由于具有所显内容信息量大,外形美观大方,操作方便灵活,制作简单,安装方便,是近年来得到广泛应用的重要信息设备,被广泛应用于各种公共场合,如汽车报站器、广告屏以及公告牌等。

本文介绍了一款以单片机AT89S51为控制器的LED点阵显示屏系统的设计。

考虑到所需元器件的易购性,本设计使用了8×8的点阵发光管模块,组成16×16发光点阵,显示待定的中文、字符以及数字。

由显示驱动模块驱动一个16×16分辨率的LED点阵显示屏的扫描显示。

所选用的AT89S51单片机具有价格低廉程序写入方便的特点使得整个系统方便维护和检修。

除此之外,该系统只占用了单片机少量的I /O口和内存,为系统留下了功能扩展的空间。

关键词LED点阵;16X16点阵;单片机;显示屏;扫描AbstractBecause the LED electron display monitor has the institute content information content to be obviously big, the contour elegant appearance, the ease of operation is flexible, the manufacture is simple, the easy installation, was the recent years obtains the widespread application important information equipment, is widely applied in each kind of public area, like the automobile newspaper stood, the advertisement screen as well as the notice board and so on. This article introduced one section take monolithic integrated circuit AT89S51 as controller's LED lattice display monitor system's design. Considered needs primary device's Yi Gou, this design has used 8×8 lattice photo tube module, composition 16×16 illumination lattice, demonstration undetermined Chinese, character as well as digit. Actuates a 16×16 resolution by the demonstration actuation module the LED lattice display monitor's scanning demonstration. Selects at89S51 monolithic integrated circuit has the low in price procedure to read in the convenience the characteristic to cause the overall system convenience maintenance and the overhaul. In addition, this system has only taken the monolithic integrated circuit few I /O mouth and the memory, has left behind the space which for the system the function expands.Keywords LED dot-matrix; 16X16 dot matrix; singlechip; display; scan目录摘要 (Ⅰ)Abstract (Ⅱ)第1章绪论 (1)1.1课题背景 (1)1.1.1 选题背景 (1)1.1.2 研究现状及发展趋势 (1)1.2 LED显示屏概述 (2)1.2.1 LED发光二极管 (2)1.3 主要设计内容及技术指标 (2)1.3.1 主要设计内容 (2)1.3.2 主要设计指标 (2)第2章硬件电路设计 (3)2.1 电路的工作原理 (3)2.1.1 硬件电路的设计原理 (3)2.1.2 16*16点阵LED显示器汉字显示的工作原理 (4)2.1.3 控制电路的工作原理 (5)2.1.4 单片机电路的工作原理 (5)2.2 LED点阵显示系统的硬件设计 (6)2.2.1 显示控制电路 (6)2.2.2 显示驱动电路 (6)2.2.3 LED点阵显示方式 (7)2.3 LED外围电路 (7)2.3.1 电源电路 (7)2.3.2 复位电路 (8)2.3.3 时钟电路 (9)2.4 16*16LED点阵显示屏硬件电路图 (10)第3章软件电路设计 (12)3.1 软件系统 (12)3.2 程序流程图 (12)3.2.1 主程序流程图 (12)3.2.2 显示程序流程图 (13)3.3 汉字动态编码的具体实现 (14)3.3.1 汉字识别 (14)3.3.2 建立编码字典 (15)3.3.3 提取字模、建立动态字库 (15)3.3.4 编码改写 (16)3.3.5 提取汉字的软件设计及实现 (16)3.4 LED点阵显示屏显示字符原理 (17)3.5 程序清单 (17)第4章结果调试与讨论 (20)4.1 故障分析 (20)4.2 电路的现实误差讨论 (20)结论 (22)致谢 (23)参考文献 (24)附录A (25)附录B (27)第1章绪论1.1 课题背景1.1.1选题背景目前,点阵显示屏已广泛用于银行、酒店、超市、汽车站牌和高速公路等场所的广告宣传和交通提示,正逐步应用于公交汽车内和街道两旁的报栏上。

基于单片机的LED汉字显示系统设计大学课程设计报告

基于单片机的LED汉字显示系统设计大学课程设计报告

专业技能实训报告题目基于单片机的汉字显示系统设计学院信息科学与工程学院专业电子信息科学与技术班级学生学号指导教师二〇一二年十二月二十五日1前言 (1)1.1 课题背景 (1)1.1.1 电子显示屏概述 (1)1.1.2 LED研究现状及发展趋势 (1)1.2 选题意义 (2)2 显示原理及控制方式分析 (3)2.1 点阵模块 (3)2.2 LED的控制方式 (5)3 硬件电路设计 (6)3.1 总体设计 (6)3.2 系统硬件概述 (6)3.2.1 仿真电路组成 (6)3.2.2主控单片机的接口说明 (7)3.3 LED显示电路 (8)3.3.1 驱动显示电路 (8)3.3.2 LED显示屏显示 (9)3.3.3 译码电路 (9)3.4 字模提取 (9)4 软件设计 (12)4.1显示驱动程序 (12)4.2系统主程序 (13)4.3 动态显示原理 (13)5 系统功能调试分析 (15)结语 (16)参考文献 (17)附录 (18)1前言1.1 课题背景1.1.1 电子显示屏概述LED显示屏是八十年代后期在全球迅速发展起来的新型信息显示媒体,显示屏由几万到几十万个半导体发光二极管像素点均匀排列组成。

利用不同的材料可以制造不同色彩的LED像素点。

目前应用最广的是红色、绿色、黄色。

而蓝色和纯绿色LED 的开发已经达到了实用阶段。

LED显示屏可以显示变化的数字、文字、图形图像;不仅可以用于室内环境还可以用于室外环境,具有投影仪、电视墙、液晶显示屏无法比拟的优点。

在短短的十来年中,LED点阵显示屏就以亮度高、工作电压低、功耗小、小型化、寿命长、耐冲击和性能稳定的优点迅速成长为平板显示的主流产品,在信息显示领域得到了广泛的应用。

LED的发展前景极为广阔,目前正朝着更高亮度、更高耐气候性、更高的发光密度、更高的发光均匀性、可靠性、全色化方向发展。

LED显示屏的应用涉及社会经济的许多领域,主要包括:(1)证券交易、金融信息显示。

单片机汉字显示系统设计

单片机汉字显示系统设计

单片机汉字显示系统设计摘要:在现代化的社会里,因为LED具有功耗低、寿命长、性能好的优点,由单片机控制LED来实现文字的应用越来越广泛,其使用价值也越来越受重视。

本文阐明用单片机控制单色显示屏的方法,对LED显示模块单元如何进行行列信号控制及信号传输中的驱动问题进行了研究。

讨论了单片机控制系统中关键的数据处理以及发送问题,结果表明采用并行数据输入、串行数据及同步时钟输出的专用电路可大大减少CPU的辅助时间,提高数据的发送速度。

我们通过给模块各要求亮的行的不同点来置1,而给相应的列来置0,从而使相应的二极管被导通而电亮,于是字便被显示出来了,此后再对字进行定时扫描,便会产生动态效果。

我们通过给模块各要求亮的行的不同点来置1,而给相应的列来置0,从而使相应的二极管被导通而电亮,于是字便被显示出来了,此后再对字进行定时扫描,便会产生动态效果。

关键词:LED,单片机,显示屏,驱动,扫描Chinese character display systerm microcontrollerAbstract : In modern society, because the LED has to have a great achievement to consume low, the life span is long, advantage that function like, hence From single a machine control LED to realize writing or picture of of the usage is more and more extensive, its use value also is more and more valued. Introduced primarily in this text to live the manufacture principle that the most familiar electronics of inside show card in the actuality。

学年论文--基于单片机的LED汉字显示设计

基于单片机的LED汉字显示设计摘要:首先介绍了基于单片机的LED点阵显示的设计思想及编码原理,粗略地介绍了单片机LED点阵显示的硬件设计与软件设计。

最后编译LED汉字点阵系统程序并最终在Proteus软件上实现了LED汉字点阵显示系统。

关键词:单片机;LED;点阵;显示1 引言点阵显示是集微电子技术、计算机技术、信息处理于一体的新型显示方式。

由于其具有色彩鲜艳,动态范围广,亮度高,寿命长,工作稳定可靠等优点。

目前大多数的公交车招牌都是采用固定的板块显示,显示的信息量少,内容固定,修改站点信息比较麻烦,不能快速、便捷的更新站点信息。

本文提出一种方案,采用LED点阵显示模块,克服了上述缺点,不仅可以静态的显示公交车站点信息,而且也可以通过动态滚动,从而增加信息显示的容量。

为了醒目,还可以产生诸如闪动、滚动等显示效果。

随着电子技术和计算机控制技术在客车上的日益广泛的应用,客车内的路牌显示器也经历了从灯光路牌、翻板式电子模块路牌、CRT显示、LCD液晶显示和LED点阵显示等几种发展类型;显示信息也从固定内容发展到任意内容的多种显示方式;对显示信息的编辑、修改,也由遥控键盘有线通讯模式发展到用计算机编辑文字,在经专用无线控制器将其发射到各站点的通讯模式。

以后的发展趋势是卫星定位系统站点显示器,客车内站牌显示器由天线、卫星定位模块、微处理器、LED点阵驱动电路、LED点阵站牌和电可擦写存储器构成。

目前在客车内广泛的显示器由LED点阵显示器和LCD液晶显示器,还有部分CRT 显示器,由于CRT显示器耗电量多、体积较大,且本质量较重,与LED点阵显示器和LCD液晶显示器相比,已处于下风,目前LED和LCD显示器成为现代人们选择之一,它们各有优缺点。

LCD液晶显示器具有图像清晰、体积小、功耗低等优点,但它的成本高、亮度低、寿命短、可视距离和角度很有限。

而LED显示屏具有亮度高、故障低、能耗少、使用寿命长、显示内容多样、显示方式丰富等优点。

《基于ARM的LED屏显示控制系统的设计》

《基于ARM的LED屏显示控制系统的设计》一、引言随着科技的飞速发展,LED显示屏在各种应用场景中得到了广泛的应用。

为了满足日益增长的需求,设计一款高效、稳定的LED屏显示控制系统显得尤为重要。

本文将详细介绍基于ARM 的LED屏显示控制系统的设计,包括系统架构、硬件设计、软件设计以及系统测试等方面。

二、系统架构设计本系统采用ARM架构作为核心处理器,通过与LED显示屏的接口连接,实现对LED屏的显示控制。

系统架构主要包括ARM处理器、存储模块、接口模块以及电源模块等部分。

其中,ARM处理器作为系统的核心,负责处理各种控制指令和数据传输。

存储模块用于存储系统程序和数据,包括内存和存储器等。

接口模块用于连接LED显示屏和其他外设,实现数据的传输和交换。

电源模块为整个系统提供稳定的电源供应。

三、硬件设计硬件设计是本系统的关键部分,主要包括ARM处理器的选择、电路设计以及接口电路的设计等。

首先,选择合适的ARM处理器是硬件设计的关键。

根据LED屏的规格和需求,选择性能稳定、功耗低的ARM处理器。

其次,进行电路设计,包括电源电路、时钟电路、复位电路等。

最后,设计接口电路,包括与LED显示屏和其他外设的连接电路。

四、软件设计软件设计是本系统的另一关键部分,主要包括操作系统选择、驱动程序开发以及上位机软件设计等。

首先,选择合适的操作系统。

本系统采用嵌入式Linux操作系统,具有体积小、稳定性好、支持多任务等特点。

其次,开发驱动程序,包括与硬件相关的驱动程序和与LED显示屏通信的驱动程序。

最后,设计上位机软件,实现与ARM处理器的通信,以及LED屏的显示控制。

五、系统测试系统测试是保证本系统性能和稳定性的重要环节。

测试内容包括硬件测试、软件测试以及整体系统测试等。

硬件测试主要检查电路的连通性、电源供应的稳定性以及接口的兼容性等。

软件测试主要检查驱动程序的正确性、上位机软件的稳定性和可靠性等。

整体系统测试则是将硬件和软件结合起来,进行全面的性能测试和稳定性测试。

汉字显示系统课程设计

汉字显示系统课程设计一、课程目标知识目标:1. 学生能够理解汉字显示系统的基本原理,掌握汉字编码、汉字字库、显示技术等基础知识。

2. 学生能够运用所学知识,分析并解释汉字显示系统中常见的问题及其解决方法。

3. 学生了解汉字显示在现代社会中的应用和发展趋势。

技能目标:1. 学生能够运用所学软件和工具,进行简单的汉字显示程序设计。

2. 学生能够通过实践操作,掌握汉字输入、显示、编辑等基本技能。

3. 学生具备团队协作能力,能够与他人共同完成汉字显示系统的设计与实现。

情感态度价值观目标:1. 学生培养对汉字文化的热爱,增强民族自豪感。

2. 学生在实践过程中,培养解决问题的耐心和毅力,形成积极向上的学习态度。

3. 学生关注汉字显示技术在现实生活中的应用,认识到学习信息技术的意义和价值。

课程性质:本课程为信息技术课程,以实践为主,理论联系实际,注重培养学生的动手操作能力和创新能力。

学生特点:学生为初中生,对信息技术有一定的好奇心,喜欢动手实践,但理论知识掌握程度有限。

教学要求:结合学生特点,采用任务驱动法,以实际操作为主线,引导学生掌握汉字显示系统的基础知识和技能。

在教学过程中,注重培养学生的团队协作能力和情感态度价值观。

通过分解课程目标为具体的学习成果,为后续教学设计和评估提供依据。

二、教学内容1. 汉字显示系统概述- 汉字编码原理- 汉字字库的构成- 汉字显示技术2. 汉字编码- 国标GB2312、GBK、GB18030等编码标准- 汉字编码与计算机编码的转换3. 汉字字库- 字库的结构与分类- TrueType字体与OpenType字体- 汉字字库的存储与检索4. 汉字显示技术- 点阵显示原理- 汉字字形提取与显示- 液晶显示屏与LED显示屏5. 汉字显示系统应用实例- 汉字输入法- 汉字处理软件- 汉字显示设备6. 教学实践- 使用编程软件设计简单的汉字显示程序- 汉字输入、显示、编辑的实际操作- 团队合作完成汉字显示系统项目教学内容安排和进度:第1课时:汉字显示系统概述第2课时:汉字编码第3课时:汉字字库第4课时:汉字显示技术第5课时:汉字显示系统应用实例第6-8课时:教学实践教学内容与课本关联性:以上教学内容与教材中关于汉字显示系统的章节紧密相关,确保学生能够结合教材,系统地学习和掌握汉字显示相关知识。

基于单片机的LED汉字滚动显示器的设计_毕业设计论文

本科毕业设计(论文)题目:基于单片机的LED汉字滚动显示器设计教学单位:工程技术系专业:电子信息工程2013年5月摘要LED已成为一个高速发展的新兴产业,前景广阔。

该设计介绍了基于单片机AT89S52的16×16点阵LED汉字滚动显示屏的设计。

其中重点介绍了LED点阵显示的硬件设计、硬件电路各部分的功能和原理、相应软件的程序设计,及详细的使用说明和工作流程。

该设计分为六部分,其中主要内容为系统总体分析,系统硬件设计,系统软件设计三部分。

系统总体分析是该设计的基础;系统硬件设计是该论文的关键及核心部分,首先该部分简单描述系统硬件的工作原理,且附上系统硬件设计框图,论述了该设计所应用的各硬件接口技术和各个接口模块的功能及工作过程;软件设计是系统运行必不可少的部分。

本设计主要是软、硬件相结合,以硬件为基础,来进行各功能模块的设计。

本设计实用性强、操作简单、扩展功能强。

本显示屏的设计具有体积小、硬件少、电路结构简单及容易实现等优点。

关键词:单片机;LED;点阵;汉字显示AbstractLED have become a high speed development of emerging industries, and broad prospects. The design based on single chip microcomputer AT89S52 was introduced 16 * 16 lattice LED scrolling display of Chinese characters design. Which focus on LED dot matrix display the functions of the parts of the hardware design, hardware circuit and the principle and the corresponding software program design, and detaiLED instructions and work processes.The design is divided into six parts, including the main content for the system overall analysis, the system hardware design, system software design three parts. System overall analysis is the foundation of the design; System hardware design is the key and core part of the paper, first of all, this part simply described the working principle of the system hardware, and attach a system block diagram of hardware design, the design is discussed the application of the hardware interface technology and the function of each interface module and working process; Software design is a crucial part of the system is running.The dominant idea of the design is a combination of software and hardware, on the basis of hardware, design of each function module. This design and strong practicability, simple operation, strong extended functionality. This display design with small size, less hardware, circuit structure is simple and easy to implement, etc.Keywords: MCU; LED; Lattice; Chinese character demonstrates目录第1章绪论 (1)1.1本课题的研究意义及必要性 (1)1.2LED的现状和发展趋势 (1)1.3LED的参数及特点 (2)第2章系统总体分析 (4)2.1设计目标及采取的方案 (4)2.2工作原理 (5)2.3总体设计 (5)第3章系统硬件设计 (7)3.1单片机处理模块 (7)3.2行驱动模块 (10)3.3列驱动模块 (12)3.4LED点阵显示模块 (14)3.4.1 LED点阵显示方案 (14)3.4.2 LED点阵原理 (15)3.4.3 汉字显示原理 (17)第4章系统软件设计 (19)4.1主程序设计 (19)4.2显示子程序设计 (20)4.3移位子程序设计 (21)第5章系统调试及性能分析 (23)5.1复位电路的调试与改进 (23)5.2驱动电路的调试与改进 (23)5.3上拉电阻的调试与改进 (23)5.4总体性能分析 (24)结论 (25)致谢 (26)参考文献 (27)附录 (1)第1章绪论1.1 本课题的研究意义及必要性单片机是一种集成微处理芯片,高密度集成了普通计算机的微型处理器,具有8kb的ROM和P0、P1、P2、P3输入输出接口,且集成了定时器等电路。

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

摘要本文介绍了基于STM32的汉字显示系统设计。

现如今LCD显示屏的技术和产业都取得了长足的发展,作为重要的现代信息发布媒体之一,LCD显示屏在证券交易、金融、交通、体育、广告等领域被广泛的应用。

基于STM32的LCD显示可以更好的满足各种需求,也更便于操作和实现。

通电后,复位到初始化状态可显示本次课程设计题目及成员等基本信息,可人为操作对显示信息的汉字进行自定义大小颜色及字体等等;通过字库制作软件制作相应的字库经过SD卡将自己所制作的字库中的汉字在屏幕中依次显示出来,同时可以通过按键控制实现显示汉字的速度、暂停、继续以及更新字库。

本系统是利用STM32开发板配合SD卡实现将已存入字库中的汉字完整的显示在LCD彩色显示屏上。

关键词: STM32; LCD液晶显示; 开关; 汉字显示目录1 引言 .................................................................................................... 错误!未定义书签。

2 总体设计 ............................................................................................ 错误!未定义书签。

2.1 汉字显示的基本原理 (2)2.2 汉字显示设计分析 (2)2.3 系统的结构框图 (3)3 详细设计 ............................................................................................ 错误!未定义书签。

3.1 硬件设计 .................................................................................... 错误!未定义书签。

3.1.1 ALIENTEK MiniSTM32开发板简介 .................................. 错误!未定义书签。

3.1.2 功能简介 .......................................................................... 错误!未定义书签。

3.2 软件设计 (8)3.2.1 录字软件 (8)3.2.2 主函数部分 (9)3.2.3 硬件部分程序 (12)3.2.4 字库相关程序 (14)3.2.5 FAT系统 (19)3.2.6 程序流程图 (20)4 实验结果及分析 (21)4.1 硬件实验结果 (21)4.2 结果分析 (21)5 结论 (22)参考文献 (23)1 引言进入新世纪LCD显示屏的技术和产业都取得了长足的发展,作为重要的现代信息发布媒体之一,LCD显示屏在证券交易、金融、交通、体育、广告等领域被广泛的应用。

伴随社会信息化进程的推进,LCD显示屏技术也在不断的推陈出新,应用领域愈加广阔。

基于STM32的LCD显示可以更好的满足各种需求,也更便于操作和实现。

现基于STM32在液晶显示屏幕上显示文本及图形。

目前,显示技术和显示工业的发展迅速。

显示技术是传递视觉的信息技术。

液晶显示器件LCD是当今最有发展前途的一种平板显示器件,它具有很多独到的优异特性。

它具有显示信息多、易于多彩化、体积小、重量轻、功耗低、寿命长、价格低、无辐射、无污染、接口控制方便等优点。

实际的LCD应用中要显示的汉字一般很有限,并不需要完整的汉字库,再加上完整字库在程序中要占用大量空间,因而非完整汉字库的研究就有了其自身的现实必要性。

本次课程设计主要以TFTLCD的LCD显示模块,完整的实现了汉字库的建立与显示。

2 总体设计2.1 汉字显示的基本原理制作一个GBK字库,制作好的字库放在SD 卡里面,然后通过SD 卡,将字库文件复制到W25X16里,这样,W25X16就相当于一款汉字字库芯片了。

汉字在液晶上的显示其实就是一些点的显示与不显示,这就相当于我们的笔一样,有笔经过的地方就画出来,没经过的地方就不画。

所以要显示汉字,我们首先要知道汉字的点阵数据,这些数据可以由专门的软件来生成。

只要知道了一个汉字点阵的生成方法,那么我们在程序里面就可以把这个点阵数据解析成一个汉字。

知道显示了一个汉字,就可以推及整个汉字库了。

汉字在电脑里面存储不是以点阵数据的形式存储的,而是以内码的形式存储的,每个汉字对应着一个内码,在知道了内码之后再去字库里面查找这个汉字的点阵数据,然后在液晶上显示出来。

这个过程我们是看不到,但是计算机是要去执行的。

嵌入式要显示汉字也与此类似:汉字内码->查找点阵库->解析->显示。

所以只要我们有了整个汉字库的点阵,就可以把电脑上的文本信息在嵌入式上显示出来了。

2.2 汉字显示设计分析设计一个基于STM32系统,开机的时候先检测 W25X16中是否已经存在字库,如果存在,则按次序显示汉字。

如果没有,则检测 SD卡和文件系统,并查找 SYSTEM 文件夹下的FONT 文件夹,在该文件夹内查找UNI2GBK.SYS和GBK16.FON。

在检测到这些文件之后,就开始更新字库,更新完毕才开始显示汉字。

具体要实现的目标如下:1.更新字库,即文档可进行变换;2. 初始状态显示本次课设的基本信息;3.可以将输出的文字进行字体、颜色、大小的变换;4. 可对显示过的汉字进行计数;5. 显示显每个汉字所对应的内存字节;6. 在运行过程中可实现暂停、继续、变速等功能。

7. 每显示一个汉字后,LED0 小灯会闪烁提示一下。

2.3 系统的结构框图图2.1 系统结构框图3 详细设计3.1 硬件设计3.1.1 ALIENTEK MiniSTM32 开发板简介ALIENTEK MiniSTM32 开发板是一款迷你型的开发板,小巧而不小气,简约而不简单。

它的外观尺寸只有8cm*10cm 大小,板子的设计充分考虑了成本与功能这两个矛盾面,再结合实际使用的经验及STM32的特点,可有可无的选择性价比最高的留下,最终确定了这样的设计。

其资源丰富,设计灵活。

特点包括:1)小巧。

整个板子尺寸为8cm*10cm*2cm。

2)灵活。

板上除晶振外的所有的IO 口全部引出,特别还有GPIOA 和GPIOB 的IO 口是按顺序引出的,可以极大的方便大家扩展及使用,另外板载独特的一键下载功能,避免了频繁设置B0、B1 带来的麻烦,直接在电脑上一键下载。

3)资源丰富。

板载十多种外设及接口,可以充分挖掘STM32 的潜质。

4)质量过硬。

沉金PCB+全新优质元器件+定制全铜镀金排针/排座+ 电源TVS 保护,坚若磐石。

3.1.2 功能简介开机的时候先检测 W25X16中是否已经存在字库,如果存在,则按次序显示汉字。

如果没有,则检测 SD卡和文件系统,并查找 SYSTEM 文件夹下的FONT 文件夹,在该文件夹内查找UNI2GBK.SYS和GBK16.FON。

在检测到这些文件之后,就开始更新字库,更新完毕才开始显示汉字。

每显示一个汉字LED0 小灯会闪烁一下。

WK_UP按键调整显示汉字的速度;key1控制继续和暂停;key0更新SD卡。

所要用到的硬件资源如下:1)STM32F103RBT6。

2)外部LED0。

3)TFTLCD 液晶模块。

4)按键WK_UP、key1、key0。

5)W25X16。

6) SD卡。

1、 STM32的简单介绍图3.1 STM32原理图选择STM32F103RBT6 作为MCU,原因是其性价比高,128K FLASH、20K SRAM、2 个SPI、3 个串口、1 个USB、1 个CAN、2 个12 位的ADC、RTC、51 个可用IO 脚…,所以我们选择了它作为我们的主芯片。

2、外部LED0图3.2 外部LED0原理图其中PWR 是系统电源指示灯,为蓝色。

LED0 和LED1 分别接在PA8 和PD2 上,PA8 还可以通过TIM1 的通道1 的PWM 输出来控制DS0 的亮度。

3、 TFTLCD 液晶模块图3.3 TFTLCD 液晶显示原理图TFT_LCD 是一个通用的液晶模块接口。

OLED 是一个给OLED 显示模块供电的接口,它和TFT_LCD 拼接在一起。

当使用2.4’/2.8’的LCD 时,我们接到TFT_LCD 上就可以了,而当我们使用ALIENTEK的OLED 模块时,则接OLED 排阵做电源,同时会连接到TFT_LCD 上的部分管脚,从而实现OLED 与MCU 的连接。

4、按键图3.4 按键输入原理图KEY0 和KEY1 用作普通按键输入,分别连接在PA13 和PA15 上,他们都连接在了JTAG相关的引脚上(KEY0 还连接在SWDIO 上),KEY0 和KEY1 还和PS/2 的DAT 和CLK 线共用,他们都通过JTAG 的上拉电阻来提供上拉。

WK_UP 按键连接到PA0(STM32 的WKUP 引脚),它除了可以用作普通输入按键外,还可以用作STM32 的唤醒输入。

这个按键是高电平触发的。

5、 W25X16图3.5 25X16原理图这是ALIENTEK MiniSTM32 开发板板载的一颗 FLASH芯片,型号为W25X16。

这颗芯片的容量为16M bit,也就是 2M字节,容量和AT45DB161 一样。

适合存储不常修改的数据,比如字库等。

6、 SD 卡图3.6 SD卡部分原理图插入SD 卡可以外扩大容量存储设备,可以用来记录数据。

SD 卡我们使用的是SPI 模式通信,SD 卡的SPI 接口连接到STM32 的SPI1 上,SD_CS 接在PA3 上。

3.2 软件设计汉字显示系统需要有STM32开发板配合SD卡使用,因此其程序需要分为以下几个文件夹,用来读取SD卡上的字库和UNICODE到GBK的转换码表的FAT系统文件,硬件组成文件HARDWARE系统文,汉字字库存储,及读取相应的文件TEXT文件,以及存放主程序文件USER文件件,和STM32的系统文件。

3.2.1 录字软件双击如图所示的软件,进入主界面,如图3.7。

选择中文—>小字库—>开始输入文本—>创建—>确定,如图3.8。

完成后,将生成的文件拷入SD卡中。

图3.7 点阵字库生成器图3.8 创建字库3.2.2 主函数部分int main(void){u32 fontcnt;u8 i,j;u16 fx,fy;u8 fontx[2];u8 key;u16 t,ts;Stm32_Clock_Init(9);delay_init(72);uart_init(72,9600);LCD_Init();KEY_Init();LED_Init();SPI_Flash_Init();if(Font_Init()){ UPD:POINT_COLOR=BLACK;LCD_Clear(WHITE);LCD_ShowString(60,50," STM32 ");LCD_ShowString(60,70,"Font Updating...");SD_Initialize();while(FAT_Init()){ LCD_ShowString(60,90,"FAT SYS ERROR");i= SD_Initialize();if(i){ LCD_ShowString(60,110,"SD_CARD ERROR"); }delay_ms(500);LCD_Fill(60,90,240,126,WHITE);delay_ms(500); LED0=!LED0; LED1=!LED1; } while(Update_Font()!=0){ LCD_ShowString(60,110,"SYSTEM FILE LOST");delay_ms(500);LCD_ShowString(60,130,"Please Check....");delay_ms(500);LED0=!LED0; LED1=!LED1; };LCD_Clear(WHITE); }RESET:LCD_Clear(WHITE); POINT_COLOR=RED;Show_Str(5,5,"电子系统设计",16,0);Show_Str(140,5,"汉字显示系统",16,0);POINT_COLOR=BLUE;Show_Str(10,40,"内码:高字节",16,0);Show_Str(130,40,"低字节",16,0);Show_Str(10,60,"对应汉字",16,0);Show_Str(130,60,"计数器",16,0);Show_Str(60,270," 张政马舒阳刘佳萍",16,0);Show_Str(90,290," 2015年7月9日",16,0);POINT_COLOR=BLACK;fx=15; fy=80; ts=600;while(1){ fontcnt=0;for(i=0x81;i<0xp;i++){ fontx[0]=i; LCD_ShowNum(100,40,i,3,16);for(j=0x40;j<0xfe;j++){ if(j==0x7f)continue;fontcnt++;LCD_ShowNum(210,40,j,3,16);LCD_ShowNum(190,60,fontcnt,5,16);fontx[1]=j; fx+=15;if(fx>=220){ fx=5;fy+=20; }if(fy>130){ POINT_COLOR=RED;while(1){ key=KEY_Scan();if(key==1)goto UPD;if(key==2)goto RESET;LCD_ShowString(60,190,"Show Over");delay_ms(500);LCD_ShowString(60,210,"Please Check....");delay_ms(500);LCD_Fill(60,210,220,230,WHITE); } } Show_Font(100,60,fontx,16,0);Show_Font(fx,fy,fontx,16,0); t=ts;while(t--){ delay_ms(1);key=KEY_Scan();if(key==1)goto UPD;else if(key==2){ while(1){ key=KEY_Scan();if(key==1)goto UPD;if(key==2) break; }break; }else if(key==3){ if(ts==600) ts=200;else ts=600; } }LED0=!LED0; } } } }3.2.3 硬件部分程序void KEY_Init(void) // 键盘相应程序{RCC->APB2ENR|=1<<2;GPIOA->CRL&=0XFFFFFFF0;GPIOA->CRL|=0X00000008;GPIOA->CRH&=0X0F0FFFFF;GPIOA->CRH|=0X80800000;GPIOA->ODR|=1<<13;GPIOA->ODR|=1<<15; }u8 KEY_Scan(void){ static u8 key_up=1;JTAG_Set(JTAG_SWD_DISABLE);if(key_up&&(KEY0==0 ||KEY1==0 ||KEY2==1)){ delay_ms(10); key_up=0;if(KEY0==0){ JTAG_Set (SWD_ENABLE);return 1; }else if(KEY1==0){JTAG_Set (SWD_ENABLE); return 2;}else if(KEY2==1){JTAG_Set (SWD_ENABLE); return 3;}} else if (KEY0==1&&KEY1==1&&KEY2==0) key_up=1;JTAG_Set(SWD_ENABLE); return 0;}void LED_Init(void) // led相应程序{ RCC->APB2ENR|=1<<2;RCC->APB2ENR|=1<<5;GPIOA->CRH&=0XFFFFFFF0;GPIOA->CRH|=0X00000003;GPIOA->ODR|=1<<8;GPIOD->CRL&=0XFFFFF0FF;GPIOD->CRL|=0X00000300; G PIOD->ODR|=1<<2; }void SPIx_Init(void) //SD卡驱动程序{ RCC->APB2ENR|=1<<2;RCC->APB2ENR|=1<<12;GPIOA->CRL&=0X000FFFFF;GPIOA->CRL|=0XBBB00000;GPIOA->ODR|=0X7<<5;SPI1->CR1|=0<<10; SPI1->CR1|=1<<9;SPI1->CR1|=1<<8; SPI1->CR1|=1<<2;SPI1->CR1|=0<<11; SPI1->CR1|=1<<1;SPI1->CR1|=1<<0; SPI1->CR1|=7<<3;SPI1->CR1|=0<<7; SPI1->CR1|=1<<6;SPIx_ReadWriteByte(0xff); }void SPIx_SetSpeed(u8 SpeedSet){ SPI1->CR1&=0XFFC7;switch(SpeedSet){ case SPI_SPEED_2: SPI1->CR1|=0<<3; break;case SPI_SPEED_4: SPI1->CR1|=1<<3; break;case SPI_SPEED_8: SPI1->CR1|=2<<3; break;case SPI_SPEED_16: SPI1->CR1|=3<<3; break;case SPI_SPEED_256: SPI1->CR1|=7<<3; break; }SPI1->CR1|=1<<6; }u8 SPIx_ReadWriteByte(u8 TxData){ u8 retry=0;while((SPI1->SR&1<<1)==0){ retry++; if(retry>200)return 0;}SPI1->DR=TxData; retry=0;while((SPI1->SR&1<<0)==0){ retry++; if(retry>200)return 0; }return SPI1->DR; }3.2.4 字库相关程序u32 FONT16ADDR ;u32 FONT12ADDR ;u32 UNI2GBKADDR;#ifdef EN_UPDATE_FONTu8 temp[512];u8 Update_Font(void){ u32 fcluster=0;u32 i;u32 tempsys[2];float prog;u8 t;FileInfoStruct FileTemp;if(FAT32_Enable)fcluster=FirstDirClust;else fcluster=0;FileTemp=F_Search (fcluster, (unsigned char *) folder[0], T_FILE);if(FileTemp.F_StartCluster==0) return 1;{ FileTemp=F_Search(FileTemp.F_StartCluster, (unsigned char*)folder[1], T_FILE); if(FileTemp.F_StartCluster==0) return 2;fcluster=FileTemp.F_StartCluster;FileTemp=F_Search (fcluster, (unsigned char *) sysfile[2], T_SYS);if(FileTemp.F_StartCluster==0) return 3;LCD_ShowString (20,90,"Write UNI2GBK to FLASH...");LCD_ShowString (108,110,"%");F_Open(&FileTemp);i=0;while (F_Read (&FileTemp,temp) ){ if (i<FileTemp.F_Size){ SPI_Flash_Write (temp,i+100000,512) ; i+=512;}prog=(float)i/FileTemp.F_Size;prog*=100;if(t!=prog){ t=prog; if(t>100) t=100;LCD_ShowNum(84,110,t,3,16); } }UNI2GBKADDR = 100000;tempsys[0] = UNI2GBKADDR;tempsys[1] = FileTemp.F_Size;SPI_Flash_Write((u8*)tempsys,0,8);delay_ms(1000);FONT16ADDR = FileTemp.F_Size+UNI2GBKADDR;FileTemp = F_Search(fcluster, (unsigned char*)sysfile[0] , T_FON);if (FileTemp.F_StartCluste r== 0) return 4;LCD_ShowString (20,90,"Write FONT16 to FLASH... ");F_Open(&FileTemp); i=0;while(F_Read(&FileTemp,temp)){ if(i<FileTemp.F_Size){ SPI_Flash_Write(temp,i+FONT16ADDR,512); i+=512; } prog = (float)i/FileTemp.F_Size;prog* = 100; if(t!=prog){ t=prog;if(t>100)t=100;LCD_ShowNum(84,110,t,3,16); } }tempsys[0]=FONT16ADDR;tempsys[1]=FileTemp.F_Size;SPI_Flash_Write((u8*)tempsys,8,8);delay_ms(1000);FONT12ADDR = FileTemp.F_Size+FONT16ADDR; }t=0XAA; SPI_Flash_Write(&t,24,1);LCD_ShowString (20, 90," Font Update Successed ") ;return 0;} #endifu8 Font_Init(void){ u32 tempsys[2]; u8 fontok=0 ;SPI_Flash_Read(&fontok,24,1) ;if(fontok!=0XAA) return 1;SPI_Flash_Read((u8*)tempsys,0,8) ;UNI2GBKADDR=tempsys[0];SPI_Flash_Read((u8*)tempsys,8,8) ;FONT16ADDR=tempsys[0];SPI_Flash_Read((u8*)tempsys,16,8) ;FONT12ADDR=tempsys[0];return 0; } //获取字库资源信息void Get_HzMat (unsigned char *code,unsigned char *mat,u8 size) { unsigned char qh,ql;unsigned char i;unsigned long foffset;qh=*code;ql=*(++code);if(qh<0x81 ||ql<0x40 ||ql==0xff ||qh==0xff){ for(i=0;i<(size*2);i++)*mat++=0x00;return; }if(ql<0x7f)ql-=0x40;else ql-=0x41;qh-=0x81;foffset=((unsigned long)190*qh+ql)*(size*2);if(size==16)SPI_Flash_Read (mat,foffset+FONT16ADDR,32);else SPI_Flash_Read (mat,foffset+FONT12ADDR,24); } void Show_Font (u16 x,u16 y,u8 *font,u8 size,u8 mode){ u8 temp,t,t1;u16 y0=y;u8 dzk[32];u16 tempcolor;Get_HzMat(font,dzk,size);if(mode==0){ for(t=0;t<size*2;t++){ temp=dzk[t];for(t1=0;t1<8;t1++){ if(temp&0x80)LCD_DrawPoint(x,y);else { tempcolor=POINT_COLOR;POINT_COLOR=BACK_COLOR;LCD_DrawPoint(x,y);POINT_COLOR=tempcolor; }temp<<=1; y++;if((y-y0)==size){y=y0;x++;break;} } } }else { for (t=0; t<size*2; t++){ temp=dzk[t];for(t1=0;t1<8;t1++){ if(temp&0x80) LCD_DrawPoint(x,y);temp<<=1; y++;if((y-y0)==size){ y=y0;x++;break; } } } } } void Show_Str(u16 x,u16 y,u8*str,u8 size,u8 mode){ u8 bHz=0;while(*str!=0){ if(!bHz){ if (*str>0x80)bHz=1;else { if(x > (LCD_W-size/2){ y+=size; x=0 ; }if (y > (LCD_H-size) break;if (*str==13){ y+=size; x=0; str++; }else LCD_ShowChar(x,y,*str,size,mode);str++; x+=size/2; } }else { bHz=0;if(x>(LCD_W-size)){ y+=size; x=0; }if(y>(LCD_H-size)) break;Show_Font(x,y,str,size,mode);str+=2;x+=size; } } }u16 my_strlen(u8*str){ u16 len=0;while(*str!='\0'){ str++; len++; }return len; }void my_stradd( u8*str1, u8*str2 ){ while(*str1!='\0') str1++;while(*str2!='\0'){ *str1=*str2;str2++; str1++;}*str1='\0'; }void Show_Str_Mid(u16 x,u16 y,u8*str,u8 size,u8 len) { u16 strlenth=0;strlenth=my_strlen(str);strlenth*=size/2;if(strlenth>len)Show_Str(x,y,str,size,1);else {strlenth=(len-strlenth)/2;Show_Str(strlenth+x,y,str,size,1); } }3.2.5 FAT系统//用来读取SD卡上的字库FAT系统相关程序:DWORD FirstDirClust;DWORD FirstDataSector;WORD BytesPerSector;DWORD FATsectors;WORD SectorsPerClust;DWORD FirstFATSector;DWORD FirstDirSector; fat32DWORD RootDirSectors;DWORD RootDirCount;BYTE FAT32_Enable; DWORD Cur_Dir_Cluster;FAT_TABLE FAT_TAB;FileInfoStruct F_Info[3];u8 fat_buffer[512];u8 LongNameBuffer [MAX_LONG_NAME_SIZE]; BOOL LongNameFlag = 0;const unsigned char *filetype[23]={ "MP1","MP2","MP3","MP4","M4A","3GP","3G2","OGG","ACC","WMA","WA V","MID", "FLA","LRC","TXT","C ","H "," ","FON","SYS","BMP","JPG","JPE" };3.2.6 程序流程图图3.9 程序流程图4 实验结果及分析4.1 硬件实验结果图4.1 实验结果4.2 结果分析开机的时候先检测 W25X16中是否已经存在字库,如果存在,则按次序显示汉字。

相关文档
最新文档