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

📄 ds1302.lst

📁 用单片机驱动驱动液晶显示器
💻 LST
📖 第 1 页 / 共 4 页
字号:
 701   3      
 702   3                              hide_sec++;          //位闪计数
 703   3                              if(hide_sec>3)           //corrected
 704   3                                      hide_sec=0;
 705   3                                      if(done==1)
 706   3                                      {
 707   4                                              show_time();         //液晶显示数据
 708   4                                      }else{
 709   4                                              show_tick_time();
 710   4                                      }
 711   3      
 712   3                      }while(count==2);break;  
 713   2                      case 2:do                                               //count=2,调整分
 714   2                                 {
 715   3                                         hide_sec=0;
 716   3                                         outkey();
 717   3                                         Upkey();
 718   3                                         Downkey();
 719   3                                         if(temp>0x60)
 720   3                                                 temp=0;
 721   3                                         if(up_flag==1||down_flag==1)
 722   3                                         {
 723   4                                                 Write1302(0x8e,0x00); //写入允许
 724   4                                                 Write1302(0x82,temp); //写入新的分数
 725   4                                                 Write1302(0x8e,0x80); //禁止写入
 726   4                                                 up_flag=0;
 727   4                                                 down_flag=0;
 728   4                                         }
 729   3                                         hide_min++;
 730   3                                         if(hide_min>3)
 731   3                                                 hide_min=0;
 732   3                                       if(done==1)
 733   3                                      {
C51 COMPILER V8.02   DS1302                                                                07/12/2008 21:49:01 PAGE 13  

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

 796   3                                         hide_day++;
 797   3                                         if(hide_day>3)
 798   3                                                 hide_day=0;
 799   3                                         show_time();
 800   3                                 }while(count==6);break;
 801   2                      case 6:do                                               //count=6,调整月
 802   2                                 {
 803   3                                         hide_day=0; 
 804   3                                         outkey();
 805   3                                         Upkey();
 806   3                                         Downkey();
 807   3                                         if(up_flag==1||down_flag==1)
 808   3                                         {
 809   4                                                 Write1302(0x8e,0x00); //写入允许
 810   4                                                 Write1302(0x88,temp); //写入新的月数
 811   4                                                 Write1302(0x8e,0x80); //禁止写入
 812   4                                                 up_flag=0;
 813   4                                                 down_flag=0;
 814   4                                         }
 815   3                                         hide_month++;
 816   3                                         if(hide_month>3)
 817   3                                                 hide_month=0;
 818   3                                         show_time();
 819   3                                 }while(count==7);break;
 820   2                      case 7:do                                               //count=7,调整年
 821   2                                 {
 822   3                                         hide_month=0; 
 823   3                                         outkey();
 824   3                                         Upkey();
 825   3                                         Downkey();
 826   3                                         if(up_flag==1||down_flag==1)
 827   3                                         {
 828   4                                                 Write1302(0x8e,0x00); //写入允许
 829   4                                                 Write1302(0x8c,temp); //写入新的年数
 830   4                                                 Write1302(0x8e,0x80); //禁止写入
 831   4                                                 up_flag=0;
 832   4                                                 down_flag=0;
 833   4                                         }
 834   3                                         hide_year++;
 835   3                                         if(hide_year>3)
 836   3                                                 hide_year=0;
 837   3                                         show_time();
 838   3                                 }while(count==8);break;
 839   2                      case 8: count=0;hide_year=0;  //count8, 跳出调整模式,返回默认显示状态
 840   2                              Second=Read1302(DS1302_SECOND);
 841   2                              Write1302(0x8e,0x00); //写入允许
 842   2                              Write1302(0x80,Second&0x7f);
 843   2                              Write1302(0x8E,0x80);          //禁止写入
 844   2                              done=0;
 845   2                              break; //count=7,开启中断,标志位置0并退出
 846   2                      default:break;
 847   2      
 848   2                      }
 849   1      
 850   1      
 851   1      }
 852          
 853          
 854          void show_time()   //液晶显示程序
 855          {
 856   1              DS1302_GetTime(&CurrentTime);  //获取时钟芯片的时间数据
 857   1              TimeToStr(&CurrentTime);       //时间数据转换液晶字符
C51 COMPILER V8.02   DS1302                                                                07/12/2008 21:49:01 PAGE 15  

 858   1              DateToStr(&CurrentTime);       //日期数据转换液晶字符
 859   1              ReadTemp();                    //开启温度采集程序
 860   1              temp_to_str();                 //温度数据转换成液晶字符
 861   1              GotoXY(12,1);                  //液晶字符显示位置
 862   1              Print(TempBuffer);             //显示温度
 863   1              GotoXY(0,1);
 864   1              Print(CurrentTime.TimeString); //显示时间
 865   1              GotoXY(0,0);
 866   1              Print(CurrentTime.DateString); //显示日期
 867   1              GotoXY(15,0);
 868   1              Print(week_value);             //显示星期
 869   1              GotoXY(11,0);
 870   1              Print("Week");  //在液晶上显示 字母 week
 871   1              Delay1ms(400);                 //扫描延时
 872   1      }
 873          void show_tick_time()
 874          {
 875   1              TimeToStr(&TickTime);
 876   1              GotoXY(0,1);
 877   1              Print(TickTime.TimeString); //显示时间
 878   1      
 879   1              Delay1ms(400);                 //扫描延时
 880   1      
 881   1      }
 882          
 883          
 884          
 885          main()
 886          {
 887   1              flag=1;           //时钟停止标志
 888   1              LCD_Initial();    //液晶初始化
 889   1              Init_DS18B20( ) ;      //DS18B20初始化
 890   1              Initial_DS1302(); //时钟芯片初始化
 891   1              up_flag=0;
 892   1              down_flag=0;
 893   1              done=0;           //进入默认液晶显示
 894   1              while(1)
 895   1              {
 896   2                      Setkey();  
 897   2                      while(done==1)
 898   2                      {
 899   3                              keydone();    //进入调整模式
 900   3                      }
 901   2                      
 902   2                      while(adjusttick==1&&done==0)
 903   2                      {
 904   3                              keydone(); //进入调整闹钟模式
 905   3                              show_tick_time();
 906   3                              }
 907   2                      while(done==0&&adjusttick==0)
 908   2                      {  
 909   3                              show_time();                //液晶显示数据
 910   3                              flag=0;                  
 911   3                              Setkey();                                //扫描各功能键
 912   3                      }       
 913   2              
 914   2              }
 915   1      }
 916          
 917          
 918          
 919          
C51 COMPILER V8.02   DS1302                                                                07/12/2008 21:49:01 PAGE 16  



MODULE INFORMATION:   STATIC OVERLAYABLE
   CODE SIZE        =   2627    ----
   CONSTANT SIZE    =      5    ----
   XDATA SIZE       =   ----    ----
   PDATA SIZE       =   ----    ----
   DATA SIZE        =     76       2
   IDATA SIZE       =   ----    ----
   BIT SIZE         =   ----       1
END OF MODULE INFORMATION.


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

⌨️ 快捷键说明

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