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

📄 24m点阵时钟.lst

📁 基于C51的点阵时钟显示仿真电路和源码
💻 LST
📖 第 1 页 / 共 5 页
字号:
 666   1      
 667   1              RST=0;                 //拉低RST
 668   1              SCLK=0;                //确保写数居前SCLK被拉低
 669   1              RST=1;                 //启动数据传输
 670   1              Write1302(0xbf);       //写入命令字
C51 COMPILER V8.05a   24M点阵时钟                                                          09/28/2010 07:26:18 PAGE 12  

 671   1              Time.Second = Read1302() & 0x7f;
 672   1              Time.Minute = Read1302() & 0x7f; 
 673   1              Time.Hour = Read1302() & 0x7f;
 674   1              Time.Day = Read1302() & 0x7f; 
 675   1              Time.Month = Read1302() & 0x7f;  
 676   1              Time.Week= Read1302() & 0x7f; 
 677   1              Time.Year = Read1302() & 0x7f;
 678   1              SCLK=1;          //将时钟电平置于已知状态
 679   1              RST=0;           //禁止数据传递
 680   1               
 681   1              /*unsigned char ReadValue;   //储存从1302读取的数据
 682   1              ReadValue = ReadSet1302(0x81);   //从秒寄存器读数据
 683   1              Time.Second =ReadValue&0x7f;//(ReadValue&0x70) + (ReadValue&0x0F);//将读出数据转化
 684   1               ReadValue = ReadSet1302(0x83);  //从分寄存器读
 685   1           Time.Minute = ReadValue&0x7f;//(ReadValue&0x70) + (ReadValue&0x0F); //将读出数据转化
 686   1           ReadValue = ReadSet1302(0x85);  //从时寄存器读
 687   1           Time.Hour = ReadValue&0x7f;//(ReadValue&0x70) + (ReadValue&0x0F); //将读出数据转化
 688   1           ReadValue = ReadSet1302(0x87);  //从分寄存器读
 689   1           Time.Day = ReadValue&0x7f;//(ReadValue&0x70) + (ReadValue&0x0F); //将读出数据转化
 690   1               ReadValue = ReadSet1302(0x89);  //从分寄存器读
 691   1           Time.Month = ReadValue&0x7f;//(ReadValue&0x70) + (ReadValue&0x0F); //将读出数据转化
 692   1              ReadValue = ReadSet1302(0x8B);  //从时寄存器读
 693   1              Time.Week= ReadValue&0x7f;//(ReadValue&0x70) + (ReadValue&0x0F); //将读出数据转化
 694   1               ReadValue = ReadSet1302(0x8d);  //从分寄存器读                                                                    
 695   1           Time.Year = ReadValue&0x7f;//(ReadValue&0x70) + (ReadValue&0x0F); //将读出数据转化  
 696   1         
 697   1         */ }
 698          
 699          void Put_Adispram(uchar a){
 700   1              uchar i;
 701   1              //第一屏"今天是:"
 702   1              disword[a+1] = &NO_WORDS[12][0];        //空格
 703   1              for(i=0;i<6;i++)
 704   1                      disword[a+i+2] = &TIME_WORDS[i][0];
 705   1              disword[a+8] = &NO_WORDS[11][0];        //":"
 706   1              //第二屏
 707   1              //disword[4] = &TIME_WORDS[];
 708   1                      
 709   1      }
 710                  
 711          //将年份放入到显示缓存
 712          //需要参数:缓冲区首地址下标
 713          void Put_Ydispram(uchar i){
 714   1              disword[i+1] = &NO_WORDS[12][0];
 715   1              if(Time.Year < 30 && !HIDE){
 716   2                      disword[i+2] = &NO_WORDS[2][0];
 717   2                      disword[i+3] = &NO_WORDS[0][0];
 718   2                      }
 719   1              else if(!HIDE){
 720   2                      disword[i+2] = &NO_WORDS[1][0];
 721   2                      disword[i+3] = &NO_WORDS[9][0];
 722   2                      }
 723   1              disword[i+4] = &NO_WORDS[Time.Year>>4][0];
 724   1              disword[i+5] = &NO_WORDS[Time.Year&0x0f][0];
 725   1              disword[i+6] = &TIME_WORDS[6][0];
 726   1              disword[i+7] = &TIME_WORDS[7][0];       //年
 727   1              disword[i+8] = &NO_WORDS[12][0];
 728   1      }       
 729          //将星期放入到显示缓存
 730          //参数:缓冲区首地址下标
 731          void Put_Kdispram(uchar i){
 732   1              disword[i+1] = &NO_WORDS[12][0];                
C51 COMPILER V8.05a   24M点阵时钟                                                          09/28/2010 07:26:18 PAGE 13  

 733   1              disword[i+2] = &TIME_WORDS[12][0];              
 734   1              disword[i+3] = &TIME_WORDS[13][0];      //星期          
 735   1              disword[i+4] = &TIME_WORDS[14][0];              
 736   1              disword[i+5] = &TIME_WORDS[15][0];
 737   1              if(STATE== STA_CHG &&HIDE){
 738   2                      disword[i+6] = &NO_WORDS[12][0];                //
 739   2                      disword[i+7] = &NO_WORDS[12][0];                //
 740   2                      }
 741   1              else{
 742   2                      disword[i+6] = &WEEK_WORDS[Time.Week*2-2][0];           //
 743   2                      disword[i+7] = &WEEK_WORDS[Time.Week*2-1][0];           //
 744   2                      }
 745   1              disword[i+8] = &NO_WORDS[12][0];                
 746   1      }
 747          
 748          //将日期放入到显示缓存
 749          //参数:缓冲区首地址下标
 750          void Put_Ddispram(uchar i){
 751   1              disword[i+1] = &NO_WORDS[Time.Month>>4][0];             //小时高位
 752   1              disword[i+2] = &NO_WORDS[ Time.Month&0x0f][0];          //小时地位
 753   1              disword[i+3] = &TIME_WORDS[8][0];               //-
 754   1              disword[i+4] = &TIME_WORDS[9][0];               //分钟高位
 755   1              disword[i+5] = &NO_WORDS[ Time.Day>>4][0];              //分钟地位
 756   1              disword[i+6] = &NO_WORDS[Time.Day&0x0f][0];             //-
 757   1              disword[i+7] = &TIME_WORDS[10][0];              //秒高位
 758   1              disword[i+8] = &TIME_WORDS[11][0];              //秒地位
 759   1      }
 760          
 761          //将时间放入到显示缓存
 762          //参数:缓冲区首地址下标
 763          void Put_Tdispram(uchar i){
 764   1              disword[i+1] = &NO_WORDS[Time.Hour>>4][0];              //小时高位
 765   1              disword[i+2] = &NO_WORDS[ Time.Hour&0x0f][0];           //小时地位
 766   1              disword[i+3] = &NO_WORDS[ 11 ];         //-
 767   1              disword[i+4] = &NO_WORDS[Time.Minute>>4][0];            //分钟高位
 768   1              disword[i+5] = &NO_WORDS[ Time.Minute&0x0f][0];         //分钟地位
 769   1              disword[i+6] = &NO_WORDS[ 11 ];         //-
 770   1              disword[i+7] = &NO_WORDS[Time.Second>>4][0];            //秒高位
 771   1              disword[i+8] = &NO_WORDS[ Time.Second&0x0f][0];         //秒地位
 772   1      }
 773          //===================================
 774          //*****关于温度检测部分*****
 775          void Put_gTEMP(){
 776   1      //      uchar i;
 777   1      //      Put_Wdispram(TMP_WORDS,0);
 778   1              disword[6] = &NO_WORDS[temp_ram[3]][0];                 //百位
 779   1              disword[7] = &NO_WORDS[temp_ram[2]][0];         //十位
 780   1              disword[8] = &NO_WORDS[temp_ram[1]][0];         //个位
 781   1              disword[10] = &NO_WORDS[temp_ram[0]][0];                //小数
 782   1              disword[12]     = &NO_WORDS[12];                //空格
 783   1              disword[13]     = &NO_WORDS[12];                //空格
 784   1              //
 785   1      }
 786          
 787          void Put_sTEMP(uchar i){
 788   1              disword[i+1] = &NO_WORDS[12];           //空格
 789   1              disword[i+2] = &NO_WORDS[12];//&NO_WORDS[temp_ram[3]][0];               //百位
 790   1              disword[i+3] = &NO_WORDS[temp_ram[2]][0];               //十位
 791   1              disword[i+4] = &NO_WORDS[temp_ram[1]][0];               //个位
 792   1              disword[i+5] = &TMP_WORDS[8][0];        //小数点
 793   1              disword[i+6] = &NO_WORDS[temp_ram[0]][0];               //小数
 794   1              disword[i+7] = &TMP_WORDS[10][0];
C51 COMPILER V8.05a   24M点阵时钟                                                          09/28/2010 07:26:18 PAGE 14  

 795   1              disword[i+8] = &NO_WORDS[12];           //空格
 796   1      }
 797          void Put_Cpyrt(uchar i){
 798   1              uchar m;
 799   1              for(m=0;m<8;m++)
 800   1                      disword[i+1+m] = &CPYRT_WORDS[m];
 801   1      }
 802          void Show_Cpyrt(){
 803   1              uchar i;
 804   1              for(i=1;i<9;i++)
 805   1                      disword[i] = &NO_WORDS[12];
 806   1              Put_Cpyrt(8);
 807   1              Move_Down();
 808   1              Put_Cpyrt(0);
 809   1              Put_Tdispram(8);
 810   1              Move_Down();
 811   1      }
 812                  
 813          //========================
 814          //参数i:放入第几屏缓存
 815          //参数j:诗歌第几页
 816          //========================
 817          void Put_Song(uchar i,uchar j){
 818   1              uchar m;
 819   1              for(m=0;m<8;m++)
 820   1                      disword[i+1+m] = &SONG_WORDS[j+m];
 821   1      }
 822          //显示诗歌
 823          void Show_Song(){
 824   1              uchar i;
 825   1              Put_Song(8,0);
 826   1              Move_Up();
 827   1              for(i=0;i<3;i++){
 828   2                      Put_Song(0,i*8);
 829   2                      Put_Song(8, (i+1)*8);
 830   2                      Move_Up();
 831   2                      }
 832   1              Put_Song(0, 3*8);
 833   1              Put_Tdispram(8);
 834   1              Move_Up();
 835   1      }
 836          
 837                  
 838          //======================
 839          //*滚动显示所有信息*
 840          //======================
 841          void Show_All_Info(){
 842   1              Put_Adispram(8);
 843   1              Move_Down();    //切换效果
 844   1              
 845   1              Put_Adispram(0);
 846   1              Put_Ydispram(8);        //XXXX年
 847   1              Show_All_Word();
 848   1              
 849   1              Put_Ydispram(0);        //XXXX年
 850   1              Put_Ddispram(8);
 851   1              Show_All_Word();
 852   1      
 853   1              Put_Ddispram(0);
 854   1              Put_Kdispram(8);
 855   1              Show_All_Word();
 856   1      
C51 COMPILER V8.05a   24M点阵时钟                                                          09/28/2010 07:26:18 PAGE 15  

 857   1              
 858   1              Read_Temperature();
 859   1              Disp_Temperature();
 860   1              Put_Kdispram(0);
 861   1              Put_Tdispram(8);
 862   1              Show_All_Word();
 863   1      
 864   1              Read_Temperature();
 865   1              Disp_Temperature();
 866   1              Put_Tdispram(0);
 867   1              Put_sTEMP(8);
 868   1              Show_All_Word();
 869   1      
 870   1              Read_TIME();
 871   1              Put_sTEMP(0);
 872   1              Put_Tdispram(8);
 873   1              Move_Up();
 874   1              
 875   1      }
 876          
 877                  
 878          /*us级延时函数                                        */
 879          /*******************************************************************/
 880          
 881          void Delay(unsigned int num)
 882          {
 883   1        num = num*2; 
 884   1        while( --num ) ;
 885   1      }
 886          
 887          /*初始化ds1820                                      */
 888          /*******************************************************************/
 889          Init_DS18B20(void)
 890          {  

⌨️ 快捷键说明

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