51单片机lcd1602显示温度源程序18b20测温

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

/////////////////////////////////////////////////////

/// ///

/// ======================================= ///

//// === 作者:Ni的年少W^o轻狂 ========== ////

//// === 创建时间:2008.07.03 ========== ////

/// ======================================= ////

// ///

//////////////////////////////////////////////////////

////////////////////////////////////

///// DS18b20温度传感器 ///////

////////////////////////////////////

/*

注:1、当用到循环左移或右移时<>>或<<),不能超出变的范围例如:unsigned char i,j。

j=(i<<8>>>4。

得到的结果出错。。。

unsigned char j。

unsignedint i。

j=(i<<8>>>4。

得到的结果正确.....

2、LCD的清屏时间----1.64ms。

*/

#include

#include"LCD1602.h"

#include

#define uchar unsigned char

#define uint unsigned int

uchartmp[4]={0,0,0,0}。

#include"DS18B20.h"

/////////////////////////////////////////////////////////// //////主程序///////

/////////////////////////////////////////////////////////// void main(void>

{

uchar temp。

LCD_init(>。

LCD_write_command(0x01>。//清屏显示

Delay_50Us(50>。

gotoxy(2,1>。

LCD_display("NOW TEMP:">。

gotoxy(2,2>。

LCD_display("163qishentong">。

Delay_2Us(200>。

temp=Ds18b20_Read_Temperature(>。

Delay_50Us(1000>。 //空读一次,读出默认的85 while(1>

{

gotoxy(12,1>。

change(>。

//Delay_2Us(200>。

LCD_display(tmp>。

Delay_50Us(100>。

}

}

/*==================================

=== 作者:Ni的年少W^o疯狂 ======

=== 创建时间:2008.06.20 ======

==================================*/

#define LCD_DB P0//定义LCD的数据端口

sbit LCD_RS=P2^0。

sbit LCD_RW=P2^1。

sbit LCD_E=P2^2。

#define uchar unsigned char

#define uint unsigned int

//===========延时子函数======================== void delay(uint x>

{uinti,j。

for(i=x。i>0。i-->

for(j=0。j<2。j++>。

}

//==================写指令函数================= voidLCD_write_command(uchar command>

{LCD_DB=command。

LCD_RS=0。//指令

LCD_RW=0。//写入

LCD_E=1。

LCD_E=0。

delay(1>。//等待执行完毕。。。

}

//===================写数据函数================= voidLCD_write_data(uchardat>

{LCD_DB=dat。

LCD_RS=1。//数据寄存器

LCD_RW=0。//写入数据

LCD_E=1。

LCD_E=0。

delay(1>。//等待程序执行完毕。。。

}

/*============显示一个字符子函数=============== voidLCD_disp_char(ucharx,uchar y, uchardat>

{ uchar address。

if(y==1>

address=0x80+x。

else

address=0xc0+x。

LCD_write_command(address>。

LCD_write_data(dat>。

}

===================================*/

//==========延时1====================

void delay1(uint x>

{uinti,j。

for(j=0。j

for(i=0。i<100。i++>。

}

//===========初始化函数=============

voidLCD_init(void>

{LCD_write_command(0x38>。//设置8位格式,2行,5*7

相关文档
最新文档