环境探测与控制系统设计实验报告.docx
- 文档编号:9671598
- 上传时间:2023-02-05
- 格式:DOCX
- 页数:26
- 大小:1.26MB
环境探测与控制系统设计实验报告.docx
《环境探测与控制系统设计实验报告.docx》由会员分享,可在线阅读,更多相关《环境探测与控制系统设计实验报告.docx(26页珍藏版)》请在冰豆网上搜索。
环境探测与控制系统设计实验报告
环境信息探测与控制系统
——黑龙江大学2012年电子设计大赛
700实验室
组长:
组员:
2012年6月14日
目录
◆1摘要3
◆2关键词3
◆3绪论3
◆4传感器模块功能介绍及程序设计3
⏹4.1DS1302时钟芯片4
●4.1.1DS1302简介4
●4.1.2DS1302各引脚的功能4
●4.1.3DS1302驱动程序5
⏹4.2DHT11温湿度模块8
●4.2.1DHT11温湿度模块简介8
●4.2.2DHT11温湿度模块各引脚的功能9
●4.2.3DHT11温湿度模块驱动程序9
⏹4.3BH1750光感模块19
●4.3.1BH1750光感模块简介19
●4.3.2BH1750特点19
⏹4.4LCD12864液晶屏20
●4.4.1LCD12864简介21
●4.4.2LCD12864基本特性21
●4.4.3LCD12864引脚说明22
◆5设计总结23
◆附录一系统流程图24
◆附录二系统电路图25
◆附录三原理方框图与实物图26
1摘要
本系统是以ATmega16L单片机为主控制器,通过bh1750光感模块,dht11温湿度模块,ds1302时钟芯片,按键将光强,温度,湿度,时间这些模拟量转化为数字量,然后传入单片机中,再通过单片机将传感器出入的数据进行处理,然后再lcd12864液晶屏上显示出来,通过,SYN6288语音模块进行语音播报。
本系统可以对周围环境进行检查和控制,可实现人机互动。
2关键词:
单片机,传感器,温度,湿度,光感强度。
3绪论:
环境信息探测与控制系统是集时间,周围温度、湿度、光感强度于一体的控制系统,节省了大量资源,将过去需要多个系统测量的数据集合为一体。
本文重点介绍了该系统的设计思路,模块原理及功能,以及模块的使用方法及程序设计。
本系统控制灵活、可靠性高、系统维护方便是一款智能化程度更高,性能更完美的环境信息探测控制系统。
4.传感器模块功能介绍及程序设计
4.1DS1302时钟芯片
4.1.1DS1302简介:
DS1302是美国DALLAS公司推出的一种高性能、低功耗的实时时钟芯片,附加31字节静态RAM,采用SPI三线接口与CPU进行同步通信,并可采用突发方式一次传送多个字节的时钟信号和RAM数据。
实时时钟可提供秒、分、时、日、星期、月和年,一个月小与31天时可以自动调整,且具有闰年补偿功能。
工作电压宽达2.5~5.5V。
采用双电源供电(主电源和备用电源),可设置备用电源充电方式,提供了对后背电源进行涓细电流充电的能力。
DS1302的外部引脚分配如图1所示及内部结构如图2所示。
DS1302用于数据记录,特别是对某些具有特殊意义的数据点的记录上,能实现数据与出现该数据的时间同时记录,因此广泛应用于测量系统中。
DS1302的外部引脚分配
4.1.2DS1302各引脚的功能:
Vcc1:
主电源;Vcc2:
备份电源。
当Vcc2>Vcc1+0.2V时,由Vcc2向DS1302供电,当Vcc2 SCLK: 串行时钟,输入,控制数据的输入与输出; I/O: 三线接口时的双向数据线; CE: 输入信号,在读、写数据期间,必须为高。 该引脚有两个功能: 第一,CE开始控制字访问移位寄存器的控制逻辑; 其次,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 #include // 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_time4 sbitP2_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) { //主机拉低18ms P2_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 }//main voidRSINTR()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.受红外线影响很小。 VCCDVI GND 4.4LCD12864液晶屏 4.4.1LCD12864简介 LCD12864是一种具有4位/8位并行、2线或3线串行多种接口方式,内部含有国标一级、二级简体中文字库的点阵图形液晶显示模块;其显示分辨率为128×64,内置8192个16*16点汉字,和128个16*8点ASCII字符集.利用该模块灵活的接口方式和简单、方便的操作指令,可构成全中文人机交互图形界面。 可以显示8×4行16×16点阵的汉字.也可完成图形显示.低电压低功耗是其又一显著特点。 4.4.2LCD12864基本特性 ●低电源电压(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.3LCD12864引脚说明 管脚号 管脚名称 电平 管脚功能描述 1 VSS 0V 电源地 2 VCC 3.0+5V 电源正 3 V0 - 对比度(亮度)调整 4 RS(CS) H/L RS=“H”,表示DB7——DB0为显示数据 RS=“L”,表示DB7——DB0为显示指令数据 5 R/W(SID) H/L R/W=“H”,E=“H”,数据被读到DB7——DB0 R/W=“L”,E=“H→L”,DB7——DB0的数据被写到IR或DR 6 E(SCLK) H/L 使能信号 7 DB0 H/L 三态数据线 8 DB1 H/L 三态数据线 9 DB2 H/L 三态数据线 10 DB3 H/L 三态数据线 11 DB4 H/L 三态数据线 12 DB5 H/L 三态数据线 13 DB6 H/L 三态数据线 14 DB7 H/L 三态数据线 15 PSB H/L H: 8位或4位并口方式,L: 串口方式 16 NC - 空脚 17 /RESET H/L 复位端,低电平有效 18 VOUT - LCD驱动电压输出端 19 A VDD 背光源正端(+5V) 20 K VSS 背光源负端 5设计总结 通过对环境信息探测控制系统的设计制作,使系统更加完善,对周围环境的检查更加精确,节省大量人力物力,以及时间。 通过控制系统的制作方法,我们可以进一步的完善系统,使其功能更加强大,完善,彻底实现人机互动。 附录一系统流程图 Y N y N 附录二系统电路图 附录三原理方框图 实物图
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 环境 探测 控制系统 设计 实验 报告