资源简介
已通过测试,单片机能正确读取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版课后答案
相关资源
- 蓝牙连接单片机获取蓝牙模块数据
- AVR单片机驱动OV7670摄像头源代码-堪称
- 蓝牙控制单片机开关
- 原创代码,stm32f103单片机modbus485通讯
- 51单片机 PROTUES仿真大全
- MC9S12XS单片机原理及嵌入式系统开发资
- 课程设计基于单片机的八路抢答器.
- 基于MSP430F5438A的DAC904程序
- STM32F103C8T6-LED例程
- stm32解析GPS模块数据流
- avr单片机例程@天祥电子
- stm32单片机+串口通信+温度采集
- 蓝牙hc程序实现APP与单片机STM32F103的通
- 0023、基于51单片机的数字频率计设计
- 基于51单片机的自动窗帘程序和PCB
- 单片机外围电路设计攻略全
- 51单片机智能电表全部解决方案ad原理
- PID算法电机转速控制仿真截图
- STC89C52 开发板PCB电路图与配套程
- 基于DS18B20的单片机温度控制系统
- 基于单片机汇编的带时钟显示的计算
- MSP430F149原理图和封装集成库
- 多功能智能小车原理图及PCB文件
- 十天学会msp430全部程序.zip
- 基于51单片机160种例程
- 51系列单片机设计_楼然苗李光飞 第二
- stm32单片机实现心电图采样以及显示
- FPGA单片机4线spi方式驱动OLED有机屏幕
- 51单片机常用辅助开发软件合集
- 基于51单片机的高敏度电子秤设计
评论
共有 条评论