单片机+PT100+SHT11的温湿度检测系统仿真与程序源码

2020-02-14来源: 51hei关键字:单片机  PT100  SHT11  温湿度检测系统

pt100+SHT11测温仿真原理图如下

微信截图_20180517100737.png0.jpg0.png 

单片机源程序如下:

#include

#include

#include     //Keil library 

#include          //Keil library

#define unchar unsigned char 

#define unint unsigned int

#define port P1                              //LCD12864的8位数据口



typedef union                   //定义共同类型

{ unsigned int i;           //i表示测量得到的温湿度数据(int 形式保存的数据)

  unsigned char c;

float f;                           //f表示测量得到的温湿度数据(float 形式保存的数据)

} value;


/******************************************12864函数声明******************************************/

void delay_12864();                                   //延时函数

void check_busy();                                   //检查是否“忙”

江苏快三_[官网入口]void write_cmd(unchar cmd);                   //给LCD12864写命令。

void set_page(unchar page);                   //设置显示的“页”。

void set_line(unchar line);                   //设置显示的“行”。

void set_column(unchar column);           //设置显示的“列”。

void write_data(unchar dat);           //写数据。

江苏快三_[官网入口]void set_onoff(unchar onoff);           //开关屏幕函数。

void select_screen(unchar screen); //选择屏幕函数。

void clear_screen(unchar screen);  //清屏函数。

void initial();                                           //初始化LCD 12864

void hz_LCDDisp16(unchar page,unchar column, unchar code *hzk,unchar num);        //显示函数。

void print_SHT11_temp();           //显示输出SHT11的温度

void print_SHT11_humi();                   //显示输出SHT11的湿度

void print_PT100_temp();                   //显示输出PT100的温度

void delay(int z);                           //z为毫秒数延时

/*******************************12864的端口定义、文字库**********************************/

//首先要选择“读,写”是对与谁。以人来说,读是LCD12864来读取人的指令或数据。写是给人写。

sbit rs=P2^0;                                  //rs=1时,为读写数据。rs=0时,为读写指令。

江苏快三_[官网入口]sbit rw=P2^1;                                  //rw=1时,为读数据(指令)。rw=0时,为写数据(指令)。(以人来说。)

江苏快三_[官网入口]sbit en=P2^2;                                  //使能信号。

sbit cs1=P2^3;                                  //片选信号,0时选中左半屏。 

sbit cs2=P2^4;                                  //片选信号,0时选中右半屏。 

char code hz_wen[]=   //温

{

0x10,0x60,0x02,0x8C,0x00,0x00,0xFE,0x92,0x92,0x92,0x92,0x92,0xFE,0x00,0x00,0x00,

0x04,0x04,0x7E,0x01,0x40,0x7E,0x42,0x42,0x7E,0x42,0x7E,0x42,0x42,0x7E,0x40,0x00

};                                         //度

char code hz_du[]= 

{

0x00,0x00,0xFC,0x24,0x24,0x24,0xFC,0x25,0x26,0x24,0xFC,0x24,0x24,0x24,0x04,0x00,

0x40,0x30,0x8F,0x80,0x84,0x4C,0x55,0x25,0x25,0x25,0x55,0x4C,0x80,0x80,0x80,0x00

};

char code hz_shi[]=         //湿

{

0x10,0x60,0x02,0x8C,0x00,0xFE,0x92,0x92,0x92,0x92,0x92,0x92,0xFE,0x00,0x00,0x00,

0x04,0x04,0x7E,0x01,0x44,0x48,0x50,0x7F,0x40,0x40,0x7F,0x50,0x48,0x44,0x40,0x00

};

char code maohao[]=                //:

{

0x00,0x00,0x00,0xC0,0xC0,0x00,0x00,0x00,0x00,0x00,0x00,0x30,0x30,0x00,0x00,0x00

};

char code dian[]=                //.

{

0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x30,0x30,0x00,0x00,0x00,0x00,0x00

};

char code wenduhao[]=   //℃

{

0x06,0x09,0x09,0xE6,0xF8,0x0C,0x04,0x02,0x02,0x02,0x02,0x02,0x04,0x1E,0x00,0x00,

0x00,0x00,0x00,0x07,0x1F,0x30,0x20,0x40,0x40,0x40,0x40,0x40,0x20,0x10,0x00,0x00

};

char code baifenhao[]=        //%

{

0xF0,0x08,0xF0,0x00,0xE0,0x18,0x00,0x00,0x00,0x21,0x1C,0x03,0x1E,0x21,0x1E,0x00

};

