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

📄 lcd4.c

📁 共享几个AVR单片机的常用代码
💻 C
字号:

#include "LCD4.h"

void LCD_Init(void)
{

	SET_DISABLE;
	SET_RS_OUT;
	SET_RW_OUT;
	SET_EN_OUT;

	need_check_busy = 0;

    LCD_WriteChar(0x28,0);		//reset
    Timer_Wait_ms(15);
    LCD_WriteChar(0x28,0);
    Timer_Wait_ms(15);
    LCD_WriteChar(0x28,0);

	need_check_busy = 1;
    LCD_WriteChar(0x28,0);
    LCD_WriteChar(0x08,0);		//close display
    LCD_WriteChar(0x01,0);		//clear
    LCD_WriteChar(0x06,0);		//set pointer
    LCD_WriteChar(0x0e,0);		//open display
}

void LCD_WaitReady(void)
{
	LCD_DATA	|=	(0x0f<<LCD_DATA_LSHIFT);
	LCD_DDR		&=	(~(0x0f<<LCD_DATA_LSHIFT));
	
	SET_RS_CMD;
	SET_RW_READ;

	SET_ENABLE;	//RS=0 R/W=1 EN=1
    DELAY_8M_us;
	while(LCD_PIN & (0x08<<LCD_DATA_LSHIFT))
		;	//if Hignest Bit = 1 then busy
	SET_DISABLE;
}

void LCD_WriteChar(uint8_t cmd,uint8_t data)
{
	uint8_t buf,bit4buf;
	
	if(need_check_busy)
		LCD_WaitReady();
	
	if(cmd)
		{	
			SET_RS_CMD;
			SET_RW_WRITE;	//R/W=0 RS=0
			buf =	cmd;
		}
	else
		{
			SET_RS_DATA;
			SET_RW_WRITE;	//R/W=0 RS=1
			buf =	data;
		}

	LCD_DATA 	&=	(~(0x0f<<LCD_DATA_LSHIFT));		//Write High 4 bit
	bit4buf		 =	(buf>>4);
	LCD_DATA	|=	(bit4buf<<LCD_DATA_LSHIFT);
	LCD_DDR		|=	(0x0f<<LCD_DATA_LSHIFT);
	Send_EN_SIGNAL;

	LCD_DATA 	&=	(~(0x0f<<LCD_DATA_LSHIFT));		//Write Low 4 bit
	bit4buf		 =	(buf&0x0f);
	LCD_DATA	|=	(bit4buf<<LCD_DATA_LSHIFT);

	Send_EN_SIGNAL;


}

void LCD_Clear(void){LCD_WriteChar(0x01,0);}

void LCD_SetXY(uint8_t x,uint8_t y)
{
	if(y)
		LCD_WriteChar(ADDR_ROW2 + x,0);
	else
		LCD_WriteChar(ADDR_ROW1 + x,0);
}
void LCD_DispStr(const char *p)
{
	while(*p)
		LCD_WriteChar(0,(uint8_t)*(p++));

}

void LCD_DispNum(uint32_t num)
{
	char buf[11]={0};
	char *p = &buf[10];
	
	do{
		*(--p) = num%10 + '0';
		num /= 10;
	}while(num);

	LCD_DispStr(p);
}



⌨️ 快捷键说明

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