STC15单片机DHT11在LCD1602上显示程序.docx

上传人:b****8 文档编号:9479038 上传时间:2023-05-19 格式:DOCX 页数:23 大小:17.57KB
下载 相关 举报
STC15单片机DHT11在LCD1602上显示程序.docx_第1页
第1页 / 共23页
STC15单片机DHT11在LCD1602上显示程序.docx_第2页
第2页 / 共23页
STC15单片机DHT11在LCD1602上显示程序.docx_第3页
第3页 / 共23页
STC15单片机DHT11在LCD1602上显示程序.docx_第4页
第4页 / 共23页
STC15单片机DHT11在LCD1602上显示程序.docx_第5页
第5页 / 共23页
STC15单片机DHT11在LCD1602上显示程序.docx_第6页
第6页 / 共23页
STC15单片机DHT11在LCD1602上显示程序.docx_第7页
第7页 / 共23页
STC15单片机DHT11在LCD1602上显示程序.docx_第8页
第8页 / 共23页
STC15单片机DHT11在LCD1602上显示程序.docx_第9页
第9页 / 共23页
STC15单片机DHT11在LCD1602上显示程序.docx_第10页
第10页 / 共23页
STC15单片机DHT11在LCD1602上显示程序.docx_第11页
第11页 / 共23页
STC15单片机DHT11在LCD1602上显示程序.docx_第12页
第12页 / 共23页
STC15单片机DHT11在LCD1602上显示程序.docx_第13页
第13页 / 共23页
STC15单片机DHT11在LCD1602上显示程序.docx_第14页
第14页 / 共23页
STC15单片机DHT11在LCD1602上显示程序.docx_第15页
第15页 / 共23页
STC15单片机DHT11在LCD1602上显示程序.docx_第16页
第16页 / 共23页
STC15单片机DHT11在LCD1602上显示程序.docx_第17页
第17页 / 共23页
STC15单片机DHT11在LCD1602上显示程序.docx_第18页
第18页 / 共23页
STC15单片机DHT11在LCD1602上显示程序.docx_第19页
第19页 / 共23页
STC15单片机DHT11在LCD1602上显示程序.docx_第20页
第20页 / 共23页
亲,该文档总共23页,到这儿已超出免费预览范围,如果喜欢就下载吧!
下载资源
资源描述

STC15单片机DHT11在LCD1602上显示程序.docx

《STC15单片机DHT11在LCD1602上显示程序.docx》由会员分享,可在线阅读,更多相关《STC15单片机DHT11在LCD1602上显示程序.docx(23页珍藏版)》请在冰点文库上搜索。

STC15单片机DHT11在LCD1602上显示程序.docx

STC15单片机DHT11在LCD1602上显示程序

敬告:

没有51单片机基础的人请慎重下载

高质量实用性51单片机STC15W系列程序(4),STC8A系列可参考

STC15单片机DHT11在LCD1602上显示程序

注:

在本节关于DHT11的程序有两种

/*****************************************/

版本一:

/****************************************/

/****************************************/

main函数程序:

#include"Library.h"

unsignedcharstrbuf[4];

//voidValToStr(unsignedchar*str,unsignedchar*source,unsignedcharlen);

unsignedchartmrflag=0;

unsignedcharDHTbuf[5];

voidDelay1000ms()//@11.0592MHz

{

unsignedchari,j,k;

_nop_();

_nop_();

i=43;

j=6;

k=203;

do

{

do

{

while(--k);

}while(--j);

}while(--i);

}

voidmain()

{

unsignedcharDHTstr[8];

P3M1&=0xBF;P3M0&=0xBF;

P2M1&=0xE5;P2M0&=0xE5;

P0M1=0x00;P0M0=0x00;

LCD1602_init();

LCD1602_wBytes(2,0,".",1);

LCD1602_wBytes(8,0,"humi",4);

LCD1602_wBytes(2,1,".",1);

LCD1602_wBytes(8,1,"temp",4);

while

(1)

{

DHT11_start(DHTbuf);

//ValToStr(DHTstr,DHTbuf,sizeof(DHTbuf)-1);

DHTstr[0]=DHTbuf[0]/10+'0';

DHTstr[1]=DHTbuf[0]%10+'0';

DHTstr[2]=DHTbuf[1]/10+'0';

DHTstr[3]=DHTbuf[1]%10+'0';

DHTstr[4]=DHTbuf[2]/10+'0';

DHTstr[5]=DHTbuf[2]%10+'0';

DHTstr[6]=DHTbuf[3]/10+'0';

DHTstr[7]=DHTbuf[3]%10+'0';

LCD1602_wBytes(0,0,DHTstr,2);

LCD1602_wBytes(3,0,DHTstr+2,2);

LCD1602_wBytes(0,1,DHTstr+4,2);

LCD1602_wBytes(3,1,DHTstr+6,2);

Delay1000ms();

Delay1000ms();

}

}

