基于STM32的照片查看器课程报告

 注:资料借鉴正点原子正点精英板STM32F1开发指南(库函数版);程序是正点精英板STM32F1实验四十三章图片显示实验。

程序地址:实验38图片显示实验.7z-嵌入式文档类资源-CSDN下载

目录

1绪论

 1.1选题的背景

1.2选题的目的

1.3选题的意义

1.4设计思路和方法

1.5重点与难点分析

1.6设计的预期效果

2模块说明 

2.1TFTLCD 简介 

2.1.1 ILI9341 液晶控制器

2.2 FSMC 简介

2.3 SD 简介 

2.3.1 SDIO 简介

2.3.2 SD电路原理图

2.4 STM32串口简介 

2.5 FATFS 简介 

3硬件设计

4系统软件设计

4.1开发环境与语言

4.3软件流程图

5 系统测试与实现

5.1软件调试与实现

5.2实物的调试与实现

6总结与展望

6.1总结

参考文献


1绪论

   1.1选题的背景

     进入新世纪的第1年,TFFLCD液晶显示的重要关键技术取得重大突破,液晶显示技术进入实用阶段的快速成长期。从现在开始,新型液晶显示技术将会逐步取代传统的CRT显示技术,从而实现工业自动化系统人机界面的全数字化。

1.2选题的目的

    液晶具有低电压、微功耗、易彩色化、被动显示等特点,其显示器种类非常繁多,屏幕面积从几平方毫米到近一平方米,液晶显示方式可分为直视式显示、投影显示及虚拟式显示。因而液晶显示应用几乎覆盖所有显示应用领域。液晶显示是主流的显示技术, TFTLCD是主导的平板显示技术。所以本次课程设计主要是运用STM32对TFTLCD液晶显示屏进行开发,制作一个简易的照片查看器。

1.3选题的意义

    通过本次课程设计,积累了更多项目开发的经验。在理解TFTLCD液晶显示屏的底层原理的基础下,使用STM32相关的库函数去驱动TFT LCD液晶屏并且完成照片查看器设计项目。在这个过程中更加深入的理解了STM32的基础知识,并掌握TFTLCD液晶屏的驱动原理,它主要由ILI9341液晶控制器驱动其中包含六个重要的ILI9341 命令。

1.4设计思路和方法

  1. 首先设置 STM32F1 与 TFTLCD 模块相连接的 IO。这一步,先将我们与 TFTLCD 模块相连的 IO 口进行初始化,以便驱动 LCD。需要用到的是FSMCFSMC,即灵活的静态存储控制器,能够与同步或异步存储器和 16 位 PC 存储器卡连接,STM32的FSMC 接口支持包括 SRAM、NAND FLASH、NOR FLASH 和 PSRAM 等存储器。 STM32 的 FSMC 将外部设备分为 3 类:NOR/PSRAM 设备、NAND 设备、PC 卡设备。他们共用地址数据总线等信号,他们具有不同的 CS 以区分不同的设备,比如本次用到的 TFTLCD 就是用的 FSMC_NE4 做片选,其实就是将 TFTLCD 当成 SRAM 来控制。
  2. 初始化 TFTLCD 模块。 在初始化之后,LCD 才可以正常使用。
  3. 通过图片转换工具获取16进制数组。
  4. 调用相关的函数就可以实现图片了。
    1. 5重点与难点分析

  5. 方案一想通过SD卡,进行文件的读写操作,来实现对照片的储存,但是由于SD卡的文件系统和源程序提供的系统不符合,导致读取文件一直失败。
  6. TFTLCD液晶屏是16 位真彩显示,ILI9341 采用 RGB565 格式存储颜色数据,这样 MCU 的 16 位数据,最低 5 位代表蓝色,中间 6 位为绿色,最高 5 位为红色。数值越大,表示该颜色越深。另外,特别注意 ILI9341 所有的指令都是 8 位的(高 8 位无效),且参数
  7. 除了读写 GRAM 的时候是 16 位,其他操作参数,都是 8 位的,这个和 ILI9320 等驱动器不一 样,必须加以注意。
    1. 6设计的预期效果

    通过程序的烧录将照片显示在屏幕上,并且通过按键实现照片的左右切换,实现基本的照片查看器的功能。

