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

📄 lcd1602func2.c

📁 通过编程实现对LCD的驱动
💻 C
字号:
/*******************************************************************
**函数功能:LCD的驱动函数										  **
**创建人:xingyuegu												  **
**创建日期:2006-7-12											  **
**版本:1.0													  	  **
**修改日期:2006-10-12											  **
**版本:2.0													  	  **
*******************************************************************/

#include "lcd1602.h>
#include <absacc.h>
unsigned char data  ac=0;

/*************************************************************
**功能:延时												**
**参数:无													**
*************************************************************/

void delay1_64ms(void)
{
	uint i;
	for(i = 0;i < 1500;i++)
	{
		;
	}
}

/*************************************************************
**功能:判断LCD忙											**
**参数:无       											**
*************************************************************/
#define write_lcd_command XBYTE[0x8000]
#define write_lcd_data XBYTE[0x8001]
#define read_lcd_command XBYTE[0x8802]
#define read_lcd_data XBYTE[0x8003]
unsigned char Lcd_Wait(void)
{
	return read_lcd_command;
}
/**************************************************************
**功能:写LCD函数											 **
**参数:style为写命令/数据,0-命令,1-数据;input为写入的8位 **
**		命令/数据											 **
**************************************************************/


void Lcd_Write(bit style,unsigned char input)
{

	if(style)
		write_lcd_data=input;
	else
		write_lcd_command=input;
	Lcd_Wait();
}
/***************************************************************
**功能:设置显示模式										  **
**参数:													  **
***************************************************************/

void  Lcd_SetDisplay(unsigned char DisplayMode)
{
	Lcd_Write(Lcd_Command,0x08|DisplayMode);
}
/***************************************************************
**功能:LCD移动设置											  **
**参数:取值如下											  **
***************************************************************/

//
void Lcd_Move(unsigned char MoveMode)
{
	Lcd_Write(Lcd_Command,0x10|MoveMode);
}

/****************************************************************
**功能:LCD输入设置											   **
**参数:取值如下											   **
****************************************************************/
//
void Lcd_SetInput(unsigned char InputMode)
{
	Lcd_Write(Lcd_Command,0x04|InputMode);
}
/****************************************************************
**功能:LCD初始化										       **
**参数:取值如下											   **
****************************************************************/
void Lcd_Init(void)
{

	Lcd_Write(Lcd_Command,0x38);           //8位数据端口,2行显示,5*7点阵
	Lcd_Write(Lcd_Command,0x38);
	
	_nop_();
	Lcd_SetDisplay(Lcd_Display_On|Lcd_Cursor|Lcd_Flash);    //开启显示, 无光标
	Lcd_Write(Lcd_Command,Lcd_Clear_Screen);   //清屏
	Lcd_SetInput(Lcd_Ac_Up|Lcd_No_Move);       //AC递增, 画面不动
	
}

/****************************************************************
**功能:显示位置设置										   **
**参数:x-行;y-列											   **
****************************************************************/
void GotoXY(unsigned char x,unsigned char y)
{
	if(y==0)
		{Lcd_Write(Lcd_Command,0x80|x);
		ac=x%8;}
	if(y==1)
		{Lcd_Write(Lcd_Command,0x80|(x+0x40));
		 ac=17+x%8;}
}

/****************************************************************
**功能:LCD显示函数											   **
**参数:str-要显示的字符串指针								   **
****************************************************************/
void Print(unsigned char *str)
{	
	while(*str!='\0')
	{
		
		if(ac==16)
		GotoXY(0,1);
		else if(ac==32)
		{GotoXY(0,0);
		ac=0;}
		Lcd_Write(Lcd_Data,*str);
		ac++;
		str++;
	}
}
/****************************************************************
**功能:LCD清屏函数										       **
**参数:无     											       **
****************************************************************/
void ClrScreen(void)
{
	
	Lcd_Write(Lcd_Command,Lcd_Clear_Screen);
	delay1_64ms();							//必须有,LCD清屏要1.64ms
	ac=0;
}
		

⌨️ 快捷键说明

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