生活随笔
收集整理的這篇文章主要介紹了
lcd显示外部flash内的图片
小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.
lcd顯示外部flash內(nèi)的圖片
1、把圖片用 Img2Lcd 轉(zhuǎn)換位數(shù)組,數(shù)組高位在前,低位在后。
2、把生成的文件轉(zhuǎn)為bin文件燒錄到外部flash。
生成的數(shù)組里面前面4個(gè)Byte時(shí)在flash里的地址,5-8大小,9-10是寬,11-12是高。
3、調(diào)用下面函數(shù)顯示燒錄到外部flash的圖片。(在這之前需把底層驅(qū)動(dòng)寫(xiě)好)
例:lcd_show_image(10,20,(void*)dy);
/*************************************************
// x0:
// y0:
// *p_image:數(shù)組
//*************************************************/
void lcd_show_image(uint16_t x0, uint16_t y0, const Image_Info_1 *p_image)
{uint8_t REFLASH_LINE_SZ = read_line_num_case(p_image->width) ;//根據(jù)圖片寬度,動(dòng)態(tài)判定每次讀取行數(shù)uint32_t data_addr = 0; //extern flash image addr offsetuint8_t line_yu = p_image->high%REFLASH_LINE_SZ; //余數(shù)行uint8_t line_zheng = p_image->high/REFLASH_LINE_SZ; //整數(shù)行uint32_t reflash_size = p_image->width*2*REFLASH_LINE_SZ; //一次讀flash的字節(jié)數(shù)for(uint8_t line = 0; line <line_zheng;line++)//整數(shù)行{memset(image_buff,0,reflash_size);data_addr = p_image->start_addr+p_image->width*2*line*REFLASH_LINE_SZ;SPI_Flash_Read_4(data_addr, reflash_size, image_buff );LCD_CS_CLR_1;LCD_DC_COM;oled_set_pos_1(x0, y0+line*REFLASH_LINE_SZ, x0+p_image->width-1, y0+line*REFLASH_LINE_SZ+(REFLASH_LINE_SZ-1)); LCD_CS_SET_1;LCD_DC_DATA;LCD_CS_CLR_1;spi_write(image_buff, reflash_size);LCD_CS_SET_1;}if(line_yu)//余數(shù)行{data_addr = p_image->start_addr+p_image->width*2*line_zheng*REFLASH_LINE_SZ;SPI_Flash_Read_4(data_addr, p_image->width*2*line_yu, image_buff );LCD_CS_CLR_1;LCD_DC_COM;oled_set_pos_1(x0, y0+line_zheng*REFLASH_LINE_SZ, x0+p_image->width-1, y0+line_zheng*REFLASH_LINE_SZ+line_yu-1); LCD_CS_SET_1;LCD_DC_DATA;LCD_CS_CLR_1;spi_write(image_buff, p_image->width*2*line_yu);LCD_CS_SET_1;}
}
總結(jié)
以上是生活随笔為你收集整理的lcd显示外部flash内的图片的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。
如果覺(jué)得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。