[应用相关] stm32主控的ds18b20温度计

[复制链接]
 楼主| 花间一壶酒sd 发表于 2023-12-28 15:17 | 显示全部楼层 |阅读模式
stm32主控的ds18b20温度计
任务要求
最近在做课设作业,具体功能要求如下:
基本功能要求:(须全部完成) 能实现测温范围-5~125 度,误差±0.1 度; 能实现信号实时数据与历史曲线显示; 能用按键设置控制的期望值范围,超出声光报警。 扩展功能:(加分项) ①具有与计算机数据通讯和传送功能; ②能设置 PI 控制,并计算输出控制; ③能进行位式或连续温度调节; ④能进行温度无线传输显示。


引脚配置
18453658d21041090b.png

 楼主| 花间一壶酒sd 发表于 2023-12-28 15:17 | 显示全部楼层
OLED.h
  1. #ifndef __OLED_H
  2. #define __OLED_H

  3. #include "sys.h"
  4. #include "stdlib.h"       

  5. //-----------------²âÊÔLED¶Ë¿Ú¶¨Òå----------------

  6. #define LED_ON GPIO_ResetBits(GPIOB,GPIO_Pin_8)
  7. #define LED_OFF GPIO_SetBits(GPIOB,GPIO_Pin_8)

  8. //-----------------OLED¶Ë¿Ú¶¨Òå----------------

  9. #define OLED_SCLK_Clr() GPIO_ResetBits(GPIOA,GPIO_Pin_4)
  10. #define OLED_SCLK_Set() GPIO_SetBits(GPIOA,GPIO_Pin_4)//SCL

  11. #define OLED_SDIN_Clr() GPIO_ResetBits(GPIOA,GPIO_Pin_5)//DIN
  12. #define OLED_SDIN_Set() GPIO_SetBits(GPIOA,GPIO_Pin_5)

  13. #define OLED_RST_Clr() GPIO_ResetBits(GPIOB,GPIO_Pin_0)//RES
  14. #define OLED_RST_Set() GPIO_SetBits(GPIOB,GPIO_Pin_0)

  15. #define OLED_DC_Clr() GPIO_ResetBits(GPIOB,GPIO_Pin_1)//RES


  16. #define OLED_CMD  0        //дÃüÁî
  17. #define OLED_DATA 1        //дÊý¾Ý
  18. #define u8 unsigned char
  19. #define u32 unsigned int

  20. void OLED_ClearPoint(u8 x,u8 y);
  21. void OLED_ColorTurn(u8 i);
  22. void OLED_DisplayTurn(u8 i);
  23. void I2C_Start(void);
  24. void I2C_Stop(void);
  25. void I2C_WaitAck(void);
  26. void Send_Byte(u8 dat);
  27. void OLED_WR_Byte(u8 dat,u8 mode);
  28. void OLED_DisPlay_On(void);
  29. void OLED_DisPlay_Off(void);
  30. void OLED_Refresh(void);
  31. void OLED_Clear(void);
  32. void OLED_DrawPoint(u8 x,u8 y);
  33. void OLED_DrawLine(u8 x1,u8 y1,u8 x2,u8 y2);
  34. void OLED_DrawCircle(u8 x,u8 y,u8 r);
  35. void OLED_ShowChar(u8 x,u8 y,u8 chr,u8 size1);
  36. void OLED_ShowString(u8 x,u8 y,u8 *chr,u8 size1);
  37. void OLED_ShowNum(u8 x,u8 y,u32 num,u8 len,u8 size1);
  38. void OLED_ShowChinese(u8 x,u8 y,u8 num,u8 size1);
  39. void OLED_ScrollDisplay(u8 num,u8 space);
  40. void OLED_WR_BP(u8 x,u8 y);
  41. void OLED_ShowPicture(u8 x0,u8 y0,u8 x1,u8 y1,u8 BMP[]);
  42. void OLED_Init(void);

  43. u32 oled_pow(u8 m,u8 n);
  44. //void OLED_Showdecimal(u8 x,u8 y,float num,u8 len,u8 size2);

  45. void OLED_ShowBNum(u8 x,u8 y,float num,u8 len,u8 size2);//ÏÔʾÕý¸ºÐ¡Êý
  46. #endif



 楼主| 花间一壶酒sd 发表于 2023-12-28 15:17 | 显示全部楼层
