max31865C语言程序,pt100+max31865温度传感器通信驱动stc52代码
时间: 2023-08-10 12:06:03 浏览: 96
以下是pt100+max31865温度传感器通信驱动的C语言程序,用于STC52单片机:
```
//头文件
#include<reg52.h>
#include<intrins.h>
//定义IO口
sbit SCK=P3^6;
sbit CS=P3^7;
sbit SO=P3^5;
//函数声明
void delay_us(unsigned int us);
void delay_ms(unsigned int ms);
void MAX31865_Write_Byte(unsigned char byte);
unsigned char MAX31865_Read_Byte(void);
void MAX31865_Init(void);
float MAX31865_Read_Temperature(void);
float PT100_Read_Temperature(unsigned int adc_value);
//延时函数
void delay_us(unsigned int us)
{
while(us--)
{
_nop_();
_nop_();
}
}
void delay_ms(unsigned int ms)
{
while(ms--)
{
delay_us(1000);
}
}
//写入一个字节数据
void MAX31865_Write_Byte(unsigned char byte)
{
unsigned char i;
for(i=0;i<8;i++)
{
SCK=0;
if(byte&0x80)
{
SO=1;
}
else
{
SO=0;
}
SCK=1;
byte<<=1;
}
}
//读取一个字节数据
unsigned char MAX31865_Read_Byte(void)
{
unsigned char i,byte=0;
for(i=0;i<8;i++)
{
byte<<=1;
SCK=0;
byte|=SO;
SCK=1;
}
return byte;
}
//初始化
void MAX31865_Init(void)
{
CS=1;
MAX31865_Write_Byte(0x80);
MAX31865_Write_Byte(0x00);
MAX31865_Write_Byte(0x88);
}
//读取温度
float MAX31865_Read_Temperature(void)
{
unsigned int temp;
float temperature;
CS=0;
MAX31865_Write_Byte(0x01);
temp=(MAX31865_Read_Byte()<<8);
temp|=MAX31865_Read_Byte();
CS=1;
temp>>=2;
if(temp&0x2000)
{
temp|=0xC000;
}
temperature=temp*0.25;
return temperature;
}
//读取PT100温度
float PT100_Read_Temperature(unsigned int adc_value)
{
float r=adc_value*2.5/4096/(1.0/1000);
float temperature=(r-100)/0.385;
return temperature;
}
//主函数
void main(void)
{
float temperature,max31865_temperature;
unsigned int adc_value;
MAX31865_Init();
while(1)
{
max31865_temperature=MAX31865_Read_Temperature();
//TODO: 将max31865_temperature值进行处理
adc_value=/*TODO: 读取PT100传感器的ADC值*/;
temperature=PT100_Read_Temperature(adc_value);
//TODO: 将temperature值进行处理
delay_ms(1000);
}
}
```
需要注意的是,此程序中的延时函数是基于STC52单片机的内部晶振频率计算得出的,如果使用其他型号的单片机需要进行相应的修改。同时,需要根据实际情况对代码进行适当的调整和修改。
阅读全文