📄 lcd_driver.c
字号:
}
/***************************************************************************************************
** 函数名称: LCD_Init
** 功能描述: LCD模块初始化
** 输入参数: 无
**
** 输出参数: 无
**
** 全局变量: 无
** 调用模块:
**--------------------------------------------------------------------------------------------------
** 作 者: Happy Xu
** 日 期: 2007/11/27
***************************************************************************************************/
void LCD_Init(void)
{
U8 i;
P0Reg.IOCLR.all = 1<<23;
os_dly_wait(5);
P0Reg.IOSET.all = 1<<23;
os_dly_wait(5);
LCM_WrCommand(SystemSet);
for (i = 0; i <8; i++)
{
LCM_WrData(ParaSysTable8[i]);
}
LCM_WrCommand(Scroll);
for (i = 0; i < 10; i++)
{
LCM_WrData(ParaScrTableA[i]);
}
LCM_WrCommand(HdotScr);
LCM_WrData(0);
LCM_WrCommand(Ovlay);
LCM_WrData(0);
}
/***************************************************************************************************
** 函数名称: GUI_FillSCR
** 功能描述: 全屏填充。直接使用数据填充显示缓冲区
** 输入参数: dat 填充的数据
**
** 输出参数: 无
**
** 全局变量: 无
** 调用模块:
**--------------------------------------------------------------------------------------------------
** 作 者: Happy Xu
** 日 期: 2007/11/27
***************************************************************************************************/
void GUI_FillSCR(U8 dat)
{
U16 i;
LCM_WrCommand(CsrDirR); //设定光标向右移动
LCM_WrCommand(CsrW); //设定光标位置
LCM_WrData(0); //显示内存高8位地址值
LCM_WrData(0); //显示内存低8位地址值
LCM_WrCommand(mWrite); //写数据到显示内存
for (i = 0; i < 32768; i++)
{
LCM_WrData(dat); //写显示数据
}
}
/***************************************************************************************************
** 函数名称: LocateXY
** 功能描述: 移动光标到指定值
** 输入参数: 无
**
** 输出参数: 无
**
** 全局变量: 无
** 调用模块:
**--------------------------------------------------------------------------------------------------
** 作 者: Happy Xu
** 日 期: 2007/11/27
***************************************************************************************************/
void LocateXY(U8 x, U8 y) // x <= 40; y <= 240
{
U16 temp;
temp = 40 * (y - 1) + x;
if (temp == 0)
{
temp = 0x3fff;
}
else
{
temp -= 1;
}
LCM_WrCommand(CsrW);
LCM_WrData(temp & 0xff); //显示内存高8位数值
LCM_WrData(temp>>8); //显示内存低8位数值
}
/***************************************************************************************************
** 函数名称: GUI_Initialize
** 功能描述: 初始化GUI,包括初始化显示缓冲区,初始化LCM并清屏
** 输入参数: 无
**
** 输出参数: 无
**
** 全局变量: 无
** 调用模块:
**--------------------------------------------------------------------------------------------------
** 作 者: Happy Xu
** 日 期: 2007/11/27
***************************************************************************************************/
void GUI_Initialize(void)
{
U8 i, j;
U8 load_buffer[1];
U16 num = 0;
LCD_Init();
GUI_FillSCR(0x00);
LCM_WrCommand(DispOn);
LCM_WrData(0x54);
LCM_WrCommand(Ovlay);
LCM_WrData(0x04);
/*
for (i = 15; i < 212; i++)
{
for (j = 0; j < 40; j++)
{
Delay(1000);
WriteByte(LABEL_ADDR + num, gImage_aa[num]);
num++;
}
}
num = 0;
*/
for (i = 15; i < 212; i++)
{
for (j = 0; j < 40; j++)
{
Delay(1000);
LCM_WriteByte(j, i, ReadByte(LABEL_ADDR + num));
num++;
}
}
EEPROM_Read(SAVE_STYLE_ADDR, load_buffer, 1);
if (load_buffer[0] == SAVE_STYLE)
{
WPA_Load();
}
else
{
load_buffer[0] = SAVE_STYLE;
EEPROM_Write(SAVE_STYLE_ADDR, load_buffer, 1);
WPA_Save(WPA_MAX);
}
for (i = 15; i < 212; i++)
{
for (j = 0; j < 40; j++)
{
Delay(2000);
LCM_WriteByte(j, i, 0x00);
num++;
}
}
GUI_RLine(2, 3, 238, LEFT);
GUI_RLine(39, 3, 238, RIGHT);
GUI_HLine(2, 3, 39);
GUI_HLine(2, 238, 39);
GUI_HLine(2, 47, 39);
GUI_PutString16_24(10, 15, "NB350", TRUE);
GUI_PutCN24_24(20, 15, shu4, TRUE);
GUI_PutCN24_24(23, 15, zi4, TRUE);
GUI_PutCN24_24(26, 15, han4, TRUE);
GUI_PutCN24_24(29, 15, ji1, TRUE);
Row_Disp(Y3_ASCII812, FIRSTPAGE_1, FALSE);
Row_Disp(Y7_ASCII812, FIRSTPAGE_2, TRUE);
Row_Disp(Y11_ASCII812,FIRSTPAGE_3, TRUE);
}
/***************************************************************************************************
** 函数名称: GUI_HLine
** 功能描述: 画水平线,根据硬件特点,实现加速
** 输入参数: x0 水平线起点所在列的位置
** y0 水平线起点所在行的位置
** x1 水平线终点所在列的位置
** color 显示颜色(对于黑白色LCM,为0时灭,为1时显示)
** 输出参数: 无
**
** 全局变量: 无
** 调用模块:
**--------------------------------------------------------------------------------------------------
** 作 者: Happy Xu
** 日 期: 2007/11/27
***************************************************************************************************/
void GUI_HLine(U8 x0, U8 y0, U8 x1)
{
U8 bak;
if(x0 > x1) // 对y0、y1大小进行排列,以便画图
{
bak = x1;
x1 = x0;
x0 = bak;
}
do
{
LCM_WriteByte(x0, y0, 0xff);
x0++;
}while(x1 >= x0);
}
/***************************************************************************************************
** 函数名称: GUI_RLine
** 功能描述: 画竖直线
** 输入参数: x0 水平线起点所在列的位置
** y0 水平线起点所在行的位置
** y1 垂直线终点所在行的位置
** color 显示颜色(对于黑白色LCM,为0时灭,为1时显示)
** 输出参数: 无
**
** 全局变量: 无
** 调用模块:
**--------------------------------------------------------------------------------------------------
** 作 者: Happy Xu
** 日 期: 2007/11/27
***************************************************************************************************/
void GUI_RLine(U8 x0, U8 y0, U8 y1, BOOLEAN dir)
{
U8 bak;
if(y0 > y1) // 对x0、x1大小进行排列,以便画图
{
bak = y1;
y1 = y0;
y0 = bak;
}
LCM_WriteByte(x0, y0, 0xff);
y0++;
do
{
if (y1 == y0)
{
LCM_WriteByte(x0, y0, 0xff);
}
else
{
LCM_WriteByte(x0, y0, 0x7f * dir + 1);
}
y0++;
}while(y1 >= y0);
}
/****** End of File (Lcd_driver.c) ******/
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -