单片机驱动ds18b20用12864液晶显示温度程序

发布者:ShimmeringStar最新更新时间:2015-06-26 来源: 51hei关键字:单片机  驱动ds18b20  12864液晶 手机看文章 扫描二维码
随时随地手机看文章

 

全部完整的源代码下载:http://www.51hei.com/bbs/dpj-20391-1.html
下面是ds18b20.h文件:/*------------------------------------
名称:ds18b20驱动及其显示模块
编写:YuMin_Dong
时间:2013.01.21
------------------------------------*/

#ifndef _DS18B20_H_
#define _DS18B20_H_

/*------------------------------------
   位定义
------------------------------------*/
sbit DQ=P2^3;

[page]
UINT16 temperature;    //读取温度保存在此,用作暂存显示时候分位显示

/*------------------------------------
   初始化18B20
------------------------------------*/
bit DS18b20_Init()
{
bit ok;
DQ=1;
DelayUs2x(5);
DQ=0;
DelayUs2x(200);
DelayUs2x(200); 
DQ=1;//释放总线,准备接收器件回应
DelayUs2x(50);
ok=DQ;
DelayUs2x(25);
return ok;
}

/*------------------------------------
   向18b20写数据
------------------------------------*/
void DS18b20_WriteByte(UINT8 byte)
{
UINT8 i;
 for(i=0;i<8;i++)
 {
 DQ=0;
 DelayUs2x(5);//区分读写,让读的时间过去。
 DQ=byte&0x01; 
 DelayUs2x(15);//让有效数据稳定
 DQ=1;//电平稳定后,释放总线
 DelayUs2x(5);
 byte>>=1;
 }
DelayUs2x(25);//给芯片时间存数据
}

/*------------------------------------
   从18b20读数据
------------------------------------*/
UINT8 DS18b20_ReadByte()
{
UINT8 byte,i;
 for(i=0;i<8;i++)
 {
 DQ=0;
 byte>>=1;
 DQ=1;
  if(DQ)//执行到此处,前面的语句已经够电平稳定了,不用另加延时
  byte|=0x80;
 DelayUs2x(20); 
 }
return byte;
}

/*------------------------------------
   读温度
------------------------------------*/
UINT16 DS18b20_ReadTemperature()
{
UINT16 b;
UINT8 a;
DS18b20_Init();
DS18b20_WriteByte(0xcc);//skip rom 跳过ROM序列号检查
DS18b20_WriteByte(0x44);//convert temperature 转换数字温度
DelayMs(10);//给芯片时间采样,转换温度的时间
DS18b20_Init();
DS18b20_WriteByte(0xcc); 
DS18b20_WriteByte(0xbe);//读取暂存器
a=DS18b20_ReadByte();//低八位
b=DS18b20_ReadByte();//高八位
b<<=8;
b=(b+a)*0.625;  //放大十倍放在b中
return b;
}

/*------------------------------------
   温度显示
------------------------------------*/
void Display_Temperature()
{
temperature=DS18b20_ReadTemperature(); //读取温度到转换变量里
/*
LCD_SendImg16x16(0,3,User4_16x16,0); //显示温度图标
LCD_SendImg16x16(3,3,User2_16x16,0);*/ //显示℃
LCD_WriteCommand(0x30);
LCD_WriteCommand(0x98);
LCD_DisplayCGRAM(3);
LCD_WriteCommand(0x9B);
LCD_DisplayCGRAM(2);
LCD_WriteCommand(0x06);
LCD_WriteCommand(0x99);
LCD_WriteData(temperature%1000/100|0x30);
LCD_WriteData(temperature%100/10|0x30);
LCD_WriteData('.');
LCD_WriteData(temperature%10|0x30);
}

#endif

关键字:单片机  驱动ds18b20  12864液晶 引用地址:单片机驱动ds18b20用12864液晶显示温度程序

上一篇:51单片机+74HC595驱动数码管程序
下一篇:51单片机+lcd12864液晶屏菜单程序

推荐阅读最新更新时间:2024-03-16 14:05

