环境探测与控制系统设计实验报告_第1页
环境探测与控制系统设计实验报告_第2页
环境探测与控制系统设计实验报告_第3页
环境探测与控制系统设计实验报告_第4页
环境探测与控制系统设计实验报告_第5页
已阅读5页,还剩23页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

PAGEPAGE2环境信息探测与控制系统——黑龙江大学2012年电子设计大赛 700实验室组长:组员:2012年6月14日目录1摘要32关键词33绪论34传感器模块功能介绍及程序设计34.1DS1302时钟芯片44.1.1DS1302简介44.1.2DS1302各引脚的功能4.1.3DS1302驱动程序4.2DHT11温湿度模块84.2.1DHT11温湿度模块简介84.2.2DHT11温湿度模块各引脚的功能4.2.3DHT11温湿度模块驱动程序4.3BH1750光感模块194.3.1BH1750光感模块简介4.3.2BH1750特点4.4LCD12864液晶屏204.4.1LCD12864简介214.4.2LCD12864基本特性24.4.3LCD12864引脚说明225设计总结23附录一系统流程图24附录二系统电路图25附录三原理方框图与实物图26其次,CE提供结束单字节或多字节数据传输的方法。DS1302的内部结构4.1.3DS1302驱动程序4.2DHT11温湿度模块4.2.1DHT11温湿度模块简介DHT11数字温湿度传感器是一款含有已校准数字信号输出的温湿度复合传感器。传感器包括一个电阻式感湿元件和一个NTC测温元件,并与一个高性能8位单片机相连接。因此该产品具有品质卓越、超快响应、抗干扰能力强、性价比极高等优点。每个DHT11传感器都在极为精确的湿度校验室中进行校准。校准系数以程序的形式储存在OTP内存中,传感器内部在检测信号的处理过程中要调用这些校准系数。单线制串行接口,使系统集成变得简易快捷。超小的体积、极低的功耗,信号传输距离可达20米以上,使其成为各类应用甚至最为苛刻的应用场合的最佳选则。4.2.2DHT11温湿度模块各引脚的功能:1:接VDD,供电3-5.5VDC。2:接IO口,串行数据,单总线。3:NC,空脚,悬空。4:接GND,接地或电源负极。4.2.3DHT11温湿度模块驱动程序#include<reg51.h>#include<intrins.h>//typedefunsignedcharU8;/*definedforunsigned8-bitsintegervariable 无符号8位整型变量*/typedefsignedcharS8;/*definedforsigned8-bitsintegervariable 有符号8位整型变量*/typedefunsignedintU16;/*definedforunsigned16-bitsintegervariable 无符号16位整型变量*/typedefsignedintS16;/*definedforsigned16-bitsintegervariable 有符号16位整型变量*/typedefunsignedlongU32;/*definedforunsigned32-bitsintegervariable 无符号32位整型变量*/typedefsignedlongS32;/*definedforsigned32-bitsintegervariable 有符号32位整型变量*/typedeffloatF32;/*singleprecisionfloatingpointvariable(32bits)单精度浮点数(32位长度)*/typedefdoubleF64;/*doubleprecisionfloatingpointvariable(64bits)双精度浮点数(64位长度)*///#defineucharunsignedchar#defineuintunsignedint#defineData_0_time4sbitP2_0=P2^0;U8U8FLAG,k;U8U8count,U8temp;U8U8T_data_H,U8T_data_L,U8RH_data_H,U8RH_data_L,U8checkdata;U8U8T_data_H_temp,U8T_data_L_temp,U8RH_data_H_temp,U8RH_data_L_temp,U8checkdata_temp;U8U8comdata;U8outdata[5];//定义发送的字节数 U8indata[5];U8count,count_r=0;U8str[5]={"RS232"};U16U16temp1,U16temp2;SendData(U8*a){ outdata[0]=a[0]; outdata[1]=a[1]; outdata[2]=a[2]; outdata[3]=a[3]; outdata[4]=a[4]; count=1; SBUF=outdata[0];}voidDelay(U16j){U8i; for(;j>0;j--) { for(i=0;i<27;i++); }}voidDelay_10us(void){U8i;i--;i--;i--;i--;i--;i--;} voidCOM(void){ U8i;for(i=0;i<8;i++) { U8FLAG=2; while((!P2_0)&&U8FLAG++); Delay_10us(); Delay_10us(); Delay_10us(); U8temp=0; if(P2_0)U8temp=1; U8FLAG=2; while((P2_0)&&U8FLAG++); //超时则跳出for循环 if(U8FLAG==1)break; //判断数据位是0还是1 //如果高电平高过预定0高电平值则数据位为1 U8comdata<<=1; U8comdata|=U8temp;//0 }//rof } // //湿度读取子程序 // //以下变量均为全局变量 //温度高8位==U8T_data_H //温度低8位==U8T_data_L //湿度高8位==U8RH_data_H //湿度低8位==U8RH_data_L //校验8位==U8checkdata //调用相关子程序如下 //Delay();,Delay_10us();,COM(); // voidRH(void) { //主机拉低18msP2_0=0; Delay(180); P2_0=1; //总线由上拉电阻拉高主机延时20us Delay_10us(); Delay_10us(); Delay_10us(); Delay_10us(); //主机设为输入判断从机响应信号 P2_0=1; //判断从机是否有低电平响应信号如不响应则跳出,响应则向下运行 if(!P2_0) //T! { U8FLAG=2; //判断从机是否发出80us的低电平响应信号是否结束 while((!P2_0)&&U8FLAG++); U8FLAG=2; //判断从机是否发出80us的高电平,如发出则进入数据接收状态 while((P2_0)&&U8FLAG++); //数据接收状态 COM(); U8RH_data_H_temp=U8comdata; COM(); U8RH_data_L_temp=U8comdata; COM(); U8T_data_H_temp=U8comdata; COM(); U8T_data_L_temp=U8comdata; COM(); U8checkdata_temp=U8comdata; P2_0=1; //数据校验 U8temp=(U8T_data_H_temp+U8T_data_L_temp+U8RH_data_H_temp+U8RH_data_L_temp); if(U8temp==U8checkdata_temp) { U8RH_data_H=U8RH_data_H_temp; U8RH_data_L=U8RH_data_L_temp; U8T_data_H=U8T_data_H_temp; U8T_data_L=U8T_data_L_temp; U8checkdata=U8checkdata_temp; }//fi }//fi } ////main()功能描述:AT89C5111.0592MHz 串口发//送温湿度数据,波特率9600//voidmain(){ U8i,j; //ucharstr[6]={"RS232"}; /*系统初始化*/ TMOD=0x20; //定时器T1使用工作方式2 TH1=253;//设置初值 TL1=253; TR1=1;//开始计时 SCON=0x50; //工作方式1,波特率9600bps,允许接收 ES=1; EA=1;//打开所以中断 TI=0; RI=0; SendData(str);//发送到串口 Delay(1);//延时100US(12M晶振) while(1) { // //调用温湿度读取子程序 RH(); //串口显示程序 // str[0]=U8RH_data_H; str[1]=U8RH_data_L; str[2]=U8T_data_H; str[3]=U8T_data_L; str[4]=U8checkdata; SendData(str);//发送到串口 //读取模块数据周期不易小于2S Delay(20000); }//elihw }//mainvoidRSINTR()interrupt4using2{ U8InPut3; if(TI==1)//发送中断 { TI=0; if(count!=5)//发送完5位数据 { SBUF=outdata[count]; count++; } } if(RI==1) //接收中断 { InPut3=SBUF; indata[count_r]=InPut3; count_r++; RI=0; if(count_r==5)//接收完4位数据 { //数据接收完毕处理。 count_r=0; str[0]=indata[0]; str[1]=indata[1]; str[2]=indata[2]; str[3]=indata[3]; str[4]=indata[4]; P0=0; } }}4.3BH1750光感模块4.3.1BH1750光感模块简介BH1750FVI是一种用于两线式串行总线接口的数字型光强度传感器集成电路。这种集成电路可以根据收集的光线强度数据来调整液晶或者键盘背景灯的亮度。利用它的高分辨率可以探测较大范围的光强度变化。4.3.2BH1750特点1.支持I2CBUS接口(f/sModeSupport)。2.接近视觉灵敏度的光谱灵敏度特性(峰值灵敏度波长典型值:560nm)。3.输出对应亮度的数字值。4.对应广泛的输入光范围(相当于1-65535lx)。5.通过降低功率功能,实现低电流化。6.通过50Hz/60Hz除光噪音功能实现稳定的测定7.支持1.8V逻辑输入接口。8.无需其他外部件。9.光源依赖性弱(白炽灯,荧光灯,卤素灯,白光LED,日光灯)。10.有两种可选的I2Cslave地址。11.可调的测量结果影响较大的因素为光入口大小。12.使用这种功能能计算1.1lx到100000lx马克斯/分钟的范围。13.最小误差变动在±20%。14.受红外线影响很小。VCCDVIGND4.4LCD12864液晶屏4.4.1LCD12864是一种具有4位/8位并行、2线或3线串行多种接口方式,内部含有国标一级、二级简体中文字库的点阵图形液晶显示模块;其显示分辨率为128×64,内置8192个16*16点汉字,和128个16*8点ASCII字符集.利用该模块灵活的接口方式和简单、方便的操作指令,可构成全中文人机交互图形界面。可以显示8×4行16×16点阵的汉字.也可完成图形显示.低电压低功耗是其又一显著特点。4.4●低电源电压(VDD:+3.0--+5.5V)●显示分辨率:128×64点●内置汉字字库,提供8192个16×16点阵汉字(简繁体可选)●内置128个16×8点阵字符●2MHZ时钟频率●显示方式:STN、半透、正显●驱动方式:1/32DUTY,1/5BIAS●视角方向:6点●背光方式:侧部高亮白色LED,功耗仅为普通LED的1/5—1/10●通讯方式:串行、并口可选●内置DC-DC转换电路,无需外加负压●无需片选信号,简化软件设计●工作温度:0℃-+55℃,存储温度:-20℃-+60℃4.4管脚号管脚名称电平管脚功能描述1

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论