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

 找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

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

51單片機大棚溫濕度檢測顯示源程序與Proteus仿真圖

  [復制鏈接]
跳轉到指定樓層
樓主
仿真原理圖如下(proteus仿真工程文件可到本帖附件中下載)


單片機源程序如下:
  1. #include <reg52.h>
  2. #include <intrins.h>
  3. #include <stdio.h>
  4. #include "1602.h"
  5. #include "delay.h"
  6. #include"18b20.h"
  7. #include"i2c.h"

  8. sbit led_l = P1^0;       
  9. sbit led_b = P1^1;
  10. sbit fan = P1^4;
  11. sbit relay = P1^3;

  12. sbit key_s = P3^4;
  13. sbit key_a = P3^5;
  14. sbit key_u = P3^6;

  15. unsigned char readTem = 0 ;
  16. unsigned char readADCFlag = 0 ;         

  17. int temp;                               
  18. float temperature = 0;          

  19. char disdat[16];                          
  20. char disset[16];
  21. unsigned long time_20ms=0;               

  22. float Lv=0.0;                         
  23. float Tv=0.0;                                 
  24. unsigned int Lval =0;               
  25. unsigned int Rval = 0;               
  26. unsigned int distem;                 
  27. unsigned char rekey = 0;         
  28. unsigned char SetFlag = 0;        
  29. unsigned char setLval = 50;
  30. unsigned char setRval = 50;
  31. unsigned char setTval = 35;

  32. void Init_Timer0(void);          

  33. void main (void)
  34. {     
  35.         unsigned char midval;            
  36.         Init_Timer0();

  37.         LCD_Init();           
  38.         DelayMs(20);         
  39.         LCD_Clear();      

  40.         led_l = 0;relay = 0;led_b = 0;fan = 0;
  41.         DelayMs(200);  
  42.         led_l = 1;relay = 1;led_b = 1;fan = 1;

  43.         sprintf(disdat,"L:%2d R:%2d T:%2d C",Lval,Rval,distem);
  44.         LCD_Write_String(0,0,disdat);
  45.         sprintf(disset," L:%2d R:%2d T:%2d",(unsigned int)setLval,(unsigned int)setRval,(unsigned int)setTval);
  46.         LCD_Write_String(0,1,disset);
  47.         while (1)        
  48.         {               
  49.                 if((key_s == 0)||(key_a == 0 )||(key_u == 0))
  50.                 {
  51.                         if(rekey == 0)                       
  52.                         {
  53.                                 DelayMs(10);
  54.                                 if(key_s == 0)
  55.                                 {               
  56.                                         if(SetFlag == 0)
  57.                                         {
  58.                                                 SetFlag =1;       
  59.                                         }
  60.                                         else if(SetFlag == 1)
  61.                                         {
  62.                                                 SetFlag =2;       
  63.                                         }
  64.                                         else if(SetFlag == 2)
  65.                                         {
  66.                                                 SetFlag = 3;       
  67.                                         }
  68.                                         else if(SetFlag == 3)
  69.                                         {
  70.                                                 SetFlag =0;       
  71.                                         }
  72.                                         rekey = 1;               
  73.                                 }
  74.                                 if(key_a == 0)
  75.                                 {               
  76.                                         if(SetFlag == 1)       
  77.                                         {       
  78.                                                 if(setLval <99)       
  79.                                                 {setLval++;}
  80.                                         }
  81.                                         else if(SetFlag == 2)
  82.                                         {
  83.                                                 if(setRval <99)       
  84.                                                 {setRval++;}
  85.                                         }
  86.                                         else if(SetFlag == 3)
  87.                                         {       
  88.                                                 if(setTval <99)       
  89.                                                 {setTval++;}
  90.                                         }
  91.                                         rekey = 1;               
  92.                                 }
  93.                                 if(key_u == 0)
  94.                                 {       
  95.                                         if(SetFlag == 1)       
  96.                                         {       
  97.                                                 if(setLval >0)       
  98.                                                 {setLval--;}
  99.                                         }
  100.                                         else if(SetFlag == 2)  
  101.                                         {
  102.                                                 if(setRval >0)       
  103.                                                 {setRval--;}
  104.                                         }
  105.                                         else if(SetFlag == 3)
  106.                                         {       
  107.                                                 if(setTval >0)               
  108.                                                 {setTval--;}
  109.                                         }       
  110.                                         rekey = 1;               
  111.                                 }

  112.                         }               
  113.                 }
  114.                 else
  115.                 {rekey = 0;}


  116.                 if(readADCFlag == 1)       
  117.                 {
  118.                         midval=ReadADC(1);       
  119.                         Lv=5.15-(float)midval*5.15/255;               
  120.                         Lval  = (unsigned int )(Lv * 100 )/5.16;
  121.                         DelayMs(10);         
  122.                         midval=ReadADC(0);                               
  123.                         Tv=5.15-(float)midval*5.15/255;       
  124.                         Rval  = (unsigned int )(Tv * 100 )/5.16;
  125.                         sprintf(disdat,"L:%2d R:%2d T:%2d C",Lval,Rval,distem);
  126.                         LCD_Write_String(0,0,disdat);
  127.                         LCD_Write_Char(14,0,0XDF) ;
  128.                         readADCFlag = 0 ;

  129.                         sprintf(disset," L:%2d R:%2d T:%2d ",(unsigned int)setLval,(unsigned int)setRval,(unsigned int)setTval);
  130.                         LCD_Write_String(0,1,disset);
  131.                         if(SetFlag == 1)       
  132.                         {
  133.                                 LCD_Write_Char(0,1,'S') ;       
  134.                                 LCD_Write_Char(5,1,' ') ;
  135.                                 LCD_Write_Char(10,1,' ') ;
  136.                         }
  137.                         else if(SetFlag == 2)
  138.                         {
  139.                                 LCD_Write_Char(0,1,' ') ;
  140.                                 LCD_Write_Char(5,1,'S') ;  
  141.                                 LCD_Write_Char(10,1,' ') ;
  142.                         }
  143.                         else if(SetFlag == 3)
  144.                         {
  145.                                 LCD_Write_Char(0,1,' ') ;
  146.                                 LCD_Write_Char(5,1,' ') ;  
  147.                                 LCD_Write_Char(10,1,'S') ;
  148.                         }
  149.                         else
  150.                         {
  151.                                 LCD_Write_Char(0,1,' ') ;
  152.                                 LCD_Write_Char(5,1,' ') ;
  153.                                 LCD_Write_Char(10,1,' ') ;
  154.                         }
  155.                         if(Lval <= setLval)       
  156.                         {
  157.                                  led_l = 0;                  
  158.                         }
  159.                         else
  160.                         {
  161.                                 led_l = 1;                 
  162.                         }
  163.                         if(Rval <= setRval)       
  164.                         {
  165.                                  relay = 0;               
  166.                         }
  167.                         else
  168.                         {
  169.                                 relay = 1;       
  170.                         }
  171.                         if(distem <= setTval)       
  172.                         {
  173.                                  led_b = 0;       
  174.                                 fan = 1;
  175.                         }
  176.                         else
  177.                         {
  178.                                 led_b = 1;          
  179.                                 fan = 0;
  180.                         }

  181.                 }
  182.                 if(readTem==1)               
  183.                 {
  184.                     temp=ReadTemperature();                          
  185.                         temperature=(float)temp*0.0625;          
  186.                         if(temperature >1)                               
  187.                         {distem = (unsigned int )temperature;}       
  188.                         readTem=0;
  189.                 }                       
  190.         }
  191. }

  192. void Init_Timer0(void)
  193. {
  194.         TMOD |= 0x01;                               
  195.         TH0=(65536-20000)/256;                 
  196.         TL0=(65536-20000)%256;
  197.         EA=1;           
  198.         ET0=1;           
  199.         TR0=1;         
  200. }

  201. void Timer0_isr(void) interrupt 1
  202. {
  203.         TH0=(65536-20000)/256;       
  204.         TL0=(65536-20000)%256;
  205.        
  206.         time_20ms++;
  207.         if(time_20ms % 20 == 0)
  208.         {
  209.                  readADCFlag = 1;
  210.         }
  211.         if(time_20ms % 40 == 0)       
  212.         {
  213.                  readTem = 1;       
  214.         }
  215. }
