主程序: #include"DS18B20_3.H" #define uint unsigned int #define uchar unsigned char uchar a,miao,shi,fen,ri,yue,nian,week,flag,key1n,temp; #define yh 0x80 #define er 0x80+0x40 //液晶屏的与C51 之间的引脚连接定义 sbit rs=P2^0; sbit en=P2^2; sbit rw=P2^1; //如果硬件上rw 接地,就不用写这句和后面的rw=0 了 sbit led=P2^6; //LCD 背光开关 //DS1302 时钟芯片与C51 之间的引脚连接定义 sbit IO=P1^1; sbit SCLK=P1^0; sbit RST=P1^2; sbit ACC0=ACC^0; sbit ACC7=ACC^7; //校时按键与C51 的引脚连接定义 sbit key1=P1^5; //设置键 sbit key2=P1^6; //加键 sbit key3=P1^7; //减键 sbit buzzer=P1^3; //蜂鸣器,通过三极管 9012 驱动,端口低电平响 /**************************************************************/ uchar code tab1[]={"20 - - "}; //年显示的固定字符 uchar code tab2[]={" : : "}; //时间显示的固定字符 //延时函数,后面经常调用 void delay(uint xms) //延时函数,有参函数 { uint x,y; for(x=xms;x>0;x--) for(y=110;y>0;y--); } /********液晶写入指令函数与写入数据函数,以后可调用**************/ write_1602com(uchar com) //****液晶写入指令函数**** { rs=0; //数据/指令选择置为指令 rw=0; //读写选择置为写 P0=com; //送入数据 delay(1); en=1; //拉高使能端,为制造有效的下降沿做准备 delay(1); en=0; //en 由高变低,产生下降沿,液晶执行命令 } write_1602dat(uchar dat) //***液晶写入数据函数**** { rs=1; //数据/指令选择置为数据 rw=0; //读写选择置为写 P0=dat; //送入数据 delay(1); en=1; //en 置高电平,为制造下降沿做准备 delay(1); en=0; //en 由高变低,产生下降沿,液晶执行命令 } lcd_init() //***液晶初始化函数**** { write_1602com(0x38); //设置液晶工作模式,意思:16*2 行显示,5*7 点阵,8 位数据 write_1602com(0x0c); //开显示不显示光标 write_1602com(0x06); //整屏不移动,光标自动右移 write_1602com(0x01); //清显示 write_1602com(yh+1); //日历显示固定符号从第一行第1 个位置之后开始显示 for(a=0;a<14;a++) { write_1602dat(tab1[a]); //向液晶屏写日历显示的固定符号部分 //delay(3); } write_16...