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

📄 lcd1602_4.h

📁 51单片机PS2鼠标控制源代码
💻 H
字号:
#ifndef	LCD1602_4_H
#define LCD1602_4_H
#include <intrins.h>

#define  LCM1602_DATA P0
#define CLEARSCREEN LCM1602_write_cmd(0x01)

sbit LCD1602_RS=P2^0;
sbit LCD1602_RW=P2^1; 
sbit LCD1602_EN=P2^2;

//**********************************************************************
void LCM1602_Init(void);													//液晶初始化
void LCM1602_write_cmd(unsigned char command);								//写命令
void LCM1602_write_data(unsigned char temp);								//写数据
void LCM1602_set_xy(unsigned char x, unsigned char y);						//设置坐标
void LCM1602_write_char(unsigned x,unsigned char y,unsigned char dat);		//写一个字符到第x行y列
void LCM1602_write_string(unsigned char x,unsigned char y,unsigned char *s);//写字符串到第x行y列
void LCM1602_Read_BF(void);													//读忙信号
void num(unsigned char x,unsigned char y,unsigned int n);					//在第x行,第y列显示整型数字n
//**********************************************************************

void LCM1602_Init(void)
{ 
	LCM1602_write_cmd(0x28);
	LCM1602_write_cmd(0x28);
	LCM1602_write_cmd(0x28);//设置4位数据传输模式
	LCM1602_write_cmd(0x0C);
	LCM1602_write_cmd(0x80);
    CLEARSCREEN;
}


void LCM1602_Read_BF(void)
{
	LCD1602_RW=1;		//RW 1
	LCD1602_RS=0;			//RS 0
	LCD1602_EN=1;		//EN 1	Read BF
 	LCM1602_DATA=LCM1602_DATA&0x0F|0xf0;
	while(LCM1602_DATA&0x80);
	LCD1602_EN=0;		
}
void LCD_en_write(void)        //EN端产生一个高电平脉冲,写LCD
  {
    LCD1602_EN=1;
	_nop_();
    LCD1602_EN=0;	
  }

//*************************************
void LCM1602_write_cmd(unsigned char command)
{
	LCM1602_Read_BF();
	LCD1602_RS=0;   	//RS 0 
	LCD1602_RW=0;		//RW 0 
	
	LCM1602_DATA&=0x0F;
	LCM1602_DATA=command&0xf0 | LCM1602_DATA&0x0f;
	LCD_en_write();
	command=command<<4; 
	LCM1602_DATA&=0x0F;
	LCM1602_DATA=command&0xf0 | LCM1602_DATA&0x0f;
	LCD_en_write();
}
//*********************************
void LCM1602_write_data(unsigned char dat)
{
	LCM1602_Read_BF();
	LCD1602_RS=1;	 //RS 1 
	LCD1602_RW=0;	 //RW 0 
	LCM1602_DATA &=0x0F;
	LCM1602_DATA=dat&0xf0 | LCM1602_DATA&0x0f;
	LCD_en_write();
	dat=dat<<4;
	LCM1602_DATA &=0x0F;
	LCM1602_DATA=dat&0xf0 | LCM1602_DATA&0x0f;
	LCD_en_write();
}
//**********************************************
void LCM1602_set_xy(unsigned char x,unsigned char y)
{
	unsigned char address;
	y&=0x0f;
	if(!x)	
		address=0x80+y;
	else 			
		address=0xc0+y;
	LCM1602_write_cmd(address); 
}
//****************************************************************
void LCM1602_write_char(unsigned x,unsigned char y,unsigned char dat)
{
	LCM1602_set_xy(x,y); 
	LCM1602_write_data(dat);
}
//*********************************************************************
void LCM1602_write_string(unsigned char x,unsigned char y,const unsigned char *s)
{
	LCM1602_set_xy(x,y); 
	while(*s)  
	{
		LCM1602_write_data(*s);   
		s++;
	}
}

void num(unsigned char x,unsigned char y,unsigned int n)
{
	unsigned char i,length,a[6]={0,0,0,0,0,0};
	unsigned int nx=n;
	if(n==0){LCM1602_write_char(x,y,'0');return;}
	for(i=0;i<6;i++)
	{
		if(nx>=1)length++;
		nx/=10;
	}
	nx=n;
	for(;length>0;length--)
	{
		a[length-1]=nx%10+48;
		nx/=10;
	}
	LCM1602_write_string(x,y,a);
}

#endif

⌨️ 快捷键说明

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