提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档
前言
利用51单片机为核心实现温度测量,利用DS18B20温度传感器获取温度信号,将需要测量的温度信号转化为数字信号,利用单总线和单片机交换数据,最终单片机将识别的温度以数码管显示和串口返回数据的形式输出。本次程序使用的是清翔51单片机,温度测量范围为-10~+85°C,精度为+-0.5°C。
使用步骤
1.最终成果代码
代码如下:
#include <reg52.h>
#include <intrins.h>
#include <stdio.h>
#define uint unsigned int
#define uchar unsigned char
sbit WE = P2^7;
sbit DU = P2^6;
sbit DS = P2^2;
uint temp,a=0;
uchar code SMGwei[] = {0xfe,0xfd,0xfb};//共阴数码管段选表0-9
uchar code SMGduan[] = {0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f,};//数码管位选码
//us延时函数,执行一次us--需6.5us,进入一次函数需11.95us
void delay_us(uchar us)
{
while(us--);
}
//数码管显示
void display(uchar i)
{
static uchar wei;
P0 = 0xfe;//清除断码
WE = 1;//打开位选锁存
P0 = SMGwei[wei];//
WE = 0;
switch(wei)
{
case 0:DU = 1;P0 = SMGduan[i / 100]; DU = 0;
break;
case 1:DU = 1;P0 = SMGduan[i % 100 /10]|0x80; DU = 0;
break;
case 2:DU = 1;P0 = SMGduan[i % 10]; DU = 0;
break;
}
wei++;
if(wei == 3