//voidValToStr(unsignedchar*str,unsignedchar*source,unsignedcharlen)

//{

//unsignedchari;

//while(len>0)

//{

//str[i*2]=source[i]/10+'0';

//str[1+i*2]=source[i]%10+'0';

//i++;

//len--;

//}

//}

/*********************************************/

DHT11程序:

/******************************

8bithumidityintegerdata+8bithumiditydecimaldata

8bittemperatureintegerdata+8bittemperaturedecimaldata

8bitchecksum,highbitahead

*******************************/

#include"Library.h"

unsignedcharu8flag;

unsignedcharcheck_buf[5];

unsignedchartmp;

voiddelay_1s()//@11.0592MHz

{

unsignedchari,j,k;

_nop_();

_nop_();

i=43;

j=6;

k=203;

do

{

do

{

while(--k);

}while(--j);

}while(--i);

}

voidDelay10us()//@11.0592MHz

{

unsignedchari;

_nop_();

i=25;

while(--i);

}

voidDelay20ms()//@11.0592MHz

{

unsignedchari,j,k;

_nop_();

_nop_();

i=1;

j=216;

k=35;

do

{

do

{

while(--k);

}while(--j);

}while(--i);

}

unsignedcharRec_8bit()

{

unsignedchari;

unsignedcharret_8bit;

unsignedchartmp;

for(i=0;i<8;i++)

{

while(!

DHT11port);

Delay10us();

Delay10us();

Delay10us();

tmp=0;

if(DHT11port)

{

tmp=1;

}

u8flag=2;

while((DHT11port)&&u8flag++);

if(u8flag==1)break;

ret_8bit<<=1;

ret_8bit|=tmp;

}

returnret_8bit;

}

 

voidDHT11_start(unsignedchar*rec_buf)

{

//delay_1s();

DHT11port=0;

Delay20ms();

DHT11port=1;

Delay10us();

Delay10us();

Delay10us();

Delay10us();

//DHT11port=1;

if(!

DHT11port)

{

u8flag=2;

//while(!

DHT11port);

while((!

DHT11port)&&u8flag++);

//if(DHT11port)

//{

//while(DHT11port);

u8flag=2;

while((DHT11port)&&u8flag++);

check_buf[0]=Rec_8bit();

check_buf[1]=Rec_8bit();

check_buf[2]=Rec_8bit();

check_buf[3]=Rec_8bit();

check_buf[4]=Rec_8bit();

if(!

DHT11port)

{

while(!

DHT11port);

}

DHT11port=1;

tmp=check_buf[0]+check_buf[1]+check_buf[2]+check_buf[3];

if(tmp==check_buf[4])

{

rec_buf[0]=check_buf[0];

rec_buf[1]=check_buf[1];

rec_buf[2]=check_buf[2];

rec_buf[3]=check_buf[3];

}

//}

}

else

{

rec_buf[0]=0;

rec_buf[1]=0;

rec_buf[2]=0;

rec_buf[3]=0;

}

}

 

/*********************************************/

LCD1602程序:

#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);

}

/*****************************************/

Library.h

#ifndef_Library_H

#define_Library_H

#include

#include

#defineMAIN_Fosc11059200L

sbitDHT11port=P3^6;

voidDHT11_start(unsignedchar*rec_buf);

sbitrs=P2^4;

sbitrw=P2^3;

sbiten=P2^1;

voidLCD1602_init();

voidLCD1602_wBytes(unsignedcharx,unsignedchary,unsignedchar*buf,unsignedcharbuf_len);

#endif

 

/*****************************************/

版本二(结构体):

/****************************************/

/****************************************/

main程序:

#include"Library.h"

#include"string.h"

voidDelay1000ms()//@11.0592MHz

{

unsignedchari,j,k;

_nop_();

_nop_();

i=43;

j=6;

k=203;

do

{

do

{

while(--k);

}while(--j);

}while(--i);

}

voidmain()

