109 lines
4.1 KiB
C
Raw Permalink Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

#ifndef __GBK_LibDrive_H__
#define __GBK_LibDrive_H__
#include "sys.h"
#include "lcd.h" //加入关联头文件
#include "delay.h"
#include "string.h"
#include "usart.h"
//////////////////////////////////////////////////////////////////////////////////
//汉字显示 驱动代码
//DevEBox 大越创新
//淘宝店铺mcudev.taobao.com
//淘宝店铺shop389957290.taobao.com
//////////////////////////////////////////////////////////////////////////////////
#define FontRead_CMD 0x03//接口读取字库--命令字
#define Used_FontIO 0 //如果是独立驱动的字库接口IO则使用独立的接口驱动
#if Used_FontIO
#define FCS_SET GPIO_SetBits(GPIOC,GPIO_Pin_13) //片选对应
#define FCS_CLR GPIO_ResetBits(GPIOC,GPIO_Pin_13) //片选对应
#define FDI_SET GPIO_SetBits(GPIOF,GPIO_Pin_11) //数据输出
#define FDI_CLR GPIO_ResetBits(GPIOF,GPIO_Pin_11) //数据输出
#define FDO_IN GPIO_ReadInputDataBit(GPIOB,GPIO_Pin_2) //数据输入
#define FCLK_SET GPIO_SetBits(GPIOB,GPIO_Pin_0) //数据时钟线
#define FCLK_CLR GPIO_ResetBits(GPIOB,GPIO_Pin_0) //数据时钟线
#define FCS_SET GPIO_SetBits(GPIOB,GPIO_Pin_12) //片选信号 PB12
#define FCS_CLR GPIO_ResetBits(GPIOB,GPIO_Pin_12) //片选信号 PB12
#define Font_CS_EN FCS_SET; GBK_delay(5); //片选信号 --使能
#define Font_CS_SN FCS_CLR; GBK_delay(5); //片选信号 --失能
#else
#define FCS_SET HAL_GPIO_WritePin(GPIOB,GPIO_PIN_12,GPIO_PIN_SET) //PB12置1 LCD_CS PB12 //片选
#define FCS_CLR HAL_GPIO_WritePin(GPIOB,GPIO_PIN_12,GPIO_PIN_RESET) //PB12置0/CS LCD_CS PB12 //片选
#define Font_CS_EN FCS_SET; GBK_delay(5); //片选信号 --使能
#define Font_CS_SN FCS_CLR; GBK_delay(5); //片选信号 --失能
#define Font_SPI_WR SPI2_ReadWriteByte
#endif
//汉字字库存储偏移位置
#define ASCII6x12_ST 0x00080000
#define ASCII8x16_ST 0x00080800
#define ASCII12x24_ST 0x00081200
#define ASCII16x32_ST 0x00082600
#define ASCII24x48_ST 0x00084800
#define ASCII32x64_ST 0x00089200
#define GBK12x12_ST 0x00091400
#define GBK16x16_ST 0x0011DD00
#define GBK24x24_ST 0x001DA000
#define GBK32x32_ST 0x00380000
void GBK_Lib_Init(void);//初始化引脚接口
void FontLib_Read(u8* pBuffer,u32 ReadAddr,u16 Num_Read);//字库读写接口函数
void GBK_ReadID(void);//读字库ID
void GBK_delay(unsigned char Time);//延时函数
void GBK_GetASC_Point(uint8_t *code, uint8_t *Pdot, uint8_t Font, uint16_t Num); // 获取点阵ASCII点阵字符
void GBK_ShowASCII(uint16_t x, uint16_t y, uint8_t *N_Word, uint8_t size, uint16_t D_Color, uint16_t B_Color, uint8_t mode); // 在指定位置显示ASCII码 字符--点阵字符
void GBK_Lib_GetHz(uint8_t *code, uint8_t *Pdot, uint8_t Font, uint16_t Num); //得到汉字的点阵码
void GBK_Show_Font(uint16_t x, uint16_t y, uint8_t *font, uint8_t size, uint16_t D_Color, uint16_t B_Color, uint8_t mode); //在指定位置显示一个汉字
void GBK_Show_Str(uint16_t x, uint16_t y, uint16_t width, uint16_t height, uint8_t *str, uint8_t size, uint16_t D_Color, uint16_t B_Color, uint8_t mode); //在指定位置显示一个字符串
void GBK_Show_StrMid(uint16_t x,uint16_t y, uint8_t size, uint8_t len, uint16_t D_Color, uint16_t B_Color,uint8_t*str); //在指定宽度的中间显示字符串
void DrawFont_GBK12B(u16 x,u16 y, u16 color, u8*str);//在指定位置开始显示一个12x12点阵的--字符串,支持自动换行(至屏幕一行的终点后自动换到下一个x起点位置)
void DrawFont_GBK16B(u16 x,u16 y, u16 color, u8*str);//在指定位置开始显示一个16x16点阵的--字符串,支持自动换行(至屏幕一行的终点后自动换到下一个x起点位置)
void DrawFont_GBK24B(u16 x,u16 y, u16 color, u8*str);//在指定位置开始显示一个24x24点阵的--字符串,支持自动换行(至屏幕一行的终点后自动换到下一个x起点位置)
void DrawFont_GBK32B(u16 x,u16 y, u16 color, u8*str);//在指定位置开始显示一个32x32点阵的--字符串,支持自动换行(至屏幕一行的终点后自动换到下一个x起点位置)
void DrawFontASC_GBK48B(u16 x,u16 y, u16 color, u8*str);//在指定位置开始显示一个24x48点阵的--ACSII码
void DrawFontASC_GBK64B(u16 x,u16 y, u16 color, u8*str);//在指定位置开始显示一个32x64点阵的--ACSII码
void GBK_LibFont_Test(void);//GBK字库测试函数
#endif