2模块说明 

2.1TFTLCD 简介 

    本次运用的是2.8寸的 ALIENTEK TFTLCD 模块,该模块支持 65K 色显示,显示分辨率为 320×240,接口为 16 位的 80 并口自带触摸屏。 如图一所示:

图一

    ALIENTEK TFTLCD 模块采用 16 位的并方式与外部连接,因为彩屏的数据量比较大,希望速度越快越好,所以选择 16 位的接口。

如图二所示:

图二

模块的80并口有如下一些信号线:

   CS:TFTLCD 片选信号;WR:向 TFTLCD 写入数据;RD:从 TFTLCD 读取数据; D[15:0]:16 位双向数据线;RST:硬复位 TFTLCD;RS:命令/数据标志(0,读写命令;1,读写数据)。

2.1.1 ILI9341 液晶控制器

    ILI9341 采用 RGB565 格式存储颜色数据,此时 ILI9341 的 18 位数据线与 MCU 的 16 位数据线以及 LCD GRAM 的对应关系如图三所示:

图三

    从图中可以看出,ILI9341 在 16 位模式下面,数据线有用的是:D17~D13 和 D11~D1,D0 和 D12 没有用到,实际上在我们 LCD 模块里面,ILI9341 的 D0 和 D12 压根就没有引出来,这样,ILI9341 的 D17~D13和D11~D1对应MCU的D15~D0。这样 MCU 的 16 位数据,最低 5 位代表蓝色,中间 6 位为绿色,最高 5 位为红色。数值越大,表示该颜色越深。

    ILI9341 的六个重要命令0XD3,0X36,0X2A,0X2B,0X2C,0X2E 。一般 TFTLCD 模块的使用流程如图四:

图四

2.2 FSMC 简介

    FSMC,即灵活的静态存储控制器,能够与同步或异步存储器和 16 位 PC 存储器卡连接, STM32 的 FSMC 接口支持包括 SRAM、NAND FLASH、NOR FLASH 和 PSRAM 等存储器。FSMC 的框图如图五所示:

          

                           

图五

     从上图我们可以看出,STM32 的 FSMC 将外部设备分为 3 类:NOR/PSRAM 设备、NAND设备、PC 卡设备。他们共用地址数据总线等信号,他们具有不同的 CS 以区分不同的设备,比 如本章我们用到的 TFTLCD 就是用的 FSMC_NE4 做片选,其实就是将 TFTLCD 当成 SRAM 来控制。

2.3 SD 简介 

2.3.1 SDIO 简介

     STM32F1的SDIO控制器支持多媒体卡(MMC 卡)、SD 存储卡、SD I/O 卡和CE_ATA 设 备等。SDIO 的主要功能如下:

➢ 与多媒体卡系统规格书版本 4.2 全兼容。支持三种不同的数据总线模式:1 位(默认)、

4 位和 8 位。

➢ 与较早的多媒体卡系统规格版本全兼容(向前兼容)。

➢ 与 SD 存储卡规格版本 2.0 全兼容。

➢ 与 SD I/O 卡规格版本 2.0 全兼容:支持良种不同的数据总线模式:1 位(默认)和 4 位。

➢ 完全支持CE_ATA 功能(与CE_ATA数字协议版本 1.1 全兼容)。8 位总线模式下数据传输速率可达 48MHz。

➢ 数据和命令输出使能信号,用于控制外部双向驱动器。

STM32F1 的 SDIO 控制器包含 2 个部分:SDIO 适配器模块和 AHB 总线接口,其功能框图

如图六所示:

图六

2.3.2 SD电路原理图

图七

2.4 STM32串口简介 

STM32 的串口资源相当丰富的,功能也相当强劲。ALIENTEK 精英 STM32 开发板所使用

