基于51单片机的温湿度光强二氧化碳气体家庭环境检测proteus仿真
硬件设计
仿真图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仿真相关推荐
- 【033】基于51单片机的步进电机角度测量与速度设定Proteus仿真设计
一.压缩包资料内容 (1).基于51单片机的步进电机角度测量与速度设定proteus仿真设计一份: (2).基于51单片机的步进电机角度测量与速度设定proteus仿真设计keli源代码一份: (3) ...
- 1430基于51单片机的管道压力检测及泄漏检测Proteus仿真
[前言] hello 大家好,今天给大家讲一讲基于51单片机的管道压力检测及泄漏检测Proteus仿真. 该项目的功能如下: 1.LCD1602液晶实时显示当前始端和末端压力,压力阈值 2.按键启动/ ...
- 基于51单片机CO一氧化碳可燃气体浓度检测超限报警Proteus仿真
资料编号:160 下面是相关功能视频演示: 160-基于51单片机CO一氧化碳可燃气体浓度检测超限报警Proteus仿真(源码+仿真+全套资料) 功能介绍: 采用51单片机作为CPU,ADC083 ...
- 基于51单片机的智能冰箱鱼缸淬火炉温度控制系统proteus仿真
今天讲解一个温度控制系统的设计,温度控制系统我们在家庭冰箱.鱼缸或者工厂的淬火炉中常常见到,原理其实不复杂:通过人机交互设置好温度的工作范围,外设具有降温和升温设备,当环境温度高于预设温度值,降温设备 ...
- 基于51单片机八路抢答器课程设计(含proteus仿真图及代码)
一.设计要求: 1.可满足8个选手的抢答 2.具有主持者控制开关,用来控制系统清零和抢答开始 3.抢答器具有数据锁存功能.显示功能和声音提示功能 4.抢答开始后,若有选手按动抢答器按钮,编号立即锁存, ...
- 基于51单片机的数字电容容值测量仪proteus仿真原理图PCB
功能介绍: 0.本系统采用STC89C52作为单片机 1.系统支持15pF~450uF电容测量 2.按键可更改测量量程 3.除了采用LCD1602可以实时显示测量参数,同时具有LED可以显示各个档位 ...
- 基于51单片机的三路超声测距仪设计wifi通信proteus仿真原理图PCB
功能介绍: 0.本系统采用STC89C52作为单片机 1.LCD1602液晶实时循环显示3路超声波探测距离,同时WIFI串口上报 2.带有WiFi模块,可与手机实现数据交互,WiFi模块型号采用是常见 ...
- 基于51单片机的温度甲烷监测报警串口上报proteus仿真原理图PCB
功能介绍: 0.本系统采用STC89C52作为单片机 1.LCD1602液晶实时显示当前温度和甲烷浓度 2.超过甲烷浓度阈值,蜂鸣器报警 3.按键可更改甲烷浓度阈值上限和启动/暂停检测 4.0`20% ...
- 基于51单片机的水温水流量检测/智能水龙头控制系统proteus仿真原理图PCB
功能: 0.本系统采用STC89C52作为单片机 1.液晶实时显示当前的设定温度/实际温度/水龙头状态和水流量 2.按键可开关水龙头,当温度低于设定温度时,启动加热控制继电器,给水加热, 当加热到(设 ...
最新文章
- golang 结构体struct 标签tag 标记 `` 简介
- BJFU fudq的等式
- 一直以为Python没有自带四舍五入的函数
- 09-百度ai图片识别
- [2017BUAA软工]结对项目:数独扩展
- 【转】回调函数,函数指针与函数对象
- jdbc写入和读取过程
- openstack 云_使用OpenStack打造云事业
- MFC开发IM-第二十篇、MFC添加自定义消息
- zabbix 安装(yum)
- Helix QAC所提供的四种抑制方式
- 51nod1212无向图最小生成树
- mysql怎么创建外表_MYSQL数据去重与外表填充
- 前端人眼中的大数据生态链
- Github 上 lux 下载神器的安装及使用教程
- 二维数组和二维数组名
- 安全课堂|关于小程序AppSecret密钥泄露漏洞官方
- dns改成什么网速快_简单几步DNS设置,让你手机的WiFi速度提升几倍
- 七天学会html5和css3之重点标签介绍(20)
- css怎样清除外边距,CSS 外边距
热门文章
- 如何扩展计算机c盘的控件,win7电脑怎么增加c盘空间 电脑增加c盘空间操作方法...
- 主成分分析(PCA)原理分析Python实现
- Ubuntu20详细安装步骤
- 图像处理学习 灰度图像与二值图像
- 原始资料的收集方法———定性资料的收集
- 黄建宏-redis单机服务器
- (转)创业靠撸不靠抽
- IDM下载器使用方法详解:百度网盘下载,视频会员一网打尽!
- Python,关于字符串间隔分割的while、for代码测试,近乎完美
- ImportError: /home/yang/anaconda3/envs/sar/bin/../lib/libgio-2.0.so.0: undefined symbol: g_unix_get_