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

📄 lcd1602.c

📁 DS1820智能温控系统,使用1602液晶显示,51单片机控制,KEIL开发
💻 C
字号:
#include"lcd1602.h"
uchar  date[2];



void delay(uchar ms)
{       // 延时子程序
   uchar i;
   while(ms--)
      {
        for(i = 0; i< 250; i++)
         {
           _nop_();
           _nop_();
           _nop_();
           _nop_();
         }
      }
}

BOOL LCD_check_busy()		  //定义LCD_check_busy()返回值是位
   {       // 测试LCD忙碌状态
     BOOL result;
     rs = 0;
     rw = 1;
     ep = 1;
     result = (BOOL)(LCD_DATA&0x80);	 //读取第八位
     ep = 0;
     return result; 				 //返回检测信号
   }

void lcd_write(uchar cd,uchar temp)
   {   	  // 写入指令数据到LCD
      uchar i; 
      while(LCD_check_busy());
      date[0]=temp&0xf0;  //取高四位
      date[1]=(temp<<4)&0xf0; //取低四位
      for(i=0;i<2;i++)		  //循环二次,分别送数据的高低位
        {
          if(cd)			  //当写数据时使RS=1,当为写指令时RS=0
            rs = 1;
          else
            rs=0;
          rw = 0;
          ep = 0;
          LCD_DATA  = date[i];			  //送数据到LCD
          if(cd)			     //保持RS原来的状态,不然会使送数据失败
           rs = 1;
          else
           rs=0;
          ep = 1;
          ep = 0; 
        } 
    }

void lcd_pos(uchar pos)
  {     
    lcd_write(0,pos|0x80);		//设定显示位置
  }


void lcd_init()
   {       //LCD初始化设定
 
     lcd_write(0,0x38);   //写三个0x38是初始化要求
     delay(1);
	 lcd_write(0,0x38);   
     delay(1);
     lcd_write(0,0x38);   
     delay(1);
     lcd_write(0,0x28);   // 四位数据数、双行显示、5X7点阵字型体
     delay(1);
     lcd_write(0,0x0C);   // 显示开、关光标
     delay(1);
	 
     lcd_write(0,0x06);   // 数据读、写操作后,AC自动增一
     delay(1);
	 lcd_write(0,0x18);   
     delay(1);
     lcd_write(0,0x01);   //清除LCD的显示内容
     delay(1);
   }
   	   
void lcd_strwdat( uchar Loc,uchar *str )
{  									  //写入字符串显示数据到LCD
    lcd_pos(Loc);
    while(*str!='\0')
      {
        lcd_write(1,*str);
	    str++;
      }
}
			

⌨️ 快捷键说明

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