收藏 分销(赏)

学年论文-基于STM32的LCD显示屏设计.docx

上传人:可**** 文档编号:2166499 上传时间:2024-05-21 格式:DOCX 页数:21 大小:910.86KB
下载 相关 举报
学年论文-基于STM32的LCD显示屏设计.docx_第1页
第1页 / 共21页
学年论文-基于STM32的LCD显示屏设计.docx_第2页
第2页 / 共21页
学年论文-基于STM32的LCD显示屏设计.docx_第3页
第3页 / 共21页
学年论文-基于STM32的LCD显示屏设计.docx_第4页
第4页 / 共21页
学年论文-基于STM32的LCD显示屏设计.docx_第5页
第5页 / 共21页
点击查看更多>>
资源描述

1、本科学年论文(设计)基于STM32的LCD显示屏设计系别专 业届 别 班 级学生姓名学 号指导教师职 称二O一六 年 六 月目录1 前言1.1设计的背景11.2研究现状及发展趋势12 硬件设计2.1 系统的总体设计32.1.1 STM32的主控模块32.1.2 电源模块52.1.3 复位电路模块52.1.4 晶振电路62.1.5 SD卡读取模块62.2 LCD控制器72.2.1 ILI9341控制器结构72.2.2 像素点的数据格式82.2.3 ILI9341的通讯时序83 软件设计3.1 字模提取方法103.1.1 字模103.1.2 制作字模103.2 显示中英文及BMP图片113.2.1

2、 配置工程环境123.2.2 main文件123.2.3 显示中英文的主要代码133.2.4 显示BMP图片的主要代码144 系统调试185 结论18 1 前言1.1设计的背景液晶显示器(LCD)已广泛应用于计算机、电视及智能仪表中,它的主要优点是功耗低、控制电压低、集成电路容易控制。LCD显示屏的体积小、重量轻、超薄等特点是其它显示屏无法比拟的。近几年来被广泛用于单片机控制的智能仪器、仪表和低功耗电子产品中。LCD可分为段式LCD、字符式LCD和点阵式LCD。其中段位式LCD和字符式LCD只能用于字符和数字简易显示,而不能够满足图形曲线和汉字显示的要求;而点阵式LCD不仅可以显示字符、数字,

3、还可以显示各种图形、曲线和汉字,并且可以实现屏幕上下左右滚动,动画功能,区分开窗口,反转,闪烁等功能,用途十分广泛1。液晶显示器作为一种新型显示输出设备,消除了传统CRT的屏幕闪烁和像素抖动,不仅具有高亮度、对比度,高可靠性、抗干扰能力强等优点,而且体积小,功耗低、宽视野、色彩鲜明、无辐射。随着相关技术的日趋成熟,它的应用领域迅速扩展,尤其是在工业控制,医疗仪器、机电设备、商业消费等方面,正逐渐成为新的热点。LCD显示多采用专用的控制器,功能强大,实了很好的显示效果。但是其价格高昂,且多要求有的操作系统实现控制功能。这必然限制其在功能要求不高、对价格敏感的小型设备中使用。1.2研究现状及发展趋

4、势在LCD显示应用领域,通常数据源输出图像的分辨率是变化的,而从工业生产标准化要求和获得最佳显示效果的角度出发,LCD显示器的物理分辨率则是固定不变的。这就需要将不同分辨率的输入图像经过缩放后输出到分辨率固定的LCD显示器上,当前工业上解决这一问题的方案是在输入数据源和数据显示设备之间设置LCD图像引擎来实现缩放处理2。LCD显示器是纯数字设备,数字接口是其最佳的选择,随着数字接口技术标准逐渐地统一起来,越来越多的显示芯片具备了支持数字视频输出的能力,显卡制造商也开始在显卡上集成数字显示接口。基于这种现状,当前LCD图像引擎芯片也就存在基于模拟到接口和数字接口两种类型3。两类芯片尽管实现基本功

