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

📄 hg192646.c

📁 清达光电液晶驱动192x64
💻 C
📖 第 1 页 / 共 5 页
字号:

/*向LCD发送命令*/
/*command :命令*/
void PR1l()
{
CheckStatel();
rw=0;
LCD12864DataPort=com;
en=1; en=0;/*下将沿*/
}

/*写显示数据*/
/*dat:显示数据*/
void PR2l()
{
CheckStatel();
di=1; rw=0;
LCD12864DataPort=dat1;
en=1; en=0;
}


/*读显示数据*/
unsigned char PR3l()
{
unsigned char dat;
CheckStatel();
di=1; rw=1;
LCD12864DataPort=0xff;
en=1; dat=LCD12864DataPort;
; en=0;


return(dat);
}

/*中屏屏操作*/
/*状态检查*/
void CheckStatem()
{
unsigned char dat;
cs1=1;cs2=0;
di=0;
rw=1;
do{
LCD12864DataPort=0xff;
en=1; dat=LCD12864DataPort; en=0;
dat=0x90 & dat; /*仅当第4rest,7busy 为0时才可操作*/
}while(!(dat==0x00));
}

/*************************************************************/
/*向LCD发送命令*/
/*command :命令*/
void PR1m()
{
CheckStatem();
rw=0;
LCD12864DataPort=com;
en=1; en=0;/*下将沿*/
}

/*写显示数据*/
/*dat:显示数据*/
void PR2m()
{
CheckStatem();
di=1; rw=0;
LCD12864DataPort=dat1;
en=1; en=0;
}


/*读显示数据*/
unsigned char PR3m()
{
unsigned char dat;
CheckStatem();
di=1; rw=1;
LCD12864DataPort=0xff;
en=1; dat=LCD12864DataPort; en=0;
return(dat);
}

/*****************************************/

/*右屏操作*/
/*状态检查*/
void CheckStater()
{
unsigned char dat;
cs1=0;cs2=1;
di=0;
rw=1;
do{
LCD12864DataPort=0xff;
en=1; dat=LCD12864DataPort; en=0;
dat=0x90 & dat; /*仅当第4rest,7busy 为0时才可操作*/
}while(!(dat==0x00));
}
/*************************************************************/
/*向LCD发送命令*/
/*command :命令*/
void PR1r()
{
CheckStater();
rw=0;
LCD12864DataPort=com;
en=1; en=0;/*下将沿*/
}

/*写显示数据*/
/*dat:显示数据*/
void PR2r()
{
CheckStater();
di=1; rw=0;
LCD12864DataPort=dat1;
en=1; en=0;
}


/*读显示数据*/
unsigned char PR3r()
{
unsigned char dat;
CheckStater();
di=1; rw=1;
LCD12864DataPort=0xff;
en=1; dat=LCD12864DataPort; en=0;
return(dat);
}


/******************************************************/
/*  16*16点阵中文写入函数CCW_PR                       */
/*  函数参数选择:PARA1                               */
/*  内部调用函数:PR1(),PR2(),PR4(),PR5(),PR7(),PR8() */
/*  连接字库:      CCTAB                             */
/*  函数调用入口:  CCW_PR()                          */
/*  函数输入变量:  O_X,O_Y,CODE_1                    */
/******************************************************/
CCW_PR()
        {
           unsigned char i,j,k;
                i=0;
                j=para1;
    loop:       com=O_Y|0xb8;  /* 设页地址 */
                PR1l();
                PR1m();
                PR1r();
                  if(O_X<j)   /* 是否小于一片HD61202控制器控制的宽度 */
                     {
                        com=O_X|0x40;
                        PR1l();   /* 小于写左片 */
                        k='L';
                     }
                  else
                     {
                       if(O_X<2*j)   /* 是否小于两片HD61202控制器控制的宽度 */
                         {
                           com=O_X-j|0x40;
                           PR1m();   /* 小于写中片 */
                           k='M';
                         }
                        else
                         {
                           com=(O_X-2*j)|0x40;
                           PR1r();   /* 不小于写右片 */
                           k='R';
                         }
                     }
                      com=com&0x3f;
                  for(count1=i;count1<i+16;count1++)

                     {
                        dat1=CCTAB[code_1][count1];
                             if(k=='L')
                                {
                                   PR2l();
                                }
                             else
                                {
                                  if(k=='M')
                                    {
                                       PR2m();
                                    }
                                   else
                                     {
                                       PR2r();
                                     }
                                }
                                   com++;
                             if(com==j)
                                {
                                      if(k=='L')
                                        {
                                           com=0x40;
                                           PR1m();
                                           k='M';
                                        }
                                      else
                                        {
                                          if(k=='M')
                                            {
                                              com=0x40;
                                              PR1r();
                                              k='R';
                                            }
                                          else
                                           {
                                              goto loop2;
                                           }
                                        }
                                }
                     }
    loop2:         if(i==0)
                     {
                         i=16;
                         O_Y++;
                         if(O_Y==8)
                            {
                                 return;
                            }
                         else
                            {
                                 goto loop;
                            }
                     }
        }



