#include"reg52.h"
#include"intrins.h"
#define uchar unsigned char
sbit rs=P2^0;
sbit rw=P2^1;
sbit en=P2^2;
sbit rst =P2^3;
sbit sclk=P2^4;
sbit DI =P2^5;
sbit A7=ACC^7;
sbit A0=ACC^0;
sbit B0=B^0;
uchar tt0[]="Time:";
uchar tt1[]="Data:";
void delay(uchar us)
{
while(us--);
}
void w1602(uchar dat,bit r)
{
rs=r;
rw=0;
P3=dat;
en=0;
delay(2);
en=1;
delay(4);
en=0;
}
void init1602()
{
w1602(0x38,0);
w1602(0x06,0);
w1602(0x0c,0);
w1602(0x01,0);
}
uchar r1302(uchar addr)
{
uchar n;
rst=0;
sclk=0;
_nop_();
rst=1;
B=addr;
for(n=0;n<8;n++)
{
sclk=0;
DI=B0;
sclk=1;
B=B>>1;
}
for(n=0;n<8;n++)
{
A7=DI;
sclk=1;
ACC=ACC>>1;
sclk=0;
}
rst=0;
return(ACC);
}
void main()
{
uchar i;
init1602();
while(1)
{
w1602(0x80,0);
for(i=0;i<5;i++)
w1602(tt0[i],1);
w1602(0x30+(r1302(0x85)>>4 & 0x0f),1);
w1602(0x30+(r1302(0x85) & 0x0f),1);
w1602(0x2d,1);
w1602(0x30+(r1302(0x83)>>4 & 0x0f),1);
w1602(0x30+(r1302(0x83) & 0x0f),1);
w1602(0x2d,1);
w1602(0x30+(r1302(0x81)>>4 & 0x0f),1);
w1602(0x30+(r1302(0x81) & 0x0f),1);
w1602(0xc0,0);
for(i=0;i<5;i++)
w1602(tt1[i],1);
w1602(0x30+(r1302(0x87)>>4 & 0x0f),1);
w1602(0x30+(r1302(0x87) & 0x0f),1);
w1602(0x2d,1);
w1602(0x30+(r1302(0x89)>>4 & 0x0f),1);
w1602(0x30+(r1302(0x89) & 0x0f),1);
w1602(0x2d,1);
w1602(0x30+(r1302(0x8d)>>4 & 0x0f),1);
w1602(0x30+(r1302(0x8d) & 0x0f),1);
}
}
/////////////////////////////////////////////////////////////////////#include"reg52.h"#include"intrins.h"
#define uchar unsigned char
#define Wsec 0x80
#define Rsec 0x81
#define Wmom 0x82
#define Rmom 0x83
#define Whor 0x84
#define Rhor 0x85
#define Wday 0x86
#define Rday 0x87
#define Wmth 0x88
#define Rmth 0x89
#define Wyer 0x8c
#define Ryer 0x8d
#define Wwek 0x8a
#define Rwek 0x8b
void delay(uchar us)
{
while(us--);
}
sbit RS=P3^0;
sbit RW=P3^1;
sbit EN=P3^2;
sbit RST=P3^3;
sbit SCLK=P3^4;
sbit DIO=P3^5;
sbit A0=ACC^0;
sbit A7=ACC^7;
sbit B0=B^0;
uchar tt[]="Time:";
uchar tt1[]="Data:";
uchar tt2[]="wek";
void w1602(uchar dat,bit RR)
{
RS=RR;
RW=0;
P2=dat;
EN=0;
_nop_();
EN=1;
delay(4);
EN=0;
}
void LCDinit()
{
w1602(0x38,0);
w1602(0x06,0);
w1602(0x0c,0);
w1602(0x01,0);
}
void w1302(uchar addr,dat)
{
uchar i;
RST=0;
SCLK=0;
_nop_();
RST=1;
B=addr;
for(i=0;i<8;i++)
{
SCLK=0;
DIO=B0;
_nop_();
SCLK=1;
B=B>>1;
}
ACC=dat;
for(i=0;i<8;i++)
{
SCLK=0;
DIO=A0;
_nop_();
SCLK=1;
ACC=ACC>>1;
}
RST=0;
}
uchar r1302(unsigned char addr)
{
char i;
RST=0;
_nop_();
SCLK=0;
RST=1;
B =addr;
for(i=0;i<8;i++)
{
SCLK=0;
DIO=B0;
SCLK=1;
B =B>>1;
_nop_();
}
for(i=0;i<8;i++)
{
A7=DIO;
SCLK=1;
_nop_();
SCLK=0;
ACC=ACC>>1;
}
RST=0;
return(ACC);
}
void init1302()
{
w1302(0x8e,0x00);
w1302(Wsec,0x56);
w1302(Wmom,0x34);
w1302(Whor,0x12);
w1302(0x8e,0x00);
}
void main()
{
uchar i;
LCDinit();
while(1)
{
w1602(0x80,0);
for(i=0;i<5;i++)
w1602(tt[i],1);
w1602(((r1302(Rhor)>>4)& 0x03)+0x30,1);
w1602((0x0F & r1302(Rhor))+0x30,1);
w1602(0x2d,1);
w1602(((r1302(Rmom)>>4)& 0x0f)+0x30,1);
w1602((0x0F & r1302(Rmom))+0x30,1);
w1602(0x2d,1);
w1602(((r1302(Rsec)>>4)& 0x0f)+0x30,1);
w1602((0x0F & r1302(Rsec))+0x30,1);
for(i=0;i<5;i++)
w1602(tt2[i],1);
w1602(0xc0,0);
for(i=0;i<5;i++)
w1602(tt1[i],1);
w1602(((r1302(Ryer)>>4)& 0x0f)+0x30,1);
w1602((0x0F & r1302(Ryer))+0x30,1);
w1602(0x2d,1);
w1602(((r1302(Rmth)>>4)& 0x01)+0x30,1);
w1602((0x0F & r1302(Rmth))+0x30,1);
w1602(0x2d,1);
w1602(((r1302(Rday)>>4)& 0x03)+0x30,1);
w1602((0x0F & r1302(Rday))+0x30,1);
w1602(0x20,1);
w1602((0x07 & r1302(Rday))+0x2F,1);
}
}

