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

📄 复件 11111111111.c

📁 液晶MGLS2401128TA的控制程序
💻 C
字号:
#include  <reg51.h>
#include  <stdio.h>
#include  <math.h>
#include  <absacc.h>
#define  LCMDW  XBYTE[0xf3ff]   /*定义数据口*/
#define  LCMCW  XBYTE[0xfbff]    /*定义指令口*/
#define uint  unsigned   int
#define uchar  unsigned  char
sbit LED=P3^4;
uchar code  hzcode[8][16]={0x00,0x40,0x37,0x10,0x83,0x60,0x2F,0x08,    /* 
清     代码为00*/
0x13,0x22,0xE3,0x22,0x23,0x22,0x22,0x22,
0x40,0x48,0xFC,0x40,0xF8,0x40,0xFE,0x08,
0xFC,0x08,0xF8,0x08,0xF8,0x08,0x28,0x10,
0x04,0x04,0x08,0x08,0x18,0x29,0x4A,0x08,    /* 华       代码为01*/
0x09,0x01,0xFF,0x01,0x01,0x01,0x01,0x01,
0x40,0x48,0x58,0x60,0xC0,0x40,0x44,0x44,
0x3C,0x00,0xFE,0x00,0x00,0x00,0x00,0x00,
0x01,0x01,0x01,0x01,0x01,0xFF,0x01,0x02,    /* 大            代码为02*/
0x02,0x02,0x04,0x04,0x08,0x10,0x60,0x00,
0x00,0x00,0x00,0x00,0x04,0xFE,0x00,0x80,
0x80,0x40,0x40,0x20,0x10,0x0E,0x04,0x00,
0x22,0x11,0x11,0x00,0x7F,0x40,0x80,0x1F,    /* 学                 代码为03*/
0x00,0x01,0xFF,0x01,0x01,0x01,0x05,0x02,
0x08,0x08,0x10,0x20,0xFE,0x02,0x04,0xE0,
0x40,0x84,0xFE,0x00,0x00,0x00,0x00,0x00};
void  fnChkST01(void)            /*检查ST0和ST1的状态*/
{
uchar i;
for(i=16;i>0;i--)
  {
   if((LCMCW & 0x03)==0x03)
       break;
  }
}

void  fnChkST3(void)            /*检查ST3数据自动写的状态*/
{
uchar i;
for(i=16;i>0;i--)
  {
   if((LCMCW & 0x08)==0x08)
       break;
  }
}

void fnCmd0(uchar uCmd)      /*一个命令写*/
{
  fnChkST01();
  LCMCW=uCmd;
}
void  fnCmd1(uchar uCmd, uchar uPar1)  /*一个命令和一个数据写*/
{
  fnChkST01();
  LCMDW=uPar1;
  fnCmd0(uCmd);
}

void  fnCmd2(uchar uCmd, uchar uPar1,uchar uPar2)  /*一个命令和2个数据写*/
{
  fnChkST01();
  LCMDW=uPar1;
  fnCmd1(uCmd,uPar2);
}
void cls_graph(void)     /*清屏图形区*/
{
  uchar i,j;
  fnCmd2(0x24,0x00,0x20);   /*set address  pointer*/
  fnCmd0(0xB0);               /*data auto write */
  for(i=0;i<128;i++)
   {
     for(j=0;j<30;j++)
     {fnChkST3();
      LCMDW=0x00;
     }
   }
  fnCmd0(0xB2);                /* end data auto write */
}

void cls_text(void)     /*清屏文本区*/
{
  uchar i,j;
  fnCmd2(0x24,0x00,0x20);   /*set address  pointer*/
  fnCmd0(0xB0);               /*data auto write */
  for(i=0;i<16;i++)
   {
     for(j=0;j<30;j++)
     {
      fnChkST3();
      LCMDW=0x0F;
     }
   }
  fnCmd0(0xB2);                /* end data auto write */
}

void fnLCMInit(void)
{
  fnCmd2(0x40,0x00,0x00);
  fnCmd2(0x41,20,0x00);
  fnCmd2(0x42,0x00,0x20);
  fnCmd2(0x43,30,0x00);
  fnCmd0(0xA0|0x01);
  fnCmd0(0x80);
  fnCmd0(0x90|0x0F);
}

void fnsetpos(uchar line,uchar lie)          /*设定显示地址*/
{ uint ipos;
  ipos=line*20+lie;
  fnCmd2(0x24,ipos & 0xFF,ipos/256);
}

void fnshowHZ(uchar line,uchar lie ,uchar hzdaima)   /*显示一个汉字   其中
hzdaima为汉字代码*/
  {
    uchar i;
    uint   startaddr;
    startaddr=line*0x20+lie;
    for(i=0;i<16;i++)
    {
      fnCmd2(0x24,startaddr & 0xff,startaddr/256);   /*置显示地址*/
      fnCmd1(0xc0,hzcode[hzdaima*2][i]);                       /*写左半部数据*/
      fnCmd1(0xc4,hzcode[hzdaima*2+1][i]);                    /*写右半部数据*/
      startaddr=startaddr+0x20;                              /*显示地址修正*/
    }
  }
main()
{ 
   uchar code tab[11]=
{0x37,0x45,0x4c,0x43,0x4f,0x4d,0x45,0x00,0x39,0x4f,0x55}; /*显示Welcome You*/
LED=0;  
fnLCMInit();
  cls_text();
  cls_graph();
  
  for(; ;)
   {  uint i;
      
      uint      Line;
      uint      Lie;
      uchar     HZDaim;
      fnsetpos(0x00,0x00);    /*显示Welcome You */
      fnCmd0(0xB0);
      for(i=0;i<11;i++)
       { 
         fnChkST3();
         
         LCMDW=tab[i];
       }
      fnCmd0(0xB2);
      
      
        Line=0x0a;               /*显示一个汉字 " 清 " */
        Lie=0x17;
        HZDaim=0x00;

         fnshowHZ(Line,Lie,  HZDaim);  
		 LED=1;
   }
}

⌨️ 快捷键说明

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