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

📄 d.c

📁 新写的LCD1602源码 LCD1602驱动 可以让字符惑数字在屏幕上跑的函数 函数结构清析
💻 C
字号:
#include<reg51.h>
#include<intrins.h>

sbit RSPIN = P2^6;
sbit RWPIN = P2^5;
sbit EPIN = P2^7;
sbit E=P3^4;//使数码管高阻

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) //忙检查
{  P0=0xff; //读作准备
   RSPIN=0;
   RWPIN=1;
   EPIN=1;
   while((P0&0x80)==0x80);
   EPIN=0;
}

void lcdwcn(unsigned char c)//确定光标位置,由参数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;       //xp0s=xpos&0x0f 
   YPOS&=0x03;
   if(YPOS==0x00)
      lcdwc(XPOS|0x80);    
   else if(YPOS==0x01)
      lcdwc((XPOS+0x40)|0x80);     //第一行与第二行地址相差40H
}

void lcdreset()     //复位
{  delay(150);lcdwcn(0x38);
   delay(50); lcdwcn(0x38);
   delay(50); lcdwcn(0x38);
   lcdwc(0x38);
   lcdwc(0x08);
   lcdwc(0x01);
   lcdwc(0x06);
   lcdwc(0x0c);
}

/*v oid lcdfill(unsigned char n) //全部显示同一个字符
{
   for(YPOS=0;YPOS<2;YPOS++)   //两行
      for(XPOS=0;XPOS<16;XPOS++)//一行16个字符
      {  lcdpos();
         lcdwd(n);  }
}*/

/*void lcdwda(unsigned char x,unsigned char y,unsigned char *s)//X,Y显示的开始位置 S表示
{  YPOS=y;
   for(XPOS=x;XPOS<16;XPOS++)
   {  lcdpos();     //确定显示位置
      lcdwd(*s);    //显示数据
      s++;
      delay(400);
   }
}*/


//读状态 
/*unsigned char  ReadStatusLCM(void)
{ 
 P0= 0xFF;  
 RSPIN = 0; 
 RWPIN = 1; 
 EPIN = 0; 
 EPIN = 0; 
 EPIN = 1; 
 while (P0 & 0x80); //检测忙信号 
 return(P0); 
} */
void main()
{   
   unsigned int i=0;
   EPIN=0;
   RD=0;
   WR=1;
   E=1;
   lcdreset();
   XPOS=0;YPOS=0;
   lcdpos();
   delay(150);
   lcdwd(0xa0);
   lcdwd(0x57);  //显示一个Welcome!
   lcdwd(0x65);
   lcdwd(0x6c);
   lcdwd(0x63);
   lcdwd(0x6f);
   lcdwd(0x6d);
   lcdwd(0x65);
   lcdwd(0x21);
   lcdwc(0x02);
   lcdwc(0x05);
   delay(500);

   while(1)
   {   i++;
       switch (i)
      {
         case 15:
            {   // i=15;
                   lcdreset(); 
                   lcdwc(0x00);
                   delay(150);
                   
                   XPOS=30;YPOS=1;
                   lcdpos();
                   lcdwd(0xa0);
                   lcdwd(0x57);  //显示一个Welcome!
                   lcdwd(0x65);
                   lcdwd(0x6c);
                   lcdwd(0x63);
                   lcdwd(0x6f);
                   lcdwd(0x6d);
                   lcdwd(0x65);
                   lcdwd(0x21);
                  // lcdwc(0x02);
                   lcdwc(0x07);
                   delay(1000);
                   break;
             }
       case 30:
             {  i=0;
                   lcdreset();
                   XPOS=0;YPOS=0;
                   lcdpos();
                   delay(150);

                 //  lcdwc(0x00);
                   delay(150);
                   lcdwd(0xa0);
                   lcdwd(0x57);  //显示一个Welcome!
                   lcdwd(0x65);
                   lcdwd(0x6c);
                   lcdwd(0x63);
                   lcdwd(0x6f);
                   lcdwd(0x6d);
                   lcdwd(0x65);
                   lcdwd(0x21);
                   lcdwc(0x02);
                   lcdwc(0x05);
                   delay(1000);
                   break;

              }
        default:  
           { lcdwd(0xa0);
             delay(1000);
            break;
            } 
}}}

⌨️ 快捷键说明

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