![基于单片机室内环境检测_第1页](http://file3.renrendoc.com/fileroot_temp3/2022-3/10/a84a6b3f-25af-4c7d-afbb-8d8713499bee/a84a6b3f-25af-4c7d-afbb-8d8713499bee1.gif)
![基于单片机室内环境检测_第2页](http://file3.renrendoc.com/fileroot_temp3/2022-3/10/a84a6b3f-25af-4c7d-afbb-8d8713499bee/a84a6b3f-25af-4c7d-afbb-8d8713499bee2.gif)
![基于单片机室内环境检测_第3页](http://file3.renrendoc.com/fileroot_temp3/2022-3/10/a84a6b3f-25af-4c7d-afbb-8d8713499bee/a84a6b3f-25af-4c7d-afbb-8d8713499bee3.gif)
![基于单片机室内环境检测_第4页](http://file3.renrendoc.com/fileroot_temp3/2022-3/10/a84a6b3f-25af-4c7d-afbb-8d8713499bee/a84a6b3f-25af-4c7d-afbb-8d8713499bee4.gif)
![基于单片机室内环境检测_第5页](http://file3.renrendoc.com/fileroot_temp3/2022-3/10/a84a6b3f-25af-4c7d-afbb-8d8713499bee/a84a6b3f-25af-4c7d-afbb-8d8713499bee5.gif)
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、一、设计任务本系统满足室内环境变量实行全面、实时、长期监测的要求,实现室内环境温湿度、可燃气体浓度检测的自动化和智能化.系统以单片机为核心,以温度、湿度传感器,气敏传感器作为测量元件,通过单片机与智能传感器相连,采集并存储智能传感器的测量数据,经过分析处理将结果显示于 LCD 液晶屏.在单片机系统中,还要实现超限报警和数据辅助存储功能.二、方案设计2.1 硬件设计在室内环境监测硬件设计上,由单片机XTAL1XTAL2RSTPSENALEEAP1.0P11P1.2P13P1AP15PI6P1.7P30/RXDP3.1/TXDP3.2/3NTOP3.3/F而P34/T0P35O1P36WVRP37
2、/RD10iT12w1415_1PO.O/ADOPOWAD1P0.2/AD2P03AD3PO4./AD4POLADSP06/AD6PO7/AD7P2.0/A8P21/A9P22/A10P23ZA11P2.4/A12P25/A13P26Al4P2.7/A15冏 BARE2/-02凶NAM2724PL.trA_6*用心iP07M07p?Q/AaP21,陶P2iM,lO气揖占VK中612F二型A13r:m*14pjT中懒QWRXTP3t为闻町fM.3/IHT?P二厘河PUi7Rn-阳7欣2.1.3 气敏传感器MQ211 型气敏元件是一种通用性较强的气敏元件,气敏传感器的敏感元件是气敏电阻器,气敏电阻
3、器的阻值随吸附气体的浓度变化而变化,利用者一特性检测气体浓度.气敏传感器的连接如图 4.5vF112KI4KI4JOkJOk图 4 气敏传感器的连接2.1.4 温湿度传感器传感器 SHT11 将温度感测、湿度感测、信号变换、A/D 转换和加热器等功能集成到一图 3 晶振和复位电路冷汩I-HM3与MQ个芯片上,其内部结构如图 5 所示.该芯片包括一个电容性聚合体湿度敏感元件和一个用能隙材料制成的温度敏感元件.这两个敏感元件分别将湿度和温度转换成电信号,该电信号首先进入微弱信号放大器进行放大,然后进入一个 14 位的 A/D 转换器,最后经过二线串行数字接口输出数字信号图 5 温湿度传感器内部结构
4、命令代码含义拿XOOOll测量温度一测量湿度“XDOlll读内部状态存放器.X00110P与内部状态存放器*,复位命名其他一保存图 6 温湿度传感器指令代码UIPl.GPl.lPL2PJ.4RSTXTAL2KTAL1STC89C52PPPPPPPPPPPPPPPP2.1.5LCD 显示模块设计在该设计中,LCD 要显示温度、湿度、可燃气体是否超标的功能,所以使用了一块行列点阵数为 128*64,每行可以显示 8 个字符,共显示 2 行字的 LCD名称名称/ /型态口型态口电平电平/ /功能描述功能描述/ /并并W W串口串口, ,VCCHP工卡工卡 , ,模块反模块反悯悯俞人俞人, ,GN1*
5、GN1*3 3 / /电源地电源地 2 2叱.,/.,/比照度调节比照度调节VEEVEE卡卡工炉工炉液晶驱动电压炉液晶驱动电压炉PEaPEaH/1QH/1Q并口并口, ,串口选择串口选择 , ,RSTRST卡卡工产工产H/L/H/L/复位信号低宜复位信号低宜效效RSCCS)*RSCCS)*工炉工炉H/LPH/LPH H数据数据L L指令指令片选低意数片选低意数. .R/W(SID)-R/W(SID)-讦讦R/LaR/LaH H读读L L耳耳串行数据线串行数据线工二工二H/LPH/LP使育霜亭使育霜亭蔚亍时蔚亍时钟输户钟输户毗毗D D3r3r工仪工仪H H/ /口口数据总线低四位数据总线低四位
6、2 2Dd-DDd-D再再I/O*I/O*3 3H/LH/L卡卡数据总线高数据总线高四位一四位一交接交接工卡工卡一一背背光正产光正产 * * *背光良心背光良心图 8LCD 管脚名称和功能LCD 的连接电路:当 LCD 选择并时,要把 8 个数据送到芯片,而 LCD 选择串口时,只需要把 3 个数据送到芯片.由于芯片的管脚丰富够用,所以 LCD 的连接方式选择并口.LCD 的连接方式如图 9 所示.XW2pppppbipp10k米8W箱+5V 曲:5 叱豌装尤2.1.6 按键电路块图 10 是按键输入的典型电路,按键 S1、S2、S3 断开时,端口 P2.5、P2.6、P2.7 上的信号为高电
7、平,按键 S1、S2、S3 合上时,端口 P2.5、P2.6、P2.7 上的信号为低电平.电阻起到分压、限流作用.当按键电路设计成这种硬件连接时,按键可以采取中断的形式进行读取,也可以采用循环扫描的形式读取,为程序的编写提供了选择的余地.2.1.7 报警电路设计图 11,在本系统中,采用 P1.4 口为报警电路输出口,当有报警信号时,蜂鸣器鸣叫,提醒平安指标超标或不正常,须采取平安举措改变室内环境质量,如配合智能建筑系统,可实现自动化无人操作,方便又平安.tnF1.OPJ4r-t.rPL4XTAL24 4TILLLLsuTILLLLsuppppppppp p二三三仁口4-2/5,6,7U口Q.
8、o.cado.AVPPPPPPFPE图 10 按键电路7,43102121ALAALAL L与CTSCTSXXVXXV那 32.2 软件设计在上述硬件根底上,编写系统程序,实现以下几项功能:(1)通电时蜂鸣器响一声,LCD 液晶显示室内温度、湿度、可燃气体浓度状态.(2)当室内温度大于设定的温度、湿度例如温度 28 度、湿度 80%、检测到可燃气体超标时,蜂鸣器报警.(3)当第一次按设置键:温度值闪烁,这是可以通过按“+或者“一按键设定温度上限值,4 秒钟无键按下停止闪烁,按“+或者“一设置温度下限值;第二次按设置按键:湿度值闪烁,这时可以通过按“+或者“一设置湿度上限值,4 秒钟无键按下停止
9、闪烁,按“+或“一设置湿度下限值;第三次按设置按键,退出设置状态.2.2.1软件系统设计系统的软件设计采用C语言编程,软件结构为模块化结构,由主程序、自检程序、SHT11 数据采集与处理程序、ADC0831 数据采集处理程序、报警限制程序及显示程序等模块组成,其软件模块结构如图 12 所示.图 12 软件结构方框图2.2.2主程序设计2.2.3LCD1602 显示模块程序设计2.2.4SHT11 温湿度测量模块程序三、程序代码#include#include#include#include#include#defineucharunsignedchar#defineuintunsignedin
10、tUnsignedcharTempBuffer5Ucharhumibuffer4.Voidmainwendu_to_str(TempBuffer5.for(i=0.iTempbutteri=i.Tempbutter0=(SHUOxts_zi.Tempbutter1=(SHUOxtg_zi.Tempbutter2=0 xdf.Tempbutter3=C.Tempbutter4=0.Printf(%d,TempBufferi.Printf(n.Voidmainshidu_to_str(intifor(i=0.ihumibufferi=i.humibuffer0=(SHUOxzz_z
11、i.humibuffer1=(SHUOxsg_zi.humibuffer2=%.humibuffer3=0.printf(n.Voidmainqiti_to_str(intIfor(i=0.iqitibuffer0=b1.qitibuffer1=b2.qitibuffer2=b3.printf(%d,qitibufferiprintf(n.Voidshow_LCD(LCD_Initial(.text_jishuan_temp11(data_pro(.wendu_to_str(GotoXY(6,1.Print(TempBufferGotoXY(0,1.Print(wendu.shidu_to_s
12、tr(GotoXY(11,1Print(shidu.GotoXY(17,1.Print(humibufferGotoXY(13,0.Print(qitibuffercsh(P2.0=0.main(csh(show_LCD(.delay_n10us(100000.LCD 显示屏驱动程序1602.h#ifndefLCD_CHAR_1602_2005_4_9#defineLCD_CHAR_1602_2005_4_9#includesbitLcdRs=P2A0.sbitLcdRw=P2A1.sbitLcdEn=P2A2.sfrDBPort=0 x80.unsignedcharLCD_Wait(void
13、(LcdRs=0.LcdRw=1._nop_(.LcdEn=1._nop_(./while(DBPort&0 x80.LcdEn=0.returnDBPort.)/向 LCD 写入命令或数据#defineLCD_COMMAND0/Command#defineLCDDATA1/DATA#defineLCD_CLEAR_SCREEN0 x01/清屏#defineLCD_HOMING0 x02/光标返回原点VoidLCD_Write(bitstyle,unsignedcharinput(LcdEn=0.LcdRs=style.LcdRw=0_nop_(.DBPort=input._nop_(
14、./注意顺序LcdEn=1._nop_(./注意顺序LcdEn=0._nop_(.LCD_wait(.)/设置显示模式#defineLCD_SHOW0 x04/显示开#defineLCD_HIDE0 x00/显示关#defineLCD_CURSOR0 x02/显示光标#defineLCD_NO_CURSOR0 x00/无光标#defineLCD_FLASH0 x01/光标闪动#defineLCD_NO_FLASH0 x00/光标不闪动VoidLCD_SetDisplay(unsignedcharDisplayModeLCD_Write(LCD_COMMAND,0 x08|DisplayMode
15、.)/设置输入模式#defineLCD_AC_UP0 x02#defineLCD_AC_DOWN0 x00/default#defineLCD_MOVE0 x01/画面可移动#defineLCD_NO_MOVE0 x00/defaultVoidLCD_SetInput(unsignedcharInputModeLCD_Write(LCD_COMMAND,0 x04|InputMode.)/移动光标或屏幕#defineLCD_CURSOR0 x02#defineLCD_SCREEN0 x08#defineLCD_LEFT0 x00#defineLCD_RIGHT0 x04VoidLCD_Move
16、(unsignedcharobject,unsignedchardirectionif(object=LCD_CURSORLCD_Write(LCD_COMMAND,0 x10|diriction.if(object=LCD_SCREENLCD_Write(LCD_COMMAND,0 x18|diriction./初始化 LCDVoidLCD_Initial(LcdEn=0.LCD_Write(LCD_COMMAND,0 x38LCD_Write(LCD_COMMAND,0 x38LCD_SetDisplay(LCD_SHOW|LCD_NO_CURSORLCD_Write(LCD_COMMAN
17、D,LCD_CLEAR_SCREENLCD_SetInput(LCD_AC_UP|LCD_NO_MOVEVoidGotoXY(unsignedcharx,unsignedchary(if(y=0LCD_Write(LCD_COMMAND,0 x80|xif(y=1LCD_Write(LCD_COMMAND,0 x80|(x-0 x40.VoidPrint(unsignedchar*str(while(*str!=0(LCD_Write(LCD_DATA,*str.str+.VoidLCD_LoadChar(unsignedcharuser8,unsignedcharplace(Unsigned
18、chariLCD_Write(LCD_COMMAND,0 x40|(place*8.for(i=0.iLCD_Write(LCD_DATA,useri.)#endif温湿度传感器驱动程序SHT11.h#include/头文件#include#include#include/KeillibrarysbitDATA=P2A4./数据sbitSCK=P2A3./时钟#defineTEMP_ML0 x03/00000011#defineHUMI_ML0 x05/00000101unsignedcharhumi_hunsignedchartemp_LL#defineucharunsignedchar/#
19、defineunitunsignedint#defineulongunsignedlongunsignedintrecs=0./接收次数ucharTempBuffer5.ucharhumibuffer4.constunsignedcharSHUO15=0123456789.%Rxts_zi=0./温度值intxtg_zi=0./温度个位值温度命令湿度命令unsignedcharerrorunsignedcharack./floattemp_zi./floathumi_zi./全局错误变量/全局错误变量/全局应答变量/全局应答变量unsignedchartemp_h/全局应答变量un
20、signedchartemp_LL/全局应答变量定义一下方便使用intxtd_zi=0./温度点值intxss_zi=0./湿度值intxsg_zi=0./湿度个位值intxsd_zi=0./湿度点值sbitsoud=P1A4./声音/根本驱动程序/系统初始化Voidstart(void/启动(DATA=1SCK=0./数据为 1,SCK=0_nop_(.SCK=1/A 个脉冲DATA=0/数据跌落_nop_(.SCK=0/完成一个脉冲_nop_(._nop_(._nop_(.SCK=1/再一个脉冲_nop_(.DATA=1./数据变为 1_nop_(SCK=0/变为该脉冲)Voidsht_r
21、est(void/复位(unsignedcharI.DATA=1./释放数据总线SCK=1returnack./error=1 表示没有应答charread(/读一个字节返回应答信号UnsignedcharI,val=0temp_LL=0.temp_h=0.DATA=1/for0.i/=2SCK=1./if(DATAval=(val|i/确定值DATA=1SCK=0/数据为 1 时钟为 0fori=0.i9.i+)/9SCK=1.SCK=0)Start/UnsignedcharI.ack=0.for(i=0 x80.i0.if(i&valueDATA=1ElseDATA=0.SCK=1
22、_nop_(._nop_(SCK=0个脉冲为复位启动写一个字节返回应答信号i/=2/_nop_(释放数据总线写入值上升沿写入/延时释放数据总线/位移 8 位上升沿读入/读应答信号应答为 1,应答为 0 通过 CPUT 拉为应答第 9 个脉冲第 9 个脉冲SCK=0DATA=1/释放数据总线temp_LL=valreturnval)/测量温度或者是湿度,返回校验值 text_a(unsignedcharmlunsignedintI.start(./启动write(ml./写入测温度if./复位write(ml./写入测温度SCK=0DATA=0SCK=1nop_(._nop_(._nop_(/p
23、ulswithapprox.5usSCK=0DATA=1temp_h=val.val=0./低 8 位/释放数据总线DATA=1for(i=0 x80.i0.SCK=1.if(DATAval=(val|iSCK=0/i/=2/释放数据总线位移 8 位上升沿读入确定值DATA=1/0./不需要应答通过 CPUT 拉为应答SCK=1_nop_(_nop_(_nop_(/pulswithapprox.5us)/DATA=1./释放数据总线For(i=0.iif(DATA=0break.read(./度温度)text_jishuan_temp(floataa=0,bb=0,abcd
24、=0.aa=(floattemp_h*256+(floattemp_LL.temp_zi=0.01*aa-40.if(temp_zi(temp_zi=-temp_zi.)temp_zi=temp_zi*10.abcd=(inttemp_zi.xts_zi=abcd/100.abcd=abcd%100.xtg_zi=abcd/10.abcd=abcd%10bxtd_zi=abcd/1.)text_jishuan_humi(floataa=0,bb=0,humi_abcd=0aa=(floattemp_h*256+(floattemp_LL.baa*aa*2.8/1000000.aa=
25、0.0405*aa.aa=aa-4-bb.humi_zi=humi_zi*10.abcd=(inthumi_zi.xss_zi=abcd/100.abcd=abcd%100.xsg_zi=abcd/10.abcd=abcd%10bxsd_zi=abcd/1.text_jishuan_temp11(error=0.ack=0.sht_rest(./复位text_a(TEMP_ML.text_jishuan_temp(text_a(HUMI_ML.text_jishuan_humi(unsignedintwendu,shidu.voiddelay_n10us(unitn/延时 n 个 10us12M1 振uintifor(i=n.i0.i-_nop_(_nop_(_nop_(_nop_(_nop_(四、心得体会通过本次课程设计的学习与实践,我逐渐对单片机产生了兴趣,并且对温度气敏传感器、LED 显示器都有了一定的了解,在设计过程中通过图书馆、网上查阅资料,
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 房屋更名申请书范文
- 买门面房屋合同范本
- 光伏发电临时用地合同范例
- 2024年12月中共三亚市委精神文明建设和爱国卫生运动委员会办公室公开招聘下属事业单位人员2人(第1号海南)笔试历年典型考题(历年真题考点)解题思路附带答案详解
- 公路混凝土合同范例
- 乡村医生辞职申请书
- 2025至2030年中国针式冲击磨数据监测研究报告
- 三全代理合同范本
- 产品承揽合同范本
- 借贷居间服务合同范本
- 《智能传感器技术》课件
- SaaS服务具体应用合同范本2024版版
- 山东省潍坊市2024-2025学年高三上学期1月期末 政治试题(含答案)
- 2025-2030年中国旅居康养行业全国市场开拓战略制定与实施研究报告
- 知识产权培训内容课件
- 2025年幼儿园年度工作总结及工作计划
- 残疾人挂靠合作合同协议书范本
- 《物料摆放规范》课件
- 宁夏“8·19”较大爆燃事故调查报告
- 电池结构及原理
- 2024年员工规章制度具体内容范本(三篇)
评论
0/150
提交评论