今天小编要和大家分享的是控制,MCU相关信息,接下来我将从AT89C52单片机实现日历时钟芯片DS12C887显示的设计,lf20802两位数码管 洗脚盆用显示数码管这几个方面来介绍。
控制,MCU相关技术文章AT89C52单片机实现日历时钟芯片DS12C887显示的设计
在银行或者其他的公共场合中,经常会看到显示实时信息的显示屏,其中包括年、月、日、星期、时间等,本例子的功能是在51单片机系统中设置、获取、记录实时的日历时钟信息并通过数码管显示,选用日历时钟芯片DS12C887作为实时时钟芯片,为系统提供详细的时间信息,次款芯片内部有锂电池,可以带掉电的情况下保存10年以上。
主要器件:
1、 AT89C52单片机芯片,用于对时钟芯片的控制和初始化,并控制数码管显示。
2、 日历时钟芯片DS12C887。
试验流程图;
试验电路图:
试验程序代码:
//CalendarClk.h程序
#ifndef _CALENDARCLK_H // 防止CalendarClk.h被重复引用
#define _CALENDARCLK_H
#include
#include
#define uchar unsigned char
#define uint unsigned int
/* DS12C887 内部专用寄存器宏定义 */
#define MIN XBYTE[0x0102]
#define HOUR XBYTE[0x0104]
#define DAYOFWEEK XBYTE[0x0106]
#define DAYOFMONTH XBYTE[0x0107]
#define MONTH XBYTE[0x0108]
#define YEAR XBYTE[0x0109]
#define REG_A XBYTE[0x010a]
#define REG_B XBYTE[0x010b]
/* 由串口获得的日历时钟信息变量,用于对芯片时间的设置 */
uchar year1,month1,dayofweek1,dayofmonth1,hour1,min1;
/* 芯片DS12C887提供的日历时钟信息变量 */
uchar year2,month2,dayofweek2,dayofmonth2,hour2,min2;
#endif
//CalendarClk.c程序
#include “CalendarClk.h”
/* 从串行口获取数据函数,数据包括:year1,month1,dayofweek1,
dayofmonth1,hour1,min1。如果获取到正确数据则返回1,否则返回0 */
uchar getdata()
{
// 略去
}
/* 设置日历和时钟函数 */
void settime()