的 STM32F103ZET6 最多可提供5路串口,有分数波特率发生器、支持同步单线通信和半双工

单线通讯、支持 LIN、支持调制解调器操作、智能卡协议和 TRDA SIR ENDEC规范、具有DMA

等。

2.5 FATFS 简介 

FATFS 是一个完全免费开源的 FAT 文件系统模块,专门为小型的嵌入式系统而设计。它完 全用标准 C 语言编写,所以具有良好的硬件平台独立性,可以移植到 8051、PIC、AVR、SH、Z80、H8、ARM 等系列单片机上而只需做简单的修改。它支持 FATl2、FATl6 和 FAT32,支持多个存储媒介;有独立的缓冲区,可以对多个文件进行读/写,并特别对 8 位单片机和 16 位单片机做了优化。

FATFS 的特点有:

⚫ Windows 兼容的 FAT 文件系统(支持 FAT12/FAT16/FAT32)

⚫ 与平台无关,移植简单

⚫ 代码量少、效率高

⚫ 多种配置选项

⚫ 支持多卷(物理驱动器或分区,最多 10 个卷)

⚫ 多个 ANSI/OEM 代码页包括 DBCS

⚫ 支持长文件名、ANSI/OEM 或 Unicode

⚫ 支持 RTOS

⚫ 支持多种扇区大小

⚫ 只读、最小化的 API 和 I/O 缓冲区等

FATFS 模块的层次结构如图八所示:

图八

3硬件设计

本实验用到的硬件资源有:

  1. 指示灯 DS0 和 DS1

图九

  1. KEY0、KEY1 和 KEY_UP 三个按键

图十

  1. 串口

图十一

  1. TFTLCD 模块

图十二

  1. SD 卡

图十三

6) SPI FLASH

图十四

4系统软件设计

4.1开发环境与语言

照片查看器的项目工程根目录文件夹下新建一个 PICTURE的文件夹。在该文件夹里面新建 bmp.c、bmp.h、tjpgd.c、tjpgd.h、integer.h、gif.c、gif.h、piclib.c和 piclib.h 等 9 个文件。同时在工程中新建 PICTURE 分组,将其中的C源文件添加到该分组下,同时将 PICTURE 文件夹加入头文件包含路径。mp.c和bmp.h 用于实现对 bmp 文件的解码;tjpgd.c 和 tjpgd.h 用于实现对 jpeg/jpg 文件的解码;gif.c 和 gif.h 用于实现对 gif 文件的解码.

4.2主要程序片段

1、piclib.c源文件中:

(1)piclib_init 函数,该函数用于初始化图片解码的相关信息,其中_pic_phy 是我们在 piclib.h里面定义的一个结构体,用于管理底层 LCD 接口函数,这些函数必须由用户在外部实现。_pic_info 则是另外一个结构体,用于图片缩放处理。

(2)piclib_alpha_blend 函数,该函数用于实现半透明效果,在小格式(图片分辨率小于 LCD 分辨率)bmp 解码的时候,可能被用到。

(3)ai_draw_init 函数,该函数用于实现图片在显示区域的居中显示初始化,其实就是根据图片大小选择缩放比例和坐标偏移值。

(4)is_element_ok 函数,该函数用于判断一个点是不是应该显示出来,在图片缩放的时候该函数是必须用到的。

(5)ai_load_picfile 函数,该函数是整个图片显示的对外接口,外部程序,通过调用该函数,可以实现 bmp、jpg/jpeg 和 gif 的显示,该函数根据输入文件的后缀名,判断文件格式,然后交给相应的解码程序(bmp 解码/jpeg 解码/gif 解码),执行解码,完成图片显示。注意,这里我们用到一个 f_typetell 的函数,来判断文件的后缀名,f_typetell 函数在 exfuns.c 里面实现.

(6)pic_memalloc 和 pic_memfree 分别用于图片解码时需要用到的内存申请和释放,通

过调用 mymalloc 和 myfreee 来实现。

  1. main.c 源文件:

      初始化部分:

