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

📄 汉字时钟.lst

📁 包括电源开关判断程序
💻 LST
📖 第 1 页 / 共 3 页
字号:
 516          //startline :开始行
 517          //startcolumn:开始列
 518          //linechar :图片行点除8(图片以8*8点阵为单位)
 519          //columnchar :图片列点除8(图片以8*8点阵为单位)
 520          //address : 字模区首地址
 521          void ShowPicture(unsigned char startline,unsigned char startcolumn,unsigned char linechar,unsigned char co
             -lumnchar,unsigned int address)
 522          { unsigned char i,j;
 523   1      for(i=0;i<columnchar;i++)
 524   1      for(j=0;j<linechar;j++)
 525   1      Show88(startline+i , startcolumn+j , address+(i*linechar+j)*8 );
 526   1      }
 527          /*----------------------------------------------------------------------------------------------*/
 528          //显示一行字符串(汉字,字母混排,一行16字节)
 529          //lin:行
 530          //lineheadaddr: 此行汉字代码区首地址
 531          /*void ShowLine(unsigned char lin,unsigned char linehead[])
 532          { unsigned char i;
 533          unsigned char byte;
 534          unsigned int hzcode;
 535          for( i=0; i<16; )
 536          { byte=linehead;
 537          if(byte < 0x80) //字母
 538          {
 539          if(i>15) return; //!!编译器有问题,须强制退出
 540          ShowChar(lin, i , byte);
 541          i=i+1;
 542          }
 543          else // byte >= 0x80(汉字)
 544          {
 545          if(i>15) return; //!!编译器有问题,须强制退出
 546          byte=byte & 0x7f; //最高位置0,即:减去0x8000
 547          hzcode=(unsigned int)byte<<8; //?? //高8位
 548          hzcode=hzcode+linehead[i+1]; //加低8位,组合成整型数地址
C51 COMPILER V7.50   汉字时钟                                                              02/01/2006 16:45:00 PAGE 10  

 549          ShowHZ( lin,i,hzcode);
 550          i=i+2;
 551          }
 552          }
 553          }
 554          /*----------------------------------------------------------------------------------------------------*/
 555          //显示一屏汉字
 556          //pageheadaddr:此屏汉字代码地址区首地址
 557          /*void ShowPage(unsigned char pagehead[][16])
 558          { unsigned char i;
 559          for(i=0;i<4;i++) ShowLine(i,pagehead); //1行8个汉字,16字节
 560          }
 561          /*----------------------------------------------------------------------------------------------------*/
 562          //读显示数据
 563          unsigned char ReadByte()
 564          {
 565   1      unsigned char dat;
 566   1      CheckState();
 567   1      di=1; rw=1;
 568   1      LCD12864DataPort=0xff;
 569   1      en=1; dat=LCD12864DataPort; en=0;
 570   1      return(dat);
 571   1      }
 572          /*----------------------------------------------------------------------------------------------------*/
 573          //反显一个8*8字块
 574          //lin:行(0-3), column: 列(0-7)
 575          /*void ReverseShow88(unsigned char lin,unsigned char column)
 576          { unsigned char i;
 577          unsigned char tab[8];
 578          if(column<8) SelectScreen(1); //如果列数<4(0,1,2,3),则写在第一屏上
 579          else SelectScreen(2); //否则 (4,5,6,7), 写在第二屏上
 580          //读上部8列
 581          column=column<<3; //每个方块8*8大小
 582          SetLine(lin);
 583          SetColumn(column);
 584          tab[0]=ReadByte(); //空读!!!!! //?
 585          for(i=0;i<8;i++) tab=~ReadByte();
 586          //写回
 587          SetLine(lin);
 588          SetColumn(column);
 589          for(i=0;i<8;i++) WriteByte(tab);
 590          }
 591          /*----------------------------------------------------------------------------------------------------*/
 592          /*----------------------------------------------------------------------------------------------------*/
 593          //反显一个字符
 594          //lin:行(0-4), column: 列(0-15)
 595          /*void ReverseShowChar(unsigned char lin,unsigned char column)
 596          { lin=lin<<1;
 597          ReverseShow88(lin ,column);
 598          ReverseShow88(lin+1,column);
 599          }
 600          /*----------------------------------------------------------------------------------------------------*/
 601          //反显一个汉字
 602          //lin:行(0-3), column: 列(0-7)
 603          /*ReverseShowHZ(unsigned char lin,unsigned char column)
 604          {
 605          lin=lin<<1;
 606          column=column<<1;
 607          ReverseShow88(lin ,column );
 608          ReverseShow88(lin ,column+1);
 609          ReverseShow88(lin+1,column );
 610          ReverseShow88(lin+1,column+1);
C51 COMPILER V7.50   汉字时钟                                                              02/01/2006 16:45:00 PAGE 11  

 611          }
 612          /*----------------------------------------------------------------------------------------------------*/
 613          //反显一行汉字
 614          //lin:行
 615          /*ReverseShow(unsigned char lin)
 616          { unsigned char i;
 617          for(i=0;i<8;i++) ReverseShowHZ(lin,i);
 618          }
 619          /*----------------------------------------------------------------------------------------------------*/
 620          void InitLCD() //初始化LCD
 621          { unsigned char i=250; //延时
 622   1      while(i--);
 623   1      //reset=0;//复位
 624   1      //reset=1;
 625   1      SelectScreen(0);//选择屏幕全屏
 626   1      SetOnOff(0); //关显示
 627   1      ClearScreen(1);//清屏
 628   1      ClearScreen(2);
 629   1      SelectScreen(0);
 630   1      SetOnOff(1); //开显示
 631   1      SelectScreen(0);
 632   1      SetStartLine(0); //开始行:0
 633   1      }
 634          /*----------------------------------------------------------------------------------------------------*/
 635          void Reset() //液晶复位
 636          {
 637   1      //reset 低复位 _|-
 638   1      reset=0;
 639   1      _nop_(); _nop_(); _nop_(); _nop_(); _nop_(); _nop_(); _nop_(); _nop_(); _nop_(); _nop_(); _nop_();
 640   1      reset=1;
 641   1      
 642   1      //全屏
 643   1      cs1=0;
 644   1      _nop_(); _nop_(); _nop_(); _nop_(); _nop_(); _nop_(); _nop_(); _nop_(); _nop_(); _nop_(); _nop_();
 645   1      cs2=0; 
 646   1      _nop_(); _nop_(); _nop_(); _nop_(); _nop_(); _nop_(); _nop_(); _nop_(); _nop_(); _nop_(); _nop_();
 647   1      SendCommandToLCD(0x3F);
 648   1      }
 649          /*--------------------------------------------------------------------------------------------------*/
 650          write(uchar a,uchar b)//
 651          {uchar i;
 652   1      scl=0;
 653   1      _nop_();
 654   1      rst=1;
 655   1      _nop_();
 656   1      _nop_();
 657   1      dat=a;
 658   1      for(i=1;i<=8;i++)
 659   1      {scl=0;
 660   2      io=dat0;
 661   2      _nop_();
 662   2      scl=1;
 663   2      dat>>=1;
 664   2      }
 665   1      dat=b;
 666   1      io=0;
 667   1      for(i=1;i<=8;i++)
 668   1      {scl=0;
 669   2      io=dat0;
 670   2      _nop_();
 671   2      scl=1;
 672   2      dat>>=1;
C51 COMPILER V7.50   汉字时钟                                                              02/01/2006 16:45:00 PAGE 12  

 673   2      }
 674   1      rst=0;
 675   1      _nop_();scl=0;
 676   1      }
 677          
 678          
 679          read (uchar a)
 680          {uchar i;
 681   1       dat=(a<<1)|0x81;
 682   1       scl=0;
 683   1       _nop_(); 
 684   1       rst=1;
 685   1       for(i=1;i<=8;i++)
 686   1      {scl=0;
 687   2      io=dat0;
 688   2      _nop_();
 689   2      scl=1;
 690   2      dat>>=1;
 691   2      }
 692   1      for(i=1;i<=8;i++)
 693   1      {dat>>=1;///////////有问题
 694   2      scl=0;
 695   2      _nop_();
 696   2      dat7=io;
 697   2      scl=1;
 698   2      }
 699   1      rst=0;
 700   1      _nop_();
 701   1      scl=0;
 702   1      return(dat);
 703   1      
 704   1      }
 705          read_time()
 706          {uchar a;
 707   1      a=read(0);
 708   1      nunber[7]=1;
 709   1      nunber[7]=a&0x0f;
 710   1      nunber[6]=a>>4;
 711   1      a=read(1);
 712   1      nunber[5]=a&0x0f;
 713   1      nunber[4]=a>>4;
 714   1      a=read(2);
 715   1      nunber[1]=a&0x0f;
 716   1      nunber[0]=a>>4;
 717   1       }
 718          
 719          init()
 720          {
 721   1      write(0x8e,0x00);//写保护寄存器
 722   1      write(0x90,0xa4);//慢充电寄存器
 723   1      write(0x80,0x00);//打开时钟
 724   1      write(0x8e,0x80);//写保护寄存器}
 725   1      }
 726          set_time()
 727          {uchar a; 
 728   1      nunber[0]=0x01;
 729   1      nunber[1]=0x05;
 730   1      nunber[4]=0x05;
 731   1      nunber[5]=0x03;
 732   1      nunber[6]=0x05;
 733   1      nunber[7]=0x00;
 734   1      write(0x8e,0x00);//写保护寄存器
C51 COMPILER V7.50   汉字时钟                                                              02/01/2006 16:45:00 PAGE 13  

 735   1      a=(nunber[0]<<4)|nunber[1];
 736   1      write(0x84,a);
 737   1      a=(nunber[4]<<4)|nunber[5];
 738   1      write(0x82,a);
 739   1      a=(nunber[6]<<4)|nunber[57];
 740   1      write(0x80,a);
 741   1      }
 742          
 743          /*------------------------------------------------------------------------------*/
 744          
 745          
 746          
 747          
 748          //主函数
 749          main()
 750          {//uchar i,j;
 751   1      InitLCD();
 752   1      init();
 753   1      ShowHZ(0,0,0);
 754   1      ShowHZ(0,2,1);
 755   1      ShowHZ(0,4,2);
 756   1      ShowHZ(0,6,3);
 757   1      ShowHZ(2,2,4);
 758   1      ShowHZ(2,6,5);
 759   1      ShowHZ(2,10,6);
 760   1      ShowChar(0,8,':');
 761   1      //delay();
 762   1      set_time();
 763   1      while(1)
 764   1      {read_time();
 765   2      ShowCha(2,0,table[nunber[0]]);//时
*** WARNING C206 IN LINE 765 OF ..\汉字时钟\汉字时钟.C: 'ShowCha': missing function-prototype
*** ERROR C267 IN LINE 765 OF ..\汉字时钟\汉字时钟.C: 'ShowCha': requires ANSI-style prototype
 766   2      ShowChar(2,1,table[nunber[1]]);
 767   2      ShowChar(2,4,table[nunber[4]]);//分
 768   2      ShowChar(2,5,table[nunber[5]]);
 769   2      ShowChar(2,8,table[nunber[6]]);//秒
 770   2      ShowChar(2,9,table[nunber[7]]);
 771   2          }
 772   1           }

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

⌨️ 快捷键说明

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