版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、/DHT11.C文件#include<reg52.h>#include<Time.Delay.h>/themainonlyneedstocallgelDHTIl()jhenthetemperatureandhuminitywasgotinF16T.F16RHasfloatsbitbitll=P2A0;unsignedcharU8T_data_H,U8T_dala_U8RH_dala_H,U8RH_dala_L.U8checkdala:floatFI6T,F16RH:川丁最终读取的温湿度数据/read8bitsonicecharCOM(void)chari.U8lemp.
2、U8comdata;for(i=0;i<8;i+)while(!bitll);表小读取的高电位延时大于20多us则读取的是I否则读取的是0Delay_us(35);通过U8FLAG可判断billl显小数据的脉长U8temp=();if(bitlI)U8temp=l;while(bitl1);U8comdata«=l;U8comdatal=U8temp;/()/rofreturnU8comdata;/-/一一温湿度读取子程序.一以下变量均为全局变量-温度高8位=U8T_data_H-小-温度低8位=U8T_data_L-湿度高8位=U8RH_data_H-一湿度低8位=U8RH_
3、data_L-一校验8位=U8checkdata一一一调用相关子程序如下/-Delay。;.Delay_l()us();tCOM();voidgetDHTII(void)主机拉低18msGOI:bit11=0;Delay_ms(20);bill1=1;总线由上拉电阻拉高上机延时20usDelay_us(60);主机设为输入判断从机响应信号/bitll=l;判断从机是否有低电平响应信号如不响应则跳出,响应则向下运行if(!bitll)/T!while(!bitlI);/waitDHTgotohighwhile(bitl1);数据接收状态U8RH_dala_H=COM();U8RH_daUi_L=
4、COM();U8T_data_H=COM();U8T_data_L=COM();U8checkdata=COM();bill1=1;数据校验if(U8T_dala_H+U8T_da【a_L+U8RH_dala_H+U8RH_dala_L)!=l18checkdata)/ifcheckwrong.readagaingotoGOI;/fiF16T=U8T_data.H+(float)U8T_data_L/256;/changeintegertofloatF16RH=U8RH_data_H+(float)U8RH_data_L/256:/LCD1602文件#include<reg52.h>
5、;#include<stdio.h>include<INTRINS.H>#include<Lcd_1602.h>#include<Time_Delay.h>#defineLCD_DATAPO/LCD1602datatransferdefine#detmeuintunsignedint#detmeucharunsignedchar/*只由主函数倜用的白Init_Lcd()LCD_write_str(ucharX,ucharY.uchar*s)LCD_vaIue(unsigncdcharx,unsignedchary,floalf)*/sbitLCD
6、.RS=P2A5;/16()2controldefinesbitRW=P2A6;sbitLCD_E=P2A7;OxOC显示开0x08显示关OxOA显示光标0x0c无光标OxOf有光标,光标闪动OxOe有光标,光标不闪动新数据后光标右移新数据后光标左移画面可平移画而不可平移/*木*李*丰*4:*字*±*#detlneLCD_SCREEN_ON#defineLCD_SCREEN_OFF#defincLCD_CURSOR_ON#defineLCD_CURSOR_OFF#defineLCD_C_FLASH_ON#defineLCD_C_FLASH_OFF进入模式设置指令#defineLCD_
7、AC_UP0x06#defineLCD_AC_DOWN0x04#detlneLCD_S_MOVE_ON0x05#defineLCD_S_MOVE_OFF0x04设定显小圻或光标移动方向指令#defineLCD.C_LEFT0x10光标左移1格,且AC值减I#defineLCD_C_RIGHT0x11光标右移1格,且AC值加I#detlneLCD_CHAR_L,EFT0x18显示器上字符全部左移格,但光标不动#defineLCD.CHAR.RIGHTOxIC显示器上字符全部右移一格,但光标不动*察*左*米*卡*本*本*x*木*/注仃上函数调用的函数都己作说明其他函数一般不由上函数调用/*本*4:
8、* 名称:IniLLcdO上函数调用* 功能:Led初始化* 入口参数:无* 出口参数:无* 范例:在上函数中直接调用*京*木*木*本*率><*东*/voidInit_Lcd()LCD初始化LCD_write_char(0x38,。);Delay_ms(1);I-CD_writjchar(Ox3X,0);Delay_ms(I);LCD_write_char(Ox38.O);Delay_ms(I);LCD_wri(e_char()x()c,();Delay_ms(I);LCD_wite_char(0x06,0);Delay_ms(1);LCD_write_char()x()c,();
9、Delay_ms(I);/* 名称:LCD_wnte_str(ucharX.ucharY.uchar*s)上函数调用* 功能:在指定地址写一个字符申eg:Y=0,1,2,3.4.5.6.7.8.9.10.15=X=()J0* 入口参数:X:横坐标Y:纵坐标*s:字符串首地址* 出口参数:无* 范例:LCD_write_str(1,Lucliar*s)*屯*拿*/voidLCD_write_str(unsignedcharX.unsignedcharY.unsignedchar*s)(LCD_wrile_char(O,'LCD_set_xy(X,Y);写地址while(*s)/写显示字符
10、LCD_write_char(0,*s);s+;/*本*theopticsignflash?* 名称:LCD_sel_xy(ucharx,uchary)* 功能:指定一个地址* 入I参数:X:横坐林Y:纵坐标* 出I参数:无*x*cdsetxy* 范例:LCD_set_xy(5.l)*:1:*"*:*:*voidLCD_set_xy(ucharx,uchary)写地址函数(unsignedcharaddress;if(y=0)address=0x8()+x;elseaddress=OxcO+x;LCD_write_char(address.0);/*宇* 名称:LCD_en_writ
11、e(void)* 功能:液晶使能* 入口参数:无* 出口参数:无* 范例:宜接调用* *«木木木*本木本木本*C)sexy*本木东京东木木本木木木东东东木*本木木*本东东东*木x*木木木本*本木东木京木木东水木东东本东木木*孝木木木本*/voidLCD_en_write(void)液晶使能_nop_();LCD_E=1:/EN=1op_();LCD_E=0;/EN=0)/*#* 名称:LCD_write_char(ucharcd,ucharab)功能:写指令或数据当写ab时应使cd=()当cd不为0则写cd且ab的赋值无效*入I参数:cd:指令内容ab:数据内容指令常量已在上面定义但
12、一般不用*出口参数:无* 范例:LCD_wilc_char(0,吓)*去*w*号*)k/CDsetxy*:«:*小*/voidLCD.write_char(ucharcd.ucharab)/写数据Delay_us(20):if(cd=O)(LCD_RS=1;/RS=I,写显示内容LCD_byte(ab);)elseILCD_RS=0:/RS=0.写命令LCD_byte(cd);/*:|:*木*:|:*左*4:*:1:*:|;*东*字* 名称:LCD_byte(abc);中功能:写个字符到oicall"onebytetoLCD中* 入口参数:* 出I参数:无* *ij:*.C
13、Dsetxy*率*率*岸*率*率*/voidLCD.byte(unsignedcharabc)(RW=0;LCD_E=0;LCD.DATA=abc;LCD_en_wile();在液晶中显示浮点数函数LCD_vaIue(unsignedcharx,unsignedchary,floatf)unsignedcharstr|15;不能定义为char*str,数组长度一定要大于浮点数的总位数sprintf(str,"%.lff);/I表示小数位数小数太多自动四舍五.入LCD_write_str(x,y,str);return0;主函数文件#include<reg52.h>#inc
14、lude<intrins.li>include<Lcd_16O2.h>#include<Time_DeIay.h>#includeltDHTli.ht,externfloatF16T,FI6RH;全局变量声明voidmain()(InicLcdO;LCD_write_str(OJ,"abc");液晶预显小测试LCD_value(0,0,34.345);Delay_ms(2000);Init_Lcd();whilc(l)(getDHTl1();LCD_write_str(0,0,"T=");LCD_value(3,0.FI6T):LCD_write-str(8.0.',',C");字符"应用转义格式LCD_write_str(0,1,"RH=");LCD.vaIue(4J,FI6RH);LCD_wriie_str(9,1);Delay_ms(500);/延时函数文件以下为延时函数thisisfittooldC5112MHz,12devidefreqencyvoidDelay_ms(unsignedintn)/
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
评论
0/150
提交评论