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

📄 lcd1602模块4线.c

📁 一个LCD1602模块的4线接法的程序
💻 C
字号:
/*---------------------------------------------------------
液晶LCD1602C  使用4条数据线(D4~D7)
-----------------------------------------------------------*/
/*-------------------------------------------------------------
LCD引脚定义
1---GND 
2---VCC
3---VO
4---RS
5---RW
6---EN
7到14--D0-D7
15--背景灯+
16--背景灯-
-----------------------------------------------------------------*/
#include <at89X52.h>
#include <intrins.h>

#define uchar unsigned char
#define uint unsigned int
sbit LCD_1602_RW = P2^0; /*实时LCD线引脚定义 */
sbit LCD_1602_RS = P2^1;
sbit LCD_1602_EN = P2^2;
sbit LCD_1602_Led = P2^7;
sbit LCD_1602_Data_4 = P2^3;
sbit LCD_1602_Data_5 = P2^4;
sbit LCD_1602_Data_6 = P2^5;
sbit LCD_1602_Data_7 = P2^6;


/*********************************************************************/
/* lcd1602函数的声明*/
/*********************************************************************/
void LCD_1602_Init(void);
void LCD_1602_EN_Write(void);
void LCD_1602_Write_Command(unsigned  char LCD_1602_Command) ;
void LCD_1602_Write_1_Data(unsigned char LCD_1602_Recdata);
void LCD_1602_Set_xy (unsigned char x, unsigned char y);
void LCD_write_string(unsigned char X,unsigned char Y,unsigned char *s);
void LCD_1602_Write_Data(unsigned char X,unsigned char Y,unsigned char LCD_1602_Recdata);
void LCD_1602_Delay_n_us(unsigned int n);
void LCD_1602_Delay_n_ms(unsigned int n);
/******************************************************************** 
* 名称: LCD_1602_Delay_1_us
* 说明: 
* 功能: 1us延时函数
* 调用:
* 输入:
* 返回值: 无
***********************************************************************/
void LCD_1602_Delay_1_us(void)
  {
   _nop_();
  }
/******************************************************************** 
* 名称: LCD_1602_Delay_n_us
* 说明: 
* 功能: n_us延时函数
* 调用:
* 输入:
* 返回值: 无
***********************************************************************/
void LCD_1602_Delay_n_us(unsigned int n)
  {
   unsigned int i=0;
   for (i=0;i<n;i++)
   LCD_1602_Delay_1_us();
  }
/******************************************************************** 
* 名称: LCD_1602_Delay_1_ms
* 说明: 
* 功能: 1_ms延时函数
* 调用:
* 输入:
* 返回值: 无
***********************************************************************/
void LCD_1602_Delay_1_ms(void)                 //1ms延时函数
  {
   unsigned int i;
   for (i=0;i<1140;i++);
  }
/******************************************************************** 
* 名称: LCD_1602_Delay_n_ms
* 说明: 
* 功能: n_ms延时函数
* 调用:
* 输入:
* 返回值: 无
***********************************************************************/
void LCD_1602_Delay_n_ms(unsigned int n)
  {
   unsigned int i=0;
   for (i=0;i<n;i++)
   LCD_1602_Delay_1_ms();
  }

