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

📄 m1602.c

📁 LCD1602的程序
💻 C
字号:
/*
**长沙太阳人电子有限公司SMC1602模拟接口参考程序
**电话:  0731-4167806,4167808
**E-mail: www@sunman.cn
**Create by :谭超  E-mail: tanchao_1@126.com
**最后修改 :  2005年4月22日
*/

#include<reg51.h>
#include<intrins.h>

//sbit RSPIN = P3^2;
//sbit RWPIN = P3^1;
//sbit EPIN = P3^0;

sbit RSPIN = P3^0;
sbit RWPIN = P3^1;
sbit EPIN = P3^2;

unsigned char XPOS,YPOS;

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

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

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

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

void lcdwd(unsigned char d)
{  lcdwaitidle();
   RSPIN=1;
   RWPIN=0;
   P1=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()
{  delay(150); lcdwcn(0x38);
   delay(50); lcdwcn(0x38);
   delay(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 lcdwda(unsigned char x,unsigned char y,unsigned char *s)
{  YPOS=y;
   for(XPOS=x;XPOS<16;XPOS++)
   {  lcdpos();
      lcdwd(*s);
      s++;
      delay(400);
   }
}

main()
{  unsigned char i;
   EPIN=0;
   while(1)
   {  lcdreset();
      for(i=0x30;i<=0x3a;i++)
      {  lcdfill(i);
         delay(3500);
      }
      lcdfill(' ');
      delay(2000);
      lcdwda(0,0,"ABCDEFGHIJKLMNOPQRSTUVWXYZ");
      lcdwda(0,1,"ZYXWVUTSRQPONMLKJIHGFEDCBA");
      delay(2000);
   }
}

⌨️ 快捷键说明

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