char code fuhao[]=      //- 负号

{

0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x01,0x01,0x01,0x01,0x01,0x01

};

char code kongbai[]=        //空白

{

0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00

};

char code zero[]=      //0

{

0x00,0xE0,0x10,0x08,0x08,0x10,0xE0,0x00,0x00,0x0F,0x10,0x20,0x20,0x10,0x0F,0x00

};

char code one[]=       //1

{

0x00,0x10,0x10,0xF8,0x00,0x00,0x00,0x00,0x00,0x20,0x20,0x3F,0x20,0x20,0x00,0x00

};

char code two[]=       //2

{

0x00,0x70,0x08,0x08,0x08,0x88,0x70,0x00,0x00,0x30,0x28,0x24,0x22,0x21,0x30,0x00

};

char code there[]=     //3

{

0x00,0x30,0x08,0x88,0x88,0x48,0x30,0x00,0x00,0x18,0x20,0x20,0x20,0x11,0x0E,0x00

};

char code four[]=       //4

{

0x00,0x00,0xC0,0x20,0x10,0xF8,0x00,0x00,0x00,0x07,0x04,0x24,0x24,0x3F,0x24,0x00

};

char code five[]=       //5

{

0x00,0xF8,0x08,0x88,0x88,0x08,0x08,0x00,0x00,0x19,0x21,0x20,0x20,0x11,0x0E,0x00

};

char code six[]=        //6

{

0x00,0xE0,0x10,0x88,0x88,0x18,0x00,0x00,0x00,0x0F,0x11,0x20,0x20,0x11,0x0E,0x00

};

char code seven[]=      //7

{

0x00,0x38,0x08,0x08,0xC8,0x38,0x08,0x00,0x00,0x00,0x00,0x3F,0x00,0x00,0x00,0x00

};

char code eight[]=      //8

{

0x00,0x70,0x88,0x08,0x08,0x88,0x70,0x00,0x00,0x1C,0x22,0x21,0x21,0x22,0x1C,0x00

};

char code nine[]=       //9

{

0x00,0xE0,0x10,0x08,0x08,0x10,0xE0,0x00,0x00,0x00,0x31,0x22,0x22,0x11,0x0F,0x00

};

/******************************************PCF8591函数声明******************************************/

void delay_6us();               //6us延迟函数

void pcf8591_start();                        //启动信号函数

void pcf8591_stop();                        //停止信号函数

void pcf8591_ack();                                //应答信号函数

void pcf8591_noack();                         //非应答信号函数

void pcf8591_write(unchar cmd);        //单片机给pcf8591发送指令数据。

char pcf8591_read();                        //单片机读取pcf8591发来的数据

void pcf8591_process();                        //pcf8591把模拟量转换成数字量并进行显示

/******************************************PCF8591定义**********************************************/

sbit scl_pcf8591=P2^6;

sbit sda_pcf8591=P2^7;

unsigned char pt100_temp[4];

/******************************************SHT11函数声明******************************************/

void sht11_delay();                                //SHT11延迟函数

void sht11_start();                                //SHT11的启动传输函数

char sht11_read(unchar ack) ;        //单片机读取SHT11发来的数据

char sht11_write(unchar cmd);        //单片机给SHT11发送指令数据。

void sht11_restart();                        //SHT11“通信复位”

char s_measure(unsigned char *p_value, unsigned char mode);//SHT11温湿度测量

void zhuanhuan_sth11(float *p_shidu ,float *p_wendu);      //温湿度值转换及修正

void sht11_process();                        //SHT11数据处理及显示

/******************************************SHT11定义**********************************************/

#define ACK   0             //结束数据传输;

#define NoACK 1                                //继续通信

                                                          //地址  命令  读/写

#define ce_liang_wendu 0x03   //000   0001    1

#define ce_liang_shidu

[1] [2] [3] [4] [5] [6]
关键字:单片机  PT100  SHT11  温湿度检测系统 编辑:什么鱼 引用地址:http://news.0830abc.com/mcu/ic488281.html 江苏快三_[官网入口]本网站转载的所有的文章、图片、音频视频文件等资料的版权归版权所有人所有,本站采用的非本站原创文章及图片等内容无法一一联系确认版权者。江苏快三_[官网入口]如果本网所选内容的文章作者及编辑认为其作品不宜公开自由传播,或不应无偿使用,请及时通过电子邮件或电话通知我们,以迅速采取适当措施,避免给双方造成不必要的经济损失。