/******************************************/
/*  16*16反白点阵中文写入函数CCW_PR           */                  
/*  函数参数选择:PARA1                               */
/*  内部调用函数:PR1l(),PR2l(),PR1m(),PR1m(),PR1r(),PR1r() */
/*  连接字库:      CCTAB                             */
/*  函数调用入口:  CCW_PR()                          */
/*  函数输入变量:  O_X,O_Y,CODE_1                    */
/******************************************************/
CCW_PR1()
        {
           unsigned char i,j,k;
                i=0;
                j=para1;
    loop:       com=O_Y|0xb8;  /* 设页地址 */
                PR1m();
                PR1l();
                PR1r();
                  if(O_X<j)   /* 是否小于一片HD61202控制器控制的宽度 */
                     {
                        com=O_X|0x40;
                        PR1l();   /* 小于写左片 */
                        k='L';
                     }
                  else
                     {
                       if(O_X<2*j)   /* 是否小于两片HD61202控制器控制的宽度 */
                         {
                           com=O_X-j|0x40;
                           PR1m();   /* 小于写中片 */
                           k='M';
                         }
                        else
                         {
                           com=(O_X-2*j)|0x40;
                           PR1r();   /* 不小于写右片 */
                           k='R';
                         }
                     }
                      com=com&0x3f;
                  for(count1=i;count1<i+16;count1++)

                     {
                        dat1=(CCTAB[code_1][count1]^0xff);
                             if(k=='L')
                                {
                                   PR2l();
                                }
                             else
                                {
                                  if(k=='M')
                                    {
                                       PR2m();
                                    }
                                   else
                                     {
                                       PR2r();
                                     }
                                }
                                   com++;
                             if(com==j)
                                {
                                      if(k=='L')
                                        {
                                           com=0x40;
                                           PR1m();
                                           k='M';
                                        }
                                      else
                                        {
                                          if(k=='M')
                                            {
                                              com=0x40;
                                              PR1r();
                                              k='R';
                                            }
                                          else
                                           {
                                              goto loop2;
                                           }
                                        }
                                }
                     }
    loop2:         if(i==0)
                     {
                         i=16;
                         O_Y++;
                         if(O_Y==8)
                            {
                                 return;
                            }
                         else
                            {
                                 goto loop;
                            }
                     }
        }



/********************************************************/
/*  西文字符写入函数:CW_PR                            */
/*  函数参数选择:PARA1                               */
/*  内部调用函数:PR1(),PR2(),PR4(),PR5(),PR7(),PR8() */
/*  连接字库: CHTAB		                      */
/*  函数调用入口: CW_PR()                            */
/*  函数输入变量: O_X,O_Y,CODE_1                     */
/******************************************************/
CW_PR()
        {
           unsigned char j;
                j=para1;
                com=O_Y|0xb8;  /* 页地址设置 */
                PR1l();
                PR1m();
                PR1r();
              if(O_X<j)  /* 是否小于HD61202控制器控制的宽度 */
                 {
                   com=O_X|0x40;
                   PR1l();   /* 小于写左片 */
                   O_Y='L';
                 }
              else
                 {
                   if(O_X<2*j)   /* 是否小于两片HD61202控制器控制的宽度 */
                     {

⌨️ 快捷键说明

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