资源简介
已通过测试,单片机能正确读取sht30温湿度数据,程序实现sht30周期模式下读取数据,逻辑清晰,方便移植。已运用到项目中。

代码片段和文件信息
/*
编译版本:IAR FOR MSP430 V5.10
MCU:MSP430F5438
注:模拟IIC,单片机可正常读取sht30温湿度数据;程序仅仅测试了周期模式下读取数据;
其他模式请参见sht30数据手册时序图,自行修改。
*/
#include
#include
#include
/*宏定义,延时函数,参数为1时相应延时分别为1us和1ms*/
#define CPU_F ((double)16000000)
#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))
typedef unsigned char uchar;
typedef unsigned int uint;
typedef unsigned short ushort;
typedef unsigned long ulong;
typedef uchar u8;
typedef uint u16;
typedef ulong u32;
void IIC_Init(void);
void IIC_Start(void);
void IIC_Stop(void);
void IIC_Ack(void);
void IIC_NAck(void);
void IIC_Send_Byte(u8 data);
u8 IIC_Wait_Ack(void );
#define SHT30W 0x88 //SHT30器件地址+写操作使能
#define SHT30R 0x89 //SHT30器件地址+读操作使能
#define SDA_OUT (P4DIR |= BIT1) //p4.1---SDA
#define SDA_IN (P4DIR &=~BIT1)
#define SDA_1 (P4OUT |= BIT1)
#define SDA_0 (P4OUT &=~BIT1)
#define SDA_INPUT P4IN
#define SDA BIT1
#define SCL_1 (P4OUT |= BIT2) //p4.2---SCL
#define SCL_0 (P4OUT &=~BIT2)
#define SCL_IN (P4DIR &=~BIT2)
#define SCL_OUT (P4DIR |= BIT2)
u8 BUFt[6]={0};
u16 temp=0humi=0;
float tem=0.0;
float hum=0.0;
//时钟初始化
void Sysclk_Init(void)
{
//1、时钟初始化,这里你开发板使用的8mhz晶振
P5SEL |= BIT2+BIT3; //XT2端口选择 0000 1100
UCSCTL6 &= ~XT2OFF; //使能XT2=8MHZ
UCSCTL3 |= SELREF_2; //FLL模块的参考时钟源选择REFO
UCSCTL4 |= SELA_5; //ACLK = XT2 = 8MHZ
//测试晶振是否产生故障失效,并清除故障失效标志
do
{
UCSCTL7 &= ~(XT2OFFG + XT1LFOFFG + XT1HFOFFG + DCOFFG); //清除XT2、XT1、DCO故障失效标志位
SFRIFG1 &= ~OFIFG; //清除晶振故障失效中断标志位
}while(SFRIFG1&OFIFG); //测试晶振故障失效中断标志位
UCSCTL6 &= ~XT2DRIVE0; //减少XT2驱动能力,降低功耗
UCSCTL4 |= SELS_5 + SELM_5 +SELA_5; //SMCLK = MCLK = ACLK = XT2 = 8MHZ
//ACLK8分频、SMCLK8分频、MCLK不分频
UCSCTL5 = DIVA__16 + DIVS__16; //所以初始化完成后系统时钟:ACLK=SMCLK=1MHZ;MCLK=8MHZ
}
//端口初始化
void IIC_Init(void)
{
SCL_OUT; //SCL管脚为输出
SDA_OUT; //SDA管脚为输出
SCL_1;
SDA_1;
}
//开始条件
void IIC_Start(void) //scl为高电平期间sda产生一个下降沿
{
SDA_OUT; //sda线输出
SDA_1;
SCL_1;
delay_us(20);
SDA_0; //START:when CLK is highDATA change form high to low
delay_us(20);
SCL_0; //钳住I2C总线,准备发送或接收数据
delay_us(20);
}
//停
属性 大小 日期 时间 名称
----------- --------- ---------- ----- ----
文件 924309 2018-08-08 09:18 msp430f5438模拟iic读取sht30\SHT3x_DIS.pdf
文件 530766 2018-08-01 11:58 msp430f5438模拟iic读取sht30\SHT3x_Sample_Code.pdf
文件 7169 2018-08-08 16:50 msp430f5438模拟iic读取sht30\test_sht30.c
目录 0 2018-08-08 16:52 msp430f5438模拟iic读取sht30\
- 上一篇:HYPODD(双差地震定位
- 下一篇:电路与模拟电子技术基础第2版课后答案
相关资源
- STC8951系列单片机中方指南
- IAR for MSP430 v7.10.1 注册机
- 基于MCS_51单片机的工业屏柜散热方案
- MCS_51单片机与8255A的接口设计
- 基于MSP430G2553的蓝牙控制小车
- 飞思卡尔单片机MC9S12XS12G128驱动(硬件
- 51单片机PWM程序,占空比、周期可调整
- 单片机和adc0809数字电压表
- PIC单片机完成的电子密码锁
- 单片机、ADC0808809设计简易数字电压表
- 51单片机多功能自行车测速仪
- 利用DS1302和msp430进行闹钟和万年历的
- 单片机做的6位时分秒数字钟
- 单片机电子时钟 闹钟 日历
- 音乐代码转换软件 单片机编程时用
- 单片机课程设计 篮球计分器
- 00
- 用51单片机实现G代码翻译
- 简易的电阻电容测量电路
- 单片机与温度传感器DS18B20的程序设计
- 51单片机基于protues的几个仿真实例
- 基于52单片机的直流电压测量
- msp430F149操作红外接收模块源码
- 38k单片机红外发送代码、keil
- 51单片机PCB设计图
- PC -- 单片机的串口数据传输系统设计
- 51单片机控制舵机程序
- [免费]msp430f149控制PS2键盘并用1602显示
- 武汉理工大学 单片机课程设计 16*16点
- 51单片机读取温度数据存储到SD卡中并
评论
共有 条评论