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

📄 lm3229.c

📁 T6963C 128x128液晶驱动,非常适合学习和使用单片机开发人员用
💻 C
📖 第 1 页 / 共 2 页
字号:
	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 + -