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

📄 lcd_3200.lst

📁 USB IAP (In Application Programming) Demo for uPSD32
💻 LST
📖 第 1 页 / 共 2 页
字号:
 219   1        return (byte + 0x37);
 220   1       }
 221          
 222          
 223          
 224          
 225          
 226          void initLCD(void)
 227          /******************************************************************************
 228           Function   : void initLCD()
 229           Parameters : (void)
 230           Description: initialize LCD module per specs
 231           ******************************************************************************/
 232           {
 233   1        #ifdef LCD_BCBuffer
 234   1        int i;
 235   1        #endif
 236   1      
 237   1        LCD_delay_ms(15);
 238   1        LCD_reg.LCD_CMD_WR = 0x30;
 239   1        LCD_delay_ms(4);
 240   1        LCD_reg.LCD_CMD_WR = 0x30;
 241   1        LCD_delay_ms(1);
C51 COMPILER V8.05a   LCD_3200                                                             03/06/2008 14:22:29 PAGE 5   

 242   1        LCD_reg.LCD_CMD_WR = 0x30;
 243   1        LCD_delay_ms(1);
 244   1      
 245   1        LCD_reg.LCD_CMD_WR = 0x38;                 // 8 bits, 2 lines, 5 x 7 font
 246   1        LCD_delay_ms(4);                           // delay 4 ms
 247   1        BusyCheck();
 248   1        LCD_reg.LCD_CMD_WR = 0x0C;                 //Display on, Cursor off, Non-Blink
 249   1        BusyCheck();
 250   1        LCD_reg.LCD_CMD_WR = 0x01;                 //Clear display
 251   1        BusyCheck();
 252   1        LCD_reg.LCD_CMD_WR = 0x02;                 //Cursor home
 253   1        BusyCheck();
 254   1        LCD_reg.LCD_CMD_WR = 0x06;                 //Cursor inc, no shift/cursor move
 255   1      
 256   1        SetUserCG(&cg_data);                       //set user desfined character
 257   1      
 258   1        Cursor_LCD = DD_ADDR;                      //Display from 1st row, 1st column
 259   1        BusyCheck();
 260   1        LCD_reg.LCD_CMD_WR = Cursor_LCD;
 261   1      
 262   1        #ifdef LCD_BCBuffer
 263   1                                                   // Initialize mirror buffer
 264   1        for (i=0;i<LCD_ColNumBuf*LCD_RowNum;i++)   // Clear IAP&D display memory
 265   1         {
 266   2          LCD_buffer[i] = ' ';
 267   2         }
 268   1                                                 //add user character at the end of line
 269   1        LCD_buffer[LCD_ColNum+0] = 13;
 270   1        LCD_buffer[LCD_ColNum+1] = 10;          //new line indicator for WinApp terminal
 271   1      
 272   1        LCD_buffer[LCD_ColNumBuf+LCD_ColNum+0] = 0;
 273   1        LCD_buffer[LCD_ColNumBuf+LCD_ColNum+1] = 0;// END OF STRING
 274   1        #endif
 275   1      
 276   1        LCDDisp_XPos = 0;                          // Cursor position at home
 277   1        LCDDisp_YPos = 0;
 278   1      
 279   1      //please see LCD_3200.H for more details about the buffer
 280   1      
 281   1       }
 282          
 283          
 284          
 285          
 286          void putch_LCD(unsigned char ch) 
 287          /******************************************************************************
 288           Function   : void putch_LCD()
 289           Parameters : (unsigned char ch)
 290           Description: basic char out function
 291           ******************************************************************************/
 292           {
 293   1        BusyCheck();
 294   1        LCD_reg.LCD_RAM_WR = ch;
 295   1      
 296   1        #ifdef LCD_BCBuffer
 297   1        if (LCDDisp_XPos<LCD_ColNum)
 298   1         {
 299   2          LCD_buffer[LCDDisp_YPos*LCD_ColNumBuf+LCDDisp_XPos] = ch;
 300   2         }
 301   1        #endif
 302   1      
 303   1        if (LCDDisp_XPos <= LCD_ColNum)
C51 COMPILER V8.05a   LCD_3200                                                             03/06/2008 14:22:29 PAGE 6   

 304   1         {
 305   2          LCDDisp_XPos++;
 306   2         }
 307   1      
 308   1       }
 309          
 310          
 311          
 312          
 313          
 314          void printfLCD(uchar *chr_ptr, ...)
 315          /******************************************************************************
 316           Function   : void printfLCD()
 317           Parameters : (uchar *chr_ptr, ...)
 318           Description: works as prinf, but for LCD
 319           ******************************************************************************/
 320           {
 321   1      
 322   1        unsigned char *var_ptr=&chr_ptr+1;
 323   1        unsigned char var;
 324   1        unsigned int i;
 325   1      
 326   1        while (*chr_ptr != NULL)
 327   1         {
 328   2          BusyCheck();
 329   2          if (*chr_ptr == '\r')
 330   2           {
 331   3            chr_ptr++;
 332   3            Cursor_LCD &= 0xC0;                   //return to position 0 at current line
 333   3            LCD_reg.LCD_CMD_WR = Cursor_LCD;
 334   3      
 335   3            LCDDisp_XPos = 0;
 336   3           }
 337   2          else
 338   2          if (*chr_ptr == '\n')
 339   2           {
 340   3            chr_ptr++;
 341   3            Cursor_LCD ^= 0x40;                    //goto next line
 342   3            Cursor_LCD &= 0xC0;                    //return to position 0
 343   3            LCD_reg.LCD_CMD_WR = Cursor_LCD;
 344   3      
 345   3            LCDDisp_XPos = 0;
 346   3            LCDDisp_YPos = LCDDisp_YPos < LCD_RowNum-1 ? LCDDisp_YPos+1:0;
 347   3           }
 348   2          else
 349   2          if (*chr_ptr == '%')
 350   2           {
 351   3            chr_ptr++;
 352   3            if (*chr_ptr == 'd')                   // display 1 digit decimal 0-9
 353   3             {
 354   4              chr_ptr++;
 355   4              var = *var_ptr++;
 356   4              putch_LCD((var & 0x0F)+'0');         // Out character to LCD Display RAM
 357   4             }
 358   3            else
 359   3            if (*chr_ptr == 'x')                   // display 1 byte hex 00-FF
 360   3             {
 361   4              chr_ptr++;
 362   4              var = *var_ptr++;
 363   4              putch_LCD(htoa_hi(var));             // Out character to LCD Display RAM
 364   4              putch_LCD(htoa_lo(var));             // Out character to LCD Display RAM
 365   4             }
C51 COMPILER V8.05a   LCD_3200                                                             03/06/2008 14:22:29 PAGE 7   

 366   3            else
 367   3            if (*chr_ptr == 'w')                   // display 1 word hex 0000-FFFF
 368   3             {
 369   4              chr_ptr++;
 370   4              var = *var_ptr++;
 371   4              putch_LCD(htoa_hi(var));             // Out character to LCD Display RAM
 372   4              putch_LCD(htoa_lo(var));             // Out character to LCD Display RAM
 373   4              var = *var_ptr++;
 374   4              putch_LCD(htoa_hi(var));             // Out character to LCD Display RAM
 375   4              putch_LCD(htoa_lo(var));             // Out character to LCD Display RAM
 376   4             }
 377   3            else
 378   3            if (*chr_ptr == 'c')                   // Display 1 character
 379   3             {
 380   4              chr_ptr++;
 381   4              var = *var_ptr++;
 382   4              putch_LCD(var);                      // Out character to LCD Display RAM
 383   4             }
 384   3            else
 385   3            if (*chr_ptr == 'B')                   // display 1 byte
 386   3             {
 387   4              chr_ptr++;
 388   4              var = *var_ptr++;
 389   4              putch_LCD(48+(var/100));             // Out character to LCD Display RAM
 390   4              var = var % 100;
 391   4              putch_LCD(48+(var/10));              // Out character to LCD Display RAM
 392   4              var = var % 10;
 393   4              putch_LCD(48+var);                   // Out character to LCD Display RAM
 394   4             }
 395   3            else
 396   3            if (*chr_ptr == 'W')                   // display 1 word
 397   3             {
 398   4              chr_ptr++;
 399   4              i = (*var_ptr++);
 400   4              i = i*256;
 401   4              i = i+(*var_ptr++);
 402   4              putch_LCD(48+(i/10000));             // Out character to LCD Display RAM
 403   4              i = i % 10000;
 404   4              putch_LCD(48+(i/1000));              // Out character to LCD Display RAM
 405   4              i = i % 1000;
 406   4              putch_LCD(48+(i/100));               // Out character to LCD Display RAM
 407   4              i = i % 100;
 408   4              putch_LCD(48+(i/10));                // Out character to LCD Display RAM
 409   4              i = i % 10;
 410   4              putch_LCD(48+i);                     // Out character to LCD Display RAM
 411   4             }
 412   3      
 413   3      
 414   3            else
 415   3             {
 416   4              putch_LCD(*chr_ptr++);               // Out character to LCD Display RAM
 417   4             }
 418   3      
 419   3           }
 420   2          else
 421   2           {
 422   3            putch_LCD(*chr_ptr++);                 // Out character to LCD Display RAM
 423   3           }
 424   2         }
 425   1       }
 426          
 427          
C51 COMPILER V8.05a   LCD_3200                                                             03/06/2008 14:22:29 PAGE 8   

 428          


MODULE INFORMATION:   STATIC OVERLAYABLE
   CODE SIZE        =   1033    ----
   CONSTANT SIZE    =      9    ----
   XDATA SIZE       =   ----      52
   PDATA SIZE       =   ----    ----
   DATA SIZE        =     39    ----
   IDATA SIZE       =   ----    ----
   BIT SIZE         =   ----    ----
END OF MODULE INFORMATION.


C51 COMPILATION COMPLETE.  0 WARNING(S),  0 ERROR(S)

⌨️ 快捷键说明

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