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

📄 lcd.c

📁 共享几个AVR单片机的常用代码
💻 C
字号:
#include "LCD.h"

void Init_LCD(void)
{
	SET_DISABLE;
	SET_RS_OUT;
	SET_RW_OUT;
	SET_EN_OUT;

	LCD_DDR		=	0x00;
	LCD_DATA	=	0xff;

    LCD_SendData(0x38,0);		//reset
    LCD_SendData(0x08,0);		//close display
    LCD_SendData(0x01,0);		//clear
    LCD_SendData(0x06,0);		//set pointer
    LCD_SendData(0x0e,0);		//open display
}

void LCD_WaitReady(void)
{
	LCD_DDR		=	0x00;
	LCD_DATA	|=	0xff;

	SET_RS_CMD;
	SET_RW_READ;
	
	SET_ENABLE;	//RS=0 R/W=1 EN=1
	while(LCD_PIN & 0x80)
		;	//if Bit 7 = 1 then busy
	SET_DISABLE;
}

void LCD_SendData(uint8_t cmd,uint8_t data)
{
	if(cmd != 0x38)
		LCD_WaitReady();
	
	if(cmd)
		{	
			SET_RS_CMD;
			SET_RW_WRITE;	//R/W=0 RS=0

			LCD_DATA	=	cmd;
			LCD_DDR		=	0xff;
		}
	else
		{
			SET_RS_DATA;
			SET_RW_WRITE;//R/W=0 RS=1

			LCD_DATA	=	data;
			LCD_DDR		=	0xff;
		}
	
	SEND_EN_SINGAL;

}

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

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

}


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

	LCD_DispStr(p);
}

⌨️ 快捷键说明

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