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

📄 main.lst

📁 LCD12864液晶C语言,菜单功能应用
💻 LST
📖 第 1 页 / 共 2 页
字号:
 187          //写入控制命令到LCD子程序
 188          //输入参数:控制命令
 189          void lcdWriteData (unsigned char Data);
 190          //写入显示数据到LCD子程序
 191          //输入参数:显示数据
 192          void checkLcdBusy (void);
 193          //检测LCD忙碌子程序
 194          void displayPhoto (unsigned char *bmp);
 195          //全屏显示图形子程序
 196          //输入参数:图形数据
 197          void wrPosition (void);
 198          //坐标写入子程序
 199          void dispString (unsigned char X, Y, speed, unsigned char *msg);
 200          //显示字符串子程序
 201          //输入参数:X=行(0-3), Y=列(0-7), speed=显示速度(毫秒), msg=字符数据
 202          void delayMs (unsigned char ms);
 203          //延时(毫秒)子程序
 204          //输入参数:毫秒数
 205          void delaySec (unsigned char sec);
 206          //延时(秒)子程序
 207          //输入参数:秒数
 208          //===============================================
 209          
 210          
 211          void main (void)
 212          {
 213   1              BG_LED_SET = LOW;
 214   1              lcdInit ();
 215   1              
 216   1              while(1)
 217   1              {
 218   2                      lcdClear();
 219   2                      displayPhoto(powerOnPhoto);
 220   2                      delaySec(3);
 221   2                      lcdClear();
 222   2                      dispString (0, 0, 1, "┏━━━━━━┓");
 223   2                      dispString (1, 0, 1, "┃12864LCD测试┃");
 224   2                      dispString (2, 0, 1, "┃画面人物宝儿┃");
 225   2                      dispString (3, 0, 1, "┗━━━━━━┛");
 226   2                      delaySec(5);
 227   2              }
 228   1      }
 229          
 230          
 231          //===============================================
 232          void lcdInit (void)
 233          {
 234   1              MPU_RESET = LOW;
 235   1              delayMs(40);
 236   1              MPU_RESET = HIGH;
 237   1              delayMs(1);
 238   1              MPU_PS_CH = HIGH;
 239   1      
 240   1              lcdWriteCommand(cFunctionSetE);
 241   1              lcdWriteCommand(cFunctionSetB);
C51 COMPILER V7.50   MAIN                                                                  12/29/2005 00:34:44 PAGE 5   

 242   1              lcdClear();
 243   1              lcdWriteCommand(cEntryModeSet);
 244   1              lcdWriteCommand(cDisplayOnCtrl);
 245   1      }
 246          //===============================================
 247          void lcdClear (void)
 248          {
 249   1              lcdWriteCommand(cClearDisplay);
 250   1      }
 251          //===============================================
 252          void lcdWriteCommand (unsigned char Command)
 253          {
 254   1              checkLcdBusy();
 255   1              MPU_RS_CH = LOW;
 256   1              MPU_RW_CH = LOW;
 257   1              LCD_DATA = Command;
 258   1              MPU_ENABLE = 1;
 259   1              delayMs(1);
 260   1              MPU_ENABLE = LOW;
 261   1      }
 262          //===============================================
 263          void lcdWriteData (unsigned char Data)
 264          {
 265   1              checkLcdBusy();
 266   1              MPU_RS_CH = HIGH;
 267   1              MPU_RW_CH = LOW;
 268   1              LCD_DATA = Data;
 269   1              MPU_ENABLE = HIGH;
 270   1              delayMs(1);
 271   1              MPU_ENABLE = LOW;
 272   1      }
 273          //===============================================
 274          void checkLcdBusy (void)
 275          {
 276   1              LCD_DATA = 0xff;
 277   1              MPU_RS_CH = LOW;
 278   1              MPU_RW_CH = HIGH;
 279   1              MPU_ENABLE = HIGH;
 280   1              while (BUSY_FLAG);
 281   1              MPU_ENABLE = LOW;
 282   1      }
 283          //===============================================
 284          void displayPhoto (unsigned char *bmp)
 285          {
 286   1              lcdPosX = 0x80;
 287   1              halfScr = 2;
 288   1              
 289   1              for (;halfScr != 0; halfScr--)
 290   1              {
 291   2                      lcdPosY = 0x80;
 292   2                      blStart = 32;
 293   2                      
 294   2                      for (;blStart != 0; blStart--)
 295   2                      {
 296   3                              basicBlock = 16;
 297   3                              wrPosition ();
 298   3                              
 299   3                              for (; basicBlock != 0; basicBlock--)
 300   3                              {
 301   4                                      lcdWriteData (*bmp++);
 302   4                              }
 303   3                              lcdPosY++;
C51 COMPILER V7.50   MAIN                                                                  12/29/2005 00:34:44 PAGE 6   

 304   3                      }
 305   2                      lcdPosX = 0x88;
 306   2              }
 307   1              lcdWriteCommand(cFuncDrawOn);
 308   1              lcdWriteCommand(cFunctionSetB);
 309   1      }
 310          //===============================================
 311          void wrPosition (void)
 312          {
 313   1              lcdWriteCommand(cFunctionSetE);
 314   1              lcdWriteCommand(lcdPosY);
 315   1              lcdWriteCommand(lcdPosX);
 316   1              lcdWriteCommand(cFunctionSetB);
 317   1      }
 318          //===============================================
 319          void dispString (unsigned char X, Y, speed, unsigned char *msg)
 320          {
 321   1              if (X == 0)
 322   1              {
 323   2                      X = 0x80;
 324   2              }
 325   1              else if (X == 1)
 326   1              {
 327   2                      X = 0x90;
 328   2              }
 329   1              else if (X == 2)
 330   1              {
 331   2                      X = 0x88;
 332   2              }
 333   1              else if (X == 3)
 334   1              {
 335   2                      X = 0x98;
 336   2              }
 337   1              Y = X + Y;
 338   1              lcdWriteCommand(Y);
 339   1              while (*msg)
 340   1              {
 341   2                      lcdWriteData(*msg++);
 342   2                      delayMs(speed);
 343   2              }
 344   1      }
 345          //===============================================
 346          void delayMs (unsigned char ms)
 347          {
 348   1              unsigned char i;
 349   1              while (--ms)
 350   1              {
 351   2                      for (i = 0; i < 125; i++);
 352   2              }
 353   1      }
 354          //===============================================
 355          void delaySec (unsigned char sec)
 356          {
 357   1              unsigned char i;
 358   1              while (--sec)
 359   1              {
 360   2                      for (i = 0; i < 200; i++)
 361   2                      {
 362   3                              delayMs (6);
 363   3                      }
 364   2              }
 365   1      }
C51 COMPILER V7.50   MAIN                                                                  12/29/2005 00:34:44 PAGE 7   

 366          //===============================================


MODULE INFORMATION:   STATIC OVERLAYABLE
   CODE SIZE        =    415    ----
   CONSTANT SIZE    =   1092    ----
   XDATA SIZE       =   ----    ----
   PDATA SIZE       =   ----    ----
   DATA SIZE        =      5      13
   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 + -