《电子DIY》之使用arduino驱动MAX6675热电偶测温(实物制作)(Proteus仿真)(直接使用软件模拟SPI)

一,MAX6675热电偶介绍

见此链接
MAX6675

二,Arduino仿真MAX6675
Arduino的仿真配置见此链接
Arduino在Proteus上的仿真配置

Proteus上MAX6675及热电偶元件号:
在英文状态下按下‘’P“ 键,输入MAX6675,如下图:
在这里插入图片描述
输入TCK 找到K型热电偶
在这里插入图片描述
绘制好的整体电路图如下图:
在这里插入图片描述

三,编程过程:
1,打开arduino IDE软件
2,加载MAX6675库
(1)选择菜单栏 -> 工具 ->管理库…
在这里插入图片描述
(2)输入max6675,下载安装库
在这里插入图片描述
3,新建工程文件,包含max6675头文件,编写程序
4,生成.HEX文件
在file选择preferences中勾选编译按钮即可生成.HEX文件
在这里插入图片描述
具体生成的.HEX在哪个位置,可以通过以下界面进行查找:
在这里插入图片描述
5,在Proteus中加载.HEX文件
6,仿真

仿真效果图:

在这里插入图片描述

四,arduino实物图

在这里插入图片描述

五,实物效果图:

在这里插入图片描述

六,实物图整体

在这里插入图片描述

七,程序源码:

此次程序并没有使用官网提供的MAX6675官网库,而是直接通过定义相关引脚利用程序模拟SPI采集程序
程序源码:

#define SCK 6
#define CS  7
#define SO  5
typedef struct __MAX6675
{
  int temperature;
  float finallyDat;
  char displaydat[4];
  char flag;
}MAX6675;
MAX6675 max6675={0,0.0,0};
void MAX6675_ReadData(void)
{ 
  char i=0;   
  int dat=0;    
  digitalWrite(CS,LOW);
  digitalWrite(SCK,LOW);
  for(i=0;i<16;i++)   
  {      
    digitalWrite(SCK,HIGH); 
    dat=dat<<1;    
    if(digitalRead(SO))   
      dat=dat|0x01;   
    digitalWrite(SCK,LOW); 
  }  
  digitalWrite(CS,HIGH);
  max6675.temperature=dat;
  max6675.temperature>>=3;//读出来的数据的D3~D14是温度值
  max6675.temperature&=~(0xf<<12);
  max6675.finallyDat=max6675.temperature*0.25;     
} 
//只运行一次,用于初始化IO口等
void setup() {
  Serial.begin(9600);
  pinMode(SO,INPUT_PULLUP);
  pinMode(SCK,OUTPUT);
  pinMode(CS,OUTPUT);
}
//死循环
void loop() {
  // Reads temperature
  MAX6675_ReadData();
  Serial.print("Temperature: ");
  Serial.print(max6675.finallyDat);
  Serial.print(" C\r\n");
  delay(1000);
}

猜你喜欢

转载自blog.csdn.net/liuxianfei0810/article/details/105927447