【资源下载】百度网盘下载地址如下:
https://docs.qq.com/doc/DTlRSd01BZXNpRUxl
一、设计任务:
本设计由数据显示模块、温度采集模块、时间处理模块和调整设置模块四个模块组成。系统以AT89S52单片机为控制器,以串行时钟日历芯片DS1302记录日历和时间,它可以对年、月、日、时、分、秒进行计时,还具有闰年补偿等多种功能。温度采集选用DS18B20芯片,万年历采用直观的数字显示,数据显示采用1602A液晶显示模块,可以在LCD上同时显示年、月、日、星期、时、分、秒,还具有时间校准等功能。此万年历具有读取方便、显示直观、功能多样、电路简洁、成本低廉等诸多优点,具有广阔的市场前景。
二、设计要求:
(1)用4个按键实现所有功能,计时准确。
(2)可以设定闹钟功能。
(3)有阴历功能,平年闰年准确无误。
(4)液晶能显示年、月、日、星期、时、分、秒、温度。
#include<reg52.h> //#include"DS18B20_3.H" #include <string.h> #include <intrins.h> #define uint unsigned int #define uchar unsigned char #define wd 1 //定义是否有温度功能 =0时无温度,=1时有温度 #include "eeprom52.h" #define yh 0x80 //LCD第一行的初始位置,因为LCD1602字符地址首位D7恒定为1(100000000=80) #define er 0x80+0x40 //LCD第二行初始位置(因为第二行第一个字符位置地址是0x40) //液晶屏的与C51之间的引脚连接定义(显示数据线接C51的P0口) sbit en=P2^7; sbit rw=P2^6; //如果硬件上rw接地,就不用写这句和后面的rw=0了 sbit rs=P2^5; //校时按键与C51的引脚连接定义 sbit set=P3^0; //设置键 sbit add=P3^1; //加键 sbit dec=P3^2; //减键 sbit seeNL_NZ=P3^3; //查看农历/闹钟 sbit DQ=P3^7; //