#include #define uint unsigned int #define uchar unsigned char sbit RS=P3^5;//数据/命令选择线 sbit EL=P3^6;//使能信号线 sbit ls164_clk=P1^1;//控制时钟 sbit ls164_dat=P1^2;//数据输入 sbit ds1302_clk=P1^5;//脉冲线 sbit ds1302_io=P1^6;//数据线 sbit ds1302_rst=P1^7;//复位控制线 uchar kk[]={'0','1','2','3','4','5','6','7','8','9'}; uchar y1,y2; //-------------------------------------- void delay1(uint z)//延时函数 { uint x,y; for (x=z;x>0;x--) for(y=0;y<100;y++); } void ls164_in(uchar dat )//74ls164 控制输入 { uchar i,a; a=dat; for(i=0;i<8;i++) { if(a&0x80) { ls164_dat=1; ls164_clk=1; ls164_clk=0; } else { ls164_dat=0; ls164_clk=1; ls164_clk=0; } a=a<<1; } } void comand_1602(uchar com)//1602 命令输入 { ls164_in(com);//命令输入 RS=0; EL=0; delay1(1); EL=1; delay1(1); EL=0; //delay(2); //EL=0; } void indat_1602(uchar dat)//1602 数据输入 { ls164_in(dat);//命令输入 RS=1; EL=0; delay1(1); EL=1; delay1(1); EL=0; } void innit_1602()//1602 初始化 { comand_1602(0x38);//功能设定 delay1(20); comand_1602(0x38);//功能设定 delay1(20); comand_1602(0x38);//功能设定 delay1(20); //---------------------- comand_1602(0x38);//分两行显示,5*7 显示方式 delay1(20); comand_1602(0x0f);//开显示,有光标,光标闪烁 delay1(20); comand_1602(0x01);//清屏 delay1(20); comand_1602(0x06);//输入时光标自动向右移动一格,并且加一 delay1(20); } //---------------------------------------------- void delay(uint z) { uchar x,y; for(x=z;x>0;x--) for(y=4;y>0;y--); } uchar ds1302_read()//读出数据 { uchar i,b=0; //delay(1); ds1302_clk=0; for(i=0;i<8;i++) { if(ds1302_io==1) { b=b|0x80;//先读低位 } else { b=b|0x00; } ds1302_clk=1; ds1302_clk=0; if (i<7) b=b>>1; } //ds1302_rst=0; return(b); } void ds1302_write(uchar com) { uchar i,a; a=com; ds1302_clk=0; for(i=0;i<8;i++) { if(a&0x01) { ds1302_io=1;//先写低位 } else { ds1302_io=0; } ds1302_clk=1; ds1302_cl...