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

📄 showfun.lst

📁 51单片机LCD160128驱动程序
💻 LST
📖 第 1 页 / 共 3 页
字号:
 179          uchar fnGetRow();
 180          uchar fnGetCol();
 181          uchar fnST01(); // 状态位STA1,STA0判断(读写指令和读写数据)
 182          uchar fnST2(); // 状态位ST2判断(数据自动读状态)
 183          uchar fnST3(); // 状态位ST3判断(数据自动写状态)
 184          uchar fnST6(); // 状态位ST6判断(屏读/屏拷贝状态)
 185          uchar fnPR1(uchar uCmd,uchar uPar1,uchar uPar2); // 写双参数的指令
 186          uchar fnPR11(uchar uCmd,uchar uPar1); // 写单参数的指令
 187          uchar fnPR12(uchar uCmd); // 写无参数的指令
 188          uchar fnPR13(uchar uData); // 写数据
 189          uchar fnPR2(); // 读数据
 190          void fnSetPos(uchar urow, uchar ucol);  // 设置当前地址
 191          void cursor(uchar uRow, uchar uCol);    //设置当前显示行、列
 192          void at(unsigned char x,unsigned char y);/*设定文本x,y值*/
 193          void cls();      // 清屏
 194          char fnLCMInit(); // LCM 初始化
 195          void charout(uchar *str); //ASCII(8*8) 显示函数
 196          uchar dprintf(uchar x,uchar y,char *fmt);// ASCII(8*16) 及 汉字(16*16) 显示函数
 197          void OutToLCD(uchar Dat,uchar x,uchar y);//显示辅助函数 
 198          
 199          void SetShowMode(uchar newShowModeSW);  
 200          void Line( unsigned char x1, unsigned char y1, unsigned char x2, unsigned char y2, bit Mode);
 201          void Pixel(unsigned char PointX,unsigned char PointY, bit Mode);
 202          
 203          uchar fnGetRow(void)
 204          {
 205   1              return gCurRow;
 206   1      }
 207          
 208          uchar fnGetCol(void)
 209          {
 210   1              return gCurCol;
C51 COMPILER V8.02   SHOWFUN                                                               08/08/2010 09:56:12 PAGE 5   

 211   1      }
 212          
 213          uchar fnST01(void) // 状态位STA1,STA0判断(读写指令和读写数据)
 214          {
 215   1              uchar i;
 216   1              
 217   1              for(i=10;i>0;i--)
 218   1              {
 219   2                      if((LCMCW & 0x03) == 0x03)
 220   2                      break;
 221   2              }
 222   1              return i; // 若返回零,说明错误
 223   1      }
 224          
 225          uchar fnST2(void) // 状态位ST2判断(数据自动读状态)
 226          {
 227   1              uchar i;
 228   1              
 229   1              for(i=10;i>0;i--)
 230   1              {
 231   2                      if((LCMCW & 0x04) == 0x04)
 232   2                      break;
 233   2              }
 234   1              return i; // 若返回零,说明错误
 235   1      }
 236          
 237          uchar fnST3(void) // 状态位ST3判断(数据自动写状态)
 238          {
 239   1              uchar i;
 240   1              
 241   1              for(i=10;i>0;i--)
 242   1              {
 243   2                      if((LCMCW & 0x08) == 0x08)
 244   2                      break;
 245   2              }
 246   1              return i; // 若返回零,说明错误
 247   1      }
 248          
 249          uchar fnST6(void) // 状态位ST6判断(屏读/屏拷贝状态)
 250          {
 251   1              uchar i;
 252   1              
 253   1              for(i=10;i>0;i--)
 254   1              {
 255   2                      if((LCMCW & 0x40) == 0x40)
 256   2                      break;
 257   2              }
 258   1              return i; // 若返回零,说明错误
 259   1      }
 260          
 261          uchar fnPR1(uchar uCmd,uchar uPar1,uchar uPar2) // 写双参数的指令
 262          {
 263   1              if(fnST01() == 0)
 264   1              return 1;
 265   1              LCMDW = uPar1;
 266   1              if(fnST01() == 0)
 267   1              return 2;
 268   1              LCMDW = uPar2;
 269   1              if(fnST01() == 0)
 270   1              return 3;
 271   1              LCMCW = uCmd;
 272   1              return 0; // 返回0成功
C51 COMPILER V8.02   SHOWFUN                                                               08/08/2010 09:56:12 PAGE 6   

 273   1      }
 274          
 275          uchar fnPR11(uchar uCmd,uchar uPar1) // 写单参数的指令
 276          {
 277   1              if(fnST01() == 0)
 278   1              return 1;
 279   1              LCMDW = uPar1;
 280   1              if(fnST01() == 0)
 281   1              return 2;
 282   1              LCMCW = uCmd;
 283   1              return 0; // 返回0成功
 284   1      }
 285          
 286          uchar fnPR12(uchar uCmd) // 写无参数的指令
 287          {
 288   1              if(fnST01() == 0)
 289   1              return 1;
 290   1              LCMCW = uCmd;
 291   1              return 0; // 返回0成功
 292   1      }
 293          
 294          uchar fnPR13(uchar uData) // 写数据
 295          {
 296   1              if(fnST3() == 0)
 297   1              return 1;
 298   1              LCMDW = uData;
 299   1              return 0; // 返回0成功
 300   1      }
 301          
 302          uchar fnPR2(void) // 读数据
 303          {
 304   1              if(fnST01() == 0)
 305   1              return 1;
 306   1              return LCMDW;
 307   1      }
 308          
 309          
 310          void fnSetPos(uchar urow, uchar ucol)   //设置当前地址
 311          {
 312   1              uint iPos;
 313   1              
 314   1              iPos = urow * 20 + ucol;
 315   1              fnPR1(LC_ADD_POS,iPos & 0xFF,iPos / 256);
 316   1              gCurRow = urow;
 317   1              gCurCol = ucol;
 318   1      }
 319          
 320          void cursor(uchar uRow, uchar uCol)     //设置当前显示行、列
 321          {
 322   1              fnSetPos(uRow * 16, uCol);
 323   1      }
 324          void at(unsigned char x,unsigned char y)/*设定文本x,y值*/
 325          {       
 326   1              uint iPos; //地址
 327   1              
 328   1              iPos = x  + y* 20;
 329   1              fnPR1(LC_ADD_POS,iPos&0xff,iPos/256);
 330   1              tCurRow = x;
 331   1              tCurCol = y;
 332   1      }
 333          
 334          // 清屏
