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

📄 lcd1602.c

📁 keil c 文件 @@##%%…… &……源代码程序
💻 C
字号:
//#pragma src // 产生汇编文件
#include<reg51.h>
#include<intrins.h>
//========= 变量类型标识的宏定义,通常做法 ==============
#define Uchar unsigned char
#define Uint unsigned int
//========  定义LCD与MCU的接口,LCD数据线接P2 =============
#define LCD_DATA P0
sbit LCD_EN=P3^5;
sbit LCD_RS=P3^7;
sbit LCD_RW=P3^6;

/*------------------------------------------------
Public function prototypes  函数原型
-------------------------------------------------*/
void LCD_init(void);/*初始化*/
void LCD_cmd(Uchar cmd);/*写入控制命令*/
void LCD_string(char *s);/*写入要显示的字符串*/
void LCD_char(char str);/*写入要显示的字符*/
void LCD_setxy(char x,char y);/*设定显示位置,行x=1/2,列y=1~16的任意整数*/
void wait_until_ready(void);/*检测忙标志,忙则等待*/
void delay(void);

//函数实现:


sbit bflag=ACC^7;
void delay(void)                 //延时函数
  {


  int i=0;

   
  }
/*产生一个使能脉冲*/
void En_Toggle(void)
{
 LCD_EN=1;
        delay();
 LCD_EN=0;
        delay();
}


void LCD_clr()
{
LCD_cmd(0x01);

}

void LCD_init(void)
{
   LCD_cmd(0x08);/*显示关闭*/
   LCD_cmd(0x38);/*8位数据,2行显示*/

   LCD_cmd(0x01);/*清屏*/ 
    /*清屏和光标归位需要较长的时间*/
   LCD_cmd(0x06);/*写入数据后光标右移*/
   LCD_cmd(0x0c);/*显示开,不显示光标*/
}
void LCD_cmd(Uchar cmd)/*写入控制命令*/
{
   wait_until_ready();
   LCD_RS=0;
   LCD_RW=0;
   LCD_DATA=cmd;
   En_Toggle();

}
void LCD_char(char str)/*写入要显示的字符*/
{
   wait_until_ready();
   LCD_RS=1;
   LCD_RW=0;
   LCD_DATA=str;
   En_Toggle();
                               
}
void LCD_setxy(char x,char y) /*设定显示位置,行x=1/2,列y=1~16的任意整数*/
{
    char temp;
    if(x==1)
  {temp=0x80+y-1;
  LCD_cmd(temp);
  }
 else
  {temp=0xC0+y-1;
  LCD_cmd(temp);
  }
}
void LCD_string(char *s)
{
 for(;*s!='\0';s++)LCD_char(*s);
}
void wait_until_ready(void) /*检测忙标志,忙则等待*/
{
   LCD_RS=0;
   LCD_RW=1;
   LCD_DATA=0x0ff;
   LCD_EN=1;
   delay();
   do{ACC=LCD_DATA;}while(bflag==1);
   LCD_EN=0;
}



⌨️ 快捷键说明

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