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

📄 st7920driver.c

📁 st7920,串口,lcd st7920,串口,lcd
💻 C
📖 第 1 页 / 共 3 页
字号:
//		RS	RW	DB7	DB6	DB5	DB4	DB3	DB2	DB1	DB0
//		0	0	0	1	AC5	AC4	AC3	AC2	AC1	AC0
//返回参数:无
//使用说明:地址范围为40H~3FH
//*******************************************
void Serial_CGRAM_Address_Set(uchar ucCGramAdd)
{
	Serial_Write_LCD(COMMAND,BASIC_FUNCTION);			//基本指令集
	Serial_Write_LCD(COMMAND,ucCGramAdd);				//设定CGRAM地址到地址计数器AC
}

//*******************************************
//函数名称:void Serial_DDRAM_Address_Set(uchar ucDDramAdd)
//函数功能:设定DDRAM(文本区)地址到地址计数器AC
//形式参数:uchar ucDDramAdd
//行参说明:具体地址
//格式说明:
//		RS	RW	DB7	DB6	DB5	DB4	DB3	DB2	DB1	DB0
//		0	0	1	AC6	AC5	AC4	AC3	AC2	AC1	AC0
//返回参数:无
//使用说明:
//	第一行地址:80H~8FH
//	第二行地址:90H~9FH
//	第三行地址:A0H~AFH
//	第四行地址:B0H~BFH
//*******************************************
void Serial_DDRAM_Address_Set(uchar ucDDramAdd)
{
	Serial_Write_LCD(COMMAND,BASIC_FUNCTION);			//基本指令集
	Serial_Write_LCD(COMMAND,ucDDramAdd);				//设定DDRAM地址到地址计数器AC
}

//*******************************************
//函数名称:void Serial_Standby_Mode(void)
//函数功能:进入待命模式
//形式参数:无
//行参说明:无
//返回参数:无
//使用说明:执行任何指令都会终止待命模式
//格式说明:
//		RS	RW	DB7	DB6	DB5	DB4	DB3	DB2	DB1	DB0
//		0	0	0	0	0	0	0	0	0	1
//*******************************************
void Serial_Standby_Mode(void)
{
	Serial_Write_LCD(COMMAND,EXTEND_FUNCTION);			//扩展指令集
	Serial_Write_LCD(COMMAND,AWAIT_MODE);				//进入待命模式
}

//*******************************************
//函数名称:void Serial_VerticalRoll_IRAM_Address_Select_Set(bit bSelect)
//函数功能:卷动地址或IRAM地址选择
//形式参数:bit bSelect
//行参说明:卷动地址或IRAM地址选择标志位
//返回参数:无
//格式说明:
//		RS	RW	DB7	DB6	DB5	DB4	DB3	DB2	DB1	DB0
//		0	0	0	0	0	0	0	0	1	SR
//		SR:0,允许输入IRAM地址
//		SR:1,允许输入垂直卷动地址
//使用说明:无
//*******************************************
void Serial_VerticalRoll_IRAM_Address_Select_Set(bit bSelect)
{
	Serial_Write_LCD(COMMAND,EXTEND_FUNCTION);				//扩展指令集
	if(bSelect)
	{
		Serial_Write_LCD(COMMAND,ROLLADDRESS_ON);			//允许输入垂直卷动地址
	}
	else
	{
		Serial_Write_LCD(COMMAND,IRAMADDRESS_ON);			//允许输入IRAM地址	
	}
}

//*******************************************
//函数名称:void Serial_AgainstWhite_Set(uchar ucAgWhSet)
//函数功能:反白选择设置
//形式参数:uchar ucAgWhSet
//行参说明:具体指令
//格式说明:
//		RS	RW	DB7	DB6	DB5	DB4	DB3	DB2	DB1	DB0
//		0	0	0	0	0	0	0	1	R1	R0
//		R1,R0:00,第一行反白显示或正常显示
//		R1,R0:01,第二行反白显示或正常显示
//		R1,R0:10,第三行反白显示或正常显示
//		R1,R0:11,第四行反白显示或正常显示
//		当第一次设置时为反白显示,再一次设置时为正常显示
//返回参数:无
//使用说明:无
//*******************************************
void Serial_AgainstWhite_Set(uchar ucAgWhSet)
{
	Serial_Write_LCD(COMMAND,EXTEND_FUNCTION);			//扩展指令集
	Serial_Write_LCD(COMMAND,ucAgWhSet);				//反白选择设置
}

