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

📄 lcd1602.h

📁 4X4键盘
💻 H
字号:
#ifndef LCD1602_H_
#define LCD1602_H_
#include <reg51.h>
#include <intrins.h>
#define uchar unsigned char
#define uint unsigned int
/***********************LCD1602接线引脚定义**************************/
#define    LCDIO      P0        //定义P2口与LCD1602的数据口相接
   sbit    LCD_RS=P2^0;         
   sbit    LCD_RW=P2^1;         
   sbit    LCD_EN=P2^2;
   sbit    LCD_BUSY=P0^7;
/***********************LCD1602地址相关******************************/
#define LINE1_HEAD     0x80    // 第一行DDRAM起始地址 
#define LINE2_HEAD     0xc0    //   第二行DDRAM起始地址
#define LINE1          0       //第一行
#define LINE2          1       //第二行
#define LINE_LENGTH    16      //每行的最大字符长度
/********************延时函数***********************************/
void delay_ms(uchar n)
{
uint j;
for(;n>0;n--)
     for(j=0;j<124;j++);
}
/*
bit LCD_check_busy()    //检测LCD状态,看它是不是还在忙呢
{	bit temp;
    LCD_EN=0;
    LCD_RS=0;
    LCD_RW=1;
	LCD_EN=1;
	delay_ms(1); 
	temp=LCD_BUSY;      
    LCD_EN=0;
	return(temp);
} */
/************LCD1602写命令*******************************/
void LCD_send_command(uchar command)
{
//while(LCD_check_busy()){}
LCDIO=command;
LCD_RS=0;
LCD_RW=0;
LCD_EN=1;
delay_ms(2);
LCD_EN=0;
delay_ms(1);
}
/*****************LCD1602写数据**************************/
void LCD_send_data(uchar dat)
{
//while(LCD_check_busy()){}
LCDIO=dat;
LCD_RS=1;
LCD_RW=0;
LCD_EN=1;
delay_ms(4);
LCD_EN=0;
delay_ms(2);
}
/********************显示字符与位置************************************/
void LCD_write_char(uchar x,uchar y,uchar dat)
{
      uchar address;
      if (y == LINE1) 
          address = LINE1_HEAD + x;
      else 
         address = LINE2_HEAD + x;
      LCD_send_command(address); 
      LCD_send_data(dat);
}

/******************LCD1602显示字符串*********************/
void LCD_disp_string(uchar x,uchar y,uchar *Data)
{
if(y==LINE1)
{
    LCD_send_command(LINE1_HEAD+x);
    for(;x<LINE_LENGTH&&*Data!='\0';x++)
    {
     LCD_send_data(*(Data++));
    }
    if(*Data!='\0')
    {
     x=0;
     y=LINE2;
    }
}
if(y==LINE2)
{ 
   LCD_send_command(LINE2_HEAD+x);
   for(;x<LINE_LENGTH&&*Data!='\0';x++)
   {
    LCD_send_data(*(Data++));
   }
}
}
/**************LCD1602的初始化***************************/
void LCD_init(void)
{
LCD_send_command(0x38);
LCD_send_command(0x0c);
LCD_send_command(0x06);
LCD_send_command(1);
delay_ms(10);
}
#endif

⌨️ 快捷键说明

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