版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領
文檔簡介
1、摘 要本文介紹了基于STM32的圖片顯示系統(tǒng)設計?,F如今LCD顯示屏的技術和產業(yè)都取得了長足的發(fā)展,作為重要的現代信息發(fā)布媒體之一,LCD顯示屏在證券交易、金融、交通、體育、廣告等領域被廣泛的應用。基于STM32的LCD顯示可以更好的滿足各種需求,也更便于操作和實現。通電后,復位到初始化狀態(tài)可顯示本次課程設計題目及成員等基本信息,可人為操作對顯示信息的漢字進行自定義大小顏色及字體等等;把要顯示的圖片考入內存卡里,更新內存卡,即圖片可進行變換;自定義定時跳轉下一幅圖片,也可以通過按鍵快速跳到下一幅圖片,或返回上一張圖片。利用TFT-LCD液晶顯示屏顯示的圖片清晰、分辨率高,顯示圖片的效果極好。關
2、鍵詞: STM32; LCD顯示屏; 圖片顯示目 錄1 引言12 總體設計22.1 圖片顯示的基本原理22.2 圖片顯示設計分析22.3 系統(tǒng)的結構框圖33 詳細設計43.1 硬件設計43.1.1 ALIENTEK MiniSTM32開發(fā)板簡介43.1.2 功能簡介43.2 軟件設計73.2.1 主函數部分83.2.2 硬件部分程序93.2.3 識別圖片113.2.4 FAT系統(tǒng)143.2.5 程序流程圖154 實驗結果及分析164.1 硬件實驗結果164.2 結果分析165 結論17參考文獻181 引言進入新世紀LCD顯示屏的技術和產業(yè)都取得了長足的發(fā)展,作為重要的現代信息發(fā)布媒體之一,LC
3、D顯示屏在證券交易、金融、交通、體育、廣告等領域被廣泛的應用。伴隨社會信息化進程的推進,LCD顯示屏技術也在不斷的推陳出新,應用領域愈加廣闊。基于STM32的LCD顯示可以更好的滿足各種需求,也更便于操作和實現。現基于STM32在液晶顯示屏幕上顯示文本及圖形。目前,顯示技術和顯示工業(yè)的發(fā)展迅速。顯示技術是傳遞視覺的信息技術。液晶顯示器件LCD是當今最有發(fā)展前途的一種平板顯示器件,它具有很多獨到的優(yōu)異特性。它具有顯示信息多、易于多彩化、體積小、重量輕、功耗低、壽命長、價格低、無輻射、無污染、接口控制方便等優(yōu)點。BMP是一種與硬件設備無關的圖像文件格式,使用非常廣。它采用位映射存儲格式,除了圖像深
4、度可選以外,不采用其他任何壓縮,因此,BMP 文件所占用的空間很大。而且JPEG 是一種很靈活的格式,具有調節(jié)圖像質量的功能,允許用不同的壓縮比例對文件進行壓縮,支持多種壓縮級別。2 總體設計2.1 圖片顯示的基本原理BMP是一種與硬件設備無關的圖像文件格式,使用非常廣。它采用位映射存儲格式,除了圖像深度可選以外,不采用其他任何壓縮,因此,BMP文件所占用的空間很大。BMP文件的圖像深度可選lbit、4bit、8bit、16bit、24bit 及32bit。BMP 文件存儲數據時,圖像的掃描方式是按從左到右、從下到上的順序。 JPEG是最常用的圖像文件格式,由一個軟件開發(fā)聯合會組織制定,是一種
5、有損壓縮格式,能夠將圖像壓縮在很小的儲存空間,圖像中重復或不重要的資料會被丟失,因此容易造成圖像數據的損傷。尤其是使用過高的壓縮比例,將使最終解壓縮后恢復的圖像質量明顯降低,如果追求高品質圖像,不宜采用過高壓縮比例。但是JPEG 壓縮技術十分先進,它用有損壓縮方式去除冗余的圖像數據,在獲得極高的壓縮率的同時能展現十分豐富生動的圖像,換句話說,就是可以用最少的磁盤空間得到較好的圖像品質。 而且JPEG 是一種很靈活的格式,具有調節(jié)圖像質量的功能,允許用不同的壓縮比例對文件進行壓縮,支持多種壓縮級別,壓縮比率通常在10:1 到40:1 之間,壓縮比越大,品質就越低;相反地,壓縮比越小,品質就越好。
6、當然也可以在圖像質量和文件尺寸之間找到平衡點。JPEG格式壓縮的主要是高頻信息,對色彩的信息保留較好,適合應用于互聯網,可減少圖像的傳輸時間,可以支持24bit真彩色,也普遍應用于需要連續(xù)色調的圖像。2.2 圖片顯示設計分析在程序方面,采用分塊設計的方法,這樣既減小了編程難度、使程序易于理解,又能便于添加各項功能。該程序將實現瀏覽PICTURE 文件夾下的所有圖片及其名字,配合SD卡能夠實現順序顯示出每一副圖片,并每隔3s左右切換一幅圖片。具體要實現的目標有:更新內存卡,即圖片可進行變換;定時自動跳轉下一幅圖片;可以通過按鍵快速跳到下一幅圖片;可以通過按鍵返回到上一幅圖片;初始狀態(tài)顯示本次課設
7、的基本信息;可對顯示信息的漢字進行自定義。2.3 系統(tǒng)的結構框圖存儲圖像SD卡鍵盤按鍵LED提示燈TFTLCDSTM322.1 系統(tǒng)結構框圖3 詳細設計3.1 硬件設計3.1.1 ALIENTEK MiniSTM32 開發(fā)板簡介ALIENTEK MiniSTM32 開發(fā)板是一款迷你型的開發(fā)板,小巧而不小氣,簡約而不簡單。它的外觀尺寸只有8cm*10cm 大小,板子的設計充分考慮了成本與功能這兩個矛盾面,再結合實際使用的經驗及STM32的特點,可有可無的選擇性價比最高的留下,最終確定了這樣的設計。其資源豐富,設計靈活。 特點包括: 1)小巧。整個板子尺寸為8cm*10cm*2cm。 2)靈活。板
8、上除晶振外的所有的IO 口全部引出,特別還有GPIOA 和GPIOB 的IO 口是按順序引出的,可以極大的方便大家擴展及使用,另外板載獨特的一鍵下載功能,避免了頻繁設置B0、B1 帶來的麻煩,直接在電腦上一鍵下載。 3)資源豐富。板載十多種外設及接口,可以充分挖掘STM32 的潛質。 4)質量過硬。沉金PCB+全新優(yōu)質元器件+定制全銅鍍金排針/排座+ 電源TVS 保護,堅若磐石。3.1.2 功能簡介開機的時候先檢測SD 卡是否存在,然后初始化FAT 文件系統(tǒng),在這之后開始查找根目錄下的PICTURE 文件夾,如果找到則顯示該文件夾下面的圖片,循環(huán)顯示,通過按KEY0 和KEY1 可以快速瀏覽下
9、一張和上一張。如果未找到圖片文件夾/圖片,則提示錯誤。同樣我們也是用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原理圖其中PWR 是系統(tǒng)電源指
10、示燈,為藍色。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 和KE
11、Y1 用作普通按鍵輸入,分別連接在PA13 和PA15 上,他們都連接在了JTAG相關的引腳上(KEY0 還連接在SWDIO 上),KEY0 和KEY1 還和PS/2 的DAT 和CLK 線共用,他們都通過JTAG 的上拉電阻來提供上拉。 WK_UP 按鍵連接到PA0(STM32 的WKUP 引腳),它除了可以用作普通輸入按鍵外,還可以用作STM32 的喚醒輸入。這個按鍵是高電平觸發(fā)的。5、 SD 卡圖3.5 SD卡部分原理圖插入SD 卡可以外擴大容量存儲設備,可以用來記錄數據。SD 卡我們使用的是SPI 模式通信,SD 卡的SPI 接口連接到STM32 的SPI1 上,SD_CS 接在PA3
12、 上。3.2 軟件設計圖片顯示系統(tǒng)需要有STM32開發(fā)板配合SD卡使用,因此其程序需要分為以下幾個文件夾,硬件組成文件HARDWARE系統(tǒng)文,可以用來顯示漢字的TEXT文件,用來識別圖片的JPEG文件用來讀取 SD 卡上的圖片文件的FAT文件以及存放主程序文件USER文件件,和STM32的系統(tǒng)文件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_init(72);uart_i
13、nit(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(
14、500); Cur_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; while(1) Get_File_Info(Cur_Dir_Cluster,FileI
15、nfo,T_JPEG|T_JPG|T_BMP,&index); 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(index>1)index-=2;else index=pic_cnt-1;break; delay_ms(1); time+;if(time%100=0) LED0=!LED0;i
16、f(time>3000) time=0; break; index+;if(index>pic_cnt) index=1; 3.2.2 硬件部分程序void KEY_Init(void) / 鍵盤相應程序 RCC->APB2ENR|=1<<2; GPIOA->CRL&=0XFFFFFFF0; GPIOA->CRL|=0X00000008; GPIOA->CRH&=0X0F0FFFFF; GPIOA->CRH|=0X80800000; GPIOA->ODR|=1<<13; GPIOA->ODR|=1&l
17、t;<15; u8 KEY_Scan(void) static u8 key_up=1;JTAG_Set(JTAG_SWD_DISABLE);if (key_up&&(KEY0=0|KEY1=0|KEY2=1) delay_ms(10); key_up=0;if(KEY0=0) JTAG_Set(SWD_ENABLE); return 1; else if(KEY1=0) JTAG_Set(SWD_ENABLE); return 2; else if(KEY2=1) JTAG_Set(SWD_ENABLE); return 3; else if(KEY0=1&&a
18、mp;KEY1=1&&KEY2=0) key_up=1; JTAG_Set(SWD_ENABLE); return 0;void LED_Init(void) / led相應程序 RCC->APB2ENR|=1<<2; RCC->APB2ENR|=1<<5; GPIOA->CRH&=0XFFFFFFF0; GPIOA->CRH|=0X00000003; GPIOA->ODR|=1<<8; GPIOD->CRL&=0XFFFFF0FF;GPIOD->CRL|=0X00000300;GPI
19、OD->ODR|=1<<2; void SPIx_Init(void) /SD卡驅動程序RCC->APB2ENR|=1<<2; RCC->APB2ENR|=1<<12; GPIOA->CRL&=0X000FFFFF; GPIOA->CRL|=0XBBB00000; GPIOA->ODR|=0X7<<5; SPI1->CR1|=0<<10; SPI1->CR1|=1<<9; SPI1->CR1|=1<<8; SPI1->CR1|=1<<
20、;2; SPI1->CR1|=0<<11; SPI1->CR1|=1<<1; SPI1->CR1|=1<<0; SPI1->CR1|=7<<3; SPI1->CR1|=0<<7; SPI1->CR1|=1<<6; SPIx_ReadWriteByte(0xff); void SPIx_SetSpeed(u8 SpeedSet) SPI1->CR1& = 0XFFC7;switch(SpeedSet) case SPI_SPEED_2: SPI1->CR1|=0<
21、<3; break;case SPI_SPEED_4: SPI1->CR1|=1<<3; break;case SPI_SPEED_8: SPI1->CR1|=2<<3; break;case SPI_SPEED_16: SPI1->CR1|=3<<3; break;case SPI_SPEED_256: SPI1->CR1|=7<<3; break; SPI1->CR1|=1<<6; u8 SPIx_ReadWriteByte (u8 TxData)u8 retry=0; while(SPI1-&
22、gt;SR&1<<1)=0) retry+; if(retry>200) return 0; SPI1->DR=TxData; retry=0;while(SPI1->SR&1<<0)=0) retry+;if(retry>200) return 0; return SPI1->DR; 3.2.3 識別圖片FileInfoStruct *CurFile; /當前解碼/操作的文件void AI_Drow_Init(void) float temp,temp1; temp = (float)PICINFO.S_Width/PIC
23、INFO.ImgWidth; temp1 = (float)PICINFO.S_Height/PICINFO.ImgHeight; if(temp<temp1)temp1=temp; /取較小的那個 if(temp1>1)temp1=1; /使圖片處于所給區(qū)域的中間 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_Fa
24、c=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;i<3;i+) /量化表 for(j=0;j<64;j+) qt_tableij=0; comp_num=0; H
25、ufTabIndex=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;i<SampRate_Y_V*8;i+) if(sizei+i)<PICINFO.ImgHeight) realy=PICINFO.Div_Fac*(sizei+i)/10000; if (!IsElementOk(realx,realy,0) continue; for
26、(j=0;j<SampRate_Y_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=(y<<8)+18*u+367*v)>>8; gg=(y<<8)-15
27、9*u-220*v)>>8; bb=(y<<8)+411*u-29*v)>>8; R=(unsigned char)rr; G=(unsigned char)gg; B=(unsigned char)bb; if (rr&0xffffff00) if (rr>255) R=255; else if (rr<0) R=0; if (gg&0xffffff00) if (gg>255) G=255; else if (gg<0) G=0; if (bb&0xffffff00) if (bb>255) B=25
28、5; else if (bb<0) B=0; color=R>>3; color=color<<6; color |=(G>>2); color=color<<5; color |=(B>>3); 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 *p
29、QtZzMCUBuffer; 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=SampR
30、ate_V_V; pMCUBuffer = MCUBuffer + (Y_in_MCU+U_in_MCU)*64; pQtZzMCUBuffer = QtZzMCUBuffer + (Y_in_MCU+U_in_MCU)*64; break; for (i=0;i<VV;i+) for (j=0;j<H;j+)IQtIZzBlock(pMCUBuffer+(i*H+j)*64, pQtZzMCUBuffer+(i*H+j)*64,flag); 3.2.4 FAT系統(tǒng)DWORD FirstDirClust; DWORD FirstDataSector;WORD BytesPerSec
31、tor; DWORD 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 unsig
32、ned char *filetype23= "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系統(tǒng)初始化插入SD卡結束否讀取數據在LCD上顯示圖片及信息跳到上一幅或下一幅圖片3s后自動跳轉到下一幅有鍵按下?開始圖3.6 程序流程圖4 實驗結果及分析4.1 硬件
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯系上傳者。文件的所有權益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經權益所有人同意不得將文件中的內容挪作商業(yè)或盈利用途。
- 5. 人人文庫網僅提供信息存儲空間,僅對用戶上傳內容的表現方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
- 6. 下載文件中如有侵權或不適當內容,請與我們聯系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 人防孔洞防護工程施工方案
- 2025年度企業(yè)員工健康管理與勞動合同續(xù)簽協議書3篇
- 2024年適用房產銷售協議模板版B版
- 2024版房地產開發(fā)項目股權轉讓合同
- 迎中秋慶國慶國旗下講話稿
- 2024年限時導購崗位勞動協議版
- 2025年魯教五四新版八年級物理下冊月考試卷
- 二零二五年商業(yè)地產地板翻新與維護服務合同3篇
- 2024年版:衛(wèi)星遙感數據服務與應用合同
- 南京道路立體綠化施工方案
- 房屋無償使用協議書(8篇)
- 中央銀行理論與實務期末復習題
- 國家開放大學電大本科《國際私法》案例題題庫及答案(b試卷號:1020)
- 喜慶中國節(jié)春節(jié)習俗文化PPT模板
- 測井儀器設計規(guī)范--電子設計
- 北師大版小學五年級上冊數學第六單元《組合圖形的面積》單元測評培優(yōu)試卷
- 用特征方程求數列的通項
- 四年級奧數題(一)找規(guī)律
- 素材庫管理系統(tǒng)架構(共13頁)
- 監(jiān)理平行檢驗記錄表
- 縣領導在新錄用公務員培訓班開班典禮上的講話
評論
0/150
提交評論