5、能一致,但是由于标准的不同,结构存在较大差异。采用模拟接口方式时,图像信号处理流程是:显卡首先将数字图像信号变为模拟信号(DAC),然后由电缆送到显示器上,显示器再将模拟信号变为数字信号(ADC),最后经过图像放处理后进行图像显示 4。这样,信号经由DAC,ADC到最后的信号输出实际上是一个多余循环过程,这个循坏没有任何积极的意义,相反还引入了三个信号失真源:DAC、电缆、ADC,最终影响了图像的输出效果。采用数字接口方式则去掉了这些不必要的环节,直接输出数字视频信号,经图像缩放处理后,就可以直接送到显示器进行显示,图像的输出效果毫无疑问会优于前一种模式。数字接口取代模拟接口是大势所趋,考虑到

6、数模接口兼容,目前很多厂商在同一芯片上不仅提供数字接口,而且提供模拟接口5。进入大尺寸LCD图像引擎IC的门槛较LCD驱动IC要高,涉及专利问题较多,由目前主要Genesis、PHILIPS、NS(National Semiconductor),ST(STMicroelectronics)等国际大厂控制6。在庞大市场需求的强力吸引下,中国台湾陆续有数十家IC设厂投入到LCD显示相关芯片领域。台湾地区厂商晨星(Mstar)、凌泰(Averlogic)、兆宏(Magicpixel)、联咏(Novatek)、瑞昱(Realtek)、晶磊(Smartasic)、创品(Trumpion)、凌越(Topr

7、o)、世纪民生(Myson century)、晶捷科技(MRT)等厂家在LCD图像引擎芯片市场也取得了一定份额。目前我国IC设计公司数量已经突破400家大关,但在LCD图像引擎芯片的研发上7,内地IC设计公司参与者却寥寥无几。目前仅有成都威斯达在进行这方面的研发和设计,其面向LCDTV的主打方案WS1115、WSC2100也已经得到了成功的应用。LCD显示屏的发展主要有如下几个趋势:1)实现分离式图像引擎IC到初期较低程度整合,再到高集成度整合的转变。 2)LCD图像引擎数字接口将取代模拟接口。3)低摆幅差分信号RSDS逐步导入控制板的输出介面8 。4)在控制IC中为家庭中的PC、DVD、TV

8、 Cable、PS2、xBox等影音数据源提供更加广阔的匹配接口,使大尺寸LCD显示器功能更加多样化。5)LCD面板开始步入10bits,因此支持10bits的LCD像引擎也将成为标准要求,同时宽屏LCD显示器成为了消费者的新宠。总而言之,LCD显示器正朝着更多的输出、更快的速度、更高的品质(考虑电磁兼容等方面的设计加入)、更低的功耗等方向快速发展9。2 硬件设计2.1 系统的总体设计本次设计是通过在STM32进行软件编程来控制LCD液晶显示屏的显示设计。它的整体思想是系统电源部分可以使用 5 V 电源端口供电,再通过3.3 V 稳压芯片得到单片机与 LCD 显示模块所需电源。 单片机采用ST

9、M32系列的STM32F103VET6,采用 LCD液晶显示模块作为系统的显示部分。 通信接口电路主要是由芯片 PL2303 构成,它的功能主要是将电脑的 USB 接口转换为串口, 同时还将 PC的逻辑电平转换为与单片机系统相同的 CMOS 电平,方便程序的烧写以及与上位机的通信。系统结构框图如图2.1所示。STM32F103复位电路SD卡读取模块晶振电路LCD显示模块电源电路图2-1 系统结构图2.1.1 STM32的主控模块STM32是整个LCD显示设计的核心部分。这是一个具有较高性能而又经济的单片机。本设计选用属于STM32系列的STM32F103VET6作为控制电路的核心部件,该单片机

