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

📄 lcm1602.c

📁 按键控制继电器--工业控制实验 keil编译环境 51单片机
💻 C
字号:
#include <intrins.h>
#include <reg52.h>

sbit RSPIN = P1^0;		//LCM1602接口线定义
sbit RWPIN = P1^1;
sbit EPIN = P1^2;

unsigned char XPOS,YPOS;

void delay1(unsigned int t)
{  unsigned int i,j;
   for(i=0;i<t;i++)
      for(j=0;j<10;j++)
         ;
}

void lcdwaitidle(void)
{  P0=0xff;
   RSPIN=0;
   RWPIN=1;
   EPIN=1;
   while((P0&0x80)==0x80);
   EPIN=0;
}

void lcdwcn(unsigned char c)
{  RSPIN=0;
   RWPIN=0;
   P0=c;
   EPIN=1;
   _nop_();
   EPIN=0;
}

void lcdwc(unsigned char c)
{  lcdwaitidle();
   lcdwcn(c);
}

void lcdwd(unsigned char d)
{  lcdwaitidle();
   RSPIN=1;
   RWPIN=0;
   P0=d;
   EPIN=1;
   _nop_();
   EPIN=0;
}

void lcdpos(void)
{  XPOS&=0x0f;
   YPOS&=0x03;
   if(YPOS==0x00)
      lcdwc(XPOS|0x80);
   else if(YPOS==0x01)
      lcdwc((XPOS+0x40)|0x80);
}

void lcdreset()
{  delay1(150); lcdwcn(0x38);
   delay1(50); lcdwcn(0x38);
   delay1(50); lcdwcn(0x38);
   lcdwc(0x38);
   lcdwc(0x08);
   lcdwc(0x01);
   lcdwc(0x06);
   lcdwc(0x0c);
}

void lcdfill(unsigned char n)
{
   for(YPOS=0;YPOS<2;YPOS++)
      for(XPOS=0;XPOS<16;XPOS++)
      {  lcdpos();
         lcdwd(n);  }
}

void lcdchar(unsigned char x,unsigned char y,unsigned char ch)
{
	XPOS=x;  YPOS=y;
	lcdpos();
	lcdwd(ch);
}

void lcdwda(unsigned char x,unsigned char y,unsigned char *s)
{  YPOS=y;
   for(XPOS=x;XPOS<16;XPOS++)
   {  lcdpos();
   	  if (*s=='\0') return;
      lcdwd(*s);
      s++;
      delay1(1);//400);
   }
}

⌨️ 快捷键说明

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