DS18B20.h
#ifndef __DS18B20_H
#define __DS18B20_H
#include "sys.h"   
//         
//±¾³ÌÐòÖ»¹©Ñ§Ï°Ê¹Óã¬Î´¾­×÷ÕßÐí¿É£¬²»µÃÓÃÓÚÆäËüÈκÎÓÃ;
//ALIENTEK MiniSTM32¿ª·¢°å
//DS18B20Çý¶¯´úÂë          
//ÕýµãÔ­×Ó@ALIENTEK
//¼¼ÊõÂÛ̳:www.openedv.com
//ÐÞ¸ÄÈÕÆÚ:2014/3/12
//°æ±¾£ºV1.0
//°æÈ¨ËùÓУ¬µÁ°æ±Ø¾¿¡£
//Copyright(C) ¹ãÖÝÊÐÐÇÒíµç×ӿƼ¼ÓÐÏÞ¹«Ë¾ 2009-2019
//All rights reserved                                                                          
//

//IO·½ÏòÉèÖÃ
#define DS18B20_IO_IN()  {GPIOA->CRL&=0XFFFFFFF0;GPIOA->CRL|=8<<0;}
#define DS18B20_IO_OUT() {GPIOA->CRL&=0XFFFFFFF0;GPIOA->CRL|=3<<0;}
IO²Ù×÷º¯Êý                                                                                          
#define        DS18B20_DQ_OUT PAout(0) //Êý¾Ý¶Ë¿Ú        PA0
#define        DS18B20_DQ_IN  PAin(0)  //Êý¾Ý¶Ë¿Ú        PA0
          
u8 DS18B20_Init(void);                        //³õʼ»¯DS18B20
short DS18B20_Get_Temp(void);        //»ñȡζÈ
void DS18B20_Start(void);                //¿ªÊ¼Î¶Èת»»
void DS18B20_Write_Byte(u8 dat);//дÈëÒ»¸ö×Ö½Ú
u8 DS18B20_Read_Byte(void);                //¶Á³öÒ»¸ö×Ö½Ú
u8 DS18B20_Read_Bit(void);                //¶Á³öÒ»¸öλ
u8 DS18B20_Check(void);                        //¼ì²âÊÇ·ñ´æÔÚDS18B20
void DS18B20_Rst(void);                        //¸´Î»DS18B20   
#endif
 楼主| 花间一壶酒sd 发表于 2023-12-28 15:18 | 显示全部楼层
PWM.h

#if
#ifndef __PWM_H
#define __PWM_H
#include "stm32f10x.h"

void TIM3_PWM_Init(void);
void TIM3_PWM_Config(u16 pwm1,u16 pwm2,u16 pwm3,u16 pwm4);
                                                                        //      PA6      PA7     PB0      PB1       
#endif
 楼主| 花间一壶酒sd 发表于 2023-12-28 15:21 | 显示全部楼层
USART2.h
#ifndef __USART2_H
#define __USART2_H
#include "stdio.h"   
#include "sys.h"

#define USART2_REC_LEN              200      //????????? 200
#define EN_USART2_RX             1        //??(1)/??(0)??1??
         
extern u8  USART2_RX_BUF[USART2_REC_LEN]; //????,??USART_REC_LEN???.???????
extern u16 USART2_RX_STA;                 //??????   
//?????????,??????????
void uart2_init(u32 bound);

#endif

 楼主| 花间一壶酒sd 发表于 2023-12-28 15:21 | 显示全部楼层
