DS18B20温度传感器示例

发布者:代码漫游者最新更新时间:2019-05-09 来源: eefocus关键字:DS18B20  温度传感器  液晶 手机看文章 扫描二维码
随时随地手机看文章


/*

*******************************************************************************

* 文件名:main.c

* 描  述:温度传感器DS18B20示例

* 备  注:控制DS18B20测量温度并将温度值显示到液晶上

*******************************************************************************

*/

#include

#include "stdint.h"

 

extern bit startDs18b20();

extern bit getDs18b20Temperature(int * temp);

extern void initLcd1602();

extern void lcd1602ShowStr(uint8_t x, uint8_t y, uint8_t * str);

extern uint8_t getIntPart(int16_t temp);

extern uint8_t getDecPart(int16_t temp);

 

bit flag1s = 0;          //1s定时标志

uint8_t T0RH = 0, T0RL = 0; 

 

void ConfigTimer0(uint16_t ms);

uint8_t IntToString(uint8_t * str, int16_t dat);

 

void main() {

    bit res;

int16_t temp; //读取到的当前温度值

uint8_t intT, decT; //温度值的整数和小数部分

    uint8_t len;

    uint8_t str[12];

 

    EA = 1;            //开总中断

    ConfigTimer0(10);  //T0定时10ms

    startDs18b20();      //启动DS18B20

    initLcd1602();     //初始化液晶

    

    while (1) {

        if (flag1s) { //每秒更新一次温度(软实时)

            flag1s = 0;

            res = getDs18b20Temperature(&temp);  //启动转换后至少要再等750ms之后读取当前温度

            if (res) { //读取成功时,刷新当前温度显示          

intT = getIntPart(temp); //分离出温度值整数部分

decT = getDecPart(temp);     //分离出温度值小数部分

                len = IntToString(str, intT); //整数部分转换为字符串

                str[len++] = '.';              //添加小数点

                str[len++] = decT + '0';      //十进制小数位再转换为ASCII字符

                while (len < 6) { //用空格补齐到6个字符长度

                    str[len++] = ' ';

                }

                str[len] = '';              //添加字符串结束符

                lcd1602ShowStr(0, 0, str);        //显示到液晶屏上

            } else { //读取失败时,提示错误信息

                lcd1602ShowStr(0, 0, "error!");

            }

            startDs18b20();               //重新启动下一次转换

        }

    }

}

/* 整型数转换为字符串,str-字符串指针,dat-待转换数,返回值-字符串长度 */

uint8_t IntToString(uint8_t * str, int16_t dat) 

{

    char i = 0;

    unsigned char len = 0;

    unsigned char buf[6];

    

    if (dat < 0)  //如果为负数,首先取绝对值,并在指针上添加负号

    {

        dat = -dat;

        *str++ = '-';

        len++;

    }

    do {          //先转换为低位在前的十进制数组

        buf[i++] = dat % 10;

        dat /= 10;

    } while (dat > 0);

    len += i;     //i最后的值就是有效字符的个数

    while (i-- > 0)   //将数组值转换为ASCII码反向拷贝到接收指针上

    {

        *str++ = buf[i] + '0';

    }

    *str = '';  //添加字符串结束符

    

    return len;   //返回字符串长度

}

/* 配置并启动T0,ms-T0定时时间 */

void ConfigTimer0(unsigned int ms)

{

    unsigned long tmp;  //临时变量

    

    tmp = 11059200 / 12;      //定时器计数频率

    tmp = (tmp * ms) / 1000;  //计算所需的计数值

    tmp = 65536 - tmp;        //计算定时器重载值

    tmp = tmp + 12;           //补偿中断响应延时造成的误差

    T0RH = (unsigned char)(tmp>>8);  //定时器重载值拆分为高低字节

    T0RL = (unsigned char)tmp;

    TMOD &= 0xF0;   //清零T0的控制位

    TMOD |= 0x01;   //配置T0为模式1

    TH0 = T0RH;     //加载T0重载值

    TL0 = T0RL;

    ET0 = 1;        //使能T0中断

    TR0 = 1;        //启动T0

}

/* T0中断服务函数,完成1秒定时 */

void InterruptTimer0() interrupt 1

{

    static unsigned char tmr1s = 0;

    

    TH0 = T0RH;  //重新加载重载值

    TL0 = T0RL;

    tmr1s++;

    if (tmr1s >= 100)  //定时1s

    {

        tmr1s = 0;

        flag1s = 1;

    }

}


关键字:DS18B20  温度传感器  液晶 引用地址:DS18B20温度传感器示例

上一篇:位置式PID控制算法模型(数字)
下一篇:CT107D digitalTube.c

推荐阅读最新更新时间:2024-11-10 23:03

三星深圳一液晶显示供应商停产,疑似资金链断裂
    继8月初深圳一液晶显示模组和贴合生产企业倒闭之后,8月25日,深圳又一液晶显示器企业——深圳艾迪斯电子科技有限公司(以下简称艾迪斯)宣布停产。据了解,三星是该公司其主要客户之一。   《每日经济新闻》记者从多位艾迪斯员工处了解到,艾迪斯已拖欠员工数月工资,而员工们8月19日仍在进行生产。同时,工商资料显示,此前艾迪斯曾多次将自身设备进行抵押,疑似资金出现断裂。   资金问题已困扰多时   艾迪斯的公开资料极为稀少,工商信息显示,公司注册资本2880万美元,是台港澳法人独资企业。   有招聘网站公开的信息称,艾迪斯的主要经营范围是LCD(液晶显示器)、LCM(液晶显示模块)和FPCB SMT,是一家以产品外销为
