久久久久久久999_99精品久久精品一区二区爱城_成人欧美一区二区三区在线播放_国产精品日本一区二区不卡视频_国产午夜视频_欧美精品在线观看免费

 找回密碼
 立即注冊(cè)

QQ登錄

只需一步,快速開始

搜索
查看: 1905|回復(fù): 0
打印 上一主題 下一主題
收起左側(cè)

MAX6675_STM32單片機(jī)程序(OLED顯示+熱電偶+藍(lán)牙+繼電器)

[復(fù)制鏈接]
跳轉(zhuǎn)到指定樓層
樓主
ID:316613 發(fā)表于 2023-8-11 09:48 | 只看該作者 回帖獎(jiǎng)勵(lì) |倒序?yàn)g覽 |閱讀模式
功能如標(biāo)題已經(jīng)測(cè)試通過

單片機(jī)源程序如下:
  1. /*********************************************************************************
  2. * 文件名  :main.c
  3. * 描述    :通過stm32的spi1讀取max6675的溫度值,并通過uart1發(fā)送出來
  4. *         
  5. * 實(shí)驗(yàn)平臺(tái):STM32開發(fā)板
  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. #include "led.h"
  17. #include "oled.h"
  18. #include "hc05.h"
  19. #include "usart3.h"       
  20. #include "string.h"          

  21. #define         MAX6675_CS                         GPIO_Pin_4
  22. #define         MAX6675_CSL()                GPIOA->BRR = MAX6675_CS;
  23. #define         MAX6675_CSH()                GPIOA->BSRR = MAX6675_CS;

  24. /*
  25. * 函數(shù)名:SPI1_Init
  26. * 描述  MAX6675 接口初始化
  27. * 輸入  :無
  28. * 輸出  :無
  29. * 返回  :無
  30. */                                                                                                                                                                                  
  31. void SPI_MAX6675_Init(void)
  32. {
  33.         GPIO_InitTypeDef GPIO_InitStructure;
  34.         SPI_InitTypeDef  SPI_InitStructure;       
  35.        
  36.         /* 使能 SPI1 時(shí)鐘 */                        
  37.         RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOA | RCC_APB2Periph_SPI1, ENABLE);

  38.         /* ---------通信I/O初始化----------------
  39.          * PA5-SPI1-SCK :MAX6675_SCK
  40.          * PA6-SPI1-MISO:MAX6675_SO
  41.          * PA7-SPI1-MOSI:MAX6675_SI         
  42.          */
  43.         GPIO_InitStructure.GPIO_Pin = GPIO_Pin_5 | GPIO_Pin_6 | GPIO_Pin_7;
  44.         GPIO_InitStructure.GPIO_Speed = GPIO_Speed_10MHz;
  45.         GPIO_InitStructure.GPIO_Mode = GPIO_Mode_AF_PP;                        // 復(fù)用輸出
  46.         GPIO_Init(GPIOA, &GPIO_InitStructure);

  47.         /* ---------控制I/O初始化----------------*/
  48.         /* PA4-SPI1-NSS:MAX6675_CS */                                                        // 片選
  49.         GPIO_InitStructure.GPIO_Pin = GPIO_Pin_4;
  50.         GPIO_InitStructure.GPIO_Speed = GPIO_Speed_10MHz;
  51.         GPIO_InitStructure.GPIO_Mode = GPIO_Mode_Out_PP;                // 推免輸出
  52.         GPIO_Init(GPIOA, &GPIO_InitStructure);                                                  
  53.         GPIO_SetBits(GPIOA, GPIO_Pin_4);                                                // 先把片選拉高,真正用的時(shí)候再拉低


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

  70. /*
  71. *
  72. *
  73. *
  74. */
  75. unsigned char MAX6675_ReadByte(void)
  76. {
  77.        
  78.         /* Loop while DR register in not emplty */
  79.         while(SPI_I2S_GetFlagStatus(SPI1,SPI_I2S_FLAG_TXE) == RESET);
  80.        
  81.         /* Send byte through the SPI1 peripheral */
  82.         SPI_I2S_SendData(SPI1, 0xff);
  83.        
  84.         /* Wait to receive a byte */
  85.         while(SPI_I2S_GetFlagStatus(SPI1, SPI_I2S_FLAG_RXNE) == RESET);
  86.        
  87.         /* Return the byte read from the SPI bus */
  88.         return SPI_I2S_ReceiveData(SPI1);
  89. }

  90. void HC05_Role_Show(void)
  91. {
  92.         if(HC05_Get_Role()==1)printf("ROLE:Master");        //主機(jī)
  93.         else printf("ROLE:Slave ");                                         //從機(jī)
  94. }
  95. //顯示ATK-HC05模塊的連接狀態(tài)
  96. void HC05_Sta_Show(void)
  97. {                                                                                                 
  98.         if(HC05_LED)printf("STA:Connected ");                        //連接成功
  99.         else printf("STA:Disconnect");                                 //未連接                                 
  100. }       

  101. /*
  102. * 函數(shù)名:main
  103. * 描述  :主函數(shù)
  104. * 輸入  :無
  105. * 輸出  :無       
  106. */
  107. main (void)
  108. {
  109.         unsigned int t,i;
  110.         unsigned char c;
  111.         unsigned char flag;
  112.         float temprature;     
  113.        
  114.          NVIC_PriorityGroupConfig(NVIC_PriorityGroup_2);
  115.        
  116.         /* 配置系統(tǒng)時(shí)鐘為72M */
  117.         SystemInit();
  118.      LED_Init();
  119.         /* MAX6675 SPI 接口初始化 */
  120.         SPI_MAX6675_Init();
  121.         USART1_Config();
  122.         OLED_IIC_Init();
  123.             LED0=LED1=0 ;
  124.        
  125.         //OLED_ShowNum(0,1,6666666,8,16);
  126.         OLED_P8x16Str(0,0,"temp:");
  127.        
  128.         HC05_Init();
  129. //                 while(HC05_Init())                 //初始化ATK-HC05模塊  
  130. //        {
  131. //OLED_P8x16Str(2,2,"xxxx");
  132. //        }                                                        
  133. OLED_P8x16Str(3,3,"222");
  134.         HC05_Role_Show();
  135. USART3_RX_STA=0;       
  136.         while(1)
  137.         {
  138.        
  139.                 MAX6675_CSL();
  140.                 c = MAX6675_ReadByte();
  141.                 i = c;
  142.                 i = i<<8;
  143.                 c = MAX6675_ReadByte();
  144.                 MAX6675_CSH();
  145.                
  146.                 i = i|((unsigned int)c);                        //i是讀出來的原始數(shù)據(jù)
  147.                 flag = i&0x04;                                                //flag保存了熱電偶的連接狀態(tài)
  148.                 t = i<<1;
  149.                 t = t>>4;
  150.                 temprature = t*0.25;
  151.                

  152.                 if(i!=0)                                                        //max6675有數(shù)據(jù)返回
  153.                 {
  154.                         if(flag==0)                                                //熱電偶已連接
  155.                         {  
  156.                                 printf("原始數(shù)據(jù)是:%04X,  當(dāng)前溫度是:%4.2f。\r\n",i,temprature);
  157.                                            OLED_ShowNum(17,1,temprature,4,16);
  158. //                                if(temprature< 25)    //溫度小于25°加熱,
  159. //                                {
  160. //                                         LED0=1;// 加熱
  161. //                                LED1=0; // 關(guān)閉風(fēng)扇
  162. //                                }
  163. //                                else if (temprature >30)   //溫度高于30都 散熱
  164. //                                {

  165. //                                LED1=1;   //打開風(fēng)扇
  166. //                                LED0=0;        //關(guān)閉加熱
  167. //                                }

  168.                         }       
  169.                         else                                                        //熱電偶掉線
  170.                         {
  171.                                 printf("未檢測(cè)到熱電偶,請(qǐng)檢查。\r\n");
  172.                         }
  173.                
  174.                 }
  175.                 else                                                                //max6675沒有數(shù)據(jù)返回
  176.                 {
  177.                         printf("max6675沒有數(shù)據(jù)返回,請(qǐng)檢查max6675連接。\r\n");
  178.                 }
  179.                 for(i=0;i<0x2fffff;i++);                        //max6675的轉(zhuǎn)換時(shí)間是0.2秒左右,所以兩次轉(zhuǎn)換間隔不要太近
  180.         }
  181. }



