完善资料让更多小伙伴认识你,还能领取20积分哦, 立即完善>
扫一扫,分享给好友
#include
#include #include #define uchar unsigned char #define uint unsigned int #define lcd_data P0 ***it rs=P2^6; ***it rw=P2^5; ***it e=P2^7; ***it DHT=P3^2; uchar str1[] = {"Humi:"}; uchar temp,humi; void delay(); void delay10us(); void delay1ms(); void delay10ms(); void Lcd_Init(); void Lcd_write_com(); void Lcd_write_data(); void Lcd_Display(); uchar DHT11_Init(); uchar DHT11_Read_Bit(); uchar DHT11_Read_Byte(); uchar DHT11_Read_Data(); void delay(uint i) { while(i--); } void delay10us(void) { unsigned char a,b; for(b=1;b>0;b--) for(a=2;a>0;a--); } void delay1ms(void) { unsigned char a,b,c; for(c=1;c>0;c--) for(b=142;b>0;b--) for(a=2;a>0;a--); } void delay10ms(void) { unsigned char a,b,c; for(c=1;c>0;c--) for(b=38;b>0;b--) for(a=130;a>0;a--); } void LCD_write_com(uchar com) { rs=0; rw=0; e=0; P0=com; delay(5); e=1; delay(5); e=0; } void LCD_write_data(uchar dat) { rs=1; rw=0; e=0; P0=dat; delay(5); e=1; delay(5); e=0; } void Lcd_Init() { LCD_write_com(0x38); LCD_write_com(0x0c); LCD_write_com(0x06); LCD_write_com(0x01); } void LCD_Display() { uchar i; LCD_write_com(0x00+0x80); for(i=0;i<5;i++) { LCD_write_data(str1); } } uchar DHT11_Init() { uchar flag; DHT=1; _nop_(); DHT=0; delay10ms(); delay10ms(); DHT=1; delay10us(); delay10us(); delay10us(); while(DHT&&flag++); if(flag>=100)return 1; else flag=0; while(!DHT&&flag++); if(flag>=100)return 1; else return 0; } uchar DHT11_Read_Bit(void) { uchar flag; while(DHT&&flag++); flag=0; while(!DHT&&flag++); delay10us(); delay10us(); delay10us(); delay10us(); if(DHT)return 1; else return 0; } uchar DHT11_Read_Byte(void) { uchar i,dat=0; for (i=0;i<8;i++) { dat<<=1; dat|=DHT11_Read_Bit(); } return dat; } uchar DHT11_Read_Data(uchar *temp,uchar *humi) { uchar dat[5]; uchar i; DHT11_Init(); if(DHT11_Init()==0) { for(i=0;i<5;i++) { dat=DHT11_Read_Byte(); } if((dat[0]+dat[1]+dat[2]+dat[3])==dat[4]) { *humi=dat[0]; *temp=dat[2]; } } else return 1; return 0; } void datapros() { uint humi_buf[2]; DHT11_Read_Data(&temp,&humi); humi_buf[0]=humi/10+0x30; humi_buf[1]=humi%10+0x30; LCD_write_com(0x06+0x80); LCD_write_data(humi_buf[0]); LCD_write_com(0x07+0x80); LCD_write_data(humi_buf[1]); LCD_write_com(0x08+0x80); LCD_write_data('%'); } void main() { Lcd_Init(); delay10us(); while(1) { datapros(); LCD_Display(); } } |
|
相关推荐 |
|
你正在撰写答案
如果你是对答案或其他答案精选点评或询问,请使用“评论”功能。
嵌入式学习-飞凌嵌入式ElfBoard ELF 1板卡-LCD显示图片编程示例之介绍mmap
238 浏览 0 评论
《DNESP32S3使用指南-IDF版_V1.6》第二章 常用的C语言知识点
629 浏览 0 评论
【RA-Eco-RA2E1-48PIN-V1.0开发板试用】(第三篇)ADC采集+PWM输出
552 浏览 0 评论
《DNK210使用指南 -CanMV版 V1.0》第四十五章 人脸识别实验
552 浏览 0 评论
1074 浏览 0 评论
【youyeetoo X1 windows 开发板体验】少儿AI智能STEAM积木平台
11764 浏览 31 评论
小黑屋| 手机版| Archiver| 电子发烧友 ( 湘ICP备2023018690号 )
GMT+8, 2024-11-23 04:25 , Processed in 0.570220 second(s), Total 70, Slave 53 queries .
Powered by 电子发烧友网
© 2015 bbs.elecfans.com
关注我们的微信
下载发烧友APP
电子发烧友观察
版权所有 © 湖南华秋数字科技有限公司
电子发烧友 (电路图) 湘公网安备 43011202000918 号 电信与信息服务业务经营许可证:合字B2-20210191 工商网监 湘ICP备2023018690号