sz1302.c
来自「利用DS1302」· C语言 代码 · 共 82 行
C
82 行
#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 + =
减小字号Ctrl + -
显示快捷键?