收藏 分享(赏)

温湿度计程序.doc

上传人:j35w19 文档编号:12374509 上传时间:2021-12-11 格式:DOC 页数:6 大小:44KB
下载 相关 举报
温湿度计程序.doc_第1页
第1页 / 共6页
温湿度计程序.doc_第2页
第2页 / 共6页
温湿度计程序.doc_第3页
第3页 / 共6页
温湿度计程序.doc_第4页
第4页 / 共6页
温湿度计程序.doc_第5页
第5页 / 共6页
点击查看更多>>
资源描述

1、/*Project: SHTxx 驱动程序 4 位数码管移位扫描显示*/#include /Microcontroller specific library, e.g. port definitions#include /Keil library (is used for _nop()_ operation)#define uchar unsigned char#define uint unsigned int#define outdata P0 /8951mcuenum TEMP,HUMI;sbit DATA=P21;sbit SCK=P20;#define noACK 0#define A

2、CK 1#define MEASURE_TEMP 0x03 /000 0001 1#define MEASURE_HUMI 0x05 /000 0010 1#define RESET 0x1e /000 1111 0/-硬件配置-/P0 口为段码数据, P1.4, P1.5, P1.6, P0.5 分别为 1234 位数码管/=显示段码数据=uchar duanma10=0x28,0xeb,0x32,0xa2,0xe1,0xa4,0x24,0xea,0x20,0xa0;/=位控制=sbit WEI1=P27;sbit WEI2=P26;sbit WEI3=P25;sbit WEI4=P24;

3、/8951/=按键配置=/=显示缓冲区 RAM 配置=uchar buffer4=0,0,0,0;uchar wd,sd;union unsigned int i;float f;wendu,shidu;/定义两个共同体,一个用于湿度,一个用于温度/=void delayHM(uint k)/毫秒级延时子函数uint i;uchar j;for(i=0;i0;i/=2) /shift bit for masking if (i /masking value with i , write to SENSI-BUSelse DATA=0;SCK=1; /clk for SENSI-BUS_nop_

4、();_nop_();_nop_(); /pulswith approx. 5 usSCK=0;DATA=1; /release DATA-lineSCK=1; /clk #9 for ackerror=DATA; /check ack (DATA will be pulled down by SHT11)SCK=0;return error; /error=1 in case of no acknowledge/-char s_read_byte(unsigned char ack)/-/读数据;unsigned char i,val=0;DATA=1; /release DATA-line

5、for (i=0x80;i0;i/=2) /shift bit for masking SCK=1; /clk for SENSI-BUSif (DATA) val=(val | i); /read bitSCK=0;DATA=!ack; /in case of “ack=1“ pull down DATA-LineSCK=1; /clk #9 for ack_nop_();_nop_();_nop_(); /pulswith approx. 5 usSCK=0;DATA=1; /release DATA-linereturn val;/-void s_transstart(void)/-/

6、generates a transmission start/ _ _/ DATA: |_|/ _ _/ SCK : _| |_| |_DATA=1; SCK=0; /Initial state_nop_();SCK=1;_nop_();DATA=0;_nop_();SCK=0;_nop_();SCK=1;_nop_();DATA=1;_nop_();SCK=0;/-void s_connectionreset(void)/-/ /启动传输/ _ _/ DATA: |_|/ _ _ _ _ _ _ _ _ _ _ _/ SCK : _| |_| |_| |_| |_| |_| |_| |_|

7、|_| |_| |_| |_unsigned char i;DATA=1; SCK=0; /Initial statefor(i=0;i100)rh_true=100; /cut if the value is outside ofif(rh_true0.1)rh_true=0.1; /the physical possible range*p_temperature=t_C; /return temperature*p_humidity=rh_true; /return humidity%RH/-void main()/- uchar error,checksum;uint xunh;s_c

8、onnectionreset();while(1)xunh+;if(xunh=4000)xunh=0;error=0;error+=s_measure(unsigned char*) /湿度测量error+=s_measure(unsigned char*) /温度测量if(error!=0) s_connectionreset(); /如果发生错误,系统复位else shidu.f=(float)shidu.i; /转换为浮点数wendu.f=(float)wendu.i; /转换为浮点数calc_sth11( /修正相对湿度及温度sd=(char)shidu.f;wd=(char)wendu.f;buffer0=sd%10;buffer1=sd/10;buffer2=wd%10;buffer3=wd/10;led_dispy(buffer);/-led_dispy(buffer);

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 生活休闲 > 社会民生

本站链接:文库   一言   我酷   合作


客服QQ:2549714901微博号:道客多多官方知乎号:道客多多

经营许可证编号: 粤ICP备2021046453号世界地图

道客多多©版权所有2020-2025营业执照举报