10、属于ST意法半导体公司生产的32位高性能、低成本、低功耗的增强型系列单片机,它的内核采用的是ARM公司最新研发的CortexTM-M3架构,该内核是专门设计于满足用户对高性能、低功耗和经济实用的要求。ARMCortex-M3处理器的架构在系统结构上的增强,最高36MHz工作频率,在存储器的0等待周期访问时可达1.25DMips/MHz(Dhrystone 2.1),它使得STM32增强型系列单片机受益无穷,其采用的THUMB-2指令集使得其指令效率更高,而且性能更强。STM32F103ZET6采用薄型四方扁平式封装技术(LQFP)具有100管脚,片内具有8M的SPI FLASH,64KB的RA

11、M(片上集成12BitA/D、D/A、PWM、CAN、USB、安全数字输入输出卡SDIO、可变静态存储控制器FSMC等资源)。1个串行外设接口(SPI)总线控制的M25P16(16MB容量的串行FLASH),用于存储数据、代码、字库及图相等。1个3.2寸240*320分辨率触摸屏,利用MCU的FSMC的16位数据接口模式,触摸屏采用ADS7843(4线电阻触摸屏转换接口芯片)芯片用硬SPI接口控制。STM32单片机采用2.03.6V的供电电压,可以工作在-4085的温度范围内,其最高的工作频率是72MHz,其最小电路如图2-2所示,其资源图如图2-3所示。图2-2 32F103VET6的最小系

12、统图2-3 硬件资源描述图2.1.2 电源模块STM32单片机由AMS1117-3.3芯片电路供电,输入+5V,提供3.3V的固定电压输出,为了降低电磁干扰,需要经C1- C3滤波后再为CPU供电,R38为DGND与AGND的连接电阻,电源电路如图2-4所示。图2-4 电源电路2.1.3 复位电路模块复位电路对单片机系统非常重要。复位电路有几点要求,其一,上电时有足够的有效复位电平时间,以便CPU在晶振起振达到稳态后可靠复位;其二,系统断电后,复位端能快速放电,以便使系统在连续快速开关时能可靠复位。本电路中,要复位只需要在接高电平持续2us就可以实现。在单片机系统中,系统上电启动的时候复位一次

13、,当按键按下的时候系统再次复位,如果释放后再按下,系统还会复位。所以可以通过按键的断开和闭合在运行的系统中控制其复位。图2-5 复位电路2.1.4 晶振电路有源晶振是一个完整的谐振振荡器,它是利用石英晶体的压电效应来起振,所以有源晶振需要供电,当我们把有源晶振电路做好后,不需要外接其它器件,只要给它供电,它就可以主动产生振荡频率,并且可以提供高精度的频率基准,信号质量也比无源信号要好。有源晶振通常有 4 个引脚,VCC,GND,晶振输出引脚和一个使能引脚。电路只需要接到单片机的晶振的输入引脚上,输出引脚上不需要接。图2-6 晶振电路2.1.5 SD卡读取模块SD 卡的数据写入、读取的最小单位是

14、块,每块的大小为 512 字节。见图 19-4,为多个数据块的写入过程。首先软件通过 SDIO 接口的 CMD 信号线发送多块写入的命令,接收到正常的响应后,要写入的数据线从 4 根 DAT 信号线传输出去,每块结束后是 CRC 校验码。接着要检测忙状态,数据传输到 SD 卡后,SD 卡启动内部时序保存数据,这时 SD 卡会把 DAT0 信号线拉低,表示处于“忙”状态,忙状态结束后,主机才能发送下一个数据块的数据。 图2-7 STM32的SDIO接口2.2 LCD控制器LCD,即液晶显示器,因为其功耗低、体积小,承载的信息量大,因而被广泛用于信息输出、与用户进行交互,目前仍是各种电子显示设备的

