DS1302时钟
1.1 需求描述
本案例讲解如何使用DS1302时钟芯片将时间信息显示在LCD上。
1.2 硬件设计
1.2.1 硬件原理图
1.2.3 DS1302工作原理
引脚名称 | 引脚作用 | 备注 |
---|---|---|
sclk | 时钟线 | 上升沿发送数据,下降沿读取数据 |
io | 数据线 | 高电平为1,低电平为0 |
ce(rst) | 使能线 | 高电平有效,低电平无效 |
1.3软件设计
1)Int_DS1302N.h
在Int目录下创建Int_DS1302N.h,写入以下内容。
#ifndef __INT_DS1302N_H__
#define __INT_DS1302N_H__
#include <STC89C5xRC.H>
#include "Util.h"typedef struct
{u8 second;u8 minute;u8 hour;u8 day;u8 month;u8 year;u8 day_of_week;
} Struct_Date;/*** @brief DS1302N时钟初始化**/
void Int_DS1302N_Init();/*** @brief 设置1302时钟的时间** @param p_st_date 时间结构体*/
void Int_DS1302N_SetDate(Struct_Date *p_st_date);/*** @brief 获取1302时间** @param p_st_date 时间结构体*/
void Int_DS1302N_GetDate(Struct_Date *p_st_date);#endif
2)Int_DS1302N.c
在Int目录下创建Int_DS1302N.c,写入以下内容。
#include "Int_DS1302N.h"#define SECOND 0x80
#define MINUTE 0x82
#define HOUR 0x84
#define DAY 0x86
#define MONTH 0x88
#define DAY_OF_WEEK 0x8A
#define YEAR 0x8C
#define WP 0x8E#define SCLK P37
#define IO P40
#define RST P41/*** @brief 发送数据,低位先发** @param dat*/
static void Int_DS1302N_WriteByte(u8 dat)
{u8 i;SCLK =