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

📄 lcd.c

📁 基于51单片机的LCD1602显示
💻 C
字号:

#include <reg51.h> 
/************************************/
//common part 
#define  		HIGH   			1
#define  		LOW    			0
#define  		TRUE    		1
#define  		FALSE    		0
#define  		ZERO    		0 
#define  		MSB    			0x80
#define  		LSB    			0x01
/************************************/
//lcd part
#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)
/*************************************/
//change this part at different board
#define  LCDIO     P2
sbit LCD1602_RS=P0^7;   //data command select  1 data  0 command  pin 4 
sbit LCD1602_RW=P0^6;   //read write select   1 read   0 write     pin 5
sbit LCD1602_EN=P0^5;   //LCD enable signal             pin 6

/********************************************************************/
void LCD_delay(void);//lcd delay function 
void LCD_en_com(unsigned char command);//write command function
void LCD_en_dat(unsigned char temp);//write data function
void LCD_set_xy( unsigned char x, unsigned char y );//set display address function
void LCD_write_char( unsigned x,unsigned char y,unsigned char dat);//write lcd a character function
void LCD_write_string(unsigned char X,unsigned char Y,unsigned char *s);//write lcd string function
void LCD_init(void);//lcd initize function
void LCD_Read_BF(void);
/********************************************************************/
void delay_nms(unsigned int n);//delay function

/********************************************************************/

void main(void)
{
 LCD_init(); 
 while(TRUE )    
 {
   CLEARSCREEN;
  
  delay_nms(2); 
         LCD_write_string(0,LINE1,"   LCD TEST     ");
         LCD_write_string(0,LINE2,"   SUCCESSFUL   ");
        
         delay_nms(200);
         
         CLEARSCREEN;
        
  delay_nms(2);
         LCD_write_string(0,LINE1,"   lcd test     ");
         LCD_write_string(0,LINE2,"   successful   ");
         
         delay_nms(200);                  
 }
}

/*****************/  
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;
	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(y == LINE1)	
		address = LINE1_HEAD + x;
	else 			
		address = LINE2_HEAD + x;
	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
}
/*********************** OTHER PART *********************************/
void delay_nms(unsigned int n)      
{
   unsigned int i=0,j=0;
    for (i=n;i>0;i--)
     for (j=0;j<1140;j++);  
}
/********************************************************************/

⌨️ 快捷键说明

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