15、主流。因为STM32内部没有集成专用的液晶屏和触摸屏的控制接口,所以在显示面板中应自带含有这些驱动芯片的驱动电路(液晶屏和触摸屏的驱动电路是独立的),STM32芯片通过驱动芯片来控制液晶屏和触摸屏。本系统使用的STM32有3.2寸液晶屏(240*320),它使用ILI9341芯片控制液晶屏,通过XPT2046芯片控制触摸屏。2.2.1 ILI9341控制器结构液晶屏的控制芯片内部结构非常复杂,见图2-8。最主要的是位于中间GRAM,可以理解为显存。GRAM中每个存储单元都对应着液晶面板的一个像素点。它右侧的各种模块共同作用把GRAM存储单元的数据转化成液晶面板的控制信号,使像素点呈现特定的颜色

16、,而像素点组合起来则成为一幅完整的图像。框图的左上角为ILI9341的主要控制信号线和配置引脚,根据其不同状态设置可使芯片工作在不同的模式,如每个像素点的位数是6、16还是18位;使用SPI接口还是8080接口与MCU进行通讯;使用8080接口的哪种模式。MUC通过SPI或8080接口与ILI9341进行通讯,从而访问它的控制寄存器、地址计数器及GRAM。在GRAM的左侧还有一个LED控制器。LCD为非发光性的显示装置,它需要借助背光源才能达到显示功能,LED控制器就是用来控制它的背光源。图2-8 ILI9341控制器内部框图2.2.2 像素点的数据格式图像数据的像素点由红(R)、绿(G)、蓝

17、(B)三原色组成,三原色根据其深浅程度被分为0255个级别,它们按不同比例的混合可以得出各种色彩。如R:255,G255,B255混合后为白色。根据描述像素点数据的长度,主要分为8、16、24及32位。如以8位来描述的像素点可表示28=256色,16位描述的为216 =65536色,称为真彩色,也称为64K色。实际上受人眼对颜色的识别能力的限制,16位色与12位色已经难以分辨了。ILI9341 最高能够控制18位的LCD,但为了数据传输简便,这里采用的是它的16位控制模式,以16位描述的像素点。按照标准格式,16位的像素点的三原色描述的位数为R:G:B =5:6:5,描述绿色的位数较多是因为人

18、眼对绿色更为敏感。16 位的像素点格式见表2.1 16位像素点格式。表2.1 16位像素点格式图中的是默认18条数据线时,像素点三原色的分配状况,D1D5为蓝色,D6D11为绿色,D13D17为红色。这样分配有D0和D12位是无效的。若使用16根数据线传送像素点的数据,则D0D4为蓝色,D5D10为绿色,D11D15为红色,使得刚好使用完整的16位。RGB比例为5:6:5是一个十分通用的颜色标准,在GRAM相应的地址中填入该颜色的编码,即可控制LCD输出该颜色的像素点。如黑色的编码为0x0000,白色的编码为0xffff,红色为0xf800。2.2.3 ILI9341的通讯时序目前,大多数的液

19、晶控制器都使用8080或6800接口与MCU进行通讯,它们的时序十分相似,本单片机以ILI9341使用的8080通讯时序进行分析,实际上ILI9341也可以使用SPI接口来控制。ILI9341的8080接口有5条基本的控制信号线:(1)用于片选的CSX信号线;(2)用于写使能的WRX信号线;(3)用于读使能的RDX信号线;(4)用于区分数据和命令的D/CX信号线;(5)用于复位的RESX信号线。其中带X的表示低电平有效。除了控制信号,还有数据信号线,它的数目不定,可根据ILI9341框图中的IM3:0来设定,这部分一般由制作液晶屏的厂家完成。为便于传输像素点数据,野火使用的液晶屏设定为16条数

20、据线D15:0。使用8080接口的写命令时序图见图2-9。图2-9 使用18条数据线的8080接口写命令时序由图可知,写命令时序由CSX信号线拉低开始,D/CX信号线也置低电平表示写入的是命令地址(可理解为命令编码,如软件复位命令:0x01),以WRX信号线为低,RDX信号为高表示数据传输方向为写入,同时,在数据线17:0输出命令地址,在第二个传输阶段传送的为命令的参数,所以D/CX要置高电平,表示写入的是命令数据。当我们需要向GRAM写入数据的时候,把CSX信号线拉低后,把D/CX信号线置为高电平,这时由D17:0传输的数据则会被ILI9341保存至它的GRAM中。3 软件设计3.1 字模提

