📄 sz1302.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 + -