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

📄 sz1302.c

📁 利用DS1302
💻 C
字号:
#include <reg52.h>
#include <DS-1302.c>
#include <LED_595.c>

#define DISP_CHANGE_TIME   5   //循环时,显示5秒,全大写表示常量,小写为变量

main()
{
     unsigned char temp,disp_time_style=1,sec_bak,sec_counter=0;

     Init_DS1302();
     Read_DS1302_Clock();
     sec_bak=time_sec;
     
     while(1)
     {
          Read_DS1302_Clock();
          switch(disp_time_style)                              //选择时钟,显示状态
          {
               case 1:                                         //状态1,显示年和月
                    if(sec_bak!=time_sec)                      //检测秒的变化,为了做穿过式的延时,比delay好,延时为显示的时间,为5秒.用于显示延时
                    {
                         sec_bak=time_sec;                     //秒备份重置
                         sec_counter++;                        //延时秒计数器加一
                         if(sec_counter>=DISP_CHANGE_TIME)     //判断是否到延时时间
                         {
                              sec_counter=0;                   //到延时时间,秒计数器清零
                              disp_time_style=2;               //切换到下一个显示状态
                         }
                         disp_num(time_year*100+time_mon,2);   //显示年和月
                         P0=~0x01;                             //点亮年和月状态显示的指示灯
                    }                    
                    break;
               case 2:
                    if(sec_bak!=time_sec)
                    {
                         sec_bak=time_sec;
                         sec_counter++;
                         if(sec_counter>=DISP_CHANGE_TIME)
                         {
                              sec_counter=0;
                              disp_time_style=3;
                         }
                         disp_num(time_date*100+time_day,2);
                         P0=~0x02;
                    }                    
                    break;
               case 3:
                    if(sec_bak!=time_sec)
                    {
                         sec_bak=time_sec;
                         sec_counter++;
                         if(sec_counter>=DISP_CHANGE_TIME)
                         {
                              sec_counter=0;
                              disp_time_style=4;
                         }
                         disp_num(time_hour*100+time_min,2);
                         P0=~0x04;
                    }                    
                    break;
               case 4:
                    if(sec_bak!=time_sec)
                    {
                         sec_bak=time_sec;
                         sec_counter++;
                         if(sec_counter>=DISP_CHANGE_TIME)
                         {
                              sec_counter=0;
                              disp_time_style=1;
                         }
                         disp_num(time_min*100+time_sec,2);
                         P0=~0x08;
                    }                    
                    break;
               default:
                    disp_time_style=1;
                    break; 
          }
     }
}

⌨️ 快捷键说明

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