环境监测系统实验报告12920.docx
大连民族学院2010级通信工程专业单片机系统课程设计报告信息与通信信工程学院院单片机系统统课程设计计报告完成日期:2012年11月 16日31目 录录目录1一、设计任任务和要求求11.1 设设计任务111.2 性性能指标11二、设计方方案22.1.方方案设计222.1.11 单片机机控制模块块的选择论论证22.1.22 温度湿湿度检测模模块的选择择与论证222.1.33 显示模模块的选择择与论证222.2 本本设计采用用方案及原原理3三、系统硬硬件设计443.1 单单片机最小小系统设计计43.2 温温湿度采集集电路53.3 电电源电路663.4 光光敏电阻接接入电路663.5 键键盘电路883.6 LLCD显示示电路83.7 报报警电路993.8串行行接口电路路9四.系统软软件设计1104.1 主主程序设计计104.2 LLCD122864模模块程序1114.3 DDHT111模块程序序124.4 光光敏电阻模模块程序114五.调试及及性能分析析155.1调试试过程中出出现的问题题155.2 性性能分析115六.心得体体会16参考文献117附录1 程程序清单118附录2 电电路原理图图24附录3 PPCB图25附录4 硬硬件电路板板图26一、设计任任务和要求求1.1设计计任务基本要求:(1) 利利用单片机机控制传感感器采集环环境温湿度度,光照强强度等参数数,并在液液晶屏上显显示环境参参数值。(2)系统统设有键盘盘,可实现现系统参数数的设置。提高部分:(1) 将上述环境境数据记录录在SD或或TF卡上上;(2)采集集并显示三三轴加速度度值;(3)无线线传输所测测环境参数数。1.2性能能指标(1)温度度湿度光照照强度显示示:用LCD1128644进行显示示。(2)环境境温度:单位/。(3)环境境湿度:单位/%RH。(4)环境境光强:单位/llux(5)键盘盘(6)报警警二、设计方方案2.1.方方案设计2.1.11单片机控控制模块的的选择论证证方案一:单单片机选用用STC112C5AA60S22,这款单单片机有第第二串口,有有A/D转转换,有PPWM/PPCA功能能,有内部部EEPRROM可内内部实现AA/D转换换。方案二:采采用XC99000系系列的FPPGA。该该类器件具具有并行处处理能力,能能快速的响响应外部的的各种数字字信号。综上所述,单单片机数学学运算功能能较强。在在程序相互互调用方面面,处理方方便灵活,性性能稳定,适适合实际应应用。且单单片机技术术发展较为为成熟,价价格便宜,而而FPGAA芯片价格格较昂贵。则则选择方案案一。2.1.22 温度湿湿度检测模模块的选择择与论证方案一:温温度湿度的的采集模块块采用DHHT11。DDHT111是一款数数字输出的的复合传感感器,包含含一个电阻阻式感湿元元件和NTTC式温度度检测元件件,可测220900%RH湿湿度,误差差5%RHH,0550摄氏度度,误差22摄氏度。方案二:选选用DS118B200温度传感感器和HSS11011湿度传感感器。DSS18B220是一线线式数字温温度传感器器,具有独独特的单线线式接口方方式,测量量范围在5551255,误差为为±0.5。最高精精度可达00.06225。HS11101是是电容式湿湿度传感器器,可测相相对湿度范范围在0%1000%RH,误误差为±2%RHH综上所述,虽虽然方案二二的测试范范围和精度度都比较好好,但DHHT11综综合性比较较强,则选选择方案一一。2.1.33 显示模模块的选择择与论证方案一:采采用128864液晶晶模块显示示测得的数数据,可显显示较多组组的数据,字字体较大,可可清晰读数数,128864为四四行八列中中文显示器器,可以很很清晰的显显示温度湿湿度光照强强度等的指指标。方案二:采采用16002液晶模模块显示所所测数据,11602液液晶接线简简单方便,但但所显示的的不清楚,没没有条理性性。综上所述选选择方案一一。2.2 本本设计采用用方案及原原理按照系统设设计的功能能的要求,初初步确定设设计系统由由单片机主主控模块、电电源模块、显显示模块、DHT111环境温温湿度检测测模块、光光敏电阻模模块、报警警、按键等等模块组成成。原理框图:温度传感器DS18B20光敏电阻LM324放大电路CPU处理器STC89C51键盘输入控制电路系统电源12864液晶显示电路蜂鸣器报警电路三、系统硬硬件设计3.1 单单片机最小小系统设计计图3-1-1图3-1-2图3-1-3采用STCC12C55A60SS2单片机机,P0口口接上拉电电阻,100K*8排排阻,晶振振电路采用用11.00592MM,33ppF电容,单单片机晶振振的作用是是为系统提提供基本的的时钟信号号。通常一一个系统共共用一个晶晶振,便于于各部分保保持同步。有有些通讯系系统的基频频和射频使使用不同的的晶振,而而通过电子子调整频率率的方法保保持同步。3.2温湿湿度采集电电路图3-2-1单总线数字字温湿度传传感器DHHT11。这这款传感器器由广州奥奥松电子科科技有限公公司研发,与单片机机的通信十十分简洁方方便,无需外接接时钟信号号,通信如图发发除此之外,它还有很很多突出的的优点: (1)温湿湿度传感器器的一体化化结构能同同时对相对对湿度和温温度进行测测量,并以数字字信号输出出,从而减少少用户对信信号的预处处理负担(2)独特特的单总线线数据传输输线协议使使得读取传传感器更加加便捷,而且还有有全部校准准数据字节节,编码方式式为8位二二进制数。(3)400位二进制制数据输出出,高位先出出,格式为:湿度整数数部分8位位,小数部分分8位;温度整数数部分8位位,小数部分分8位,最后8位位为校验字字节,为前322位数据的的和。(4)宽工工作电压,几乎与AAT89SS52的电电压相同,为355.5V,而且功耗耗较低,通信最大大电流为22.5mAA。其简要的性性能参数如如下表所示示:从表中可以以看出,它的测量量范围较小小,但对实验验或民用已已经足够了了,如果要工工业使用的的话,可选用该该公司的同同类工业级级产品AMM323,测量范围围为-555.0+125.0度,测量范围围为0.001000.0%RRH,并且且可以和DDHT111完全互换换。按照说明书书的要求,DHT111与单片片机的连接接距离小于于20米时时,需要在VVCC和DDATA引引脚之间接接一个5KK左右的电电阻,则电电路如图所所示。3.3电源源电路图3-3-1用J1 UUSB供电电,D1为为上电指示示灯,J22为六脚按按键,用来来控制板子子上电。3.4光敏敏电阻接入入电路图3-4-1光敏电阻的的主要特性性及参数 :(1)光电电流、亮电电阻。光敏敏电阻器在在一定的外外加电压下下当有光照照射时,流过的电电流称为光光电流,外加电压压与光电流流之比称为为亮电阻,常用“100LLX”表示。 (2)暗电电流、暗电电阻。光敏敏电阻在一一定的外加加电压下,当没有光光照射的时时候,流过的电电流称为暗暗电流。外外加电压与与暗电流之之比称为暗暗电阻,常用“0LX”表示。 (3)灵敏敏度。灵敏敏度是指光光敏电阻不不受光照射射时的电阻阻值(暗电阻)受受光照射时时的电阻值值(亮电阻)的相对变变化值。(4)在一一定外加电电压下,光敏电阻阻的光电流流和光通量量之间的关关系。不同同类型光敏敏电阻光照照特性不同同,但光照特特性曲线均均呈非线性性。因此它它不宜作定定量检测元元件,这是光敏敏电阻的不不足之处。一一般在自动动控制系统统中用作光光电开关。(5)光敏敏电阻的光光谱特性光光谱特性与与光敏电阻阻的材料有有关。硫化化铅光敏电电阻在较宽宽的光谱范范围内均有有较高的灵灵敏度,峰值在红红外区域,化镉、硒硒化镉的峰峰值在可见见光区域。因因此,在选用光光敏电阻时时,应把光敏敏电阻的材材料和光源源的种类结结合起来考考虑,才能获得得满意的效效果。(6)光敏敏电阻的伏伏安特性:在一定照照度下,加在光敏敏电阻两端端的电压与与电流之间间的关系称称为伏安特特性。在给给定偏压下下,光照度度较大,光电流也也越大。在在一定的光光照度下,所加的电电压越大,光电流越越大,而且无饱饱和现象。但但是电压不不能无限地地增大,因为任何何光敏电阻阻都受额定定功率、最最高工作电电和额定电电流的限制制。超过最最高工作电电压和最大大额定电流流,可能导致致光敏电阻阻永久性损损坏。 (7)当光光敏电阻受受到脉冲光光照射时,光电流要要经过一段段时间才能能达到稳定定值,而在停止止光照后,光电流也也不立刻为为零,这就是光光敏电阻的的时延特性性。由于不不同材料的的光敏,电阻时延延特性不同同,所以它们们的频率特特性也不同同,硫化铅的的使用频率率比硫化镉镉高得多,但多数光光敏电阻的的时延都比比较大,所以,它不能用用在要求快快速响应的的场合。3.5 键键盘电路图3-5-1本设计的控控制输入部部分为简单单的四个按按键:由于单片片机默认状状态下端口口引脚为高高电平,可以接上上按键与地地相连。单片机检检测按键端端口的电平平情况来决决定是否有有按键按下下和哪个按按键被按下下,抖动问题题采用软件件延时方式式,减少硬件件电路设计计,电路如图图所示。3.6 LLCD显示示电路由引脚的应应用考虑,LLCD接为为串行显示示,当模块块的PSBB脚接低电电平时,模模块即进入入串行接口口模式。串串行模式使使用串行数数据线SIID与串行行时钟线SSCLK来来传送数据据,即构成成2线串行行模式。图3-6-13.7 报报警电路图3-7-1根据蜂鸣器器的参数,电压1.331.5VV,电流2080mAA,电阻68 知,可用选用用集成放大大芯片LMM386 驱动,但更经济济的是用一一个三极管管90122 或85550 驱驱动即可,电路如图图所示。3.8 串串行接口电电路图3-8-1四.系统软软件设计4.1 主主程序设计计void mainn()uchaar k,j;LCD_initt();LCD_dis_codee(0,11,lcdd);LCD_dis_codee(1,00,lcdd1);LCD_dis_codee(2,00,lcdd2);LCD_dis_codee(3,00,lcdd3);whille(1)reaad_ioo();/读取温温湿度数据据/cclearr_gcrrom();/湿湿度forr(k=00; k<<2; kk+)lccd_poos(3,k+3);wrrite_dataa(strr1k);/cclearr_gcrrom();/温温度forr(j=00; j<<2; jj+)lccd_poos(2,j+2);wrrite_dataa(strr2j);dellay(5500);4.2 LLCD122864模模块程序void LCD_dis_codee(uchhar xx,uchhar yy,uchhar ccode *s) writee_cmdd(adddr_taab8*x+y); /写地址址whilee(*s>>0) wriite_ddata(*s); /写数数据 s+; /*初始始化LCDD*/void Lcd_initt(voiid) delayy(50); wwritee_cmdd(0x330); /选择基基本指令集集delayy(1); wwritee_cmdd(0x330); /选择88bit数数据流delayy(1); wwritee_cmdd(0x00c); /开显示示(无游标标、不反白白)delayy(1); wwritee_cmdd(0x001); /清除显显示,并且且设定地址址指针为000Hdelayy(30);/*串行行发送一个个字节*/void sendd_bytte(ucchar bytee) uchaar i; for(i=0;i<8;i+) SCLKK = 00; byyte=bbyte<<<1; /左移一位位先发送高高位的数据据 SIID = CY; /移出出的位给SSID SCCLK = 1;/上升升沿触发发发送 SCCLK = 0; /*写指指令*/void writte_cmmd(ucchar cmd) ddelayy(1);SID = 0;SCLKK = 00;delaay(5);P0 = cmdd;delaay(5);SCLKK = 11;delaay(5);SCLKK = 00;/*写数数据*/void writte_daata(uucharr datt) ddelayy(1);SID = 0;SCLKK = 00;P0 = datt;delaay(5);SCLKK = 11;delaay(5);SCLKK = 00;/*延时时子程序*/void delaay(uiint aa)uintt i;whille(a-)forr(i=00; i<<113; i+);4.3 DDHT111模块程序序ucharr recceivee_bytte()/接收一一个字节uchaar i,tempp;for(i=0;i<8; i+)couunt = 2;whiile(!io) && counnt+)/等待待50uss低电平结结束,并防防止死循环环temmp = 0;dellay1();dellay1();dellay1();if (io=1) teemp = 1;coount = 2;whhile(io &&& coount+);elsseteemp = 0;daata_bbyte<<<=1;daata_bbyte=tempp;retuurn (dataa_bytte);/*开始始信号*/void readd_io()/开开始信号,读读数据并校校验io = 0;delaay(188);/主机拉低低18mssio = 1;/DATTA总线由由上拉电阻阻拉高 主主机延时220usdelaay1();delaay1();delaay1();delaay1();io = 1;/主机设设置为输入入高电平,判判断从机响响应信号if(!io)couunt = 2;whiile(!io)&&coount+);/判断DDHT111发出800us低电电平响应信信号是否结结束couunt = 2;whiile(iio &&& couunt+);/判断DHHT11拉拉高总线880us高高电平是否否结束RH_tempp = rreceiive_bbyte(); RL_tempp = rreceiive_bbyte(); TH_tempp = rreceiive_bbyte(); TL_tempp = rreceiive_bbyte(); CK_tempp = rreceiive_bbyte();io = 1;numm = (RH_ttemp + RLL_temmp + TH_ttemp + TLL_temmp);/数据校校验if(num = CCK_teemp)RHH_datta = RH_ttemp; RL_ddata = RLL_temmp;THH_datta = TH_ttemp; TL_ddata = TLL_temmp; CK_ddata = CKK_temmp;/湿度度整数部分分str110 = (cchar)(0x330 + RH_ddata/10);str111 = (cchar)(0x330 + RH_ddata%10);/温度度整数部分分str220 = (cchar)(0x330 + TH_ddata/10);str221 = (cchar)(0x330 + TH_ddata%10);/*E N D*/4.4 光光敏电阻模模块程序unsiggned charr adcc08044( vooid ) /读读AD08804子程程序 unsiignedd chaar adddataa,i; rd=1;wrr=1;/intt1=1; /读读ADC00804前前准备 P1=00xff; /PP1全部置置一准备 cs=0;wr=00;wr=1; /启动AADC08804开始始测电压 rd=00; /开始读转转换后数据据 i=i; i=i; /无意意义语句,用用于延时等等待ADCC08044读数完毕毕 addatta=P11;/读读出的数据据赋与addatte rdd=1;ccs=1;/读数数完毕 addatta=adddataa/2; returrn(adddataa);/返回最后后读出的数数据 五.调试及及性能分析析5.1调试试过程中出出现的问题题首先,在调调试时,先先下载一个个LCD显显示程序,但但LCD没没有结果,经经过测量,发发现由于滑滑动变阻器器的阻值太太大,导致致LCD背背光太低,致致使LCDD没有显示示,把滑动动变阻器阻阻值调小后后,则程序序出现结果果。5.2 性性能分析此系统实现现的是环境境温湿度光光照强度的的显示,以以及报警功功能,按键键设计等。单总线数字温度、湿度传感器,应用单片机原理,LCD显示技术,实现了实验室多点温湿度参数的实时显示和超限报警系统,保障了实验室环境的可靠性,有效地提高了实验成功率。系统集成度高,操作容易,可靠性好,具有较高的实用价值,实践表明,该系统能够对温度、湿度进行检测,适合于对数据采样频率要求不是很高的应用场合六.心得体体会为了设计出出基于单片片机的环境境温湿度检检测系统,搜集了大大量的芯片片手册,查阅了较较多的图书书资料,复习了所所学的课本本教材,分两个阶阶段对系统统进行了设设计前期的的基本设计计和后期的的探索设计计。 前期期的设计,在种类繁繁多的温度度和湿度传传感器中选选定了由广广州奥松公公司生产的的单总线数数字温湿度度传感器DDHT111,这款传感感器的优势势在于通信信协议相对对来说比较较简洁,产品价格格低廉,这对设计计低成本,高精度的的温湿度检检测系统十十分有必要要。 对于于功能方面面的要求,在调查了了市场上的的同类产品品之后,根据实际际需求来设设计的。市市场上的温温湿度检测测系统的功功能为,检测并显显示温湿度度数据,设置报警警点并报警警,与上层监监控设备通通信。因此此设计正是是,从这几几个方面的的要求出发发,利用单片片机本身的的特点,来实现系系统的功能能。 后期期的探索设设计,提升了系系统的性能能。 由于于第一次设设计基于单单片机的系系统,虽然完成成了基本的的设计要求求,但在设计计过程中遇遇到了许多多硬件和软软件问题还还没有完全全解决,设计的过过程也是模模块式的,没有完整整系统的总总体规划,后期的探探索设计只只是从理论论上进行了了可行性分分析,没有做出出相应的硬硬件并调试试符合预期期构想。因因此,以后还必必须加强单单片机系统统设计的能能力,毕业设计计只是一个个浅薄的入入门。 当当然,在设计过过程中,应虚心听听取他人的的建议和意意见,对解决设设计过程中中的问题都都很有帮助助。展望未来,最终的系系统应该为为基于单片片机的多功功能环境检检测系统,它不仅可可以检测环环境的温度度、湿度、照照度等所需需的环境变变量并显示示在液晶屏屏幕上,可以根据据设定的限限值进行报报警提示,可以以时时间顺序存存储大量的的检测数据据,并根据需需要发送给给上层分析析处理设备备,还可以用用红外遥控控实行远程程无线控制制,除此之外外,电源系统统可以适应应各种供电电场合,并存储部部分电能,断电后确确保系统可可继续工作作一定时间间。参考文献1李瀚瀚荪.简明明电路分析析.北京:高等教育育出版社220022康光光华.电子子技术基础础-模拟部部分.北京京:高等教育育出版社11979 3康光光华.电子子技术基础础-数字部部分.北京京:高等教育育出版社11980 4马金金龙.信号号与系统.北京:科学出版版社20006 5唐颖颖.单片机机原理与应应用.北京京:北京大学学出版社22008 6郑莉莉.董渊.张瑞丰.CC+语言言程序设计计.北京:清华大学学出版社22004 7唐文文彦.传感感器.北京京:机械工业出出版社20010 8陈尔尔绍等.电电子控制电电路实例.北京:电子工业业出版社22004 9姜威威.实用电电子系统设设计基础.北京:北京理工工大学出版版社20008 10毛毛兴武等.新型电子子器件及其其应用技术术.北京:中国电力力出版社22010 11孟孟贵华.电电子元器件件选用入门门.北京:机械工业业出版社22004 12黎黎小桃等.Prottel999 入门与与提高.北北京:电子工业业出版社22009 13郭郭强.液晶晶显示模块块应用与调调试.北京京:电子工业业出版社22010 14陈陈涛.单片片机应用及及C51 程序设计计.北京:机械工业业出版社22008 15钟钟睿.MCCS-511 单片机机原理及应应用开发技技术.北京京:中国铁道道出版社22006附录1程序序清单/*DHHT11与与128664LCDD*/* DHT111总线接接P100 */* 晶振 11.00592MM */*/#incllude <regg52.hh>#defiine uucharr unssigneed chhar#defiine uuint unsiignedd inttucharr llcd_xx,lcdd_y,ddata_bytee=0,ccountt;uint TH_ddata,TL_ddata,RH_ddata,RL_ddata,CK_ddata;uint TH_ttemp,TL_ttemp,RH_ttemp,RL_ttemp,CK_ttemp;ucharr numm;void readd_io();void delaay(uiint aa);/延时子函函数void lcd_pos(unsiignedd chaar X,unsiignedd chaar Y);void LCD_initt();/LCDD初始化程程序void LCD_dis_codee(uchhar xx,uchhar yy,uchhar ccode *s);/显示示函数void writte_daata(uucharr datt);/写数据void writte_cmmd(ucchar cmd);/写写指令void delaay1();/110us延延时/*汉字地地址表*/ucharr codde adddr_ttab=0x80,0x811,0x882,0xx83,00x84,0x855,0x886,0xx87,/第一行行汉字位置置0x90,0x911,0x992,0xx93,00x94,0x955,0x996,0xx97,/第二行行汉字位置置0x88,0x899,0x88a,0xx8b,00x8c,0x8dd,0x88e,0xx8f,/第三行行汉字位置置0x98,0x999,0x99a,0xx9b,00x9c,0x9dd,0x99e,0xx9f,/第四行行汉字位置置;sbit SID = P001;/读写信信号sbit SCLKK = PP00;/串行行时钟信号号sbit io = P13;/DHT111总线ucharr codde lccd="环境境监测系统统"ucharr codde lccd1="温温度: "ucharr codde lccd2="湿湿度: %RRH"ucharr codde lccd3="光光强: luux"ucharr strr1=" ""ucharr strr2=" ""/*主程程序*/ void mainn()uchaar k,j;LCD_initt();LCD_dis_codee(0,11,lcdd);LCD_dis_codee(1,00,lcdd1);LCD_dis_codee(2,00,lcdd2);LCD_dis_codee(3,00,lcdd3);whille(1)reaad_ioo();/读取温温湿度数据据/cclearr_gcrrom();/湿湿度forr(k=00; k<<2; kk+)lccd_poos(3,k+3);wrrite_dataa(strr1k);/cclearr_gcrrom();/温温度forr(j=00; j<<2; jj+)lccd_poos(2,j+3);wrrite_dataa(strr2j);dellay(5500); /*延时时程序*/void delaay1()/延时时10ussunsiignedd chaar i;for(i=0; i<33; i+);/*显示示程序*/void lcd_pos(unsiignedd chaar X,unsiignedd chaar Y)unsiignedd chaar poos;if ( X = 1 ) poos = 0x800 ; eelse if ( X = 2 ) ppos = 0x990 ; elsee if ( X = 33 ) poos = 0x888 ; eelse ppos = 0x998 ; writte_cmmd(Y | poos);/数据据指针=880+地址址变量/*DHHT11模模块*/ucharr recceivee_bytte()/接收一一个字节uchaar i,tempp;for(i=0;i<8; i+)couunt = 2;whiile(!io) && counnt+)/等待待50uss低电平结结束,并防防止死循环环temmp = 0;dellay1();dellay1();dellay1();if (io=1) teemp = 1;coount = 2;whhile(io &&& coount+);elsseteemp = 0;daata_bbyte<<<=1;daata_bbyte|=temmp;retuurn (dataa_bytte);/*开始始信号*/void readd_io()/开开始信号,读读数据并校校验io = 0;delaay(188);/主机拉低低18mssio = 1;/DATTA总线由由上拉电阻阻拉高 主主机延时220usdelaay1();delaay1();delaay1();delaay1();io = 1;/主机设设置为输入入高电平,判判断从机响响应信号if(!io)couunt = 2;whiile(!io)&&coount+);/判断DDHT111发出800us低电电平响应信信号是否结结束couunt = 2;whiile(iio &&& couunt+);/判断DHHT11拉拉高总线880us高高电平是否否结束RH_tempp = rreceiive_bbyte(); RL_tempp = rreceiive_bbyte(); TH_tempp = rreceiive_bbyte(); TL_tempp = rreceiive_bbyte(); CK_tempp = rreceiive_bbyte();io = 1;numm = (RH_ttemp + RLL_temmp + TH_ttemp + TLL_temmp);/数据校校验if(num = CCK_teemp)RHH_datta = RH_ttemp; RL_ddata = RLL_temmp;THH_datta = TH_ttemp; TL_ddata = TLL_temmp; CK_ddata = CKK_temmp;/湿度度整数部分分str110 = (cchar)(0x330 + RH_ddata/10);str111 = (cchar)(0x330 + RH_ddata%10);/温度度整数部分分str220 = (cchar)(0x330 + TH_ddata/10);str221 = (cchar)(0x330 + TH_ddata%10);/*E N D*/*122864模模块程序*/*voiid cllear_gcroom()uchaar i,j,k;lcd_x = 0x800;lcd_y = 0x800;writte_cmmd(0xx34);for(i = 0 ; i < 2 ; i+)/上下下两屏幕forr(j = 0 ; j << 32 ; j+)wrrite_cmd(lcd_y+j);wrrite_cmd(lcd_x); foor(k = 0 ; k < 166 ; kk+)wwritee_datta(0xx00);lcdd_x = 0x888;writte_cmmd(0xx36);writte_cmmd(0xx30);*/ /