//*******************************************
//函数名称:void Serial_Sleep_Mode(bit bSelect)
//函数功能:进入或离开睡眠模式
//形式参数:bit bSelelect
//行参说明:进入或离开睡眠模式的标志位,1进入,0离开
//格式说明:
//		RS	RW	DB7	DB6	DB5	DB4	DB3	DB2	DB1	DB0
//		0	0	0	0	0	0	1	SL	X	X
//		SL:0,进入睡眠模式
//		SL:1,离开睡眠模式
//返回参数:无
//使用说明:无
//*******************************************
void Serial_Sleep_Mode(bit bSelect)
{
	Serial_Write_LCD(COMMAND,EXTEND_FUNCTION);			//扩展指令集
	if(bSelect)
	{
		Serial_Write_LCD(COMMAND,SLEEP_MODE);			//进入睡眠模式
	}
	else
	{
		Serial_Write_LCD(COMMAND,NO_SLEEP_MODE);		//离开睡眠模式	
	}	
}

//*******************************************
//函数名称:void Serial_Graph_Mode_Set(bit bSelect)
//函数功能:打开或关闭绘图显示
//形式参数:bit bSelect
//行参说明:打开或关闭绘图显示的标志位,1打开,0关闭
//格式说明:
//		RS	RW	DB7	DB6	DB5	DB4	DB3	DB2	DB1	DB0
//		0	0	0	0	1	DL	X	RE	 G	 X
//		DL:0,4bitMPU控制界面
//		DL:1,8bitMPU控制界面
//		RE:0,基本指令集
//		RE:1,扩充指令集
//		G :0,绘图显示OFF
//		G :1,绘图显示ON
//返回参数:无
//使用说明:无
//*******************************************
void Serial_Graph_Mode_Set(bit bSelect)
{
	Serial_Write_LCD(COMMAND,EXTEND_FUNCTION);			//扩展指令集
	if(bSelect)
	{
		Serial_Write_LCD(COMMAND,GRAPH_ON);				//打开绘图模式
	}
	else
	{
		Serial_Write_LCD(COMMAND,GRAPH_OFF);			//关闭绘图模式	
	}
}

//*******************************************
//函数名称:void Serial_VerticalRoll_IRAM_AddressValue_Set(uchar ucAddVal)
//函数功能:设定IRAM地址或卷动地址
//形式参数:uchar ucAddVal
//行参说明:具体的地址值
//格式说明:
//		RS	RW	DB7	DB6	DB5	DB4	DB3	DB2	DB1	DB0
//		0	0	0	1	AC5	AC4	AC3	AC2	AC1	AC0
//		SR=1:AC5~AC0为垂直卷动位址
//		SR=0:AC3~AC0为IRAM位址
//返回参数:无
//使用说明:必须在扩展指令集的情况下使用
//*******************************************
void Serial_VerticalRoll_IRAM_AddressValue_Set(uchar ucAddVal)
{
	Serial_Write_LCD(COMMAND,EXTEND_FUNCTION);			//扩展指令集
	Serial_Write_LCD(COMMAND,ucAddVal);
}

//*******************************************
//函数名称:void Serial_GDRAM_Address_Set(uchar ucGDramAdd)
//函数功能:设定GDRAM(图形区)地址到地址计数器AC
//形式参数:uchar ucGDramAdd
//行参说明:具体地址值
//		RS	RW	DB7	DB6	DB5	DB4	DB3	DB2	DB1	DB0
//		0	0	1	AC6	AC5	AC4	AC3	AC2	AC1	AC0
//		先设定垂直位置再设定水平位置(连续写入两个字节完成垂直和水平位置的设置)		
//		垂直地址范围:AC6~AC0
//		水平地址范围:AC3~AC0
//返回参数:无
//使用说明:必须在扩展指令集的情况下使用
//*******************************************
void Serial_GDRAM_Address_Set(uchar ucGDramAdd)
{
	Serial_Write_LCD(COMMAND,EXTEND_FUNCTION);			//扩展指令集
	Serial_Write_LCD(COMMAND,ucGDramAdd);		
}

//******************************************************************************
//*****************以上为串行工作模式下的基本函数*******************************
//******************************************************************************
//*********以下为串行工作模式下的功能函数,由基本函数组成************************
//******************************************************************************

