查看: 3383|回复: 98
打印 上一主题 下一主题

51 ds18b20温度计实验 实验(十五)

  [复制链接] qrcode

24

主题

30

帖子

86

积分

注册会员

Rank: 2

积分
86
楼主
跳转到指定楼层
发表于 2015-5-7 11:24 AM | 显示全部楼层 回帖奖励 |倒序浏览 |阅读模式

这个实验利用DS18B20做一个温度计实验,详情见
附件
平台:FDR51开发板
主程序代码:
#include
#include "ds18b20.h"
#include "delay.h"
#define LEDPORT P0
/*-------------数码管显示函数--------------------
参数:number 要显示的数字
参数:pos 要显示的位置(从左到右为1--4)
返回值:无
------------------------------------------------*/
void display(uchar number,uchar pos)//数码管显示函数
{
uchar temp; //临时变量
if(number<10 && pos<5 && pos>0)//确定数据合法
{
temp=(number<<4)&0xf0;//获得要显示的数据
temp+=1<<(pos-1); //送位置位
LEDPORT=temp; ////送显示数据,开始显示
}
else return;
}
void leddisplay(unsigned int count)
{
unsigned char i="500";
while(i--)
{
if(count>=1000)
{
display(count/1000,1);
delay_ms(1);
display(count%1000/100,2);
delay_ms(1);
display(count%100/10,3);
delay_ms(1);
display(count%10,4);
delay_10us(10);
}
else if(count>=100)
{
display(count/100,2);
delay_ms(1);
display(count%100/10,3);
delay_ms(1);
display(count%10,4);
delay_10us(10);
}
else if(count>=10)
{
display(count/10,3);
delay_ms(1);
display(count%10,4);
delay_10us(10);
}
else
{
display(count,4);
delay_10us(10);
}
}
}
void main()
{
unsigned int temp="0";
while(1)
{
temp=(zhengshu*10+xiaoshu1);
Read_18B20();
leddisplay(temp);
}
}

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?立即注册

x
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

快速回复 返回顶部 返回列表