delay_init();       //延时函数初始化   

  NVIC_PriorityGroupConfig(NVIC_PriorityGroup_2);//设置中断优先级分组为组2:2位抢占优先级,2位响应优先级

uart_init(115200);   //串口初始化为115200

  usmart_dev.init(72); //初始化USMART

  LED_Init();    //初始化与LED连接的硬件接口

KEY_Init(); //初始化按键

LCD_Init();     //初始化LCD   

W25QXX_Init(); //初始化W25Q128

  my_mem_init(SRAMIN); //初始化内部内存池

exfuns_init(); //为fatfs相关变量申请内存  

  f_mount(fs[0],"0:",1); //挂载SD卡

  f_mount(fs[1],"1:",1); //挂载FLASH.

POINT_COLOR=RED;      

此部分除了 mian 函数,还有一个 pic_get_tnum 的函数,用来得到 path 路径下,所有有效 文件(图片文件)的个数。在 mian 函数里面我们通过索引(图片文件在 PICTURE 文件夹下的编号),来查找上一个/下一个图片文件,这里我们需要用到 FATFS 自带的一个函数:dir_sdi,来设置当前目录的索引(因为 f_readdir 只能沿着索引一直往下找,不能往上找),方便定位到任何一个文件。dir_sdi 在 FATFS 下面被定义为 static 函数,所以我们必须在 ff.c 里面将该函数的 static 修饰词去掉,然后在 ff.h 里面添加该函数的申明,以便 main 函数使用。

4.3软件流程图

图十五

5 系统测试与实现

5.1软件调试与实现

  1. 初始方案将图片信息写在.h文件中,最多可以储存3张照片,与项目要求相差很大。
  2. 升级方案,采用SD卡,利用文件的读写和TFTLCD的相关功能实现,实现最终方案;
  3. 优化项目最终完成照片查看器项目的开发。

图十六

5.2实物的调试与实现

  1. 程序烧录成功就显示功能说明,然后循环显示SD卡里面的照片。
  2. 按下key_up关闭图片循环播放功能,并且LED1灯一直发亮,会按下key0和key1进行图片上下切换。
  3. 切换图片完成时指示灯闪烁,说明照片切换完成。

演示流程如下所示:

图十七

按下key_up时,LED1亮起,显示图片二:

图十八

上一张,显示文件中最后一张图片图片四:

 

图十九

下一张,显示文件中第二张图片,图片3:

 

图二十

6总结与展望

6.1总结

本次课程设计项目开发,对我们小组的每个成员来说都是一个增加自己项目经验和提高自己专业素养能力的机会。每个组员在本次的项目开发过程中,态度都是十分端正的,积极配合组长安排,按时按完成了各自任务,有效锻炼了自己团队意识和团队协作能力,提升了自己的责任感。在实践中,组员们都是积极尝试,攻坚克难,积极查阅资料解决了一个又一个困难,同时收获许多专业和项目开发经验。总的来说,我们小组每个成员通过本次课程设计都有了巨大的收获和感悟。

参考文献

[1]杨志佳,陈小平.STM32F429的TFTLCD显示驱动方案的研究[J].单片机与嵌入式系统应用,2016,16(12):44-47.

[2]刘静. 基于ARM嵌入式教学实验平台的设计与开发[D].电子科技大学,2014.

[3]焦江丽,李凤莲.以ARM Cortex-M3为基础的STM32开发板的设计与实现[J].中国新通信,2013,15(09):94-96.

[4]勾慧兰,刘光超.基于STM32的最小系统及串口通信的实现[J].工业控制计算机,2012,25(09):26-28.

[5]李世奇,董浩斌,李荣生.基于FatFs文件系统的SD卡存储器设计[J].测控技术,2011,30(12):79-81.DOI:10.19708/j.ckjs.2011.12.020.

[6]孙书鹰,陈志佳,寇超.新一代嵌入式微处理器STM32F103开发与应用[J].微计算机应用,2010,31(12):59-63.

[7]黄平.基于DRAM、FPGA的专用LCD显示接口设计与实现[J].微计算机信息,2007(14):191-192+186.