C51 COMPILER V8.02   SHOWFUN                                                               08/08/2010 09:56:12 PAGE 7   

 335          void cls(void)
 336          {
 337   1              uint i;
 338   1              
 339   1              fnPR1(LC_ADD_POS,0x00,0x00); // 置地址指针
 340   1              fnPR12(LC_AUT_WR); // 自动写
 341   1              for(i=0;i<0x2000;i++)
 342   1              {
 343   2                      fnST3();
 344   2                      fnPR13(0x00); // 写数据
 345   2              }
 346   1              fnPR12(LC_AUT_OVR); // 自动写结束
 347   1              fnPR1(LC_ADD_POS,0x00,0x00); // 重置地址指针
 348   1              gCurRow = 0; // 置地址指针存储变量
 349   1              gCurCol = 0;
 350   1      }
 351          
 352          // LCM 初始化
 353          char fnLCMInit(void)
 354          {
 355   1              reset=0;
 356   1              reset=1;
 357   1              fnPR1(LC_TXT_STP,0x00,0x00); // 文本显示区首地址
 358   1              fnPR1(LC_TXT_WID,0x14,0x00); // 文本显示区宽度
 359   1              fnPR1(LC_GRH_STP,0x00,0x00); // 图形显示区首地址
 360   1              fnPR1(LC_GRH_WID,0x14,0x00); // 图形显示区宽度
 361   1              fnPR11(LC_CGR_POS,CGRAMSTART >> 11);
 362   1              fnPR12(LC_CUR_SHP | 0x01); // 光标形状
 363   1              fnPR12(LC_MOD_OR); // 显示方式设置
 364   1              fnPR12(LC_DIS_SW |0x08);
 365   1              grhome = GRSTART;
 366   1          txthome = TXTSTART;
 367   1      
 368   1              return 0;
 369   1      }
 370          void charout(uchar *str)
 371          {
 372   1          uchar ch,len,i,uRow,uCol ;
 373   1          len=strlen(str);
 374   1          i=0;
 375   1          uRow = tCurRow;
 376   1          uCol = tCurRow;
 377   1          at(uCol,uRow);
 378   1          while(i<len)
 379   1          {
 380   2              ch=str[i]-0x20;
 381   2              fnPR11(LC_INC_WR,ch);
 382   2              i++;
 383   2          }
 384   1      } 
 385          // ASCII及汉字显示函数
 386          
 387          uchar dprintf(uchar x,uchar y,char *fmt)
 388          {
 389   1              char c1,c2,cData;
 390   1              uchar i=0,j,uLen;
 391   1              uchar k;
 392   1              
 393   1              uLen=strlen(fmt);
 394   1      
 395   1              while(i<uLen)
 396   1              {

⌨️ 快捷键说明

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