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

 找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

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

求助一個51單片機澆花程序

[復制鏈接]
跳轉到指定樓層
樓主
ID:111875 發表于 2023-1-14 22:21 | 只看該作者 回帖獎勵 |倒序瀏覽 |閱讀模式
各位論壇的老師你們好,本人不才,單片機太菜了,近期過年回家放心不下房子里種的洋芋怕干死了,想用手頭的東西做一個自動澆花裝置,材料有51單片機,PCF8591,電容式土壤濕度檢測傳感器模塊,繼電器若干,水泵若干。
希望能得到論壇各位大俠的幫助,本人不勝感激
分享到:  QQ好友和群QQ好友和群 QQ空間QQ空間 騰訊微博騰訊微博 騰訊朋友騰訊朋友
收藏收藏 分享淘帖 頂 踩
回復

使用道具 舉報

沙發
ID:213173 發表于 2023-1-15 21:37 | 只看該作者
這是壇友寫的仿真及程序,可以參考。 自動澆水器.rar (70.24 KB, 下載次數: 41)

回復

使用道具 舉報

板凳
ID:944207 發表于 2023-1-15 23:20 | 只看該作者
我有一個用的是51和ADC0832,代碼如下,希望有幫助,代碼如下#include <reg52.h>  #include "intrins.h"                                                                                            #define     u8                          unsigned char #define     u16                   unsigned int #define     uchar                          unsigned char #define     uint                   unsigned int uchar yushe_Moisture=20;                         uchar yushe_MoistureH=40;                         uchar Moisture;                                                          //運行模式   uchar Mode=0;                                                          uchar Mode_1=0;                                                  //管腳聲明 sbit LED_Moisture= P1^6;                  void delay_ms(uint q) {         uint i,j;         for(i=0;i<q;i++)                 for(j=0;j<110;j++); } /********************************************************************** LCD1602相關函數 **********************************************************************/ //LCD管腳聲明  sbit LCDRS = P2^7; sbit LCDEN = P2^6; //LCD延時 void LCDdelay(uint z)// {   uint x,y;   for(x=z;x>0;x--)     for(y=10;y>0;y--); } //寫命令 void write_com(uchar com) {   LCDRS=0;                                     P0=com;   LCDdelay(5);   LCDEN=1;   LCDdelay(5);   LCDEN=0; } //寫數據 void write_data(uchar date) {   LCDRS=1;         LCD_WriteData(date);   P0=date;   LCDdelay(5);   LCDEN=1;   LCDdelay(5);   LCDEN=0; } //選擇寫入位置 void SelectPosition(unsigned char x,unsigned char y)  {              if (x == 0)          {                      write_com(0x80 + y);              }         else          {                       write_com(0xC0 + y);               }         } //寫入字符串函數 void LCD_Write_String(unsigned char x,unsigned char y,unsigned char *s)  {              SelectPosition(x,y) ;         while (*s)          {                      write_data( *s);                      s ++;              } } void LCD_Write_Char(u8 x,u8 y,u16 s,u8 l)  {              SelectPosition(x,y) ; if(l>=5)                 write_data(0x30+s/10000%10);                 if(l>=4)                 write_data(0x30+s/1000%10);                         if(l>=3)                 write_data(0x30+s/100%10);                         if(l>=2)                 write_data(0x30+s/10%10);                                 if(l>=1)                 write_data(0x30+s%10);                 }   write_com(0x38);    write_com(0x0c);      write_com(0x0d);       write_com(0x0d);     //1602初始化 void Init1602() {   uchar i=0;   write_com(0x38);       write_com(0x0c);       write_com(0x06);       write_com(0x01);            } void Display_1602(yushe_Moisture,yushe_MoistureH,temp) {         //顯示預設濕度         LCD_Write_Char(0,12,yushe_MoistureH,3) ;         LCD_Write_Char(1,12,yushe_Moisture,3) ;             LCD_Write_Char(0,3,temp,3) ; } /**********************************************************************ADC0832相關函數 **********************************************************************/ sbit ADCS         =P1^3;       sbit ADCLK  =P1^0;     sbit ADDI         =P1^1;                       sbit ADDO         =P1^1;              unsigned int Adc0832(unsigned char channel) {         uchar i=0;         uchar j;         uint dat=0;         uchar ndat=0;         uchar  Vot=0; if(channel==0)channel=2;         if(channel==1)channel=3;         ADDI=1;         _nop_();         _nop_();         ADCS=0;              _nop_();         _nop_();         ADCLK=1;            _nop_();         _nop_();         ADCLK=0;             _nop_();         _nop_();         ADCLK=1;           ADDI=channel&0x1;         _nop_();         _nop_();         ADCLK=0;             _nop_();         _nop_();         ADCLK=1;              ADDI=(channel>>1)&0x1;         _nop_();         _nop_();         ADCLK=0;              ADDI=1;                _nop_();         _nop_();         dat=0;         for(i=0;i<8;i++)         {                 dat|=ADDO;                   ADCLK=1;                 _nop_();                 _nop_();                 ADCLK=0;                    _nop_();                 _nop_();                 dat<<=1;                 if(i==7)dat|=ADDO;         }         for(i=0;i<8;i++)         {                 j=0;                 j=j|ADDO;                    ADCLK=1;                 _nop_();                 _nop_();                 ADCLK=0;                    _nop_();                 _nop_();                 j=j<<7;                 ndat=ndat|j;                 if(i<7)ndat>>=1;         }         ADCS=1;             ADCLK=0;           ADDO=1;             dat<<=8;         dat|=ndat;          return(dat);            //return ad data } /**********************************************************************按鍵檢測相關函數 **********************************************************************/ sbit Key1=P1^4;                                  sbit Key2=P3^2;                                  sbit Key3=P3^3;                                  sbit Key4=P3^4;                                   #define KEY_SET                 1                 #define KEY_ADD                        2                 #define KEY_MINUS                3                  u8 Key_Scan() {                  static u8 key_up=1;   //按鍵按松開標志         if(key_up&&(Key1==0||Key2==0||Key3==0))         {                 delay_ms(10);     //去抖動                  key_up=0;                 if(Key1==0)                        return 1;                 else if(Key2==0)return 2;                 else if(Key3==0)return 3;         }         else if(Key1==1&&Key2==1&&Key3==1)                 key_up=1;                       return 0; } void main (void) {         u8 key;         Moisture=Adc0832(0);                                         Moisture=100-(Moisture*100/256);                                         Init1602();                                   LCD_Write_String(0,0,"Ms:000% SEH:000%");           LCD_Write_String(1,0,"MODE:A  SEL:000%");           delay_ms(1000);         Moisture=Adc0832(0);                                         Moisture=100-(Moisture*100/256);                                         while (1)                                                         {                 key=Key_Scan();                                                         Moisture=Adc0832(0);                                                 Moisture=100-(Moisture*100/256);                         if(key==KEY_SET)                 {                         Mode++;                 }                 switch(Mode)                                                                 {                         case 0:                                                                                         {                                 if(key==KEY_ADD)                                 {                                         Mode_1=!Mode_1;                                         if(Mode_1)                                                 LCD_Write_String(1,5,"H");                                           else                                                 LCD_Write_String(1,5,"A");                                   }                                 if(Mode_1)                                 {                                         if(key==KEY_MINUS)                                         {                                                 LED_Moisture=!LED_Moisture;                                         }                                 }                         Display_1602(yushe_Moisture,yushe_MoistureH,Moisture);                                   if(!Mode_1)                                 {                                         if(Moisture>=yushe_MoistureH)                                         {                                                                              LED_Moisture=1;                                                                                   }                                                                      if(Moisture<=yushe_Moisture)                                         {                                                                              LED_Moisture=0;                                                                                   }                                 }                                 break;                         }                         case 1:                                                         {                                 SelectPosition(0,11) ;                                                            write_com(0x0d);                                                                         if(key==KEY_ADD)                                                                 {                                         if(yushe_MoistureH>=99)                                               yushe_MoistureH=99;                                                  yushe_MoistureH++;                                                         LCD_Write_Char(0,12,yushe_MoistureH,3) ;                                 }                                 if(key==KEY_MINUS)                                                                                 {                                         if(yushe_MoistureH<=1)                                                                         yushe_MoistureH=1;                                                           yushe_MoistureH--;                                                                                   LCD_Write_Char(0,12,yushe_MoistureH,3) ;                                 }                                 break;                         }                         case 2:                                                         {                                 SelectPosition(1,11) ;                                                                    write_com(0x0d);                                                                         if(key==KEY_ADD)                                                                                         {                                         if(yushe_Moisture>=99)                                                 yushe_Moisture=99;                                                     yushe_Moisture++;                                                          LCD_Write_Char(1,12,yushe_Moisture,3) ;                                 }                                 if(key==KEY_MINUS)                                                                                 {                                         if(yushe_Moisture<=1)                                                                         yushe_Moisture=1;                                                           yushe_Moisture--;                                                                                   LCD_Write_Char(1,12,yushe_Moisture,3) ;                                 }                                 break;                         }                         default        :                                 {                                 write_com(0x38);                                 write_com(0x0c);                                 Mode=0;                                                         break;                         }                 }         } }
回復

