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

📄 main.c

📁 嵌入式应用很好的资料哦
💻 C
📖 第 1 页 / 共 3 页
字号:
*********************************************************************************************************
** 函数名称 :ST3()
** 函数功能 :判状态位S3子程序(数据自动写状态)
** 入口参数 :LCD_State
** 出口参数 :无
*********************************************************************************************************
*/
void ST3(void)
{
	uint8   LCD_State;
	
	LCD_State = R_ST();
	while((LCD_State & 0x08) != 0x08)
	{
		LCD_State = R_ST();
	}
}
/*
*********************************************************************************************************
** 函数名称 :ST6()
** 函数功能 :判状态位S6子程序(屏读/屏拷贝状态)
** 入口参数 :LCD_State
** 出口参数 :无
*********************************************************************************************************
*/
void ST6(void)
{
	uint8   LCD_State;
	
	LCD_State = R_ST();
	while((LCD_State & 0x40) != 0x40)
	{
		LCD_State = R_ST();
	}
}
/*
*********************************************************************************************************
** 函数名称 :PR14()
** 函数功能 :自动写数据子程序
** 入口参数 :dat 要写入的数据
** 出口参数 :无
*********************************************************************************************************
*/
void PR14(uint8 dat)
{
	ST3();
	IO1DIR = 0xFF070000;       // 恢复P1.24~P1.31为输出口
	IO1CLR = LCD_CD;           // LCD数据写入通道
	IO1CLR = 0xFF000000;
	IO1SET = dat << 24;
	IO1CLR = LCD_WR;
	IO1SET = LCD_WR; 
}
/*
***************************************** ****************************************************************
** 函数名称 :PR13()
** 函数功能 :写数据子程序
** 入口参数 :dat 要写入的数据
** 出口参数 :无
*********************************************************************************************************
*/
void PR13(uint8 dat)
{
	ST01();	
	IO1DIR = 0xFF070000;       // 恢复P1.24~P1.31为输出口
	IO1CLR = LCD_CD;           // LCD数据写入通道
	IO1CLR = 0xFF000000;
	IO1SET = dat << 24;
	IO1CLR = LCD_WR;
	IO1SET = LCD_WR;           // 写入数据(包括第一个和第二个参数数据以及指令代码数据,
	                           // 还有其他各种数据:如计数器值,属性代码数据,显示RAM地址等)
}
/*    
*********************************************************************************************************
** 函数名称 :PR12()
** 函数功能 :写指令代码数据子程序
** 入口参数 :-
** 出口参数 :无
*********************************************************************************************************
*/
void PR12(uint8 cmd)
{
	ST01();
	IO1DIR = 0xFF070000;       // 恢复P1.24~P1.31为输出口
	IO1SET = LCD_CD;           // LCD指令通道
	IO1CLR = 0xFF000000;
	IO1SET = cmd << 24;
	IO1CLR = LCD_WR;
	IO1SET = LCD_WR;           // 写入指令代码数据
}
/*
*********************************************************************************************************
** 函数名称 :PR11()
** 函数功能 :写单字节参数指令及其数据子程序
** 入口参数 :DAT2
** 出口参数 :无
*********************************************************************************************************
*/
void PR11(uint8 dat,uint8 cmd)
{
	PR13(dat);                 // 写入单字节参数指令的参数DAT2
	PR12(cmd);                 // 写入指令代码数据
}
/*
*********************************************************************************************************
** 函数名称 :PR1()
** 函数功能 :写双字节参数指令及其数据子程序
** 入口参数 :DAT1,DAT2
** 出口参数 :无
*********************************************************************************************************
*/
void PR1(uint8 dat_1,uint8 dat_2,uint8 cmd)
{
	PR13(dat_1);               // 写入第一个参数数据DAT1
	PR13(dat_2);               // 写入第二个参数数据DAT2
	PR12(cmd);                 // 写入指令代码数据
}
/*
*********************************************************************************************************
** 函数名称 :INT()
** 函数功能 :初始化设置子程序,主要是对显示区域的设置和显示方式的设置。
** 入口参数 :DAT1,DAT2
** 出口参数 :无
*********************************************************************************************************
*/
void INI(void)
{
	  /*DAT1,DAT2,COM*/  
	PR1(0x00,0x00,0x40);       // 设置文本显示区域首地址
	PR1(0x20,0x00,0x41);       // 设置文本显示区域宽度,即一行显示所占字节数
	PR1(0x00,0x08,0x42);       // 设置图形显示区域首地址(0800H),或为文本属性区域首地址
	PR1(0x20,0x00,0x43);       // 设置图形显示区域宽度,或为文本属性区域宽度,即一行显示所占字节数
	PR12(0xa7);                // 光标形状设置:8*7的格式
	PR12(0x80);                // 显示方式设置逻辑"或"合成
	PR12(0x9c);                // 显示开关设置  开文本和图形显示
}
/*
*********************************************************************************************************
** 函数名称 :CLEAR()
** 函数功能 :清显示存储器子程序,该子程序对显示存储器完全清零,不分显示区域性质。
**            另外该程序也可以作为接口电路及驱动程序的调试使用,将写入的数据不为"0",
**            即可以观察显示效果。
** 入口参数 :DAT1,DAT2
** 出口参数 :无
*********************************************************************************************************
*/
void CLEAR(void)
{
	uint8 i,j;
	uint8 a=00;                //清屏时写入0连续写入即可,改变此值,可以用来调试驱动程序
		
	PR1(0x00,0x08,0x24);       // 设置清零首地址
	PR12(0xb0);                // 设置自动写方式
	
	for(i=0;i<16;i++)
	{
		for(j=0;j<20;j++)
		{
			PR13(a);
		}
	}
	PR12(0xb2);                // 设置自动写结束指令
}
// *********************************************** */
// 此表为图形显示方式下(自定义字符,包括汉字)的字模 */
uint8 const CCTAB[] = {
	
0x21,0xF8,0x21,0x08,0x21,0xF8,0xF8,0x00,0x23,0xBC,0x22,0xA4,0x2A,0xA4,0x33,0xBC,
0x60,0x40,0xA7,0xFE,0x20,0x60,0x20,0xD0,0x21,0x48,0x22,0x4E,0xAC,0x44,0x40,0x40,/*"操",0*/

0x08,0x80,0x0C,0x80,0x09,0x00,0x13,0xFE,0x12,0x80,0x34,0x88,0x50,0xFC,0x90,0x80,
0x10,0x80,0x10,0x84,0x10,0xFE,0x10,0x80,0x10,0x80,0x10,0x80,0x10,0x80,0x10,0x80,/*"作",1*/

0x40,0x00,0x27,0xF8,0x20,0x90,0x00,0x60,0x07,0xF8,0x04,0x48,0xE7,0xF8,0x24,0x48,
0x24,0x48,0x27,0xF8,0x24,0x48,0x24,0x68,0x24,0x50,0x50,0x00,0x8F,0xFE,0x00,0x00,/*"通",2*/

0x40,0x00,0x27,0xF8,0x31,0x08,0x21,0x08,0x01,0x08,0xF1,0x08,0x17,0xE8,0x11,0x08,
0x11,0x08,0x11,0x08,0x11,0x08,0x11,0x0A,0x15,0x0A,0x19,0x0A,0x11,0x04,0x00,0x00,/*"讯",3*/

0x00,0x00,0x3F,0xF0,0x00,0x10,0x1F,0xF0,0x00,0x10,0xFF,0xFE,0x01,0x10,0x11,0x30,
0x09,0x40,0x05,0x80,0x03,0x40,0x0D,0x30,0x71,0x1C,0x21,0x08,0x05,0x00,0x02,0x00,/*"录",4*/

0x08,0x00,0x0F,0xFC,0x10,0x80,0x10,0x80,0x20,0x80,0x4F,0xF8,0x88,0x80,0x08,0x80,
0x08,0x80,0x08,0x80,0xFF,0xFE,0x00,0x80,0x00,0x80,0x00,0x80,0x00,0x80,0x00,0x80,/*"年",5*/

0x07,0xF0,0x04,0x10,0x04,0x10,0x04,0x10,0x07,0xF0,0x04,0x10,0x04,0x10,0x04,0x10,
0x07,0xF0,0x04,0x10,0x08,0x10,0x08,0x10,0x10,0x10,0x20,0x50,0x40,0x20,0x00,0x00,/*"月",6*/

0x00,0x00,0x1F,0xF0,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x1F,0xF0,0x10,0x10,
0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x1F,0xF0,0x10,0x10,0x00,0x00,0x00,0x00,/*"日",7*/

0x00,0x00,0x1F,0xF8,0x10,0x08,0x1F,0xF8,0x10,0x08,0x1F,0xF8,0x01,0x00,0x11,0x00,
0x1F,0xFC,0x21,0x00,0x21,0x00,0x4F,0xF8,0x01,0x00,0x01,0x00,0x7F,0xFE,0x00,0x00,/*"星",8*/

0x22,0x00,0x22,0x7C,0x7F,0x44,0x22,0x44,0x3E,0x44,0x22,0x7C,0x3E,0x44,0x22,0x44,
0x22,0x44,0xFF,0x7C,0x00,0x44,0x24,0x84,0x22,0x84,0x43,0x14,0x81,0x08,0x00,0x00,/*"期",9*/

0x20,0x00,0x53,0xF4,0x24,0x0C,0x08,0x04,0x08,0x04,0x10,0x00,0x10,0x00,0x10,0x00,
0x10,0x00,0x10,0x00,0x10,0x00,0x08,0x04,0x08,0x04,0x04,0x08,0x03,0xF0,0x00,0x00,/*"℃",10*/

0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x04,0x7F,0xFE,
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,/*"一",11*/

0x00,0x00,0x00,0x10,0x3F,0xF8,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x04,0x7F,0xFE,0x00,0x00,0x00,0x00,0x00,0x00,/*"二",12*/

0x00,0x00,0x00,0x00,0x7F,0xFC,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x3F,0xF8,
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x7F,0xFE,0x00,0x00,0x00,0x00,/*"三",13*/

0x00,0x00,0x7F,0xFC,0x44,0x84,0x44,0x84,0x44,0x84,0x44,0x84,0x44,0x84,0x44,0x84,
0x48,0x84,0x48,0x7C,0x50,0x04,0x60,0x04,0x40,0x04,0x7F,0xFC,0x40,0x04,0x00,0x00,/*"四",14*/

0x00,0x00,0x7F,0xF8,0x02,0x00,0x02,0x00,0x02,0x00,0x02,0x00,0x02,0x20,0x3F,0xF0,
0x04,0x20,0x04,0x20,0x04,0x20,0x04,0x20,0x04,0x24,0xFF,0xFE,0x00,0x00,0x00,0x00,/*"五",15*/

0x04,0x00,0x03,0x00,0x01,0x80,0x01,0x00,0xFF,0xFE,0x00,0x00,0x00,0x00,0x04,0x80,
0x06,0x40,0x04,0x20,0x08,0x10,0x08,0x18,0x10,0x0C,0x20,0x0C,0x40,0x08,0x00,0x00,/*"六",16*/

};
// *********************************************** */
// **
// **
// *********************************************** */
// 此表为图形显示方式下(西文字符:8*16点阵数据)的字模 */
uint8 const CTAB_8_16[] = {

0x00,0x00,0x00,0x18,0x24,0x42,0x42,0x42,0x42,0x42,0x42,0x42,0x24,0x18,0x00,0x00,/*"0",0*/

0x00,0x00,0x00,0x10,0x70,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x7C,0x00,0x00,/*"1",1*/

0x00,0x00,0x00,0x3C,0x42,0x42,0x42,0x04,0x04,0x08,0x10,0x20,0x42,0x7E,0x00,0x00,/*"2",2*/

0x00,0x00,0x00,0x3C,0x42,0x42,0x04,0x18,0x04,0x02,0x02,0x42,0x44,0x38,0x00,0x00,/*"3",3*/

0x00,0x00,0x00,0x04,0x0C,0x14,0x24,0x24,0x44,0x44,0x7E,0x04,0x04,0x1E,0x00,0x00,/*"4",4*/

0x00,0x00,0x00,0x7E,0x40,0x40,0x40,0x58,0x64,0x02,0x02,0x42,0x44,0x38,0x00,0x00,/*"5",5*/

0x00,0x00,0x00,0x1C,0x24,0x40,0x40,0x58,0x64,0x42,0x42,0x42,0x24,0x18,0x00,0x00,/*"6",6*/

0x00,0x00,0x00,0x7E,0x44,0x44,0x08,0x08,0x10,0x10,0x10,0x10,0x10,0x10,0x00,0x00,/*"7",7*/

0x00,0x00,0x00,0x3C,0x42,0x42,0x42,0x24,0x18,0x24,0x42,0x42,0x42,0x3C,0x00,0x00,/*"8",8*/

0x00,0x00,0x00,0x18,0x24,0x42,0x42,0x42,0x26,0x1A,0x02,0x02,0x24,0x38,0x00,0x00,/*"9",9*/

0x00,0x00,0x00,0x00,0x00,0x00,0x18,0x18,0x00,0x00,0x00,0x00,0x18,0x18,0x00,0x00,/*":",10*/

0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x60,0x60,0x00,0x00,/*".",11*/

0x00,0x00,0x20,0x3F,0x22,0x74,0x54,0x54,0x5F,0x64,0x24,0x34,0x34,0x54,0x0C,0x00,/*"好",12*/

0x00,0x00,0x08,0x08,0x08,0x08,0x08,0x08,0x08,0x18,0x14,0x24,0x22,0x42,0x01,0x00,/*"人",13*/

0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xFF,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,/*"一",14*/

0x00,0x00,0x08,0x28,0x48,0x3F,0x48,0x48,0x88,0x3E,0x08,0x08,0x08,0x08,0x7F,0x00,/*"生",15*/

0x00,0x00,0x00,0xFE,0x10,0x52,0x32,0x34,0x14,0xFF,0x10,0x10,0x10,0x10,0x10,0x00,/*"平",16*/

0x00,0x00,0x00,0x08,0x7F,0x51,0x51,0x10,0x7F,0x24,0x24,0x34,0x08,0x16,0x60,0x00,/*"安",17*/

0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,

};
// *********************************************** */
// **
// **
// *********************************************** */
// 此表为图形显示方式下(西文字符:8*8点阵数据)的字模 */
uint8 const CTAB_8_8[]	 ={

0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,

};
/*
*********************************************************************************************************
** 函数名称 :WRI_CC()
** 函数功能 :写入点阵数据子程序**            
** 入口参数 : LCD_X(0-19),LCD_Y(0-127),CODE,dat8_16(其值表示:
**            1表示8*16点阵式数据,2表示16*16点阵数据即汉字写入,3表示8*8点阵数据)
** 出口参数 :无
*********************************************************************************************************
*/
void WRI_CC	(uint8 x,uint8 y,uint8 cod,uint8 dat8_16)
{
	uint8  m;
	uint8  n;
	uint16 i;
	uint16 a;
	
	LCD_X = x;
	LCD_Y = y;
	CODE  = cod;
	n     = dat8_16;

	a = (LCD_Y)*(0x20);        // 计算显示RAM地址
	LCD_X = a + LCD_X;
	a = (a >> 8); 
	LCD_Y = a + 0x08;
	
 	/*  写入汉字,16*16点阵数据  */	
	if(n  == 2)
	{		   	 
		i = CODE * 0x20;
		
		for(m=0;m<16;m++)
		{
			PR1(LCD_X,LCD_Y,0x24);
		
			PR11(CCTAB[i],0xc0);   // 写入左部字模数据
			i++;
			PR11(CCTAB[i],0xc0);   // 写入右部字模数据
			i++;
		
			a = LCD_X + 0x20;
			LCD_X = a;
			a = (a >> 8);
			LCD_Y = LCD_Y + a;
		}
	}
	/*  写入8*16点阵数据  */	
	if(n  == 1)
	{
		i = CODE * 16;

		for(m=0;m<16;m++)
		{

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -