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

 找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

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

基于單片機的智能花卉培養裝置源碼

[復制鏈接]
跳轉到指定樓層
樓主
光照檢測,外圍環境變暗時,指示燈亮,5s后指示燈滅,生物補給燈亮,外圍環境恢復光亮時,生物補給燈滅,
土壤濕度檢測,土壤過干時,水泵抽水,土壤變濕潤時,水泵停止工作
溫度檢測,溫度過高時,風扇啟動,使空氣流通來降溫,溫度適宜時,風扇停止,12864會顯示這三個環境因素的情況


單片機源程序:
  1. #include<reg52.h>
  2. #include "dht12.h"
  3. #include<intrins.h>
  4. #define uchar unsigned char
  5. #define uint unsigned int
  6. ///*TS12864A-3 端口定義*/
  7. //#define LCD_data  P0             //數據口
  8. //sbit LCD_RS  =  P3^4;            //寄存器選擇輸入
  9. //sbit LCD_RW  =  P3^5;            //液晶讀/寫控制
  10. //sbit LCD_EN  =  P3^6;            //液晶使能控制
  11. //sbit LCD_PSB =  P3^7;            //串/并方式控制

  12. ///*     89c52 端口定義*/
  13. //sbit turang=P1^3;
  14. //sbit choushui=P2^5;
  15. //sbit feng=P1^7;
  16. sbit guang=P2^1;
  17. sbit zhao=P2^2;
  18. sbit guangbu=P2^4;
  19. //uchar chun ;
  20. //uchar i;


  21. //uchar code dis1[] = {"智能花卉培養裝置"};
  22. //uchar code dis2[] = {"光照:"};
  23. //uchar code dis3[] = {"溫度:"};
  24. //uchar code dis4[] = {"濕度:"};
  25. //uchar code dis5[] = {"適宜"};
  26. //uchar code dis6[] = {"較暗"};
  27. //uchar code dis7[] = {"適宜"};
  28. //uchar code dis8[] = {"偏高"};
  29. //uchar code dis9[] = {"適宜"};
  30. //uchar code dis0[] = {"干燥"};
  31. //   

  32. //#define delayNOP(); {_nop_();_nop_();_nop_();_nop_();};
  33. //uchar IRDIS[2];
  34. //uchar IRCOM[4];
  35. //void delay0(uchar x);  //x*0.14MS
  36. //void beep();
  37. //void  dataconv();
  38. //void lcd_pos(uchar X,uchar Y);  //確定顯示位置
  39. /*******************************************************************/
  40. /*                                                                 */
  41. /*  延時函數                                                       */
  42. /*                                                                 */
  43. /*******************************************************************/
  44. void delay(int ms)
  45. {
  46.     while(ms--)
  47.         {
  48.       uchar i;
  49.           for(i=0;i<250;i++)  
  50.            {
  51.             _nop_();                          
  52.                 _nop_();
  53.                 _nop_();
  54.                 _nop_();
  55.            }
  56.         }
  57. }               
  58. /*******************************************************************/
  59. /*                                                                 */
  60. /*檢查LCD忙狀態                                                    */
  61. /*lcd_busy為1時,忙,等待。lcd-busy為0時,閑,可寫指令與數據。      */
  62. /*                                                                 */
  63. /*******************************************************************/
  64. //bit lcd_busy()
  65. // {                          
  66. //    bit result;
  67. //    LCD_RS = 0;
  68. //    LCD_RW = 1;
  69. //    LCD_EN = 1;
  70. //    delayNOP();
  71. //    result = (bit)(P0&0x80);
  72. //    LCD_EN = 0;
  73. //    return(result);
  74. // }
  75. ///*******************************************************************/
  76. ///*                                                                 */
  77. ///*寫指令數據到LCD                                                  */
  78. ///*RS=L,RW=L,E=高脈沖,D0-D7=指令碼。                             */
  79. ///*                                                                 */
  80. ///*******************************************************************/
  81. //void lcd_wcmd(uchar cmd)
  82. //{                          
  83. //   while(lcd_busy());
  84. //    LCD_RS = 0;
  85. //    LCD_RW = 0;
  86. //    LCD_EN = 0;
  87. //    _nop_();
  88. //    _nop_();
  89. //    P0 = cmd;
  90. //    delayNOP();
  91. //    LCD_EN = 1;
  92. //    delayNOP();
  93. //    LCD_EN = 0;  
  94. //}
  95. ///*******************************************************************/
  96. ///*                                                                 */
  97. ///*寫顯示數據到LCD                                                  */
  98. ///*RS=H,RW=L,E=高脈沖,D0-D7=數據。                               */
  99. ///*                                                                 */
  100. ///*******************************************************************/
  101. //void lcd_wdat(uchar dat)
  102. //{                          
  103. //   while(lcd_busy());
  104. //    LCD_RS = 1;
  105. //    LCD_RW = 0;
  106. //    LCD_EN = 0;
  107. //    P0 = dat;
  108. //    delayNOP();
  109. //    LCD_EN = 1;
  110. //    delayNOP();
  111. //    LCD_EN = 0;
  112. //}
  113. ///*******************************************************************/
  114. ///*                                                                 */
  115. ///*  LCD初始化設定                                                  */
  116. ///*                                                                 */
  117. ///*******************************************************************/
  118. //void lcd_init()
  119. //{

  120. //    LCD_PSB = 1;         //并口方式
  121. //   
  122. //    lcd_wcmd(0x34);      //擴充指令操作
  123. //    delay(5);
  124. //    lcd_wcmd(0x30);      //基本指令操作
  125. //    delay(5);
  126. //    lcd_wcmd(0x0C);      //顯示開,關光標
  127. //    delay(5);
  128. //    lcd_wcmd(0x01);      //清除LCD的顯示內容
  129. //    delay(5);
  130. //}




  131. ///**************************************/
  132. // /*********************************************************/
  133. ///*                                                                                                                 */
  134. ///* 延時x*0.14ms子程序                                                                         */
  135. ///*                                                       */
  136. ///*********************************************************/

  137. //void delay0(uchar x)    //x*0.14MS
  138. //{
  139. //  uchar i;
  140. //  while(x--)
  141. // {
  142. //  for (i = 0; i<13; i++) {}
  143. // }
  144. //}
  145. ///*********************************************************/
  146. ///*                                                       */
  147. ///* 設定顯示位置                                          */
  148. ///*                                                       */
  149. ///*********************************************************/
  150. //void lcd_pos(uchar X,uchar Y)
  151. //{                          
  152. //   uchar  pos;
  153. //   if (X==0)
  154. //     {X=0x80;}
  155. //   else if (X==1)
  156. //     {X=0x90;}
  157. //   else if (X==2)
  158. //     {X=0x88;}
  159. //   else if (X==3)
  160. //     {X=0x98;}
  161. //   pos = X+Y ;  
  162. //   lcd_wcmd(pos);     //顯示地址
  163. //}







  164. //void Lcd()
  165. //{
  166. //         /*************************************/
  167. //         /********    顯示屏初始化     ********/
  168. //         /*************************************/
  169. //         /*************************************/   

  170. //    delay(10);                 //延時
  171. //    lcd_init();                //初始化LCD            
  172. //  
  173. //          /*************************************/
  174. //         /********       顯示屏        ********/
  175. //         /***************第一行*****************/
  176. //         /*************************************/

  177. //    lcd_pos(0,0);             //設置顯示位置為第一行的第1個字符
  178. //     i = 0;
  179. //    while(dis1[i] != '\0')
  180. //     {                         //顯示字符
  181. //       lcd_wdat(dis1[i]);
  182. //       i++;
  183. //     }

  184. //         /*************************************/
  185. //         /********       顯示屏        ********/
  186. //         /***************第二行*****************/
  187. //         /*************************************/


  188. //    lcd_pos(1,0);             //設置顯示位置為第二行的第1個字符
  189. //     i = 0;
  190. //    while(dis2[i] != '\0')
  191. //     {
  192. //       lcd_wdat(dis2[i]);      //顯示字符
  193. //       i++;
  194. //     }

  195. //           lcd_pos(1,3);                  //設置顯示位置為第二行的第4個字符
  196. //                        i = 0;

  197. //         if(guang==0)
  198. //           {
  199. //                        while(dis5[i] != '\0')
  200. //                        {
  201. //                                lcd_wdat(dis5[i]);      //顯示字符
  202. //                i++;
  203. //                        }
  204. //           }
  205. //           else
  206. //           {
  207. //                        while(dis6[i] != '\0')
  208. //                        {
  209. //                                lcd_wdat(dis6[i]);      //顯示字符
  210. //                i++;
  211. //                                }
  212. //           }

  213. //         /*************************************/
  214. //         /********       顯示屏        ********/
  215. //         /***************第三行*****************/
  216. //         /*************************************/
  217. //          lcd_pos(2,0);             //設置顯示位置為第三行的第1個字符
  218. //     i = 0;
  219. //         
  220. //    while(dis3[i] != '\0')
  221. //     {
  222. //       lcd_wdat(dis3[i]);      //顯示字符
  223. //       i++;
  224. //     }

  225. //                lcd_pos(2,3);             //設置顯示位置為第三行的第4個字符
  226. //        i = 0;


  227. //                if(chun<25)
  228. //           {
  229. //                        while(dis7[i] != '\0')
  230. //                        {
  231. //                                lcd_wdat(dis7[i]);      //顯示字符
  232. //                i++;
  233. //                        }
  234. //           }
  235. //           else
  236. //           {
  237. //                        while(dis8[i] != '\0')
  238. //                        {
  239. //                                lcd_wdat(dis8[i]);      //顯示字符
  240. //                i++;
  241. //                                }
  242. //           }


  243. //         /*************************************/
  244. //         /********       顯示屏        ********/
  245. //         /***************第四行*****************/
  246. //         /*************************************/
  247. //         lcd_pos(3,0);             //設置顯示位置為第四行的第1個字符
  248. //     i = 0;
  249. //     while(dis4[i] != '\0')
  250. //     {
  251. //       lcd_wdat(dis4[i]);      //顯示字符
  252. //       i++;
  253. //     }


  254. //          lcd_pos(3,3);             //設置顯示位置為第四行的第4個字符
  255. //     i = 0;
  256. //         if(turang==0)
  257. //           {
  258. //                        while(dis9[i] != '\0')
  259. //                        {
  260. //                                lcd_wdat(dis9[i]);      //顯示字符
  261. //                i++;
  262. //                        }
  263. //           }
  264. //           else
  265. //           {
  266. //                        while(dis0[i] != '\0')
  267. //                        {
  268. //                                lcd_wdat(dis0[i]);      //顯示字符
  269. //                i++;
  270. //                                }
  271. //           }


  272. //}



  273. ///*******溫度檢測******/
  274. //        /*********************/
  275. //                /*********************/


  276. //void Temperature()
  277. //{
  278. //          
  279. //       
  280. //           struct DHT12_Message dht11;
  281. //          init_dht11();
  282. //          dht11=get_data_dht11();
  283. //         chun= (dht11.temperature_shi-48)*10+(dht11.temperature_ge-48);
  284. //   if(chun>25)
  285. //   
  286. //   {
  287. //    feng=0;

  288. //   }                  
  289. //        else
  290. //        {
  291. //         feng=1;
  292. //       
  293. //        }
  294. //}



  295. //                 /*****土壤濕度檢測******/
  296. //        /*********************/
  297. //                /*********************/

  298. //void Soil()
  299. //{


  300. //     
  301. //          
  302. //                if(turang==0)
  303. //        {
  304. //          choushui=1;
  305. //          
  306. //        }                 
  307. //           else
  308. //        {
  309. //         choushui=0;
  310. //        }


  311. //}


  312.                   /*****光照檢測******/
  313.         /*********************/
  314.                 /*********************/

  315. void Illumination()
  316. {
  317.                   if(guang==0)
  318.                 {
  319.                         zhao=1;
  320. ……………………

  321. …………限于本文篇幅 余下代碼請從51黑下載附件…………
復制代碼

所有資料51hei提供下載:
bishe1.7z (25.49 KB, 下載次數: 16)



評分

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

查看全部評分

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

使用道具 舉報

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

本版積分規則

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

Powered by 單片機教程網

快速回復 返回頂部 返回列表
主站蜘蛛池模板: 理论片免费在线观看 | 国产精品久久久久9999鸭 | 成人午夜网站 | 精产国产伦理一二三区 | 免费在线视频a | 亚洲一区中文字幕在线观看 | av手机免费在线观看 | 亚洲欧美一区二区三区国产精品 | 欧美激情视频一区二区三区在线播放 | av黄色在线 | 国产日韩精品在线 | 99婷婷 | 日韩福利一区 | 国产精品123区 | 91久久| 开操网| 激情欧美一区二区三区中文字幕 | 日本人爽p大片免费看 | 日韩一级免费电影 | 国产xxxx在线| 精品久久久久久亚洲综合网站 | 在线欧美视频 | 黑人精品欧美一区二区蜜桃 | 91麻豆精品国产91久久久久久久久 | 亚洲精品免费视频 | 国产精品亚洲第一区在线暖暖韩国 | 欧美性区 | 亚洲视频一区 | 久草视频在线看 | 亚洲欧洲成人av每日更新 | 激情综合五月 | 久久综合一区 | 欧美日韩美女 | 伊人网站视频 | 日本亚洲欧美 | 精精精精xxxx免费视频 | 天天操天天干天天透 | 国产一区二区在线免费观看 | 国产毛片视频 | 成人一区二区三区在线观看 | 天天影视亚洲综合网 |