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

📄 lcd1602.c

📁 AD89C51单片机控制液晶显示器LCD1602显示时间。
💻 C
字号:
#include <at89x51.h>

#define 	MSB 		0x80
#define 	LSB 		0x00
#define 	TRUE 		1
#define 	FALSE		0
#define 	HIGH 		1
#define 	LOW 		0

#define  	LINE1     			0
#define  	LINE2     			1
#define  	LINE1_HEAD    			0x80
#define  	LINE2_HEAD    			0xC0
#define  	DATA_MODE    			0x38
#define  	OPEN_SCREEN    			0x0C
#define  	DISPLAY_ADDRESS   		0x80
#define  	CLEARSCREEN    			LCD_en_com(0x01)

#define  LCDIO     P1
sbit LCD1602_RS=P3^2;   
sbit LCD1602_RW=P3^1;   
sbit LCD1602_EN=P3^0;   

void LCD_Read_BF(void)
{
	unsigned char read=0; 
	
	LCD1602_RS = LOW;		//RS 0
	LCD1602_RW = HIGH;		//RW 1
	LCD1602_EN = HIGH;		//EN 1	Read BF
	
	LCDIO = 0xFF;
	LCDIO = 0xFF;
	do{
		read = LCDIO;
	}while(read&MSB);
}
//*************************************
void LCD_en_com(unsigned char command)
{
	LCD_Read_BF(); 
	
	LCD1602_RS = LOW;   	//RS 0 
	LCD1602_RW = LOW;		//RW 0 
	
	LCD1602_EN = HIGH;	//EN --\|/__	Write command
	LCDIO = command;
	LCD1602_EN = LOW;
}
//*********************************
void LCD_en_dat(unsigned char dat)
{
	LCD_Read_BF();
	
	LCD1602_RS = HIGH;	//RS 1 
	LCD1602_RW = LOW;		//RW 0 
	
	LCD1602_EN = HIGH;	//EN --\|/__	Write data
	LCDIO = dat;
	LCD1602_EN = LOW;
}
//**********************************************
void LCD_set_xy(unsigned char x,unsigned char y)
{
	unsigned char address;
	if(x == LINE1)	
		address = LINE1_HEAD + y;
	else 			
		address = LINE2_HEAD + y;
	LCD_en_com(address);     
}
//****************************************************************
/*void LCD_write_char(unsigned x,unsigned char y,unsigned char dat)
{
	LCD_set_xy(x,y); 
	LCD_en_dat(dat);
}   */
//*********************************************************************
void LCD_write_string(unsigned char x,unsigned char y,unsigned char *s)
{
	LCD_set_xy(x,y); 
	while(*s)  
	{
		LCDIO = *s;
		LCD_en_dat(*s);   
		s++;
	}
}
//****************/*********************
void LCD_init(void)
{ 
	LCD_en_com(DATA_MODE);
		//set 8 bit data transmission mode 
	LCD_en_com(OPEN_SCREEN);
		//open display (enable lcd display)
	LCD_en_com(DISPLAY_ADDRESS);
	    //set lcd first display address 
	CLEARSCREEN;
		//clear screen
}
//**************************************

⌨️ 快捷键说明

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