完整电路图:
完整代码:
#include <reg51.h>
#include <intrins.h> //包含_nop_( )空函数指令的头文件
#define uchar unsigned char
#define uint unsigned int
#define out P2
sbit RS=P3^0;
sbit RW=P3^1;
sbit E=P3^2;
sbit RST=P1^7 ;
sbit SCLK =P1^6;
sbit DSIO=P1^5;
void lcd1602_initial(void); //lcd1602初始化函数
void lcd1602_write_command(uchar com); //lcd1602写命令函数
void lcd1602_write_data(uchar dat); //lcd1602写数据函数
void lcd1602_string(uchar ad ,uchar *s);//lcd1602写字符串
void delay(uint); //延时函数
void Ds1302Write(uchar add,uchar dat);
uchar Ds1302Read(uchar add);
void Ds1302Readtime_data();
uchar bcd_decimal(uchar bcd);
void write_time();
void xinshi_time();
uchar code table1[]={"2021-01-24"};
uchar code table2[]={"23:59:50"};
uchar nian,zhou,yue,ri,shi,fen,miao;
//---DS1302写入和读取时分秒的地址命令---//
//---秒分时日月周年 最低位读写位;-------//
uchar code read_add[7] = {0x81, 0x83, 0x85, 0x87, 0x89, 0x8b, 0x8d};
uchar code write_add[7]= {0x80, 0x82, 0x84, 0x86, 0x88, 0x8a, 0x8c};
//---DS1302时钟初始化2013年1月1日星期二12点00分00秒。---//
//---存储顺序是秒分时日月周年,存储格式是用BCD码---//
uchar code time_data[7]= {0x58, 0x40, 0x14, 0x29, 0x01, 0x01, 0x21};
uchar code xingqi1[]={"MON"};
uchar code xingqi2[]={"TUE"};
uchar code xingqi3[]={"WED"};
uchar code xingqi4[]={"THU"};
uchar code xingqi5[]={"FRI"};
uchar code xingqi6[]={"SAT"};
uchar code xingqi7[]={"SUN"};
/**************************************************************
*函数名 :delay
*函数功能 :延时函数
*函数参数 :需要延时的毫秒数:uint j
*函数返回值 :无
****************************************************************/
void delay(uint j){ //1ms延时子程序
uchar i&#