历史上的今天
今天是:2025年02月14日(星期五)
2020年02月14日 | 单片机+PT100+SHT11的温湿度检测系统仿真与程序源码
2020-02-14 来源:51hei
pt100+SHT11测温仿真原理图如下

单片机源程序如下:
#include #include #include #include #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 0x05 //000 0010 1 #define RESET 0x1e //000 1111 0 sbit sht11_scl=P3^0; sbit sht11_sda=P3^1; char temp_print[7]; //用于记录温度 unsigned char humi_print[7]; //用于记录湿度 /******************************************SHT11程序部分******************************************/ /*SHT11延迟函数*/ void sht11_delay() { _nop_(); _nop_(); _nop_(); } /*SHT11的启动传输函数*/ void sht11_start() { sht11_sda=1; sht11_scl=0; //预先准备好开始。
史海拾趣
|
9. TI协议栈所用系统框架探讨。 51的系统往往不是太大,但是几十K的程序,也足以让一个初学者望而却步。我们首先忽略C语言本身的难度,光是系统框架也让生手读起来很吃力,再加上这种到处是API跟\"define\"的程序,还没有正式学习协议部分就已经让 ...… 查看全部问答> |
|
问题是这样的:从CPU过来的数据总线,接到FPGA了,FPGA后面又接了一个CPLD,等于说,FPGA既要将数据总线自己用,又要输出给CPLD用,该怎么实现了? 难题是数据总向是双向的不好办! 因为两片FPGA之间的连线资源较多,把它们之间的数据总结分为送 ...… 查看全部问答> |
|
从CWnd继承一个类CInputInfoWnd,在CInputInfoWnd用Create动态创建Edit控件m_editTest,此Edit控件上可以看到输入光标,但不能输入任何东西?… 查看全部问答> |
|
msp430bsl为什么在64位window7旗舰版上的驱动安装了不好使 为什么64位window7旗舰版安装了msp430bsl不好使,别人在别的系统上和我的步骤一样都没出现这样的情况,菜鸟在这里向大虾求救,装了两天了,… 查看全部问答> |




