1、JPEG是最常用的图像文件格式,由一个软件开发联合会组织制定,是一种有损压缩格式,能够将图像压缩在很小的储存空间,图像中重复或不重要的资料会被丢失,因此容易造成图像数据的损伤。尤其是使用过高的压缩比例,将使最终解压缩后恢复的图像质量明显降低,如果追求高品质图像,不宜采用过高压缩比例。但是JPEG 压缩技术十分先进,它用有损压缩方式去除冗余的图像数据,在获得极高的压缩率的同时能展现十分丰富生动的图像,换句话说,就是可以用最少的磁盘空间得到较好的图像品质。 而且JPEG 是一种很灵活的格式,具有调节图像质量的功能,允许用不同的压缩比例对文件进行压缩,支持多种压缩级别,压缩比率通常在10:1 到40
2、:1 之间,压缩比越大,品质就越低;相反地,压缩比越小,品质就越好。当然也可以在图像质量和文件尺寸之间找到平衡点。JPEG格式压缩的主要是高频信息,对色彩的信息保留较好,适合应用于互联网,可减少图像的传输时间,可以支持24bit真彩色,也普遍应用于需要连续色调的图像。2.2 图片显示设计分析在程序方面,采用分块设计的方法,这样既减小了编程难度、使程序易于理解,又能便于添加各项功能。该程序将实现浏览PICTURE 文件夹下的所有图片及其名字,配合SD卡能够实现顺序显示出每一副图片,并每隔3s左右切换一幅图片。具体要实现的目标有:更新内存卡,即图片可进行变换;定时自动跳转下一幅图片;可以通过按键快
3、速跳到下一幅图片;可以通过按键返回到上一幅图片;初始状态显示本次课设的基本信息;可对显示信息的汉字进行自定义。2.3 系统的结构框图 STM322.1 系统结构框图3 详细设计3.1 硬件设计3.1.1 ALIENTEK MiniSTM32 开发板简介ALIENTEK MiniSTM32 开发板是一款迷你型的开发板,小巧而不小气,简约而不简单。它的外观尺寸只有8cm*10cm 大小,板子的设计充分考虑了成本与功能这两个矛盾面,再结合实际使用的经验及STM32的特点,可有可无的选择性价比最高的留下,最终确定了这样的设计。其资源丰富,设计灵活。 特点包括: 1)小巧。整个板子尺寸为8cm*10cm
4、*2cm。 2)灵活。板上除晶振外的所有的IO 口全部引出,特别还有GPIOA 和GPIOB 的IO 口是按顺序引出的,可以极大的方便大家扩展及使用,另外板载独特的一键下载功能,避免了频繁设置B0、B1 带来的麻烦,直接在电脑上一键下载。 3)资源丰富。板载十多种外设及接口,可以充分挖掘STM32 的潜质。 4)质量过硬。沉金PCB+全新优质元器件+定制全铜镀金排针/排座+ 电源TVS 保护,坚若磐石。3.1.2 功能简介开机的时候先检测SD 卡是否存在,然后初始化FAT 文件系统,在这之后开始查找根目录下的PICTURE 文件夹,如果找到则显示该文件夹下面的图片,循环显示,通过按KEY0 和
5、KEY1 可以快速浏览下一张和上一张。如果未找到图片文件夹/图片,则提示错误。同样我们也是用LED0 来指示程序正在运行。 所要用到的硬件资源如下: 1)STM32。 2)外部LED0。 3)TFTLCD 液晶模块。 4)KEY0,KEY1。5)SD 卡。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 按键输入
7、原理图KEY0 和KEY1 用作普通按键输入,分别连接在PA13 和PA15 上,他们都连接在了JTAG相关的引脚上(KEY0 还连接在SWDIO 上),KEY0 和KEY1 还和PS/2 的DAT 和CLK 线共用,他们都通过JTAG 的上拉电阻来提供上拉。WK_UP 按键连接到PA0(STM32 的WKUP 引脚),它除了可以用作普通输入按键外,还可以用作STM32 的唤醒输入。这个按键是高电平触发的。5、 SD 卡图3.5 SD卡部分原理图插入SD 卡可以外扩大容量存储设备,可以用来记录数据。SD 卡我们使用的是SPI 模式通信,SD 卡的SPI 接口连接到STM32 的SPI1 上,S
8、D_CS 接在PA3 上。3.2 软件设计图片显示系统需要有STM32开发板配合SD卡使用,因此其程序需要分为以下几个文件夹,硬件组成文件HARDWARE系统文,可以用来显示汉字的TEXT文件,用来识别图片的JPEG文件用来读取 SD 卡上的图片文件的FAT文件以及存放主程序文件USER文件件,和STM32的系统文件SYSFILE。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_in
9、it(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); Cu
10、r_Dir_Cluster=PICCLUSTER; while(1) pic_cnt=0;Get_File_Info(Cur_Dir_Cluster,FileInfo,T_JPEG|T_JPG|T_BMP,&pic_cnt); if(pic_cnt=0) LCD_Clear(WHITE); while(1) if(time%2=0) else LCD_Clear(WHITE); time+; delay_ms(300); FileInfo=&F_Info0;. index=1; Get_File_Info(Cur_Dir_Cluster,index); LCD_Clear(WHITE); AI
11、_LoadPicFile(FileInfo,0,0,240,320); POINT_COLOR=RED; Show_Str(0,0,FileInfo-F_Name,16,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); if(time%100=0) LED0=! if(time3000) time=0; break; index+; if(indexpic_cnt) index=1; 3.2.2 硬件部分程序void KEY_Init(void) / 键盘相应程序 RCC-APB2ENR|=1CRL&=0XFFFFFFF0;CRL|=0X00000008;CRH&=0X0F0FFFFF;CRH|=0X80800000; ODR|=15;
copyright@ 2008-2022 冰豆网网站版权所有
经营许可证编号:鄂ICP备2022015515号-1