51单片机lcd1602显示温度源程序18b20测温
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 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