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

📄 ds1302.lst

📁 DS1302时钟+DS18B20程序 LCD1602显示 51单片机 keil 环境 和大家分享共同学习
💻 LST
📖 第 1 页 / 共 4 页
字号:
 619   3                                         {
 620   4                                         Write1302(0x8e,0x00); //写入允许
 621   4                                         Write1302(0x80,temp|0x80); //写入新的秒数
 622   4                                         Write1302(0x8e,0x80); //禁止写入
 623   4                                         up_flag=0;
 624   4                                         down_flag=0;
 625   4                                         }
 626   3      
 627   3                                         hide_sec++;          //位闪计数
 628   3                                         if(hide_sec>2)
 629   3                                           hide_sec=0;
 630   3                         show_time();         //液晶显示数据
 631   3                                        }while(count==2);break;  
 632   2                        case 2:do                                             //count=2,调整分
 633   2                                {
 634   3                                         hide_sec=0;
 635   3                                         outkey();
 636   3                                         Upkey();
 637   3                                         Downkey();
 638   3                                         if(temp>0x60)
 639   3                                           temp=0;
 640   3                                         if(up_flag==1||down_flag==1)
 641   3                                         {
 642   4                                         Write1302(0x8e,0x00); //写入允许
 643   4                                         Write1302(0x82,temp); //写入新的分数
 644   4                                         Write1302(0x8e,0x80); //禁止写入
 645   4                                         up_flag=0;
 646   4                                         down_flag=0;
 647   4                                         }
 648   3                                         hide_min++;
 649   3                                         if(hide_min>2)
 650   3                                           hide_min=0;
 651   3                         show_time();
 652   3                                        }while(count==3);break;
 653   2                        case 3:do                                             //count=3,调整小时
 654   2                                {
 655   3                         hide_min=0; 
 656   3                                         outkey();
 657   3                                         Upkey();
 658   3                                         Downkey();
 659   3                                         if(up_flag==1||down_flag==1)
 660   3                                         {
 661   4                                         Write1302(0x8e,0x00); //写入允许
 662   4                                         Write1302(0x84,temp); //写入新的小时数
 663   4                                         Write1302(0x8e,0x80); //禁止写入
 664   4                                         up_flag=0;
 665   4                                         down_flag=0;
 666   4                                         }
 667   3                                         hide_hour++;
 668   3                                         if(hide_hour>3)
 669   3                                           hide_hour=0;
 670   3                         show_time();
 671   3                                        }while(count==4);break;
