基于STM32的圖像顯示系統(tǒng)_第1頁
基于STM32的圖像顯示系統(tǒng)_第2頁
基于STM32的圖像顯示系統(tǒng)_第3頁
基于STM32的圖像顯示系統(tǒng)_第4頁
基于STM32的圖像顯示系統(tǒng)_第5頁
已閱讀5頁,還剩22頁未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報或認(rèn)領(lǐng)

文檔簡介

摘要本文介紹了基于STM32圖片顯示系統(tǒng)設(shè)計?,F(xiàn)如今LCD顯示器技術(shù)和產(chǎn)業(yè)都取得了長足發(fā)展,作為主要當(dāng)代信息公布媒體之一,LCD顯示器在證券交易、金融、交通、體育、廣告等領(lǐng)域被廣泛應(yīng)用?;赟TM32LCD顯示能夠愈加好滿足各種需求,也更便于操作和實現(xiàn)。通電后,復(fù)位到初始化狀態(tài)可顯示此次課程設(shè)計題目及組員等基本信息,可人為操作對顯示信息漢字進(jìn)行自定義大小顏色及字體等等;把要顯示圖片考入內(nèi)存卡里,更新內(nèi)存卡,即圖片可進(jìn)行變換;自定義定時跳轉(zhuǎn)下一幅圖片,也能夠經(jīng)過按鍵快速跳到下一幅圖片,或返回上一張圖片。利用TFT-LCD液晶顯示器顯示圖片清楚、分辨率高,顯示圖片效果極好。關(guān)鍵詞:STM32;LCD顯示器;圖片顯示

目錄267191引言 1227282總體設(shè)計 2229331.1圖片顯示基本原理 2306442.2圖片顯示設(shè)計分析 2306442.3系統(tǒng)結(jié)構(gòu)框圖 3270233詳細(xì)設(shè)計 4293313.1硬件設(shè)計 4286583.1.1ALIENTEKMiniSTM32開發(fā)板介紹 4161923.1.2功效介紹 4306443.2軟件設(shè)計 775303.2.1主函數(shù)部分 8320693.2.2硬件部分程序 9320693.2.3識別圖片 11320693.2.4FAT系統(tǒng) 14320693.2.5程序流程圖 1511954試驗結(jié)果及分析 16275884.1硬件試驗結(jié)果 16102474.2結(jié)果分析 1687755結(jié)論 1715862參考文件 181引言進(jìn)入新世紀(jì)LCD顯示器技術(shù)和產(chǎn)業(yè)都取得了長足發(fā)展,作為主要當(dāng)代信息公布媒體之一,LCD顯示器在證券交易、金融、交通、體育、廣告等領(lǐng)域被廣泛應(yīng)用。伴隨社會信息化進(jìn)程推進(jìn),LCD顯示器技術(shù)也在不停推陳出新,應(yīng)用領(lǐng)域愈加寬廣?;赟TM32LCD顯示能夠愈加好滿足各種需求,也更便于操作和實現(xiàn)?,F(xiàn)基于STM32在液晶顯示器幕上顯示文本及圖形?,F(xiàn)在,顯示技術(shù)和顯示工業(yè)發(fā)展快速。顯示技術(shù)是傳遞視覺信息技術(shù)。液晶顯示器件LCD是當(dāng)今最有發(fā)展前途一個平板顯示器件,它具備很多獨(dú)到優(yōu)異特征。它具備顯示信息多、易于多彩化、體積小、重量輕、功耗低、壽命長、價格低、無輻射、無污染、接口控制方便等優(yōu)點(diǎn)。BMP是一個與硬件設(shè)備無關(guān)圖像文件格式,使用非常廣。它采取位映射存放格式,除了圖像深度可選以外,不采取其余任何壓縮,所以,BMP文件所占用空間很大。而且JPEG是一個很靈活格式,具備調(diào)整圖像質(zhì)量功效,允許用不一樣壓縮百分比對文件進(jìn)行壓縮,支持多個壓縮級別。

