基于的STM32地图像的显示系统

上传人:痛*** 文档编号:86562444 上传时间:2022-05-07 格式:DOC 页数:18 大小:478KB
收藏 版权申诉 举报 下载
基于的STM32地图像的显示系统_第1页
第1页 / 共18页
基于的STM32地图像的显示系统_第2页
第2页 / 共18页
基于的STM32地图像的显示系统_第3页
第3页 / 共18页
资源描述:

《基于的STM32地图像的显示系统》由会员分享,可在线阅读,更多相关《基于的STM32地图像的显示系统(18页珍藏版)》请在装配图网上搜索。

1、word摘 要本文介绍了基于STM32的图片显示系统设计。现如今LCD显示屏的技术和产业都取得了长足的开展,作为重要的现代信息发布媒体之一,LCD显示屏在证券交易、金融、交通、体育、广告等领域被广泛的应用。基于STM32的LCD显示可以更好的满足各种需求,也更便于操作和实现。通电后,复位到初始化状态可显示本次课程设计题目与成员等根本信息,可人为操作对显示信息的汉字进展自定义大小颜色与字体等等;把要显示的图片考入内存卡里,更新内存卡,即图片可进展变换;自定义定时跳转下一幅图片,也可以通过按键快速跳到下一幅图片,或返回上一X图片。利用TFT-LCD液晶显示屏显示的图片清晰、分辨率高,显示图片的效果

2、极好。关键词: STM32; LCD显示屏; 图片显示目 录1 引言12 总体设计22.1 图片显示的根本原理22.2 图片显示设计分析22.3 系统的结构框图33 详细设计43.1 硬件设计43.1.1 ALIENTEK MiniSTM32开发板简介43.1.2 功能简介43.2 软件设计73.2.1 主函数局部83.2.2 硬件局部程序93.2.3 识别图片113.2.4 FAT系统143.2.5 程序流程图154 实验结果与分析164.1 硬件实验结果164.2 结果分析165 结论17参考文献1816 / 181 引言进入新世纪LCD显示屏的技术和产业都取得了长足的开展,作为重要的现代

3、信息发布媒体之一,LCD显示屏在证券交易、金融、交通、体育、广告等领域被广泛的应用。伴随社会信息化进程的推进,LCD显示屏技术也在不断的推陈出新,应用领域愈加广阔。基于STM32的LCD显示可以更好的满足各种需求,也更便于操作和实现。现基于STM32在液晶显示屏幕上显示文本与图形。目前,显示技术和显示工业的开展迅速。显示技术是传递视觉的信息技术。液晶显示器件LCD是当今最有开展前途的一种平板显示器件,它具有很多独到的优异特性。它具有显示信息多、易于多彩化、体积小、重量轻、功耗低、寿命长、价格低、无辐射、无污染、接口控制方便等优点。BMP是一种与硬件设备无关的图像文件格式,使用非常广。它采用位映

4、射存储格式,除了图像深度可选以外,不采用其他任何压缩,因此,BMP 文件所占用的空间很大。而且JPEG 是一种很灵活的格式,具有调节图像质量的功能,允许用不同的压缩比例对文件进展压缩,支持多种压缩级别。2 总体设计2.1 图片显示的根本原理BMP是一种与硬件设备无关的图像文件格式,使用非常广。它采用位映射存储格式,除了图像深度可选以外,不采用其他任何压缩,因此,BMP文件所占用的空间很大。BMP文件的图像深度可选lbit、4bit、8bit、16bit、24bit 与32bit。BMP 文件存储数据时,图像的扫描方式是按从左到右、从下到上的顺序。 JPEG是最常用的图像文件格式,由一个软件开发

5、联合会组织制定,是一种有损压缩格式,能够将图像压缩在很小的储存空间,图像中重复或不重要的资料会被丢失,因此容易造成图像数据的损伤。尤其是使用过高的压缩比例,将使最终解压缩后恢复的图像质量明显降低,如果追求高品质图像,不宜采用过高压缩比例。但是JPEG 压缩技术十分先进,它用有损压缩方式去除冗余的图像数据,在获得极高的压缩率的同时能展现十分丰富生动的图像,换句话说,就是可以用最少的磁盘空间得到较好的图像品质。 而且JPEG 是一种很灵活的格式,具有调节图像质量的功能,允许用不同的压缩比例对文件进展压缩,支持多种压缩级别,压缩比率通常在10:1 到40:1 之间,压缩比越大,品质就越低;相反地,压

6、缩比越小,品质就越好。当然也可以在图像质量和文件尺寸之间找到平衡点。JPEG格式压缩的主要是高频信息,对色彩的信息保存较好,适合应用于互联网,可减少图像的传输时间,可以支持24bit真彩色,也普遍应用于需要连续色调的图像。2.2 图片显示设计分析在程序方面,采用分块设计的方法,这样既减小了编程难度、使程序易于理解,又能便于添加各项功能。该程序将实现浏览PICTURE 文件夹下的所有图片与其名字,配合SD卡能够实现顺序显示出每一副图片,并每隔3s左右切换一幅图片。具体要实现的目标有:更新内存卡,即图片可进展变换;定时自动跳转下一幅图片;可以通过按键快速跳到下一幅图片;可以通过按键返回到上一幅图片

