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

📄 lcd1602.c

📁 电子密码锁毕业设计
💻 C
字号:


/********************************************************
                  液晶显示器说明
1、8位传输数据  LCD_DATA = P0
2、控制端口    RS=P2^0   RW=P2^1	EN=P2^2
********************************************************/
/********************************************************
                  函数说明
1、LCD_init();//初始化
2、LCD_CLR();//清屏函数
3、printf_dat(uchar row,uchar col,uchar count,uint dat)
    //在第row行 第col位开始显示count个数据(dat)	
4、printf_char(uchar row,uchar col,uchar Inbuffer[31])
    //在第row行 第col位开始显示 字符串Inbuffer[]			  

********************************************************/
#include<reg51.H>

#define uchar unsigned char
#define uint unsigned int 


//********************************************************//
//                  1602所用端口						 *//
//********************************************************//
#define LCD_DATA P0//1602数据端口

sbit RS=P2^7;
sbit RW=P2^6;
sbit EN=P2^5; 

/*sbit RS=P1^0;
sbit RW=P1^1;
sbit EN=P1^2; */
//********************************************************//
//*                函数声明                           *//
//********************************************************//
void delay(uint a);
void write_adr(uchar adr) ;
void write_data(uchar dat);
void LCD_init(void);
void LCD_CLR(void);
void printf_data(uchar row,uchar col,uchar count,uint dat);
void printf_char(uchar row,uchar col,uchar Inbuffer[31]);


//********************************************************//
//*                1602 函数段                           *//
//********************************************************//
//延时函数
void delay(uint a)
{
   while(a--);
}

//写指令
void write_adr(uchar adr)
{
    RS=RW=0;
	LCD_DATA=adr;
	delay(1);
	EN=1;
	delay(5);
	EN=0;
	delay(500);
}
//写数据
void write_data(uchar dat)
{
    RS=1;RW=0;
	LCD_DATA=dat;
	delay(1);
	EN=1;
	delay(5);
	EN=0;
	delay(500);
}
//初始化
void LCD_init(void)
{
	  write_adr(0x38);
	  write_adr(0x80);
}

//清屏函数
void LCD_CLR(void)
{
      LCD_init();
	  write_adr(0x01);
	  delay(500);
}
//写数 (5位数据)
void printf_data(uchar row,uchar col,uchar count,uint dat)
{
      uchar sh1,sh2,sh3,sh4,sh5;
	  sh5=dat/10000;
	  sh4=dat%10000/1000;
	  sh3=dat%1000/100;
	  sh2=dat%100/10;
	  sh1=dat%10;
	  write_adr(0x0c);
	  switch(row)
	  {
	     case 1:row=0x80;break;
		 case 2:row=0xc0;break;
		 default:break;
	  }
	  write_adr(row+col-1);
	  delay(500);
	  if(count>=5)
	     write_data(sh5+48);
	  if(count>=4) 
	     write_data(sh4+48);
	  if(count>=3)
	     write_data(sh3+48);
	  if(count>=2) 
	     write_data(sh2+48);
	  if(count>=1)
	     write_data(sh1+48);
}
//写一段字符
void  printf_char(uchar row,uchar col,uchar Inbuffer[31])
{
      uchar i;
	  write_adr(0x0c);
	  switch(row)
	  {
	       case 1:row=0x80;break;
		   case 2:row=0xc0;break;
		   default:break;
	  }
	 write_adr(row+col-1);
	 delay(500);
	 for(i=0;i<31;i++)
	 {
	      if(Inbuffer[i]=='%'&&Inbuffer[i+1]=='d')
		     break;
	      if(col+i==16&&row==0x80)
		     write_adr(0xc0);
		  write_data(Inbuffer[i]);
	 }
}

⌨️ 快捷键说明

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