C51 COMPILER V8.02   DS1302                                                                05/12/2008 20:13:04 PAGE 12  

 672   2                        case 4:do                                             //count=4,调整星期
 673   2                                {
 674   3                         hide_hour=0; 
 675   3                                         outkey();
 676   3                                         Upkey();
 677   3                                         Downkey();
 678   3                                         if(up_flag==1||down_flag==1)
 679   3                                         {
 680   4                                         Write1302(0x8e,0x00); //写入允许
 681   4                                         Write1302(0x8a,temp); //写入新的星期数
 682   4                                         Write1302(0x8e,0x80); //禁止写入
 683   4                                         up_flag=0;
 684   4                                         down_flag=0;
 685   4                                         }
 686   3                                         hide_week++;
 687   3                                         if(hide_week>3)
 688   3                                           hide_week=0;
 689   3                         show_time();
 690   3                                        }while(count==5);break;
 691   2                        case 5:do                                             //count=5,调整日
 692   2                                {
 693   3                                         hide_week=0; 
 694   3                                         outkey();
 695   3                                         Upkey();
 696   3                                         Downkey();
 697   3                                         if(up_flag==1||down_flag==1)
 698   3                                         {
 699   4                                         Write1302(0x8e,0x00); //写入允许
 700   4                                         Write1302(0x86,temp); //写入新的日数
 701   4                                         Write1302(0x8e,0x80); //禁止写入
 702   4                                         up_flag=0;
 703   4                                         down_flag=0;
 704   4                                         }
 705   3                                         hide_day++;
 706   3                                         if(hide_day>3)
 707   3                                           hide_day=0;
 708   3                         show_time();
 709   3                                        }while(count==6);break;
 710   2                        case 6:do                                             //count=6,调整月
 711   2                                {
 712   3                         hide_day=0; 
 713   3                                         outkey();
 714   3                                         Upkey();
 715   3                                         Downkey();
 716   3                                         if(up_flag==1||down_flag==1)
 717   3                                         {
 718   4                                         Write1302(0x8e,0x00); //写入允许
 719   4                                         Write1302(0x88,temp); //写入新的月数
 720   4                                         Write1302(0x8e,0x80); //禁止写入
 721   4                                         up_flag=0;
 722   4                                         down_flag=0;
 723   4                                         }
 724   3                                         hide_month++;
 725   3                                         if(hide_month>3)
 726   3                                           hide_month=0;
 727   3                         show_time();
 728   3                                        }while(count==7);break;
 729   2                        case 7:do                                             //count=7,调整年
 730   2                                {
 731   3                         hide_month=0; 
 732   3                                         outkey();
 733   3                                         Upkey();
C51 COMPILER V8.02   DS1302                                                                05/12/2008 20:13:04 PAGE 13  

 734   3                                         Downkey();
 735   3                                         if(up_flag==1||down_flag==1)
 736   3                                         {
 737   4                                         Write1302(0x8e,0x00); //写入允许
 738   4                                         Write1302(0x8c,temp); //写入新的年数
 739   4                                         Write1302(0x8e,0x80); //禁止写入
 740   4                                         up_flag=0;
 741   4                                         down_flag=0;
 742   4                                         }
 743   3                                         hide_year++;
 744   3                                         if(hide_year>3)
 745   3                                           hide_year=0;
 746   3                         show_time();
 747   3                                        }while(count==8);break;
 748   2                        case 8: count=0;hide_year=0;  //count8, 跳出调整模式,返回默认显示状态
 749   2                            Second=Read1302(DS1302_SECOND);
 750   2                        Write1302(0x8e,0x00); //写入允许
 751   2                            Write1302(0x80,Second&0x7f);
 752   2                            Write1302(0x8E,0x80);          //禁止写入
 753   2                                        done=0;
 754   2                        break; //count=7,开启中断,标志位置0并退出
 755   2                        default:break;
 756   2      
 757   2                       }
 758   1      
 759   1      }       
 760                  
 761          
 762          void show_time()   //液晶显示程序
 763          {
 764   1        DS1302_GetTime(&CurrentTime);  //获取时钟芯片的时间数据
 765   1        TimeToStr(&CurrentTime);       //时间数据转换液晶字符
 766   1        DateToStr(&CurrentTime);       //日期数据转换液晶字符
 767   1        ReadTemp();                    //开启温度采集程序
 768   1        temp_to_str();                 //温度数据转换成液晶字符
 769   1        GotoXY(12,1);                  //液晶字符显示位置
 770   1        Print(TempBuffer);             //显示温度
 771   1        GotoXY(0,1);
 772   1        Print(CurrentTime.TimeString); //显示时间
 773   1        GotoXY(0,0);
 774   1        Print(CurrentTime.DateString); //显示日期
 775   1        GotoXY(15,0);
 776   1        Print(week_value);             //显示星期
 777   1        GotoXY(11,0);
 778   1        Print("Week");        //在液晶上显示 字母 week
 779   1        Delay1ms(400);                 //扫描延时
 780   1      }
 781          
 782          
 783          
 784          main()
 785          {       P2=0X7F;
 786   1          flag=1;           //时钟停止标志
 787   1              LCD_Initial();    //液晶初始化
 788   1              Init_DS18B20( ) ;      //DS18B20初始化
 789   1              Initial_DS1302(); //时钟芯片初始化
 790   1              up_flag=0;
 791   1              down_flag=0;
 792   1              done=0;           //进入默认液晶显示
 793   1              /*wireless_1=0;
 794   1              wireless_2=0;
 795   1              wireless_3=0;
C51 COMPILER V8.02   DS1302                                                                05/12/2008 20:13:04 PAGE 14  

 796   1              wireless_4=0; */
 797   1              flag=0;
 798   1              while(1)
 799   1              {   
 800   2              while(done==1)
 801   2                keydone();    //进入调整模式
 802   2                      while(done==0)
 803   2                  {  
 804   3                  show_time();                //液晶显示数据
 805   3                  flag=0;                  
 806   3                          Setkey();                            //扫描各功能键
 807   3                      }
 808   2              }
 809   1      }
 810          
 811          
 812          
 813          


MODULE INFORMATION:   STATIC OVERLAYABLE
   CODE SIZE        =   2417    ----
   CONSTANT SIZE    =      5    ----
   XDATA SIZE       =   ----    ----
   PDATA SIZE       =   ----    ----
   DATA SIZE        =     48       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 + -