一文详解何为「车规芯片」
近几年,汽车智能化、网联化、电动化迅速发展,汽车对于芯片的需求无论在数量上还是性能上都快速增长。当下,搭载好的芯片,汽车才会更有竞争力,整车厂对汽车芯片的关注也达到了空前的高度。 最高性能车规MCU即将发布 “车规时代”到来 “缺芯潮”中,MCU控制芯片是对车厂挑战最大的产品,尤其高性能、高可靠、高安全的车规控制芯片,而这块市场此前一直是国际大厂的天下,国内创新企业尚是空白。 然而,车规半导体企业芯驰科技日前披露了一个振奋人心的信息:即将推出一款高可靠,高安全,高性能,广覆盖,功能安全等级为ISO 26262 ASIL D级的车控MCU E3;这款控制芯片据称可覆盖汽车车身、底盘、动力、BMS、网关、T-Box等各项应
[嵌入式]
五大单片机全解析--51、AVR、PIC、MSP430、ARM
当今单片机厂商琳琅满目,产品性能各异。针对具体情况,我们应选何种型号呢?首先,我们来弄清两个概念:集中指令集(CISC)和精简指令集(RISC)。采用CISC结构的单片机数据线和指令线分时复用,即所谓冯。诺伊曼结构。它的指令丰富,功能较强,但取指令和取数据不能同时进行,速度受限,价格亦高。采用RISC结构的单片机数据线和指令线分离,即所谓哈佛结构。这使得取指令和取数据可同时进行,且由于一般指令线宽于数据线,使其指令较同类CISC单片机指令包含更多的处理信息,执行效率更高,速度亦更快。同时,这种单片机指令多为单字节,程序存储器的空间利用率大大提高,有利于实现超小型化。 8051 AVR和pic都是跟8051结构不同的8位单片机,
[单片机]
五大<font color='red'>单片机</font>全解析--51、AVR、PIC、MSP430、ARM
单片机实现adc0808程序
一: 系统图: 程序部分: #include AT89X52.H unsigned char code dispbitcode ={0x01,0x02,0x04, 0x08,0x10,0x20,0x40,0x80}; unsigned char code dispcode ={0x3f,0x06,0x5b,0x4f,0x66, 0x6d,0x7d,0x07,0x7f,0x6f}; unsigned char dispbuf ={0,0,0}; unsigned char dispcount; sbit ST=P3^2; sbit OE=P3^0; sbit EOC=P3^1; unsigned char get
[单片机]
<font color='red'>单片机</font>实现adc0808程序
单片机】DIY无刷电机驱动器 1
参考文章:《【机械自动化】BLDC驱动器ESC》。 控制直流无刷电机和控制直流有刷电机的最大区别有两点: 1、有刷直流电机使用用两个驱动桥臂,无刷直流电机需要使用三个驱动桥臂。 2、有刷直流电机使用碳刷换相,无刷直流电机需要外部控制换相。 这里为了简化,没有使用霍尔传感器以及参考文章中介绍的反电势法(BEMF)原理进行换相检测,这里使用的方法是“猜”,“猜”法很简单,就是我觉得该换相了,就换相,如果换相快了,转子跟不上就会抖动,如果换相慢了,转子会跟着转得慢而已,那么就控制换相速度稍微慢点就行了。 核心电路图如下: 上图中使用的是PMOS加NMOS组成单个桥臂,PMOS的缺点是内阻较NMOS大,所以可能会发热较严重,但是控制
[单片机]
【<font color='red'>单片机</font>】DIY无刷电机<font color='red'>驱动</font>器 1
MSP430单片机按键中断程序
#include IRRemo te .h void main(void) { //初始化 Ini ti alize(); //死循环 while(1) { unsigned int transmit; //初始化变量 transmit = ENDTRANSMIT; //等待按键按下 SetForPress(); //进入LPM4模式 LPM4; Debounce(); //扫描键盘 KeyS CAN (); //键盘处理 KeyLookup(); if (Er
[单片机]
Mouser提供Microchip ATtiny1617系列AVR MCU
贸泽电子(Mouser)近日宣布即日起开始供应Microchip Technology的ATtiny1617微控制器系列。ATtiny1617为Microchip低功率8位AVR微控制器产品组合的其中一个系列,接脚和程序代码均与ATtiny817系列装置兼容,且闪存容量更大。这个8位装置体积轻巧,运作频率最高达20 MHz,提供可自定义的组态与简化流程,适用于电容式触控系统与核心独立周边(CIPs),有助于提高系统的数据传输速率,同时降低整体耗电量。 贸泽电子供应的Microchip ATtiny1617 8位AVR微控制器,具备16KB系统内部可程序闪存、256B EEPROM和2KB的SRAM。这些装置类似于其他的Microc
[半导体设计/制造]
HT1621液晶驱动芯片的51单片机程序
/******************************************************** 功能描述: HT1621芯片测试程序 说 明:本测试程序能够测试HT1621的每一个字段, 依次点亮每一个字段 参数: ********************************************************/ #include reg51.H #include intrins.h #define uchar unsigned char #define uint unsigned int #define _Nop() _nop_();_nop_();
[单片机]
瑞萨推出集成STT-MRAM的MCU测试芯片,瞄准物联网与边缘智能
瑞萨电子最近宣布,他们已成功研发出自旋转移矩磁阻随机存取存储器(STT-MRAM)的测试芯片。这款芯片以其卓越的读写性能,有望为性能要求严苛的微控制器(MCU)提供传统闪存芯片的有力替代品。 随着物联网(IoT)和人工智能(AI)技术的飞速发展,端点设备中的MCU必须提供比以往更高的性能,以满足日益增长的需求。瑞萨电子在谈及他们在内存技术方面的工作时指出:“高性能MCU的CPU时钟频率已达到数百兆赫兹。为了进一步提升性能,我们需要提高嵌入式非易失性存储器的读取速度,以尽量缩小它们与CPU时钟频率之间的差距。” STT-MRAM,通常简称为MRAM,是一种新型存储器技术,旨在弥合非易失性但相对较慢的闪存与易失性但快速的动态
[单片机]
瑞萨推出集成STT-MRAM的<font color='red'>MCU</font>测试芯片,瞄准物联网与边缘智能
小广播
添点儿料...
无论热点新闻、行业分析、技术干货……
设计资源 培训 开发板 精华推荐

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

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

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