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

📄 ds1302.lst

📁 12864+DS1302时钟+18B20温度计
💻 LST
📖 第 1 页 / 共 4 页
字号:
 707   4                                           Write1302(0x80,temp); //写入新的秒数
 708   4                                           Write1302(0x8e,0x80); //禁止写入
 709   4                                           up_flag=0;
 710   4                                       down_flag=0;
 711   4                                        }
 712   3                           if(Down!=0&&Up!=0)
 713   3                           {
 714   4                                                      hide_sec++;
 715   4                                              if(hide_sec>3)
 716   4                                              hide_sec=0;
 717   4                           }
 718   3                                               else hide_sec=0;
 719   3                                               show_time();         //液晶显示数据
 720   3                                        }while(count==2);break;  
 721   2                        case 2:do                                             //count=2,调整分
 722   2                                {
 723   3                                         hide_sec=0;
 724   3                                         Upkey();
 725   3                                         Downkey();
 726   3                                         if(temp>0x60)
 727   3                                           temp=0;
 728   3                                         if(up_flag==1||down_flag==1)
 729   3                                         {
 730   4                                           Write1302(0x8e,0x00); //写入允许
 731   4                                           Write1302(0x82,temp); //写入新的分数
 732   4                                           Write1302(0x8e,0x80); //禁止写入
 733   4                                           up_flag=0;
C51 COMPILER V7.06   DS1302                                                                02/28/2009 00:12:56 PAGE 13  

 734   4                                           down_flag=0;
 735   4                                        }
 736   3                           if(Down!=0&&Up!=0)
 737   3                           {
 738   4                                                      hide_min++;
 739   4                                              if(hide_min>3)
 740   4                                              hide_min=0;
 741   4                           }
 742   3                                               else hide_min=0;
 743   3                                               show_time();
 744   3                                        }while(count==3);break;
 745   2                        case 3:do                                             //count=3,调整小时
 746   2                                {
 747   3                         hide_min=0; 
 748   3                                         Upkey();
 749   3                                         Downkey();
 750   3                                         if(up_flag==1||down_flag==1)
 751   3                                         {
 752   4                                            Write1302(0x8e,0x00); //写入允许
 753   4                                            Write1302(0x84,temp); //写入新的小时数
 754   4                                            Write1302(0x8e,0x80); //禁止写入
 755   4                                            up_flag=0;
 756   4                                            down_flag=0;
 757   4                                         }
 758   3                            if(Down!=0&&Up!=0)
 759   3                           {
 760   4                                                      hide_hour++;
 761   4                                              if(hide_hour>3)
 762   4                                              hide_hour=0;
 763   4                           }
 764   3                                               else  hide_hour=0;
 765   3                                                show_time();
 766   3                                        }while(count==4);break;
 767   2                        case 4:do                                             //count=4,调整星期
 768   2                                {
 769   3                         hide_hour=0; 
 770   3                                         Upkey();
 771   3                                         Downkey();
 772   3                                         if(up_flag==1||down_flag==1)
 773   3                                         {
 774   4                                           Write1302(0x8e,0x00); //写入允许
 775   4                                           Write1302(0x8a,temp); //写入新的星期数
 776   4                                           Write1302(0x8e,0x80); //禁止写入
 777   4                                           up_flag=0;
 778   4                                           down_flag=0;
 779   4                                         }
 780   3                           if(Down!=0&&Up!=0)
 781   3                           {
 782   4                                                 hide_week++;
 783   4                                             if(hide_week>3)
 784   4                                             hide_week=0;
 785   4                           }
 786   3                                               else hide_week=0;
 787   3                                               show_time();
 788   3                                        }while(count==5);break;
 789   2                        case 5:do                                             //count=5,调整日
 790   2                                {
 791   3                                         hide_week=0; 
 792   3                                         Upkey();
 793   3                                         Downkey();
 794   3                                         if(up_flag==1||down_flag==1)
 795   3                                         {
C51 COMPILER V7.06   DS1302                                                                02/28/2009 00:12:56 PAGE 14  

 796   4                                           Write1302(0x8e,0x00); //写入允许
 797   4                                           Write1302(0x86,temp); //写入新的日数
 798   4                                           Write1302(0x8e,0x80); //禁止写入
 799   4                                           up_flag=0;
 800   4                                           down_flag=0;
 801   4                                         }
 802   3                           if(Down!=0&&Up!=0)
 803   3                                           {
 804   4                                                      hide_day++;
 805   4                                              if(hide_day>3)
 806   4                                              hide_day=0;
 807   4                                               }
 808   3                                          else hide_day=0;
 809   3                           show_time();
 810   3                                        }while(count==6);break;
 811   2                        case 6:do                                             //count=6,调整月
 812   2                                {
 813   3                         hide_day=0; 
 814   3                                         Upkey();
 815   3                                         Downkey();
 816   3                                         if(up_flag==1||down_flag==1)
 817   3                                         {
 818   4                                            Write1302(0x8e,0x00); //写入允许
 819   4                                            Write1302(0x88,temp); //写入新的月数
 820   4                                            Write1302(0x8e,0x80); //禁止写入
 821   4                                            up_flag=0;
 822   4                                            down_flag=0;
 823   4                                         }
 824   3                           if(Down!=0&&Up!=0)
 825   3                                           {
 826   4                                                       hide_month++;
 827   4                                               if(hide_month>3)
 828   4                                               hide_month=0;
 829   4                                               }
 830   3                                              else hide_month=0;
 831   3                           show_time();
 832   3                                        }while(count==7);break;
 833   2                        case 7:do                                             //count=7,调整年
 834   2                                {
 835   3                         hide_month=0; 
 836   3                                         Upkey();
 837   3                                         Downkey();
 838   3                                         if(up_flag==1||down_flag==1)
 839   3                                         {
 840   4                                            Write1302(0x8e,0x00); //写入允许
 841   4                                            Write1302(0x8c,temp); //写入新的年数
 842   4                                            Write1302(0x8e,0x80); //禁止写入
 843   4                                            up_flag=0;
 844   4                                            down_flag=0;
 845   4                                        }
 846   3                            if(Down!=0&&Up!=0)
 847   3                                            {
 848   4                                                       hide_year++;
 849   4                                               if(hide_year>3)
 850   4                                               hide_year=0;
 851   4                            }
 852   3                                                else hide_year=0;
 853   3                            show_time();
 854   3                                        }while(count==8);break;
 855   2                        case 8: count=0;hide_year=0;  //count8, 跳出调整模式,返回默认显示状态
 856   2                            Second=Read1302(DS1302_SECOND);
 857   2                        Write1302(0x8e,0x00); //写入允许