復(fù)制代碼


原理圖:無
仿真:無
程序: 程序.7z (182.89 KB, 下載次數(shù): 47)

評(píng)分

參與人數(shù) 1黑幣 +50 收起 理由
admin + 50 共享資料的黑幣獎(jiǎng)勵(lì)!

查看全部評(píng)分

分享到:  QQ好友和群QQ好友和群 QQ空間QQ空間 騰訊微博騰訊微博 騰訊朋友騰訊朋友
收藏收藏2 分享淘帖 頂 踩
回復(fù)

使用道具 舉報(bào)

本版積分規(guī)則

手機(jī)版|小黑屋|51黑電子論壇 |51黑電子論壇6群 QQ 管理員QQ:125739409;技術(shù)交流QQ群281945664

Powered by 單片機(jī)教程網(wǎng)

快速回復(fù) 返回頂部 返回列表
主站蜘蛛池模板: 久久精品成人 | 九九热这里 | 久久国产精品无码网站 | 91麻豆精品国产91久久久久久 | 欧美性大战久久久久久久蜜臀 | 天天色图 | 亚洲一区二区黄 | 99热精品在线 | 日韩伦理一区二区 | www.99热这里只有精品 | 国产精品99999999 | 美日韩免费 | 国产欧美久久精品 | 久久精品成人 | 美女逼网站 | 男人天堂视频在线观看 | 成人精品鲁一区一区二区 | 99爱国产| 成人免费在线 | 精品国产一区二区三区性色av | 国产在线中文字幕 | av大片在线观看 | 日韩在线观看一区 | 亚洲va欧美va天堂v国产综合 | 免费看黄色小视频 | 日韩精品一区二区三区老鸭窝 | 91视视频在线观看入口直接观看 | 国内精品99 | 免费毛片网站 | 红桃视频一区二区三区免费 | 91福利影院 | 夜夜操av | 理论片87福利理论电影 | 91精品久久久久久久久久入口 | 日韩五月天 | 青青草原精品99久久精品66 | 91精品国产91久久久久久最新 | 天堂视频免费 | 久久精彩视频 | 午夜精品久久久久久久久久久久久 | 精品啪啪|