/******************************************************************** 
* 名称: LCD_1602_Init
* 说明: 
* 功能: 1602液晶初始化
* 调用: LCD_1602_Write_Command,LCD_1602_Delay_n_us,LCD_1602_Delay_n_ms
* 输入:
* 返回值: 无
***********************************************************************/
void LCD_1602_Init(void)
{

  LCD_1602_Write_Command(0x28);
  LCD_1602_Delay_n_us(40); 
  LCD_1602_Write_Command(0x28);
  LCD_1602_Delay_n_us(40); 
  LCD_1602_Write_Command(0x28);
  LCD_1602_Delay_n_us(40); 
  
  LCD_1602_EN_Write();
  LCD_1602_Delay_n_us(40);
  LCD_1602_Write_Command(0x28);  //4位显示
  LCD_1602_Write_Command(0x0c);  //显示开
  LCD_1602_Write_Command(0x01);  //清屏
  LCD_1602_Delay_n_ms(2);
}
/******************************************************************** 
* 名称: LCD_1602_EN_Write
* 说明: 
* 功能: 1602液晶使能
* 调用:
* 输入:
* 返回值: 无
***********************************************************************/
void LCD_1602_EN_Write(void)  //液晶使能
{ LCD_1602_RW=0;        //RW=0
  LCD_1602_EN=1;
  _nop()_;
  LCD_1602_EN=0;
}
/******************************************************************** 
* 名称: LCD_1602_Write_Command
* 说明: 
* 功能: 1602液晶写命令
* 调用: LCD_1602_Delay_n_us,LCD_1602_EN_Write
* 输入:
* 返回值: 无
***********************************************************************/
void LCD_1602_Write_Command(unsigned char LCD_1602_Command)
{
  LCD_1602_Delay_n_us(16);
  LCD_1602_RS = 0;
  LCD_1602_RW = 0;
  LCD_1602_Data_4=LCD_1602_Command&0x10;
  LCD_1602_Data_5=LCD_1602_Command&0x20;
  LCD_1602_Data_6=LCD_1602_Command&0x40;
  LCD_1602_Data_7=LCD_1602_Command&0x80;
  LCD_1602_EN_Write();
  LCD_1602_Data_4=LCD_1602_Command&0x01;
  LCD_1602_Data_5=LCD_1602_Command&0x02;
  LCD_1602_Data_6=LCD_1602_Command&0x04;
  LCD_1602_Data_7=LCD_1602_Command&0x08;
  LCD_1602_EN_Write();
}
/******************************************************************** 
* 名称: LCD_1602_Write_1_Data
* 说明: 
* 功能: 1602液晶写数据
* 调用: LCD_1602_Delay_n_us,LCD_1602_EN_Write
* 输入:
* 返回值: 无
***********************************************************************/
void LCD_1602_Write_1_Data(unsigned char LCD_1602_Recdata)
{
  LCD_1602_Delay_n_us(16);
  LCD_1602_RS = 1;       															//RS=1
  LCD_1602_RW = 0;
  LCD_1602_Data_4=LCD_1602_Command&0x10;
  LCD_1602_Data_5=LCD_1602_Command&0x20;
  LCD_1602_Data_6=LCD_1602_Command&0x40;
  LCD_1602_Data_7=LCD_1602_Command&0x80;
  LCD_1602_EN_Write();
  LCD_1602_Data_4=LCD_1602_Command&0x01;
  LCD_1602_Data_5=LCD_1602_Command&0x02;
  LCD_1602_Data_6=LCD_1602_Command&0x04;
  LCD_1602_Data_7=LCD_1602_Command&0x08;
  LCD_1602_EN_Write();
}
/******************************************************************** 
* 名称: LCD_1602_Set_xy
* 说明: 
* 功能: 1602液晶写指定的地址
* 调用: LCD_1602_Write_Command
* 输入:
* 返回值: 无
***********************************************************************/
void LCD_1602_Set_xy( unsigned char x, unsigned char y )  	//写地址函数
{
    unsigned char LCD_1602_Address;
    if (y == 0) LCD_1602_Address = 0x80 + x;
    else LCD_1602_Address = 0xc0 + x;
    LCD_1602_Write_Command(LCD_1602_Address);
}
/******************************************************************** 
* 名称: LCD_1602_Write_Data
* 说明: 
* 功能: 1602液晶在指定地址写入数据显示出来
* 调用: LCD_1602_Write_1_Data,LCD_1602_Set_xy
* 输入:
* 返回值: 无
***********************************************************************/
void  LCD_1602_Write_Data(unsigned char X,unsigned char Y,unsigned char LCD_1602_Recdata)
{
  LCD_1602_Set_xy(X, Y); 																												 //写地址
  LCD_1602_Write_1_Data(LCD_1602_Recdata);
}

⌨️ 快捷键说明

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