Maix Bit(K210) 裸机开发教程(五)LCD显示图片

13 篇文章 22 订阅
9 篇文章 11 订阅

1、代码获取

  在我上一篇博客里面简述了代码如何下载以及使用。https://blog.csdn.net/weixin_45488643/article/details/109990336如有需要自行查看。
选择LCD图片显示:
在这里插入图片描述

2、代码修改

首先自己创建一个新的工程文件,添加代码在这里插入图片描述
安装依赖库文件:
在这里插入图片描述
比较重要的一点,开启控制:
打开board_config.h 我自己使用的是Maix bit 开发板,所以选择如下配置文件,根据需要选择自己的开发板硬件配置。
在这里插入图片描述

3、LCD 显示常用API

3.1、画点函数:

void lcd_draw_point(uint16_t x, uint16_t y, uint16_t color)

x,y 起始坐标;color 要绘制点颜色

3.2 字符绘制:

void lcd_draw_char(uint16_t x, uint16_t y, char c, uint16_t color)

x,y 字符写入起始坐标;color字符颜色;c 需要绘制字符

3.3 字符串绘制:

void lcd_draw_string(uint16_t x, uint16_t y, char *str, uint16_t color)

x,y 字符写入起始坐标;color字符颜色;*str 字符

3.4 清屏函数:

void lcd_clear(uint16_t color)

color 屏幕颜色

3.5 、绘制矩形:

void lcd_draw_rectangle(uint16_t x1, uint16_t y1, uint16_t x2, uint16_t y2, uint16_t width, uint16_t color)

x1,y1,x2,y2矩形框坐标;width绘制线条宽度;color 绘制线条颜色

3.6 、图片绘制:

void lcd_draw_picture(uint16_t x1, uint16_t y1, uint16_t width, uint16_t height, uint32_t *ptr)

x1,y1起始坐标;width,height图片宽度和高度;*ptr 图片数据指针

4、主函数

#include <stdio.h>

#include "board_config.h"
#include "fpioa.h"
#include "image.h"
#include "lcd.h"
#include "nt35310.h"
#include "sysctl.h"
#include "unistd.h"

static void io_set_power(void) {
#if BOARD_LICHEEDAN
  sysctl_set_power_mode(SYSCTL_POWER_BANK6, SYSCTL_POWER_V18);
  sysctl_set_power_mode(SYSCTL_POWER_BANK7, SYSCTL_POWER_V18);
#else
  sysctl_set_power_mode(SYSCTL_POWER_BANK1, SYSCTL_POWER_V18);
#endif
}

static void io_mux_init(void) {
#if BOARD_LICHEEDAN
  fpioa_set_function(38, FUNC_GPIOHS0 + DCX_GPIONUM);
  fpioa_set_function(36, FUNC_SPI0_SS3);
  fpioa_set_function(39, FUNC_SPI0_SCLK);
  fpioa_set_function(37, FUNC_GPIOHS0 + RST_GPIONUM);
  sysctl_set_spi0_dvp_data(1);
#else
  fpioa_set_function(8, FUNC_GPIOHS0 + DCX_GPIONUM);
  fpioa_set_function(6, FUNC_SPI0_SS3);
  fpioa_set_function(7, FUNC_SPI0_SCLK);
  sysctl_set_spi0_dvp_data(1);
#endif
}

int main(void) {
  printf("lcd test\n");
  io_mux_init();
  io_set_power();
  lcd_init();
#if BOARD_LICHEEDAN
  lcd_set_direction(DIR_YX_RLDU); /* left up 0,0 */
#else
  lcd_set_direction(DIR_YX_RLUD); /* left up 0,0 */
#endif
  while (1) {
    lcd_draw_picture(0, 0, 320, 240, rgb_image);
    usleep(1000000);
    printf("show pic\n");
  }
  while (1)
    ;
}

  • 1
    点赞
  • 13
    收藏
    觉得还不错? 一键收藏
  • 2
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值