DS18B20温度单片机控制显示C程序

发布者:Yinyue1314最新更新时间:2016-11-08 来源: eefocus关键字:DS18B20  单片机  控制显示 手机看文章 扫描二维码
随时随地手机看文章
温度值精确到0.1度,lcd1602显示

仿真电路图如下

 

DS18B20温度单片机控制显示C程序 - mybjs2008 - mybjs2008的博客

c程序如下:

#include

#define uchar unsigned char
#define uint unsigned int

sbit DQ=P3^7;//ds18b20与单片机连接口
sbit RS=P3^0;
sbit RW=P3^1;
sbit EN=P3^2;

unsigned char code str1[]={"temperature: "};
unsigned char code str2[]={"              "};

uchar data disdata[5];
uint tvalue;//温度值
uchar tflag;//温度正负标志

/*************************lcd1602程序**************************/
void delay1ms(unsigned int ms)//延时1毫秒(不够精确的)
{unsigned int i,j;
   for(i=0;i     for(j=0;j<100;j++);
}

void wr_com(unsigned char com)//写指令//
{ delay1ms(1);
   RS=0;
   RW=0;
   EN=0;
   P2=com;
   delay1ms(1);
   EN=1;
   delay1ms(1);
   EN=0;
}

void wr_dat(unsigned char dat)//写数据//
{ delay1ms(1);;
   RS=1;
   RW=0;
   EN=0;
   P2=dat;
   delay1ms(1);
   EN=1;
   delay1ms(1);
   EN=0;
}

void lcd_init()//初始化设置//
{delay1ms(15);
wr_com(0x38);delay1ms(5);
   wr_com(0x08);delay1ms(5);
    wr_com(0x01);delay1ms(5);
     wr_com(0x06);delay1ms(5);
      wr_com(0x0c);delay1ms(5);
}


void display(unsigned char *p)//显示//
{
while(*p!='\0')
{
wr_dat(*p);
p++;
delay1ms(1);
}
}

init_play()//初始化显示
{ lcd_init();
    wr_com(0x80);
display(str1);
wr_com(0xc0);
display(str2);
   }

/******************************ds1820程序***************************************/
void delay_18B20(unsigned int i)//延时1微秒
{
   while(i--);
}

void ds1820rst()/*ds1820复位*/
{ unsigned char x=0;
DQ = 1;          //DQ复位
delay_18B20(4); //延时
DQ = 0;          //DQ拉低
delay_18B20(100); //精确延时大于480us
DQ = 1;          //拉高
delay_18B20(40); 
   } 

   uchar ds1820rd()/*读数据*/
{ unsigned char i=0;
unsigned char dat = 0;
for (i=8;i>0;i--)
{   DQ = 0; //给脉冲信号
    dat>>=1;
    DQ = 1; //给脉冲信号
    if(DQ)
    dat|=0x80;
    delay_18B20(10);
}
   return(dat);
}

void ds1820wr(uchar wdata)/*写数据*/
{unsigned char i=0;
    for (i=8; i>0; i--)
   { DQ = 0;
     DQ = wdata&0x01;
     delay_18B20(10);
     DQ = 1;
     wdata>>=1;
   }
}
 

read_temp()/*读取温度值并转换*/
{uchar a,b;
ds1820rst();    
ds1820wr(0xcc);//*跳过读序列号*/
ds1820wr(0x44);//*启动温度转换*/
ds1820rst();    
ds1820wr(0xcc);//*跳过读序列号*/ 
ds1820wr(0xbe);//*读取温度*/ 
a=ds1820rd();
b=ds1820rd();
tvalue=b;
tvalue<<=8;
tvalue=tvalue|a;
    if(tvalue<0x0fff)
   tflag=0;
    else
   {tvalue=~tvalue+1;
tflag=1;
   }
tvalue=tvalue*(0.625);//温度值扩大10倍,精确到1位小数
return(tvalue);
}

/*******************************************************************/
   void ds1820disp()//温度值显示
{ uchar flagdat;
   disdata[0]=tvalue/1000+0x30;//百位数
     disdata[1]=tvalue%1000/100+0x30;//十位数
     disdata[2]=tvalue%100/10+0x30;//个位数
     disdata[3]=tvalue%10+0x30;//小数位
    
     if(tflag==0)
     flagdat=0x20;//正温度不显示符号
     else
       flagdat=0x2d;//负温度显示负号:-

     if(disdata[0]==0x30)
    {disdata[0]=0x20;//如果百位为0,不显示
   if(disdata[1]==0x30)
    {disdata[1]=0x20;//如果百位为0,十位为0也不显示
    }
   }

    wr_com(0xc0);
   wr_dat(flagdat);//显示符号位
    wr_com(0xc1);
    wr_dat(disdata[0]);//显示百位
    wr_com(0xc2);
    wr_dat(disdata[1]);//显示十位 
    wr_com(0xc3);
    wr_dat(disdata[2]);//显示个位 
    wr_com(0xc4);
    wr_dat(0x2e);//显示小数点 
    wr_com(0xc5);
    wr_dat(disdata[3]);//显示小数位
   }
/********************主程序***********************************/
void main()
{ init_play();//初始化显示
   while(1)
{read_temp();//读取温度
    ds1820disp();//显示
}
}


关键字:DS18B20  单片机  控制显示 引用地址:DS18B20温度单片机控制显示C程序

上一篇:基于单片机89C51产生PWM信号来控制直流电机调速程序
下一篇:c51编程中sbit sfr 用法

推荐阅读最新更新时间:2024-03-16 15:19

基于C504单片机的变频调速系统
    摘要: 介绍了一种以C504专用芯片和智能功率模块IPM为基础的SPWM变频调速系统。它可以实现输出频率在0~60Hz和载波频率在500Hz~10kHz之间变化,有数条V/F曲线、启动时间、载波比和调制方式等选择功能,并具有多种保护功能和人机对话功能,对参数可随时调节。     关键词: C504芯片 SPWM 变频调速 捕捉/比较单元(CCU) 随着变频调速应用的日益广泛,相关技术的日益成熟,人们不仅对变频调速系统的性能要求越来越高,而且对控制芯片的功能要求越来越多,对功能开关元件的智能化要求越来越高,以满足生产的需求并适应不同的工作环境。为此,本文介绍了一种主电路采用智能模块IPM,控制芯片采用西
[应用]
MCS-51单片机控制字详解
MCS-51单片机控制字详解(1) P3 TCON P3口的代替功能 寄存器地址B0H,位寻址B7H~B0H。 引脚 P3.0 P3.1 P3.2 P3.3 P3.4 P3.5 P3.6 P3.7 代替功能 RXD TXD /INT0 /INT1 T0 T1 /WR /RD TCON:定时器控制寄存器 寄存器地址88H,位寻址8FH~88H。 位地址 8F 8E 8D 8C 8B 8A 89 88 位符号 TF1 TR1
[单片机]
浅谈8051单片机进行外部数据交换的3种方式
单片机CPU与外部设备交换信息通常有如下几种方式:无条件传送方式,查询传送方式和中断传送方式。我们以单片机与微型打印机接口为例讲述这三种方式。假定用户要打印三个数据,这三个数据保存在单片机的内部数据存储器10H,11H,和12H中,8051用并口P2与微型打印机的并行数据口DB进行数据交换。 (1)无条件传送方式 这种数据传送方式中没有联络信号,即CPU总是认为打印机在如何时候都是处于“准备好”的状态。这种传送方式中只需要在程序中加入数据送往P2的指令,数据传送便可以实现。但这种数据传送方式有一个致命弱点,数据易丢失,这是因为CPU的速度相当快,而打印机的速度相对来说较慢,其结果是在打印机打印一个数据的时间内,CPU已送来了
[单片机]
单片机成长之路(51基础篇) - 022 N76e003 APROM模拟EEPROM驱动
N76e003单片机内部没有EEPROM,但是可以使用 APROM模拟EEPROM功能,代码如下: eeprom.h 1 #ifndef _EEPROM_H_ 2 #define _EEPROM_H_ 3 4 //EEPROM 指令 5 #define BYTE_PROGRAM_AP 0x21 //APROM 字节编程(数据写入) 6 #define PAGE_ERASE_AP 0x22 //APROM 页擦除 (128字节) 7 #define BYTE_Read_AP 0x00 //APROM 字节读 (数据字节) 8 9 10 // EEPROM起始地址 11 #define EEPRO
[单片机]
单片机执行指令过程详解
单片机执行指令过程详解 单片机执行程序的过程,实际上就是执行我们所编制程序的过程。即逐条指令的过程。计算机每执行一条指令都可分为三个阶段进行。即取指令-----分析指令-----执行指令。 取指令的任务是:根据程序计数器PC中的值从程序存储器读出现行指令,送到指令寄存器。 分析指令阶段的任务是:将指令寄存器中的指令操作码取出后进行译码,分析其指令性质。如指令要求操作数,则寻找操作数地址。 计算机执行程序的过程实际上就是逐条指令地重复上述操作过程,直至遇到停机指令可循环等待指令。 一般计算机进行工作时,首先要通过外部设备把程序和数据通过输入接口电路和数据总线送入到存储器,然后逐条取出执行。但单片机中的程序一般事先我们
[单片机]
<font color='red'>单片机</font>执行指令过程详解
单片机的抗干扰措施
1单片机自身的抗干扰措施研制 ------------------------------------------------------------------------- 为提高单片机本身的可靠性。近年来单片机的制造商在单片机设计上采取了一系列措施以期提高可靠性。这些技术主要体现在以下几方面。 1.降低外时钟频率 外时钟是高频的噪声源,除能引起对本应用系统的干扰之外,还可能产生对外界的干扰,使电磁兼容检测不能达标。在对系统可靠性要求很高的应用系统中,选用频率低的单片机是降低系统噪声的原则之一。以8051单片机为例,最短指令周期1 s时,外时钟是12MHz。而同样速度的Motorola 单片机系统时钟只需4MH
[单片机]
51单片机总结—上拉电阻
上拉电阻的作用: (1) 用于为OC和OD门电路,提供驱动能力。 以OC(集电极开路)电路为例: 例如,达林顿管(其实就是复合三级管)集成块ULN2003. 内部一路的电路如图,就是一个集电极开路电路。 如果不加上拉电阻是无法高电平驱动其他器件的。因为当三极管截至市没有电流流通的路径,更谈不上驱动了。这个跟单片机P0口加上拉电阻的原理一样。 (2)提高高电平电位: 单片机P1口外接4×4矩阵键盘。另外复用P1.0~P1.3外接ULN2003控制驱动步进电机。 实验中遇到的问题:当接入ULN2003时键盘无法工作,去掉ULN2003后键盘工作正常。ULN2003工作正常。(注,两个部分不同时工作) 问
[单片机]
51<font color='red'>单片机</font>总结—上拉电阻
兆易创新推出GD32F5系列Cortex®-M33内核MCU,提供工业高性能应用新选择
中国北京(2024年3月7日)—— 业界领先的半导体器件供应商兆易创新GigaDevice(股票代码 603986)今日宣布,正式 推出基于Arm® Cortex®-M33内核的GD32F5系列高性能微控制器,全面适配于能源电力、光伏储能、工业自动化、PLC、网络通讯设备、图形显示等应用场景。 GD32F5系列高性能MCU具备显著扩容的存储空间、优异的处理能效和丰富的接口资源,该系列MCU符合系统级IEC61508 SIL2功能安全标准,并且提供完整的软硬件安全方案,能够满足工业市场对高可靠性和高安全性的需求。目前,该系列产品已可提供样片,并将于5月正式量产供货。 GD32F5系列Cortex®-M33内核高性能MCU
[嵌入式]
兆易创新推出GD32F5系列Cortex®-M33内核<font color='red'>MCU</font>,提供工业高性能应用新选择
小广播
添点儿料...
无论热点新闻、行业分析、技术干货……
设计资源 培训 开发板 精华推荐

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

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

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