21、取方法3.1.1 字模液晶屏是一个由像素点组成的点阵,若要显示文字,则需要很多像素点的共同构成。见图 3-1,图中是两个由16*16的点阵显示的两个汉字。图3-1 字模如果规定:每个汉字都由这样16*16的点阵来显示,把笔迹经过的像素点以“1”表示,没有笔迹的点以“0”表示,每个像素点的状态以一个二进制位来记录,用16*16/8=32个字节就可以把这个字记录下来。这32个字节数据就称为该文字的字模,还有其它常用字模是24*24、32*32的。在这样的字模中,以两个字节表示一行像素点,16行构成一个字模。如果使用LCD的画点函数,按位来扫描这些字模数据,把为1的位以黑色来显示(也可以使用其它颜色

22、),即可把整个点阵还原出来,显示在液晶屏上。3.1.2 制作字模本文采用“字模-增强版 v3.91”字模软件来制作中文字库。步骤如下:1、打开字模软件2、点击“批量生成字库”按钮选项3、点击选项“文本文件”,在打开的界面里选择“GB2132.txt”。如图3-5、图3-6所示。此时在“输入批量字符框”里会列出二级汉字的所有汉字,其中共收录了6768个汉字字符。4、点击“字库智能生成”,弹出“字库批量参数确认”对话框。我们在“源字体”选项里面做如下设置,字模宽度和高度都选择16,因为要放在SD卡中,所以选择BIN文件格式。5、点击“开始转换进程”,就会在软件安装目录下会生成Font.dat文件。

23、将生成的汉字字库拷贝到SD卡根目录下并重命名为“HZLIB.bin”。把该文件保存到SD卡中,STM32芯片通过文件系统读取文件即可获得字库的数据。3.2 显示中英文及BMP图片系统的流程图如图3-3所示,先将LCD的引脚和寄存器初始化;再向ILI19431写入命令和数据;配置FSMC;再设置ILI9431的GRAM的扫描方向:左上角右下角为显示中英文的采用的模式,右下角左上角为显示摄像头图像,右上角左下角为显示BMP图片;对ILI9431显示器进行设置,读取ILI9431的像素数据;在ILI9431显示器上画出一个矩形;在ILI9431显示器上显示英文、中文字符和BMP图片。图3-3 系统流

24、程图3.2.1 配置工程环境本实验需要制作字库,其文件名为:HZLIB.bin,三个BMP图片文件,文件名为:pic1.bmp、pic2.bmp、pic3.bmp,把这四个文件保存到SD卡中,再把该SD卡插入开发板的SD卡接口。本实验中要把旧文件:systick.c、usart1.c、lcd.c、ff.c、sdio_sdcard.c、lcd_botton.c文件添加进新工程,新建Sd_bmp.c、sd_fs_app.c文件,分别用于编写BMP文件相关的函数和字模获取函数。3.2.2 main文件显示中英文字符和BMP图片用了两个函数,所以在这里放置了两个main函数。显示汉字的main函数它调

25、用了很多函数,主要是将SD卡的读取接口和LCD初始化,再调用扫描和读取的函数,并设置了要显示的中英文。同样的,显示BMP图片的main函数也调用了一些函数用于显示BMP图。/显示汉字的main函数int main ( void )Sd_fs_init(); /初始化SDIOLCD_Init (); /LCD初始化ILI9341_GramScan(1); /设定(坐标轴)扫描方向ILI9341_Clear ( 0, 0, 240, 320, macBLACK );ILI9341_DispString_EN (5,5, I am qq, macBLACK, macRED );ILI9341_Dis