使用道具 舉報

地板
ID:45879 發表于 2023-1-16 09:30 | 只看該作者
洋芋不是馬鈴薯嘛  挺耐旱的。
回復

使用道具 舉報

5#
ID:111875 發表于 2023-1-16 14:17 | 只看該作者
wulin 發表于 2023-1-15 21:37
這是壇友寫的仿真及程序,可以參考。

感謝分享,實在不行的話就用里面的adc
回復

使用道具 舉報

6#
ID:111875 發表于 2023-11-19 14:06 | 只看該作者
wulin 發表于 2023-1-15 21:37
這是壇友寫的仿真及程序,可以參考。

感謝感謝
回復

使用道具 舉報

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

本版積分規則

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

Powered by 單片機教程網

快速回復 返回頂部 返回列表
主站蜘蛛池模板: 欧美操操操 | 午夜视频一区二区三区 | 欧美美女二区 | 99综合| 久久久久亚洲 | 日韩欧美在 | 久久久99国产精品免费 | 国产激情偷乱视频一区二区三区 | 91在线视频免费观看 | 天天爽夜夜爽精品视频婷婷 | 欧美日韩视频在线 | 久久久精品影院 | 午夜精品久久久久99蜜 | 凹凸日日摸日日碰夜夜 | 91精品国产综合久久久久 | 日本福利视频免费观看 | 91精品一区 | 国产精品99久久久久久动医院 | 日韩在线欧美 | 免费不卡av| www.国产精品 | 国产a区 | 97久久精品 | 夜夜草 | 国产日韩欧美 | 中文字幕在线一 | 黄色毛片网站在线观看 | 国产福利精品一区 | 中文字幕一区二区三区四区 | 999久久久| 日韩成人一区 | 成人午夜免费在线视频 | 久久99精品久久久久久 | 欧美日韩视频在线第一区 | 久久久成人网 | 亚洲乱码一区二区三区在线观看 | 日本高清不卡视频 | 国产中文字幕在线 | 国产丝袜一区二区三区免费视频 | 国产视频1 | 99国产精品久久久 |