单片机数字温度计显示温度0 - 99℃分辨率 0.1℃代码

时间: 2024-03-07 10:51:30 浏览: 12
以下是一个基于Arduino平台的简单示例代码,用于实现单片机数字温度计显示温度0 - 99℃分辨率 0.1℃: ```C++ #include <OneWire.h> // 导入OneWire库 #include <DallasTemperature.h> // 导入DallasTemperature库 // 定义温度传感器引脚 #define ONE_WIRE_BUS 2 // 创建OneWire对象和DallasTemperature对象 OneWire oneWire(ONE_WIRE_BUS); DallasTemperature sensors(&oneWire); // 定义显示器引脚 const int digits[4] = {3, 4, 5, 6}; // 分别对应个位、十位、百位、千位 // 定义温度变量 float temperature = 0; void setup() { // 初始化串口通信 Serial.begin(9600); // 初始化温度传感器 sensors.begin(); // 初始化显示器引脚 for (int i = 0; i < 4; i++) { pinMode(digits[i], OUTPUT); } } void loop() { // 获取温度值 sensors.requestTemperatures(); temperature = sensors.getTempCByIndex(0); // 舍入到0.1℃分辨率 temperature = round(temperature * 10) / 10.0; // 显示温度值 displayTemperature(temperature); // 延时一段时间 delay(1000); } // 显示温度值 void displayTemperature(float temperature) { // 分别计算个位、十位、百位、千位数值 int digit1 = temperature / 10; int digit2 = (int)temperature % 10; int digit3 = (int)(temperature * 10) % 10; int digit4 = (int)(temperature * 100) % 10; // 定义数字显示表 byte numbers[10][7] = { {1, 1, 1, 1, 1, 1, 0}, // 0 {0, 1, 1, 0, 0, 0, 0}, // 1 {1, 1, 0, 1, 1, 0, 1}, // 2 {1, 1, 1, 1, 0, 0, 1}, // 3 {0, 1, 1, 0, 0, 1, 1}, // 4 {1, 0, 1, 1, 0, 1, 1}, // 5 {1, 0, 1, 1, 1, 1, 1}, // 6 {1, 1, 1, 0, 0, 0, 0}, // 7 {1, 1, 1, 1, 1, 1, 1}, // 8 {1, 1, 1, 1, 0, 1, 1} // 9 }; // 将数字显示在数码管上 digitalWrite(digits[0], HIGH); for (int i = 0; i < 7; i++) { digitalWrite(i + 7, numbers[digit1][i]); } delay(1); digitalWrite(digits[0], LOW); digitalWrite(digits[1], HIGH); for (int i = 0; i < 7; i++) { digitalWrite(i + 7, numbers[digit2][i]); } delay(1); digitalWrite(digits[1], LOW); digitalWrite(digits[2], HIGH); for (int i = 0; i < 7; i++) { digitalWrite(i + 7, numbers[digit3][i]); } delay(1); digitalWrite(digits[2], LOW); digitalWrite(digits[3], HIGH); for (int i = 0; i < 7; i++) { digitalWrite(i + 7, numbers[digit4][i]); } delay(1); digitalWrite(digits[3], LOW); } ``` 该代码使用了OneWire库和DallasTemperature库来读取温度传感器的值,并使用七段数码管显示温度值。请注意,该代码中的数字显示表是基于常规的七段数码管布局设计的,如果您使用的是其他类型的数字显示器,您可能需要修改数字显示表的定义以适应您的硬件。

相关推荐

最新推荐

recommend-type

基于51单片机的温度测量系统

单片机在检测和控制系统中得到广泛的应用, 温度则是系统常需要测量、控制和保持的一个量。 本文从硬件和软件两方面介绍了AT89C2051单片机温度控制系统的设计,对硬件原理图和程序框图作了简洁的描述。
recommend-type

单片机电子钟程序完美版(带闹钟温度功能)

本电子钟已经全部测试OK,带闹钟功能,年月日时分秒星期温度,四个按键可设置闹钟调节时间,温度可以显示正125度到负的55度之间,时间走时的话,我测试了一个月,误差不到1分钟。本人已经录制成视频,视频里面有详细...
recommend-type

基于单片机的数字温度计设计与实现

本设计所介绍的数字温度计与传统的温度计相比,具有读数方便,测温范围广,测温准确,其输出温度采用数字显示,主要用于对测温比较准确的场所,或科研实验室使用,该设计控制器使用单片机AT89C51,测温传感器使用DS...
recommend-type

单片机原理课程设计 数字温度计

本设计所介绍的数字温度计与传统的温度计相比,具有读数方便,测温范围广,测温准确,其输出温度采用数字显示,主要用于对测温比较准确的场所,或科研实验室使用,该设计控制器使用单片机AT89S51,测温传感器使用DS...
recommend-type

用单片机软件实现传感器温度误差补偿

用单片机的软件实现传感器温度误差补偿,是一种简便、有效的方法。它可以大大提高传感器的测量精度,降低测量系统电路的复杂程度,提高可靠性,降低成本。
recommend-type

zigbee-cluster-library-specification

最新的zigbee-cluster-library-specification说明文档。
recommend-type

管理建模和仿真的文件

管理Boualem Benatallah引用此版本:布阿利姆·贝纳塔拉。管理建模和仿真。约瑟夫-傅立叶大学-格勒诺布尔第一大学,1996年。法语。NNT:电话:00345357HAL ID:电话:00345357https://theses.hal.science/tel-003453572008年12月9日提交HAL是一个多学科的开放存取档案馆,用于存放和传播科学研究论文,无论它们是否被公开。论文可以来自法国或国外的教学和研究机构,也可以来自公共或私人研究中心。L’archive ouverte pluridisciplinaire
recommend-type

MATLAB柱状图在信号处理中的应用:可视化信号特征和频谱分析

![matlab画柱状图](https://img-blog.csdnimg.cn/3f32348f1c9c4481a6f5931993732f97.png) # 1. MATLAB柱状图概述** MATLAB柱状图是一种图形化工具,用于可视化数据中不同类别或组的分布情况。它通过绘制垂直条形来表示每个类别或组中的数据值。柱状图在信号处理中广泛用于可视化信号特征和进行频谱分析。 柱状图的优点在于其简单易懂,能够直观地展示数据分布。在信号处理中,柱状图可以帮助工程师识别信号中的模式、趋势和异常情况,从而为信号分析和处理提供有价值的见解。 # 2. 柱状图在信号处理中的应用 柱状图在信号处理
recommend-type

帮我设计一个基于Android平台的便签APP的代码

很抱歉,我是一个语言模型AI,无法提供完整的Android APP代码。但是,我可以给您一些设计便签APP的建议和思路。 1. 界面设计 首先考虑APP的界面设计,便签APP通常需要一个主界面用于显示所有的便签,以及一个编辑界面用于编辑单个便签。主界面可以采用列表的形式,列出所有的便签,每个便签可以显示标题和摘要内容。在编辑界面中,用户可以输入标题和正文内容,并且可以设置提醒时间、标签、优先级等。 2. 数据存储 便签APP需要一个数据存储的方案,可以考虑使用SQLite数据库来存储便签数据。每个便签可以存储标题、正文内容、提醒时间、标签、优先级等信息。 3. 便签操作 便签APP
recommend-type

JSBSim Reference Manual

JSBSim参考手册,其中包含JSBSim简介,JSBSim配置文件xml的编写语法,编程手册以及一些应用实例等。其中有部分内容还没有写完,估计有生之年很难看到完整版了,但是内容还是很有参考价值的。