硬件设计

仿真图1:
该设计是基于51单片机的温湿度光强二氧化碳检测系统,由LCD1602作为显示器,温湿度采用的SHT11传感器,ADC采用的TLC2543,光强就是光敏传感器,气体检测这里采用的是电位器模拟的。该设计仅做了采集和显示,没有阈值设置功能。

仿真图2:
该设计为基于51单片机的温度检测系统,由LCD1602作为显示器,温度采用DS18B20,通过4个按键设置阈值,超出阈值会LED报警;该设计为温度专用的检测系统。

仿真图3:
该设计为基于51单片机的温湿度检测系统,由LCD1602作为显示器,温湿度采用DHT11, 通过3个按键设置阈值,当温湿度超过上下限之后会触发分别的继电器;

仿真图3:
该设计为基于51单片机的温湿度烟雾气体检测,由LCD1602作为显示器,温湿度采用DHT11, 三个按键设置温湿度上下限,LED指示,这里的气体同样是用滑动变阻器来模拟的。

程序设计:

仿真图1的部分代码:

#include <reg51.h>
#include "lcd.h"
#include <intrins.h>
#define uchar unsigned char
#define uint unsigned int
#define ulong unsigned long
#define NACK    0
#define ACK     1
#define MEASURE_TEMP    0x03    //000 0001  1
#define MEASURE_HUMI    0x05    //000 0010  1
#define STATUS_REG_W    0x06    //000 0011  0
#define STATUS_REG_R    0x07    //000 0011  1
#define RESET           0x1E    //000 1111  0
ulong volt;//测量的电压值
sbit Data=P2^3;   //定义数据线
sbit CLK=P3^3;//定义时钟信号口
sbit DIN=P3^1;//定义2543数据写入口
sbit DOUT=P3^0;//定义2543数据读取口
sbit CS=P3^2;//定义2543片选信号口
sbit Data_P    = P2^4;         // SHT11传感器的数据管脚
sbit Sck_P     = P2^3;         // SHT11传感器的时钟管脚
sbit BEEP =P2^5;
uchar tmpe,h;
uchar rec_dat[9];   //用于显示的接收数据数组
uchar temp_max = 30;
uchar humi_min = 60;
ulong C2_max = 3500000;
ulong LUX_max = 3500000;
ulong C2_now = 0;
ulong LUX_now = 0;
unsigned char temp;                         // 保存温度
unsigned char humi;                     // 保存湿度enum { TEMP,HUMI };
typedef union                   //定义共用同类型
{unsigned int i;float f;
}value;int display = 0;
void delay(uchar ms)
{  // 延时子程序
uchar i;
while(ms--)
{ for(i = 0;i<250;i++);
}
}char ShtWriteByte(unsigned char value)
{unsigned char i,error=0;for(i=128;i>0;i>>=1)  // 高位为1,循环右移{if (i&value)Data_P=1;           // 和要发送的数相与,结果为发送的位elseData_P=0;Sck_P=1;_nop_();                       // 延时3us_nop_();_nop_();Sck_P=0;}Data_P=1;                        // 释放数据线Sck_P=1;error=Data_P;                 // 检查应答信号,确认通讯正常_nop_();_nop_();_nop_();Sck_P=0;Data_P=1;return error;                 // error=1 通讯错误
}char ShtReadByte(unsigned char ack)
{unsigned char i,val=0;Data_P=1;                      // 释放数据线for(i=0x80;i>0;i>>=1)    // 高位为1,循环右移{Sck_P=1;if(Data_P)val=(val|i);        // 读一位数据线的值Sck_P=0;}Data_P=!ack;              // 如果是校验,读取完后结束通讯Sck_P=1;_nop_();                           // 延时3us_nop_();_nop_();Sck_P=0;_nop_();_nop_();_nop_();Data_P=1;                         // 释放数据线return val;
}void ShtTransStart(void)
{Data_P=1;Sck_P=0;_nop_();Sck_P=1;_nop_();Data_P=0;_nop_();Sck_P=0;_nop_();_nop_();_nop_();Sck_P=1;_nop_();Data_P=1;_nop_();Sck_P=0;
}void ShtConnectReset(void)
{unsigned char i;Data_P=1;                 //准备Sck_P=0;for(i=0;i<9;i++)     //DATA保持高,SCK时钟触发9次,发送启动传输,通迅即复位{Sck_P=1;Sck_P=0;}ShtTransStart();       //启动传输
}

附:http://www.jh-tec.cn/archives/7114

