打印
[应用相关]

stm32主控的ds18b20温度计

[复制链接]
97|7
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
stm32主控的ds18b20温度计
任务要求
最近在做课设作业,具体功能要求如下:
基本功能要求:(须全部完成) 能实现测温范围-5~125 度,误差±0.1 度; 能实现信号实时数据与历史曲线显示; 能用按键设置控制的期望值范围,超出声光报警。 扩展功能:(加分项) ①具有与计算机数据通讯和传送功能; ②能设置 PI 控制,并计算输出控制; ③能进行位式或连续温度调节; ④能进行温度无线传输显示。


引脚配置


使用特权

评论回复
沙发
花间一壶酒sd|  楼主 | 2023-12-28 15:17 | 只看该作者
OLED.h
#ifndef __OLED_H
#define __OLED_H

#include "sys.h"
#include "stdlib.h"       

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

#define LED_ON GPIO_ResetBits(GPIOB,GPIO_Pin_8)
#define LED_OFF GPIO_SetBits(GPIOB,GPIO_Pin_8)

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

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

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

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

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


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

void OLED_ClearPoint(u8 x,u8 y);
void OLED_ColorTurn(u8 i);
void OLED_DisplayTurn(u8 i);
void I2C_Start(void);
void I2C_Stop(void);
void I2C_WaitAck(void);
void Send_Byte(u8 dat);
void OLED_WR_Byte(u8 dat,u8 mode);
void OLED_DisPlay_On(void);
void OLED_DisPlay_Off(void);
void OLED_Refresh(void);
void OLED_Clear(void);
void OLED_DrawPoint(u8 x,u8 y);
void OLED_DrawLine(u8 x1,u8 y1,u8 x2,u8 y2);
void OLED_DrawCircle(u8 x,u8 y,u8 r);
void OLED_ShowChar(u8 x,u8 y,u8 chr,u8 size1);
void OLED_ShowString(u8 x,u8 y,u8 *chr,u8 size1);
void OLED_ShowNum(u8 x,u8 y,u32 num,u8 len,u8 size1);
void OLED_ShowChinese(u8 x,u8 y,u8 num,u8 size1);
void OLED_ScrollDisplay(u8 num,u8 space);
void OLED_WR_BP(u8 x,u8 y);
void OLED_ShowPicture(u8 x0,u8 y0,u8 x1,u8 y1,u8 BMP[]);
void OLED_Init(void);

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

void OLED_ShowBNum(u8 x,u8 y,float num,u8 len,u8 size2);//ÏÔʾÕý¸ºÐ¡Êý
#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

使用特权

评论回复
5
花间一壶酒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

使用特权

评论回复
6
花间一壶酒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

使用特权

评论回复
7
花间一壶酒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

使用特权

评论回复
8
花间一壶酒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

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

76

主题

971

帖子

1

粉丝