7、;初始状态显示本次课设的根本信息;可对显示信息的汉字进展自定义。2.3 系统的结构框图存储图像SD卡键盘按键LED提示灯TFTLCDSTM322.1 系统结构框图3 详细设计3.1 硬件设计3.1.1 ALIENTEK MiniSTM32 开发板简介ALIENTEK MiniSTM32 开发板是一款迷你型的开发板,小巧而不小气,简约而不简单。它的外观尺寸只有8cm*10cm 大小,板子的设计充分考虑了本钱与功能这两个矛盾面,再结合实际使用的经验与STM32的特点,可有可无的选择性价比最高的留下,最终确定了这样的设计。其资源丰富,设计灵活。 特点包括: 1小巧。整个板子尺寸为8cm*10cm*2

8、cm。 2灵活。板上除晶振外的所有的IO 口全部引出,特别还有GPIOA 和GPIOB 的IO 口是按顺序引出的,可以极大的方便大家扩展与使用,另外板载独特的一键下载功能,防止了频繁设置B0、B1 带来的麻烦,直接在电脑上一键下载。 3资源丰富。板载十多种外设与接口,可以充分挖掘STM32 的潜质。 4质量过硬。沉金PCB+全新优质元器件+定制全铜镀金排针/排座+ 电源TVS 保护,坚假如磐石。3.1.2 功能简介开机的时候先检测SD 卡是否存在,然后初始化FAT 文件系统,在这之后开始查找根目录下的PICTURE 文件夹,如果找到如此显示该文件夹下面的图片,循环显示,通过按KEY0 和KEY

9、1 可以快速浏览下一X和上一X。如果未找到图片文件夹/图片,如此提示错误。同样我们也是用LED0 来指示程序正在运行。 所要用到的硬件资源如下: 1STM32。 2外部LED0。 3TFTLCD 液晶模块。 4KEY0,KEY1。 5SD 卡。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 是

10、系统电源指示灯,为蓝色。LED0 和LED1 分别接在PA8 和PD2 上,PA8 还可以通过TIM1 的通道1 的PWM 输出来控制DS0 的亮度。3、 TFTLCD 液晶模块图3.3 TFTLCD 液晶显示原理图的LCD 时,我们接到TFT_LCD 上就可以了,而当我们使用ALIENTEK的OLED 模块时,如此接OLED 排阵做电源,同时会连接到TFT_LCD 上的局部管脚,从而实现OLED 与MCU 的连接。4、 按键图3.4 按键输入原理图KEY0 和KEY1 用作普通按键输入,分别连接在PA13 和PA15 上,他们都连接在了JTAG相关的引脚上KEY0 还连接在SWDIO 上,K

11、EY0 和KEY1 还和PS/2 的DAT 和CLK 线共用,他们都通过JTAG 的上拉电阻来提供上拉。 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

12、系统文,可以用来显示汉字的TEXT文件,用来识别图片的JPEG文件用来读取 SD 卡上的图片文件的FAT文件以与存放主程序文件USER文件件,和STM32的系统文件SYSFILE。3.2.1 主函数局部int main(void)u8 i; u8 key;FileInfoStruct *FileInfo;u16 pic_t=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

13、(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_t=0;Get_File_Info(Cur_Dir_Cluster,FileInfo,T_JPE

14、G|T_JPG|T_BMP,&pic_t); if(pic_t=0) LCD_Clear(WHITE); while(1) if(time%2=0)else LCD_Clear(WHITE); time+;delay_ms(300); FileInfo=&F_Info0;.index=1; while(1) Get_File_Info(Cur_Dir_Cluster,FileInfo,T_JPEG|T_JPG|T_BMP,&index); LCD_Clear(WHITE);AI_LoadPicFile(FileInfo,0,0,240,320);POINT_COLOR=RED; Show_St

15、r(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_t-1;break; delay_ms(1); time+;if(time%100=0) LED0=!LED0;if(time3000) time=0; break; index+;if(indexpic_t) index=1; 3.2.2 硬件局部程序void KEY_Init(void) / 键盘相应程序 RCC-APB2ENR|=1CRL&=0XFFFFFF

16、F0; GPIOA-CRL|=0X00000008; GPIOA-CRH&=0X0F0FFFFF;GPIOA-CRH|=0X80800000; GPIOA-ODR|=1ODR|=1APB2ENR|=1APB2ENR|=1CRH&=0XFFFFFFF0; GPIOA-CRH|=0X00000003; GPIOA-ODR|=1CRL&=0XFFFFF0FF;GPIOD-CRL|=0X00000300;GPIOD-ODR|=1APB2ENR|=1APB2ENR|=1CRL&=0X000FFFFF; GPIOA-CRL|=0XBBB00000;GPIOA-ODR|=0X7CR1|=0CR1|=1CR1

17、|=1CR1|=1CR1|=0CR1|=1CR1|=1CR1|=7CR1|=0CR1|=1CR1& = 0XFFC7;switch(SpeedSet) case SPI_SPEED_2: SPI1-CR1|=0CR1|=1CR1|=2CR1|=3CR1|=7CR1|=1SR&1200) return 0; SPI1-DR=TxData; retry=0;while(SPI1-SR&1200) return 0;return SPI1-DR; 3.2.3 识别图片FileInfoStruct *CurFile; /当前解码/操作的文件void AI_Drow_Init(void) float t

18、emp,temp1; 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_

19、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; p_num=0; HufTabInde

20、x=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_

21、H*8;j+) 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 cha

