久久久久久久999_99精品久久精品一区二区爱城_成人欧美一区二区三区在线播放_国产精品日本一区二区不卡视频_国产午夜视频_欧美精品在线观看免费

 找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

搜索
查看: 3102|回復: 1
打印 上一主題 下一主題
收起左側

基于51單片機自動定時澆花程序

[復制鏈接]
跳轉到指定樓層
樓主
ID:485592 發表于 2019-3-6 14:59 | 只看該作者 回帖獎勵 |倒序瀏覽 |閱讀模式
       2018年的春節是一個很特別的一段時光,留在外地沒有回老家過年。其實一開始也過得很是無聊,天天睡到自然醒——看看電視、玩玩游戲——隨便無規律的吃點。呵呵……就這樣任性的墮落。
        俗話說得好啊!就是有龍肉,天天讓你吃也會膩。看來賤命一條,沒幾天就實在過不了這種孤單寂寞冷的日子。出門走走逛逛花市打發打發無聊的時光。真是江湖之大各有各的特色,在老家親朋好友相互走訪熱鬧非凡;在花市五彩繽紛花香飄逸,熙熙攘攘、人流如潮。其實我很清楚我此行上目的,就是走走散散心別無他求。此情此景渲染,蠢蠢欲動實在按耐不住開心剁手的節奏購買幾盤心儀的盤栽。
        沖動是魔鬼啊!怎么剁手前沒想到自個兒的工作性質呢!!時常浪蕩周游不定的去處不定的歸期,這些需要悉心料理的盤栽看來只能面對不久將來缺水遭殃的杯具。忽然靈光一動,怎么不想個辦法制作一自動澆花的系統呢?阿三一言不合就開掛,對理工男來說像是忽然抓到了一根救命的稻草,心動不如行動,翻箱倒柜的找出塵封已久的單片機開發板及電子元件和工具。重新給電腦安裝開發工具和各種硬件驅動。最苦的是沒有水泵啊!!!此時此刻各位快遞小哥都已歡度春節,奈何求助寶寶網、東東網、當當網……都不是明智之舉吖!事實再次證明男人成功的背后一定有位強大女人,此時我背后有位美貌與智慧并存女朋友拉著說要去買金魚,不說魚好不好看,哈哈……反正沒興趣。開心的是我在此處卻意外的發現了讓我剛才還揪心物拾,真的沒想到這里會有微型水泵哞!一切準備就緒了,只差后面東風吹又生了。準備買好魚回去發力吧!
        無聊墮落的時光不復存在,將來迎來激情滿滿的充實有意思的快樂時光。畢業后放手已久對單片機的操作已打得林丁破碎,還好就是激情尚在,通過數天的編寫調試,最終將設想的目標達成。
        通過8位數碼管來顯示時鐘的時分秒信息,再通過8位獨立按鍵來實現時分秒的校正,然后通過1位繼電器的隔離輸出去控制水泵抽水噴淋花花草草。
        完整的程序代碼如下,僅供參考學習,也歡迎各位大神指點完善。感謝、感謝、十分感謝!
/*
1、在HC6800EM3實驗板上實現數碼管的動太掃描顯示24小時時鐘;采用獨立鍵盤來修改校正時鐘,K1為小時加,K5為小時減,
K2為分鐘加,K6為分鐘減,K3為秒鐘加,K7為秒鐘減,K4為定時器中斷停止,K8為定時器中斷啟動。
2、接線為P0口接到J12,P2口接到J16,P1口接到JP5,P3.0口接繼電器輸出,再通過觸點控制水泵工作;
3、主要功能之一是時鐘顯示;第二功能是跟據花卉的澆水需求,將澆水時間設定為每隔五天的早上6:30:00開始澆水6:30:30停止澆水;
4、實驗時間:2018年2月22日;
*/
#include<reg52.h>
sbit relay=P3^0;
unsigned char code position[]={0xfe,0xfd,0xfb,0xf7,0xef,0xdf,0xbf,0x7f}; //數碼管位選
unsigned char code paragraph[]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f}; //共陰極數碼管段選
//                                                       0       1       2      3      4      5       6       7      8      9
void display();       //顯示函數申明
void initialize();      //初始化函數申明
void delay_ms(unsigned char time);  //延時函數申明
void delay_us(unsigned char time);  //延時函數申明
void key_scan();      //鍵盤掃描函數申明
void relay_out();      //繼電器控制輸出函數申明
unsigned char day,hour,minute,second,temporary,hour_SW,hour_GW,   //定義全局變量
      minute_SW,minute_GW,second_SW,second_GW;
