📄 lm3229.c
字号:
cmd = 0x80; //启用内部字符发生器,显示方式是文本与图形与
WriteCommand(cmd);
cmd = 0x9e; //启用光标闪烁,光标不显示,文本显示与图形显示
WriteCommand(cmd);
}
/*********************************************************************************************************
** 函数名称: LCD_Clear
** 功能描述: 清屏
**
** 输 入: 无
**
** 输 出: 无
**
** 全局变量: 无
** 调用模块: void WriteTwoDataOneCmd(UINT8 data1, UINT8 data2, UINT8 cmd)
** void WriteCommand(UINT8 cmd)
** void WriteData(UINT8 dat)
** 说明 : 当data1和data2组合传输一个16位的参数时,data1为低八位,data2为高八位
** 在对系统进行初始化时,有必要先将整个存储器清零.
**-------------------------------------------------------------------------------------------------------
** 修改人:
** 日 期:
**------------------------------------------------------------------------------------------------------
********************************************************************************************************/
void LCD_Clear(void)
{
UINT8 data1,data2,cmd;
UINT16 i;
data1 = 0x00;
data2 = 0x00;
cmd = 0x24; //设置地址指针,字符显示首位置
WriteTwoDataOneCmd(data1,data2,cmd);
cmd = 0xb0; //进入自动写模式
WriteCommand(cmd);
data1 = 0x00;
for (i = 256; i != 0; --i) //字符为8x8 这里写的是128x128 所以共有256个8x8字符单元
{
CheckState(CHECK_3);
WriteData(data1);
}
cmd = 0xb2; //退出自动写模式
WriteCommand(cmd);
}
/*********************************************************************************************************
** 函数名称: ShowEnglish8x8
** 功能描述: 清屏
**
** 输 入: row 取值范围[0 ,15]
** col 取值范围[0 ,15]
** EnStr 英文字符串
** strLength字符串长度 <256
** 输 出: 无
**
** 全局变量: 无
** 调用模块: void WriteTwoDataOneCmd(UINT8 data1, UINT8 data2, UINT8 cmd)
** void WriteCommand(UINT8 cmd)
** void WriteData(UINT8 dat)
** 说明 : 当data1和data2组合传输一个16位的参数时,data1为低八位,data2为高八位
** 在对系统进行初始化时,有必要先将整个存储器清零.
**-------------------------------------------------------------------------------------------------------
** 修改人:
** 日 期:
**------------------------------------------------------------------------------------------------------
********************************************************************************************************/
const UINT8 code str[16] = {0x29,0x00,0x41,0x4d,0x00,0x2c,0x55,0x43,0x4b,0x59,0x01,0x27,0x4f,0x00,0x2f,0x4e};
void ShowEnglish8x8(UINT8 row, UINT8 col, CHAR *EnStr,UINT8 strLength)
{
UINT8 data1,data2,cmd;
UINT8 i;
UINT16 address;
address = row * COLUMN + col;
data1 = address; //取地址低八位
data2 = address>>8; //取地址高八位
cmd = 0x24; //设置地址指针,字符显示首位置
WriteTwoDataOneCmd(data1,data2,cmd);
cmd = 0xb0; //进入自动写模式
WriteCommand(cmd);
for (i = 0; i < strLength; ++i)
{
CheckState(CHECK_3);
WriteData(EnStr[i]);
}
cmd = 0xb2; //退出自动写模式
WriteCommand(cmd);
}
/******************************************************************************************************
** 说明: 此汉字字模排列格式是1-16字节为汉字左半部分自上而下排列的字模数据,右半同理,
**其中一个字节代表一行的8点数据 字模的左边为高位 即是单子节点阵按 D7---D0位排列
*******************************************************************************************************/
#ifndef CN_LENGTH //定义字模库的长度
#define CN_LENGTH 608
#endif
const UINT8 code lqf[] = {
0x00,0x3F,0x20,0x3F,0x29,0x25,0x29,0x23,0x2C,0x31,0x26,0x21,0x46,0x40,0x83,0x0C,
0x88,0xFC,0x00,0x78,0x48,0x28,0xC8,0x60,0x5E,0x84,0x40,0x90,0x20,0xC0,0x00,0x00, //廖" 0x80,0x82,0x81,0x83
0x01,0x00,0x3F,0x20,0x20,0x20,0x3F,0x20,0x20,0x21,0x21,0x22,0x22,0x44,0x88,0x30,
0x00,0x88,0xFC,0x80,0x80,0x88,0xFC,0x80,0x80,0x40,0x40,0x20,0x20,0x10,0x0E,0x04, //庆 0x84,0x86,0x85,0x87
0x02,0x01,0x7F,0x40,0x9F,0x00,0x1F,0x10,0x1F,0x00,0x3F,0x21,0x3F,0x21,0x3F,0x20,
0x00,0x00,0xFE,0x22,0xF4,0x00,0xF0,0x10,0xF0,0x08,0xFC,0x08,0xF8,0x08,0xF8,0x08, //富 0x88,0x8a,0x89,0x8b
0x00,0x00,0x1F,0x10,0x10,0x10,0x10,0x10,0x1F,0x10,0x00,0x04,0x0C,0x10,0x20,0x40,
0x00,0x10,0xF8,0x10,0x10,0x10,0x10,0x10,0xF0,0x10,0x00,0x40,0x20,0x18,0x0C,0x04, //只 0x8c
0x02,0x02,0xFF,0x04,0x04,0x0F,0x08,0x18,0x2F,0x48,0x88,0x0F,0x08,0x08,0x08,0x08,
0x00,0x04,0xFE,0x00,0x10,0xF8,0x10,0x10,0xF0,0x10,0x10,0xF0,0x10,0x10,0x50,0x20, //有
0x10,0x10,0xFE,0x22,0x24,0x64,0x18,0x14,0x62,0x02,0x3F,0x02,0x04,0x04,0x18,0x60,
0x00,0x00,0xFC,0x84,0x48,0x30,0x20,0x50,0x8E,0x04,0xF0,0x10,0x10,0x10,0x50,0x20, //努
0x02,0x02,0x02,0x02,0x7F,0x02,0x02,0x02,0x02,0x02,0x02,0x04,0x04,0x08,0x08,0x70,
0x00,0x00,0x00,0x08,0xFC,0x08,0x08,0x08,0x08,0x08,0x08,0x08,0x08,0x88,0x50,0x20, //力
0x00,0x00,0x00,0x00,0xFF,0x00,0x01,0x01,0x02,0x04,0x08,0x10,0x60,0x00,0x02,0x01,
0x80,0x80,0x80,0x84,0xFE,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x00, //才
0x01,0x01,0x02,0x04,0x08,0x10,0x2F,0xC0,0x00,0x3F,0x02,0x02,0x04,0x08,0x1F,0x00,
0x00,0x00,0x80,0x40,0x20,0x10,0xEE,0x04,0x10,0xF8,0x00,0x00,0x40,0x20,0xF0,0x10, //会
0x02,0x02,0xFF,0x04,0x04,0x0F,0x08,0x18,0x2F,0x48,0x88,0x0F,0x08,0x08,0x08,0x08,
0x00,0x04,0xFE,0x00,0x10,0xF8,0x10,0x10,0xF0,0x10,0x10,0xF0,0x10,0x10,0x50,0x20, //有
0x01,0x01,0x01,0x7F,0x01,0x01,0x01,0xFF,0x03,0x05,0x09,0x11,0x21,0x41,0x01,0x01,
0x00,0x00,0x08,0xFC,0x00,0x00,0x04,0xFE,0x80,0x40,0x20,0x10,0x0E,0x04,0x00,0x00, //未
0x01,0x01,0x01,0x7F,0x01,0x21,0x19,0x09,0xFF,0x03,0x05,0x09,0x31,0xC1,0x01,0x01,
0x00,0x00,0x08,0xFC,0x00,0x10,0x30,0x44,0xFE,0x80,0x40,0x30,0x1E,0x04,0x00,0x00, //来
0xEF,0xEF,0xEF,0xED,0x00,0xED,0xED,0xED,0xED,0xDD,0xDD,0xDD,0xDD,0xB5,0x7B,0xFF,
0xFF,0xFF,0xFB,0x81,0xBB,0xBB,0xBB,0xBB,0xBB,0xBB,0xBB,0xBB,0xBB,0x83,0xBB,0xFF, //加
0xFF,0xBF,0xCF,0xEF,0x78,0x9B,0xDB,0xF3,0xEB,0xD8,0x1B,0xDB,0xDB,0xDB,0xD8,0xDB,
0xBF,0xBF,0xBF,0xBB,0x01,0xBB,0xBB,0xBB,0xBB,0x03,0xBB,0xBB,0xBB,0xBB,0x03,0xFB, //油
0xFF,0xFF,0xFF,0x81,0xE3,0xE3,0xE3,0xE3,0xE3,0xE3,0xE3,0xE3,0xE3,0x80,0xFF,0xFF, //L
0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFC,0xF9,0x01,0xFF,0xFF,
0xFF,0xFF,0xFF,0x83,0xC7,0xC7,0xC7,0xC7,0xC7,0xC7,0xC7,0xC7,0xE3,0xF0,0xFF,0xFF,
0xFF,0xFF,0xFF,0xE1,0xFB,0xFB,0xFB,0xFB,0xFB,0xFB,0xFB,0xFB,0xE7,0x0F,0xFF,0xFF, //U
0xFF,0xFF,0xFF,0xF8,0xE3,0xC7,0x8F,0x8F,0x8F,0x8F,0x8F,0xC7,0xE3,0xF8,0xFF,0xFF,
0xFF,0xFF,0xFF,0x01,0xF9,0xFD,0xFF,0xFF,0xFF,0xFF,0xFD,0xFD,0xF3,0x07,0xFF,0xFF, //C
0xFF,0xFF,0xFF,0x81,0xE7,0xE7,0xE6,0xE4,0xE0,0xE7,0xE7,0xE7,0xE7,0x81,0xFF,0xFF,
0xFF,0xFF,0xFF,0xC1,0xCF,0x9F,0x3F,0x7F,0x3F,0x1F,0x8F,0xC7,0xE3,0xC0,0xFF,0xFF, //K
0xFF,0xFF,0xFF,0x81,0xE3,0xF3,0xF1,0xF8,0xFC,0xFE,0xFE,0xFE,0xFE,0xF0,0xFF,0xFF,
0xFF,0xFF,0xFF,0xC1,0xF7,0xEF,0xCF,0x9F,0x3F,0x3F,0x3F,0x3F,0x3F,0x0F,0xFF,0xFF} ; //Y
/*********************************************************************************************************
** 函数名称: SetCGRAM
** 功能描述: 自定义字模库
**
** 输 入: 无
**
** 输 出: 无
**
** 全局变量: 无
** 调用模块: void WriteTwoDataOneCmd(UINT8 data1, UINT8 data2, UINT8 cmd)
** void WriteCommand(UINT8 cmd)
** void WriteData(UINT8 dat)
** 说明 : (1) T6963C的自定义字符格式为
** 高位7 ---> 低位0 第一个字节
** 高位7 ---> 低位0 第二个字节
** 高位7 ---> 低位0 .........
** 高位7 ---> 低位0 .........
** 高位7 ---> 低位0 .........
** 高位7 ---> 低位0 .........
** 高位7 ---> 低位0 .........
** 高位7 ---> 低位0 .........
** 8个字节构成1个8x8的点阵字符 ,汉字点阵为16x16,由四个自定义8x8
** 字符构成.
** 取字模时,特别要注意一个字节所代表的意义,一个字节代表一行(这里的行为点阵的行)的8点列(列数据
** 也是)(即128x128 有128列128行).有些取字模软件的数据只有从低位开始的,而T6963C是数据要高位开始
** 取的
** (2)指令03H-00H-22H设置字符代码为80H,那么该字符字模组在显示存储器的首地址为1C00H,字模存在
** 1C00H--1C07单元内
**-------------------------------------------------------------------------------------------------------
** 修改人:
** 日 期:
**------------------------------------------------------------------------------------------------------
********************************************************************************************************/
void SetCGRAM(void)
{
UINT8 data1,data2,cmd;
UINT16 i;
data1 = 0x03;
data2 = 0x00;
cmd = 0x22; //设置偏移地址寄存器
WriteTwoDataOneCmd(data1,data2,cmd);
data1 = 0x00;
data2 = 0x1c;
cmd = 0x24; //设置地址指针
WriteTwoDataOneCmd(data1,data2,cmd);
cmd = 0xb0; //进入自动写模式
WriteCommand(cmd);
for (i = 0; i < CN_LENGTH; ++i)
{
CheckState(CHECK_3);
WriteData(lqf[i]);
}
cmd = 0xb2; //退出自动写模式
WriteCommand(cmd);
}
/*********************************************************************************************************
** 函数名称: ShowChinese
** 功能描述: 自定义字模库
**
** 输 入: row 取值范围[0 ,14]
** col 取值范围[0 ,14]
** Chinese 定义一个汉字在字模库的起始位置
** length 由 [Chinese ,length + Chinese) 确定偏移地址的范围
** 输 出: 无
**
** 全局变量: 无
** 调用模块: void WriteTwoDataOneCmd(UINT8 data1, UINT8 data2, UINT8 cmd)
** void WriteCommand(UINT8 cmd)
** void WriteData(UINT8 dat)
** 说明 : col与length 取值的关系为 (16 - col) >= (length / 2)
**-------------------------------------------------------------------------------------------------------
** 修改人:
** 日 期:
**------------------------------------------------------------------------------------------------------
********************************************************************************************************/
void ShowChinese(UINT8 row, UINT8 col, UINT8 Chinese,UINT8 length) // 0x80 0x82 0x84 86
{ // 0x81 0x83 0x85 87
UINT8 data1,data2,cmd;
UINT8 i;
UINT16 address;
/****************先写汉字上半部分*********************************/
address = row * COLUMN + col;
data1 = address; //取地址低八位
data2 = address>>8; //取地址高八位
cmd = 0x24; //设置地址指针,字符显示首位置
WriteTwoDataOneCmd(data1,data2,cmd);
cmd = 0xb0; //进去自动写模式
WriteCommand(cmd);
for (i = 0; i < length; )
{
CheckState(CHECK_3);
WriteData(Chinese + i);
++i;
++i;
}
cmd = 0xb2; //退出自动写模式
WriteCommand(cmd);
/**************** 后写汉字下半部分*********************************/
address = address + COLUMN;
data1 = address; //取地址低八位
data2 = address>>8; //取地址高八位
cmd = 0x24; //设置地址指针,字符显示首位置
WriteTwoDataOneCmd(data1,data2,cmd);
cmd = 0xb0; //进入自动写模式
WriteCommand(cmd);
for (i = 1; i < length; ++i)
{
CheckState(CHECK_3);
WriteData(Chinese + i);
++i;
}
cmd = 0xb2; //退出自动写模式
WriteCommand(cmd);
}
void LineChinese(void)
{
}
UINT8 code liao[] = {0x80,0x82,0x81,0x83};
UINT8 code qing[] = {0x84,0x86,0x85,0x87};
UINT8 code fu[] = {0x88,0x8a,0x89,0x8b};
void main(void)
{
LCD_WR = 1;
LCD_RD = 1;
LCD_Init(); //初始化 LCD
// LCD_Clear();
ShowEnglish8x8(0,0,str,16);
SetCGRAM();
//偏移地址起始地址为0x80
ShowChinese(2,3,0x8c + 44,20); //第三行,第四列显示 LUCKY
ShowChinese(4,4,0x8c,16);
ShowChinese(6,3,0x8c + 16,20);
ShowChinese(8,6,0x8c + 36,8);
// LCD_Clear();
while(1)
{
//
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -