标题:
DS18B20温度传感器数码管显示温度 仿真和代码
[打印本页]
作者:
上官旭一
时间:
2017-5-8 18:30
标题:
DS18B20温度传感器数码管显示温度 仿真和代码
ds18b20使用下面是单片机原理图:
0.png
(30.12 KB, 下载次数: 37)
下载附件
2017-5-8 19:01 上传
0.png
(53.8 KB, 下载次数: 47)
下载附件
2017-5-8 19:00 上传
单片机源程序:
/*-----------------------------------------------
名称:DS18b20数码管显示温度
编写:林雁翔
内容:显示格式 符号 xxx C
可以显示负温度
------------------------------------------------*/
#include <reg52.h>
#include "delay.h"
#include "ds18b20.h"
#define uint unsigned int
#define uchar unsigned char
#define duanMa P0
#define weiMa P2
uchar code disCode[]={0xc0,0xf9,0xa4,0xb0,0x99,0x92,
0x82,0xf8,0x80,0x90,0xff,0xBF,0xc6}; //共阳极数码管显示字符编码
uchar code disBit[]={0x01,0x02,0x04,0x08,0x10,0x20}; //数码管显示位码
uchar disBuf[]={6,6,6,9,9,9}; //准备显示的数字
uint tempNum=0,tempH,tempL;
bit tempFlag=0;
void Init();
void Display();
void main()
{
Init();
while(1)
{
tempNum=ReadTemperature();
if(tempNum&(1<<15)) //如果温度为负数,则取原码
{
tempNum=~tempNum;
tempNum+=1;
tempFlag=1; //标志为负数
}
//tempL=tempNum|0x0F; //获取低四位的小数温度位
tempH=tempNum>>4; //获取整数位温度位
if(tempFlag==1)
{
tempFlag=0;
disBuf[0]=11; //显示负号
}
else
{
disBuf[0]=10; //不显示任何数据
}
disBuf[1]=tempH/100;
disBuf[2]=tempH%100/10;
disBuf[3]=(tempH%10);
disBuf[4]=10; //不显示小数
disBuf[5]=12; //显示C
Display();
}
}
void Init()
{
duanMa=0xFF; //初始化数码管断码
weiMa=0x00; //初始化数码管位码
}
void Display()
{
uchar i=0;
for(i=0;i<6;i++)
{
duanMa=disCode[disBuf[i]];
…………限于本文篇幅 余下代码请从51黑下载附件…………
复制代码
下载:
DS18B20温度传感器.rar
(65.72 KB, 下载次数: 124)
2017-5-8 18:29 上传
点击文件名下载附件
下载积分: 黑币 -5
作者:
7777333
时间:
2017-6-19 08:58
厉害,谢谢楼主,课设有希望了
作者:
sakuralap
时间:
2019-3-25 20:08
谢谢,哈哈
作者:
耆睿
时间:
2019-4-2 18:42
大哥你这下载的附件原理图在哪?
欢迎光临 (http://www.51hei.com/bbs/)
Powered by Discuz! X3.1