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

📄 ocm240128.c

📁 一个经过测试的液晶驱动程序
💻 C
📖 第 1 页 / 共 3 页
字号:
0x80,0x00,0x00,0x01,0xF9,0x00,0x7F,0xC0,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x01,
0x80,0x00,0x00,0x01,0xF0,0x00,0x03,0xC0,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x01,
0x80,0x00,0x00,0x01,0xF0,0x00,0x01,0xC0,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x01,
0x80,0x00,0x00,0x01,0xE0,0x00,0x00,0xE0,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x01,
0x80,0x00,0x00,0x01,0xE0,0x00,0x00,0xF0,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x01,
0x80,0x00,0x00,0x01,0xC0,0x00,0x00,0xF0,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x01,
0x80,0x00,0x00,0x01,0xC0,0x00,0x00,0xF0,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x01,
0x80,0x00,0x00,0x01,0xC0,0x00,0x1E,0xC0,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x01,
0x80,0x00,0x00,0x01,0xC0,0x00,0x1E,0xC0,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x01,
0x80,0x00,0x00,0x01,0xE0,0x00,0x03,0x30,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x01,
0x80,0x00,0x00,0x01,0xE0,0x00,0x03,0x30,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x01,
0x80,0x00,0x00,0x01,0xE0,0x00,0x02,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x01,
0x80,0x00,0x00,0x01,0xE0,0x00,0x02,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x01,
0x80,0x00,0x00,0x02,0xD0,0x00,0x1C,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x01,
0x80,0x00,0x00,0x02,0xD0,0x00,0x1C,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x01,
0x80,0x00,0x00,0x04,0x8E,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x01,
0x80,0x00,0x00,0x04,0x8E,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x01,
0x80,0x00,0x00,0x08,0xC0,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x01,
0x80,0x00,0x00,0x08,0xC0,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x01,
0x80,0x00,0x00,0x30,0xCD,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x01,
0x80,0x00,0x00,0x30,0xCD,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x01,
0x80,0x00,0x00,0xC0,0xC0,0xC0,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x01,
0x80,0x00,0x00,0xC0,0xC0,0xC0,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x01,
0x80,0x00,0x0A,0x08,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x01,
0x80,0x00,0x0A,0x08,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x01,
0x80,0x03,0xF2,0x08,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x01,
0x80,0x03,0xF2,0x08,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x01,
0x80,0x00,0x0C,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x01,
0x80,0x00,0x0C,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x01,
0xC0,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x03,
0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF
};


/*---------------延时子程序----------------*/
void delay (uint us)
{
  while(us--);
}
void delay1 (uint ms)
{
  uint i,j;
  for(i=0;i<ms;i++)
  for(j=0;j<1000;j++)
  ;
}
/*------------写命令或数据到LCD--------------*/
void wr_od (uchar dat,uchar comm)       //写一个数据和一个命令
{
  wr_data(dat);
  wr_comm(comm);
}
void wr_td (uchar datl,uchar dath,uchar comm)  //写两个数据和一个命令
{
  wr_data(datl);
  wr_data(dath);
  wr_comm(comm);
}
void wr_xd (uint dat,uchar comm)       //写一个16进制数据和一个命令
{
  uchar datl,dath;
  datl=dat;
  dath=dat>>8;
  wr_data(datl);
  wr_data(dath);
  wr_comm(comm);
}
void wr_auto (uchar dat)               //自动写数据
{
  chk_busy (1);
  cd=0;
  rd=1;
  data_ora=dat;
  wr=0;
  wr=1;
}

void wr_comm (uchar comm)       //写命令
{
  chk_busy (0);
  cd=1;
  rd=1;
  data_ora=comm;
  wr=0;
  wr=1;
}
void wr_data (uchar dat)       //写数据
{
  chk_busy (0);
  cd=0;
  rd=1;
  data_ora=dat;
  wr=0;
  wr=1;
}
void chk_busy (uchar autowr)    //测状态
{
  data_ora=0xff;
  cd=1;
  wr=1;
  rd=0;
  if(autowr)
    {while(bf3==0)
     ;}
  else
    {while((bf0==0)||(bf1==0))
     ;}
  rd=1;
}
/*------------------初始化-----------------*/
void init_lcd (void)
{
  rst=0;
  ;
  rst=1;
  fs=0;
  ce=0;
  wr=1;
  rd=1;
  wr_xd(addr_w,0x40);                   //文本显示区首地址
  wr_xd(addr_t,0x42);                   //图形显示区首地址
  wr_td(width,0x00,0x41);               //文本显示区宽度
  wr_td(width,0x00,0x43);               //图形显示区宽度
  wr_comm(0x81);                        //逻辑"异或"
  wr_td(0x02,0x00,0x22);                //CGRAM偏置地址设置
  wr_comm(0x9c);                        //启用文本显示,启用图形显示
}
/*--------------清RAM------------------*/
void clrram (void)
{
  uchar i,j;
  wr_xd(addr_w,0x24);
  wr_comm(0xb0);
  for(j=0;j<144;j++)
  {
    for(i=0;i<width;i++)
      wr_auto(0x00);
  }
  wr_comm(0xb2);
}
/*--------------显示点阵------------------*/
void disp_dz (uchar data1,uchar data2)
{
  uchar i,j;
  wr_xd(addr_t,0x24);
  wr_comm(0xb0);
  for(j=0;j<32;j++)
  {
    for(i=0;i<width*2;i++)
      wr_auto(data1);
    for(i=0;i<width*2;i++)
      wr_auto(data2);
  }
  wr_comm(0xb2);
}
/*--------------在addr处显示8xl*yl的图形--------------*/
void disp_img (uint addr,uchar xl,uchar yl,uchar code *img)
{
  uchar i,j;
  for(j=0;j<yl;j++)
  {
    for(i=0;i<xl;i++)
    {
      wr_xd(addr+j*width+i,0x24);
      wr_od(img[j*xl+i],0xc0);
    }
  }
}
/*----------在addr处显示row_yl行(每行row_xl个)8xl*yl的文字----------*/
void disp_chn (uint addr,uchar xl,uchar yl,uchar row_xl,uchar row_yl,uchar code *chn)
{
  uchar i,j,k,m;
  for(m=0;m<row_yl;m++)
  {
    for(k=0;k<row_xl;k++)
    {
      for(j=0;j<yl;j++)
      {
        for(i=0;i<xl;i++)
        {
          wr_xd(addr+m*yl*width+k*xl+j*width+i,0x24);
          wr_od(chn[(m*row_xl*xl*yl)+(k*xl*yl)+(j*xl)+i],0xc0);
        }
      }
    }
  }
}
/*--------------显示字符------------------*/
void disp_eng (uchar code *eng)
{
  uchar i,j;
  wr_xd(addr_w,0x24);
  wr_comm(0xb0);
  for(j=0;j<9;j++)
  {
    for(i=0;i<width;i++)
      wr_auto(eng[j*width+i]);
  }
  wr_comm(0xb2);
}
/*------------------主程序--------------------*/
void main ()
{
  SP=0x5f;
  init_lcd ();
  while (1)
  {
    clrram();
    disp_eng(tab11);
    disp_chn(0x0c35,2,16,10,2,tab12);
    delay1(800);
    clrram();
    disp_dz(0xcc,0xcc);
    delay1(800);
    clrram();
    disp_chn(0x025b,3,24,8,5,tab3);
    delay1(800);
    clrram();
    disp_dz(0xcc,0x33);
    delay1(800);
    clrram();
    disp_img(0x01e7,16,128,tab5);
    delay1(800);
  }
}

⌨️ 快捷键说明

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