📄 m1_lcd.c
字号:
/*
该文件包括了所有液晶显示相关的函数
*/
#include "main.h"
#include "TCB8000.h"
static LCD_INFO lcd_buf;
static uint16 lcd_color = BLUE; //表示没有显示区域的颜色
static uint16 lcd_bg_color = BLUE; //显示汉字区域的背景色
static uint16 lcd_word_color = GREEN; //显示汉字的颜色
static volatile uint8 bColor; //是否要显示自定义颜色
static volatile STRING_TYPE string_type;
static volatile uint16 Cur_Color = GREEN; //自定义颜色类型
/*******************************************************************************************
** Function name: lcd_clear
** Descriptions : 清空lcd的buffer,所有显示信息回复默认设置
** Input : 无
** Output : 无
*******************************************************************************************/
void lcd_clear()
{
bColor = FALSE;
string_type = STRING16; //默认双字节
lcd_buf.string_cnt = 0;
memset(&lcd_buf, 0, LCD_MAX_ROW * sizeof(LCD_STRING));
//lcd_buf.b_ico = 0;
}
/*******************************************************************************************
** Function name: lcd_setcolor
** Descriptions : 使用自定义颜色显示
** Input : 无
** Output : 无
*******************************************************************************************/
void lcd_setcolor(uint16 color)
{
Cur_Color = color;
bColor = TRUE;
}
/*******************************************************************************************
** Function name: lcd_unsetcolor
** Descriptions : 取消使用自定义颜色显示
** Input : 无
** Output : 无
*******************************************************************************************/
void lcd_unsetcolor()
{
bColor = FALSE;
}
/*******************************************************************************************
** Function name: lcd_setsinglestring
** Descriptions : 之后添加的字符串为8位字符串
** Input : 无
** Output : 无
*******************************************************************************************/
void lcd_setsinglestring()
{
string_type = STRING8;
}
/*******************************************************************************************
** Function name: lcd_unsetsinglestring
** Descriptions : 之后添加的字符串为16位字符串
** Input : 无
** Output : 无
*******************************************************************************************/
void lcd_unsetsinglestring()
{
string_type = STRING16;
}
/*******************************************************************************************
** Function name: lcd_add
** Descriptions : 增加显示的字符串
** Input : data 字符串的地址
x, y 字符串的坐标
** Output : 无
*******************************************************************************************/
void lcd_add(char* data, uint16 x, uint16 y)
{
if (lcd_buf.string_cnt == LCD_MAX_ROW)
return;
strcpy((char*)lcd_buf.data[lcd_buf.string_cnt].buf, data);
lcd_buf.data[lcd_buf.string_cnt].x = x;
lcd_buf.data[lcd_buf.string_cnt].y = y;
lcd_buf.data[lcd_buf.string_cnt].bColor = bColor; //保存当前的颜色信息
lcd_buf.data[lcd_buf.string_cnt].color = Cur_Color;
lcd_buf.data[lcd_buf.string_cnt].stringType = string_type;
lcd_buf.string_cnt++;
}
/*******************************************************************************************
** Function name: show_bmp
** Descriptions : 显示图片
** Input : filename 文件名
buf 保存数据的buf
** Output : 0 显示失败 1 显示成功
*******************************************************************************************/
int show_bmp(char* filename, uint8 * buf)
{
MassDriver mass_driver;
HANDLE USB_Handle;
uint32 count;
uint32 offset;
//uint8 ReadData[160000];
//int i;
void * USBCommand;
offset = 0;
mass_driver.DeID = 0;
mass_driver.LunID = 0;
USBCommand =GetUSBCommand();
if(NULL != find_mass_device(mass_driver.DeID)) // 等待U盘插入
{
OSAddFileDriver(USBCommand, &mass_driver); // 安装文件系统驱动
if(mass_driver.MediumPtr)
{
USB_Handle = OSFileOpen(filename, "RW"); // 创建ReadMe.TXT文件并写入内容
if (USB_Handle != Not_Open_FILE)
{
do
{
OSFileSeek(USB_Handle, offset, SEEK_SET); // 设置地址偏移量
count = OSFileRead(&buf[offset], 500, USB_Handle); // 读取50个字节的数据
offset += count;
}while (!OSFileEof(USB_Handle));
OSFileClose(USB_Handle); // 文件关闭
//必须分2次显示,原因不明
DispBmp(0, 0, GUI_LCM_XMAX, GUI_LCM_YMAX >> 1, buf);
DispBmp(0, GUI_LCM_YMAX >> 1, GUI_LCM_XMAX, GUI_LCM_YMAX >> 1, &buf[GUI_LCM_XMAX*GUI_LCM_YMAX]);
OSRemoveFileDriver(USBCommand, &mass_driver);//操作完成删除驱动
return 1;
}
}
OSRemoveFileDriver(USBCommand, &mass_driver);//操作完成删除驱动
}
return 0;
}
/*******************************************************************************************
** Function name: lcd_init
** Descriptions : 初始化液晶
** Input : 无
** Output : 无
*******************************************************************************************/
extern const unsigned char gImage_1[153600];
void lcd_init()
{
//uint8 c[240];
lcd_clear();
LcdReset();
initLCDM();
}
/*******************************************************************************************
** Function name: lcd_view
** Descriptions : 显示buf中的信息
** Input : bClear 是否要清除当前画面
** Output : 无
*******************************************************************************************/
void lcd_view(uint8 bClear)
{
int i;
if (bClear)
{
ClearScreen(lcd_color); //每次clear之后需要重新设置前景,背景,字体颜色
SetBgColor(lcd_bg_color);
SetFgColor(0x14, lcd_word_color);
}
for (i = 0; i < lcd_buf.string_cnt;i++)
{
if (lcd_buf.data[i].bColor) //设置字体颜色
SetFgColor(0x14, lcd_buf.data[i].color);
else
SetFgColor(0x14, lcd_word_color);
SetCharCoord(lcd_buf.data[i].x, lcd_buf.data[i].y);
if (lcd_buf.data[i].stringType == STRING16) //双字节字符串
Printstr(lcd_buf.data[i].buf);
else
Print(lcd_buf.data[i].buf);
}
}
/*******************************************************************************************
** Function name: lcd_ico
** Descriptions : 显示游标
** Input : x, y 游标的坐标
** Output : 无
*******************************************************************************************/
void lcd_ico(uint16 x, uint16 y)
{
//lcd_buf.b_ico = 1;
use_sprite(x, y);
}
/*******************************************************************************************
** Function name: lcd_set_word_color
** Descriptions : 显示字体颜色
** Input : color 颜色的RGB值
** Output : 无
*******************************************************************************************/
void lcd_set_word_color(uint16 color)
{
lcd_word_color = color;
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -