版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
任务4.3.5任务实施任务实施TFT-LCD显示屏任务实施之前必须准备好表4-33所列的设备/资源。表4-33设备/资源清单序号设备/资源数量是否准备到位(√)1STM32F407ZET6最小系统1
24.3英寸TFT-LCD屏1
3配书软件包1
任务实施TFT-LCD显示屏硬件连接TFT-LCD模块与STM32F407ZET6核心板连接的I/O口对应关系如下。LCD_BL(背光控制)对应PB15;LCD_CS对应PG12即FSMC_NE4;LCD_RS对应PF12即FSMC_A6;LCD_WR对应PD5即FSMC_NWE;LCD_RD对应PD4即FSMC_NOE;LCD_D[15:0]直接连在FSMC_D15~FSMC_D0;TFT-LCD模块通过转接板已和STM32F407ZET6核心板连接好,实物连接如图4-47所示。图4-47TFT-LCD模块与核心板连接实物图任务实施TFT-LCD显示屏实施步骤要完成本任务,实施步骤分成以下几步。创建项目。引脚分配。配置FSMC外设。添加代码包。修改程序。编译、下载验证。任务实施TFT-LCD显示屏实施步骤设置CubeMX环境启动CubeMX软件,依次选择“NewProject”→“StartMyprojectfromMCU”,在PartNumberSearch搜索框中输入“STM32F407ZE”,选中搜索结果的STM32F407ZETx,单击右上角的“StartProject”按钮,进入开发板初始化对话框。创建项目,并将其设置为相应的IDE生成代码(1)首先,在主窗口中选择“ProjectManager”选项,打开“Project”标签,进入“ProjectSetting”窗口。(2)在相应的文本框中输入项目名称,选择项目保存路径。(3)将Toolchain/IDE选项设置为“MDK-ARMV5”。(4)时钟源配置HSE配置为“Crystal/CeramicResonator”,时钟树配置选“HSE”,内核时钟为168MHz。具体配置可参阅前述相关介绍。任务实施TFT-LCD显示屏实施步骤引脚分配本任务中用到LCD屏的背光控制PB15,应设置为推挽式输出。串口1用于打印LCD的ID号,故需要配置串口1,默认配置即可。具体配置可参阅前述介绍。FSMC分配按图4-48配置FSMC。图4-48FSMC的配置任务实施TFT-LCD显示屏实施步骤生成基础工程在配置好FSMC参数、LCD背光引脚、串口1后,切换到“CodeGenerator”选项卡,进行勾选。最后单击右上角的“GENERATECODE”按钮生成基础工程。在工程中添加代码包(1)用KeilMDK打开基础工程,单击编译按钮开始编译,若提示0个错误,表示编译通过。(2)在项目工程文件夹下新建“TFT_LCD”文件夹,并将书配的font.h、lcd.h、lcd.c三个文件复制进去,如图4-49所示。图4-49任务实施TFT-LCD显示屏实施步骤在工程中添加代码包(3)右击项目文件名,在弹出的快捷菜单中选择“AddGroup”添加组,将NEWGroup改为“TFT_Lcd”,双击“TFT_Lcd”,选择TFT_LCD文件夹,添加“lcd.c”文件,如图4-50所示。(4)刚添加的文件直接编译会报错,需要配置编译器包含文件的路径,如图4-51所示,添加lcd.h、font.h头文件的路径。图4-50图4-51任务实施TFT-LCD显示屏实施步骤在源文件中添加代码。在MDK-ARM中双击打开Application/User路径下的main.c文件,添加头文件代码,如下:/*USERCODEBEGINIncludes*/#include"lcd.h"#include"stdio.h"/*USERCODEENDIncludes*/添加变量,在/*USERCODEBEGINPV*/和/*USERCODEENDPV*/之间添加变量,如下:/*USERCODEBEGINPV*/ uint8_tx=0; uint8_tlcd_id[12]; //存放LCDID字符串/*USERCODEENDPV*/③添加初始化语句,在/*USERCODEBEGIN2*/和/*USERCODEEND2*/之间添加如下语句:/*USERCODEBEGIN2*/LCD_Init(); //初始化LCDFSMC接口POINT_COLOR=RED; //画笔颜色:红色 sprintf((char*)lcd_id,"LCDID:%04X",lcddev.id);/*将LCDID写到lcd_id。*//*USERCODEEND2*/任务实施TFT-LCD显示屏实施步骤在/*USERCODEBEGIN3*/和/*USERCODEEND3*/之间添加如下语句:打开usart.c文件,在#include"usart.h"之后添加如下头文件及语句:#include"stdio.h"/*USERCODEBEGIN0*/intfputc(intch,FILE*fp){HAL_UART_Transmit(&huart1,(uint8_t*)&ch,1,HAL_MAX_DELAY);returnch;}/*USERCODEEND0*/任务实施TFT-LCD显示屏实施步骤单击“Rebuild”编译工程,会出现如下错误:tft_lcd_test\tft_lcd_test.axf:Error:L6200E:SymbolHAL_SRAM_MspInitmultiplydefined(bylcd.oandfsmc.o),表明HAL_SRAM_MspInit()函数在fsmc.c和lcd.c文件中都有定义,这里注释掉fsmc.c中的HAL_SRAM_MspInit()函数,重新编译,就没有错误了。下载程序将TFT-LCD模块和核心板连接好,并连接好调试器,将编译好的程序下载到核心板,看到的结果是:复位核心板后,就可以看到TFT-LCD模块不停地显示一些信息并不断切换背景色,屏幕中心在循环画圆,每次画的圆半径不同,12次循环后重复。同时该实验会显示LCD驱动器的ID(驱动芯片的型号),并且会在串口打印(按复位一次,打印一次)。显示效果如图4-52所示。任务实施TFT-LCD显示屏源码分析梳理一下程序设计思路。开始系统级别的初始化:HAL库初始化、系统时钟、延时和串口初始化用户初始化:LCD初始化、将LCD_ID打印到lcd_id数组换颜色清屏显示字符串信息和LCD_ID任务实施TFT-LCD显示屏源码分析梳理一下程序设计思路。先看看LCD_Init()函数的简化代码先对FSMC相关I/O进行初始化,然后是FSMC的初始化,这个在前面都有介绍,最后根据读到的LCDID,对不同的驱动器执行不同的初始化代码,从上面的代码可以看出,这个初始化函数可以针对十多款不同的驱动芯片执行初始化操作,这样大大提高了整个程序的通用性。大家在以后的学习中应该多使用这样的方式,以提高程序的通用性、兼容性。任务实施TFT-LCD显示屏源码分析lcd.h里面的另一个重要结构体:该结构体用于保存一些LCD重要参数信息,如LCD的长宽、LCDID(驱动IC型号)、LCD横竖屏状态等,这个结构体虽然占用了十几个字节的内存,但是却可以让驱动函数支持不同尺寸的LCD,同时可以实现LCD横竖屏切换等重要功能,所以还是利大于弊的。任务实施TFT-LCD显示屏源码分析先看以下7个很重要的函数:因为FSMC自动控制了WR、RD、CS等这些信号,所以这7个函数实现起来都非常简单,这些函数实现功能见函数前面的备注,通过这几个简单函数的组合,我们就可以对LCD进行各种操作了。任务实施TFT-LCD显示屏源码分析第8个要介绍的函数是坐标设置函数,函数原型为:voidLCD_SetCursor(u16Xpos,u16Ypos); //设置光标该函数实现将LCD的当前操作点设置到指定坐标(x,y)。第9个函数是画点函数,函数原型为:voidLCD_DrawPoint(u16x,u16y);//画点该函数就是先设置坐标,然后往坐标写颜色。其中POINT_COLOR是我们定义的一个全局变量,用于存放画笔颜色。顺带介绍一下另外一个全局变量BACK_COLOR,该变量代表LCD的背景色。LCD_DrawPoint()函数虽然简单,但是至关重要,其他几乎所有上层函数,都是通过调用这个函数实现的。其他的函数简单介绍如下。读点函数,用于读取LCD的GRAM。其函数原型为:u32LCD_ReadPoint(u16x,u16y);//读点字符显示函数LCD_ShowChar(),这里的字符显示函数多了1个功能,就是可以以叠加方式显示,或者以非叠加方式显示。叠加方式显示多用于在显示的图片上再显示字符。非叠加方式一般用于普通的显示。其函数原型为:voidLCD_ShowChar(u16x,u16y,u8num,u8size,u8mode);//显示一个字符。字符串显示函数:LCD_ShowString(),函数原型为:voidLCD_ShowString(u16x,u16y,u16width,u16height,u8size,u8*p);//显示一个字符串,12/16/24/32字体另外,还提供了画圆函数:voidLCD_Draw_Circle(u16x0,u16y0,u8r);//画圆画线函数:voidLCD_DrawLine(u16x1,u16y1,u16x2,u16y2);//画线画矩形函数:voidLCD_DrawRectangle(u16x1,u16y1,u16x2,u16y2);//画矩形任务实施TFT-LCD显示屏源码分析任务拓展TFT-LCD显示屏项目引导案例
伴随着电子技术、互联网技术、高清视觉成像技术的蓬勃发展,广告行业也迎来了时代的大发展,无论是在街边的公交站牌、地铁的窗外、写字楼的外墙、运动场的周围,都随处可见各式各样的电子广告牌。任务拓展TFT-LCD显示屏职业能力目标了解STM32的FSMC接口ILI9341LCD控制器BMP文件格式能根据MCU的编程手册,利用STM32CubeMX准确配置STM32FSMC功能能根据任务要求,快速查阅硬件连接资料,准确搭建设备环境能根据任务要求,理解LCD控制器显示、控制时序等内容能根据任务要求,编制相应代码,进行BMP图片存储和静态显示知识目标技能目标任务拓展TFT-LCD显示屏
某公司准备为一电梯开发小型电子显示屏产品,经过慎重选型决定采用STM32系列单片为控制单元,液晶屏则采用ILI9341液晶控制器的3.2寸TFT彩屏。技术团队将开发任务分为3个子任务,分步实现。此阶段为第一阶段,任务内容是实现图片的静态显示。任务描述任务要求配置单片机FSMC接口;移植液晶驱动;显示静态图片;任务拓展TFT-LCD显示屏BMP图片格式讨论一下:你们知道哪些常见的图片格式?任务拓展TFT-LCD显示屏BMP图片格式BMP(Bitmap-File)图形文件是Windows采用的图形文件格式,BMP图片格式组成部分:BMP文件头(14bytes)+位图信息头(40bytes)+调色板(由颜色索引数决定)+位图数据(由图像尺寸决定)。思考一下,BMP图片文件格式应该是什么样的?2.BMP文件显示Windows规定一个扫描行所占的字节数必须是4的倍数,不足的以0填充。任务拓展TFT-LCD显示屏BMP图片格式位图数据文件紧接着位图信息头呈现。位图文件有单色、16色、24色等,现在常见的是24色、256色两种模式,即单个像素大小分别用24位(3字节)或者256位(32字节)表示。表中阴影部分是文件头部信息,文件头可以分为BMP文件头和位图信息头。BMP文件的0和1字节用于表示文件的类型。1.BMP文件信息如果是位图文件类型,必须分别为0x42和0x4D,也就是ASCII码的‘BM’。任务拓展TFT-LCD显示屏BMP图片格式LCD液晶屏工程实施流程任务拓展TFT-LCD显示屏工程搭建0101020304提取BMP文件图模添加液晶屏基础驱动添加功能代码020304添加显示图片代码任务实施TFT-LCD显示屏LCD显示数字和字符的原理都是将数字和字符转换成点阵,通过函数扫描点阵进而在LCD上显示。LCD显示图片的原理也是如此,将图片转换成若干点阵,进而通过函数进行扫描而在LCD上显示。正点原子官方提供了图片转换成点阵的工具Image2Lcd2.9。具体实施步骤如下。首先打开任务2,在lcd.c文件下添加LCD_ShowPicture()函数,用于在LCD屏上显示图片。在lcd.h中声明该函数。打开lcd.h文件,在自定义函数声明处添加如下代码:voidLCD_ShowPicture(u16x,u16y,u16width,u16height,unsignedshort*pic);添加显示图片代码任务实施TFT-LCD显示屏在网上找几张图片,或者用手机拍照的图片也可以。使用Image2Lcd工具取模变成数组,具体操作如图4-53所示。图4-53Image2Lcd图片取点配置请注意:函数“LCD_ShowPicture(0,0,320,320,(u16*)gImage_1);”中“320,320”这两个参数要和图4-53的第⑥步的参数保持一致,才能正确显示彩色图片。添加显示图片代码任务实施TFT-LCD显示屏设置好后,保
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2026韩语升职面试题及答案
- 2026街舞面试题目及答案
- 江西省九江市六校2025-2026学年高二下学期期末考试化学试卷(含答案)
- 河南省许昌市2025-2026学年高一下学期期末质量检测语文试卷(含答案)
- 2026年铜陵学院公开招聘科研助理、管理助理、教学助理49名笔试模拟试题及答案详解
- 2026年乌兰察布市集宁区住房和城乡建设局人员招聘笔试参考试题及答案详解
- 2026年辽宁省大连市住房和城乡建设局人员招聘笔试备考试题及答案详解
- 2026年四川省雅安市住房和城乡建设局人员招聘考试备考题库及答案详解
- 2026浙江金温铁道公司领军紧缺人才招聘3人考试备考试题及答案详解
- 交易系统算力资源调度-第3篇
- 2026年石家庄市裕华区社区工作者招聘笔试参考试题及答案详解
- 【三年级下册英语】【人教PEP版】阅读理解专项训练91篇带答案
- 【安庆】2026年安徽桐城师范高等专科学校公开招聘工作人员8人笔试历年典型考题及考点剖析附带答案详解
- 2025太原五中高一英语分班考试真题含答案
- 《建筑施工模板安全技术规范》JGJ162-2025
- 2026年湖南省生物高考真题含答案
- SD高达G世纪 超越世界 金手指
- 2026年教师创新能力测试题及答案
- TSG08-2026《特种设备使用管理规则》解读
- GA/T 2131-2024移民管理领域标准体系表
- YBT 4334-2024《金属箔材 室温拉伸试验方法》
评论
0/150
提交评论