基于51单片机的温湿度光强二氧化碳气体家庭环境检测proteus仿真相关推荐

  1. 【033】基于51单片机的步进电机角度测量与速度设定Proteus仿真设计

    一.压缩包资料内容 (1).基于51单片机的步进电机角度测量与速度设定proteus仿真设计一份: (2).基于51单片机的步进电机角度测量与速度设定proteus仿真设计keli源代码一份: (3) ...

  2. 1430基于51单片机的管道压力检测及泄漏检测Proteus仿真

    [前言] hello 大家好,今天给大家讲一讲基于51单片机的管道压力检测及泄漏检测Proteus仿真. 该项目的功能如下: 1.LCD1602液晶实时显示当前始端和末端压力,压力阈值 2.按键启动/ ...

  3. 基于51单片机CO一氧化碳可燃气体浓度检测超限报警Proteus仿真

    资料编号:160   下面是相关功能视频演示: 160-基于51单片机CO一氧化碳可燃气体浓度检测超限报警Proteus仿真(源码+仿真+全套资料) 功能介绍: 采用51单片机作为CPU,ADC083 ...

  4. 基于51单片机的智能冰箱鱼缸淬火炉温度控制系统proteus仿真

    今天讲解一个温度控制系统的设计,温度控制系统我们在家庭冰箱.鱼缸或者工厂的淬火炉中常常见到,原理其实不复杂:通过人机交互设置好温度的工作范围,外设具有降温和升温设备,当环境温度高于预设温度值,降温设备 ...

  5. 基于51单片机八路抢答器课程设计(含proteus仿真图及代码)

    一.设计要求: 1.可满足8个选手的抢答 2.具有主持者控制开关,用来控制系统清零和抢答开始 3.抢答器具有数据锁存功能.显示功能和声音提示功能 4.抢答开始后,若有选手按动抢答器按钮,编号立即锁存, ...

  6. 基于51单片机的数字电容容值测量仪proteus仿真原理图PCB

    功能介绍: 0.本系统采用STC89C52作为单片机 1.系统支持15pF~450uF电容测量 2.按键可更改测量量程 3.除了采用LCD1602可以实时显示测量参数,同时具有LED可以显示各个档位 ...

  7. 基于51单片机的三路超声测距仪设计wifi通信proteus仿真原理图PCB

    功能介绍: 0.本系统采用STC89C52作为单片机 1.LCD1602液晶实时循环显示3路超声波探测距离,同时WIFI串口上报 2.带有WiFi模块,可与手机实现数据交互,WiFi模块型号采用是常见 ...

  8. 基于51单片机的温度甲烷监测报警串口上报proteus仿真原理图PCB

    功能介绍: 0.本系统采用STC89C52作为单片机 1.LCD1602液晶实时显示当前温度和甲烷浓度 2.超过甲烷浓度阈值,蜂鸣器报警 3.按键可更改甲烷浓度阈值上限和启动/暂停检测 4.0`20% ...

  9. 基于51单片机的水温水流量检测/智能水龙头控制系统proteus仿真原理图PCB

    功能: 0.本系统采用STC89C52作为单片机 1.液晶实时显示当前的设定温度/实际温度/水龙头状态和水流量 2.按键可开关水龙头,当温度低于设定温度时,启动加热控制继电器,给水加热, 当加热到(设 ...

最新文章

  1. golang 结构体struct 标签tag 标记 `` 简介
  2. BJFU fudq的等式
  3. 一直以为Python没有自带四舍五入的函数
  4. 09-百度ai图片识别
  5. [2017BUAA软工]结对项目:数独扩展
  6. 【转】回调函数,函数指针与函数对象
  7. jdbc写入和读取过程
  8. openstack 云_使用OpenStack打造云事业
  9. MFC开发IM-第二十篇、MFC添加自定义消息
  10. zabbix 安装(yum)
  11. Helix QAC所提供的四种抑制方式
  12. 51nod1212无向图最小生成树
  13. mysql怎么创建外表_MYSQL数据去重与外表填充
  14. 前端人眼中的大数据生态链
  15. Github 上 lux 下载神器的安装及使用教程
  16. 二维数组和二维数组名
  17. 安全课堂|关于小程序AppSecret密钥泄露漏洞官方
  18. dns改成什么网速快_简单几步DNS设置,让你手机的WiFi速度提升几倍
  19. 七天学会html5和css3之重点标签介绍(20)
  20. css怎样清除外边距,CSS 外边距

热门文章

  1. 如何扩展计算机c盘的控件,win7电脑怎么增加c盘空间 电脑增加c盘空间操作方法...
  2. 主成分分析(PCA)原理分析Python实现
  3. Ubuntu20详细安装步骤
  4. 图像处理学习 灰度图像与二值图像
  5. 原始资料的收集方法———定性资料的收集
  6. 黄建宏-redis单机服务器
  7. (转)创业靠撸不靠抽
  8. IDM下载器使用方法详解:百度网盘下载,视频会员一网打尽!
  9. Python,关于字符串间隔分割的while、for代码测试,近乎完美
  10. ImportError: /home/yang/anaconda3/envs/sar/bin/../lib/libgio-2.0.so.0: undefined symbol: g_unix_get_