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

📄 file_lcd.lst

📁 基于单片机的12864lcd显示驱动程序. 更改廷时便可移植到高速mpu上.
💻 LST
📖 第 1 页 / 共 4 页
字号:
 202   1      
 203   1      }
 204          //////////////////////////////////////////////////////
 205          //左半屏开显示子程序
 206          void DISP1()
 207          {
 208   1      
 209   1        TRANS=0X3F;           //开显示指令
 210   1        TRANS1();
 211   1        LCDSTA1();
 212   1      
 213   1      }
 214          /////////////////////////////////////////////////////
 215          //左半屏关显示子程序
 216          void DISOFF1()
 217          {
 218   1      
 219   1        TRANS=0X3E;           //关显示指令
 220   1        TRANS1();
 221   1        LCDSTA1();
 222   1      
 223   1      }
 224          //////////////////////////////////////////////////////////////
 225          //左半屏清屏函数
 226          void L_clear()
 227          {
 228   1       PAGEADD=0XB8;
 229   1       for(PAGENUM=0X08;PAGENUM>0;PAGENUM--)
 230   1       {
 231   2        TRANS=PAGEADD;
 232   2        TRANS1();
 233   2        CLMADD=0X00;
 234   2          for(CLMSUM=0X40;CLMSUM>0;CLMSUM--)
C51 COMPILER V7.50   FILE_LCD                                                              09/13/2007 09:33:44 PAGE 6   

 235   2          {
 236   3           LCDSTA1();
 237   3           WRITE=0X00;
 238   3           WRITE1();
 239   3          }
 240   2        PAGEADD++; 
 241   2       }
 242   1      }
 243          
 244          ///////////////////////////////////////////////////////////
 245          //左半屏初始化子程序
 246          void lcd1()
 247          {
 248   1       DISOFF1();       //关显示  
 249   1       LCDSTA1();       //等待写入
 250   1       DISP1();         //开显示
 251   1       LCDSTA1();       //等待写入
 252   1       L_clear();       //左半屏清屏 
 253   1      }
 254          
 255          //////////////////////////////////////////////////////////
 256          //************************************************
 257          ////////////////////////////////////////////////////////
 258          //右半屏处理
 259          ///////////////////////////////////////////////////////
 260          //延时保证写入
 261          void LCDSTA2()
 262          {
 263   1          asm("nop");
 264   1          asm("nop");
 265   1          asm("nop");
 266   1          asm("nop"); 
 267   1          asm("nop");
 268   1          asm("nop");
 269   1          asm("nop");
 270   1          asm("nop"); 
 271   1          asm("nop");
 272   1          asm("nop");
 273   1          asm("nop");
 274   1          asm("nop"); 
 275   1          asm("nop");
 276   1          asm("nop");
 277   1          asm("nop");
 278   1          asm("nop");
 279   1      
 280   1      }
 281          
 282          /////////////////////////////////////////////////////
 283          //右半屏发送指令子程序
 284          void TRANS2()
 285          {
 286   1        LCDSTA2();
 287   1        TRISD=0X00;          //D口为输出
*** ERROR C202 IN LINE 287 OF D:\DOCUMENTS AND SETTINGS\HP\桌面\FILE_LCD.C: 'TRISD': undefined identifier
 288   1        P1^6=1;              //P1^6=1
*** ERROR C141 IN LINE 288 OF D:\DOCUMENTS AND SETTINGS\HP\桌面\FILE_LCD.C: syntax error near '='
 289   1        P3^6=0;              //R/W=0
*** ERROR C141 IN LINE 289 OF D:\DOCUMENTS AND SETTINGS\HP\桌面\FILE_LCD.C: syntax error near '='
 290   1        P3^7=0;              //DI=0
*** ERROR C141 IN LINE 290 OF D:\DOCUMENTS AND SETTINGS\HP\桌面\FILE_LCD.C: syntax error near '='
 291   1        P2=TRANS;        //需要写入命令放入D口
 292   1        P3^5=1;              //E=1
C51 COMPILER V7.50   FILE_LCD                                                              09/13/2007 09:33:44 PAGE 7   

*** ERROR C141 IN LINE 292 OF D:\DOCUMENTS AND SETTINGS\HP\桌面\FILE_LCD.C: syntax error near '='
 293   1        P3^5=0;              //E=0
*** ERROR C141 IN LINE 293 OF D:\DOCUMENTS AND SETTINGS\HP\桌面\FILE_LCD.C: syntax error near '='
 294   1        P1^6=0;              //P1^6=0 
*** ERROR C141 IN LINE 294 OF D:\DOCUMENTS AND SETTINGS\HP\桌面\FILE_LCD.C: syntax error near '='
 295   1        P3^6=1;              //R/W=1
*** ERROR C141 IN LINE 295 OF D:\DOCUMENTS AND SETTINGS\HP\桌面\FILE_LCD.C: syntax error near '='
 296   1      }
 297          
 298          ////////////////////////////////////////////////////
 299          //右半屏写数据子程序
 300          void WRITE2()
 301          {
 302   1       TRANS=CLMADD;
 303   1       TRANS2();
 304   1       LCDSTA2();
 305   1       TRISD=0X00;
*** ERROR C202 IN LINE 305 OF D:\DOCUMENTS AND SETTINGS\HP\桌面\FILE_LCD.C: 'TRISD': undefined identifier
 306   1       P1^6=1;              //P1^6=1
*** ERROR C141 IN LINE 306 OF D:\DOCUMENTS AND SETTINGS\HP\桌面\FILE_LCD.C: syntax error near '='
 307   1        P3^6=0;              //R/W=0
*** ERROR C141 IN LINE 307 OF D:\DOCUMENTS AND SETTINGS\HP\桌面\FILE_LCD.C: syntax error near '='
 308   1        P3^7=1;              //DI=1
*** ERROR C141 IN LINE 308 OF D:\DOCUMENTS AND SETTINGS\HP\桌面\FILE_LCD.C: syntax error near '='
 309   1       P2=WRITE;         //需要写入数据放入D口
 310   1       P3^5=1;              //E=1
*** ERROR C141 IN LINE 310 OF D:\DOCUMENTS AND SETTINGS\HP\桌面\FILE_LCD.C: syntax error near '='
 311   1        P3^5=0;              //E=0
*** ERROR C141 IN LINE 311 OF D:\DOCUMENTS AND SETTINGS\HP\桌面\FILE_LCD.C: syntax error near '='
 312   1        P1^6=0;              //P1^6=0
*** ERROR C141 IN LINE 312 OF D:\DOCUMENTS AND SETTINGS\HP\桌面\FILE_LCD.C: syntax error near '='
 313   1        CLMADD++; 
 314   1        P3^6=1;              //R/W=1
*** ERROR C141 IN LINE 314 OF D:\DOCUMENTS AND SETTINGS\HP\桌面\FILE_LCD.C: syntax error near '='
 315   1      
 316   1      }
 317          
 318          ///////////////////////////////////////////////////////////
 319          //右半屏开显示子程序
 320          void DISP2()
 321          {
 322   1        TRANS=0X3F;           //开显示指令
 323   1        TRANS2();
 324   1        LCDSTA2();
 325   1      }
 326          
 327          //////////////////////////////////////////////////////////
 328          //右半屏关显示子程序
 329          void DISOFF2()
 330          {
 331   1      
 332   1        TRANS=0X3E;           //关显示指令
 333   1        TRANS2();
 334   1        LCDSTA2();
 335   1      
 336   1      }
 337          
 338          //////////////////////////////////////////////////////////////
 339          //右半屏清屏函数
 340          void R_clear()
 341          {
 342   1       PAGEADD=0XB8;
C51 COMPILER V7.50   FILE_LCD                                                              09/13/2007 09:33:44 PAGE 8   

 343   1       for(PAGENUM=0X08;PAGENUM>0;PAGENUM--)
 344   1       {
 345   2        TRANS=PAGEADD;
 346   2        TRANS2();
 347   2        CLMADD=0X00;
 348   2          for(CLMSUM=0X40;CLMSUM>0;CLMSUM--)
 349   2          {
 350   3           LCDSTA2();
 351   3           WRITE=0X00;
 352   3           WRITE2();
 353   3          }
 354   2        PAGEADD++; 
 355   2       }
 356   1      }
 357          
 358          ////////////////////////////////////////////////////////////
 359          //右半屏初始化子程序
 360          void lcd2()
 361          {
 362   1       DISOFF2();       //关显示  
 363   1       LCDSTA2();       //等待写入
 364   1       DISP2();         //开显示
 365   1       LCDSTA2();       //等待写入
 366   1       R_clear();       //左半屏清屏
 367   1      }
 368          
 369          ////////////////////////////////////////////////////////
 370          //液晶屏左右半屏控制子程序结束
 371          ///////////////////////////////////////////////////////
 372          
 373          //////////////////////////////////////////////////////
 374          //液晶显示函数,程序解释如下
 375          //void dis1() LCD左半屏显示中文16*16格式函数
 376          //void dis3() LCD左半屏显示图形界面函数
 377          //void dis5() LCD左半屏显示数字8*16格式函数
 378          //****************************************************
 379          //void dis2() LCD右半屏显示中文16*16格式函数
 380          //void dis4() LCD右半屏显示图形界面函数
 381          //void dis6() LCD右半屏显示数字8*16格式函数
 382          //***************************************************
 383          //void dis7() 显示组号子函数
 384          //void dis8() 显示单体电池电压子函数
 385          /////////////////////////////////////////////////////
 386          //LCD左半屏显示中文16*16格式函数
 387          void dis1()
 388          {
 389   1       TRANS=row;
 390   1       TRANS1();
 391   1       TRANS=PAGEADD;
 392   1       TRANS1();
 393   1       i=i*32;
 394   1      asm("nop");
 395   1          asm("nop");
 396   1       for(k=0;k<16;k++)
 397   1        {
 398   2         WRITE=table5[i+k];
 399   2         WRITE1();
 400   2        asm("nop");
 401   2          asm("nop");
 402   2        }
 403   1       CLMADD=CLMADD-16;
 404   1       PAGEADD=PAGEADD+1;
C51 COMPILER V7.50   FILE_LCD                                                              09/13/2007 09:33:44 PAGE 9   

 405   1       TRANS=PAGEADD;
 406   1       TRANS1();
 407   1       for(;k<32;k++)
 408   1        {
 409   2         WRITE=table5[i+k];
 410   2         WRITE1();
 411   2        }
 412   1      }
 413          
 414          ////////////////////////////////////////////////////////
 415          //LCD左半屏显示图形界面函数
 416          void dis3()
 417          {
 418   1       row=0xc0;    //设置显示起始行
 419   1       PAGEADD=0XB8;
 420   1       CLMADD=0X40;
 421   1       i=0;
 422   1       TRANS=row;
 423   1       TRANS1();
 424   1       TRANS=PAGEADD;
 425   1       TRANS1();
 426   1       i=i*64;
 427   1       for(k=0;k<64;k++)
 428   1        {
 429   2         WRITE=table2[i+k];
 430   2         WRITE1();
 431   2        }
 432   1      asm("nop");
 433   1          asm("nop");
 434   1       CLMADD=CLMADD-64;
 435   1       PAGEADD=PAGEADD+1;
 436   1       TRANS=PAGEADD;
 437   1       TRANS1();
 438   1       for(;k<128;k++)
 439   1        {
 440   2         WRITE=table2[i+k];
 441   2         WRITE1();
 442   2        }
 443   1      asm("nop");
 444   1          asm("nop");
 445   1       CLMADD=CLMADD-64;
 446   1       PAGEADD=PAGEADD+1;
 447   1       TRANS=PAGEADD;
 448   1       TRANS1();
 449   1       for(;k<192;k++)
 450   1        {
 451   2         WRITE=table2[i+k];
 452   2         WRITE1();
 453   2        }
 454   1      asm("nop");
 455   1          asm("nop");
 456   1       CLMADD=CLMADD-64;
 457   1       PAGEADD=PAGEADD+1;
 458   1       TRANS=PAGEADD;
 459   1       TRANS1();
 460   1       for(;k<256;k++)
 461   1        {
 462   2         WRITE=table2[i+k];
 463   2         WRITE1();
 464   2        }

⌨️ 快捷键说明

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