STC15单片机DS18B20在LCD1602上显示程序.docx
- 文档编号:29248983
- 上传时间:2023-07-21
- 格式:DOCX
- 页数:12
- 大小:15.59KB
STC15单片机DS18B20在LCD1602上显示程序.docx
《STC15单片机DS18B20在LCD1602上显示程序.docx》由会员分享,可在线阅读,更多相关《STC15单片机DS18B20在LCD1602上显示程序.docx(12页珍藏版)》请在冰豆网上搜索。
STC15单片机DS18B20在LCD1602上显示程序
敬告:
没有51单片机基础的人请慎重下载
高质量实用性51单片机STC15W系列程序(7),STC8A系列可参考
STC15单片机DS18b20在LCD1602上显示程序
//main.c
#include"Library.h"
unsignedcharcodetemp_reg1[4]={1,2,4,8};
unsignedcharcodetemp_reg2[3]={16,32,64};
unsignedcharcodetemp_reg3[2]={25,50};
unsignedcharValToTemp(unsignedchar*buf1,unsignedchar*buf2);
voidValToStr(unsignedchar*str,unsignedcharsource);
unsignedcharDecToTemp(unsignedchar*buf3);
voidmain()
{
unsignedcharstrbuf[2];
unsignedcharstrbuf1[2];
unsignedcharrec_buf1[8];
unsignedcharrec_buf2[8];
unsignedchartemp_sum;
bittest;
P3M1&=0xBF;P3M0&=0xBF;
P2M1&=0xE5;P2M0&=0xE5;
P0M1=0x00;P0M0=0x00;
LCD1602_init();
LCD1602_wBytes(2,0,"temperature:
",sizeof("temperature:
")-1);
LCD1602_wBytes(7,1,".",1);
Convert_T();
while
(1)
{
test=Read_start(rec_buf1,rec_buf2);
if(test)
{
test=0;
temp_sum=ValToTemp(rec_buf1,rec_buf2);
ValToStr(strbuf,temp_sum);
LCD1602_wBytes(5,1,strbuf,2);
temp_sum=DecToTemp(rec_buf1);
ValToStr(strbuf1,temp_sum);
LCD1602_wBytes(8,1,strbuf1,2);
}
Convert_T();
}
}
unsignedcharValToTemp(unsignedchar*buf1,unsignedchar*buf2)
{
unsignedchari;
unsignedcharsum=0;
for(i=4;i<8;i++)
{
if(buf1[i]==1)
{
sum+=temp_reg1[i-4];
}
}
if(buf2[0]==1)sum+=temp_reg2[0];
if(buf2[1]==1)sum+=temp_reg2[1];
if(buf2[2]==1)sum+=temp_reg2[2];
returnsum;
}
unsignedcharDecToTemp(unsignedchar*buf3)
{
unsignedcharsum=0;
if(buf3[2]==1)
{
sum+=temp_reg3[0];
}
if(buf3[3]==1)
{
sum+=temp_reg3[1];
}
returnsum;
}
voidValToStr(unsignedchar*str,unsignedcharsource)
{
str[0]=source/10+'0';
str[1]=source%10+'0';
}
/*****************************************************/
//LCD1602.c
#include"Library.h"
voidLCD1602_rsta()
{
unsignedchartmp;
P0=0xFF;//thisisamust
rs=0;
rw=1;
do{
en=1;
//Delay1us();
tmp=P0;
//Delay1us();
en=0;
}while(tmp&0x80);
}
voidLCD1602_wdat(unsignedchardat)
{
LCD1602_rsta();
rs=1;
rw=0;
P0=dat;
en=1;
//Delay1us();
en=0;
}
voidLCD1602_wcmd(unsignedcharcmd)
{
LCD1602_rsta();
rs=0;
rw=0;
P0=cmd;
en=1;
//Delay1us();
en=0;
}
voidSetcursor(unsignedcharx,unsignedchary)
{
if(y==0)
x=x+0x00;
elseif(y==1)
x=x+0x40;
LCD1602_wcmd(x|0x80);
}
voidLCD1602_wBytes(unsignedcharx,unsignedchary,unsignedchar*buf,unsignedcharbuf_len)
{
Setcursor(x,y);
while(buf_len>0)
{
LCD1602_wdat(*buf++);
buf_len--;
}
}
voidOnCursor()
{
LCD1602_wcmd(0x0F);
}
voidOffCursor()
{
LCD1602_wcmd(0x0C);
}
voidLCD1602_init()
{
//Delay15ms();
//LCD1602_wcmd(0x38);
//Delay5ms();
LCD1602_wcmd(0x38);
//LCD1602_wcmd(0x08);
LCD1602_wcmd(0x06);
LCD1602_wcmd(0x0C);
LCD1602_wcmd(0x01);
}
/***************************************************/
//DS18b20.c
#include"Library.h"
voidDelay1us()//@11.0592MHz
{
_nop_();
_nop_();
_nop_();
}
voidDelay60us()//@11.0592MHz
{
unsignedchari,j;
i=1;
j=162;
do
{
while(--j);
}while(--i);
}
voidWrite_L()
{
DSport=0;
Delay60us();
DSport=1;
}
voidWrite_H()
{
DSport=0;
Delay1us();
Delay1us();
DSport=1;
Delay60us();
}
voidWrite_dat(unsignedchardat)
{
unsignedcharmask;
for(mask=0x01;mask!
=0;mask<<=1)
{
if((dat&mask)==0)
Write_L();
else
Write_H();
}
}
bitRead_bit()
{
bitbitval;
DSport=0;
Delay1us();
DSport=1;
Delay1us();
bitval=DSport;
returnbitval;
}
voidRead_byte(unsignedchar*buf)
{
unsignedchari;
for(i=0;i<8;i++)
{
if(Read_bit())
buf[i]=1;
else
buf[i]=0;
Delay60us();
}
}
voidDelay500us()//@11.0592MHz
{
unsignedchari,j;
_nop_();
_nop_();
i=6;
j=93;
do
{
while(--j);
}while(--i);
}
bitCheckPulse()
{
bitack;
DSport=0;
Delay500us();//480us~960us
DSport=1;
Delay60us();
ack=DSport;
while(!
DSport);//DS18b20pulldown60us~240us
returnack;
}
voidDelay750us()//@11.0592MHz
{
unsignedchari,j;
_nop_();
_nop_();
i=9;
j=13;
do
{
while(--j);
}while(--i);
}
bitConvert_T()
{
bitack;
ack=CheckPulse();
if(ack==0)
{
Write_dat(0xCC);//readscratchpad
Write_dat(0x44);//converttemperature
Delay750us();
}
return~ack;
}
bitRead_start(unsignedchar*buf1,unsignedchar*buf2)
{
bitack;
ack=CheckPulse();
if(ack==0)
{
Write_dat(0xCC);
Write_dat(0xBE);
Read_byte(buf1);
Read_byte(buf2);
}
return~ack;
}
/****************************************************/
//Library.h
#ifndef_Library_H
#define_Library_H
#include
#include
sbitDSport=P3^6;
bitConvert_T();
bitRead_start(unsignedchar*buf1,unsignedchar*buf2);
sbitrs=P2^4;
sbitrw=P2^3;
sbiten=P2^1;
voidLCD1602_init();
voidLCD1602_wBytes(unsignedcharx,unsignedchary,unsignedchar*buf,unsignedcharbuf_len);
#endif
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- STC15 单片机 DS18B20 LCD1602 显示 程序