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

📄 text1.lst

📁 lcd 12864+pcf8563
💻 LST
📖 第 1 页 / 共 2 页
字号:
 238          void PCF8563_wr_time()
 239          {
 240   1              tim_wr_buffer[0] = 0x00;        //second
 241   1              tim_wr_buffer[1] = 0x11;        //minute
C51 COMPILER V8.09   TEXT1                                                                 06/22/2011 21:07:37 PAGE 5   

 242   1              tim_wr_buffer[2] = 0x22;        //hour
 243   1      
 244   1              tim_wr_buffer[3] = 0x15;        //day
 245   1              tim_wr_buffer[4] = 0x03;        //weekday
 246   1              tim_wr_buffer[5] = 0x06;        //month
 247   1              tim_wr_buffer[6] = 0x10;        //year
 248   1      
 249   1              
 250   1              PCF8563_write_n_byte(1,2,tim_wr_buffer,8);
 251   1      }
 252          
 253          void PCF8563_rd_time()
 254          {
 255   1              uchar   temp;
 256   1      
 257   1              PCF8563_read_n_byte(1,2,9);
 258   1      
 259   1              time.second = ((tim_rd_buffer[1]&0x70)>>4)*10 + (tim_rd_buffer[1]&0x0f);        //second                        
 260   1              time.minute = ((tim_rd_buffer[2]&0x70)>>4)*10 + (tim_rd_buffer[2]&0x0f);        //minute
 261   1              time.hour = ((tim_rd_buffer[3]&0x30)>>4)*10 + (tim_rd_buffer[3]&0x0f);          //hour
 262   1              time.day = ((tim_rd_buffer[4]&0x30)>>4)*10 + (tim_rd_buffer[4]&0x0f);           //day
 263   1              time.weekday = tim_rd_buffer[5]&0x07;                                                                           //weekday
 264   1              time.month = ((tim_rd_buffer[6]&0x10)>>4)*10 + (tim_rd_buffer[6]&0x0f);         //month
 265   1      
 266   1              temp = (tim_rd_buffer[4]&0x80)>>7;
 267   1              time.year = (temp+19)*100+((tim_rd_buffer[7]&0x70)>>4)*10 + (tim_rd_buffer[7]&0x0f);       //year
 268   1      
 269   1                      lcd16_1[0] = time.hour/10+0x30;   //hour
 270   1                      lcd16_1[1] = time.hour%10+0x30;
 271   1                      lcd16_1[2] = '-';
 272   1                      lcd16_1[3] = time.minute/10+0x30;         //minute
 273   1                      lcd16_1[4] = time.minute%10+0x30;
 274   1                      lcd16_1[5] = '-';
 275   1                      lcd16_1[6] = time.second/10+0x30;         //second
 276   1                      lcd16_1[7] = time.second%10+0x30;
 277   1      
 278   1                      lcd16_2[0] = time.year/1000+0x30;         //year
 279   1                      lcd16_2[1] = (time.year%1000)/100+0x30;
 280   1                      lcd16_2[2] = (time.year%100)/10+0x30;
 281   1                      lcd16_2[3] = time.year%10+0x30;
 282   1                      lcd16_2[4] = '-';
 283   1                      lcd16_2[5] = time.month/10+0x30;  //mon
 284   1                      lcd16_2[6] = time.month%10+0x30;
 285   1                      lcd16_2[7] = '-';
 286   1                      lcd16_2[8] = time.day/10+0x30;    //day
 287   1                      lcd16_2[9] = time.day%10+0x30;
 288   1      
 289   1                      lcd16_2[10] = ' ';
 290   1                      lcd16_2[11] = time.weekday+0x30;
 291   1      
 292   1                      
 293   1      }
 294          void w_com(uchar com)
 295          {
 296   1               //buys();
 297   1               RW=0;
 298   1               RS=0;
 299   1               E=1;
 300   1               P0=com;
 301   1               E=0;
 302   1      }
 303          
