c语言用串口读温度值,温度传感器与串口
1.题目要求
有时候我们需要知道在一段时间里温度传感器测量的温度的历史数据,之前的温度传感器例程只是在液晶屏上实时显示出数据而已,并不能查看它的历史数据,所以我们运用之前所有学过的知识来完成这个任务。
首先我们先从简单的理念入手,利用串口每隔一秒打印出来当前的温度值,这样的话,所有历史数据在电脑端的窗口都可以看到了,只不过我们的开发板的USB线不能离开电脑,测温度只能连着电脑测,然后观察电脑端窗口数据的变化。
这一次我们实时显示的温度用数码管显示,串口打印的数据格式大体如下所示
第1秒:10.2度
第2秒:15.7度
第3秒:7.6度
第4秒:0.5度
2.main.c测试代码#include
#include //详见第六章第8讲
#include //详见第八章第11讲
#include //详见第十章第4讲
#include //详见第十三章第5讲
u8 flag1s = 0;
void main()
{
u32 x=1;
u8 str[13];
u16 temp;
EA = 1;
LED_Init();
Start18B20(); //启动DS18B20
TIM0_Init(1000,33); //定时1ms,33是微调使定时精度更高,每次微调都由中断函数里的内容而决定
ConfigUART(9600);
while (1)
{
if (flag1s) //每秒更新一次温度
{
flag1s = 0;
if( TEMP_CONV(&temp,str)==1 ) //返回值为1代表读取温度成功
{
printf_str("第");
printf_num(x);
x++;
printf_str("秒:");
printf_str(str+temp_i);
printf_str("度");
printf_rn(); //回车换行
temp_i=0;
//以下是处理数码管显示的内容
LedBuff[0]=LedChar[str[4]-'0'];
LedBuff[1]=0x7F; //显示小数点
LedBuff[2]=LedChar[str[2]-'0'];
if(str[0]=='-') //温度小于0
{
if(str[1]=='0')
{
LedBuff[3]=0xBF; //数码管显示“-”
LedBuff[4]=0xFF;
}
else
{
LedBuff[3]=LedChar[str[1]-'0'];
LedBuff[4]=0xBF; //数码管显示“-”
}
}
else //温度大于等于0
{
if(str[1]=='0')LedBuff[3]=0xFF; //高位不显示0
else LedBuff[3]=LedChar[str[1]-'0'];
if(str[0]=='0')LedBuff[4]=0xFF; //高位不显示0
else LedBuff[4]=LedChar[str[0]-'0'];
}
}
Start18B20(); //重新启动下一次转换
}
}
}
void TIM0_IRQHandler() interrupt 1
{
static u16 tmr1s = 0;
TH0 = T0RH; //重新加载重载值
TL0 = T0RL;
tmr1s++;
SEG_Scan();
if (tmr1s >= 1000) //定时1s
{
tmr1s = 0;
flag1s= 1;
}
}
void InterruptUART() interrupt 4
{
if (RI) //接收到字节
{
RI = 0; //手动清零接收中断标志位
}
}
3.串口打印截图
笔者上电之后,故意向开发板上的温度传感器吹热气,效果很棒
c语言用串口读温度值,温度传感器与串口相关推荐
- 51单片机综合课程设计多功能电子秤(显示时间、温度、存储、串口、报警装置等)
51单片机综合课程设计----多功能电子秤 关键词:proteus仿真.51单片机.DS1302时钟芯片.DB18B20温度芯片.AT24C02存储芯片.LCD1602液晶屏.ADC0832芯片等,文 ...
- python获取cpu温度_如何获得树莓派CPU实时温度值
[前言] 任何的电子设备在工作过程中必定会产生发热的现象,而不控制好设备的温度的话,很有可能会损坏设备,或者照成设备的性能下降,本文将通过学习如何读取树莓派CPU温度值,方便后期对树莓派做一些相应的控 ...
- 如何获得树莓派CPU实时温度值
如何获得树莓派CPU实时温度值 [前言] 任何的电子设备在工作过程中必定会产生发热的现象,而不控制好设备的温度的话,很有可能会损坏设备,或者照成设备的性能下降,本文将通过学习如何读取树莓派CPU温度值 ...
- 单片机c语言NTC温度查表程序,STM32查表法读NTC值并显示温度
STM32查表法读NTC值并显示温度 #include "stm32f10x.h"Y'+F0IZ+ #include "delay.h"pU'`9fLi_ #i ...
- 32读取ltc的温度值_Arduino基础入门篇29—模拟温度传感器LM35
温度传感器就是利用物质随温度变化特性的规律,把温度转换成可输出信号的传感器,是普遍应用的传感器之一.本篇介绍模拟温度传感器-LM35. 1. LM35介绍 LM35是很常用的温度传感器元件,电路连接非 ...
- STC51单片机26——串口发送DS18B20温度值
#include<reg51.h> #define uchar unsigned char #define uint unsigned in ...
- 串口屏与6050_MPU6050温度值的读取与转换及串口通信,请指导
MPU6050温度值的读取与转换及串口通信,请指导 [复制链接] 想读取6050的温度,并在上位机PC上的串口助手显示,可是串口上显示的全是乱码方块,代码如下: #include #include t ...
- 51单片机LCD显示温度与串口接受温度
外接晶振为12MHz时,51单片机相关周期的具体值为: 振荡周期=1/12us; 状态周期=1/6us; 机器周期=1us; 指令周期=1~4us; 51单片机定时/计数器的工作由两个特殊功能寄存器控 ...
- MAX6675 K型热电偶读温度
文章目录 K型热电偶简介 MAX6675简介 MAX6675时序 MAX6675寄存器内容 MAX6675读取程序 IO定义 IO初始化 串行数据读写程序 读取寄存器值 温度计算 主函数 实际效果 K ...
- 基于cc2530获取ds18b20温度值
@基于CC2530单片机获取温度传感器 基于CC2530单片机获取温度传感器 cc2530单片机是目前Ztack主流的一款产品,它与普通51的单片机不同于需要对各个IO口配置比如(设置io口的方向或输 ...
最新文章
- 150页在线书「几何深度学习」上线:利用对称性和不变性解决机器学习问题
- 如何开始学习以太坊及区块链
- Xposed注入实现分析及免重启定制
- SpringCloud与dubbo的区别
- Java类和对象初始化
- java 重置定时器_可重置Java定时器
- 上海师范大学计算机技术考研分数线,上海师范大学2019年考研复试分数线已公布...
- 通配符(WildCard)与正则表达式(Regular Expression)
- android google map研究
- 【Spring Cloud】网关 - Zuul(1.x)
- Twitter数据抓取的方法(三)
- 利用Mahout实现在Hadoop上运行K-Means算法
- OpenCV(0)---机器学习库
- Linux系统Anaconda下载安装教程
- C语言自学笔记(10)
- android 反编译去会员,反编译教程
- Spring动态代理详解
- 新手如何从零开始学习Unity3D,这边文章就够了!
- 深度学习(deep learning)发展史
- PCB设计——Altium Dsigner18之PCB与原理图交互式布局设计
热门文章
- my资源列表一 (csdn 99% 0分资源下载)
- Telos 首份年报(中译版-下)
- Ubuntu修改/home下各目录为英文
- Pr——将视频画面旋转90度的一种方法
- Android面试总结
- C++关键字—this
- 计算机主机跳线连接图片,台式电脑主机五根跳线怎么接?红白 蓝白 绿 白 橙白...
- 同一个接口返回多种数据类型
- java接口分几种类型_细数Java接口的概念、分类及与抽象类的区别
- WPF 做的天干地支 乾坤八卦时钟表盘 可以设置24小时制