基于STM32的图像显示系统_第1页
基于STM32的图像显示系统_第2页
基于STM32的图像显示系统_第3页
基于STM32的图像显示系统_第4页
基于STM32的图像显示系统_第5页
已阅读5页,还剩15页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

沈阳理工大学课程设计报告 I 摘摘 要要 本文介绍了基于 STM32 的图片显示系统设计。现如今 LCD 显示屏的技术和产业都 取得了长足的发展,作为重要的现代信息发布媒体之一,LCD 显示屏在证券交易、金融、 交通、体育、广告等领域被广泛的应用。基于 STM32 的 LCD 显示可以更好的满足各种 需求,也更便于操作和实现。通电后,复位到初始化状态可显示本次课程设计题目及 成员等基本信息,可人为操作对显示信息的汉字进行自定义大小颜色及字体等等;把 要显示的图片考入内存卡里,更新内存卡,即图片可进行变换;自定义定时跳转下一 幅图片,也可以通过按键快速跳到下一幅图片,或返回上一张图片。利用 TFT-LCD 液 晶显示屏显示的图片清晰、分辨率高,显示图片的效果极好。 关键词: STM32; LCD 显示屏; 图片显示 沈阳理工大学课程设计报告 II 目 录 1 引言.1 2 总体设计.2 2.1 图片显示的基本原理.2 2.2 图片显示设计分析.2 2.3 系统的结构框图.3 3 详细设计.4 3.1 硬件设计.4 3.1.1 ALIENTEK MiniSTM32 开发板简介.4 3.1.2 功能简介.4 3.2 软件设计.7 3.2.1 主函数部分.8 3.2.2 硬件部分程序.9 3.2.3 识别图片.11 3.2.4 FAT 系统.14 3.2.5 程序流程图.15 4 实验结果及分析.16 4.1 硬件实验结果.16 4.2 结果分析.16 5 结论.17 参考文献.18 沈阳理工大学课程设计报告 1 1 引言 进入新世纪 LCD 显示屏的技术和产业都取得了长足的发展,作为重要的现代信息 发布媒体之一,LCD 显示屏在证券交易、金融、交通、体育、广告等领域被广泛的应用。 伴随社会信息化进程的推进,LCD 显示屏技术也在不断的推陈出新,应用领域愈加广阔。 基于 STM32 的 LCD 显示可以更好的满足各种需求,也更便于操作和实现。现基于 STM32 在液晶显示屏幕上显示文本及图形。 目前,显示技术和显示工业的发展迅速。显示技术是传递视觉的信息技术。液晶 显示器件 LCD 是当今最有发展前途的一种平板显示器件,它具有很多独到的优异特性。 它具有显示信息多、易于多彩化、体积小、重量轻、功耗低、寿命长、价格低、无辐 射、无污染、接口控制方便等优点。 BMP 是一种与硬件设备无关的图像文件格式,使用非常广。它采用位映射存储格式, 除了图像深度可选以外,不采用其他任何压缩,因此,BMP 文件所占用的空间很大。 而且 JPEG 是一种很灵活的格式,具有调节图像质量的功能,允许用不同的压缩比例对 文件进行压缩,支持多种压缩级别。 沈阳理工大学课程设计报告 2 2 总体设计 2.1 图片显示的基本原理 BMP 是一种与硬件设备无关的图像文件格式,使用非常广。它采用位映射存储格 式,除了图像深度可选以外,不采用其他任何压缩,因此,BMP 文件所占用的空间很 大。BMP 文件的图像深度可选 lbit、4bit、8bit、16bit、24bit 及 32bit。BMP 文件存储 数据时,图像的扫描方式是按从左到右、从下到上的顺序。 JPEG 是最常用的图像文件格式,由一个软件开发联合会组织制定,是一种有损压 缩格式,能够将图像压缩在很小的储存空间,图像中重复或不重要的资料会被丢失, 因此容易造成图像数据的损伤。尤其是使用过高的压缩比例,将使最终解压缩后恢复 的图像质量明显降低,如果追求高品质图像,不宜采用过高压缩比例。但是 JPEG 压 缩技术十分先进,它用有损压缩方式去除冗余的图像数据,在获得极高的压缩率的同 时能展现十分丰富生动的图像,换句话说,就是可以用最少的磁盘空间得到较好的图 像品质。 而且 JPEG 是一种很灵活的格式,具有调节图像质量的功能,允许用不同的 压缩比例对文件进行压缩,支持多种压缩级别,压缩比率通常在 10:1 到 40:1 之间, 压缩比越大,品质就越低;相反地,压缩比越小,品质就越好。当然也可以在图像质 量和文件尺寸之间找到平衡点。JPEG 格式压缩的主要是高频信息,对色彩的信息保留 较好,适合应用于互联网,可减少图像的传输时间,可以支持 24bit 真彩色,也普遍应 用于需要连续色调的图像。 2.2 图片显示设计分析 在程序方面,采用分块设计的方法,这样既减小了编程难度、使程序易于理解, 又能便于添加各项功能。该程序将实现浏览PICTURE 文件夹下的所有图片及其名字, 配合SD卡能够实现顺序显示出每一副图片,并每隔3s左右切换一幅图片。 具体要实现的目标有:更新内存卡,即图片可进行变换;定时自动跳转下一幅图 片;可以通过按键快速跳到下一幅图片;可以通过按键返回到上一幅图片;初始状态 显示本次课设的基本信息;可对显示信息的汉字进行自定义。 沈阳理工大学课程设计报告 3 2.3 系统的结构框图 STM32 2.1 系统结构框图 存储图像 SD 卡 键盘按键 LED 提示灯 TFT LCD 沈阳理工大学课程设计报告 4 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 功能简介 开机的时候先检测 SD 卡是否存在,然后初始化 FAT 文件系统,在这之后开始查 找根目录下的 PICTURE 文件夹,如果找到则显示该文件夹下面的图片,循环显示,通 过按 KEY0 和 KEY1 可以快速浏览下一张和上一张。如果未找到图片文件夹/图片,则 提示错误。同样我们也是用 LED0 来指示程序正在运行。 所要用到的硬件资源如下: 1)STM32。 2)外部 LED0。 3)TFTLCD 液晶模块。 4)KEY0,KEY1。 5)SD 卡。 沈阳理工大学课程设计报告 5 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 原理图 沈阳理工大学课程设计报告 6 其中 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 的上拉电阻来提供上拉。 沈阳理工大学课程设计报告 7 WK_UP 按键连接到 PA0(STM32 的 WKUP 引脚),它除了可以用作普通输入按键外, 还可以用作 STM32 的唤醒输入。这个按键是高电平触发的。 5、 SD 卡 图 3.5 SD 卡部分原理图 插入 SD 卡可以外扩大容量存储设备,可以用来记录数据。 SD 卡我们使用的是 SPI 模式通信,SD 卡的 SPI 接口连接到 STM32 的 SPI1 上, SD_CS 接在 PA3 上。 3.2 软件设计 图片显示系统需要有 STM32 开发板配合 SD 卡使用,因此其程序需要分为以下几 个文件夹,硬件组成文件 HARDWARE 系统文,可以用来显示汉字的 TEXT 文件,用 来识别图片的 JPEG 文件用来读取 SD 卡上的图片文件的 FAT 文件以及存放主程序文 件 USER 文件件,和 STM32 的系统文件 SYSFILE。 沈阳理工大学课程设计报告 8 3.2.1 主函数部分 int main(void) u8 i; u8 key; FileInfoStruct *FileInfo; u16 pic_cnt=0; u16 index=0; u16 time=0; Stm32_Clock_Init(9); delay_init(72); uart_init(72,9600); LCD_Init(); KEY_Init(); LED_Init(); SPI_Flash_Init(); if(Font_Init() POINT_COLOR=RED; LCD_ShowString(60,50,Mini STM32); LCD_ShowString(60,70,Font ERROR); while(1); while(SysInfoGet(1) FAT_Init(); SD_Initialize(); LED0=!LED0; LCD_Fill(60,130,240,170,WHITE); delay_ms(500); Cur_Dir_Cluster=PICCLUSTER; while(1) pic_cnt=0; Get_File_Info(Cur_Dir_Cluster, FileInfo,T_JPEG|T_JPG|T_BMP, if(pic_cnt=0) LCD_Clear(WHITE); while(1) if(time%2=0) else LCD_Clear(WHITE); time+; delay_ms(300); 沈阳理工大学课程设计报告 9 FileInfo=. index=1; while(1) Get_File_Info(Cur_Dir_Cluster, FileInfo,T_JPEG|T_JPG|T_BMP, LCD_Clear(WHITE); AI_LoadPicFile(FileInfo,0,0,240,320); POINT_COLOR=RED; Show_Str(0,0,FileInfo-F_Name,16,1); while(1) key=KEY_Scan(); if(key=1) break; else if(key=2) if(index1)index-=2; else index=pic_cnt-1; break; delay_ms(1); time+; if(time%100=0) LED0=!LED0; if(time3000) time=0; break; index+; if(indexpic_cnt) index=1; 3.2.2 硬件部分程序 void KEY_Init(void) / 键盘相应程序 RCC-APB2ENR|=1CRL|=0X; GPIOA-CRH GPIOA-CRH|=0X; GPIOA-ODR|=1ODR|=1APB2ENR|=1APB2ENR|=1CRH|=0X; GPIOA-ODR|=1CRL|=0X; GPIOD-ODR|=1APB2ENR|=1APB2ENR|=1CRL|=0XBBB00000; 沈阳理工大学课程设计报告 11 GPIOA-ODR|=0X7CR1|=0CR1|=1CR1|=1CR1|=1CR1|=0CR1|=1CR1|=1CR1|=7CR1|=0CR1|=1CR1|=0CR1|=1CR1|=2CR1|=3CR1|=7CR1|=1DR=TxData; retry=0; while(SPI1-SR return SPI1-DR; 3.2.3 识别图片 FileInfoStruct *CurFile; /当前解码/操作的文件 void AI_Drow_Init(void) float temp,temp1; 沈阳理工大学课程设计报告 12 temp = (float)PICINFO.S_Width/PICINFO.ImgWidth; temp1 = (float)PICINFO.S_Height/PICINFO.ImgHeight; if(temp1)temp1=1; /使图片处于所给区域的中间 PICINFO.S_XOFF+=(PICINFO.S_Width-temp1*PICINFO.ImgWidth)/2; PICINFO.S_YOFF+=(PICINFO.S_Height-temp1*PICINFO.ImgHeight)/2; temp1*=10000; /扩大 10000 倍 PICINFO.Div_Fac=temp1; PICINFO.staticx=500; PICINFO.staticy=500; /放到一个不可能的值上面 /初始化量化表,全部清零 void InitTable(void) short i,j; sizei=sizej=0; PICINFO.ImgWidth=PICINFO.ImgHeight=0; rrun=vvalue=0; BitPos=0; CurByte=0; IntervalFlag=FALSE; restart=0; for(i=0;i3;i+) /量化表 for(j=0;j64;j+) qt_tableij=0; comp_num=0; HufTabIndex=0; /将解出的字按 RGB 形式存储 void StoreBuffer(void) short i=0,j=0; unsigned char R,G,B; int y,u,v,rr,gg,bb; u16 color; u16 realx=sizej; u16 realy=0; for(i=0;iSampRate_Y_V*8;i+) if(sizei+i)PICINFO.ImgHeight) realy=PICINFO.Div_Fac*(sizei+i)/10000; if (!IsElementOk(realx,realy,0) continue; for (j=0;jSampRate_Y_H*8;j+) 沈阳理工大学课程设计报告 13 if(sizej+j)PICINFO.ImgWidth) realx=PICINFO.Div_Fac*(sizej+j)/10000; if (!IsElementOk(realx,realy,1) continue; y=Yi*8*SampRate_Y_H+j; u=U(i/V_YtoU)*8*SampRate_Y_H+j/H_YtoU; v=V(i/V_YtoV)*8*SampRate_Y_H+j/H_YtoV; rr=(y8; gg=(y8; bb=(y8; R=(unsigned char)rr; G=(unsigned char)gg; B=(unsigned char)bb; if (rr else if (rr255) G=255; else if (gg255) B=255; else if (bb3; color=color2); color=color3); POINT_COLOR=color; LCD_DrawPoint(realx+PICINFO.S_XOFF,realy+PICINFO.S_YOFF); else break; else break; void IQtIZzMCUComponent(short flag) short H,VV; short i,j; short *pQtZzMCUBuffer; short *pMCUBuffer; switch(flag) case 0: H=SampRate_Y_H; VV=SampRate_Y_V; pMCUBuffer=MCUBuffer; pQtZzMCUBuffer=QtZzMCUBuffer; break; case 1: H=SampRate_U_H; 沈阳理工大学课程设计报告 14 VV=SampRate_U_V; pMCUBuffer=MCUBuffer+Y_in_MCU*64; pQtZzMCUBuffer=QtZzMCUBuffer+Y_in_MCU*64; break; case 2: H=SampRate_V_H; VV=SampRate_V_V; pMCUBuffer = MCUBuffer + (Y_in_MCU+U_in_MCU)*64; pQtZzMCUBuffer = QtZzMCUBuffer + (Y_in_MCU+U_in_MCU)*64; break; for (i=0;iVV;i+) for (j=0;jH;j+) IQtIZzBlock(pMCUBuffer+(i*H+j)*64, pQtZzMCUBuffer+(i*H+j)*64,flag); 3.2.4 FAT 系统 DWORD FirstDirClust; DWORD FirstDataSector; WORD BytesPerSector; DWORD FATsectors; WORD SectorsPerClust; DWORD FirstFATSector; DWORD FirstDirSector; fat32 DWORD RootDirSectors; DWORD RootDirCount; BYTE FAT32_Enable; DWORD Cur_Dir_Cluster; FAT_TABLE FAT_TAB; FileInfoStruct F_Info3; u8 fat_buffer512; u8 LongNameBufferMAX_LONG_NAME_SIZE;BOOL LongNameFlag = 0; const unsigned char *filetype23= MP1,MP2,MP3,MP4,M4A,3GP,3G2,OGG,ACC,WMA,WAV, MID,FLA, LRC,TXT,C ,H , ,FON,SYS,BMP,JPG,JPE ; 沈阳理工大学课程设计报告 15 3.2.5 程序流程图 Y N 系统初始化 插入 SD 卡 结束 否读取数据 在 LCD 上显 示图片及信息 跳到上一幅或 下一幅图片 3s 后自动跳 转到下一幅 有键按下? 开始 图 3.6 程序流程图 沈阳理工大学课程设计报告 16 4 实验结果及分析 4.1 硬件实验结果 图 4.1 初始化显示屏 图 4.2 显示图片 4.2 结果分析 接通电源后,正确的读取 SD 卡信息后,LCD 液晶显示屏上显示实验题目及制作成 员等基本信息。随后自动跳转到图片显示模式。不对实验板进行操作时,每 3 秒会跳 转到下一张图片,显示图片及相应的图片信息,由于图片的大小及像素不同,刷新显 示的速度也有所不同,图片显示完毕后会伴随 LED 小灯闪烁。 当按下 WK_UP 键,可显 示上一张图片;按下 key1 键,显示下一张图片。按下 key0 可对 SD 卡进行更新。图片 设定为循环演

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论