復制代碼
有對單片機感興趣的,研究技術的,歡迎加群955477798

所有資料51hei提供下載:
51大鵬溫濕度光照(準) (2).zip (290.07 KB, 下載次數: 192)

評分

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

查看全部評分

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

使用道具 舉報

沙發
ID:1014556 發表于 2022-4-1 10:18 | 只看該作者
您好,您發表的“51單片機大棚溫濕度檢測顯示源程序與Proteus仿真圖”我下載了,在proteus中運行的時候1602它為什么是沒有顯示的呢?
回復

使用道具 舉報

板凳
ID:474195 發表于 2023-4-10 17:53 | 只看該作者
小草半年 發表于 2022-4-1 10:18
您好,您發表的“51單片機大棚溫濕度檢測顯示源程序與Proteus仿真圖”我下載了,在proteus中運行的時候1602 ...

調一下背光試下
回復

使用道具 舉報

地板
ID:1074025 發表于 2023-4-25 15:17 來自觸屏版 | 只看該作者
51小白冬 發表于 2023-4-10 17:53
調一下背光試下

怎么調節呢
回復

使用道具 舉報

5#
ID:474195 發表于 2023-5-10 16:03 | 只看該作者

這個百度一下 lcd1602背光調節 一大堆
回復

使用道具 舉報

6#
ID:641483 發表于 2023-5-23 15:59 | 只看該作者
謝謝樓主分享 先收藏 慢慢學習
回復

使用道具 舉報

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

本版積分規則

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

Powered by 單片機教程網

快速回復 返回頂部 返回列表
主站蜘蛛池模板: 精品久久久久久久久久久久久久久久久 | 亚洲欧美综合 | 一区二区在线 | 黄a网| 日日欧美 | 欧美爱爱视频 | 亚洲精品日韩精品 | 国产精品波多野结衣 | 国产精品一区二区日韩 | 国产精品一区二区三区四区 | 无码一区二区三区视频 | 国产成人精品一区二区在线 | 黄视频免费 | 亚洲精品久久久久久一区二区 | 日韩手机在线视频 | 九九热这里 | 特黄特色大片免费视频观看 | 国内自拍偷拍 | 一区亚洲 | 国产乱码精品一区二区三区五月婷 | 亚洲精品中文字幕在线观看 | 成人免费一区二区三区视频网站 | 国产精品视频在线观看 | 国产精品一区二区欧美 | 午夜av电影院 | 久久成人av电影 | 久久亚洲一区 | 日韩欧美在线观看视频网站 | 午夜在线视频 | 久草视频在线播放 | 福利视频二区 | 国产精品久久国产精品99 | 日韩一区二区在线播放 | 国产福利网站 | 男女视频在线观看免费 | 国产视频三区 | 日本不卡免费新一二三区 | 国产高清精品一区二区三区 | 日本午夜在线视频 | 日韩精品一区二区三区中文字幕 | 国产日韩一区二区三免费 |