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

📄 1602.txt

📁 51单片机驱动lcd1602的源程序
💻 TXT
字号:
#include <reg51.h>
sbit LCD_DB0= P1^0;
sbit LCD_DB1= P1^1;
sbit LCD_DB2= P1^2;
sbit LCD_DB3= P1^3;
sbit LCD_DB4= P1^4;
sbit LCD_DB5= P1^5;
sbit LCD_DB6= P1^6;
sbit LCD_DB7= P1^7;
sbit LCD1602_RS=P3^0;   
sbit LCD1602_RW=P3^2;
sbit LCD1602_EN=P3^1; 
void LCD_write_string(unsigned char X,unsigned char Y,unsigned char *s);//在指定位置显示字符串
void LCD_cls(void);
void LCD_en_command(unsigned char command);
void LCD_en_dat(unsigned char temp);
void LCD_set_xy( unsigned char x, unsigned char y );
void LCD_init(void);
void SET_LCD(unsigned char IO_temp);
void delayms(unsigned char ms);
void detectbusy(void);
unsigned char LCDIO; 
void main()
{
LCD_init();
LCD_write_string(0,0,"AAAfgre454554AA");
while(1);
}
void LCD_cls(void)
{
	LCD_en_command(0x01);	
    delayms(2);
}
void LCD_en_command(unsigned char command)
{	
	LCD1602_RS=0;   
	LCD1602_RW=0;
	LCD1602_EN=0;
	SET_LCD(command);
	LCD1602_EN=1;
	LCD1602_EN=0;
}
void SET_LCD(unsigned char IO_temp)
{   
	LCD_DB7=IO_temp&0x80;
	LCD_DB6=IO_temp&0x40;
	LCD_DB5=IO_temp&0x20;
	LCD_DB4=IO_temp&0x10;
	LCD_DB3=IO_temp&0x08;
	LCD_DB2=IO_temp&0x04;
	LCD_DB1=IO_temp&0x02;
	LCD_DB0=IO_temp&0x01;
}
void LCD_en_dat(unsigned char dat)
{
	detectbusy();
	LCD1602_RS=1;
	LCD1602_RW=0;
	LCD1602_EN=0;
	SET_LCD(dat);
	LCD1602_EN=1;
	LCD1602_EN=0;
}
void LCD_set_xy( unsigned char x, unsigned char y )
{
	unsigned char address;
	if (y==0) 
		address=0x80+x;
	else 
		address=0xC0+x;
		LCD_en_command(address); 
}
void LCD_write_string(unsigned char X,unsigned char Y,unsigned char *s)
{
    LCD_set_xy(X,Y);    //set address 
    while (*s)       // write character
    {
		LCDIO=*s;
		SET_LCD(LCDIO);
		LCD_en_dat(*s);   
		s++;
    }
}
void LCD_init(void)
{
	LCD_en_command(0x38);
	delayms(20);
	LCD_en_command(0x38);
	delayms(20);
	LCD_en_command(0x38);
	delayms(20);
	LCD_en_command(0x38);
	delayms(20);
	LCD_en_command(0x08);
	delayms(5);
	LCD_en_command(0x01);
	delayms(5);
	LCD_en_command(0x06);
	delayms(5);
	LCD_en_command(0x0c);
	delayms(5);
}

void delayms(unsigned char ms)	
{
	unsigned char i;
	while(ms--)
	{
		for(i=0;i<115;i++);
	}
}
void detectbusy(void)
{
bit BUSY;
LCD1602_RS=0;
LCD1602_RW=1;
LCD_DB7=1;
BUSY=1;
LCD1602_EN=1;
while(BUSY)
	{
		
		BUSY=LCD_DB7;
		
	}
LCD1602_EN=0;
LCD1602_RW=0;
}

⌨️ 快捷键说明

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