毕业设计-自动浇水控制器 - 图文(6)

2019-05-18 15:20

烟台大学毕业论文(设计)

5.3 浇水执行程序框图

正常模式,显示时间 是 是否到时 ? 是 今日浇水 ? 1路浇水,显示倒计时 否 否 是 否 倒计时重置 倒计时减1 倒计时=0? 2路浇水,显示倒计时 是 否 倒计时重置 倒计时减1 倒计时=0? 3路浇水,显示倒计时 是 否 倒计时重置 倒计时减1 倒计时=0? 4路浇水,显示倒计时 是 否 倒计时重置 倒计时减1 倒计时=0? 5路浇水,显示倒计时 是 否 倒计时重置 倒计时减1 倒计时=0? 6路浇水,显示倒计时 是 否 倒计时重置 倒计时减1 倒计时=0? 7路浇水,显示倒计时 倒计时重置 =0? 否 是 倒计时显示系统时间 8路浇水,显示倒计时 是 否 倒计时重置 倒计时=0? 返回 图5-4 浇水执行程序框图

24

倒计时减1 倒计时减1 烟台大学毕业论文(设计)

5.4 主程序

/*

系统一共有两套时间体系:系统时间(定时器控制)和浇水开始时间 系统时间是由Timer0 中断产生 */

//#include \#include \

//=============================================================== //-------------------------宏定义和位定义------------------------

//===============================================================

//-------端口定义---------- #define SEG P0 // 数码管数据口 #define LED P1 // 仿真时LED灯数据口 实际是浇水控制口 #define KEY_DATA P3 // 按键接口

//-------位定义---------- sbit DP =P2^1; // 小数点 sbit TIME_1 =P2^2; // 时 高 sbit TIME_2 =P2^3; // 时 低 sbit TIME_3 =P2^4; // 分 高 sbit TIME_4 =P2^5; // 分 低 sbit TIME_5 =P2^6; // 星期几 sbit TIME_6 =P2^7; // 秒闪烁

//-------宏定义----------

#define KEY_NULL 0xff #define TIME 50000 //TIMER0一次定时50ms #define uchar unsigned char #define uint unsigned int

//=============================================================== //--------------------------全局变量-----------------------------

//=============================================================== uchar flag=0; // 定时器50Ms标志 uchar SysSecond; // 系统时间 秒 uchar SysHour; // 系统时间 时 uchar SysMinute; // 系统时间 分 uchar SysDay; // 系统时间 周

25

烟台大学毕业论文(设计)

uchar SECOND_FLAG; // 秒显示标记,1时9 10 LED 闪烁,0 闪烁停止

uchar MON_FLAG; // 浇水天控制标记位:周一,为1的时候周一浇水,否则不浇水 uchar TUE_FLAG; // 浇水天控制标记位:周二,为1的时候周二浇水,否则不浇水

uchar WEN_FLAG; // 浇水天控制标记位:周三,为1的时候周三浇水,否则不浇水

uchar THIR_FLAG; // 浇水天控制标记位:周四,为1的时候周四浇水,否则不浇水

uchar FRI_FLAG; // 浇水天控制标记位:周五,为1的时候周五浇水,否则不浇水

uchar SAT_FLAG; // 浇水天控制标记位:周六,为1的时候周六浇水,否则不浇水

uchar SUN_FLAG; // 浇水天控制标记位:周日,为1的时候周日浇水,否则不浇水

uchar WateringTimeFlag; // 浇水标志,Timer0 中断倒计时显示控制标志位,为1的时候,Timer0的秒中断让浇水时间递减到0 uint WateringTime; // 浇水时长 全局变量 0~9999 uint WateringTime_H; // 浇水时长 高 uint WateringTime_L; // 浇水时长 低 uchar Startwatering_HOUR; // 浇水开始时间 小时 uchar Startwatering_minute; // 浇水开始时间 分钟

//=============================================================== //--------------------------函 数-----------------------------

//===============================================================

//------------------------------------------ //延迟函数

//------------------------------------------ void delayms(unsigned int n) {

unsigned int i=0,j=0; for(;i

for(;j<35000;j++); }

//------------------------------------------ //延迟函数

//------------------------------------------

26

烟台大学毕业论文(设计)

void delayus(unsigned int n) {

unsigned int i=0,j=0; for(;i

for(;j<35;j++); }

//------------------------------------------ //显示时间,使用扫描显示

//在设置周几不浇水的时候,数码管的小数点显示 //与否由此函数控制

//------------------------------------------

void ShowTime(uchar SysHour,uchar SysMinute,uchar SysDay) {

DP =0; //正常情况下,不点亮小数点

TIME_1 =0; //第一个数码管点亮 SEG =SysHour/10; //显示小时高位 delayus(1); //产生视觉余辉 TIME_1 =1; //第一个数码管点灭

TIME_2 =0; //第二个数码管点亮 SEG =SysHour; //显示小时低位 delayus(1); //产生视觉余辉 TIME_2 =1; //第二个数码管点灭

TIME_3 =0; //第三个数码管点亮 SEG =SysMinute/10; //显示分钟高位 delayus(1); //产生视觉余辉 TIME_3 =1; //第一个数码管点灭

TIME_4 =0; //第四个数码管点亮 SEG =SysMinute; //显示分钟低位 delayus(1); //产生视觉余辉 TIME_4 =1; //第四个数码管点灭

TIME_5 =0; //第五个数码管点亮 SEG =SysDay; //显示天 if(SysDay==1&&MON_FLAG==0) //关闭周一浇水,点亮小数点 { DP = 1; }

else if(SysDay==2&&TUE_FLAG==0) //关闭周二开始,点亮小数点 {

27

烟台大学毕业论文(设计)

DP = 1; }

else if(SysDay==3&&THIR_FLAG==0) //关闭周三开始,点亮小数点 { DP = 1; }

else if(SysDay==4&&WEN_FLAG==0) //关闭周四开始,点亮小数点 { DP = 1; }

else if(SysDay==5&&FRI_FLAG==0) //关闭周五开始,点亮小数点 { DP = 1; }

else if(SysDay==6&&SAT_FLAG==0) //关闭周六开始,点亮小数点 { DP = 1; }

else if(SysDay==7&&SUN_FLAG==0) //关闭周日开始,点亮小数点 { DP = 1; }

delayus(1); //产生视觉余辉 TIME_5 =1; //第五个数码管灭 }

//-------------------------------------- // 显示浇水倒计时 // 最大可以显示9999

//--------------------------------------

void showcountering(uint WateringTime_temp,uchar SysDay) {

DP =0; //正常情况下,不点亮小数点

TIME_1 =0;

SEG =WateringTime_temp/1000; //获取并显示千位

WateringTime_temp=WateringTime_temp00; //得到没有千位的数,只含有百十个

delayus(1); TIME_1 =1;

28


毕业设计-自动浇水控制器 - 图文(6).doc 将本文的Word文档下载到电脑 下载失败或者文档不完整,请联系客服人员解决!

下一篇:安全保卫管理制度

相关阅读
本类排行
× 注册会员免费下载(下载后可以自由复制和排版)

马上注册会员

注:下载文档有可能“只有目录或者内容不全”等情况,请下载之前注意辨别,如果您已付费且无法下载或内容有问题,请联系我们协助你处理。
微信: QQ: