stm32主控的ds18b20温度计
任务要求
最近在做课设作业,具体功能要求如下:
基本功能要求:(须全部完成) 能实现测温范围-5~125 度,误差±0.1 度; 能实现信号实时数据与历史曲线显示; 能用按键设置控制的期望值范围,超出声光报警。 扩展功能:(加分项) ①具有与计算机数据通讯和传送功能; ②能设置 PI 控制,并计算输出控制; ③能进行位式或连续温度调节; ④能进行温度无线传输显示。
引脚配置
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
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
PWM.h
#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
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
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
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
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
具体的所有代码可以到主页找资源下,或者评论留个邮箱给你发