基于51单片机的温度计-25~25°C
(仿真+程序)
功能介绍
具体功能:
1.DS18B20测温;
2.74HC595驱动数码管显示测得温度;
3.温度显示范围为-25~25°C;
演示视频:
基于51单片机的温度计-数码管显示(-25~25度)
添加图片注释,不超过 140 字(可选)
程序
/***微信公众号:木子单片机****
************************************/
#include<reg51.h>
#include<stdio.h>
#include<ds18b20.h>
//74HC595引脚定义
sbit MOSIO=P2^1;
sbit R_CLKa=P2^2;
sbit S_CLKa=P2^0;
sbit LED = P0^0 ;
/
uchar vision_cnt = 0 ; //数码管动态扫描计数变量
bit updat = 0 ; //动态刷新标志
uint cnt = 0 ;
uchar sec = 0 ; //温度数据暂存变量
bit read_t = 0 ; //温度读取标志位
bit fg = 0 ; //温度符号存储标志位
uchar code table[]={
0x3f,0x06,0x5b,0x4f,
0x66,0x6d,0x7d,0x07,
0x7f,0x6f,0x77,0x07,
0x39,0x5e,0x79,0x71,
0x40,0x39
};
//共阴极数码管显示数组0-f
/*
********************************************************************************
** 函数名称 : send595(uchar dat)
** 函数功能 : 数据输入
********************************************************************************
*/
void send595(uchar dat) //数据输入
{
uchar i;
for(i=0;i<8;i++)
{
if((dat<<i)&0x80)
MOSIO = 1 ;
else
MOSIO = 0 ;
S_CLKa=0;
S_CLKa=1;
}
}
/*
********************************************************************************
** 函数名称 : out595(void)
** 函数功能 : 数据输出
********************************************************************************
*/
void out595(void) // 数据输出
{
R_CLKa=0;
R_CLKa=1; //上升沿
}
/*
********************************************************************************
** 函数名称 : vision(uchar dat,uchar pos)
** 函数功能 : 显示函数
********************************************************************************
*/ //在数码管某个位置上显示某个数字
void vision(uchar dat,uchar pos,uchar point)
{
uchar buf = 0 ;
send595(~pos);
if(point==1)
buf = 0x80|table[dat];
else
buf = table[dat];
send595(buf);
out595();
}
//定时器初始化函数,
void timer_config(void)
{
TMOD |= 0x01 ; //设置定时器0和定时器1工作在方式1--16位计数模式
TH0 = (65535-60000)/256 ; //设置定时器初值高位
TL0 = (65535-60000)%256 ; //设置定时器初值低位
TR0 = 1 ; //启动定时器0
ET0 = 1 ; //开启定时器0中断
EA = 1 ; //开启总中断
}
//定时器0中断函数
void timer0_isr() interrupt 1
{
TH0 = 0xfc ; //设置定时器初值高位 1ms定时
TL0 = 0x17 ; //设置定时器初值低位
updat = 1 ; //置位标志位
if(cnt<500) //温度采集周期,大约500多ms一次,不建议作太快的采集
{
cnt++;
}else
{
cnt = 0 ;
read_t = 1 ; //更新采集标志位
}
}
硬件设计
使用元器件:
单片机:AT89C51;
(注意:单片机是通用的,无论51还是52、无论stc还是at都一样,引脚功能都一样。程序也是一样的。)
添加图片注释,不超过 140 字(可选)
设计资料
01仿真图
本设计使用proteus7.8和proteus8.9两个版本设计!具体如图!
添加图片注释,不超过 140 字(可选)
02程序
本设计使用软件keil5版本编程设计!具体如图!
添加图片注释,不超过 140 字(可选)
03设计资料
资料获取请关注同名公众号,全部资料包括程序(含注释)、仿真源文件等。具体内容如下,全网最全!!
添加图片注释,不超过 140 字(可选)
可以关注下方公众号!
点赞分享一起学习成长。