历史上的今天
返回首页

历史上的今天

今天是:2025年04月02日(星期三)

正在发生

2020年04月02日 | MSP430 Launchpad MSP430g2452 SHT10 温湿度传感器

2020-04-02 来源:eefocus

在MSP430 Launchpad MSP430g2452平台上的SHT10 温湿度传感器


//********************************File Information*******************************

//** File Name:        Sht10.c

//** Platform:         MSP430 LaunchPad MSP430G2452

//** System Function:  Sht10 Sensirion Inc driver code

//** Created by:       ding

//** Created date:     2014-09-15

//** Version:          V1.0

//******************************************************************************

//---------------------------------------

//硬件连线-接口定义:

//SCK: -->P1.5 //定义通讯时钟端口

//SDA: -->P1.6 //定义通讯数据端口

//---------------------------------------

 

#include //Library

#include //__no_operation();

//#include        //Library  

//#include       //printf();

 

//宏定义,延时函数,参数为1时相应延时分别为1us和1ms

#define CPU_F               (double)1000000

#define delay_us(x)         __delay_cycles((long)(CPU_F * (double)x/1000000.0))

#define delay_ms(x)         __delay_cycles((long)(CPU_F * (double)x/1000.0))

 

#define uint unsigned int

#define uchar unsigned char

#define ulong unsigned long

                              //adr command r/w

#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 //软复位

 

#define bitselect     0x01    //选择温度与湿度的低位读

#define noACK         0       //没有返回ACK

#define ACK           1       //返回ACK

#define HUMIDITY      2

#define TEMPERATURE   1

 

#define SCK           BIT5  //P1.5

#define SDA           BIT6  //P1.6

#define SCK_H         P1OUT|=SCK  //高

#define SCK_L         P1OUT&=~SCK //低

#define SDA_H         P1OUT|=SDA  //高

#define SDA_L         P1OUT&=~SDA //低

 

typedef union  //定义了两个共用体

unsigned int i;

float f;

}value;

 

/**********************************************************************************************************

**Function Name:      S_Init

**Description:        初始化

**Input Parameters:   no

**Output Parameters:  no

**********************************************************************************************************/

void S_Init()

{

  P1SEL&=~(SCK+SDA); 

  P1DIR|=SCK;

  P1DIR&=~SDA; 

 //BCSCTL1=(XT2OFF+RSEL2);    //关闭XT2,1MHz DOC     

 //DCOCTL=DCO2;               //设定DCO频率为1MHz

}

 

/**********************************************************************************************************

**Function Name:      S_Transstart

**Description:        start时序                   

**                    generates a transmission start 

**                          _____         ________

**                    DATA:      |_______|

**                              ___     ___

**                    SCK : ___|   |___|   |______

**********************************************************************************************************/

void S_Transstart()

{

 P1DIR|=SDA;

 SDA_H;SCK_L;

 __no_operation();

 SCK_H;

 __no_operation();

 SDA_L;

 __no_operation();

 SCK_L;

 __no_operation();

 __no_operation();

 __no_operation();

 SCK_H;

 __no_operation();

 SDA_H;

 __no_operation();

 SCK_L;

 P1DIR&=~SDA;

}

 

/**********************************************************************************************************

**Function Name:      S_WriteByte

**Description:        写函数

**********************************************************************************************************/

char S_WriteByte(unsigned char value)

// writes a byte on the Sensibus and checks the acknowledge 

unsigned char i,error=0; 

P1DIR|=SDA;

for(i=0x80;i>0;i/=2)              //shift bit for masking

    if(i&value) SDA_H;            //masking value with i , write to SENSI-BUS

    else SDA_L;                        

      SCK_H;                      //clk for SENSI-BUS

      __no_operation();__no_operation();__no_operation();//pulswith approx. 5 us 

      SCK_L;

}

SDA_H;                            //release DATA-line

P1DIR&=~SDA;                      //Change SDA to be input 0:input 1:ouput

SCK_H;                            //clk #9 for ack

error=P1IN;                       //check ack (DATA will be pulled down by SHT11)

error&=SDA;

P1DIR|=SDA;                       //Change SDA to be output 0:input 1:ouput

SCK_L;

if(error)

    return 1;                     //error=1 in case of no acknowledge

    return 0;

}

 

/**********************************************************************************************************

**Function Name:      S_ReadByte

**Description:        读函数

**Input Parameters:   ack--->reads a byte form the Sensibus and gives an acknowledge in case of "ack=1" 

**********************************************************************************************************/

char S_ReadByte(unsigned char ack)

{

// reads a byte form the Sensibus and gives an acknowledge in case of "ack=1"  

unsigned char i,val=0;

P1DIR|=SDA;                      //Change SDA to be output 0:input 1:ouput

SDA_H;                           //release DATA-line

P1DIR&=~SDA;                     //Change SDA to be input 0:input 1:ouput

for(i=0x80;i>0;i/=2)             //shift bit for masking

    SCK_H;                       //clk for SENSI-BUS

    if(P1IN&SDA)                 

      val=(val|i);               //read bit 

      SCK_L;       

}

