光照檢測,外圍環境變暗時,指示燈亮,5s后指示燈滅,生物補給燈亮,外圍環境恢復光亮時,生物補給燈滅,
土壤濕度檢測,土壤過干時,水泵抽水,土壤變濕潤時,水泵停止工作
溫度檢測,溫度過高時,風扇啟動,使空氣流通來降溫,溫度適宜時,風扇停止,12864會顯示這三個環境因素的情況
0.jpg (32.48 KB, 下載次數: 31)
下載附件
2018-1-23 01:49 上傳
單片機源程序:
- #include<reg52.h>
- #include "dht12.h"
- #include<intrins.h>
- #define uchar unsigned char
- #define uint unsigned int
- ///*TS12864A-3 端口定義*/
- //#define LCD_data P0 //數據口
- //sbit LCD_RS = P3^4; //寄存器選擇輸入
- //sbit LCD_RW = P3^5; //液晶讀/寫控制
- //sbit LCD_EN = P3^6; //液晶使能控制
- //sbit LCD_PSB = P3^7; //串/并方式控制
- ///* 89c52 端口定義*/
- //sbit turang=P1^3;
- //sbit choushui=P2^5;
- //sbit feng=P1^7;
- sbit guang=P2^1;
- sbit zhao=P2^2;
- sbit guangbu=P2^4;
- //uchar chun ;
- //uchar i;
- //uchar code dis1[] = {"智能花卉培養裝置"};
- //uchar code dis2[] = {"光照:"};
- //uchar code dis3[] = {"溫度:"};
- //uchar code dis4[] = {"濕度:"};
- //uchar code dis5[] = {"適宜"};
- //uchar code dis6[] = {"較暗"};
- //uchar code dis7[] = {"適宜"};
- //uchar code dis8[] = {"偏高"};
- //uchar code dis9[] = {"適宜"};
- //uchar code dis0[] = {"干燥"};
- //
- //#define delayNOP(); {_nop_();_nop_();_nop_();_nop_();};
- //uchar IRDIS[2];
- //uchar IRCOM[4];
- //void delay0(uchar x); //x*0.14MS
- //void beep();
- //void dataconv();
- //void lcd_pos(uchar X,uchar Y); //確定顯示位置
- /*******************************************************************/
- /* */
- /* 延時函數 */
- /* */
- /*******************************************************************/
- void delay(int ms)
- {
- while(ms--)
- {
- uchar i;
- for(i=0;i<250;i++)
- {
- _nop_();
- _nop_();
- _nop_();
- _nop_();
- }
- }
- }
- /*******************************************************************/
- /* */
- /*檢查LCD忙狀態 */
- /*lcd_busy為1時,忙,等待。lcd-busy為0時,閑,可寫指令與數據。 */
- /* */
- /*******************************************************************/
- //bit lcd_busy()
- // {
- // bit result;
- // LCD_RS = 0;
- // LCD_RW = 1;
- // LCD_EN = 1;
- // delayNOP();
- // result = (bit)(P0&0x80);
- // LCD_EN = 0;
- // return(result);
- // }
- ///*******************************************************************/
- ///* */
- ///*寫指令數據到LCD */
- ///*RS=L,RW=L,E=高脈沖,D0-D7=指令碼。 */
- ///* */
- ///*******************************************************************/
- //void lcd_wcmd(uchar cmd)
- //{
- // while(lcd_busy());
- // LCD_RS = 0;
- // LCD_RW = 0;
- // LCD_EN = 0;
- // _nop_();
- // _nop_();
- // P0 = cmd;
- // delayNOP();
- // LCD_EN = 1;
- // delayNOP();
- // LCD_EN = 0;
- //}
- ///*******************************************************************/
- ///* */
- ///*寫顯示數據到LCD */
- ///*RS=H,RW=L,E=高脈沖,D0-D7=數據。 */
- ///* */
- ///*******************************************************************/
- //void lcd_wdat(uchar dat)
- //{
- // while(lcd_busy());
- // LCD_RS = 1;
- // LCD_RW = 0;
- // LCD_EN = 0;
- // P0 = dat;
- // delayNOP();
- // LCD_EN = 1;
- // delayNOP();
- // LCD_EN = 0;
- //}
- ///*******************************************************************/
- ///* */
- ///* LCD初始化設定 */
- ///* */
- ///*******************************************************************/
- //void lcd_init()
- //{
- // LCD_PSB = 1; //并口方式
- //
- // lcd_wcmd(0x34); //擴充指令操作
- // delay(5);
- // lcd_wcmd(0x30); //基本指令操作
- // delay(5);
- // lcd_wcmd(0x0C); //顯示開,關光標
- // delay(5);
- // lcd_wcmd(0x01); //清除LCD的顯示內容
- // delay(5);
- //}
- ///**************************************/
- // /*********************************************************/
- ///* */
- ///* 延時x*0.14ms子程序 */
- ///* */
- ///*********************************************************/
- //void delay0(uchar x) //x*0.14MS
- //{
- // uchar i;
- // while(x--)
- // {
- // for (i = 0; i<13; i++) {}
- // }
- //}
- ///*********************************************************/
- ///* */
- ///* 設定顯示位置 */
- ///* */
- ///*********************************************************/
- //void lcd_pos(uchar X,uchar Y)
- //{
- // uchar pos;
- // if (X==0)
- // {X=0x80;}
- // else if (X==1)
- // {X=0x90;}
- // else if (X==2)
- // {X=0x88;}
- // else if (X==3)
- // {X=0x98;}
- // pos = X+Y ;
- // lcd_wcmd(pos); //顯示地址
- //}
- //void Lcd()
- //{
- // /*************************************/
- // /******** 顯示屏初始化 ********/
- // /*************************************/
- // /*************************************/
- // delay(10); //延時
- // lcd_init(); //初始化LCD
- //
- // /*************************************/
- // /******** 顯示屏 ********/
- // /***************第一行*****************/
- // /*************************************/
- // lcd_pos(0,0); //設置顯示位置為第一行的第1個字符
- // i = 0;
- // while(dis1[i] != '\0')
- // { //顯示字符
- // lcd_wdat(dis1[i]);
- // i++;
- // }
- // /*************************************/
- // /******** 顯示屏 ********/
- // /***************第二行*****************/
- // /*************************************/
- // lcd_pos(1,0); //設置顯示位置為第二行的第1個字符
- // i = 0;
- // while(dis2[i] != '\0')
- // {
- // lcd_wdat(dis2[i]); //顯示字符
- // i++;
- // }
- // lcd_pos(1,3); //設置顯示位置為第二行的第4個字符
- // i = 0;
- // if(guang==0)
- // {
- // while(dis5[i] != '\0')
- // {
- // lcd_wdat(dis5[i]); //顯示字符
- // i++;
- // }
- // }
- // else
- // {
- // while(dis6[i] != '\0')
- // {
- // lcd_wdat(dis6[i]); //顯示字符
- // i++;
- // }
- // }
- // /*************************************/
- // /******** 顯示屏 ********/
- // /***************第三行*****************/
- // /*************************************/
- // lcd_pos(2,0); //設置顯示位置為第三行的第1個字符
- // i = 0;
- //
- // while(dis3[i] != '\0')
- // {
- // lcd_wdat(dis3[i]); //顯示字符
- // i++;
- // }
- // lcd_pos(2,3); //設置顯示位置為第三行的第4個字符
- // i = 0;
- // if(chun<25)
- // {
- // while(dis7[i] != '\0')
- // {
- // lcd_wdat(dis7[i]); //顯示字符
- // i++;
- // }
- // }
- // else
- // {
- // while(dis8[i] != '\0')
- // {
- // lcd_wdat(dis8[i]); //顯示字符
- // i++;
- // }
- // }
- // /*************************************/
- // /******** 顯示屏 ********/
- // /***************第四行*****************/
- // /*************************************/
- // lcd_pos(3,0); //設置顯示位置為第四行的第1個字符
- // i = 0;
- // while(dis4[i] != '\0')
- // {
- // lcd_wdat(dis4[i]); //顯示字符
- // i++;
- // }
- // lcd_pos(3,3); //設置顯示位置為第四行的第4個字符
- // i = 0;
- // if(turang==0)
- // {
- // while(dis9[i] != '\0')
- // {
- // lcd_wdat(dis9[i]); //顯示字符
- // i++;
- // }
- // }
- // else
- // {
- // while(dis0[i] != '\0')
- // {
- // lcd_wdat(dis0[i]); //顯示字符
- // i++;
- // }
- // }
- //}
- ///*******溫度檢測******/
- // /*********************/
- // /*********************/
- //void Temperature()
- //{
- //
- //
- // struct DHT12_Message dht11;
- // init_dht11();
- // dht11=get_data_dht11();
- // chun= (dht11.temperature_shi-48)*10+(dht11.temperature_ge-48);
- // if(chun>25)
- //
- // {
- // feng=0;
- // }
- // else
- // {
- // feng=1;
- //
- // }
- //}
- // /*****土壤濕度檢測******/
- // /*********************/
- // /*********************/
- //void Soil()
- //{
- //
- //
- // if(turang==0)
- // {
- // choushui=1;
- //
- // }
- // else
- // {
- // choushui=0;
- // }
- //}
- /*****光照檢測******/
- /*********************/
- /*********************/
- void Illumination()
- {
- if(guang==0)
- {
- zhao=1;
- ……………………
- …………限于本文篇幅 余下代碼請從51黑下載附件…………
復制代碼
所有資料51hei提供下載:
bishe1.7z
(25.49 KB, 下載次數: 16)
2018-1-22 10:01 上傳
點擊文件名下載附件
下載積分: 黑幣 -5
|