
基于51单片机的数字温度计
简介
数字温度计是一种用于测量温度的电子设备,它能够以数字形式显示温度值。数字温度计通常由传感器、微处理器和显示屏等组成。
简介:数字温度计是一种用于测量温度的电子设备,它能够以数字形式显示温度值。数字温度计通常由传感器、微处理器和显示屏等组成。开源协议
:GPL 3.0
描述
方案框图:
原理图设计说明
电源部分:

显示部分:

温度检测部分:

报警电路:

51最小系统:

PCB设计说明
没有什么特别需要注意的,就是P0要外接上拉电阻。

软件说明
提示:软件可以使用代码块来进行嵌套放置,无需全部软件部分说明,只需说明重要部分即可
代码块:
#include<stdio.h> void main() {
unsigned char high, low;
init_ds18b20(); // 初始化DS18B20
write_byte(0xcc); // 跳过ROM操作
write_byte(0x44); // 启动温度转换
delay(1000); // 等待转换完成
init_ds18b20(); // 初始化DS18B20
write_byte(0xcc); // 跳过ROM操作
write_byte(0xbe); // 读取温度寄存器
low = read_byte(); // 读取温度低位
high = read_byte(); // 读取温度高位
// 计算温度值
printf("Temperature: %d.%d Celsius\n", high, low);
while(1);printf(""/n); }
void delay(unsigned int t) // 延时函数
{
while(t--);
}
void init_ds18b20() // 初始化DS18B20
{
DQ = 1; // 线拉高
delay(8); // 延时480us
DQ = 0; // 发送复位脉冲
delay(80); // 延时4800us
DQ = 1; // 释放总线
delay(8); // 延时480us
}
unsigned char read_byte() // 读取一个字节
{
unsigned char i, dat = 0;
for(i = 0; i < 8; i++)
{
dat >>= 1; // 从高位到低位读取数据
DQ = 0; // 发送读取命令
_nop_();
_nop_();
DQ = 1; // 释放总线
_nop_();
_nop_();
if(DQ) // 读取数据
dat |= 0x80;
delay(8); // 延时
}
return dat;
}
void write_byte(unsigned char dat) // 写入一个字节
{
unsigned char i;
for(i = 0; i < 8; i++)
{
DQ = 0; // 发送写入命令
DQ = dat & 0x01;
_nop_();
_nop_();
DQ = 1; // 释放总线
dat >>= 1; // 下一位
}
delay(8); // 延时
}
实物展示说明
提示:作品的实物图片,图片可以加上说明。

演示视频
提示:演示视频上传附件即可,附件最大只能长传50M的文件,大于50M的文件可放置在其他网盘或视频网站上,只需把地址链接放入这里即可
其它附件上传
提示:参加活动的作品必须把工程相关的程序附件上传至开源平台或个人的代码存储云端,附件最大支持50M上传(请勿在立创工作区上传,有限制)
设计图
未生成预览图,请在编辑器重新保存一次BOM
暂无BOM
克隆工程知识产权声明&复刻说明
本项目为开源硬件项目,其相关的知识产权归创作者所有。创作者在本平台上传该硬件项目仅供平台用户用于学习交流及研究,不包括任何商业性使用,请勿用于商业售卖或其他盈利性的用途;如您认为本项目涉嫌侵犯了您的相关权益,请点击上方“侵权投诉”按钮,我们将按照嘉立创《侵权投诉与申诉规则》进行处理。
请在进行项目复刻时自行验证电路的可行性,并自行辨别该项目是否对您适用。您对复刻项目的任何后果负责,无论何种情况,本平台将不对您在复刻项目时,遇到的任何因开源项目电路设计问题所导致的直接、间接等损害负责。



评论