void main()  //主程序
{
initialize();
while(1)
{
  key_scan();
  relay_out();
  display();
}
}

void display()  //8位數碼管顯示函數
{
second_SW=second/10;
second_GW=second%10;
minute_SW=minute/10;
minute_GW=minute%10;
hour_SW=hour/10;
hour_GW=hour%10;
P2=position[0];   //秒鐘位選
P0=paragraph[second_GW];
delay_us(150);   //150時顯示比較穩定
P2=position[1];
P0=paragraph[second_SW];
delay_us(150);
P2=position[2];
P0=0x40;
delay_us(150);
P2=position[3];   //分鐘位選
P0=paragraph[minute_GW];
delay_us(150);
P2=position[4];
P0=paragraph[minute_SW];
delay_us(150);
P2=position[5];
P0=0x40;
delay_us(150);
P2=position[6];   //時鐘位選
P0=paragraph[hour_GW];
delay_us(150);
P2=position[7];
P0=paragraph[hour_SW];
}
void timer_1() interrupt 1  //定時器中斷函數,定時器0、中斷1
{
TH0=(65536-50000)/256; //每次進入中斷程序時重新裝初值。計時50ms
TL0=(65536-50000)%256;
temporary++;
if(temporary==20)
{
  temporary=0;
  second++;
  if(second==60)
  {
   second=0;
   minute++;
   if(minute==60)
   {
    minute=0;
    hour++;
    if(hour==24)
    {
     hour=0;
     day++;
    }
   }
  }
}
}
void initialize()  //初始化函數
{
TMOD=0x01; //設置定時器0為工作方式1
TH0=(65536-50000)/256; //(16位的最大值-需要定時的長度)/256; 此計算將求得的整數部份放到
         //高8位,意思為求模。
TL0=(65536-50000)%256;  //(16位的最大值-需要定時的長度)/256; 此計算將求得的余數部份放到
         //低8位,意思為求余。
EA=1;  //開總中斷。
ET0=1; //開定時器0中斷。
TR0=1; //啟動定時器0

hour=0;   hour_SW=0; hour_GW=0;
minute=0;  minute_SW=0; minute_GW=0;
second=0;  second_SW=0; second_GW=0;
temporary=0;
}
void delay_ms(unsigned char time) //當i=X時為Xms的延時程序。
{
    unsigned char a,b;
    for(time;time>0;time--)
     for(b=142;b>0;b--)
      for(a=2;a>0;a--);
}
void delay_us(unsigned char time) //數碼管掃描延時程序。
{
   unsigned char a,b;
for(time;time>0;time--)
    for(b=1;b>0;b--)
     for(a=2;a>0;a--);
}
void key_scan() //獨立鍵盤掃描函數
{
unsigned char keyboard;
keyboard=P1;
if(keyboard!=0xff)
{
   delay_ms(10);
  if(keyboard!=0xff)
  {
   switch(keyboard)
   {
    case 0xfe:hour++;  //K1按鍵,用于小時校正 加加
      if(hour==24)
      {
      hour=0;
      day++;
      }      
      break;
    case 0xef:hour--;   //K5按鍵,用于小時校正 減減
       if(hour==0)
      {
      hour=23;
      day--;
      if(day<=0) day=0;
      }
       break;
    case 0xfd:minute++;  //K2按鍵,用于分鐘校正 加加
     if(minute==60)
     {
      minute=0;
      hour++;
      if(hour==24)
      {
       hour=0;
       day++;
      }
     }
     break;
    case 0xdf:minute--;   //K6按鍵,用于分鐘校正 減減
     if(minute==0)
     {
      minute=59;
      hour--;
      if(hour==0)
      {
       hour=23;
       day--;
       if(day<=0) day=0;
      }
     }
     break;
    case 0xfb:second++;   //K3按鍵,用于秒鐘校正 加加
     if(second==60)
     {
      second=0;
      minute++;
      if(minute==60)
      {
       minute=0;
       hour++;
       if(hour==24)
       {
        hour=0;
        day++;
       }
      
      }
     }
    break;
    case 0xbf:second--;   //K7按鍵,用于秒鐘校正 減減
     if(second==0)
     {
      second=59;
      minute--;
      if(minute==0)
      {
       minute=59;
       hour--;
       if(hour==0)
       {
        hour=23;
        day--;
        if(day<=0) day=0;
       }
      }
     }
    break;
    case 0xf7: TR0=0; break; //K4按鍵,用于在校正時間時停止定時器中斷
    case 0x7f: TR0=1; break; //K8按鍵,用于在校正時間后激活啟動定時器中斷
    default:P1=0xff;
   }
  }
}
keyboard=P1 ;
while(!keyboard);
delay_ms(10);
while(!keyboard);
}
void relay_out() //斷電器輸出控制水泵抽水澆花,當前設定為每隔5天澆水30秒。
{
if(day==5)
{  
  if(hour==6)
  {
   if(minute==30)
   {
    relay=0;
    if(second==30)
    {
     relay=1;
     day=0;
    }
   }
  }
}
}