#include"reg52.h"
#include"intrins.h"
#define Wsec 0x80
#define Rsec 0x81
#define Wmom 0x82
#define Rmom 0x83
#define Whor 0x84
#define Rhor 0x85
#define Wday 0x86
#define Rday 0x87
#define Wmth 0x88
#define Rmth 0x89
#define Wyer 0x8c
#define Ryer 0x8d
#define Wwek 0x8a
#define Rwek 0x8b
sbit RS = P3^0;
sbit RW = P3^1;
sbit EN = P3^2;
sbit RST =P3^3;
sbit SCLK=P3^4;
sbit DIO =P3^5;
sbit ACC_7=ACC^7;
sbit ACC_0=ACC^0;
sbit B_0 =B^0;
unsigned char tt[]=" Time";
unsigned char tt1[]=" Data";
void delay(unsigned int us)
{
while(us--);
}
void writedata(unsigned char dat)
{
RS=1;
RW=0;
EN=0;
P2=dat;
delay(5);
EN=1;
delay(10);
EN=0;
}
void writecomd(unsigned char dat)
{
RS=0;
RW=0;
EN=0;
P2=dat;
delay(5);
EN=1;
delay(10);
EN=0;
}
void LCDinit()
{
writecomd(0x38);
writecomd(0x06);
writecomd(0x0c);
writecomd(0x01);
}
void W1302(unsigned char addr,unsigned char dat)
{
char i;
RST=0;
SCLK=0;
_nop_();
RST=1;
ACC=addr;
for(i=0;i<8;i++)
{
SCLK=0;
DIO=ACC_0;
SCLK=1;
ACC=ACC>>1;
_nop_();
}
ACC=dat;
for(i=0;i<8;i++)
{
SCLK=0;
DIO=ACC_0;
ACC=ACC>>1;
SCLK=1;
ACC=ACC>>1;
_nop_();
}
}
unsigned char R1302(unsigned char addr)
{
char i;
RST=0;
_nop_();
SCLK=0;
RST=1;
B =addr;
for(i=0;i<8;i++)
{ SCLK=0;
DIO=B_0;
SCLK=1;
B =B>>1;
_nop_();
}
for(i=0;i<8;i++)
{
ACC_7=DIO;
SCLK=1;
_nop_();
SCLK=0;
ACC=ACC>>1;
}
RST=0;
return(ACC);
}
void D1302init(void)
{
W1302(0x8E,0x00);
W1302(Wsec,0x56);
W1302(Wmom,0x34);
W1302(Whor,0x12);
W1302(0x8e,0x80);
}
void main(void)
{
unsigned char i;
LCDinit();
W1302(Wday,0x15);
while(1)
{
writecomd(0x80);
for(i=0;i<5;i++)
writedata(tt[i]);
writedata(0x3A);
writedata(0x30+(0x0F & (R1302(Rhor)>>4)));
writedata(0x30+(0x0F & R1302(Rhor)));
writedata(0x2d);
writedata(0x30+(0x0F & (R1302(Rmom)>>4)));
writedata(0x30+(0x0F & R1302(Rmom)));
writedata(0x2d);
writedata(0x30+(0x0F & (R1302(Rsec)>>4)));
writedata(0x30+(0x0F & R1302(Rsec)));
writecomd(0xc0);
for(i=0;i<5;i++)
writedata(tt1[i]);
writedata(0x3A);
writedata(0x30+(0x0F & (R1302(Rday)>>4)));
writedata(0x30+(0x0F & R1302(Rday)));
writedata(0x2d);
writedata(0x30+(0x0F & (R1302(Rmth)>>4)));
writedata(0x30+(0x0F & R1302(Rmth)));
writedata(0x2d);
writedata(0x30+(0x0F & (R1302(Ryer)>>4)));
writedata(0x30+(0x0F & R1302(Ryer)));
writedata(0x20);
writedata(0x30+ R1302(Rwek)-1);
}
}





