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

📄 t6963.lst

📁 T6963为控制芯片的液晶驱动程序
💻 LST
📖 第 1 页 / 共 3 页
字号:
 260          0x06,0x0C,0x18,0x18,0x18,0x30,0x00,0x00,
 261          0x00,0x00,0x00,0x00,0x00,0x00,0x71,0xDB, /*-- ~ --*/
 262          0x8E,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
 263          0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, /*-- . --*/
 264          0x00,0x00,0x1C,0x1C,0x00,0x00,0x00,0x00
 265          };
 266          
 267          typedef struct typFNT_GB16        // 汉字字模数据结构
 268                  {
 269                  char Index[2];
 270                  char Msk[32];
 271                  };
 272          
 273          
 274          code struct typFNT_GB16  GB_16[] = 
 275          {  // 显示为16*16
 276          "中",   0x01,0x00,0x01,0x00,0x21,0x08,0x3F,0xFC,
 277                  0x21,0x08,0x21,0x08,0x21,0x08,0x21,0x08,
 278                  0x21,0x08,0x3F,0xF8,0x21,0x08,0x01,0x00,
 279                  0x01,0x00,0x01,0x00,0x01,0x00,0x01,0x00,
 280          "文",   0x02,0x00,0x01,0x00,0x01,0x00,0xFF,0xFE,
 281                  0x08,0x20,0x08,0x20,0x08,0x20,0x04,0x40,
 282                  0x04,0x40,0x02,0x80,0x01,0x00,0x02,0x80,
 283                  0x04,0x60,0x18,0x1E,0xE0,0x08,0x00,0x00,
 284          "测",   0x40,0x02,0x27,0xC2,0x24,0x42,0x84,0x52,
 285                  0x45,0x52,0x55,0x52,0x15,0x52,0x25,0x52,
 286                  0x25,0x52,0x25,0x52,0xC5,0x52,0x41,0x02,
 287                  0x42,0x82,0x42,0x42,0x44,0x4A,0x48,0x04,
 288          "试",   0x00,0x20,0x40,0x28,0x20,0x24,0x30,0x24,
 289                  0x27,0xFE,0x00,0x20,0xE0,0x20,0x27,0xE0,
 290                  0x21,0x20,0x21,0x10,0x21,0x10,0x21,0x0A,
 291                  0x29,0xCA,0x36,0x06,0x20,0x02,0x00,0x00
 292          };
 293          uchar gCurRow,gCurCol; // 当前行列存储行高16 点列宽8点
 294          /************************************************/
 295          /* 取当前行数据*/   // 当前行列存储行高16 点列宽8点
 296          /************************************************/
 297          uchar fnGetRow(void)
 298          {
 299   1          return(gCurRow);
 300   1      }
 301          /************************************************/
 302          /* 取当前列数据*/
 303          /************************************************/
