PT100+tl431+lm358

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
以下是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单片机的内部晶振频率计算得出的,如果使用其他型号的单片机需要进行相应的修改。同时,需要根据实际情况对代码进行适当的调整和修改。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值