标题: MAX6675+STM32与51单片机用K型热电偶的温度控制源码与资料下载 [打印本页]

作者: lcj1360510480    时间: 2018-4-29 17:27
标题: MAX6675+STM32与51单片机用K型热电偶的温度控制源码与资料下载
包含MAX6675资料


stm32单片机源程序如下:
  1. /*********************************************************************************
  2. * 文件名  :main.c
  3. * 描述    :通过stm32的spi1读取max6675的温度值,并通过uart1发送出来
  4. *         
  5. * 实验平台:STM32开发板
  6. * 库版本  :ST3.0.0
  7. * 硬件连接: ------------------------------------
  8. *           |PA6-SPI1-MISO:MAX6675-SO          |
  9. *           |PA7-SPI1-MOSI:MAX6675-SI          |
  10. *           |PA5-SPI1-SCK :MAX6675-SCK         |
  11. *           |PA4-SPI1-NSS :MAX6675-CS          |
  12. *            ------------------------------------
  13. **********************************************************************************/
  14. #include "stm32f10x.h"
  15. #include "usart1.h"

  16. #define         MAX6675_CS                         GPIO_Pin_4
  17. #define         MAX6675_CSL()                GPIOA->BRR = MAX6675_CS;
  18. #define         MAX6675_CSH()                GPIOA->BSRR = MAX6675_CS;

  19. /*
  20. * 函数名:SPI1_Init
  21. * 描述 MAX6675 接口初始化
  22. * 输入  :无
  23. * 输出  :无
  24. * 返回  :无
  25. */                                                                                                                                                                                  
  26. void SPI_MAX6675_Init(void)
  27. {
  28.         GPIO_InitTypeDef GPIO_InitStructure;
  29.         SPI_InitTypeDef  SPI_InitStructure;       
  30.        
  31.         /* 使能 SPI1 时钟 */                        
  32.         RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOA | RCC_APB2Periph_SPI1, ENABLE);

  33.         /* ---------通信I/O初始化----------------
  34.          * PA5-SPI1-SCK :MAX6675_SCK
  35.          * PA6-SPI1-MISO:MAX6675_SO
  36.          * PA7-SPI1-MOSI:MAX6675_SI         
  37.          */
  38.         GPIO_InitStructure.GPIO_Pin = GPIO_Pin_5 | GPIO_Pin_6 | GPIO_Pin_7;
  39.         GPIO_InitStructure.GPIO_Speed = GPIO_Speed_10MHz;
  40.         GPIO_InitStructure.GPIO_Mode = GPIO_Mode_AF_PP;                        // 复用输出
  41.         GPIO_Init(GPIOA, &GPIO_InitStructure);

  42.         /* ---------控制I/O初始化----------------*/
  43.         /* PA4-SPI1-NSS:MAX6675_CS */                                                        // 片选
  44.         GPIO_InitStructure.GPIO_Pin = GPIO_Pin_4;
  45.         GPIO_InitStructure.GPIO_Speed = GPIO_Speed_10MHz;
  46.         GPIO_InitStructure.GPIO_Mode = GPIO_Mode_Out_PP;                // 推免输出
  47.         GPIO_Init(GPIOA, &GPIO_InitStructure);                                                  
  48.         GPIO_SetBits(GPIOA, GPIO_Pin_4);                                                // 先把片选拉高,真正用的时候再拉低


  49.         /* SPI1 配置 */
  50.         SPI_InitStructure.SPI_Direction = SPI_Direction_2Lines_FullDuplex;
  51.         SPI_InitStructure.SPI_Mode = SPI_Mode_Master;
  52.         SPI_InitStructure.SPI_DataSize = SPI_DataSize_8b;
  53.         SPI_InitStructure.SPI_CPOL = SPI_CPOL_Low;
  54.         SPI_InitStructure.SPI_CPHA = SPI_CPHA_1Edge;
  55.         SPI_InitStructure.SPI_NSS = SPI_NSS_Soft;
  56.         SPI_InitStructure.SPI_BaudRatePrescaler = SPI_BaudRatePrescaler_8;
  57.         SPI_InitStructure.SPI_FirstBit = SPI_FirstBit_MSB;
  58.         SPI_InitStructure.SPI_CRCPolynomial = 7;
  59.         SPI_Init(SPI1, &SPI_InitStructure);
  60.        
  61.        
  62.         /* 使能 SPI1  */
  63.         SPI_Cmd(SPI1, ENABLE);
  64. }

  65. /*
  66. *
  67. *
  68. *
  69. */
  70. unsigned char MAX6675_ReadByte(void)
  71. {
  72.        
  73.         /* Loop while DR register in not emplty */
  74.         while(SPI_I2S_GetFlagStatus(SPI1,SPI_I2S_FLAG_TXE) == RESET);
  75.        
  76.         /* Send byte through the SPI1 peripheral */
  77.         SPI_I2S_SendData(SPI1, 0xff);
  78.        
  79.         /* Wait to receive a byte */
  80.         while(SPI_I2S_GetFlagStatus(SPI1, SPI_I2S_FLAG_RXNE) == RESET);
  81.        
  82.         /* Return the byte read from the SPI bus */
  83.         return SPI_I2S_ReceiveData(SPI1);
  84. }
  85. /*
  86. * 函数名:main
  87. * 描述  :主函数
  88. * 输入  :无
  89. * 输出  :无       
  90. */
  91. main (void)
  92. {
  93.         unsigned int t,i;
  94.         unsigned char c;
  95.         unsigned char flag;
  96.         float temprature;
  97.         /* 配置系统时钟为72M */
  98.         SystemInit();
  99.   
  100.         /* MAX6675 SPI 接口初始化 */
  101.         SPI_MAX6675_Init();
  102.         USART1_Config();
  103.        
  104.         while(1)
  105.         {
  106.        
  107.                 MAX6675_CSL();
  108.                 c = MAX6675_ReadByte();
  109.                 i = c;
  110.                 i = i<<8;
  111.                 c = MAX6675_ReadByte();
  112.                 MAX6675_CSH();
  113.                
  114.                 i = i|((unsigned int)c);                        //i是读出来的原始数据
  115.                 flag = i&0x04;                                                //flag保存了热电偶的连接状态
  116.                 t = i<<1;
  117.                 t = t>>4;
  118.                 temprature = t*0.25;
  119.                 if(i!=0)                                                        //max6675有数据返回
  120.                 {
  121.                         if(flag==0)                                                //热电偶已连接
  122.                         {
  123.                                 printf("原始数据是:%04X,  当前温度是:%4.2f。\r\n",i,temprature);
  124.                         }       
  125.                         else                                                        //热电偶掉线
  126.                         {
  127.                                 printf("未检测到热电偶,请检查。\r\n");
  128.                         }
  129.                
  130.                 }
  131.                 else                                                                //max6675没有数据返回
  132.                 {
  133.                         printf("max6675没有数据返回,请检查max6675连接。\r\n");
  134.                 }
  135.                 for(i=0;i<0x2fffff;i++);                        //max6675的转换时间是0.2秒左右,所以两次转换间隔不要太近
  136. ……………………

  137. …………限于本文篇幅 余下代码请从51黑下载附件…………
复制代码
MAX6675_51例程\
MAX6675_STM32例程\
K型热电偶和MAX6675简介.doc
MAX6675.pdf
MAX6675的原理及应用.pdf
一种简易的高精度测温系统研制.pdf
关于MAX6675应用的实验.doc
利用热电偶转换器的单片机温度测控系统_max6675[2页].pdf
单片K型热电偶放大与数字转换器MAX6675.pdf
基于89C51的温度控制器设计_文献检索[1].doc
基于K型热电偶与MAX6675多路温度采集系统.pdf
基于MAX6675的分布式高精度温度采集系统(1).pdf
基于MAX6675的温度采集系统的设计(1).pdf
基于_MAX6675的温度控制器设计.pdf
基于单片机的发动机尾气参数采集系统的设计.pdf
基于单片机的注塑机温度采集系统的设计.pdf
基于单片机的电阻炉温度控制系统设计.pdf
热电偶温度表测量电路的设计.doc
电阻加热炉温度控制系统.doc

所有资料51hei提供下载:
MAX6675.zip (6.71 MB, 下载次数: 501)



作者: wyj841224    时间: 2018-5-2 17:20
谢谢楼主的无私奉献
作者: tianmaduxing    时间: 2018-5-7 11:33
太好了
作者: 海嵌    时间: 2018-12-15 22:51
谢谢分享
作者: xmch    时间: 2018-12-20 11:51
感谢分享。
作者: 明棋M    时间: 2019-4-19 17:19
先看一下
作者: stchxgb    时间: 2019-4-20 07:17
谢谢楼主的无私奉献
作者: msyeh    时间: 2019-10-2 18:31
感谢分享。
作者: WFX777888    时间: 2019-10-3 04:52
谢谢分享资料
作者: 炎亚纶    时间: 2019-10-3 08:39
非常感谢你的分享!谢谢,对我非常有帮助!
作者: 江上远帆    时间: 2019-10-31 13:16
谢谢楼主分享
作者: 小太阳111    时间: 2019-11-26 18:45
谢谢楼主分享
作者: 噗噗噗p    时间: 2020-4-12 22:27
感谢感谢,现在正需要温度控制的相关资料
作者: fenkella    时间: 2020-5-11 17:07
请教楼主,我用了PA456脚,PA7没用,用了你的代码,读出来的还是乱七八糟的,硬件我检查了,应该不存在问题,有什么建议吗?
作者: QQ820270087    时间: 2020-6-22 15:42
fenkella 发表于 2020-5-11 17:07
请教楼主,我用了PA456脚,PA7没用,用了你的代码,读出来的还是乱七八糟的,硬件我检查了,应该不存在问题 ...

spi 没调试好
作者: yang03777    时间: 2021-5-10 17:05

非常感谢你的分享!谢谢,对我非常有帮助!
作者: ctx_ok    时间: 2021-6-25 22:07
非常的资料,下载学习学习。
作者: jxdianqi    时间: 2021-6-25 23:07
谢谢分享,做温度检测不难,还没吃透pid控制,下载参考一下
作者: 12332323    时间: 2023-9-12 22:59
6675有3个IO口,程序定义了4个IO口,为什么?




欢迎光临 (http://www.51hei.com/bbs/) Powered by Discuz! X3.1