DS18B20温度测试程序(51单片机数码管显示)+电路图

发布者:码字狂人最新更新时间:2014-12-11 来源: 51hei关键字:DS18B20  温度测试  51单片机  数码管显示 手机看文章 扫描二维码
随时随地手机看文章
下面是电路图 采用4位数码管显示 程序一共有2个文件 :

/***********************************************

ds18b20.h 头文件
*************************************************/
#ifndef _DS18B20_H_
#define _DS18B20_H_
#include
#define led P1
#define ledw P2
extern unsigned char f;
extern void ds18b20_reset();
extern void dela(unsigned char i);
extern void ds18b20_write(unsigned char dat);
extern unsigned char ds18b20_read();
extern unsigned char ds18b20_temp();
extern unsigned char ledtab[];
#endif
 

 

/***************************************
 ds18b20.c 文件
*********************************************/
#include"ds18b20.h"
#define uchar unsigned char
#define uint unsigned int
#define led P1
#define ledw P2
uchar ledtab[]={0xc0,0xf9,0xa4, 0xb0,0x99,0x92,0x82,0xf8,0x80,0x90};
sbit dq=P3^7 ;
uchar delay,f;
//uchar f;           
void dela(uchar i)   //5us   t=5+i*2
{
 while(--i);
}
void ds18b20_reset()
{
 while(1)
 {
 dq=1;
 dq=0;
 delay=250;    //540us延时,当delay=1时延时为2us ,T=2*x
 while(--delay);
 dq=1;
 delay=25;
 while(--delay);
 while(dq==0)
 {
  delay=220;
  while(--delay);
  if(dq==1)
  break;  
 }
 delay=150;
 while(--delay);
 break;
   }
}
void ds18b20_write(uchar dat)
{
 uchar i=0;
 for(i=0;i<8;i++)
 {
  dq=1;
  dq=0;
  delay=3;
  while(--delay);
  dq=dat&0x01;
  delay=35;
  while(--delay);
  dq=1;
  dat=dat>>1;
 }
}
uchar ds18b20_read()
{
 uchar i=0,m=0;
 for(i=0;i<8;i++)
   {
    //m>>=1
    dq=1;
  dq=0;
  delay=4;
  while(--delay);
  dq=1;
  delay=4;
  while(--delay);
  if(dq==1)
  m|=0x01<  //m=m|0x80;
   delay=25;
   while(--delay);
   dq=1;
   delay=1;
   while(--delay);  
   }
   return m;
}
         
uchar ds18b20_temp()
{
 uchar temp=0,temph=0,templ=0,k=0;
 ds18b20_reset();
 ds18b20_write(0xcc);
 ds18b20_write(0x44);
 ds18b20_reset();
 ds18b20_write(0xcc);
 ds18b20_write(0xbe);
 templ=ds18b20_read();
 temph=ds18b20_read();
 if((temph&0xf80)!=0)
 {
  f=1;
  templ=~templ;
  temph=~temph;
  k=templ+1;
  templ=k;
  if(templ>0xff)
  {
  temph++;
  }
 }
 else
 f=0;
 templ=templ>>4;
 temph=temph<<4;
 temp=templ|temph;
 return temp;
}
 

 

/******************************************
main.c 主文件
***************************************************/
#include
#include"ds18b20.h"
#define uchar unsigned char
void main()
{
 uchar a=0,b=0,c=0,temp=0;
 while(1)
 {  
 temp=ds18b20_temp();
 a=temp/100;
 b=temp0/10;
 c=temp;
 
 if(f==1)
 {
  led=0xbf;
  ledw=1;
  dela(5000);
  ledw=0;
  dela(600);
 }
 led=ledtab[c];
 ledw=8;
 dela(5000);
 ledw=0;
 dela(600) ;
 
  led=ledtab[b];
  ledw=4;
    dela(5000);
  ledw=0;
  dela(600) ;
 
 
  led=ledtab[a];
  ledw=2;
  dela(5000);
  ledw=0;
  dela(600) ;
  }
}

关键字:DS18B20  温度测试  51单片机  数码管显示 引用地址:DS18B20温度测试程序(51单片机数码管显示)+电路图

上一篇:充电电池容量测试仪设计
下一篇:LCD12864 液晶显示器 模块化程序

推荐阅读最新更新时间:2024-03-16 13:48

