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

📄 funclcd.lst

📁 Keil C51完整的128X64LCD显示的电子打铃仪代码,内含DS1302X5045等操作代码
💻 LST
📖 第 1 页 / 共 5 页
字号:
 240   2                      else
 241   2                              SingleData(col_x, ~(page_num[i]));
C51 COMPILER V7.50   FUNCLCD                                                               06/10/2006 08:26:02 PAGE 5   

 242   2              }
 243   1      
 244   1              SetRAMAddr(page_y+1,col_x);
 245   1      
 246   1              for (i=8;i<16;i++)
 247   1              {
 248   2                      if(flag==0)
 249   2                              SingleData(col_x,page_num[i]);
 250   2                      else
 251   2                              SingleData(col_x,~(page_num[i]));
 252   2              }
 253   1      }
 254          
 255          //=================================================
 256          //Function:     HzDisplay       
 257          //Description:  Send a 16 X 16 Dot of Chinese CHAR to LCD Display
 258          //Parameters:   *page_num,page_y_in,col_x_in,flag
 259                                          //*page_num     ---     LCD Display Content's First Address
 260                                          //page_y_in --- LCD Display  Char of Row Address
 261                                          //col_x_in      --- LCD Display  Char of Col Address
 262                                          //flag  ---     0 =     Normal Display ;1 = Negative Display
 263          //Call:                 SetRAMAddr(),SingleData()
 264          //Returns:              NO.
 265          //Side Effects: NO.
 266          //=================================================
 267          void HzDisplay(uint8 *page_num, uint8 page_y, 
 268                                                          uint8 col_x,bool flag)
 269          {
 270   1              data uint8 i;
 271   1      
 272   1              SetRAMAddr(page_y,col_x);
 273   1      
 274   1              for (i=0;i<16;i++) 
 275   1              {
 276   2                      if(flag==0)
 277   2                              SingleData(col_x,page_num[i]);
 278   2                      else
 279   2                              SingleData(col_x,~(page_num[i]));
 280   2              }
 281   1      
 282   1              SetRAMAddr(page_y+1,col_x);
 283   1      
 284   1              for (i=16;i<32;i++) 
 285   1              {
 286   2                      if(flag==0)
 287   2                              SingleData(col_x,page_num[i]);
 288   2                      else
 289   2                              SingleData(col_x,~(page_num[i]));
 290   2              }
 291   1      }
 292          
 293          //=================================================
 294          //Function:     InitLcd 
 295          //Description:  Init LCD
 296          //Parameters:   NO.
 297          //Returns:              NO.
 298          //Side Effects: 
 299          //=================================================
 300          //-------------------------------
 301          //显示LOGO画面
 302          void LOGO(void)
 303          {
C51 COMPILER V7.50   FUNCLCD                                                               06/10/2006 08:26:02 PAGE 6   

 304   1              int8 j,k;
 305   1              uint8 tempkey;
 306   1      
 307   1              LCD_LED =       0;
 308   1      
 309   1              for(k=63;k>=0;k--)
 310   1              {
 311   2      
 312   2                      for(j=0;j<8;j++)
 313   2                      {
 314   3              tempkey=127-k;
 315   3                      SetRAMAddr(j,k);
 316   3                      SingleData(k,0xFF);
 317   3                      SetRAMAddr(j,tempkey);
 318   3                      SingleData(tempkey,0xFF);
 319   3                      }
 320   2              }
 321   1      
 322   1               Delay(40);
 323   1      
 324   1               //LCD Display Logo Bmp
 325   1               for(k=0;k<=63;k++)
 326   1                      {
 327   2      
 328   2                      for(j=0;j<8;j++)
 329   2                              {
 330   3                  tempkey=127-k;
 331   3                              SetRAMAddr(j,k);
 332   3                              SingleData(k,logobmp[j][k]);
 333   3                              SetRAMAddr(j,tempkey);
 334   3                              SingleData(tempkey,logobmp[j][tempkey]);
 335   3                      }
 336   2      
 337   2                      Delay(3);
 338   2                      tempkey=KeyScan();
 339   2      
 340   2                      if(tempkey !=0xFF)return;
 341   2      
 342   2                      }
 343   1      
 344   1              Delay(40);
 345   1      
 346   1              for(k=0;k<=63;k++)
 347   1                      {
 348   2                      for(j=0;j<8;j++)
 349   2                              {
 350   3                  tempkey=63+k;
 351   3                              SetRAMAddr(j,k);
 352   3                              SingleData(k,~logobmp[j][k]);
 353   3                              SetRAMAddr(j,tempkey);
 354   3                              SingleData(tempkey,~logobmp[j][tempkey]);
 355   3                              }
 356   2      
 357   2                              Delay(3);
 358   2                              tempkey=KeyScan();
 359   2                              if(tempkey !=0xFF)return;
 360   2                      }
 361   1      
 362   1                      j=4;
 363   1                      do
 364   1                      {
 365   2                              Delay(20);
C51 COMPILER V7.50   FUNCLCD                                                               06/10/2006 08:26:02 PAGE 7   

 366   2                              tempkey=KeyScan();
 367   2                              if(tempkey !=0xFF)return;
 368   2                      }while(--j!=0);
 369   1      
 370   1               for(k=63;k>=0;k--)
 371   1                      {
 372   2      
 373   2                      for(j=0;j<8;j++)
 374   2                              {
 375   3                  tempkey=127-k;
 376   3                              SetRAMAddr(j,k);
 377   3                              SingleData(k,logobmp[j][k]);
 378   3                              SetRAMAddr(j,tempkey);
 379   3                              SingleData(tempkey,logobmp[j][tempkey]);
 380   3                              }
 381   2      
 382   2                      Delay(3);
 383   2                      tempkey=KeyScan();
 384   2                      if(tempkey !=0xFF)return;
 385   2                      }
 386   1                      //Wait after return
 387   1                      j=50;
 388   1                      do
 389   1                      {
 390   2                              Delay(40);
 391   2                              tempkey=KeyScan();
 392   2                              if(tempkey !=0xFF)return;
 393   2                      }while(--j!=0);
 394   1      }
 395          
 396          //=================================================
 397          //Function:     DispLay_RTC     
 398          //Description:  Display Date And Time
 399          //Parameters:   No.
 400          //Call:                 HzDisplay,Msingle_font_pattern,Get_Time
 401          //Returns:              NO.
 402          //Side Effects: 
 403          //=================================================
 404          void    DispRTC(bool fflag,uint8 *Sys_Date_Time)
 405          {
 406   1                      uint8 tempvar;
 407   1      
 408   1                      //显示固定字符
 409   1                      if (fflag==0)
 410   1                      {
 411   2                              HzDisplay(Xin,0,2,0);
 412   2                              HzDisplay(Qi,0,18,0);
 413   2      
 414   2                              Msingle_font_pattern (mh,0,80,0);
 415   2                              Msingle_font_pattern (mh,0,104,0);
 416   2      
 417   2                              HzDisplay(Year,2,40,0);
 418   2                              HzDisplay(Month,2,72,0);
 419   2                              HzDisplay(Day,2,104,0);
 420   2      
 421   2                              Msingle_font_pattern (English_Offset[2],2,8,0);
 422   2                              Msingle_font_pattern (English_Offset[0],2,16,0);
 423   2                      }
 424   1      
 425   1                      //显示星期几于左上角
 426   1                      HzDisplay(Week[Sys_Date_Time[5]],0,34,0);
 427   1                      //显示时间于右上角
C51 COMPILER V7.50   FUNCLCD                                                               06/10/2006 08:26:02 PAGE 8   

 428   1                      //hh
 429   1                      CY=0;
 430   1                      Sys_Date_Time[2]&=0x3F;
 431   1                      tempvar=(Sys_Date_Time[2]&0xF0)>>4;
 432   1                      Msingle_font_pattern (English_Offset[tempvar],0,64,0);
 433   1                      tempvar=Sys_Date_Time[2]&0x0F;
 434   1                      Msingle_font_pattern (English_Offset[tempvar],0,72,0);
 435   1                      //mm
 436   1                      CY=0;
 437   1                      tempvar=(Sys_Date_Time[1]&0xF0)>>4;
 438   1                      Msingle_font_pattern (English_Offset[tempvar],0,88,0);
 439   1                      tempvar=Sys_Date_Time[1]&0x0F;
 440   1                      Msingle_font_pattern (English_Offset[tempvar],0,96,0);
 441   1                      //ss
 442   1                      Sys_Date_Time[0]&=0x7F;
 443   1                      CY=0;
 444   1                      tempvar=(Sys_Date_Time[0]&0xF0)>>4;
 445   1                      Msingle_font_pattern (English_Offset[tempvar],0,112,0);
 446   1                      tempvar=Sys_Date_Time[0]&0x0F;
 447   1                      Msingle_font_pattern (English_Offset[tempvar],0,120,0);
 448   1                      
 449   1                      //显示时间于屏幕中间
 450   1                      //year
 451   1                      CY=0;
 452   1                      tempvar=(Sys_Date_Time[6]&0xF0)>>4;
 453   1                      Msingle_font_pattern (English_Offset[tempvar],2,24,0);
 454   1                      tempvar=Sys_Date_Time[6]&0x0F;
 455   1                      Msingle_font_pattern (English_Offset[tempvar],2,32,0);
 456   1                      //month
 457   1                      CY=0;
 458   1                      tempvar=(Sys_Date_Time[4]&0xF0)>>4;
 459   1                      Msingle_font_pattern (English_Offset[tempvar],2,56,0);
 460   1                      tempvar=Sys_Date_Time[4]&0x0F;
 461   1                      Msingle_font_pattern (English_Offset[tempvar],2,64,0);
 462   1                      //day
 463   1                      CY=0;
 464   1                      tempvar=(Sys_Date_Time[3]&0xF0)>>4;
 465   1                      Msingle_font_pattern (English_Offset[tempvar],2,88,0);
 466   1                      tempvar=Sys_Date_Time[3]&0x0F;
 467   1                      Msingle_font_pattern (English_Offset[tempvar],2,96,0);
 468   1      
 469   1                      if (fflag==0) fflag=1;
 470   1      }
 471          
 472          //=================================================
 473          //Function:     Display_Line    
 474          //Description:  Display one System Main Menu
 475          //Parameters:   num,page_y_in,startcol,len,flag
 476          //Call:                 
 477          //Returns:              NO.
 478          //Side Effects: 
 479          //=================================================
 480          void Display_Line( uint8 page_y_in,
 481                                          uint8 startcol,uint8 len, bool flag, uint8** menuitem)//uint8 menuno,
 482          {
 483   1                      uint8   i;
 484   1      
 485   1                      if ((len*16)>(128-startcol)) return;

⌨️ 快捷键说明

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