[8]黄锡珉.液晶显示技术发展轨迹[J].液晶与显示,2003(01):1-6.

[9]杨虹,凌志华,王刚,唐志勇,黄锡珉,金圣经.高画质、低功耗的TFTLCD直接驱动方法[J].液晶与显示,1999(04):296-301.

[10]黄锡珉.TFT LCD技术的进步[J].液晶与显示,1999(02):3-13.

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.rhkb.cn/news/40456.html

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

物联网家电第一股,想离开小米的云米现在有多少实力?

作者|星影 来源|智能相对论 Are you ok?你甚至不用哼唱,这句英文就能马上让人想起雷军与小米。但对于小米生态链中的另一家企业——云米科技,大多数人却搞不清两家公司之间的关系。 云米科技成立于2014年5月,主营业务是智能家电…

云米科技财报预测:财务业绩有望恢复,销售额和市场份额将下降

来源:猛兽财经 作者:猛兽财经 业务和财务概况 云米科技(VIOT)成立于2014年,其首款产品是2015年推出的小米(01810)品牌下的净水器。在接下来的几年里,该公司迅速发展,目前…

安波副教授:分布式人工智能进展与趋势

2020-12-31 09:43:19 2020年11月20日,由中国科学技术协会主办,中国国际科技交流中心、中国人工智能学会、新加坡通商中国承办的“中新数字经济与人工智能高峰论坛”云端召开。主题报告环节,新加坡南洋理工大学人工智能研究院联席院长校长委员…

李立军副总裁:后疫情时代服务机器人产业的发展机会