26、pString_EN (5,25,my xuehao is 2., macBLACK, macRED )ILI9341_DispString_CH (50,57, XX大学, macBLACK, macRED ); ILI9341_DispString_EN_CH (30, 90, Welcome to use 野火 ISO Stm32 开发板 bigo-, macBLACK, macRED );while ( 1 );/显示图片的main函数int main ( void )Sd_fs_init(); /初始化SDIOLCD_Init (); /LCD 初始化Lcd_show_bmp( 10

27、,10,/pic1.bmp);/显示BMP图片Lcd_show_bmp( 10,100,/pic2.bmp); while ( 1 );3.2.3 显示中英文的主要代码ILI9341_DispString_EN_CH()函数的作用主要为在ILI9341显示器上显示中英文字符串,在得到特定扫描方向下字符串的起始X、Y坐标后进行对像素数据的读取,然后设置字符串的背景色、前景色,将字符显示出来。/* * brief 在ILI9341 显示器上显示中英文字符串 * param usX :在特定扫描方向下字符串的起始X坐标 * param usY :在特定扫描方向下字符串的起始Y坐标 * param p

28、Str :要显示的字符串的首地址 * param usColor_Background :选择字符串的背景色 * param usColor_Background :选择字符串的前景色 * retval 无 */void ILI9341_DispString_EN_CH ( uint16_t usX, uint16_t usY, const uint8_t * pStr, uint16_t usColor_Background, uint16_t usColor_Foreground )uint16_t usCh;while( * pStr != 0 )if ( * pStr macILI93

29、41_DispWindow_COLUMN )usX = macILI9341_DispWindow_X_Star;usY += macHEIGHT_EN_CHAR; if ( ( usY - macILI9341_DispWindow_Y_Star + macHEIGHT_EN_CHAR ) macILI9341_DispWindow_PAGE )usX = macILI9341_DispWindow_X_Star;usY = macILI9341_DispWindow_Y_Star; ILI9341_DispChar_EN(usX,usY,*pStr,usColor_Background,

30、usColor_Foreground );usX += macWIDTH_EN_CHAR; pStr +;else /汉字字符if ( ( usX - macILI9341_DispWindow_X_Star + macWIDTH_CH_CHAR ) macILI9341_DispWindow_COLUMN )usX = macILI9341_DispWindow_X_Star;usY += macHEIGHT_CH_CHAR; if ( ( usY - macILI9341_DispWindow_Y_Star + macHEIGHT_CH_CHAR ) macILI9341_DispWind

31、ow_PAGE )usX = macILI9341_DispWindow_X_Star;usY = macILI9341_DispWindow_Y_Star; usCh = * ( uint16_t * ) pStr;usCh = ( usCh 8 );ILI9341_DispChar_CH(usX,usY,usCh,usColor_Background, usColor_Foreground );usX += macWIDTH_CH_CHAR;pStr += 2; /一个汉字两个字节 3.2.4 显示BMP图片的主要代码该函数的主要工作流程是:读取头部信息确定宽度和高度并确定每一行后面具体需

32、要读出的字节数(保证是4字节的倍数);读取一行像素点并显示;读取下一行并显示,直至读完所有行。/* * brief 设置ILI9341的截取BMP图片 * param x :在扫描模式1下截取区域的起点X坐标 * param y :在扫描模式1下截取区域的起点Y坐标* param pic_name:BMP存放的全路径* retval 无 */void Lcd_show_bmp ( uint16_t x, uint16_t y, uint8_t * pic_name )int i, j, k;int width, height, l_width;BYTE red,green,blue;BITMA

