用rtc芯片ds12887实现,1602液晶显示,时间可调,c编程

来源:百度知道 编辑:UC知道 时间:2024/09/24 03:51:47
用rtc芯片ds12887实现,1602液晶显示,时间可调,电子万年历。具体要求为:要求设计的多功能电子万年历完成以下功能:
①能显示阳历年、月、日。
②能显示星期、小时、分钟。
③能显示阴历月、日,能显示是否闰年。
④可用键盘切换上述功能,且可修改。
写出相应C51程序,还有芯片接线图

#include<reg52.h>
#define uint unsigned int
#define uchar unsigned char
sbit dula=P2^6;
sbit wela=P2^7;
sbit lcden=P2^2;
sbit lcdrw=P2^1;
sbit lcdrs=P2^0;
sbit keymode=P3^0;
sbit keyup=P3^1;
sbit keydown=P3^2;
sbit keyrd=P3^7;
sbit dscs=P2^3;
sbit dsds=P2^4;
sbit dsrw=P2^5;
sbit dsas=P3^6;
sbit dsirq=P3^3;
uint add,num,miao=10,fen=13,shi=10,count,mode,flag;
uchar code table1[]=" 2012-03-11 STA ";
uchar code table2[]="time is 00:00:00";
void delay(uint z)
{uint x,y;
for(x=z;x>0;x--)
for(y=110;y>0;y--);
}
void write_ds(uchar add,uchar date)
{
dscs=1;
dsds=1;
dsrw=1;
dsas=1;
P0=add;
dscs=0;
dsas=0;
dsrw=0;
P0=date;
dsrw=1;
dsas=1;
dscs=1;
/*dscs=0;
dsas=1;
dsds=1;
dsrw=1;
P1=add;
dsas=0;
dsrw=0;
P1=date;
dsrw=1;
dsas=1