C51 COMPILER V7.50   T6963                                                                 06/10/2007 18:45:08 PAGE 6   

 304          unsigned char fnGetCol(void)
 305          {
 306   1          return(gCurCol);
 307   1      }
 308           
 309          
 310          /************************************************/
 311          /* 状态位STA1,STA0判断读写指令和读写数据*/
 312          /* 在读写数据或者写入命令前必须保证均为1 */
 313          /************************************************/
 314          unsigned char fnSTA01(void)
 315          {
 316   1          uchar i;
 317   1          for(i=10;i>0;i--)
 318   1          {
 319   2              if((LCMCW & 0x03) == 0x03) // 读取状态
 320   2              {
 321   3                  break;
 322   3              }
 323   2          }
 324   1          return(i); // 若返回零说明错误
 325   1      }
 326          /********************************************/
 327          /* 检查STA2,如果STA2=1 为自动读状态*/
 328          /*****************************************/
 329          uchar fnSTA2(void)
 330          {
 331   1          unsigned char i;
 332   1          for(i=10;i>0;i--)
 333   1          {
 334   2              if((LCMCW & 0x04) == 0x04)
 335   2              {
 336   3                  break;
 337   3              }
 338   2          }
 339   1          return(i); // 若返回零说明错误
 340   1      }
 341          /***********************************************/
 342          /* 状态位STA3 判断STA3 = 1 数据自动写状态*/
 343          /***********************************************/
 344          unsigned char fnSTA3(void)
 345          {
 346   1          unsigned char i;
 347   1          for(i=10;i>0;i--)
 348   1          {
 349   2              if((LCMCW & 0x08) == 0x08)
 350   2              {
 351   3                  break;
 352   3              }
 353   2          }
 354   1          return(i); // 若返回零说明错误
 355   1      }
 356          /************************************************/
 357          /* 状态位STA6 判断STA6 =1 屏读/屏拷贝状态*/
 358          /************************************************/
 359          uchar fnSTA6(void)
 360          {
 361   1          unsigned char i;
 362   1          for(i=10;i>0;i--)
 363   1          {
 364   2              if((LCMCW & 0x40) == 0x40)
 365   2              {
C51 COMPILER V7.50   T6963                                                                 06/10/2007 18:45:08 PAGE 7   

 366   3                  break;
 367   3              }
 368   2          }
 369   1          return(i); // 若返回零说明错误
 370   1      }
 371          /************************/
 372          /* 写双参数的指令*/
 373          /************************/
 374          unsigned char fnPR1(unsigned char uCmd,unsigned char uPar1,unsigned char uPar2)
 375          {
 376   1          if(fnSTA01() == 0)
 377   1          {
 378   2              return 1;
 379   2          }
 380   1          LCMDW=uPar1;
 381   1          if(fnSTA01() == 0)
 382   1          {
 383   2              return 2;
 384   2          }
 385   1          LCMDW=uPar2;
 386   1          if(fnSTA01() == 0)
 387   1          {
 388   2              return 3;
 389   2          }
 390   1          LCMCW=uCmd;
 391   1          return(0); // 返回0 成功
 392   1      }
 393          /************************/
 394          /* 写单参数的指令*/
 395          /************************/
 396          unsigned char fnPR11(unsigned char uCmd,unsigned char uPar1)
 397          {
 398   1          if(fnSTA01() == 0)
 399   1          {
 400   2              return 1;
 401   2          }
 402   1          LCMDW=uPar1;
 403   1          if(fnSTA01() == 0)
 404   1          {
 405   2              return 2;
 406   2          }
 407   1          LCMCW=uCmd;
 408   1          return(0); // 返回0 成功 
 409   1      }
 410          /************************/
 411          /* 写无参数的指令*/
 412          /************************/
 413          unsigned char fnPR12(unsigned char uCmd)
 414          {   
 415   1          if(fnSTA01() == 0)
 416   1          {
 417   2              return 1;
 418   2          }
 419   1         LCMCW=uCmd;
 420   1          return(0); // 返回0 成功
 421   1      }
 422          /************************/
 423          /* 写数据*/
 424          /************************/
 425          unsigned char fnPR13(unsigned char uData)
 426          {
 427   1          if(fnSTA3() == 0)
C51 COMPILER V7.50   T6963                                                                 06/10/2007 18:45:08 PAGE 8   

 428   1          {
 429   2              return 1;
 430   2          }
 431   1          LCMDW=uData;
 432   1          return(0); // 返回0 成功
 433   1      }
 434          /************************/
 435          /* 读数据*/
 436          /************************/
 437          unsigned char fnPR2(void)
 438          {
 439   1         // unsigned char temp;
 440   1          if(fnSTA01() == 0)
 441   1          {
 442   2               return 1; // 获取状态如果状态错
 443   2          }
 444   1          return(LCMDW); // 返回数据
 445   1      }
 446          
 447          
 448          
 449          /************************/
 450          /* 设置当前地址*/   //RAM里
 451          /************************/
 452          void fnSetPos(unsigned char urow, unsigned char ucol)
 453          {
 454   1          unsigned int iPos;
 455   1          iPos = (unsigned int)urow * 30 + ucol;   //?~~~~~~~~~~~~~~~~~~
 456   1          fnPR1(LC_ADD_POS,iPos & 0xFF,iPos / 256);
 457   1          gCurRow = urow;
 458   1          gCurCol = ucol;
 459   1      }
 460          /**********************/
 461          /* 设置当前显示行列*/
 462          /**********************/
 463          void cursor(unsigned char uRow, unsigned char uCol)
 464          {
 465   1          fnSetPos(uRow * 16, uCol);
 466   1      }
 467          /*********************/
 468          /* 清屏*/
 469          /*********************/
 470          void cls(void)
 471          {
 472   1          unsigned int i;
 473   1          fnPR1(LC_ADD_POS,0x00,0x00); // 置地址指针为从零开始
 474   1          fnPR12(LC_AUT_WR); // 自动写
 475   1          for(i=0;i<240*128/8;i++) // 清一屏
 476   1          {
 477   2              fnSTA3();
 478   2              fnPR13(0x0); // 写数据实际使用时请将0x55 改成0x0
 479   2          }
 480   1          fnPR12(LC_AUT_OVR); // 自动写结束
 481   1          fnPR1(LC_ADD_POS,0x00,0x00); // 重置地址指针
 482   1          gCurRow = 0; // 置地址指针存储变量
 483   1          gCurCol = 0;
 484   1      }
 485          /************************/
 486          /* LCM 初始化*/
 487          /************************/
 488          char fnLCMInit(void)
 489          {
C51 COMPILER V7.50   T6963                                                                 06/10/2007 18:45:08 PAGE 9   

 490   1          if(fnPR1(LC_TXT_STP,0x00,0x00) != 0) // 文本显示区首地址
 491   1          {
 492   2              return (0xff);
 493   2          }
 494   1          fnPR1(LC_TXT_WID,0x1E,0x00); // 文本显示区宽度
 495   1          fnPR1(LC_GRH_STP,0x00,0x00); // 图形显示区首地址
 496   1          fnPR1(LC_GRH_WID,0x1E,0x00); // 图形显示区宽度
 497   1          fnPR12(LC_CUR_SHP | 0x01); // 光标形状
 498   1          fnPR12(LC_MOD_OR); // 显示方式设置
 499   1          fnPR12(LC_DIS_SW | 0x08); // 显示开关设置
 500   1          return(0);
 501   1      }
 502          /********************************************************/
 503          /* ASCII(8*16) 及 汉字(16*16) 显示函数      */
 504          /********************************************************/
 505          unsigned char dprintf(unsigned char x,unsigned char y, char *ptr)
 506          {
 507   1          unsigned char c1,c2,cData;
 508   1          unsigned char i,j,uLen,uRow,uCol;
 509   1          unsigned int  k;
 510   1          uLen=0;
 511   1          i=0;
 512   1          uRow = y;
 513   1          uCol = x;
 514   1          fnSetPos(uRow*16,uCol);      //起点定位
 515   1          while (ptr[uLen]!=0) //探测字串长度
 516   1          {
 517   2              uLen++;
 518   2          }   
 519   1          while(i<uLen)
 520   1          {
 521   2              c1 = ptr[i];
 522   2              c2 = ptr[i+1];
 523   2              //ascii字符与汉字内码的区别在于128做分界,大于界线的为汉字码
 524   2              uRow = fnGetRow();    
 525   2              uCol = fnGetCol();
 526   2              if(c1 <=128)    // ASCII
 527   2              {

⌨️ 快捷键说明

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