STM32设计实现智能温度计(OLED屏幕的使用,多级屏幕转换,扫描键盘法的搭建、DS180B20温度传感器的使用、实现上位机的可视化)

这篇具有很好参考价值的文章主要介绍了STM32设计实现智能温度计(OLED屏幕的使用,多级屏幕转换,扫描键盘法的搭建、DS180B20温度传感器的使用、实现上位机的可视化)。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

智能温度计的设计

设计内容

1)一路温度检测,量程为-40℃~+125℃,误差≤±0.5℃;

2)温度3位数码显示(XX.X℃);

3)开机自检;

4)配简单键盘,如温度上、下限临界报警值设置;

5)配置通信接口,上位机显示温度曲线。

单片机(32、51)、温度传感器()、键盘、LCD、

我们的基本思路是DS180B20温度传感器采集温度信号,经内部ADC转换为数字信号,输出到MCU,通过按键设置温度传感器报警的上下限,并通过USART串口通讯将温度信号传入上位机中,然后温度显示通过0.96寸OLED显示,报警是通过STM32mini自带的LED灯显示报警。

STM32设计实现智能温度计(OLED屏幕的使用,多级屏幕转换,扫描键盘法的搭建、DS180B20温度传感器的使用、实现上位机的可视化)

STM32设计实现智能温度计(OLED屏幕的使用,多级屏幕转换,扫描键盘法的搭建、DS180B20温度传感器的使用、实现上位机的可视化)

1.OLED显示屏

首先做的是OLED显示屏的显示,具体可以参考基于stm32的OLED温湿度显示_stm32温湿度显示_IT23131的博客-CSDN博客

 完成基本的显示之后我采用了多级菜单显示具体效果如下图所示:

STM32设计实现智能温度计(OLED屏幕的使用,多级屏幕转换,扫描键盘法的搭建、DS180B20温度传感器的使用、实现上位机的可视化)STM32设计实现智能温度计(OLED屏幕的使用,多级屏幕转换,扫描键盘法的搭建、DS180B20温度传感器的使用、实现上位机的可视化)

STM32设计实现智能温度计(OLED屏幕的使用,多级屏幕转换,扫描键盘法的搭建、DS180B20温度传感器的使用、实现上位机的可视化)STM32设计实现智能温度计(OLED屏幕的使用,多级屏幕转换,扫描键盘法的搭建、DS180B20温度传感器的使用、实现上位机的可视化)

STM32设计实现智能温度计(OLED屏幕的使用,多级屏幕转换,扫描键盘法的搭建、DS180B20温度传感器的使用、实现上位机的可视化)  STM32设计实现智能温度计(OLED屏幕的使用,多级屏幕转换,扫描键盘法的搭建、DS180B20温度传感器的使用、实现上位机的可视化)

 多级菜单的实现主要通过构建一个结构体,然后通过按键的触发实现界面的转换,本项目中,使用到了3个按键:下一个(next),确定(enter),退出(back)。所以,接下首先定义一个结构体,结构体中一共有5个变量(3+2),分别为:当前索引序号(current),向下一个(next),确定(enter),退出(back),当前执行函数(void)。

duoji.h

#ifndef __MENU_H
#define __MENU_H
#include "stm32f10x.h" 
#define  u8 unsigned char
 

//#define KEY0 HAL_GPIO_ReadPin(GPIOE, GPIO_PIN_4)		//KEY0
//#define KEY1 HAL_GPIO_ReadPin(GPIOE, GPIO_PIN_3)		//
//#define WK_UP HAL_GPIO_ReadPin(GPIOA, GPIO_PIN_0)		//
 #define KEY0  GPIO_ReadInputDataBit(GPIOC,GPIO_Pin_5)//低电平有效
#define KEY1  GPIO_ReadInputDataBit(GPIOA,GPIO_Pin_15)//低电平有效
#define WK_UP   GPIO_ReadInputDataBit(GPIOA,GPIO_Pin_0)//高电平有效

#define KEY0_PRES	1		//KEY0  
#define KEY1_PRES	2		//KEY1 
#define WKUP_PRES	3		//WK_UP  
typedef struct
{
    u8 current;	//当前状态索引号
    u8 next; 		//向下一个
    u8 enter; 	//确定
		u8 back; 		//退出
    void (*current_operation)(void); //当前状态应该执行的操作
} Menu_table;
 
//界面UI
void home();
void Temperature();
void Maxtem();  //设置最大警告温度值
void Mintem(); //设置最低警告温度值

 
void KEY_Init(void);//IO??? 
void  Menu_key_set(void);
u8 KEY_Scan(u8 mode);
 

#endif

注意代码部分引入了很多头文件是和各个模块有关系的如果读者不需要自主删除就好。

duoji.c文章来源地址https://www.toymoban.com/news/detail-495086.html

#include "duoji.h"
#include "oled.h"
#include "ds18b20.h"
#include "gui.h"
#include "delay.h"
#include "sys.h"
#include "usart.h"
#include "ds18b20.h" 
#include "Key.h"
#include "led.h"



//UI界面
//主页
/****************************************************/
//UI库
/****************************************************/
void KEY_Init(void)
{
	
	GPIO_InitTypeDef GPIO_InitStructure;

 	RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOA|RCC_APB2Periph_GPIOC,ENABLE);

	GPIO_PinRemapConfig(GPIO_Remap_SWJ_JTAGDisable, ENABLE);
	
	GPIO_InitStructure.GPIO_Pin  = GPIO_Pin_15;//PA15
	GPIO_InitStructure.GPIO_Mode = GPIO_Mode_IPU; 
 	GPIO_Init(GPIOA, &GPIO_InitStructure);//???GPIOA15
	
	GPIO_InitStructure.GPIO_Pin  