2總體設(shè)計2.1圖片顯示基本原理BMP是一個與硬件設(shè)備無關(guān)圖像文件格式,使用非常廣。它采取位映射存放格式,除了圖像深度可選以外,不采取其余任何壓縮,所以,BMP文件所占用空間很大。BMP文件圖像深度可選lbit、4bit、8bit、16bit、24bit及32bit。BMP文件存放數(shù)據(jù)時,圖像掃描方式是按從左到右、從下到上次序。JPEG是最慣用圖像文件格式,由一個軟件開發(fā)聯(lián)合會組織制訂,是一個有損壓縮格式,能夠?qū)D像壓縮在很小儲存空間,圖像中重復(fù)或不主要資料會被丟失,所以輕易造成圖像數(shù)據(jù)損傷。尤其是使用過高壓縮百分比,將使最終解壓縮后恢復(fù)圖像質(zhì)量顯著降低,假如追求高品質(zhì)圖像,不宜采取過高壓縮百分比。不過JPEG壓縮技術(shù)十分先進(jìn),它用有損壓縮方式去除冗余圖像數(shù)據(jù),在取得極高壓縮率同時能展現(xiàn)十分豐富生動圖像,換句話說,就是能夠用最少磁盤空間得到很好圖像品質(zhì)。而且JPEG是一個很靈活格式,具備調(diào)整圖像質(zhì)量功效,允許用不一樣壓縮百分比對文件進(jìn)行壓縮,支持多個壓縮級別,壓縮比率通常在10:1到40:1之間,壓縮比越大,品質(zhì)就越低;相反地,壓縮比越小,品質(zhì)就越好。當(dāng)然也能夠在圖像質(zhì)量和文件尺寸之間找到平衡點(diǎn)。JPEG格式壓縮主要是高頻信息,對色彩信息保留很好,適合應(yīng)用于互聯(lián)網(wǎng),可降低圖像傳輸時間,能夠支持24bit真彩色,也普遍應(yīng)用于需要連續(xù)色調(diào)圖像。2.2圖片顯示設(shè)計分析在程序方面,采取分塊設(shè)計方法,這么既減小了編程難度、使程序易于了解,又能便于添加各項功效。該程序?qū)崿F(xiàn)瀏覽PICTURE文件夾下全部圖片及其名字,配合SD卡能夠?qū)崿F(xiàn)次序顯示出每一副圖片,并每隔3s左右切換一幅圖片。詳細(xì)要實現(xiàn)目標(biāo)有:更新內(nèi)存卡,即圖片可進(jìn)行變換;定時自動跳轉(zhuǎn)下一幅圖片;能夠經(jīng)過按鍵快速跳到下一幅圖片;能夠經(jīng)過按鍵返回到上一幅圖片;初始狀態(tài)顯示此次課設(shè)基本信息;可對顯示信息漢字進(jìn)行自定義。2.3系統(tǒng)結(jié)構(gòu)框圖存放圖像存放圖像SD卡鍵盤按鍵LED提醒燈TFTLCD STM322.1系統(tǒng)結(jié)構(gòu)框圖

