单片机入门(三)----DS1302时钟芯片 可调时钟

DS1302实现可调时钟

本代码以DS1302、定时器、独立按键、LCD1602实现了可调时钟。

原理图上的DS1302
在这里插入图片描述
按键在上一讲讲过了
LCD1602的代码以后再写

下面展示一些 内联代码片

main.c
#include<STC15F2K60S2.H>
#include "DS1302.h"
#include "LCD1602.h"
#include "Key.h"
#include "Timer0.h"

//分别是键值 模式 时间类型设置选择 数据闪烁指示
unsigned char KeyNumber,Mode,TimeSetSelect,TimeSetFlag;

/**
   *  @brief		时间显示
   *  @param		无
   *  @retval		无
   */
void TimeShow(void)
{
   
	   //读取时间 把DS1302中的数据读取到DS1302_Time[]中 一直读取 一直更新
	   DS1302_ReadTime();
		 //把年月日时分秒显示到LCD1602上
		 LCD_ShowNum(1,1,DS1302_Time[0],2);
		 LCD_ShowNum(1,4,DS1302_Time[1],2);
		 LCD_ShowNum(1,7,DS1302_Time[2],2);
		 LCD_ShowNum(2,1,DS1302_Time[3],2);
		 LCD_ShowNum(2,4,DS1302_Time[4],2);
		 LCD_ShowNum(2,7,DS1302_Time[5],2);
		 
}
/**
   *  @brief		时间设置
   *  @param		无
   *  @retval		无
   */
void TimeSet()
{
   
	//如果键值为2 时间设置选择加一 最多到5
		if(KeyNumber==2)
	{
   
		TimeSetSelect++;
		TimeSetSelect%=6;
	}
	//如果键值为3 时间设置选择对应的数据加一 如果溢出 专门设置下一个值
		if(KeyNumber==3)
	{
   
		DS1302_Time[TimeSetSelect]++;
		if(DS1302_Time[0]>99){
   DS1302_Time[0]=0;}
		if(DS1302_Time[1]>12){
   DS1302_Time[1]=1;}
		if(DS1302_Time[1]==1||DS1302_Time[1]==3||DS1302_Time[1]==5||DS1302_Time[1]==7||
			DS1302_Time[1]==8||DS1302_Time[1]==10||DS1302_Time[1]==12)
		{
   
			if(DS1302_Time[2]>31){
   DS1302_Time[2]=1;}
		}
		 else if(DS1302_Time[1]==4||DS1302_Time[1]==6||DS1302_Time[1]==9||DS1302_Time[1]==11)
		 {
   
			 if(DS1302_Time[2]>30){
   DS1302_Time[2]=1;}
		}
		 else if(DS1302_Time[1]==2)
		 {
   
			 if((DS1302_Time[0]%4==0)&&(DS1302_Time[0]%100!=0))
			 {
   
						if(DS1302_Time[2]>29){
   DS1302_Time[2]=1;}
				}
			 else
			 {
   
				 if(DS1302_Time
  • 9
    点赞
  • 56
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值