找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
查看: 2861|回复: 2
打印 上一主题 下一主题
收起左侧

单片机检测温湿度

[复制链接]
跳转到指定楼层
楼主
ID:239345 发表于 2017-10-22 15:45 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
芯片用到了STC12,显示屏是16
  1. #include<STC12C5A60S2.h>
  2. #include <intrins.h>
  3. #include <Lcd_1602.h>
  4. #include <Time_Delay.h>
  5. #include"DHT11.h"

  6. sbit wd_key1=P3^4;
  7. sbit wd_key2=P3^5;
  8. sbit sd_key1=P3^6;
  9. sbit sd_key2=P3^7;

  10. sbit jr_jdq=P2^0;
  11. sbit js_jdq=P2^1;
  12. sbit fs_jdq=P2^2;
  13. void key_sm(void);

  14. extern float F16T,F16RH;   //全局变量声明
  15. unsigned wd_num=20,sd_num=50,t;
  16. void main ()
  17. {
  18.   Init_Lcd();
  19.   LCD_write_str(0,1,"4561def135");         //液晶预显示测试
  20.   LCD_value(0,0,34.345);
  21.   Delay_ms(200);

  22.   Init_Lcd();

  23.     TMOD=0X01;                                //设置定时器0为模式一,即16位计算模式
  24.         TH0=(65536-50000)/256;        //给计数寄存器赋值,
  25.         TL0=(65536-50000)%256;
  26.         EA=1;                //开启总中断
  27.         ET0=1;                //开启定时器0中断
  28.         TR0=1;                //启动定时器0
  29.     while(1)
  30.   {
  31.   
  32.   getDHT11();
  33.   key_sm();
  34.   LCD_write_str(0,0,"T=");
  35.   LCD_value(3,0,F16T);  LCD_write_str(7,0,"\"C");       //字符" 应用转义格式
  36.   LCD_write_str(10,0," ");LCD_value(11,0,wd_num);
  37.    LCD_write_str(0,1,"RH=");
  38.   LCD_value(4,1,F16RH);          LCD_write_str(8,1,"%");
  39.   LCD_write_str(10,1," ");LCD_value(11,1,sd_num);
  40.   Delay_ms(100);
  41.   if(t>20)
  42.   {       
  43.   if(F16T<wd_num)
  44.    {jr_jdq=0;}else jr_jdq=1;
  45.    if(F16RH<sd_num)       
  46.    {js_jdq=0;}else js_jdq=1;
  47.    if((F16T>wd_num)&(F16RH>sd_num))
  48.    {fs_jdq=0;} else fs_jdq=1;
  49.    t=0;
  50.   // Delay_ms(100);
  51.   }
  52.   }
  53.   }

  54. void key_sm(void)
  55. {
  56.    
  57.    if(wd_key1==0)
  58.    {
  59.    while(!wd_key1);
  60.    wd_num=wd_num+1;}
  61.    if(wd_key2==0)
  62.    {
  63.    while(!wd_key2);
  64.    wd_num=wd_num-1;}

  65.    if(sd_key1==0)
  66.    {
  67.    while(!sd_key1);
  68.    sd_num=sd_num+1;}
  69.    if(sd_key2==0)
  70.    {
  71.    while(!sd_key2);
  72.    sd_num=sd_num-1;}


  73. }
  74. //中断函数,关键字"interrupt" , 这是C语言的中断函数表示法,1表时定地器0
  75. void timer() interrupt 1
  76. {
  77.    TH0=(65536-50000)/256;        //给计数寄存器赋值
  78.    TL0=(65536-50000)%256;
  79.    t++;
  80.    //key_sm();
  81.    
  82. }
复制代码

02,温湿度传感器DHT11

DHT11温湿度LCD1602.zip

43.48 KB, 下载次数: 16, 下载积分: 黑币 -5

分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏2 分享淘帖 顶 踩
回复

使用道具 举报

沙发
ID:231936 发表于 2017-10-26 15:30 | 只看该作者
给个电路图
回复

使用道具 举报

板凳
ID:379238 发表于 2018-8-11 15:00 | 只看该作者
非常赞
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

手机版|小黑屋|51黑电子论坛 |51黑电子论坛6群 QQ 管理员QQ:125739409;技术交流QQ群281945664

Powered by 单片机教程网

快速回复 返回顶部 返回列表