2021-01-23 21:27:31 2020年11月14日至15日,由中国人工智能学会、嘉兴市人民政府主办,嘉兴市南湖区人民政府、嘉兴科技城管理委员会、浙江未来技术研究院(嘉兴)共同承办的2020第十届中国智能产业高峰论坛(CIIS 2020&a…

需求推送变革!陈小平教授深度剖析机器人因何由精确性转向灵巧性

陈小平教授从精确性和灵巧性两个方面深入分析了机器人过去取得的成就,及将来面临的挑战。以下是陈教授的演讲实录(为使文章简介规范,略有改动): 讲座内容 机器人灵巧性:需求推动的技术变革 机器人从精确性向…

云米科技的变与不变:毛利率连降3年,核心高管仅剩陈小平一人

近期,纳斯达克上市公司云米全屋互联网家电有限公司(NASDAQ:VIOT,下称“云米”或“云米科技”)发布截至2020年12月31日的2020年第四季度及全年财报。财报显示,云米多项指标出现下滑。 具体来看,云米2020年第…

云米美国上市雷军系持股40% 陈小平:重新定义家的未来

雷帝网 雷建平 9月25日报道 小米净水器生产商云米今日在美国纳斯达克上市,发行价为9美元,以发行价计算,市值超过7亿美元。云米上市也宣告中国“家庭物联网第一股”的诞生。 云米CEO陈小平在上市现场的致辞中感谢了两个人,分别是小…

演讲实录丨中科大陈小平教授《从封闭性到非封闭性:2020到2035年智能机器的机遇和挑战》...

来源:中国人工智能学会 陈小平 中国科学技术大学机器人实验室主任、教授 以下是陈小平教授的演讲实录: 非常高兴有这个机会进行中、新学术交流。本报告包括四方面内容。第一,关于人工智能(简称AI)的两种类型&#xff0…

用 Python 进行音乐创作

文/世界上的霸主 图片来源于网络 投稿邮箱:pythonpost163.com 前言 上期留了尾,卖了关子。接着上回用 Python 播放多声轨 MIDI 文件音乐继续为您说。 如今,许多人尝试用计算机创作乐器,普遍方法是随机生成一段音乐,和…

Github ChatGPT-Web:了解最新AI技术的前沿应用!

近年来OpenAI的ChatGPT模型在自然语言处理领域取得了很大的进展,并且已经在全球范围内得到了广泛的应用和普及。ChatGPT不仅可以用于生成对话和文本摘要等任务,还可以用于机器翻译、问答系统、情感分析等多个领域。ChatGPT已经成为自然语言处理领域的一个…

chatgpt赋能python:Python怎么将界面和程序交互

Python怎么将界面和程序交互 随着互联网技术的不断发展和普及,越来越多的人开始关注于网站的设计和开发。在Web应用程序的开发过程中,与用户进行交互是至关重要的一个方面,而Python作为一种强大的开发语言,可以很好地帮助我们实现…

汇正财经骗局?大盘午后有修复,科创50大涨2.69%

盘面回顾: 沪深创集体调整,收盘沪指跌0.09%,深成指跌0.37%,创业板指跌1.2%,科创50全天占优,收盘涨2.69%。板块个股,早上6G概念股开盘大涨,业绩增长股大受追捧,算力、CPO…

汇正财经骗局?大小指数分化,主板偏强

盘面回顾: 今日大小指数全天分化,沪指保持红盘,创业板一度跌近1%,黄白二线大幅背离,截止收盘沪指涨0.41%,深成指涨0.05%,创业板指跌0.41%。早盘,ChatGPT概念反弹AI应用端持续发力&a…

马斯克又任性了!将推特“蓝鸟”换成“狗头”,意欲何为?

整理 | 朱珂欣 出品 | CSDN程序人生(ID:coder_life) 自从去年 10 月 27 日马斯克收购 Twitter 、担任 CEO 后,以一己之力凭借“灭霸式”裁员、精确到代码行数的“周报”等职场“骚操作”,让他进阶为互联网流量密码。…

世界杯小组赛频繁爆冷?这或许是强队的谋略 一分钟带你了解2022卡塔尔世界杯赛制

今年的世界杯你赚到钱了吗? 我们这里所说的世界杯是指世界杯决赛圈,也被叫做世界杯正赛。参赛队伍是已经通过世界杯预选赛选拔出的的32支队伍(除了东道主卡塔尔自动晋级)。 世界杯中没有皇马、巴萨、曼联,这些都是俱…

2018世界杯数据清单:真球迷看球必备,伪球迷速成指南(附完整赛程)

导读:每隔4年都有那么1个月,无论是线上还是线下,不管是真球迷还是真球盲,你的社交圈子都会被世界杯话题攻占。每到这个时候,真球迷一言不合就面红耳赤,伪球迷尬聊不超过3句就暴露“球商”…… 用段子缓解尴…

2022年卡塔尔世界杯,分析之前的比赛计算出谁是冠军

2022 年卡塔尔国际足联世界杯即将开始,让我们来玩个游戏吧。 我研究了世界杯上每支球队之前所有比赛的历史数据,以预测从小组赛阶段到决赛以及第三名获胜者的过往球队。 我们将遵循的规则: 查看两支球队之前的比赛,并根据胜负或平…

Python预测卡塔尔世界杯身价最高的英格兰要夺冠?!

文章目录 🏳️‍🌈 1. 数据🏳️‍🌈 2. 绘图2.1 绘制表头2.2 绘制排名、球队以及国旗2.3 绘制身价柱状图2.4 绘制FIFA排名散点图2.5 设置背景2.6 设置标题 🏳️‍🌈 3. 更多可视化项目源码数据:…

神了,用 Python 预测世界杯决赛,发现准确率还挺高

那么四年一度的世界杯即将要在卡塔尔开幕了,对于不少热爱足球运动的球迷来说,这可是十分难得的盛宴,而对于最后大力神杯的归属,相信很多人都满怀着期待,每个人心中都有不同的答案。 今天我就通过Python数据分析以及机…

太硬核!用大数据技术预测足球胜率

点个关注👆跟腾讯工程师学技术 引言| 足球作为世界第一运动,充满了速度和力量的结果,团队与谋略的对抗。人们也说,足球是圆的,恰恰也表明了足球比赛的不可预知性,一切结果都皆有可能。强如巴萨,…