大家好,今天给大家带来3.5寸SPI彩屏的移植库(硬件SPI,因为软件SPI刷新率的问题,所不提供软件SPI)
接线图如下:
M61-32S | 3.5寸SPI屏 | VCC | VCC | GND | GND | IO12 | CS | IO26 | RS | IO27 | D/C | IO19 | SDI | IO13 | SCL | IO28 | BL | IO18 | SDO |
库文件介绍
该移植库共包含五个部分,分别是:
- lcd_init.c LCD初始化函数相关源码文件
- lcd_init.h LCD初始化函数头文件
- lcd.c LCD显示相关源码文件
- lcd.h LCD显示相关头文件
- lcdfont.h 字体文件
- pic.h 显示图片相关
- USER_SPI.c SPI相关源码文件
- USER_SPI.h SPI相关头文件
如何使用
1 - 用户需要在CMakeLists.txt引入需要编译的库即可,如下所示(可自定义引入的路径)
- target_sources(app PRIVATE
- USER_SPI.h
- USER_SPI.C
- LCD/lcd_init.c
- LCD/lcd_init.h
- LCD/lcd.c
- LCD/lcd.h
- LCD/lcdfont.h
- LCD/pic.h
- )
复制代码
2- 在main.c 中进行测试,或者手动调用lcd.h中的方法,下图为main.c的代码
- #include "bflb_mtimer.h"
- #include "board.h"
- #include "bflb_gpio.h"
- #include "LCD\lcd_init.h"
- #include "LCD\lcd.h"
- #include "LCD\pic.h"
- int main(void)
- {
- uint8_t i, j;
- float t = 0;
- board_init();
- LCD_Init();
- LCD_Fill(0, 0, LCD_W, LCD_H, WHITE);
- while (1)
- {
- LCD_ShowString(0, 40, "LCD_W:", RED, WHITE, 16, 0);
- LCD_ShowIntNum(48, 40, LCD_W, 3, RED, WHITE, 16);
- LCD_ShowString(80, 40, "LCD_H:", RED, WHITE, 16, 0);
- LCD_ShowIntNum(128, 40, LCD_H, 3, RED, WHITE, 16);
- LCD_ShowString(80, 40, "LCD_H:", RED, WHITE, 16, 0);
- LCD_ShowString(0, 70, "Increaseing Nun:", RED, WHITE, 16, 0);
- LCD_ShowFloatNum1(128, 70, t, 4, RED, WHITE, 16);
- t += 0.11;
- for (j = 0; j < 7; j++)
- {
- for (i = 0; i < 8; i++)
- {
- LCD_ShowPicture(40 * i, 200 + j * 40, 40, 40, gImage_1);
- }
- }
- bflb_mtimer_delay_ms(5000);
- }
- }
复制代码
3- lcd.h lcd显示相关函数定义(我已经加了详细的代码注释)
- #ifndef __LCD_H
- #define __LCD_H
- #include "stdint.h"
- /*********************************************屏幕显示函数开始********************************************/
- /**
- * @brief 在指定区域填充颜色
- *
- * @param xsta 起始坐标 x
- * @param ysta 起始坐标y
- * @param xend 结束坐标x
- * @param yend 结束坐标y
- * @param color 颜色
- */
- void LCD_Fill(uint16_t xsta, uint16_t ysta, uint16_t xend, uint16_t yend, uint32_t color);
- /**
- * @brief 在指定位置画点
- *
- * @param x x坐标
- * @param y y坐标
- * @param color 颜色
- */
- void LCD_DrawPoint(uint16_t x, uint16_t y, uint32_t color);
- /**
- * @brief 在指定位置画一个线段
- *
- * @param x1 起始坐标x
- * @param y1 起始坐标y
- * @param x2 结束坐标x
- * @param y2 结束坐标y
- * @param color 颜色
- */
- void LCD_DrawLine(uint16_t x1, uint16_t y1, uint16_t x2, uint16_t y2, uint32_t color);
- /**
- * @brief 在指定位置画一个矩形
- *
- * @param x1 起始坐标x
- * @param y1 起始坐标y
- * @param x2 结束坐标x
- * @param y2 结束坐标y
- * @param color 颜色
- */
- void LCD_DrawRectangle(uint16_t x1, uint16_t y1, uint16_t x2, uint16_t y2, uint32_t color);
- /**
- * @brief 在指定位置画一个圆
- *
- * @param x0 圆心坐标x
- * @param y0 圆心坐标y
- * @param r 半径
- * @param color 颜色
- */
- void Draw_Circle(uint16_t x0, uint16_t y0, uint8_t r, uint32_t color);
- /**
- * @brief 指定位置显示一个字符
- *
- * @param x x坐标
- * @param y y坐标
- * @param num 要显示的char 字符
- * @param fc 字体颜色
- * @param bc 背景颜色
- * @param sizey 字体大小 16 24 32
- * @param mode 0叠加模式 / 1 不叠加
- */
- void LCD_ShowChar(uint16_t x, uint16_t y, uint8_t num, uint32_t fc, uint32_t bc, uint8_t sizey, uint8_t mode);
- /**
- * @brief 指定位置显示一个字符串
- *
- * @param x x坐标
- * @param y y坐标
- * @param p 要显示的字符串数组指针
- * @param fc 字体颜色
- * @param bc 背景颜色
- * @param sizey 字体大小 16 24 32
- * @param mode 0叠加模式 / 1 不叠加
- */
- void LCD_ShowString(uint16_t x, uint16_t y, const uint8_t *p, uint32_t fc, uint32_t bc, uint8_t sizey, uint8_t mode);
- /**
- * @brief 求幂函数
- *
- * @param m 底数
- * @param n 指数
- * @return uint32_t 结果
- */
- uint32_t mypow(uint8_t m, uint8_t n);
- /**
- * @brief 指定位置显示一个字符串
- *
- * @param x x坐标
- * @param y y坐标
- * @param num 要显示的数字
- * @param len 长度
- * @param fc 字体颜色
- * @param bc 背景颜色
- * @param sizey 字体大小 16 24 32
- */
- void LCD_ShowIntNum(uint16_t x, uint16_t y, uint16_t num, uint8_t len, uint32_t fc, uint32_t bc, uint8_t sizey);
- /**
- * @brief 指定位置显示一个字符串
- *
- * @param x x坐标
- * @param y y坐标
- * @param num 要显示的数字
- * @param len 长度
- * @param fc 字体颜色
- * @param bc 背景颜色
- * @param sizey 字体大小 16 24 32
- */
- void LCD_ShowFloatNum1(uint16_t x, uint16_t y, float num, uint8_t len, uint32_t fc, uint32_t bc, uint8_t sizey);
- /**
- * @brief 显示一张图片在屏幕上
- *
- * @param x x坐标
- * @param y y坐标
- * @param length 长
- * @param width 宽
- * @param pic 图片数组
- */
- void LCD_ShowPicture(uint16_t x, uint16_t y, uint16_t length, uint16_t width, const uint8_t pic[]);
- /*********************************************屏幕显示函数结束***********************************************/
- /*---------------------------------------------------------------------------------------------------------*/
- /*********************************************屏幕显示颜色定义开始********************************************/
- #define WHITE 0xFCFCFC
- #define BLACK 0X000000
- #define RED 0xFC0000
- #define GREEN 0x00FC00
- #define BLUE 0x0000FC
- /*********************************************屏幕显示颜色定义结束********************************************/
- #endif
复制代码
代码如下
SPI_TEST.zip
(20.55 KB, 下载次数: 19)
|
|