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

📄 16x2.c

📁 1602液晶显示源码
💻 C
字号:
#include <reg51.h>
#include <absacc.h>
#define uint unsigned int
#define uchar unsigned char
sbit RS = P3^0;
sbit RW = P3^2;
sbit E  = P3^1;
uchar stats[1]={0x00};
uchar title[32]={0x20,0x20,0x20,0x4c,0x54,0x54,0x2d,0x4d,
                 0x4f,0x44,0x55,0x4c,0x45,0x20,0x20,0x20,
                 0x31,0x36,0x78,0x32,0x54,0x45,0x53,0x54,
                 0x20,0x50,0x52,0x4f,0x47,0x52,0x41,0x4d};
uchar cgon[8]={0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff};
uchar cgoff[8]={0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00};

void delay(uint nnn)
{
  uint mmm;
  while(nnn-->0)
  for(mmm=0;mmm<888;mmm++){ }
}

void w_code(uchar c)
{
  RS=0;RW=1;
CCC:
  P1=0xff;E=1;
  stats[0]=P1;
  E=0;
  stats[0]=stats[0]&0x80;
  if((stats[0]-0x00)>0)
  { goto CCC;}
  else {}
  RW=0;
  P1=c;
  E=1;E=0;
}

void w_data(uchar d)
{
  RS=0;RW=1;
DDD:
  P1=0xff;E=1;
  stats[0]=P1;
  E=0;
  stats[0]=stats[0]&0x80;
  if((stats[0]-0x00)>0)
  { goto DDD;}
  else {}
  RS=1;
  RW=0;
  P1=d;
  E=1;E=0;
}

void w_cgrom(uchar cgadr,uchar *str)
{
  uchar cgi,cgj;
  for(cgj=0;cgj<16;cgj++)
  {
    for(cgi=0;cgi<8;cgi++)
    {
      w_code(cgadr+cgi+8*cgj);
      w_data(str[cgi]);
    }
  }
}

void initial()
{
  w_code(0x38);delay(1);
  w_code(0x0c);delay(1);
  w_code(0x06);delay(1);
  w_code(0x01);delay(1);
}

void display1(uchar adr,uchar *str)
{
  uchar i;
  w_code(adr);
  for(i=0;i<16;i++)
  { w_data(str[i]);}
  w_code(adr+0x40);
  for(i=16;i<32;i++)
  { w_data(str[i]);}
}

void display2(uchar adr,uchar su,uchar length)
{
  uchar i;
  w_code(adr);
  for(i=0;i<length;i++)
  { w_data(su);}
}

void main()
{
  uchar i,k1,k2,k3;
  initial();
  while(1)
  {
/*  display title */
    display1(0x80,title);
    delay(400);
/*  display all on */
    w_cgrom(0x40,cgon);
    w_code(0x80);
    for(i=0;i<16;i++)
    { w_data(i);}
    w_code(0xc0);
    for(i=0;i<16;i++)
    { w_data(i);}
    delay(100);
/*  display all off */
    w_cgrom(0x40,cgoff);
    w_code(0x80);
    for(i=0;i<16;i++)
    { w_data(i);}
    w_code(0xc0);
    for(i=0;i<16;i++)
    { w_data(i);}
    delay(100);
/*  display all characters */
    k1=0x20;k3=0x80;
    for(k2=0;k2<0x10;k2++)
    {
      display2(k3+k2,k1+k2,0x01);
    }
    k1=0x30;k3=0xc0;
    for(k2=0;k2<0x10;k2++)
    {
      display2(k3+k2,k1+k2,0x01);
    }
    delay(200);
    k1=0x40;k3=0x80;
    for(k2=0;k2<0x10;k2++)
    {
      display2(k3+k2,k1+k2,0x01);
    }
    k1=0x50;k3=0xc0;
    for(k2=0;k2<0x10;k2++)
    {
      display2(k3+k2,k1+k2,0x01);
    }
    delay(200);
    k1=0x60;k3=0x80;
    for(k2=0;k2<0x10;k2++)
    {
      display2(k3+k2,k1+k2,0x01);
    }
    k1=0x70;k3=0xc0;
    for(k2=0;k2<0x10;k2++)
    {
      display2(k3+k2,k1+k2,0x01);
    }
    delay(200);
    k1=0xa0;k3=0x80;
    for(k2=0;k2<0x10;k2++)
    {
      display2(k3+k2,k1+k2,0x01);
    }
    k1=0xb0;k3=0xc0;
    for(k2=0;k2<0x10;k2++)
    {
      display2(k3+k2,k1+k2,0x01);
    }
    delay(200);
    k1=0xc0;k3=0x80;
    for(k2=0;k2<0x10;k2++)
    {
      display2(k3+k2,k1+k2,0x01);
    }
    k1=0xd0;k3=0xc0;
    for(k2=0;k2<0x10;k2++)
    {
      display2(k3+k2,k1+k2,0x01);
    }
    delay(200);
    k1=0xe0;k3=0x80;
    for(k2=0;k2<0x10;k2++)
    {
      display2(k3+k2,k1+k2,0x01);
    }
    k1=0xf0;k3=0xc0;
    for(k2=0;k2<0x10;k2++)
    {
      display2(k3+k2,k1+k2,0x01);
    }
    delay(200);
  }
}

⌨️ 快捷键说明

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