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

📄 lcd128x64.lst

📁 128*64程序和仿真80C51 128*64 LCM program and simulate for 80C51. help for you
💻 LST
📖 第 1 页 / 共 4 页
字号:
 490               }
 491             }
 492           }
 493          /*---------------------指定位置显示数字8*16-----------------------*/
 494          
 495          void sz_disp16(unsigned char pag,unsigned char col, unsigned char code *szk)
 496           {
 497   1        unsigned char j=0,i=0;
 498   1        for(j=0;j<2;j++)
 499   1         {
 500   2          write_command(Page_Add+pag+j);
 501   2          write_command(Col_Add+col);
 502   2          for(i=0;i<8;i++) 
 503   2               write_data(szk[8*j+i]);
 504   2         }
 505   1       }
 506          
 507          /*---------------------指定位置显示汉字16*16-----------------------*/
 508          
 509          void hz_disp16(unsigned char pag,unsigned char col, unsigned char code *hzk)
 510           {
 511   1        unsigned char j=0,i=0;
 512   1        for(j=0;j<2;j++)
 513   1         {
 514   2          write_command(Page_Add+pag+j);
 515   2          write_command(Col_Add+col);
 516   2          for(i=0;i<16;i++) 
 517   2               write_data(hzk[16*j+i]);
 518   2         }
 519   1       }
 520          
 521          
 522          /*------------------初始化LCD屏--------------------------*/
 523          void init_lcd()
 524           {
 525   1        RST=0;
 526   1        delay(100);
 527   1        RST=1;
 528   1        delay(100);
 529   1      
 530   1        CS2=1;
 531   1        CS1=1;
 532   1      
 533   1        delay(100);
 534   1        write_command(Disp_Off);
 535   1        write_command(Page_Add+0);
 536   1        write_command(Start_Line+0);
 537   1        write_command(Col_Add+0);
 538   1        write_command(Disp_On);
 539   1       }
 540          
 541          
 542          /*-------------------------- 开机信息显示------------------------*/
 543          void StartMsg(void)
 544           {
 545   1        Clr_Scr();         // 先清屏 //
 546   1        CS2=1;CS1=0;
 547   1        hz_disp16(0,32,huan);      //  欢
 548   1        delay(2000);
 549   1        hz_disp16(0,48,ying);      //  迎
 550   1        delay(2000);
 551   1        CS2=0;CS1=1;
C51 COMPILER V7.50   LCD128X64                                                             08/15/2007 22:03:43 PAGE 10  

 552   1        hz_disp16(0,0,shi1);       //  使
 553   1        delay(2000);
 554   1        hz_disp16(0,16,yong);      //  用
 555   1        delay(2000);
 556   1        CS2=1;CS1=0;
 557   1        hz_disp16(2,32,shu);       //  数
 558   1        delay(2000);
 559   1        hz_disp16(2,48,ma);        //  码
 560   1        delay(2000);
 561   1        CS2=0;CS1=1;
 562   1        hz_disp16(2,0,shi);        //  时
 563   1        delay(2000);
 564   1        hz_disp16(2,16,zhong);     //  钟
 565   1        delay(2000);
 566   1      
 567   1        CS2=1;CS1=0;
 568   1        hz_disp16(5,16,zhi);       //  制
 569   1        delay(2000);
 570   1        hz_disp16(5,32,zuo);       //  作
 571   1        delay(2000);
 572   1        hz_disp16(5,48,maohao);    //  :
 573   1        delay(2000);
 574   1        CS2=0;CS1=1;
 575   1        hz_disp16(5,0,liu);       //  刘
 576   1        delay(2000);
 577   1        hz_disp16(5,16,bing);      //  兵
 578   1        delay(2000);
 579   1        hz_disp16(5,32,gantanhao);     //  !
 580   1        delay(2000);
 581   1       }
 582          /*------------------------时钟固定汉字显示-----------------------*/
 583          void ClockMsg(void)
 584           {
 585   1        Clr_Scr();         // 先清屏 //
 586   1        
 587   1        CS2=1;CS1=0;       // 左屏
 588   1        hz_disp16(1,32,xing);       //  星
 589   1        hz_disp16(1,48,qi);       //  期
 590   1        sz_disp16(3,0,shuzi[2]);       //  2
 591   1        sz_disp16(3,8,shuzi[0]);       //  0
 592   1        hz_disp16(3,32,nian);     //  年
 593   1        hz_disp16(5,48,shi2);     //  时
 594   1      
 595   1        CS2=0;CS1=1;       // 右屏
 596   1        hz_disp16(3,0,yue);      //  月
 597   1        hz_disp16(3,32,ri);      //  日
 598   1        hz_disp16(5,16,fen);      //  分
 599   1        hz_disp16(5,48,miao);     //  秒
 600   1       }
 601          
 602          
 603          /*-----------------------时钟部分---------------------------*/
 604          
 605          ///////////////////////////////////////////////
 606          ///// 函数名:   写入字节子函数          //////
 607          ///// 函数功能: 写入一个字节到对应地址  //////
 608          ///// 函数参数: 有(写入的字节内容)      //////
 609          ///// 返回值:   无                      //////
 610          ///////////////////////////////////////////////
 611          
 612          void InputByte(unsigned char dat) 
 613           { 
C51 COMPILER V7.50   LCD128X64                                                             08/15/2007 22:03:43 PAGE 11  

 614   1        unsigned char i;
 615   1        ACC = dat;
 616   1        for(i=8; i>0; i--)
 617   1         {
 618   2          IO = ACC0;      
 619   2          CLK = 1;          //下降沿写入数据//
 620   2          CLK = 0;
 621   2          ACC = ACC >> 1; 
 622   2         } 
 623   1       }
 624          
 625          /************************************************************************************///*时钟部分*/↓
 626          ///////////////////////////////////////////////
 627          ///// 函数名:   读出字节子函数          //////
 628          ///// 函数功能: 从对应地址读出一个字节  //////
 629          ///// 函数参数: 无                      //////
 630          ///// 返回值:   有(读出的字节内容)      //////
 631          ///////////////////////////////////////////////
 632          
 633          OutputByte(void) 
 634           { 
 635   1        unsigned char i;
 636   1        for(i=8; i>0; i--)
 637   1         {
 638   2          ACC = ACC >>1; 
 639   2          ACC7 = IO;
 640   2          CLK = 1;           //上升沿读出数据//
 641   2          CLK = 0;
 642   2         } 
 643   1        return(ACC); 
 644   1       }
 645          /*************************************************************************************************/ 
 646          /////////////////////////////////////////////
 647          ///// 函数名:   写入字节完整子函数    //////
 648          ///// 函数功能: 写入一个字节到DS1302  //////
 649          ///// 调用: InputByte()               //////
 650          ///// 函数参数: 有(写入的地址和数据)  //////
 651          ///// 返回值:   无                    //////
 652          /////////////////////////////////////////////
 653          
 654          void WriteTo1302(unsigned char Addr,unsigned char Date)
 655           {
 656   1        RST2 = 0;
 657   1        CLK = 0;
 658   1        RST2 = 1;
 659   1        InputByte(Addr);       // 先给地址,命令 //
 660   1        InputByte(Date);       // 再写入一字节数据 //
 661   1        CLK = 1;
 662   1        RST2 =0;
 663   1       }                                                      
 664          /*************************************************************************************************/ 
 665          /////////////////////////////////////////////
 666          ///// 函数名:   读出字节完整子函数    //////
 667          ///// 函数功能: 从DS1302读出一个字节  //////
 668          ///// 调用: InputByte(); OutputByte() //////
 669          ///// 函数参数: 无                    //////
 670          ///// 返回值:   有(读出的字节内容)    //////
 671          /////////////////////////////////////////////
 672          
 673          ReadFrom1302(unsigned char Add)
 674           {
 675   1        unsigned char Date;
C51 COMPILER V7.50   LCD128X64                                                             08/15/2007 22:03:43 PAGE 12  

 676   1        RST2 = 0;
 677   1        CLK = 0;
 678   1        RST2 = 1;
 679   1        InputByte(Add);         // 先给地址,命令 //
 680   1        Date = OutputByte();      // 再读一字节数据 //
 681   1        CLK = 1;
 682   1        RST2 =0;
 683   1        return(Date);
 684   1       }
 685          /*************************************************************************************************/
 686          /////////////////////////////////////////////////////////////////////////////////
 687          ///// 函数名称: SetTime                                                     /////                         
             -                                        /////
 688          ///// 功能: 设置初始时间                                                    /////
 689          ///// 调用: WriteTo1302()                                                   /////
 690          ///// 输入: pSecDa: 初始时间地址。初始时间格式为: 秒 分 时 日 月 星期 年    ///// 
 691          ///// 返回值: 无                                                            /////
 692          /////////////////////////////////////////////////////////////////////////////////
 693          
 694          void SetTime(unsigned char *pSecDa) 
 695           {
 696   1        unsigned char i;
 697   1        unsigned char Addr = 0x80; 
 698   1        WriteTo1302(0x8e,0x00);         // 控制命令,WP=0,写操作 //
 699   1        for(i =7;i>0;i--)
 700   1         { 
 701   2          WriteTo1302(Addr,*pSecDa);         // 秒 分 时 日 月 星期 年 //
 702   2          pSecDa++;
 703   2          Addr +=2;
 704   2         }
 705   1        WriteTo1302(0x8e,0x80);         // 控制命令,WP=1,写保护 //
 706   1       }                                                                  
 707          /**************************************************************************************************/ 
 708          //////////////////////////////////////////////////////////////////////////////////////
 709          ///// 名称: GetTime                                                              /////
 710          ///// 说明:                                                                      /////
 711          ///// 功能: 读取DS1302当前时间                                                   /////
 712          ///// 调用: uc_R1302()                                                           /////
 713          ///// 输入: ucCurtime: 保存当前时间地址。当前时间格式为: 秒 分 时 日 月 星期 年  /////
 714          ///// 7Byte (BCD码) 1B 1B 1B 1B 1B 1B 1B                                         /////
 715          ///// 返回值: 无                                                                 /////
 716          //////////////////////////////////////////////////////////////////////////////////////
 717          
 718          void GetTime(void) 
 719           {
 720   1        unsigned char i;
 721   1        unsigned char Addr = 0x81;
 722   1        for (i=0;i<7;i++)
 723   1         {
 724   2          Curtime[i] = ReadFrom1302(Addr);        // 格式为: 秒 分 时 日 月 星期 年 //
 725   2          Addr += 2;
 726   2         }
 727   1        sec = Curtime[0];
 728   1        min = Curtime[1];
 729   1        hour = Curtime[2];
 730   1        day = Curtime[5];
 731   1        date = Curtime[3];
 732   1        month = Curtime[4];
 733   1        year = Curtime[6];
 734   1       }
 735          /**************************************************************************************************/
 736          ////////////////////////////////////////////////////
C51 COMPILER V7.50   LCD128X64                                                             08/15/2007 22:03:43 PAGE 13  

 737          ///// 函数名:   定时器T0初始化子函数         //////

⌨️ 快捷键说明

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