評分

參與人數 1黑幣 +50 收起 理由
admin + 50 共享資料的黑幣獎勵!

查看全部評分

分享到:  QQ好友和群QQ好友和群 QQ空間QQ空間 騰訊微博騰訊微博 騰訊朋友騰訊朋友
收藏收藏2 分享淘帖 頂 踩
回復

使用道具 舉報

沙發
ID:485976 發表于 2019-3-7 08:28 | 只看該作者
為什么要用6個按鍵來調時間&#127770;&#127770;
回復

使用道具 舉報

您需要登錄后才可以回帖 登錄 | 立即注冊

本版積分規則

小黑屋|51黑電子論壇 |51黑電子論壇6群 QQ 管理員QQ:125739409;技術交流QQ群281945664

Powered by 單片機教程網

快速回復 返回頂部 返回列表
主站蜘蛛池模板: 玖玖久久 | 成人精品国产免费网站 | 久久久精品一区二区 | 中文字幕99| 伊人艹| 久草视频在线播放 | 欧美伊人| 国产福利精品一区 | 国产精品成人在线播放 | 亚洲一二三区精品 | 亚洲一区 中文字幕 | 日本一区二区三区视频在线 | 亚洲一区二区免费看 | 亚洲精品一二三 | 久久久123| 国产免费国产 | 日本午夜免费福利视频 | 久久精品一二三影院 | 韩国精品一区二区三区 | 久久久久黑人 | 在线午夜 | 福利网站导航 | 黄色片网站在线观看 | 国产一区二区三区免费视频 | www.se91| 羞羞视频免费观看入口 | 欧美精品tv | 亚洲一区二区久久 | 国产成人免费视频网站高清观看视频 | 精品福利一区二区三区 | 欧美日韩国产在线观看 | 久在线| 国产精品一级在线观看 | 久久久www成人免费精品 | 亚洲顶级毛片 | 亚洲精品在线免费看 | 99国内精品| av男人的天堂av | 久久久www | 久久久久久久久久久蜜桃 | 精品久久久久久 |