宠物定时喂食器设计论文程序
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
论文程序
#include
#include
#include "LCD12864.h"
#include "DS1302.h"
#include "DS18B20.h"
#include "nongli.h"
#include "displaytime.h"
#include "zk.h"
#include "bell.h"
#include "HW.H"
#include "delay.h"
#include "main_MOTO.h"
#define uint unsigned int
#define uchar unsigned char
/*--------------------定义按键-----------------------------------------------*/
sbit K1 = P0^0; //K1-设置
sbit K2 = P0^1; //K2-确认、返回
sbit K3 = P0^2; //K3-加
sbit K4 = P0^3; //K4-减
//K5=P1^4,K5-控制闹钟的打开与关闭,在"hw.h"中定义
//sbit J1 = P0^6;
sbit J2 = P0^7;
/*---------------------函数声明------------------------------*/
void ds_w0(void);
void ds_w(void);
void Conver_week(bit c,uchar year,uchar month,uchar day);
/*-----------------------------定义全局变量------------------------------*/
bit w=0; //调时标志位
uchar int0_flag=0;
uint int0_flag_1=0;
unsigned char
yy,mo,dd,xq,hh,mm,ss,month_moon,day_moon,week,tiangan,dizhi,moontemp1,moon temp2;
//定义时间映射全局变量(专用寄存器)
signed char address,item,item0,max,mini;
unsigned char clk_ala[2]={0x00,0x00};//闹钟数据存放初,始值为00:00 unsigned char hour,minute,time;//用于闹铃的设置
void main_MOTO(void);
/*-----------------------------日期、时间设置函数-----------------------------*/
void tiaozheng(void)
{
yy = read_clock(0x8d);//调用1302时钟数据中的年数据,从地址0x8d中
mo = read_clock(0x89);//调用1302时钟数据中的月数据,从地址0x89中dd = read_clock(0x87);//从1302芯片中读取日数据,从地址0x87中
week = read_clock(0x8b);//从1302芯片中读取星期数据,从地址0x8b中
//----------------------------------
lcm_w_test(0,0x80);
lcm_w_word("20");//显示内容字符20
lcm_w_test(1,(yy/16)+0x30);
//函数参数1,代表本行写数据,YY/16+0X30得出年十位数字的显示码地址,送显示
lcm_w_test(1,yy%16+0x30);//函数
lcm_w_word("年");
//----------------------------------
lcm_w_test(1,(mo/16)+0x30);
lcm_w_test(1,mo%16+0x30);
//与16取余数,得到月份的个位数,加0x30得到该数字的液晶内定显示码送显示
lcm_w_word("月");
//调用字符显示函数,显示文字月
//----------------------------------
/*
lcm_w_test(0,0x88);
//第一个参数0,表示本行写入LCM的是指令,指定显示位置88H(第三行左端)lcm_w_word("星期");
//调用字符显示函数,显示文字星期
lcm_w_test(1,mo%16+0x30);
//与16取余数,得到月份的个位数,加0x30得到该数字的液晶内定显示码送显示
*/
//----------------------------------
lcm_w_test(1,(dd/16)+0x30);
lcm_w_test(1,dd%16+0x30);
//第一个1参数,表示本行写数据,日数据与16取余得个位数,加0x30得到显示码
lcm_w_word("日");//显示字符日
//----------------------------------
if(read_clock(0x85) != hh)
{//如果程序中的小时与1302芯片中的不同,
hh = read_clock(0x85);//刷新程序中的小时数据
}
lcm_w_test(0,0x91);
//第一个参数0,表示本行写入LCM的是指令,指定显示位置88H(第三行左端)lcm_w_test(1,(hh/16)+0x30);//显示十位
lcm_w_test(1,hh%16+0x30);//显示个位
lcm_w_word("时");
//----------------------------------
if(read_clock(0x83) != mm)
{//如果1302芯片中的分钟数据与程序中的分钟变量不相等
mm = read_clock(0x83);//刷新程序中的分钟数据
}