{

unsignedcharDHTstr[8];

P3M1&=0xBF;P3M0&=0xBF;

P2M1&=0xE5;P2M0&=0xE5;

P0M1=0x00;P0M0=0x00;

LCD1602_init();

LCD1602_wBytes(2,0,".",1);

LCD1602_wBytes(8,0,"humi",4);

LCD1602_wBytes(2,1,".",1);

LCD1602_wBytes(8,1,"temp",4);

while

(1)

{

DHT11_start();

//memset(DHTstr,0,8);

DHTstr[0]=ht.humi_h+'0';

DHTstr[1]=ht.humi_l+'0';

DHTstr[2]=ht.humi_dh+'0';

DHTstr[3]=ht.humi_dl+'0';

DHTstr[4]=ht.temp_h+'0';

DHTstr[5]=ht.temp_l+'0';

DHTstr[7]=ht.temp_dh+'0';

DHTstr[6]=ht.temp_dl+'0';

LCD1602_wBytes(0,0,DHTstr,2);

LCD1602_wBytes(3,0,DHTstr+2,2);

LCD1602_wBytes(0,1,DHTstr+4,2);

LCD1602_wBytes(3,1,DHTstr+6,2);

Delay1000ms();

Delay1000ms();

}

}

/***********************************************/

DHT11程序:

/******************************

8bithumidityintegerdata+8bithumiditydecimaldata

8bittemperatureintegerdata+8bittemperaturedecimaldata

8bitchecksum,highbitahead

*******************************/

#include"Library.h"

unsignedcharu8flag;

unsignedcharcheck_buf[5];

unsignedchartmp;

unsignedcharrec_buf[4];

htstructht;

voiddelay_1s()//@11.0592MHz

{

unsignedchari,j,k;

_nop_();

_nop_();

i=43;

j=6;

k=203;

do

{

do

{

while(--k);

}while(--j);

}while(--i);

}

voidDelay10us()//@11.0592MHz

{

unsignedchari;

_nop_();

i=25;

while(--i);

}

voidDelay20ms()//@11.0592MHz

{

unsignedchari,j,k;

_nop_();

_nop_();

i=1;

j=216;

k=35;

do

{

do

{

while(--k);

}while(--j);

}while(--i);

}

unsignedcharRec_8bit()

{

unsignedchari;

unsignedcharret_8bit;

unsignedchartmp;

for(i=0;i<8;i++)

{

while(!

DHT11port);

Delay10us();

Delay10us();

Delay10us();

tmp=0;

if(DHT11port)

{

tmp=1;

}

u8flag=2;

while((DHT11port)&&u8flag++);

if(u8flag==1)break;

ret_8bit<<=1;

ret_8bit|=tmp;

}

returnret_8bit;

}

 

voidDHT11_start()

{

//delay_1s();

DHT11port=0;

Delay20ms();

DHT11port=1;

Delay10us();

Delay10us();

Delay10us();

Delay10us();

//DHT11port=1;

if(!

DHT11port)

{

u8flag=2;

while((!

DHT11port)&&u8flag++);

u8flag=2;

while((DHT11port)&&u8flag++);

check_buf[0]=Rec_8bit();

check_buf[1]=Rec_8bit();

check_buf[2]=Rec_8bit();

check_buf[3]=Rec_8bit();

check_buf[4]=Rec_8bit();

if(!

DHT11port)

{

while(!

DHT11port);

}

DHT11port=1;

tmp=check_buf[0]+check_buf[1]+check_buf[2]+check_buf[3];

if(tmp==check_buf[4])

{

rec_buf[0]=check_buf[0];

rec_buf[1]=check_buf[1];

rec_buf[2]=check_buf[2];

rec_buf[3]=check_buf[3];

}

ht.humi_h=rec_buf[0]/10;

ht.humi_l=rec_buf[0]%10;

ht.humi_dh=rec_buf[1]/10;

ht.humi_dl=rec_buf[1]%10;

ht.temp_h=rec_buf[2]/10;

ht.temp_l=rec_buf[2]%10;

ht.temp_dh=rec_buf[3]/10;

ht.temp_dl=rec_buf[3]%10;

}

else

{

ht.humi_h=0;

ht.humi_l=0;

ht.humi_dh=0;

ht.humi_dl=0;

ht.temp_h=0;

ht.temp_l=0;

ht.temp_dh=0;

ht.temp_dl=0;

}

}

 

/************************************************/

LCD1602程序:

#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(

展开阅读全文
相关资源
猜你喜欢
相关搜索
资源标签

当前位置:首页 > 总结汇报 > 学习总结

copyright@ 2008-2023 冰点文库 网站版权所有

经营许可证编号:鄂ICP备19020893号-2