3詳細(xì)設(shè)計3.1硬件設(shè)計3.1.1ALIENTEKMiniSTM32開發(fā)板介紹ALIENTEKMiniSTM32開發(fā)板是一款迷你型開發(fā)板,小巧而不小氣,簡約而不簡單。它外觀尺寸只有8cm*10cm大小,板子設(shè)計充分考慮了成本與功效這兩個矛盾面,再結(jié)合實際使用經(jīng)驗及STM32特點(diǎn),可有可無選擇性價比最高留下,最終確定了這么設(shè)計。其資源豐富,設(shè)計靈活。特點(diǎn)包含:1)小巧。整個板子尺寸為8cm*10cm*2cm。2)靈活。板上除晶振外全部IO口全部引出,尤其還有GPIOA和GPIOBIO口是按次序引出,能夠極大方便大家擴(kuò)展及使用,另外板載獨(dú)特一鍵下載功效,防止了頻繁設(shè)置B0、B1帶來麻煩,直接在電腦上一鍵下載。3)資源豐富。板載十多個外設(shè)及接口,能夠充分挖掘STM32潛質(zhì)。4)質(zhì)量過硬。沉金PCB+全新優(yōu)質(zhì)元器件+定制全銅鍍金排針/排座+電源TVS保護(hù),堅若磐石。3.1.2功效介紹開機(jī)時候先檢測SD卡是否存在,然后初始化FAT文件系統(tǒng),在這之后開始查找根目錄下PICTURE文件夾,假如找到則顯示該文件夾下面圖片,循環(huán)顯示,經(jīng)過按KEY0和KEY1能夠快速瀏覽下一張和上一張。假如未找到圖片文件夾/圖片,則提醒錯誤。一樣我們也是用LED0來指示程序正在運(yùn)行。所要用到硬件資源以下:1)STM32。2)外部LED0。3)TFTLCD液晶模塊。4)KEY0,KEY1。5)SD卡。1、STM32簡單介紹圖3.1STM32原理圖選擇STM32F103RBT6作為MCU,原因是其性價比高,128KFLASH、20KSRAM、2個SPI、3個串口、1個USB、1個CAN、2個12位ADC、RTC、51個可用IO腳…,所以我們選擇了它作為我們主芯片。2、外部LED0圖3.2外部LED0原理圖其中PWR是系統(tǒng)電源指示燈,為藍(lán)色。LED0和LED1分別接在PA8和PD2上,PA8還能夠經(jīng)過TIM1通道1PWM輸出來控制DS0亮度。3、TFTLCD液晶模塊圖3.3TFTLCD液晶顯示原理圖TFT_LCD是一個通用液晶模塊接口。OLED是一個給OLED顯示模塊供電接口,它和TFT_LCD拼接在一起。當(dāng)使用2.4’/2.8’LCD時,我們接到TFT_LCD上就能夠了,而當(dāng)我們使用ALIENTEKOLED模塊時,則接OLED排陣做電源,同時會連接到TFT_LCD上部分管腳,從而實現(xiàn)OLED與MCU連接。4、按鍵圖3.4按鍵輸入原理圖KEY0和KEY1用作普通按鍵輸入,分別連接在PA13和PA15上,他們都連接在了JTAG相關(guān)引腳上(KEY0還連接在SWDIO上),KEY0和KEY1還和PS/2DAT和CLK線共用,他們都經(jīng)過JTAG上拉電阻來提供上拉。WK_UP按鍵連接到PA0(STM32WKUP引腳),它除了能夠用作普通輸入按鍵外,還能夠用作STM32喚醒輸入。這個按鍵是高電平觸發(fā)。5、SD卡圖3.5SD卡部分原理圖插入SD卡能夠外擴(kuò)大容量存放設(shè)備,能夠用來統(tǒng)計數(shù)據(jù)。SD卡我們使用是SPI模式通信,SD卡SPI接口連接到STM32SPI1上,SD_CS接在PA3上。3.2軟件設(shè)計圖片顯示系統(tǒng)需要有STM32開發(fā)板配合SD卡使用,所以其程序需要分為以下幾個文件夾,硬件組成文件HARDWARE系統(tǒng)文,能夠用來顯示漢字TEXT文件,用來識別圖片JPEG文件用來讀取SD卡上圖片文件FAT文件以及存放主程序文件USER文件件,和STM32系統(tǒng)文件SYSFILE。3.2.1主函數(shù)部分intmain(void){ u8i;u8key; FileInfoStruct*FileInfo;u16pic_cnt=0;u16index=0;u16time=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,"MiniSTM32"); LCD_ShowString(60,70,"FontERROR"); 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,&pic_cnt);if(pic_cnt==0) {LCD_Clear(WHITE); while(1){ if(time%2==0) elseLCD_Clear(WHITE);time++; delay_ms(300);} } FileInfo=&F_Info[0];. 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_Str(0,0,FileInfo->F_Name,16,1); while(1) {key=KEY_Scan(); if(key==1)break; elseif(key==2) {if(index>1)index-=2; elseindex=pic_cnt-1; break;} delay_ms(1);time++; if(time%100==0)LED0=!LED0; if(time>3000) {time=0;break;}} index++; if(index>pic_cnt)index=1; }}}3.2.2硬件部分程序voidKEY_Init(void)//鍵盤對應(yīng)程序{RCC->APB2ENR|=1<<2; GPIOA->CRL&=0XFFFFFFF0; GPIOA->CRL|=0X00000008; GPIOA->CRH&=0X0F0FFFFF; GPIOA->CRH|=0X80800000; GPIOA->ODR|=1<<13; GPIOA->ODR|=1<<15;}u8KEY_Scan(void){staticu8key_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);return1;} elseif(KEY1==0) {JTAG_Set(SWD_ENABLE);return2;} elseif(KEY2==1) {JTAG_Set(SWD_ENABLE);return3;}}elseif(KEY0==1&&KEY1==1&&KEY2==0)key_up=1; JTAG_Set(SWD_ENABLE);return0;}voidLED_Init(void)//led對應(yīng)程序{RCC->APB2ENR|=1<<2; RCC->APB2ENR|=1<<5; GPIOA->CRH&=0XFFFFFFF0; GPIOA->CRH|=0X00000003; GPIOA->ODR|=1<<8; GPIOD->CRL&=0XFFFFF0FF; GPIOD->CRL|=0X00000300; GPIOD->ODR|=1<<2;}voidSPIx_Init(void)//SD卡驅(qū)動程序{ 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<<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);}voidSPIx_SetSpeed(u8SpeedSet){SPI1->CR1&=0XFFC7; switch(SpeedSet) {caseSPI_SPEED_2: SPI1->CR1|=0<<3; break; caseSPI_SPEED_4:SPI1->CR1|=1<<3;break; caseSPI_SPEED_8: SPI1->CR1|=2<<3;break; caseSPI_SPEED_16:SPI1->CR1|=3<<3;break; caseSPI_SPEED_256:SPI1->CR1|=7<<3;break; } SPI1->CR1|=1<<6;}u8SPIx_ReadWriteByte(u8TxData){ u8retry=0; while((SPI1->SR&1<<1)==0) {retry++;if(retry>200)return0;} SPI1->DR=TxData; retry=0; while((SPI1->SR&1<<0)==0) {retry++; if(retry>200)return0; } returnSPI1->DR;}3.2.3識別圖片F(xiàn)ileInfoStruct*CurFile;//當(dāng)前解碼/操作文件voidAI_Drow_Init(void){floattemp,temp1;temp=(float)PICINFO.S_Width/PICINFO.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;//擴(kuò)大10000倍PICINFO.Div_Fac=temp1;PICINFO.staticx=500;PICINFO.staticy=500;//放到一個不可能值上面}//初始化量化表,全部清零voidInitTable(void){shorti,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_table[i][j]=0;comp_num=0;HufTabIndex=0;}//將解出字按RGB形式存放voidStoreBuffer(void){shorti=0,j=0;unsignedcharR,G,B;inty,u,v,rr,gg,bb;u16color;u16realx=sizej;u16realy=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(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=Y[i*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)-159*u-220*v)>>8;bb=((y<<8)+411*u-29*v)>>8;R=(unsignedchar)rr;G=(unsignedchar)gg;B=(unsignedchar)bb;if(rr&0xffffff00)if(rr>255)R=255;elseif(rr<0)R=0;if(gg&0xffffff00)if(gg>255)G=255;elseif(gg<0)G=0;if(bb&0xffffff00)if(bb>255)B=255;elseif(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);}elsebreak;}}elsebreak;}}voidIQtIZzMCUComponent(shortflag){shortH,VV;shorti,j;short*pQtZzMCUBuffer;short*pMCUBuffer;switch(flag){case0:H=SampRate_Y_H;VV=SampRate_Y_V; pMCUBuffer=MCUBuffer;pQtZzMCUBuffer=QtZzMCUBuffer;break; case1:H=SampRate_U_H;VV=SampRate_U_V; pMCUBuffer=MCUBuffer+Y_in_MCU*64; pQtZzMCUBuffer=QtZzMCUBuffer+Y_in_MCU*64;break; case2: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;i<VV;i++)for(j=0;j<H;j++)IQtIZzBlock(pMCUBuffer+(i*H+j)*64,pQtZzMCUBuffer+(i*H+j)*64,flag);}3.2.4FAT系統(tǒng)DWORDFirstDirClust;DWORDFirstDataSector; WORDBytesPerSector;DWORDFATsectors; WORDSectorsPerClust; DWORDFirstFATSector; DWORDFirstDirSector; fat32DWORDRootDirSectors; DWORDRootDirCount;BYTEFAT32_Enable;DWORDCur_Dir_Cluster;FAT_TABLEFAT_TAB; FileInfoStructF_Info[3];u8fat_buffer[512];u8LongNameBuffer[MAX_LONG_NAME_SIZE];BOOLLongNameFlag=0;constunsignedchar*filetype[23]={"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

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論