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

📄 g12864b.c

📁 128*64液晶模块图形显示应用实例编程
💻 C
字号:
/* --------------- TESTING FOR GS-G1286414YLY -- */

#include<reg51.h>

#define  RW     P3_1  
#define  EL     P3_2
#define  CS1    P1_0     /* E1: IC1 片选端,E2: IC2 */
#define  CS2    P1_1
#define  RESET  P1_2   /* RW=0,写数据; RW=1;读数据处理 */ 
#define  RS     P3_0   /* RS = 1 ,指向数据 ; RSCS1 = 0 ,指向命令寄存器 */
#define  BF     P0_7
#define TT     5

uchar code AA[]={20,36,68,132,100,28,32,24,15,232,8,8,
40,24,8,0,32,16,76,67,67,44,32,16,12,3,6,24,48,96,32,0};

uchar code BB[]={64,65,206,4,0,252,4,2,2,252,
4,4,4,252,0,0,64,32,31,32,
64,71,66,65,64,95,64,66,68,67,64,0};

uchar code CC[]={0,64,66,68,92,200,64,127,64,192,
80,78,68,96,64,0,0,128,64,32,
24,7,0,0,0,63,64,64,64,64,120,0};

uchar code DD[]={0,248,0,0,254,64,48,143,10,8,
24,104,8,136,8,0,0,31,0,0,
127,0,0,127,33,33,63,33,33,127,1,0};

uchar code EE[]={0,0,0,224,32,32,32,63,36,36,
36,244,36,0,0,0,0,64,48,7,
18,98,2,10,18,98,2,15,16,96,0,0};

uchar code FF[]={254,2,18,42,198,136,200,184,143,232,
136,136,136,136,0,0,255,0,2,4,
3,4,4,4,4,255,4,4,4,4,4,0};

uchar code GG[]={16,208,255,80,144,4,244,84,95,84,
84,95,244,4,0,0,3,0,255,0,
0,132,133,69,53,15,21,37,101,196,68,0};

uchar code HH[]={16,16,255,16,16,0,8,8,255,8,
8,8,248,0,0,0,8,24,15,4,
133,65,49,13,3,5,9,17,49,97,33,0};

uchar code KKK[]= {0,0,0,0,0,0,0,0,0,0,0,0,0,
                   0,0,0,0,0,66,127,64,0,0,0, 
                   0,98,81,73,73,70,0,0,0,54,73,
                   73,73,54,0,0,0,8,62,28,62,8,
                   0,0,0,60,74,73,73,48,0,0,0,24,
                   20,18,127,16,0,0};


uchar code Baa[]={0,54,73,73,73,54,0,0};


/*------------------------- 延时子程序--------- */
void delay(uint times)
{
 
  while(times)times--;
}

 



/* -------------------------忙音检测 --------------*/

void  CheckBF(bit CS)       /* cs=0,检查IC1     CS=1检查IC2 */
{   
   bit temp;
   RS=0;
   RW=1;
       
    if(CS)CS2=1;
                  else CS1=1;
           
        do {  
              EL=1;
              temp=BF;
              EL=0;
                        }while(temp);
     
         
  CS1=0;    /* 总线释放 ,芯片处高阻状态 */  
  CS2=0;
 
} 
 

/*-----------写命令···寄存器 ------ -----------*/

void  Wcode(bit CC1,uchar dd1) /* 选择芯片 、数据 */
{
       CheckBF(CC1);
       RS=0;
       RW=0;
      

 if(CC1)CS2=1;
    
   else CS1=1;
              P0=dd1;
              EL=1;
              delay(TT);
              EL=0;        /* 写入指令 */ 
            
   CS1=0;  /* 总线释放 ,芯片处高阻状态 */  
   CS2=0;   
                      }

/* -------   写显示数据····· to DDRAM --------*/


void Wdata(bit CC2,uchar dd2)
{

   CheckBF(CC2);
       RS=1;
       RW=0;
      

 if(CC2)CS2=1;
    
   else CS1=1;
              P0=dd2;
              EL=1;
              delay(TT);
              EL=0;        /* 数据写入RAM */ 
            
   CS1=0; /* 总线释放 ,芯片处高阻状态 */  
   CS2=0;   

    }        


  /* ------------- 清 屏 子 程 序 -------------------*/  