到了这里,关于STM32设计实现智能温度计(OLED屏幕的使用,多级屏幕转换,扫描键盘法的搭建、DS180B20温度传感器的使用、实现上位机的可视化)的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 基于STM32F103C8T6与ESP8266的物联网智能温度采集与蓝牙OLED数字钟的设计与实现

    作者: 颜孙炜 [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-wC12xZrc-1673843611066)(C:UsersadminAppDataRoamingTyporatypora-user-imagesimage-20230110223524043.png)] 用STM32F103C8T6自有的RTC功能实现一款数字钟的设计,包括温度输入检测和显示模块、数字钟显示模块

    2024年02月02日
    浏览(40)
  • MLX90614红外温度计介绍

    MLX90614是一款红外非接触温度计。TO-39金属封装里同时集成了红外感应热电堆探测器芯片和信号处理专用集成芯片。 由于集成了低噪声放大器、17位模数转换器和强大的数字信号处理单元,使得高精度和高分辨度的温度计得以实现。温度计具备出厂校准化,有数字PWM和SMBus(系

    2023年04月08日
    浏览(40)
  • 基于单片机的数字温度计

    ** 单片机设计介绍   51单片是一种低功耗、高性能CMOS8位微控制器,具有 8K 在系统可编程Flash 存储器。在单芯片上,拥有灵巧的8 位CPU 和在系统可编程Flash,使得STC89C51为众多嵌入式控制应用系统提供高灵活、超有效的解决方案。具有以下标准功能:8k字节Flash,512字节RAM,

    2024年02月03日
    浏览(33)
  • 数字温度计方案芯片CS7193

    CS7193_T16E是带LCD显示的1位小数数字温度计电路。可以通过外部PIN脚,选择摄氏度显示(℃)或者华氏度显示(℉),并通过开关按键完成单位切换。它还包括了测试模式,自动关闭电源和报警功能等。CS7193_T16E适合应用在临床及家用数字温度计等领域。其特点如下: 1、测量范

    2023年04月08日
    浏览(30)
  • 基于51单片机的数字温度计【开源】

    (1)温度实时显示(LCD2864) (2)温度上限下线调节 (3)万年历功能 (4)超温报警 (5)年月日时分秒可调节 (6)温度测量精度0.0625℃ (7)节日自动判定 STC89c52,DS18B20,DS1302,按键模块。LCD12864 main.c LCD12864.c ( 主要一些延时和LCD12864的驱动) LCD12864.h (主要一些函数的声

    2024年02月10日
    浏览(35)
  • 手机怎样使用温度计功能,手机怎样使用北斗导航

    大家好,本文将围绕手机怎样使用百度网盘教程视频展开说明,手机怎样使用搜狗输入法是一个很多人都想弄明白的事情,想搞清楚手机怎样使用谷歌浏览器需要先了解以下几个事情。 Source code download: 本文相关源码 手机编程软件有很多,大部分都很难使用,操作不灵活,甚

    2024年02月03日
    浏览(31)
  • 51单片机DS18B20温度传感器使用及数码管温度计、LCD1602温度显示代码详解

    温馨提示:读者若要彻底理解并会灵活使用DS18B20温度传感器,请详细阅读中文手册,并且对照代码注释充分分析代码。请不要觉得中文手册内容繁多!如能静心分析,定能深有体会,获益匪浅! 主函数操作顺序(执行序列) 功能指令 最后希望我的分享对你有所帮助!敬请关

    2024年02月12日
    浏览(38)
  • 53、基于STC15W单片机的温度计(DS18B20)(Proteus仿真+程序)

          本设计由STC15W4K32S4单片机+DS18B20温度传感器+1602液晶显示模块+串口模块组成。 1、主控制器是STC15W4K32S4单片机 2、DS18B20温度传感器采集温度,精度0.1摄氏度 3、1602液晶显示温度。 4、测温范围-55~110摄氏度,误差±0.1℃ 5、温度值发送至串口助手显示。 Proteus软件: Proteus

    2024年02月03日
    浏览(46)
  • 使用树莓派Pico、DHT11和SSD1306搭建一个温度湿度计(只使用官方库,以及官方案例代码的错误之处和解决方案)

    最近想树莓派 Pico、DHT11 温湿度传感器和 SSD1306 OLED 屏幕做一个温度湿度计,树莓派官方案例也分别有这两个设备的案例,我就想做个简单的温度湿度计作为学习微控制器的开始,结果遇到了一个大坑,所以写本文记录一下整个过程。 本文最后会实现一个能在 SSD1306 OLED 屏幕上

    2024年02月11日
    浏览(29)
  • 基于STM32单片机的智能家居烟雾温度火灾防盗报警的设计与实现

        功能介绍 以STM32单片机作为主控系统; LCD1602液晶显示屏来显示显示测得的值; SR501人体红外感应是否有人进行防盗; 通过烟雾传感器MQ-2获取前的烟雾值; 通过DHT11温湿度传感器来获取当前的温湿度; 所有的信息通过通过esp8266 wifi把数据传输到手机端进行显示;    

    2024年02月15日
    浏览(34)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包