C51 COMPILER V7.06   DS1302                                                                02/28/2009 00:12:56 PAGE 15  

 858   2                            Write1302(0x80,Second&0x7f);
 859   2                            Write1302(0x8E,0x80);          //禁止写入
 860   2                                        done=0;
 861   2                        break; //count=7,开启中断,标志位置0并退出
 862   2                        default:break;
 863   2      
 864   2                       }
 865   1      
 866   1      }
 867          
 868          
 869          //***************************************
 870          //液晶显示主程序模块
 871          //***************************************
 872          void show_time()   
 873          {
 874   1        DS1302_GetTime(&CurrentTime);  //获取时钟芯片的时间数据
 875   1        TimeToStr(&CurrentTime);       //时间数据转换液晶字符
 876   1        DateToStr(&CurrentTime);       //日期数据转换液晶字符
 877   1        ReadTemp();                    //开启温度采集程序
 878   1        temp_to_str();                 //温度数据转换成液晶字符
 879   1        gotoxy(4,0);
 880   1        print("温度");
 881   1        gotoxy(4,2);                  //液晶字符显示位置
 882   1        print(TempBuffer);             //显示温度
 883   1        gotoxy(4,6);
 884   1        print("℃");
 885   1        gotoxy(3,0);
 886   1        print("时间:");
 887   1        gotoxy(3,3);
 888   1        print(CurrentTime.TimeString); //显示时间
 889   1        gotoxy(2,3);
 890   1        print(CurrentTime.DateString); //显示日期
 891   1        gotoxy(2,0);
 892   1        print("星期");
 893   1        gotoxy(2,2);
 894   1        print(week_value);             //显示星期
 895   1        gotoxy(1,1);
 896   1        print("RF-X1 开发板");
 897   1        mdelay(500);                 //扫描延时
 898   1      }
 899          
 900          
 901          //************************************
 902          //主程序
 903          //*************************************
 904          main()
 905          {
 906   1        //  flag=1;           //时钟停止标志
 907   1              init_lcd();
 908   1              clrram_lcd();
 909   1              Init_DS18B20( ) ;      //DS18B20初始化
 910   1              Initial_DS1302(); //时钟芯片初始化
 911   1              up_flag=0;
 912   1              down_flag=0;
 913   1              done=0;           //进入默认液晶显示
 914   1              while(1)
 915   1              {   
 916   2              while(done==1)
 917   2                keydone();    //进入调整模式
 918   2                      while(done==0)
 919   2                  {  
C51 COMPILER V7.06   DS1302                                                                02/28/2009 00:12:56 PAGE 16  

 920   3                  show_time();                //液晶显示数据
 921   3                 // flag=0;                  
 922   3                          Setkey();                            //扫描各功能键
 923   3                      }               
 924   2              }
 925   1      }
 926          
 927          
 928          
 929          


MODULE INFORMATION:   STATIC OVERLAYABLE
   CODE SIZE        =   2955    ----
   CONSTANT SIZE    =     46    ----
   XDATA SIZE       =   ----    ----
   PDATA SIZE       =   ----    ----
   DATA SIZE        =     52      24
   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 + -