P1DIR|=SDA;                      //Change SDA to be output 0:input 1:ouput

if(ack)                          //in case of "ack==1" pull down DATA-Line

    SDA_L;

else

    SDA_H;                         

SCK_H;                           //clk #9 for ack

__no_operation();__no_operation();__no_operation();//pulswith approx. 5 us

SCK_L;          

SDA_H;                           //release DATA-line

P1DIR&=~SDA;                     //Change SDA to be output 0:input 1:ouput

return val;

}

 

/**********************************************************************************************************

**Function Name:      S_Connectionreset

**Description:        连接复位函数

**                    communication reset: DATA-line=1 and at least 9 SCK cycles followed by transstart

**                          _____________________________________________________         ________

**                    DATA:                                                      |_______|

**                             _    _    _    _    _    _    _    _    _        ___     ___

推荐阅读

史海拾趣

Hi-Tech Resistors Pvt Ltd公司的发展小趣事

机顶盒,全称为数字视频变换盒,是现代家庭娱乐不可或缺的重要设备。从广义上讲,任何与电视机连接的网络终端设备均可视为机顶盒,它们不仅限于接收和转换电视信号,还承载着丰富的娱乐与信息服务功能。

机顶盒的核心功能在于接收并转换来自有线电缆、卫星天线、宽带网络及地面广播的数字电视信号,将其转换为电视机可识别的视频和音频流。这一转换过程确保了观众能够享受到高清乃至4K超高清的画质和震撼的音效,极大地提升了观看体验。此外,机顶盒还集成了诸如电子节目指南、因特网网页浏览等增值服务,让电视机不再仅仅是单向接收信息的设备,而是成为一个能够与用户进行互动的智能终端。

随着技术的发展,机顶盒的种类日益丰富,按主要功能可分为数字卫星机顶盒、有线电视数字机顶盒、IPTV机顶盒等。这些机顶盒不仅满足了用户多样化的观看需求,还通过连接互联网,提供了在线购物、视频点播、游戏娱乐等多元化服务。未来,随着高清、超高清技术的普及以及人工智能、云计算等技术的应用,机顶盒将向智能化、多功能化方向发展,为用户提供更加便捷、个性化的使用体验。

总之,机顶盒作为连接电视与互联网的桥梁,在丰富家庭娱乐生活、提升观看体验方面发挥着重要作用。随着技术的不断进步和市场需求的持续增长,机顶盒行业将迎来更加广阔的发展前景。

Amphenol RF公司的发展小趣事

Amphenol RF 是 Amphenol 公司的一个子公司,专注于设计、制造和销售射频连接器和组件,在电子行业中占据重要地位。以下是关于 Amphenol RF 公司发展的五个相关故事:

  1. 创立与早期发展:Amphenol RF 公司的历史可以追溯到20世纪40年代,当时被称为RF Connector Division。最初,公司主要致力于生产射频连接器和组件,为通信、航空航天、军事和工业市场提供射频连接解决方案。随着射频技术的发展和市场需求的增长,Amphenol RF 逐渐壮大成为射频连接器领域的重要参与者。

  2. 技术创新与产品多样化:Amphenol RF 公司在射频领域持续进行技术创新,并不断推出新型的射频连接器和组件产品。公司致力于提升产品的性能、可靠性和适应性,满足客户对高频射频应用的需求。除了传统的射频连接器,Amphenol RF 还推出了一系列新型产品,如微波连接器、同轴连接器、板对板连接器等,拓展了产品线的多样性。

  3. 客户合作与定制化解决方案:Amphenol RF 公司与客户建立了紧密的合作关系,共同开发定制化的射频连接器和组件解决方案。公司的工程团队与客户密切合作,根据客户的需求和应用场景,设计和制造符合特定要求的产品。这种定制化解决方案能够满足客户个性化的需求,为客户提供更加专业和完善的服务。

  4. 质量控制与认证标准:Amphenol RF 公司高度重视产品质量控制,并严格遵循国际质量管理体系标准。公司的生产工艺和质量管理体系符合ISO 9001质量管理体系认证标准,以确保产品质量的稳定性和可靠性。此外,Amphenol RF 公司的产品还通过了各种行业和应用领域的认证标准,如航空航天领域的MIL-SPEC标准等,确保产品符合行业标准和规定。

  5. 全球市场拓展与合作伙伴关系:除了在美国的生产基地外,Amphenol RF 公司还在全球范围内设有多个销售办事处和代理商网络,拓展了国际市场份额。公司与全球各种行业领先企业建立了长期稳定的合作关系,共同推动产品的创新和市场拓展。通过全球市场拓展和合作伙伴关系,Amphenol RF 公司不断扩大业务规模,增强了在射频连接器领域的市场竞争力。

这些故事展示了 Amphenol RF 公司从成立初期到如今在技术创新、产品多样化、客户合作与定制化解决方案、质量控制与认证标准以及全球市场拓展与合作伙伴关系等方面取得的重要进展。

Cicoil公司的发展小趣事

随着计算机技术的飞速发展,处理器成为了电子设备的核心部件。Cicoil公司看到了这一趋势,开始与处理器制造商展开合作。他们为处理器提供高质量的连接电缆,确保处理器能够稳定、高效地运行。这一合作使得Cicoil公司的电缆产品进一步深入到计算机领域,也为其带来了更多的商业机会。

达方(DARFON)公司的发展小趣事

为了进一步拓展市场份额,达方电子开始在全球范围内布局生产基地和研发中心。同时,公司加强了对供应链的管理,确保原材料的稳定供应和产品质量的持续提升。这一阶段的努力,使达方电子在全球电子行业中的地位得到了进一步提升。

Amptek Inc公司的发展小趣事

达方电子股份有限公司于1997年在台北市创立,初始阶段主要致力于IT周边组件的研发与生产。创始人凭借对市场趋势的敏锐洞察,决定专注于笔记本键盘的生产,并逐步在行业中崭露头角。通过不断的技术创新和产品优化,达方电子的笔记本键盘逐渐获得了市场的认可,为公司的发展奠定了坚实的基础。

Gigavac LLC公司的发展小趣事

达方电子股份有限公司于1997年在台北市创立,初始阶段主要致力于IT周边组件的研发与生产。创始人凭借对市场趋势的敏锐洞察,决定专注于笔记本键盘的生产,并逐步在行业中崭露头角。通过不断的技术创新和产品优化,达方电子的笔记本键盘逐渐获得了市场的认可,为公司的发展奠定了坚实的基础。

问答坊 | AI 解惑

电源与桥堆的接法

大家帮我看看,我画的PCB的图中,交流电跟桥堆的连接是不是错了,地端如何确定,谢谢大家了…

查看全部问答>

编写全自动洗衣机控制电路的VHDL语言程序

马上本科毕业,专业方向是信息化工程管理,但是论文题目抽到的是 编写全自动洗衣机控制电路的VHDL语言程序,没有学习过,在图书馆借书看了后感觉很复杂,由于要实习很难有时间研究. 希望论坛有 高人 能给予帮助 ,说明白我想找个人代写, 花钱是肯定的 ...…

查看全部问答>

编译后出现错误,不知道如何修改

请问为什么我用JLINK配uVision4 使用debug都失败呢? 刻录没问题!debug选在JTAG 我按RUN 让程序执行会当机他会说SWO can be used with target interface SWD模式,则我选了SW模式 在装置那里就看不见我的装置了!由于我的ev board是使用STM32F10X-128 ...…

查看全部问答>

开发机器老出现重启问题,查了很多原因。

本公司是做医疗器械的 ,无线数据的传输,成品后,机器老出现重启,不知是什么原因,请教本论坛的是否有思路解决方法,谢谢!!!…

查看全部问答>

请教 关于示波器的使用问题。

请问一下: 1、示波器通常状态上可测量的电压范围。 2、如果测量200V左右的电压,是直接测量,还是要加什么其他的探头。 谢谢大家。…

查看全部问答>

做DirectShow的哥们请进:WINCE自带的MediaPlayer窗体大小改变同时如何做到也改变了视频窗口?

做WINCE的朋友都知道DirectShow多媒体编程早已被广泛应用。。。 WINCE自带的播放器MediaPLayer也是基于DirectShow架构的播放器。当我们在WINCE平台使用鼠标,拖动MediaPlayer窗体改变大小时,发现视频图像的显示区域也在随之改变;当我们选择“Ful ...…

查看全部问答>

请教:如何只将中断向量表烧写到内部flash

我现在碰到这样一个问题, 我的系统上面没有扩展外部的ram,所以在做调试的时候,我想将中断向量表先烧写到2407内部的flash中去,然后将要调试的程序放置到内部的saram中去,便于修改和调试,但是我试了很多种方法都没有成功,如果我直接将程序分 ...…

查看全部问答>

st不见有何活动

很想了解下st的开发板,但是不见其有什么活动。…

查看全部问答>

HY-SRF05超声波测距模块程序与资料

本帖最后由 paulhyde 于 2014-9-15 03:37 编辑 自己刚弄的,可以用得,大家下把    …

查看全部问答>

回忆最初的起点+合翔微科技—供应IC

文/龙跃MCU   1、转行 没接触阿里巴巴之前,一直从事行政工作,待遇不错,工作轻松!有大把时间跟同事们开开玩笑,不痛不痒的混着日子! 朋友A是电子商务的业务,某天Q聊就跟我说:“换份有挑战性的工作吧,青春是行政这份工作的代价!” ...…

查看全部问答>