⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 m1_lcd.c

📁 拓普微TCB8000中文液晶的驱动程序,并在此基础上完成了显示汉字,游标,图片等功能.
💻 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 + -