33、PFILEHEADER bitHead;BITMAPINFOHEADER bitInfoHead;WORD fileType;unsigned int read_num;unsigned char tmp_name20;sprintf(char*)tmp_name,0:%s,pic_name);f_mount(0, &bmpfs0);BMP_DEBUG_PRINTF(file mount ok rn); bmpres = f_open( &bmpfsrc , (char *)tmp_name, FA_OPEN_EXISTING | FA_READ);/*-*/if(bmpres = FR_OK

34、)BMP_DEBUG_PRINTF(Open file successrn);/*读取文件头信息 两个字节*/ f_read(&bmpfsrc,&fileType,sizeof(WORD),&read_num); /* 判断是不是BMP文件 “BM”*/if(fileType != 0x4d42)BMP_DEBUG_PRINTF(file is not .bmp file!rn);return; elseBMP_DEBUG_PRINTF(Ok this is .bmp filern); /*读取BMP文件头信息*/f_read(&bmpfsrc,&bitHead,sizeof(tagBITMA

35、PFILEHEADER),&read_num); showBmpHead(&bitHead);/* 读取位图信息头信息 */f_read(&bmpfsrc,&bitInfoHead,sizeof(BITMAPINFOHEADER),&read_num); showBmpInforHead(&bitInfoHead); elseBMP_DEBUG_PRINTF(file open fail!rn);return; /*-*/width = bitInfoHead.biWidth;height = bitInfoHead.biHeight;/* 计算位图的实际宽度并确保它为32的倍数*/l_wid

36、th = WIDTHBYTES(width* bitInfoHead.biBitCount);if(l_width 960)BMP_DEBUG_PRINTF(n SORRY, PIC IS TOO BIG (左上角 */ILI9341_GramScan ( 1 );/*开一个图片大小的窗口*/ILI9341_OpenWindow(x, y, width, height);ILI9341_Write_Cmd ( macCMD_SetPixel ); /*判断是否是24bit真彩色图*/if( bitInfoHead.biBitCount = 24 )for ( i = 0; i height;

37、i + ) f_lseek ( & bmpfsrc, bitHead .bfOffBits + ( height - i - 1 ) * l_width );/*读取一行bmp的数据到数组pColorData里 */#if 0for(j=0; j l_width; j+) f_read(&bmpfsrc,pColorData+j,1,&read_num); #elif 0f_read ( & bmpfsrc, pColorData, l_width / 2, & read_num );f_read ( & bmpfsrc, pColorData + l_width / 2, l_width /

38、 2, & read_num );#elsef_read ( & bmpfsrc, pColorData, l_width, & read_num );#endiffor(j=0; jwidth; j+) /一行有效信息k = j*3;/一行中第k个像素的起点red = pColorDatak+2;green = pColorDatak+1;blue = pColorDatak;ILI9341_Write_Data ( RGB24TORGB16 ( red, green, blue ) ); /写入LCD-GRAM else BMP_DEBUG_PRINTF(SORRY, THIS PIC I

39、S NOT A 24BITS REAL COLOR);return ;f_close(&bmpfsrc); 4 系统调试在SD卡中放入HZLIB.bin的字模文件和两个BMP图片pic1.bmp、pic2.bmp,再把该SD卡插入开发板的SD卡接口,然后将野火STM32开发板供电(DC5V),插上JLINK,插上串口线(两头都是母的交叉线),接上液晶屏,将编译好的程序下载到开发板。调试过程中主要出现的问题有:1、如果SD卡中的字模文件出现错误或是没有读取到SD卡的文件,则会出现中文乱码或是图片不显示的问题。2、如果程序出现错误会导致LCD屏无法打开或是产生黑屏的现象,程序与开发板不兼容也会产生

40、同样的现象。最后在不断的调试和改进下,LCD能够根据给出的指令正常显示中、英文字符以及BMP图片,实验现象如图4-1和图4-2所示。 图4-1 LCD显示中英文字符 图4-2 LCD显示BMP图片5 结论本文通过研究LCD显示屏的显示特点与原理、与STM32单片机的件连接和软件编程,以及字模提取方法和中间退到的问题的解决技术等,得到了以下结论:1.LCD可分为段式LCD、字符式LCD和点阵式LCD。其中段位式LCD和字符式LCD只能用于字符和数字的简易显示,而不能够满足图形曲线和汉字显示的要求;而点阵式LCD不仅可以显示字符、数字,还可以显示各种图形、曲线和汉字,并且可以实现屏幕上下左右滚动,

41、动画功能,分区开窗口,反转,闪烁等功能。2. ILI9341液晶显示模组上提供了液晶显示器的接口及其所需的复位电路等,并把对液晶模组的操作接口引出,方便用户使用;此外还提供有背光、电源指示灯。3“字模-增强版 v3.91”字模软件是针对STM32F103的字模数据提取工具用户可以利用此工具提取汉字字模BMP位图字模,还可以很方便地提取ASCII码字模。用户还可以利用此工具对所要取的汉字、位图等进行辑;生成的字模数据用以Word(字型数据为基本单元,并以数组形式保存;字模数据导出时,可以导出一个.C文件和一个h的头文件,用户可以直接把这个文件加载到用户的工程中,供汉字显示位图显示使用。综上所述,

42、本设计的硬件部分及软件部分都基本符合所要设计的要求。1. 基于C8051F单片机直流电动机反馈控制系统的设计与研究2. 基于单片机的嵌入式Web服务器的研究 3. MOTOROLA单片机MC68HC(8)05PV8/A内嵌EEPROM的工艺和制程方法及对良率的影响研究 4. 基于模糊控制的电阻钎焊单片机温度控制系统的研制 5. 基于MCS-51系列单片机的通用控制模块的研究 6. 基于单片机实现的供暖系统最佳启停自校正(STR)调节器7. 单片机控制的二级倒立摆系统的研究8. 基于增强型51系列单片机的TCP/IP协议栈的实现 9. 基于单片机的蓄电池自动监测系统 10. 基于32位嵌入式单片

43、机系统的图像采集与处理技术的研究11. 基于单片机的作物营养诊断专家系统的研究 12. 基于单片机的交流伺服电机运动控制系统研究与开发 13. 基于单片机的泵管内壁硬度测试仪的研制 14. 基于单片机的自动找平控制系统研究 15. 基于C8051F040单片机的嵌入式系统开发 16. 基于单片机的液压动力系统状态监测仪开发 17. 模糊Smith智能控制方法的研究及其单片机实现 18. 一种基于单片机的轴快流CO,2激光器的手持控制面板的研制 19. 基于双单片机冲床数控系统的研究 20. 基于CYGNAL单片机的在线间歇式浊度仪的研制 21. 基于单片机的喷油泵试验台控制器的研制 22. 基于单片机的软起动器的研究和设计 23. 基于单片机控制的高速快走丝电火花线切割机床短循环走丝方式研究 24. 基于单片机的机电产品控制系统开发 25. 基于PIC单片机的智能手机充电器 26. 基于单片机的实时内核设计及其应用研究 27. 基于单片机的远程抄表系统的设计与研究 28. 基于单片机的烟气二氧化硫浓度检测仪的研制 29. 基于微型光谱仪的单片机系统 30. 单片机系统软件构件开发的技术研究 31. 基于单片机的液体点滴速度自动检测仪的研制32. 基于单片机系统的多功能温度测量仪的研制 33. 基于PIC单片机的电能采集终端的设计和应用 34. 基于单片机的光纤光栅解调仪的研制

展开阅读全文
相似文档                                   自信AI助手自信AI助手
猜你喜欢                                   自信AI导航自信AI导航
搜索标签

当前位置:首页 > 学术论文 > 其他

移动网页_全站_页脚广告1

关于我们      便捷服务       自信AI       AI导航        获赠5币

©2010-2024 宁波自信网络信息技术有限公司  版权所有

客服电话:4008-655-100  投诉/维权电话:4009-655-100

gongan.png浙公网安备33021202000488号   

icp.png浙ICP备2021020529号-1  |  浙B2-20240490  

关注我们 :gzh.png    weibo.png    LOFTER.png 

客服