//*******************************************
//函数名称:void Serial_Init_LCD(void)
//函数功能:串行初始化LCD
//形式参数:无
//行参说明:无
//返回参数:无
//使用说明:无
//*******************************************
void Serial_Init_LCD(void)								//串行初始化LCD
{
  	RST = 1;											//复位后拉高,停止复位
  	PSB = 0;											//选择串行传输模式		
  	Serial_Write_LCD(COMMAND,BASIC_FUNCTION);  			//基本指令动作   
  	Serial_Write_LCD(COMMAND,CLEAR_SCREEN);  			//清屏,地址指针指向00H
  	Serial_Write_LCD(COMMAND,0x06);  					//光标的移动方向
  	Serial_Write_LCD(COMMAND,0x0c);  					//开显示,关游标
}

//*******************************************
//函数名称:void Serial_DisplayOneChineseCharacter_WithAddress(uchar ucAdd,uchar code *p)
//函数功能:在(文本区)ucAdd指定的位置显示一个汉字(16*16点阵)
//形式参数:uchar ucAdd,uchar code *p
//行参说明:指定的位置,要显示的汉字
//地址必须是:80H~8FH,90H~9FH,A0H~AFH,B0H~BFH.
//返回参数:无
//使用说明:使用之前要初始化液晶
//*******************************************
void Serial_DisplayOneChineseCharacter_WithAddress(uchar ucAdd,uchar code *p)
{
  	Serial_Write_LCD(COMMAND,BASIC_FUNCTION);  			//基本指令动作   
	Serial_DDRAM_Address_Set(ucAdd);
	Serial_Write_LCD(DATA,  *p  );
	Serial_Write_LCD(DATA,*(p+1));						
}

//*******************************************
//函数名称:void Serial_DisplayOneASCIICharacter_WithAddress(uchar ucAdd,uchar ucchar)
//函数功能:在(文本区)ucAdd指定的位置显示一个ASCII字符(16*8点阵)
//形式参数:uchar ucAdd,uchar ucchar
//地址必须是:80H~8FH,90H~9FH,A0H~AFH,B0H~BFH.
//行参说明:指定的位置,要显示的字符
//返回参数:无
//使用说明:使用之前要初始化液晶
//*******************************************
void Serial_DisplayOneASCIICharacter_WithAddress(uchar ucAdd,uchar ucchar)
{
  	Serial_Write_LCD(COMMAND,BASIC_FUNCTION);  			//基本指令动作   
	Serial_DDRAM_Address_Set(ucAdd);
	Serial_Write_LCD(DATA,ucchar);				
}

//*******************************************
//函数名称:void Serial_DisplayStrings_WithAddress(uchar ucAdd,uchar code *p)
//函数功能:在(文本区)ucAdd指定的位置显示一串字符(或是汉字或是ASCII或是两者混合)
//形式参数:uchar ucAdd,uchar code *p
//行参说明:指定的位置,要显示的字符串
//地址必须是:80H~8FH,90H~9FH,A0H~AFH,B0H~BFH.
//返回参数:无
//使用说明:使用之前要初始化液晶
//*******************************************
void Serial_DisplayStrings_WithAddress(uchar ucAdd,uchar code *p)
{
	uchar i;
	i = strlen(p);
  	Serial_Write_LCD(COMMAND,BASIC_FUNCTION);  			//基本指令动作   
	Serial_DDRAM_Address_Set(ucAdd);
	for( ;  i ; i -- )
		Serial_Write_LCD(DATA, *(p++));					
}

//*******************************************
//函数名称:void Serial_UpRollOneLine(uchar ucN)
//函数功能:DDRAM(文本区)内容垂直上卷ucN行		
//形式参数:uchar ucN
//行参说明:上卷的行数:0~3
//返回参数:无
//使用说明:无
//*******************************************
void Serial_UpRollOneLine(uchar ucN)
{
	Serial_Write_LCD(COMMAND,EXTEND_FUNCTION);  	//扩展指令集
	Serial_Write_LCD(COMMAND,ROLLADDRESS_ON);  		//允许输入卷动位址
	Serial_Write_LCD(COMMAND,0x40+ucN*0x10);  		//上卷ucN行
}

//*******************************************
//函数名称:void Serial_ImgDisplay(unsigned char code *img)
//函数功能:全屏显示128*64个象素的图形
//形式参数:unsigned char code *img
//行参说明:要显示的图形

⌨️ 快捷键说明

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