#include //头文件
#include
#define uchar unsigned char //宏定义
#define uint unsigned int
//位定义
sbit rs=P2^5; //液晶位定义
sbit lcden=P2^7;
sbit s1=P2^0; //时间功能切换按键
sbit s2=P2^1; //按键加
sbit s3=P2^3; //按键减
sbit s4=P2^4; //闹钟功能切换键
sbit rst=P1^5; //ds1302引脚定义
sbit io=P1^6;
sbit sclk=P1^7;
sbit beep=P3^0; //蜂鸣器
uchar num,count,shi,fen,miao,s1num,s2num,
year,month,day,week,flag,flag1,year1,month1,
day1,week1,shi1,fen1,miao1,year2,month2,
day2,week2,shi2,fen2,miao2,year5,month5,
day5,week5,shi5,fen5,miao5,wk,ashi,afen; //参数定义
uchar code table[]="20 - - "; //液晶固定显示
uchar code table1[]=" : : 00:00";
/*
uchar time_dat[7]={12,1,6,6,12,59,59}; //年周月日时分秒
uchar write_add[7]={0x8c,0x8a,0x88,0x86,0x84,0x82,0x80};
uchar read_add[7]={0x8d,0x8b,0x89,0x87,0x85,0x83,0x81};
*/
void write_com(uchar com); //液晶写指令函数
void write_data(uchar date); //液晶写数据函数
void write_ds1302(uchar add,uchar dat); //ds1302芯片写指令函数
void set_rtc(); //ds1302时间设置函数
void time_pros(); //ds1302进制转换函数
void read_rtc(); //ds1302读时间函数
void alarm(); //闹钟函数
void delay(uint z) //延时函数
{
uint x,y;
for(x=z;x>0;x--)
for(y=110;y>0;y--);
}
void init() //初始化
{
lcden=0;
flag=0;
flag1=0;
write_com(0x38);
write_com(0x0c);
write_com(0x06);
write_com(0x01);
write_com(0x80); //液晶固定显示,第一行
for(num=0;num<14;num++)
{
write_data(table[num]);
delay(5);
}
write_com(0x80+0x40); //液晶显示第二行
for(num=0;num<20;num++)
{
write_data(table1[num]);
delay(5);
}
}
void write_com(uchar com)//1602液晶写指令
{
rs=0;
P0=com;
delay(5);
lcden=1;
delay(5);
lc