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

📄 ocm12864.lst

📁 12864drver you can use do something happy
💻 LST
📖 第 1 页 / 共 2 页
字号:
 267          {
 268   1        data_port=0xff;
 269   1        di=0;
 270   1        rw=1;
 271   1        ;
 272   1        e=1;
 273   1        while(bf||res==1);
 274   1        e=0;
 275   1      }
 276          
 277          void wr_lcd (uchar data_command,uchar content)  //写数据或命令到LCD
 278          {
 279   1        chk_busy ();
 280   1        di=data_command;
 281   1        rw=0;
 282   1        data_port=content;
 283   1        e=1;
 284   1        ;
 285   1        e=0;
 286   1      }
 287          
 288          
 289          void lattice_disp (uchar data1,uchar data2)        //写点阵 整屏清 
 290          {
 291   1        uchar i,j;
 292   1        cs1=1;cs2=1;
 293   1       wr_lcd (command,disp_on);     //开显示
 294   1        for(j=0;j<8;j++)
 295   1        {
 296   2          wr_lcd (command,disp_x+j);  //   X   0~7   表示选择页地址
 297   2          wr_lcd (command,disp_z);    //   Z   0~63    表示行选择地址
 298   2          wr_lcd (command,disp_y);    //       Y   0~63        表示行具体某一位
 299   2          for(i=0;i<32;i++)          //16X16点阵为32个数据组成
 300   2          {
 301   3            wr_lcd (data,data1);                                        
 302   3            wr_lcd (data,data2);
 303   3          }
C51 COMPILER V8.02   OCM12864                                                              12/03/2008 23:43:43 PAGE 6   

 304   2        }
 305   1      }
 306          
 307          void chn_disp (uchar t_f,uchar x,uchar y,uchar xl,uchar yl,uchar row_xl,uchar row_yl,uchar code *chn)
 308          {                                                       //指定位置(x,y)显示row_xl行(每行row_yl个)汉字(大小8xl*yl)
 309   1         uchar i,j,k,l,a;
 310   1        wr_lcd (command,disp_on);   //开显示
 311   1        for(l=0;l<row_xl;l++)    //数据行数
 312   1        {
 313   2          for(k=0;k<row_yl;k++)  //每行16位数据
 314   2          {
 315   3            for(j=0;j<xl;j++)    
 316   3            {
 317   4              wr_lcd (command,disp_x+x+l*xl+j);
 318   4              wr_lcd (command,disp_z);
 319   4              wr_lcd (command,disp_y+y+k*yl);
 320   4              a=l*xl*yl*row_yl+k*xl*yl+j*yl;
 321   4                      if(t_f==0)
 322   4              for(i=0;i<yl;i++)
 323   4                wr_lcd (data,chn[a+i]);
 324   4            }
 325   3          }
 326   2        }
 327   1      }
 328           
 329          void init_lcd (void)                        // LCD初始化
 330          {
 331   1        delay(30);
 332   1        rst=0;
 333   1        rst=1;
 334   1        cs1=1;cs2=1;
 335   1        wr_lcd (command,disp_off);
 336   1        wr_lcd (command,disp_on);
 337   1      }
 338          
 339              
 340          
 341          void display (void)                         //   待机显示
 342          {
 343   1        lattice_disp(0x00,0x00);
 344   1      /**********************************************************/
 345   1        cs1=1;cs2=0;
 346   1        chn_disp (0,0,0,2,8,1,1,digital1+2*16);
 347   1        chn_disp (0,0,8,2,8,1,1,digital1+0*16);
 348   1        chn_disp (0,0,16,2,8,1,1,digital1+(year/10)*16);
 349   1        chn_disp (0,0,24,2,8,1,1,digital1+(year%10)*16);
 350   1        chn_disp (0,0,32,2,16,1,1,timepoint+96);               //年
 351   1        chn_disp (0,0,48,2,8,1,1,digital1+(month/10)*16);
 352   1        chn_disp (0,0,56,2,8,1,1,digital1+(month%10)*16);
 353   1      
 354   1      /*---------------------------------------------------------*/
 355   1        cs1=0;cs2=1;
 356   1        chn_disp (0,0,0,2,16,1,1,timepoint+128);                     //月
 357   1        chn_disp (0,0,16,2,8,1,1,digital1+(date/10)*16);
 358   1        chn_disp (0,0,24,2,8,1,1,digital1+(date%10)*16);
 359   1        chn_disp (0,0,32,2,16,1,1,timepoint+160);                        //日
 360   1      
 361   1      /*---------------------------------------------------------*/
 362   1         cs1=1;cs2=0;
 363   1      
 364   1        chn_disp (0,2,16,2,8,1,1,digital1+(hour/10)*16);
 365   1        chn_disp (0,2,24,2,8,1,1,digital1+(hour%10)*16);
C51 COMPILER V8.02   OCM12864                                                              12/03/2008 23:43:43 PAGE 7   

 366   1        chn_disp (0,2,32,2,16,1,1,timepoint);                         //时
 367   1        chn_disp (0,2,48,2,8,1,1,digital1+(minite/10)*16);
 368   1        chn_disp (0,2,56,2,8,1,1,digital1+(minite%10)*16);
 369   1      
 370   1      /*---------------------------------------------------------*/
 371   1      
 372   1        cs1=0;cs2=1;
 373   1      
 374   1        chn_disp (0,2,0,2,16,1,1,timepoint+32);                          //分
 375   1        chn_disp (0,2,16,2,8,1,1,digital1+(second/10)*16);
 376   1        chn_disp (0,2,24,2,8,1,1,digital1+(second%10)*16);
 377   1        chn_disp (0,2,32,2,16,1,1,timepoint+64);                         //秒
 378   1      
 379   1      /*---------------------------------------------------------*/
 380   1      
 381   1        cs1=1;cs2=0;
 382   1      
 383   1        chn_disp (0,4,8,2,16,1,2,timepoint+192);                         //星期
 384   1        chn_disp (0,4,40,2,16,1,1,digital2+(week*16));                             
 385   1      
 386   1      /*---------------------------------------------------------*/
 387   1      
 388   1       cs1=0;cs2=1;
 389   1      
 390   1        chn_disp (0,4,0,2,16,1,2,setdisp+128);                            //温度
 391   1        chn_disp (0,4,32,2,8,1,1,digital1+(Temper/10)*16);    
 392   1        chn_disp (0,4,40,2,8,1,1,digital1+(Temper%10)*16);    
 393   1        chn_disp (0,4,48,2,16,1,1,setdisp+384);
 394   1      /*---------------------------------------------------------*/
 395   1      
 396   1        cs1=1;cs2=0;
 397   1      
 398   1        chn_disp (0,6,0,2,16,1,4,Company);    
 399   1      
 400   1      /**********************************************************/
 401   1      
 402   1        cs1=0;cs2=1;
 403   1      
 404   1        chn_disp (0,6,0,2,16,1,3,Company+128);
 405   1      
 406   1      /**********************************************************/
 407   1      }
 408          
 409          void display1 (void)                         //设定显示屏
 410          {
 411   1        lattice_disp(0x00,0x00);
 412   1        cs1=1;cs2=0;
 413   1        chn_disp (settimeoff_on,0,0,2,16,1,2,setdisp+0);     //时间设定
 414   1        chn_disp (settimeoff_on,0,32,2,16,1,2,setdisp+256);    
 415   1        chn_disp (setdateoff_on,2,0,2,16,1,2,setdisp+64);      //日期设定
 416   1        chn_disp (setdateoff_on,2,32,2,16,1,2,setdisp+256);    
 417   1        chn_disp (settempoff_on,4,0,2,16,1,2,setdisp+128);     //温度设定
 418   1        chn_disp (settempoff_on,4,32,2,16,1,2,setdisp+256);
 419   1        chn_disp (setdelayoff_on,6,0,2,16,1,2,setdisp+192);    //定时设定
 420   1        chn_disp (setdelayoff_on,6,32,2,16,1,2,setdisp+256);
 421   1      
 422   1      
 423   1        cs1=0;cs2=1;
 424   1        chn_disp (0,0,0,2,8,1,1,digital1+(hour/10)*16);          //一行 时间设定
 425   1        chn_disp (0,0,8,2,8,1,1,digital1+(hour%10)*16);
 426   1        chn_disp (0,0,16,2,8,1,1,point);
 427   1        chn_disp (0,0,24,2,8,1,1,digital1+(minite/10)*16);
C51 COMPILER V8.02   OCM12864                                                              12/03/2008 23:43:43 PAGE 8   

 428   1        chn_disp (0,0,32,2,8,1,1,digital1+(minite%10)*16);
 429   1        chn_disp (0,0,40,2,8,1,1,point);
 430   1        chn_disp (0,0,48,2,8,1,1,digital1+(second/10)*16);
 431   1        chn_disp (0,0,56,2,8,1,1,digital1+(second%10)*16);
 432   1      
 433   1      
 434   1        chn_disp (0,2,0,2,8,1,1,digital1+(year/10)*16);           //二行 日期设定
 435   1        chn_disp (0,2,8,2,8,1,1,digital1+(year%10)*16);
 436   1        chn_disp (0,2,16,2,8,1,1,point+16);
 437   1        chn_disp (0,2,24,2,8,1,1,digital1+(month/10)*16);
 438   1        chn_disp (0,2,32,2,8,1,1,digital1+(month%10)*16);
 439   1        chn_disp (0,2,40,2,8,1,1,point+16);
 440   1        chn_disp (0,2,48,2,8,1,1,digital1+(date/10)*16);
 441   1        chn_disp (0,2,56,2,8,1,1,digital1+(date%10)*16);
 442   1              
 443   1        chn_disp (0,4,8,2,8,1,1,digital1+(Temper/100)*16);    //三行 温度设定
 444   1        chn_disp (0,4,16,2,8,1,1,digital1+(Temper/10)*16);    
 445   1        chn_disp (0,4,24,2,8,1,1,point+32);
 446   1        chn_disp (0,4,32,2,8,1,1,digital1+(Temper%10)*16);
 447   1        chn_disp (0,4,40,2,16,1,2,setdisp+384);
 448   1      
 449   1        chn_disp (0,6,0,2,8,1,1,digital1+(sethour/10)*16);     //四行 定时设定
 450   1        chn_disp (0,6,8,2,8,1,1,digital1+(sethour%10)*16);
 451   1        chn_disp (0,6,16,2,8,1,1,point);
 452   1        chn_disp (0,6,24,2,8,1,1,digital1+(setminite/10)*16);
 453   1        chn_disp (0,6,32,2,8,1,1,digital1+(setminite%10)*16);
 454   1        chn_disp (0,6,40,2,16,1,1,setdisp+320+(setoff_on*16));
 455   1        chn_disp (0,6,56,2,8,1,1,digital1+setnumber*16);
 456   1      
 457   1      }
 458          
 459          
 460          void main ()                             // 主程序
 461          {
 462   1      
 463   1              TMOD=0x11;               
 464   1              TL0=0xF0;
 465   1              TH0=0xD8;
 466   1              PT0=1;
 467   1              TR0=1;
 468   1              ET0=1;
 469   1      
 470   1              TL1=0x00;
 471   1              TH1=0x00;
 472   1              PT1=0;
 473   1              TR1=0;
 474   1              ET1=1;
 475   1              EA=1;
 476   1       delay(65535);
 477   1       delay(65535);
 478   1        init_lcd ();
 479   1       delay(65535);
 480   1        while(1)
 481   1        {
 482   2         delay(50000);
 483   2        display();}
 484   1      }
 485          
 486          
 487          
 488          void t0(void) interrupt 1 using 1
 489          {  
C51 COMPILER V8.02   OCM12864                                                              12/03/2008 23:43:43 PAGE 9   

 490   1       TL0=0xF0;                           //定时器自动装载方式,10ms定时
 491   1       TH0=0xD8; 
 492   1              mir++;
 493   1              if(mir==100)
 494   1              {
 495   2                mir=0;
 496   2            second++; 
 497   2                if(second==59)
 498   2                 {
 499   3                  second=0;
 500   3                  minite++;
 501   3                        if(minite==59)
 502   3                  {
 503   4                    minite=0;
 504   4                    hour++;
 505   4                                      if(hour==12) hour=1;     
 506   4                  }
 507   3              }
 508   2              
 509   2               }
 510   1      }
 511          
 512          
 513          void t1(void) interrupt 3 using 1
 514          {  
 515   1              TL1=0x00;               //定时器自动装载方式,65.535ms定时
 516   1              TH1=0x00;
 517   1              b++;
 518   1      if(b==15)
 519   1          {
 520   2               b=0;
 521   2          if(falg==0)
 522   2              display();
 523   2              if(falg==1)
 524   2              display1();
 525   2              }
 526   1      }


MODULE INFORMATION:   STATIC OVERLAYABLE
   CODE SIZE        =   2689    ----
   CONSTANT SIZE    =   1344    ----
   XDATA SIZE       =   ----    ----
   PDATA SIZE       =   ----    ----
   DATA SIZE        =     19      11
   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 + -