如何使用LCD实现鸿蒙开机页面—教学篇
前言
在前一篇推文已经说明了bin文件的由来,相信大家也掌握这个方法。本推文着重讲解如何实现读取bin文件的数据并在LCD上显示。LCD进行一张一张图片的显示,最终就像视频播放一样。这里我们将会以网上很火的鸿蒙开机视频为源文件,在正点原子的潘多拉开发板LCD上进行播放。
正点原子潘多拉开发板是板载的LCD分辨率是240240的,所以我们取模图片的尺寸也是240240。一张RGB565的图片就需要占用115200字节(112.5KB)的缓存,而芯片自带的SRAM只有128KB,无法在MDK上编译通过的。鸿蒙开机播放视频有比较明显的特点,就是背景黑色,变化的地方基本上是图片的中间部分(中间80行),利用这个特点,我们只需要将每张图片的中间80行进行显示即可。 接下来跟着我的脚步,按步骤实现鸿蒙开机视频播放。
第一步:将harmonyos.bin拷贝进SD卡VIDEO目录下,如下图所示:(注意:这里我们需要记住存放位置,后面工程需要通过路径找到改文件)
第二步:打开潘多拉开发板FATFS例程,以该工程实现效果,直接在main.c中编写如下代码。/* 鸿蒙开机界面设置宏 */
/* 一张RGB565图片占用的缓存大小 */
#define PIC_SIZE 115200
/* LCD显示的起始X坐标 */
#define DISPLAY_START_X 0
/* LCD显示的起始Y坐标 */
#define DISPLAY_START_Y 80
/* LCD宽度分辨率 */
#define LCD_WIDTH 240
/* LCD高度分辨率 */
#define LCD_HEIGHT 80
int sd_play_part_video(const char *path)
{
FIL fd; /* FatFs文件系统对象 */
FRESULT fd_ret; /* FatFs函数返回值,管理出现的错误 */
UINT fd_num; /* 文件成功读写数量 */
int offset; /* 文件位置偏移 */
int file_size; /* 文件大小 */
u8 *pic_buf; /* bin文件的首地址 */
/* 由于内存不够大,所以可以通过观察视频范围 */
pic_buf = mymalloc(SRAM1, LCD_WIDTH * LCD_HEIGHT * 2); /* 只有3/1区域会变化*/
/* 1.打开传进来的Fatfs文件路径: path */
fd_ret = f_open(&fd, path, FA_READ);
if(FR_OK != fd_ret)
return -1;
/* 2.计算这个文件的大小 */
file_size = f_size(&fd);
/* 3.初始化偏移变量为0 */
offset = 0;
/* 4.计算bin文件里一共包含多少张图片,然后不断的给LCD进行显示 */
for(int i = 0 ; i
关注
打赏
热门博文
- 【正点原子STM32连载】第四十三章 摄像头实验 摘自【正点原子】MiniPro STM32H750 开发指南_V1.1
- 【正点原子STM32连载】第四十二章 FLASH模拟EEPROM实验 摘自【正点原子】MiniPro STM32H750 开发指南_V1.1
- 【正点原子STM32连载】第四十章 DHT11数字温湿度传感器 摘自【正点原子】MiniPro STM32H750 开发指南_V1.1
- 【正点原子STM32连载】第三十九章 DS18B20数字温度传感器实验 摘自【正点原子】MiniPro STM32H750 开发指南_V1.1
- 【正点原子STM32连载】 第三十八章 红外遥控实验 摘自【正点原子】MiniPro STM32H750 开发指南_V1.1
- 【正点原子STM32连载】第三十七章 触摸屏实验 摘自【正点原子】MiniPro STM32H750 开发指南_V1.1
- 【正点原子STM32连载】第三十六章 QSPI实验 摘自【正点原子】MiniPro STM32H750 开发指南_V1.1
- 【正点原子STM32连载】第三十五章 IIC实验 摘自【正点原子】MiniPro STM32H750 开发指南_V1.1
- 【正点原子STM32连载】 第三十四章 DAC实验 摘自【正点原子】MiniPro STM32H750 开发指南_V1.1
- 【正点原子STM32连载】 第三十三章 光敏传感器实验 摘自【正点原子】MiniPro STM32H750 开发指南_V1.1