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

📄 12864

📁 这是一个用51开发的包含有多个模块的12864液晶显示的程序
💻
📖 第 1 页 / 共 5 页
字号:
 270   3                                         {
 271   4                                                ir_data2<<=1;
 272   4                                                ir_data2|=0x01;
 273   4                                                count++;
 274   4                                                TH1=0;
 275   4                                                TL1=0;
 276   4                                                TR1=1;
 277   4                                                return;//数据为1,退出中断
 278   4                                              }
 279   3                                       count=0;
 280   3                                       TR1=0;
 281   3                                       TH1=0;
 282   3                                       TL1=0;
 283   3                                       return;   //错误,清零退出中断
 284   3                                }
 285   2                         if(count>16&&count<=24)
 286   2                                {
 287   3                                  if(((TL1+TH1*256)>(2250-DELTA))&&((TL1+TH1*256)<(2250+DELTA)))
 288   3                                         {
 289   4                                                ir_data3<<=1;
 290   4                                                count++;
 291   4                                                TH1=0;
 292   4                                                TL1=0;
 293   4                                                TR1=1;
 294   4                                                return;  //数据为0,退出中断
 295   4                                              }
 296   3                                  if(((TL1+TH1*256)>(4500-DELTA))&&((TL1+TH1*256)<(4500+DELTA)))
 297   3                                         {
 298   4                                                ir_data3<<=1;
 299   4                                                ir_data3|=0x01;
 300   4                                                count++;
 301   4                                                TH1=0;
 302   4                                                TL1=0;
 303   4                                                TR1=1;
C51 COMPILER V8.02   12864万年繽                                                           11/15/2007 20:52:01 PAGE 6   

 304   4                                                return;//数据为1,退出中断
 305   4                                              }
 306   3                                       count=0;
 307   3                                       TR1=0;
 308   3                                       TH1=0;
 309   3                                       TL1=0;
 310   3                                       return;   //错误,清零退出中断
 311   3                                }
 312   2                         if(count>24&&count<=32)
 313   2                                {
 314   3                                  if(((TL1+TH1*256)>(2250-DELTA))&&((TL1+TH1*256)<(2250+DELTA)))
 315   3                                         {
 316   4                                                ir_data4<<=1;
 317   4                                                count++;
 318   4                                                TH1=0;
 319   4                                                TL1=0;
 320   4                                                TR1=1;
 321   4                                                if(count==33)
 322   4                                                  {
 323   5                                                    EX1=0;
 324   5                                                        en=1;
 325   5                                ir_enable = 1;
 326   5                                                  }
 327   4                                                return;  //数据为0,退出中断
 328   4                                              }
 329   3                                  if(((TL1+TH1*256)>(4500-DELTA))&&((TL1+TH1*256)<(4500+DELTA)))
 330   3                                         {
 331   4                                                ir_data4<<=1;
 332   4                                                ir_data4|=0x01;
 333   4                                                count++;
 334   4                                                TH1=0;
 335   4                                                TL1=0;
 336   4                                                TR1=1;
 337   4                                                if(count==33)
 338   4                                                 {
 339   5                                                  EX1=0;
 340   5                                                      en=1;
 341   5                              ir_enable = 1;
 342   5                                                      }
 343   4                                                 
 344   4                                                      
 345   4                                                return;//数据为1,退出中断
 346   4                                              }
 347   3                                       count=0;
 348   3                                       TR1=0;
 349   3                                       TH1=0;
 350   3                                       TL1=0;
 351   3                                       return;   //错误,清零退出中断
 352   3                                }
 353   2                              }
 354   1                       }
 355          
 356          /********定时器中断***********/
 357          /*     作用:遥控接收         */
 358          /*****************************/
 359          void timer1_int() interrupt 3
 360            {
 361   1         if(en!=0)
 362   1               {
 363   2                en--;
 364   2                TL1=0;
 365   2                TH1=0;
C51 COMPILER V8.02   12864万年繽                                                           11/15/2007 20:52:01 PAGE 7   

 366   2               }
 367   1          
 368   1          EX1=1;
 369   1          count=0;
 370   1               TR1=0;
 371   1               TH1=0;
 372   1               TL1=0;
 373   1        }
 374          
 375          /**********定时器中断***********/
 376          /*    作用:调时闪动定时        */
 377          /*    闪动时间:50(ms)*20(次)   */
 378          /*******************************/
 379          void timer0_int() interrupt 1
 380            {
 381   1         TH0=0x3c;            //50ms定时
 382   1         TL0=0xb0;
 383   1               if(count2++>=20)
 384   1                 {
 385   2                      count2=0;
 386   2              flash=~flash;
 387   2                 }
 388   1        }
 389          
 390          
 391          
 392          /*************************/
 393          /*       延时函数        */
 394          /*************************/
 395          
 396          void delay(unsigned char cnt)
 397           {
 398   1        unsigned char i;
 399   1        while(cnt--!=0)
 400   1        for(i=10;i!=0;i--);
 401   1       }
 402          
 403          
 404          /***********************/
 405          /*   LCM12864忙检测    */
 406          /***********************/
 407          
 408          void tase_busy()
 409          {
 410   1       rs=0;
 411   1       _nop_();
 412   1       _nop_();
 413   1       rw=1;
 414   1       _nop_();
 415   1       _nop_();
 416   1       e=1;
 417   1       _nop_();
 418   1       _nop_();
 419   1       while(P07==1);
 420   1       e=0;
 421   1      }
 422          
 423          
 424          
 425          /***********************/
 426          /*   LCM12864发送指令  */
 427          /***********************/