C51 COMPILER V8.09   TEXT1                                                                 06/22/2011 21:07:37 PAGE 6   

 304          
 305          void w_date(uchar date)
 306          {
 307   1               //buys();
 308   1               RW=0;
 309   1               RS=1;
 310   1               E=1;
 311   1               P0=date;
 312   1               E=0;
 313   1      }
 314          
 315          
 316          /*
 317                     LCD选屏函数
 318          */
 319          void select_screen(uchar screen)
 320          {
 321   1                 switch(screen)
 322   1                 {
 323   2                                case 0:     //选择全屏
 324   2                                           CS1=0;
 325   2                                                       CS2=0;
 326   2                                                       break;
 327   2                                case 1:     //选择左屏
 328   2                                           CS1=0;
 329   2                                                       CS2=1;
 330   2                                                       break;
 331   2                                         
 332   2                                case 2:     //选择右屏
 333   2                                           CS1=1;
 334   2                                                       CS2=0;
 335   2                                                       break;
 336   2                              /*  case 3:     //选择右屏
 337   2                                           CS1=1;
 338   2                                                         CS2=1;
 339   2                                                    break;
 340   2                              */
 341   2                 }              
 342   1                 
 343   1      }
 344          
 345          /*
 346                   LCDx向上滚屏显示
 347          */
 348          
 349          /*
 350                     LCD清屏函数:清屏从第一页的第一列开始,总共8页,64列
 351          */
 352          void clear_screen(screen)
 353          {
 354   1               int x,y;
 355   1               select_screen(screen);            //screen:0-选择全屏,1-选择左半屏,2-选择右半屏
 356   1               for(x=0xb8;x<0xc0;x++)                 //从0xb8-0xbf,共8页
 357   1                  {
 358   2                              w_com(x);
 359   2                              w_com(0x40);                    //列的初始地址是0x40
 360   2                              for(y=0;y<64;y++)
 361   2                                 {
 362   3                                          w_date(0x00);
 363   3                                 
 364   3                                  }
 365   2                   }     
C51 COMPILER V8.09   TEXT1                                                                 06/22/2011 21:07:37 PAGE 7   

 366   1      }
 367          
 368          /*
 369                          LCD显示汉字字库函数
 370          */
 371          void lcd_display_hanzi(uchar screen,uchar page,uchar col,uint mun)
 372          {               //screen:选择屏幕参数,page:选择页参数0-3,col:选择列参数0-3,mun:显示第几个汉字的参数
 373   1            int a;
 374   1                mun=mun*32;
 375   1                select_screen(screen);
 376   1                w_com(0xb8+(page*2));
 377   1                w_com(0x40+(col*16));
 378   1                for ( a=0;a<16;a++)
 379   1                   {
 380   2                                 w_date(hanzi[mun++]);
 381   2                       
 382   2                       }
 383   1                w_com(0xb8+(page*2)+1);
 384   1                w_com(0x40+(col*16));
 385   1                for ( a=0;a<16;a++)
 386   1                   {
 387   2                                 w_date(hanzi[mun++]);
 388   2                       
 389   2                       }
 390   1      }
 391          
 392          void lcd_display_shuzi(uchar screen,uchar page,uchar col,uchar mun)
 393          {               //screen:选择屏幕参数,page:选择页参数0-3,col:选择列参数0-7,mun:显示第几个汉字的参数
 394   1            int a;
 395   1                mun=mun*16;
 396   1                select_screen(screen);
 397   1                w_com(0xb8+(page*2));
 398   1                w_com(0x40+(col*8));
 399   1                for ( a=0;a<8;a++)
 400   1                   {
 401   2                                 w_date(shuzi[mun++]);
 402   2                       
 403   2                       }
 404   1                w_com(0xb8+(page*2)+1);
 405   1                w_com(0x40+(col*8));
 406   1                for ( a=0;a<8;a++)
 407   1                   {
 408   2                                 w_date(shuzi[mun++]);
 409   2                       
 410   2                       }
 411   1      }
 412          
 413          /*
 414                          LCD初始化函数
 415          */
 416          void lcd_init()
 417          {
 418   1               w_com(0x3f);            //LCD开显示
 419   1               w_com(0xc0);            //LCD行初始地址,共64行
 420   1               w_com(0xb8);            //LCD页初始地址,共8页
 421   1               w_com(0x40);            //LCD列初始地址,共64列
 422   1          
 423   1      }
 424          
 425          /*
 426                          LCD显示主函数
 427          */
C51 COMPILER V8.09   TEXT1                                                                 06/22/2011 21:07:37 PAGE 8   

 428          void main()
 429          {
 430   1            
 431   1                lcd_init();                     //LCD初始化
 432   1                clear_screen(0);                //LCD清屏幕
 433   1                PCF8563_init();
 434   1              PCF8563_wr_time();
 435   1         while(1)
 436   1         {             PCF8563_rd_time();
 437   2                               lcd_display_shuzi(1,1,0,lcd16_2[0]);
 438   2                               lcd_display_shuzi(1,1,1,lcd16_2[1]);
 439   2                               lcd_display_shuzi(1,1,2,lcd16_2[2]);
 440   2                               lcd_display_shuzi(1,1,3,lcd16_2[3]);
 441   2                               lcd_display_hanzi(1,1,2,0);              //LCD显示汉字
 442   2                               lcd_display_shuzi(1,1,6,lcd16_2[5]);
 443   2                               lcd_display_shuzi(1,1,7,lcd16_2[6]);
 444   2                               lcd_display_hanzi(2,1,0,1);
 445   2                       lcd_display_shuzi(2,1,2,lcd16_2[8]);
 446   2                               lcd_display_shuzi(2,1,3,lcd16_2[9]);
 447   2                               lcd_display_hanzi(2,1,2,2);
 448   2                               lcd_display_shuzi(1,2,0,lcd16_1[0]);
 449   2                               lcd_display_shuzi(1,2,1,lcd16_1[1]);
 450   2                               lcd_display_hanzi(1,2,1,3);
 451   2                               lcd_display_shuzi(1,2,4,lcd16_1[3]);
 452   2                               lcd_display_shuzi(1,2,5,lcd16_1[4]);
 453   2                               lcd_display_hanzi(1,2,3,4);
 454   2                               lcd_display_shuzi(2,2,0,lcd16_1[6]);
 455   2                               lcd_display_shuzi(2,2,1,lcd16_1[7]);
 456   2                               lcd_display_hanzi(2,2,1,5); 
 457   2                               
 458   2      
 459   2              }
 460   1              
 461   1      }
 462          
 463          
 464          
 465          
 466          


MODULE INFORMATION:   STATIC OVERLAYABLE
   CODE SIZE        =   1361    ----
   CONSTANT SIZE    =    512    ----
   XDATA SIZE       =   ----    ----
   PDATA SIZE       =   ----    ----
   DATA SIZE        =     72      19
   IDATA SIZE       =   ----    ----
   BIT SIZE         =      2       1
END OF MODULE INFORMATION.


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

⌨️ 快捷键说明

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