5-基于51单片机的仓库三路温度检测调节系统设计
具体实现功能 具体功能: 1、采用三个DS18B20温度传感器测温并用LCD1602显示三个温度值,并显示三路温度平均值; 2、按键为设置按键、加键和减键,可设置上下限温度控制范围; 3、当平均温度值超过设定的上或下限时,相应的指示灯亮,同时相应的继电器吸合,继电器可以驱动负载工作; 4、当平均温度值超过设定的上限时,继电器吸合,风扇转动表示降温; 5、当平均温度值低于设定的下限时,继电器吸合,加热膜工作表示升温。 单片机介绍 51单片是一种低功耗、高性能CMOS8位微控制器,具有 8K 在系统可编程Flash 存储器。在单芯片上,拥有灵巧的8 位CPU 和在系统可编程Flash,使得STC89C51为众多
[单片机]
5-基于<font color='red'>51单片机</font>的仓库三路<font color='red'>温度</font>检测调节系统设计
51单片机小白零基础教程——独立键盘检测原理以及实际应用
一、键盘的概念 键盘:是电子系统中,人机对话的重要组成部分,是人向机器发出指令、输入信息必须的设备 通常来说,键盘有编码键盘和非编码键盘两种。 编码键盘:键盘上闭合键的识别由专门的硬件编码器实现,并产生键编码号或键值的称为编码键盘,如计算机键盘,这种键盘使用方便,所需程序简单,但硬件电路复杂 非编码键盘:是利用软件编程来实别键盘的,在单片机组成的各种系统中,最常用的就是非编码键盘,特点是硬件电路简单 非编码键盘又分为独立键盘和矩阵式键盘。 二、独立键盘的检测 在单片机的外围电路中,常常用到的按键是机械弹性开关,当开关闭合时,线路导通,开关断开时,线路断开。 如图,当按下开关时,原本连在一起的1和2脚,3
[单片机]
<font color='red'>51单片机</font>小白零基础教程——独立键盘检测原理以及实际应用
51单片机C中关于.c文件和.h文件
1)h文件作用 1 方便开发:包含一些文件需要的共同的常量,结构,类型定义,函数,变量申明; 2 提供接口:对一个软件包来说可以提供一个给外界的接口(例如: stdio.h)。 2)h文件里应该有什么 常量,结构,类型定义,函数,变量申明。 3)h文件不应该有什么 变量定义, 函数定义。 4)extern问题 对于变量需要extern; 对于函数不需要因为函数的缺省状态是extern的.如果一个函数要改变为只在文件内可见,加static。 5)include包含问题 虽然申明和类型定义可以重复,不过推荐使用条件编译。 #ifndef _FILENAME_H, #define _FILENAME_H ……
[单片机]
MSP430和AT89C51单片机4x4键盘C程序
本程序在一位上显示按键,如果多位显示主程序需要修高为多位显示。本程序软件包括去抖功能,没有注释说明。 #include reg51.h #define uchar unsigned char #define uint unsigned int uint key,i; uchar temp,temp1,ms,buff; uchar tab ={0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80, 0x90,0x88,0x83,0xc6,0xa1,0x86,0x8e}; void delay(ms) { while(ms--) { for(i=0;i 120;i++);
[单片机]
MSP430和AT89C<font color='red'>51单片机</font>4x4键盘C程序
51单片机扩展IO口后扩展口的地址如何确定
1. 然后它说8255的A口、B口、C口、控制寄存器的地址分别为7FFCH、7FFDH、7FFEH、7FFFH。这个是怎么算出来的? 高八位7F是因为p2.7为0是选通8255的cs片选端,第八位是FC,FD,FE,FF是由8255内部结构决定的,芯片的技术手册上会有,其实也是由最后两位的组合进行选择 2.在用C51的P0,P2口做外部扩展时使用,其中XBYTE ,P2口对应于地址高位,P0口对应于地址低位。一般P2口用于控制信号,P0口作为数据通道。 比如:P2.7接WR,P2.6接RD,P2.5接CS,那么就可以确定个外部RAM的一个地址,想往外部RAM的一个地址写一个字节时,地址可以定为XBYTE ,其中WR,
[单片机]
<font color='red'>51单片机</font>扩展IO口后扩展口的地址如何确定
几种延时的汇编执行代码对比与总结
拜读了网上《51单片机 Keil C 延时程序的简单研究 》(by: InfiniteSpace Studio/isjfk, 1.21.2004 )一文,借鉴了文中的方法,测试发现有一点点出入,原文作者在计算延时时间的时候是否忘了加上RET指令……下面介绍我的测试结果,欢迎交流探讨—— 一、单独定义变量,for语句 28: delay1(1); C:0x0005 7F01 MOV R7,#0x01 C:0x0007 1121 ACALL delay1(C:0021) 12: void delay1(unsigned char k) 13: { 17: unsigned char i=0; C:0x0021 E4 C
[单片机]
51单片机中变量的定义及应用方法
变量就是一种在程序执行过程中其值能不断变化的量。要在程序中使用变量必须先用标识符作为变量名,并指出所用的数据类型和存储模式,这样编译系统才能为变量分配相应的存储空间。定义一个变量的格式如下: 在定义格式中除了数据类型和变量名表是必要的,其它都是可选项。存储种类有四种:自动(auto),外部(extern),静态(statIC)和寄存器(register),缺省类型为自动(auto)。 而这里的数据类型则是和我们在第四课中学习到的名种数据类型的定义是一样的。说明了一个变量的数据类型后,还可选择说明该变量的存储器类型。存储器类型的说明就是指定该变量在C51硬件系统中所使用的存储区域,并在编译时准确的定位。注意的是在AT89C51芯
[单片机]
<font color='red'>51单片机</font>中变量的定义及应用方法
小广播
添点儿料...
无论热点新闻、行业分析、技术干货……
设计资源 培训 开发板 精华推荐

最新单片机文章
何立民专栏 单片机及嵌入式宝典

北京航空航天大学教授,20余年来致力于单片机与嵌入式系统推广工作。

换一换 更多 相关热搜器件
电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2024 EEWORLD.com.cn, Inc. All rights reserved