上一篇:基于51单片机的光驱激光雕刻机源程序电路图+上位机
下一篇:51单片机LED点阵上移程序!(汇编)

关注eeworld公众号 快捷获取更多信息
关注eeworld公众号
快捷获取更多信息
关注eeworld服务号 享受更多官方福利
关注eeworld服务号
享受更多官方福利

推荐阅读

基于52单片机控制编码器显示程序
#include "reg52.h"    #define uchar unsigned char#define uint unsigned int#define LCD1602_DATAPINS P0sbit LCD1602_E=P2^7;sbit LCD1602_RW=P2^5;sbit LCD1602_RS=P2^6;sbit DIR=P1^0;sbit STEP=P1^1;sbit K1=P3^1;sbit K2=P3^0;typedef unsigned int u16;   //对数据类型进行声明定义typedef unsigned char
发表于 2020-02-08
单片机步进电机转速控制程序(速度LED显示)
单片机源程序如下://数码管位 高位-----低位//四个按键控制步进电机:正转,反转,加1,减1//上电时电机启动,数码管上显示速度最小档1,加减档位均能通过数码管显示出来,电机采用单双八拍方式//电机转速一共10档,通过按键调节转速 //电机正转时最高位数码管显示0,反转时显示1  #include<reg51.h>#define uchar unsigned char#define uint unsigned int#define led P0//数码管段选#define haha P2sbit s1 = P1^0;sbit s2 = P1^1;sbit s3 = P3^0;sbit
发表于 2020-02-08
单片机步进电机转速控制程序(速度LED显示)
STC单片机+DM134实现LED多段控制
 单片机源程序如下://============================================================================//================翼芯科技 LED流星灯8段16段==软件生成生成数据=================//============================================================================   //  此源码版权属 翼芯科技 全权享有,如欲引用,敬请署名并告知//         
发表于 2020-02-08
STC单片机+DM134实现LED多段控制
基于51单片机的数字电容测量仪设计
江苏快三_[官网入口]本设计详细介绍了一种基于单片机的数字式电容测量仪设计方案及实现方法。设计的主要方法是采用555芯片构成单稳态触发器,将电容容量转换为脉冲宽度。通过单片机的计时器测量脉宽, 根据已知的R值,通过单片机的运算功能,计算出电容容量,最后,再通过单片机的普通I/O口控制液晶屏显示出电容容量的计算结果。系统的测量范围为10pF~ 500uF, 具有多个量程,可根据用户需要由用户选择,与用户的交互是通过键盘实现,不同量程的实现是通过单片机的I/O口控制继电器的吸合与断开来选择不同的R值,从而实现不同的量程。同时,本设计注重设计方法及流程,首先根据原理设计电路,再通过protues仿真,利用keil编程,进而借助altium designer
发表于 2020-02-08
基于51单片机的数字电容测量仪设计
基于51单片机的pwm直流电机调速
仿真原理图如下单片机源程序如下:#include <reg52.h>/********************************************** 定时器初值*********************************************/#define T0HIGH        0xec#define T0LOWW        0x8a
发表于 2020-02-08
基于51单片机的pwm直流电机调速
手把手教你单片机串口通信-基础篇
1的个数之和应为偶数。接收字符时,对1的个数进行校验,若字符不一致,则说明传输数据过程中出现错误。代码和校验发送方将所发数据块求和(或各字节异或),产生一个字节的校验字符(校验和)附加到数据块末尾。接收方接收数据时,同时对数据块(除校验字节外)求和(或各字节异或),将所得的结果与发送方的“校验和”进行比较,一致则无差。循环冗余校验通过某种数学预算实现有效信息与校验位之间的循环校验,常用语对磁盘信息的传输、存储区的完整性校验。串口的基本结构SBUF:51单片机中的特殊寄存器,串行数据缓冲器(一个接收一个发送),两个其实是共用的一个地址99H,但是两个在物理上面是分开的。当发送使用时,就采用SBUF=XXX;  
发表于 2020-02-08
手把手教你单片机串口通信-基础篇
小广播
何立民专栏 单片机及嵌入式宝典

北京航空航天大学教授,20余年来致力于单片机与嵌入式系统推广工作。

电子工程世界版权所有 京ICP证060456号 京ICP备10001474号 电信业务审批[2006]字第258号函 京公海网安备110108001534 Copyright © 2005-2020 0830abc.com, Inc. All rights reserved

页面底部区域 foot.htm