void  CLR()
{
  uchar n;
  uchar m;
  for(n=0;n<=7;n++)
{
   Wcode(0,(0xb8+n));  /* Setting Page 0 -- 7 */
   Wcode(1,(0xb8+n));
    
   Wcode(0,0x40);      ;/* 列 =0 */
   Wcode(1,0x40);

   for(m=0;m<=63;m++)
   {

   Wdata(0,0x0);
   Wdata(1,0x0);  
   }
   
}     }



/*================================================================  */
/*=============================== 显示主程序 ========== */
/*================================================================  */
 

 
 void main()
{
  uchar n;
  uchar m;
  uchar yy; 
  P0=0x00;
/* --------- 初始化地区------------------------------------------*/ 
     
     
  RESET=0;
  delay(200);
  RESET=1;      /* 软 件 复 位  */
  
  CS1=0;    /* 总线释放 ,芯片处高阻状态 */    
  CS2=0;
  
  Wcode(0,0xb8);  /* 设置页面Page= 0  */
  Wcode(1,0xb8);
  
  Wcode(0,0xc0);  /* 设置显示首行地址 =00  ,(00 --63) */
  Wcode(1,0xc0);
 
  Wcode(0,0x40);  /* 设置 x 轴地址 = 00 ,(00-63)  */
  Wcode(1,0x40);
 
  Wcode(0,0x3f);  /* 开屏显示 */
  Wcode(1,0x3f);


while(1)
{
 
  CLR();

/*--------- 显示“欢迎光临 128*64 点阵模块” 于 2、3 行------- */

 
/*------------------------  左屏显示“欢迎光临”------------------------- */  
  
   Wcode(0,(0xb8+1));  /* Setting Page 0 -- 7*/
   Wcode(0,0x40);      ;/* 列 = 0 */ 
    
   for(n=0;n<=15;n++) Wdata(0,AA[n]); /* 上部分 */
   
   for(n=0;n<=15;n++) Wdata(0,BB[n]);
   
   for(n=0;n<=15;n++) Wdata(0,CC[n]);
   
   for(n=0;n<=15;n++) Wdata(0,DD[n]);

       
    
   Wcode(0,(0xb8+2));  /* Setting Page 0 -- 7*/
   Wcode(0,0x40);      ;/* 列 = 0 */ 
    
   for(n=16;n<=31;n++) Wdata(0,AA[n]); /* 下部分 */
   
   for(n=16;n<=31;n++) Wdata(0,BB[n]);
   
   for(n=16;n<=31;n++) Wdata(0,CC[n]);
   

   for(n=16;n<=31;n++) Wdata(0,DD[n]);  


/*------------------------  左屏显示“  128*64 ”------------------------- */  

   Wcode(0,(0xb8+6));  /* Setting Page 0 -- 7*/
   Wcode(0,0x40);      ;/* 列 = 0 */ 
    
   for(n=0;n<=63;n++) Wdata(0,KKK[n]); /* 上部分 */

  
 /*------------------------  右屏显示“点阵模块”------------------------- */
  
   Wcode(1,(0xb8+5));  /* Setting Page 0 -- 7*/
   Wcode(1,0x40);      ;/* 列 = 0 */ 
    
   for(n=0;n<=15;n++) Wdata(1,EE[n]); /* 上部分 */
   
   for(n=0;n<=15;n++) Wdata(1,FF[n]);
   
   for(n=0;n<=15;n++) Wdata(1,GG[n]);
   
   for(n=0;n<=15;n++) Wdata(1,HH[n]);

       
    
   Wcode(1,(0xb8+6));  /* Setting Page 0 -- 7*/
   Wcode(1,0x40);      ;/* 列 = 0 */ 
    
   for(n=16;n<=31;n++) Wdata(1,EE[n]); /* 下部分 */
   
   for(n=16;n<=31;n++) Wdata(1,FF[n]);
   
   for(n=16;n<=31;n++) Wdata(1,GG[n]);
   
   for(n=16;n<=31;n++) Wdata(1,HH[n]);  
  
   for(n=6;n>=1;n--)delay(5000);

   CLR(); 
 
   /* ------------- 88888 屏 -------------------*/

   
  for(n=0;n<=7;n++)
{
   Wcode(0,(0xb8+n));  /* Setting Page 0 -- 7 */
   Wcode(1,(0xb8+n));
    
   Wcode(0,0x40);      ;/* 列 =0 */
   
   for(yy=0;yy<=7;yy++)
{
   for(m=0;m<=7;m++) Wdata(0,Baa[m]);
 
    delay(100);
  }

   Wcode(1,0x40);

   
   for(yy=0;yy<=7;yy++)
{
   for(m=0;m<=7;m++) Wdata(1,Baa[m]);
 
   
}

  delay(10000);               

}

    
   CLR();

  /* ------------- 横 扫 屏 -------------------*/
   
 
   Wcode(0,(0xb8+7));  /* Setting Page 0 -- 7 */
   Wcode(1,(0xb8+7));
    
   Wcode(0,0x40);      ;/* 列 =0 */
   Wcode(1,0x40);

   for(m=0;m<=63;m++)
   {

   Wdata(0,0x80);
   Wdata(1,0x80);  
   }
 
  
  for(n=0;n<=63;n++)   
 {
       Wcode(0,0xc0+n);  /* 设置 x 轴地址 = 00 ,(00-63)  */
       Wcode(1,0xc0+n);
                          
       
       delay(10000);      /* 暂停 1秒 */
                  
   }  

CLR();


/* ------------- 竖 扫 屏 -------------------*/
  
 
for(m=0;m<=63;m++)
{

for(n=0;n<=7;n++)   /*------ 画线条 ------*/
{
  
Wcode(0,(0xb8+n));  /* Setting Page 0 -- 7 */
Wcode(0,(0x40+m));  /* 列 =0 */
Wdata(0,0xff);
}

delay(10000);  /* 线条停留时间 */


for(n=0;n<=7;n++)     /* -----铲除痕迹 -------*/
{
  
Wcode(0,(0xb8+n));  /* Setting Page 0 -- 7 */
Wcode(0,(0x40+m));  /* 列 =0 */
Wdata(0,0x0);
}  }
 

 
for(m=0;m<=63;m++)
{

for(n=0;n<=7;n++)   /*------ 画线条 ------*/
{
  
Wcode(1,(0xb8+n));  /* Setting Page 0 -- 7 */
Wcode(1,(0x40+m));  /* 列 =0 */
Wdata(1,0xff);
}

delay(10000);  /* 线条停留时间 */


for(n=0;n<=7;n++)     /* -----铲除痕迹 -------*/
{
  
Wcode(1,(0xb8+n));  /* Setting Page 0 -- 7 */
Wcode(1,(0x40+m));  /* 列 =0 */
Wdata(1,0x0);
}  }
 

/*--------- 交替显示1 隔行隔离 ------- */


 
 for(n=0;n<=7;n++)
{
   Wcode(0,(0xb8+n));  /* Setting Page 0 -- 7*/
   Wcode(1,(0xb8+n));
    
   Wcode(0,0x40);      ;/* 列 =0 */
   Wcode(1,0x40);

   for(m=0;m<=31;m++)  
   {

   Wdata(0,0x55);
   Wdata(0,0xaa);
   Wdata(1,0x55);
   Wdata(1,0xaa);
      }
}
 
for(n=6;n>=1;n--)delay(10000); 

CLR();

/*--------- 交替显示2 隔行隔离 ------- */


 
 for(n=0;n<=7;n++)
{
   Wcode(0,(0xb8+n));  /* Setting Page 0 -- 7*/
   Wcode(1,(0xb8+n));
    
   Wcode(0,0x40);      ;/* 列 =0 */
   Wcode(1,0x40);

   for(m=0;m<=31;m++)  
   {

   Wdata(0,0xaa);
   Wdata(0,0x55);
   Wdata(1,0xaa);
   Wdata(1,0x55);
      }
}

for(n=6;n>=1;n--)delay(10000);

}

}     /* ----------------------程序到此结束啦!! */
 
  
   

⌨️ 快捷键说明

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