22、r)bb; if (rr&0xffffff00) if (rr255) R=255; 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 IQtIZzMCUponent(short flag) short H,VV; short i,j; short *pQt

23、ZzMCUBuffer; 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; VV=SampRate_U_V; pMCUBuffer=MCUBuffer+Y_in_MCU*64; pQtZzMCUBuffer=QtZzMCUBuffer+Y_in_MCU*64; break;case 2: H=SampRate_V_H; VV=SampRat

24、e_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

25、 FATsectors;WORD SectorsPerClust; DWORD FirstFATSector;DWORD FirstDirSector;fat32DWORD 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 *f

26、iletype23= MP1,MP2,MP3,MP4,M4A,3GP,3G2,OGG,ACC,WMA,WAV,MID,FLA, LRC,TXT,C ,H , ,FON,SYS,BMP,JPG,JPE ;3.2.5 程序流程图 Y N系统初始化插入SD卡完毕否读取数据在LCD上显示图片与信息跳到上一幅或下一幅图片3s后自动跳转到下一幅有键按下?开始图3.6 程序流程图4 实验结果与分析4.1 硬件实验结果图4.1 初始化显示屏 图4.2 显示图片4.2 结果分析接通电源后,正确的读取SD卡信息后,LCD液晶显示屏上显示实验题目与制作成员等根本信息。随后自动跳转到图片显示模式。不对实验板进展操作时

27、,每3秒会跳转到下一X图片,显示图片与相应的图片信息,由于图片的大小与像素不同,刷新显示的速度也有所不同,图片显示完毕后会伴随LED小灯闪烁。 当按下WK_UP键,可显示上一X图片;按下key1键,显示下一X图片。按下key0可对SD卡进展更新。图片设定为循环演示。假如SD卡没插入或内容不识别,屏幕上会有无法读取的提示。按复位键可重新演示。5 结论在本次设计中,经过不断地调试与改良,最终成功通过对STM32编程将SD卡中的图像信息显示在TFT液晶显示屏上。也感谢教师们为我们提供的STM32开发板,它的功能强大、全面,对于我们以后的学习以与对书面上的知识更好的有了现实的实践。开发板小巧轻便,但接

28、口器件都很全面,位置排版恰当合理,有效的利用了板子上的每一寸空间。性价比极高,资源丰富,运用灵活。当然我们的作品也略有不足。比如说,SD卡中储存的图片图片不能太大,否如此刷新图片的时间过长,影响观看效果。对于图片刷新的时间我们没有进展过多的调整,这是日后想要改良的一点,对图片快速刷新,减少观看者的时间。而且在图片为完全刷新出来时,不可进展上一X、下一X的操作,这点也是我们尚待解决的问题。在现实生活当中,完全有可能出现没刷全图片就知道是不是用户想要看到的,用户可不必须等到自己不需要的图片完全刷出来就进展选择观看其他图片的操作。本次课程设计很好的锻炼了我们的动手能力以与团队合作能力,使我加深了对嵌

29、入式的认识,并且熟悉了嵌入式系统的设计流程,收获丰硕。让我们开阔了视野,同时也增长了见识,在课余时间发挥想象和积极思考,锻炼了自己的思维能力。在修改程序等设计上我们大胆创新,敢于尝试,并且积极搜查资料,认真分析,选择出最优的程序组合,使整个系统能够按照设计要求稳定运行。参考文献1 韦东山. Linux应用开发完全手册.第二版.时代华都印刷某某, 2010:197221.2 龚跃玲,汪玲彦.基于STM32 的图片显示的实现.第3版. 航空航天大学, 2011:32-34.3 马忠梅.基于STM32的显示系统设计.第三版.电子工业, 2013:128-134.4 王磊.STM32不完全手册V2.3.第二版.机械工业, 2014:382-418.5 徐英慧.ARM9嵌入式系统设计.第二版.航空航天大学, 2014:238-245.

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

copyright@ 2023-2025  zhuangpeitu.com 装配图网版权所有   联系电话:18123376007

备案号:ICP2024067431-1 川公网安备51140202000466号


本站为文档C2C交易模式,即用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。装配图网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知装配图网,我们立即给予删除!