/*******************************************************************
DS1302ºÍLCD1602£¬C51µ¥Æ¬»úCÓïÑÔ
*****************************************************************/
#include<AT89x51.h>
#define uchar unsigned char
/**********DS1302******************/
#define write_second 0x80
#define write_minute 0x82
#define write_hour 0x84
#define read_second 0x81
#define read_minute 0x83
#define read_hour 0x85
#define write_day 0x86
#define read_day 0x87
#define write_month 0x88
#define read_month 0x89
#define write_week 0x8A
#define read_week 0x8B
#define write_year 0x8C
#define read_year 0x8D
#define write_protect 0x8E
/******DS1302*************/
sbit ACC_7=ACC^7;
sbit SCLK =P1^2;
sbit DIO =P1^3;
sbit CE =P1^4;
sbit P3_add=P3^0;
sbit P3_OK =P3^1;
//////LCD1602//////////////
#define LCD_DB P0
sbit LCD_RS=P2^0;
sbit LCD_RW=P2^1;
sbit LCD_E=P2^2;
/******¶¨Ò庯Êý****************/
#define uchar unsigned char
#define uint unsigned int
void LCD_init(void);//ÉùÃ÷³õʼ»¯º¯Êý
void LCD_write_command(uchar command);//дָÁÊý
void LCD_write_data(uchar dat);//дÊý¾Ýº¯Êý
void delay_n40us(uint n);//ÑÓʱº¯Êý
//*******³õʼ»¯º¯Êý***************
void LCD_init(void)
{
LCD_write_command(0x38);//ÉèÖÃ8λ¸ñʽ£¬2ÐУ¬5x7
LCD_write_command(0x0c);//ÕûÌåÏÔʾ£¬¹Ø¹â±ê£¬²»ÉÁ˸
LCD_write_command(0x06);//É趨ÊäÈ뷽ʽ£¬ÔöÁ¿²»ÒÆÎ»--------------
LCD_write_command(0x01);//Çå³ýÆÁÄ»ÏÔʾ----------------
delay_n40us(100);//ʵ¼ùÖ¤Ã÷£¬ÎÒµÄLCD1602ÉÏ£¬ÓÃfor Ñ»·200 ´Î¾ÍÄܿɿ¿Íê³ÉÇåÆÁÖ¸Áî¡£
}
//********дָÁÊý***********ÉèÖÃÏÈÏò1602дÈëµÄÊý¾ÝΪµØÖ·*
void LCD_write_command(uchar dat)
{
LCD_DB=dat;
LCD_RS=0;//Ö¸Áî
LCD_RW=0;//дÈë
LCD_E=1;//ÔÊÐí
LCD_E=0;//²úÉúϽµÑØ
delay_n40us(1);//ʵ¼ùÖ¤Ã÷£¬ÎÒµÄLCD1602 ÉÏ£¬ÓÃfor Ñ»·1 ´Î¾ÍÄÜÍê³ÉÆÕͨдָÁî¡£
}
//дÈë×Ö·û´®º¯Êý
void writeDataLcd(unsigned char dat)// дÈëÊý¾Ý
{
LCD_RS=1;
LCD_RW=0;
LCD_E=0;
LCD_DB = dat;
LCD_E=1;
delay_n40us(10);
LCD_E=0;
}
//********ÑÓʱº¯Êý***************
void delay_n40us(uint n)
{ uint i;
uchar j;
for(i=n;i>0;i--)
for(j=0;j<2;j++); //ÔÚÕâ¸öÑÓʱѻ·º¯ÊýÖÐÎÒÖ»×öÁË2´ÎÑ»·
}
//**********DS1302*************************//
void write1302(unsigned char addr,dat)
{
unsigned char i,temp;
CE=0;
SCLK=0;
CE=1;
for(i=0;i<8;i++) //????
{
SCLK=0;
temp=addr;
if(temp&0x01==0x01)
DIO=1;
else
DIO=0;
addr>>=1;
SCLK=1;
}
for(i=0;i<8;i++) //????
{
SCLK=0;
temp=dat;
if(temp&0x01==0x01)
DIO=1;
else
DIO=0;
dat>>=1;
SCLK=1;
}
}
unsigned char read1302(unsigned char addr)
{
unsigned char i,temp;
CE=0;
SCLK=0;
CE=1;
for(i=8;i>0;i--)//?????????
{
SCLK =0;
temp =addr;
if(temp&0x01==0x01)
DIO=1;
else
DIO=0;
addr>>=1;
SCLK=1;
}
for(i=8;i>0;i--)//???
{
ACC_7=DIO;
SCLK=1;
ACC>>=1;
SCLK=0; //???????
}
CE=0;
return(ACC);
}
/////////////////////////////////////
void Initial(void)
{
write1302(write_protect,0x00);
write1302(write_second,0x56);
write1302(write_minute,0x34);
write1302(write_hour,0x12);
write1302(write_protect,0x80);
}
//*********Ö÷º¯Êý*****************
void main(void)
{
uint i;
uchar sec,min,hour,week,year,month,day;
EA=1;
EX0=1;
Initial();
LCD_init();
write1302(write_hour,0x23); //23點
write1302(write_minute,0x59); //59分
write1302(write_year,0x15); //15年
write1302(write_month,0x11); //11月
write1302(write_day,0x30); //30日
write1302(write_week,1); //周1
while(1)
{
sec=read1302(read_second);
min=read1302(read_minute);
hour=read1302(read_hour);
week= read1302(read_week);
year =read1302(read_year);
month= read1302(read_month);
day=read1302(read_day);
LCD_write_command(0x80);
writeDataLcd(0x00);
if(hour<12)
writeDataLcd(0x41);
else
writeDataLcd(0x70);
writeDataLcd(0x6d);
writeDataLcd(0x3a);
writeDataLcd(0x30+(0x03 & (hour>>4)));
writeDataLcd(0x30+(0x0f & hour));
writeDataLcd(0x3a);
writeDataLcd(0x30+(0x07 & (min>>4)));
writeDataLcd(0x30+(0x0f & min));
writeDataLcd(0x3a);
writeDataLcd(0x30+(0x07 & (sec>>4)));
writeDataLcd(0x30+(0x0f & sec));
writeDataLcd(0x00);
writeDataLcd(0x00);
writeDataLcd(0x30+week);
for(i=0;i<49;i++)
writeDataLcd(0x00);
writeDataLcd(0x00);
writeDataLcd(0x00);
writeDataLcd(0x00);
writeDataLcd(0x32);
writeDataLcd(0x30);
writeDataLcd(0x30+(0x0f & (year>>4)));
writeDataLcd(0x30+(0x0f & year));
writeDataLcd(0x2d);
writeDataLcd(0x30+(0x03 & (month>>4)));
writeDataLcd(0x30+(0x0f & month));
writeDataLcd(0x2d);
writeDataLcd(0x30+(0x03 & (day>>4)));
writeDataLcd(0x30+(0x0f & day));
}
}
void intsvr0(void) interrupt 0 using 3
{
}