C51 COMPILER V8.02   12864万年繽                                                           11/15/2007 20:52:01 PAGE 8   

 428          
 429          void send_dictate(unsigned char interim)
 430          {
 431   1       tase_busy();
 432   1       rs=0;
 433   1       _nop_();
 434   1       _nop_();
 435   1       rw=0;
 436   1       _nop_();
 437   1       _nop_();
 438   1       P0=interim;
 439   1       e=1;
 440   1       delay(1);
 441   1       e=0;
 442   1      }
 443          
 444          
 445          /***********************/
 446          /*   LCM12864发送数据  */
 447          /***********************/
 448          
 449          void send_data(unsigned char interim)
 450          {
 451   1       tase_busy();
 452   1       rs=1;
 453   1       _nop_();
 454   1       _nop_();
 455   1       rw=0;
 456   1       _nop_();
 457   1       _nop_();
 458   1       P0=interim;
 459   1       e=1;
 460   1       _nop_();
 461   1       _nop_();
 462   1       e=0;
 463   1      }
 464          
 465          /***********************/
 466          /*  读取DS1302时间并转 */
 467          /*     换成10进制      */
 468          /***********************/
 469          
 470          init()
 471           {
 472   1        alarm_hour=R1302(0xc1);
 473   1        alarm_hour=alarm_hour/16*10+alarm_hour%16;
 474   1        alarm_min=R1302(0xc3);
 475   1        alarm_min=alarm_min/16*10+alarm_min%16;
 476   1       
 477   1        sec=R1302(0x81);
 478   1        sec=sec/16*10+sec%16;
 479   1        min=R1302(0x83);
 480   1        min=min/16*10+min%16;
 481   1        
 482   1      
 483   1        hour=R1302(0x85);
 484   1        hour=hour/16*10+hour%16;
 485   1        
 486   1        day=R1302(0x87);
 487   1        day=day/16*10+day%16;
 488   1      
 489   1        week=R1302(0x8b);
C51 COMPILER V8.02   12864万年繽                                                           11/15/2007 20:52:01 PAGE 9   

 490   1      
 491   1        month=R1302(0x89);
 492   1        month=month/16*10+month%16;
 493   1        
 494   1        year=R1302(0x8d);
 495   1        year=year/16*10+year%16;
 496   1      
 497   1        Conversion(0,year,month,day);
 498   1      
 499   1        jieqi1= calendar_calculate_solar_term_1();
 500   1        jieqi2= calendar_calculate_solar_term_2();
 501   1        
 502   1       }
 503          
 504          /***************************/
 505          /*  写12864_CGROM(未使用)  */
 506          /***************************/
 507          
 508          void cgram()
 509           {
 510   1        uchar addr=0x40;
 511   1        uchar k;
 512   1        for(k=1;k<32;k+=2)
 513   1         {
 514   2          send_dictate(addr);
 515   2          send_data(san[k]);
 516   2          send_data(san[k-1]);
 517   2          addr++;
 518   2         }
 519   1       }
 520          
 521          
 522          
 523          /***********************/
 524          /*       主函数        */
 525          /***********************/
 526          void main()
 527          {
 528   1        
 529   1        unsigned int i;
 530   1      
 531   1        TMOD=0x11;
 532   1        EA=1;
 533   1        EX1=1;
 534   1        ET1=1;
 535   1        ET0=1;
 536   1        TH1=0;
 537   1        TL1=0;
 538   1        IT1=1;
 539   1        count=0;
 540   1        ir_enable=0;
 541   1      
 542   1        id=0;                     //闹钟初如值设定
 543   1        alarm=0;
 544   1        alarm_controls=0;
 545   1        alarm_min=0x00;
 546   1        alarm_hour=0x00;
 547   1        W1302(0xc0,alarm_hour);

⌨️ 快捷键说明

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