功能:
1.实现实时时间的显示和校时;
2.实现温度的实时采集;
3.实现农历显示;
4.手动开关放水;
5.定时时间自动放水;
6.两路红外检测,水的开关控制;
电路:阀门控制电路,液晶显示电路,
时钟电路,温度采集电路,提示电路,
按键电路,晶振电路,复位电路。
#include <reg52.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; /* */
sbit buzzer = P2 ^ 0; /* 蜂鸣器,通过三极管8550驱动,端口低电平响 */
sbit led = P2 ^ 4; /* LCD背光开关 */
bit led1 = 1;
bit NZ_sdgb = 1;
unsigned char temp_miao;
unsigned char bltime; /* 背光亮的时间 */
/* DS1302时钟芯片与C51之间的引脚连接定义 */
sbit IO = P1 ^ 1;
sbit SCLK = P1 ^ 0;
sbit RST = P1 ^ 2;
sbit WATER = P2 ^ 1;
sbit INFRARED_ON = P3 ^ 4;
sbit INFRARED_OFF = P3 ^ 5;
sbit HAND = P3 ^ 6;
char a, miao, shi, fen, ri, yue, week, setn;
int temp, nian;
uint flag;
/* flag用于读取头文件中的温度值,和显示温度值 */
bit c_moon;