BEEP.h
#ifndef __BEEP_h
#define __BEEP_h


#include "stm32f10x.h"
#include "delay.h"

#define  BEEP  PCout(15)



void BEEP_Config(void);                            //³õʼ»¯

void Passive_BEEP_Run(void);                //ÎÞÔ´·äÃùÆ÷

void Active_BEEP_Run(void);                    //ÓÐÔ´·äÃùÆ÷ÔËÐÐ

#endif

 楼主| 花间一壶酒sd 发表于 2023-12-28 15:21 | 显示全部楼层
KEY.h
#ifndef __KEY_H
#define __KEY_H         
#include "sys.h"
//         
//±¾³ÌÐòÖ»¹©Ñ§Ï°Ê¹Óã¬Î´¾­×÷ÕßÐí¿É£¬²»µÃÓÃÓÚÆäËüÈκÎÓÃ;
//ALIENTEK miniSTM32¿ª·¢°å
//°´¼üÇý¶¯´úÂë          
//ÕýµãÔ­×Ó@ALIENTEK
//¼¼ÊõÂÛ̳:www.openedv.com
//ÐÞ¸ÄÈÕÆÚ:2012/9/3
//°æ±¾£ºV1.0
//°æÈ¨ËùÓУ¬µÁ°æ±Ø¾¿¡£
//Copyright(C) ¹ãÖÝÊÐÐÇÒíµç×ӿƼ¼ÓÐÏÞ¹«Ë¾ 2009-2019
//All rights reserved                                                                          
//            


//#define KEY0 PCin(5)          
//#define KEY1 PAin(15)         
//#define WK_UP  PAin(0)         


#define KEY0  GPIO_ReadInputDataBit(GPIOC,GPIO_Pin_5)//¶ÁÈ¡°´¼ü0
#define KEY1  GPIO_ReadInputDataBit(GPIOA,GPIO_Pin_15)//¶ÁÈ¡°´¼ü1
#define WK_UP   GPIO_ReadInputDataBit(GPIOA,GPIO_Pin_0)//¶ÁÈ¡°´¼ü2


#define KEY0_PRES        1                //KEY0  
#define KEY1_PRES        2                //KEY1
#define WKUP_PRES        3                //WK_UP  

void KEY_Init(void);//IO³õʼ»¯
u8 KEY_Scan(u8 mode);          //°´¼üɨÃ躯Êý                                            
#endif
 楼主| 花间一壶酒sd 发表于 2023-12-28 15:21 | 显示全部楼层
LED.h
#ifndef __LED_H
#define __LED_H         
#include "sys.h"
//         
//±¾³ÌÐòÖ»¹©Ñ§Ï°Ê¹Óã¬Î´¾­×÷ÕßÐí¿É£¬²»µÃÓÃÓÚÆäËüÈκÎÓÃ;
//ALIENTEKÕ½½¢STM32¿ª·¢°å
//LEDÇý¶¯´úÂë          
//ÕýµãÔ­×Ó@ALIENTEK
//¼¼ÊõÂÛ̳:www.openedv.com
//ÐÞ¸ÄÈÕÆÚ:2012/9/2
//°æ±¾£ºV1.0
//°æÈ¨ËùÓУ¬µÁ°æ±Ø¾¿¡£
//Copyright(C) ¹ãÖÝÊÐÐÇÒíµç×ӿƼ¼ÓÐÏÞ¹«Ë¾ 2009-2019
//All rights reserved                                                                          
//
#define LED0 PAout(8)        // PA8
#define LED1 PDout(2)        // PD2       

void LED_Init(void);//³õʼ»¯

                                                     
#endif
您需要登录后才可以回帖 登录 | 注册

本版积分规则

99

主题

1217

帖子

2

粉丝
快速回复 在线客服 返回列表 返回顶部

99

主题

1217

帖子

2

粉丝
快速回复 在线客服 返回列表 返回顶部