[手机便携]
MSP430 AD转换12864液晶显示代码
#include msp430g2553.h #include 12864.h unsigned int i,Vo; void main(void) { WDTCTL = WDTPW + WDTHOLD; // Stop WDT ADC10CTL0 = SREF_0 + ADC10SHT_2 + REFON + ADC10ON + ADC10IE + REF2_5V; //__enable_interrupt(); // Enable interrupts. //TACCR0 = 30; // Delay to allow Ref to settle //TACCTL0 |=
[单片机]
惠科金渝液晶面板8.6代项目的7条生产线已全部投入使用
惠科金渝液晶面板8.6代项目的7条生产线已全部投入使用,主要产品32寸、50寸面板已向康佳、长虹、创维等厂商供货。截至6月底,已投产4万片母玻璃,产能利用率达到82%,良品率达到93%。
[手机便携]
防骗指南:购买液晶的误区和关键参数
       当前是LCD统治显示市场的年代,液晶面板占据着人们显示生活的很大比例,越来越多的液晶品牌加入到激烈的市场竞争中,新品被过度包装后进行推广宣传在今天是屡见不鲜的,从消费者立场来看,这给选购过程增加了难度,今天就给大家普及一下购买液晶的误区和关键参数。    防骗指南:购买液晶的误区和关键参数   LCD占领显示市场早已多年,CRT一去不复返,主宰未来的OLED可能大规模使用言之尚早。目前还是有部分厂商宣传自己是LED显示器,其实是存在文字游戏的,因为目前真正批量采用LED的显示器大多是作为户外屏幕等大型显示设备出现的。    LCD占领显示市场早已多年   许多闻所未闻的产品新卖点,有些极为可笑,有些是哗众取宠
[家用电子]
AVR单片机和LCD液晶模块对信息监控终端的设计
目前,随着信息产业的迅猛发展,各类船舶亟需配备更多质优价廉的中小型信息监控终端,用于监控气象状况、获取导航信息以便保证航行安全。以ARM、MIPS等领衔的32位处理器在信息监控终端应用中,显示出极大优势,但是一般以32位处理器构建的嵌入式系统往往需要配置外部FLASH和SDRAM,这样就使得开发和维护整个系统的成本较高,本设计采用高性能低功耗的AVR单片机和LCD液晶模块来设计信息监控终端,具有价格低廉、性能稳定、显示清晰、人机界面良好等优点,能够满足船舶对中小型信息监控终端的需求。 1 总体设计 信息监控终端主要由显示控制板、键盘、通信接口和液晶显示模块构成,具有数据收发、数据显示、人机交互和屏幕亮度调整等功能,其组成如图1
[单片机]
AVR单片机和LCD<font color='red'>液晶</font>模块对信息监控终端的设计
二季度全球液晶电视面板市场全面过剩 价格持续下行
  二季度“世界杯”备货进入尾声,品牌的出货动力减缓,而 面板 厂依然维持较高稼动率,且新增产能加速释放,带动 面板 的供应能力持续增强。根据群智咨询(Sigmaintell)”供需模型“测算,2018年二季度全球 液晶电视 面板 的供需比达到9.4%,呈现明显供应过剩。下面就随嵌入式小编一起来了解一下相关内容吧。    大尺寸化放缓,平均尺寸连续5个季度未现明显增长   从尺寸结构来看,二季度中小尺寸依然维持较高比重,而大尺寸化停滞,平均尺寸连续五个季度维持在43.5英寸左右,增速不如预期。群智咨询(Sigmaintell)分析认为主要原因如下:   首先,全球政治经济格局震荡加剧,消费者信心指数受挫,对TV市场特别是大尺寸市
[嵌入式]
STM32F407开发板DS18B20应用案例
【1】DS18B20介绍 DS18B20是一种数字温度传感器,由Maxim Integrated公司生产。它采用单总线接口,能够在广泛的温度范围内测量温度,并通过数字方式输出温度值,具有较高的精度和稳定性。 以下是DS18B20温度传感器的主要特点和操作时序: (1)特点: 单总线接口:DS18B20使用单一的数据线进行通信,简化了连接和控制。 高精度测量:具有12位的温度分辨率,可测量范围为-55°C至+125°C。 数字输出:温度值以二进制形式传输,便于处理和解析。 内部存储:传感器可内部存储温度数据和配置信息。 低功耗:在非活动状态下,传感器可以进入睡眠模式以降低功耗消耗。 (2)操作时序: DS18B20的
[单片机]
STM32F407开发板<font color='red'>DS18B20</font>应用案例
stm8 占空比测电机速度以及显示在1602液晶显示屏上历程调试
/******************************************************************* 实验名称及内容:速度显示液晶屏 配套书籍:《深入浅出STM8单片机入门、进阶与应用实例》 实验平台及编程人员:骨灰级菜鸟 / #include iostm8s208mb.h //主控芯片的头文件 /端口/引脚定义/ #define LCDRS_SET PF_ODR|=0x01 //置位PF0 #define LCDRS_CLR PF_ODR&=0xFE //清0PF0 #define LCDRW_SET PF_ODR|=0x08 //置位PF3 #define LCDRW_CLR PF_O
[单片机]
stm8 占空比测电机速度以及显示在1602<font color='red'>液晶</font>显示屏上历程调试
小广播
设计资源 培训 开发板 精华推荐

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

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

换一换 更多 相关热搜器件
随便看看

 
EEWorld订阅号

 
EEWorld服务号

 
汽车开发圈

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