1-基于51单片机PT100温度检测LCD1602显示源程序、原理图、PCB、Proteus仿真和实物制作

功能介绍:采用51单片机和MAX13865模块+PT100传感器+LCD1602显示屏,通过PT100传感器感知稳定,MAX13865模块进行转换,采用SPI协议和单片机进行通信,将温度传送到单片机,然后单片机将数据显示到LCD1602屏幕上。下面是相关资料的介绍:文末有资料分享

1-基于51单片机PT100铂电阻温度检测LCD1602显示(程序+原理图+PCB+仿真+全套资料)

程序部分展示,有中文注释,新手容易看懂

unsigned char SPI_ReadWriteByte(unsigned char byte)
{	
	uint8_t i; 
	uint8_t Temp=0x00;
	unsigned char SDI; 
	
    for (i = 0; i < 8; i++)
    {
		MAX31865_SCK_LOW;//SCLK = 0; 拉低时钟
		if (byte&0x80)      
		{
			MAX31865_MOSI_HIGH; //SO=1 
		}
		else
		{
			MAX31865_MOSI_LOW;//SO=0
		}
		byte <<= 1; 
		
		MAX31865_SCK_HIGH;//SCLK = 1;//先将时钟拉高
			
		SDI = READ_MAX31865_MISO;//判断si是否有输入
		Temp<<=1;
		if(SDI)       //读到1时
		{
			Temp++;  //置1  即向右移动一位同时加1   因上边有<<=1
		}
	}
	return Temp; //返回读到miso输入的值 
}

//初始化max31865 的IO口
void max31865_init(void)
{	   		                //初始化SPI1
	writeRegister8(0x00, 0x00);                 //清除配置寄存器
	enableBias(1);                              //使能偏置电压
	delay_ms(10);                               //等待10ms使得RTDIN的滤波电容充电
	setWires(MAX31865_3WIRE);                   //使能PT100 三线工作模式
	clearFault();                               //清除故障检测位
	
}  

//RTD接线模式设置
void setWires(max31865_numwires_t wires)
{
  uint8_t t = readRegister8(MAX31856_CONFIG_REG);
  if (wires == MAX31865_3WIRE) {
    t |= MAX31856_CONFIG_3WIRE;
  } else {
    // 2 or 4 wire
    t &= ~MAX31856_CONFIG_3WIRE;
  }
  writeRegister8(MAX31856_CONFIG_REG, t);
}

//设置自动转换模式
void autoConvert(unsigned char b)  
{
  uint8_t t = readRegister8(MAX31856_CONFIG_REG);
  if (b) {
   	  t |= MAX31856_CONFIG_MODEAUTO;       // enable autoconvert
  } else {
    t &= ~MAX31856_CONFIG_MODEAUTO;       // disable autoconvert
  }
  writeRegister8(MAX31856_CONFIG_REG, t);
}

 //使能偏执电压
void enableBias(unsigned char b) 
{
  uint8_t t = readRegister8(MAX31856_CONFIG_REG);
  if (b) {
    t |= MAX31856_CONFIG_BIAS;       // enable bias
  } else {
    t &= ~MAX31856_CONFIG_BIAS;       // disable bias
  }
  writeRegister8(MAX31856_CONFIG_REG, t);
}	

//读寄存器,8位
u8  readRegister8(u8 addr) 
{
  uint8_t ret = 0;
  addr &= 0x7F;                      // make sure top bit is set to 1
  MAX31865_CS_LOW; 
  delay_us(100);
  SPI_ReadWriteByte(addr);  //发送写取状态寄存器命令    
  ret = SPI_ReadWriteByte(0xff);   //写入一个字节  
  delay_us(100);
  MAX31865_CS_HIGH;                   //取消片选      
  return ret;
}

下面是Proteus仿真:

下面是AD版本的原理图和PCB

 百度云盘资料下载链接

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值