SHT20温湿度传感器驱动程序

  • h0_825296
    了解作者
  • C/C++
    开发工具
  • 1.6KB
    文件大小
  • zip
    文件格式
  • 0
    收藏次数
  • VIP专享
    资源类型
  • 0
    下载次数
  • 2022-02-27 11:00
    上传日期
SHT20驱动程序,STC类单片机可通用。可以转成STM32,测试可用。
SHT20-STC12驱动.zip
  • STC12驱动程序
  • SHT.C
    3.5KB
  • SHT.H
    367B
内容介绍
#include <stc12c5a60s2.h> #include "Delay.h" #include "sht.h" #define uchar unsigned char #define uint unsigned int #define add_w 0x80 //传感器地址 + 写操作 #define add_r 0x81 //传感器地址 + 读操作 #define T_code 0xe3 //温度 测量指令 #define RH_code 0xe5 //湿度 测量指令 #define user_code_w 0xe6 //用户寄存器 写指令 #define user_code_r 0xe7 //用户寄存器 读指令,可读电池电压是否小于2.25V。(测量后才可查看) #define RST_code 0xfe //软复位,寄存器服务。 sbit sda=P1^2; //数据线 sbit scl=P1^3; //时钟线 void iic_start(void) { sda=1; delay_us(2); scl=1; delay_us(2); sda=0; delay_us(2); scl=0; delay_us(2); } void iic_stop(void) { sda=0; delay_us(2); scl=1; delay_us(2); sda=1; delay_us(2); scl=0; delay_us(2); } void ACK (void) { sda=0; delay_us(2); scl=1; delay_us(2); scl=0; delay_us(2); } void noACK (void) { scl=1; delay_us(2); sda=0; delay_us(2); } bit getACK(void) { bit ack1=0; sda=1; delay_us(2); scl=1; delay_us(2); ack1=sda; scl=0; delay_us(2); return ack1; } void send(uchar DATA) { uchar Bit_Counter=8; while(Bit_Counter>0) { sda=(bit)(DATA&0x80); DATA<<=1; scl=1; delay_us(2); scl=0; delay_us(2); Bit_Counter--; } } unsigned char Read() { unsigned char x=0,y=8; sda=1; while(y>0) { scl=1; delay_us(2); if(sda) x=x|0x01; else x=x&0xfe; scl=0; delay_us(2); if(y>1) x=x<<1; y--; } return x; } void SHT2x_init() { iic_start(); send(add_w); getACK(); send(RST_code); getACK(); iic_stop(); delay_ms(15); sda=1; scl=1; } // 2传感器用户寄存器读取 unsigned char SHT2x_user_register() { uchar register_data; iic_start(); send(add_w); getACK(); send(user_code_r); getACK(); iic_start(); send(add_r); getACK(); register_data=Read(); noACK(); iic_stop(); return register_data; } void SHT2x_Resolution() { iic_start(); send(add_w); getACK(); send(user_code_w); getACK(); send(0x3b); getACK(); getACK(); iic_stop(); } bit SHT2x_battery() { uchar battery; iic_start(); send(add_w); getACK(); send(user_code_r); getACK(); iic_start(); send(add_r); getACK(); battery=Read(); noACK(); iic_stop(); battery=(battery&0x40)>>6; return battery; } unsigned int RH_Result() { unsigned int RH_Data; unsigned long RH=0; iic_start(); send(add_w); getACK(); send(RH_code); getACK(); iic_start(); send(add_r); getACK(); delay_ms(29); RH_Data=Read(); ACK(); RH_Data=RH_Data<<8; RH_Data=RH_Data|Read(); noACK(); iic_stop(); RH_Data=RH_Data&0xfffc; RH=RH_Data*12500L; RH=RH>>16; RH=RH-600; return RH; } unsigned int T_Result() { unsigned int T_Data; unsigned long T=0; iic_start(); send(add_w); getACK(); send(T_code); getACK(); iic_start(); send(add_r); getACK(); delay_ms(85); T_Data=Read(); ACK(); T_Data=T_Data<<8; T_Data=T_Data|Read(); noACK(); iic_stop(); T_Data=T_Data&0xfffE; T=T_Data*17572L; T=T>>16; T=T-4685; return T; }
评论
    相关推荐
    • 单片机课件
      单片机的课件及例题, 单片机的课件及例题, 单片机的课件及例题, 单片机的课 件及例题,
    • 爱上单片机
      一本电子爱好者都能看懂,会边看边笑的单片机入门书籍,作者杜洋曾在《无线电》上发表过“趣味单片机制作专题”、“单片机编程魔法学校”等深受读者喜爱、让无数单片机入门者热血沸腾的系列文章。本书通过生动的语言...
    • 单片机资料
      内含30个单片机应用开发的资料,包括配套单片机入门PPT。
    • 单片机课件
      单片机课的课件,对单片机的基础进行了全面的概述,也有非常精细的指导。
    • 单片机工具
      单片机工具 供单片机学习使用 免费资源 日后还会有更多资源 请联系我
    • 单片机
      单片机c 和汇编程序
    • 单片机课件
      单片机课件 ppt文件格式 介绍了单片机的结构、程序设计、定时器、中断等
    • 单片机教程
      这是一个单片机的教程,可以用于初次学习单片机的人学习。
    • 单片机入门
      很好的单片机学习资源,入门比较好适合对单片机的学习有兴趣的人,而且是名校的精彩讲解,
    • 单片机
      利用protues仿真实现基于51单片机的大棚温湿度检测系统设计