日本黄色一级经典视频|伊人久久精品视频|亚洲黄色色周成人视频九九九|av免费网址黄色小短片|黄色Av无码亚洲成年人|亚洲1区2区3区无码|真人黄片免费观看|无码一级小说欧美日免费三级|日韩中文字幕91在线看|精品久久久无码中文字幕边打电话

當(dāng)前位置:首頁(yè) > 單片機(jī) > 單片機(jī)
[導(dǎo)讀]下面,瑞生介紹一種方法給大家,只利用一顆FLASH芯片W25Q16即可用你的單片機(jī)把圖片顯示到TFT液晶屏上。原理:W25Q16是一顆FLASH芯片,可以存儲(chǔ)數(shù)據(jù),共2M字節(jié)。把圖片搞成二進(jìn)制bin文件,通過(guò)串口調(diào)試助手把這個(gè)文件

下面,瑞生介紹一種方法給大家,只利用一顆FLASH芯片W25Q16即可用你的單片機(jī)把圖片顯示到TFT液晶屏上。

原理:W25Q16是一顆FLASH芯片,可以存儲(chǔ)數(shù)據(jù),共2M字節(jié)。把圖片搞成二進(jìn)制bin文件,通過(guò)串口調(diào)試助手把這個(gè)文件傳給單片機(jī),單片機(jī)再把接收到的數(shù)據(jù)通過(guò)SPI口傳給W25Q16,這樣圖片就永久的保存下來(lái)了。顯示圖片的時(shí)候,單片機(jī)通過(guò)SPI口讀取W25Q16中的圖片數(shù)據(jù),然后解碼顯示到液晶屏上。

1.把圖片搞成二進(jìn)制bin文件

這里需要用到一個(gè)軟件:Image2LCD(百度可以下載)

打開(kāi)軟件如下圖所示:

點(diǎn)擊左上角“打開(kāi)”,選擇一張圖片打開(kāi),并按照下面圖片顯示的配置

點(diǎn)擊“保存”按鈕,保存到你的電腦某個(gè)位置即可。二進(jìn)制bin文件就做好了。

2.把bin文件裝到W25Q16里面

要把bin文件裝到W25Q16里面,通過(guò)前面講的原理,我們得寫(xiě)個(gè)單片機(jī)程序。程序的流程為:串口接收到一個(gè)字節(jié),把字節(jié)通過(guò)SPI口傳到W25Q16,再接收到一個(gè)字節(jié),再傳一個(gè),如此循環(huán)……。這個(gè)程序簡(jiǎn)單吧?這個(gè)功能最好用串口中斷完成。

下面是串口中斷函數(shù),負(fù)責(zé)接收串口數(shù)據(jù)和把接收到的數(shù)據(jù)寫(xiě)到W25Q16:

voidUART_IRQHandler(void){uint32IRQ_ID;//定義讀取中斷ID號(hào)變量uint8buf[1]={0x00};//定義接收數(shù)據(jù)變量數(shù)組
IRQ_ID=UART->IIR;//讀中斷ID號(hào)IRQ_ID=((IRQ_ID>>1)&0x7);//檢測(cè)bit4:bit1if(IRQ_ID==0x02)//檢測(cè)是不是接收數(shù)據(jù)引起的中斷{buf[0]=UART->RBR;//從RXFIFO中讀取接收到的數(shù)據(jù)W25X16_Write_Page(buf,flash_addr,1);//把數(shù)據(jù)寫(xiě)到W25X16中flash_addr++;}return;}

寫(xiě)好程序以后,連接好單片機(jī)和電腦的串口,打開(kāi)串口調(diào)試助手,選好波特率,選好串口號(hào),然后點(diǎn)擊“選擇發(fā)送文件”按鈕,如下圖所示:

選擇你剛才做好的bin文件,然后點(diǎn)擊“發(fā)送文件”按鈕,顯示“正在發(fā)送”。如下圖:

等上個(gè)幾秒鐘,顯示發(fā)送完成,并顯示發(fā)送了多少個(gè)字節(jié)。如下圖:

為什么是一共發(fā)送了153600個(gè)字節(jié),讓我們來(lái)算一下吧。TFT真彩屏,一個(gè)像素點(diǎn)需要用2個(gè)字節(jié)表示,240*320的屏,就需要240X340X2=153600個(gè)字節(jié)。

這時(shí)候,圖片數(shù)據(jù)就下載完成了。

3.從W25Q16里面讀取圖片數(shù)據(jù)并顯示到TFT上

下面是顯示圖片的關(guān)鍵函數(shù):

voidLCD_ShowPic(uint16xstart,uint16ystart,uint16xend,uint16yend,uint32pic_add){uint32max,i;uint8pic_buf[2];//用于存放一個(gè)點(diǎn)的顏色值
LCD_XYRAM(xstart,ystart,xend,yend);//設(shè)置GRAM坐標(biāo)LCD_WR_REG_DATA(0x0020,xstart);//設(shè)置X坐標(biāo)位置LCD_WR_REG_DATA(0x0021,ystart);//設(shè)置Y坐標(biāo)位置LCD_WR_REG(0x0022);//指向RAM寄存器,準(zhǔn)備寫(xiě)數(shù)據(jù)到RAMW25X16_Write_Enable();//允許寫(xiě)W25X16max=((uint32)(xend-xstart+1)*(uint32)(yend-ystart+1))*2;//得到顯示圖片的數(shù)據(jù)大小
for(i=0;i

調(diào)用這個(gè)函數(shù),就可以顯示圖片了!

4.總結(jié)

接收一個(gè)字節(jié)并存儲(chǔ)到W25Q16中,這個(gè)需要很快的速度,主頻低的單片機(jī)是做不到的。我的實(shí)驗(yàn)中,用到的是ARM Cortex-M0內(nèi)核的單片機(jī)LPC1114。


本站聲明: 本文章由作者或相關(guān)機(jī)構(gòu)授權(quán)發(fā)布,目的在于傳遞更多信息,并不代表本站贊同其觀點(diǎn),本站亦不保證或承諾內(nèi)容真實(shí)性等。需要轉(zhuǎn)載請(qǐng)聯(lián)系該專(zhuān)欄作者,如若文章內(nèi)容侵犯您的權(quán)益,請(qǐng)及時(shí)聯(lián)系本站刪除( 郵箱:macysun@21ic.com )。
換一批
延伸閱讀
關(guān)閉