STH10_C编程实例.doc

  1. 1、本文档共10页,可阅读全部内容。
  2. 2、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
STH10_C编程实例

这是我自己写的SHT10的程序,SHT1X系列的都适用。 几点说明: 主要是分以下几个模块写的:SHT10,LCD1602,主函数,头文件。 每支SHTxx传感器都在25℃(77 °F)和 3.3V条件下进行过标定并且完全符合精度指标.因为考虑到实际硬件5V的电压比较好操作,所以SHT10用的精度采用的为5V时的参数。其他的都采取默认值(14bit湿度 , 12bit 温度)。 SHT10中所以部分我都编写了。有的部分在本次程序中没用到,也可以作为参考。 所有程序都已经加了注释,且有仿真图。 个人认为还可以在此基础上添加个中断。 程序编写keil 4 ,仿真 protues7.5 /***********************************************************************************************************************************************************/ 头文件(tou.h): #ifndef __TOU_H__ #define __TOU_H__ #includereg52.h #include intrins.h //#include math.h //Keil library #define uchar unsigned char enum {TEMP,HUMI}; sbit DATA = P1^7; sbit SCK = P1^6; sbit LcdRs = P2^4; sbit LcdRw = P2^5; sbit LcdEn = P2^6; sfr DBPort = 0x80; //P0=0x80,P1=0x90,P2=0xA0,P3=0xB0.数据端口 /******** DS1602函数声明 ********/ void LCD_Initial(); void GotoXY(unsigned char x, unsigned char y); void Print(unsigned char *str); void LCD_Write(bit style, unsigned char input); /******** SHT10函数声明 ********/ void s_connectionreset(void); char s_measure(unsigned char *p_value, unsigned char *p_checksum, unsigned char mode); void calc_sth10(float *p_humidity ,float *p_temperature); //float calc_dewpoint(float h,float t); #endif /***********************************************************************************************************************************************************/ SHT10程序(SHT10.c): #includetou.h #define noACK 0 //继续传输数据,用于判断是否结束通讯 #define ACK 1 //结束数据传输; //地址 命令 读/写 #define STATUS_REG_W 0x06 //000 0011 0 #define STATUS_REG_R 0x07 //000 0011 1 #define MEASURE_TEMP 0x03 //000 0001 1 #define MEASURE_HUMI 0x05 //000 0010 1 #define RESET 0x1e //000 1111 0 //写字节程序 char s_write_byte(unsigned char value) { unsigned char i,error=0; for (i=0x80;i0;i=1) //高位为1,循环右移 { if (ivalue) DATA=1; //和要发送的数相与,结果为发送的位 else DATA=0;

文档评论(0)

sd44055 + 关注
实名认证
内容提供者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档