基于热电堆红外探测器的非接触人体表面温度测量系统设计(完整资料)_第1页
基于热电堆红外探测器的非接触人体表面温度测量系统设计(完整资料)_第2页
基于热电堆红外探测器的非接触人体表面温度测量系统设计(完整资料)_第3页
基于热电堆红外探测器的非接触人体表面温度测量系统设计(完整资料)_第4页
基于热电堆红外探测器的非接触人体表面温度测量系统设计(完整资料)_第5页
已阅读5页,还剩115页未读 继续免费阅读

下载本文档

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

文档简介

基于热电堆红外探测器的非接触人体表面温度测量系统设计(完整资料)(可以直接使用,可编辑优秀版资料,欢迎下载)

目录基于热电堆红外探测器的非接触人体表面温度测量系统设计(完整资料)(可以直接使用,可编辑优秀版资料,欢迎下载)TOC\o"1-3”\h\z\uHYPERLINK\l”_Toc440626352”1技术指标 PAGEREF_Toc440626352\h12设计方案及其比较ﻩPAGEREF_Toc440626353\h12.1设计原理 PAGEREF_Toc440626354\h12.2设计流程图 440626355\h1HYPERLINK\l”_Toc440626356"2.3各模块方案设计ﻩPAGEREF_Toc440626356\h22.3.1TP337温度传感器模块ﻩPAGEREF_Toc440626357\h2HYPERLINK2。3.2LM358电压信号放大模块 PAGEREF_Toc440626358\h4HYPERLINK\l"_Toc440626359”2。3.3AD转换模块 PAGEREF_Toc440626359\h6HYPERLINK\l"_Toc440626360"2.3。4单片机模块ﻩPAGEREF_Toc440626360\h72.3。5LED显示模块ﻩPAGEREF_Toc440626361\h7HYPERLINK\l”_Toc440626362"2。4方案比较ﻩPAGEREF_Toc440626362\h83实现方案 PAGEREF_Toc440626363\h94调试过程或结论ﻩPAGEREF_Toc440626364\h9HYPERLINK\l”_Toc440626365"4.1调试过程 PAGEREF_Toc440626365\h94.2结论 PAGEREF_Toc440626366\h11HYPERLINK\l"_Toc440626367"5心得体会 PAGEREF_Toc440626367\h11HYPERLINK\l"_Toc440626368”6参考文献 PAGEREF_Toc440626368\h12基于热电堆红外探测器的非接触人体表面温度测量系统设计1技术指标设计一个非接触人体表面温度系统,要求:(1)通过热电堆TP337A来探测人体表面的温度;(2)由LED数码管显示测量的温度,要求显示温度精度能够达到0.1℃;(3)可以连续测量人体表面或环境温度。2设计方案及其比较2。1设计原理根据技术指标,热电堆红外探测器探测人体温度系统主要是由单片机模块、TP337温度传感器模块、LM358电压信号放大模块、A/D转换模块、LED数码管显示模块组成.首先TP337红外温度传感器将红外信号转换为电压信号。由于输出的电压信号很微弱,所以需要用由LM358组成的运算放大电路进行前置放大,然后将放大的电压信号发送至由PCF8591组成的A/D转换电路,再将转换后得到的数字信号送至单片机进行处理,最后将处理的结果送至LED数码管显示屏进行实时测量温度的显示。从而实现温度测量系统的设计。2.2设计流程图根据设计原理,可以画出其流程图,见图1。图1设计流程图2。3各模块方案设计2.3。1TP337温度传感器模块通过查阅技术手册可以知道TP337A的内部结构和管脚如图2所示。红外测温模块即是TP337A的工作电路,TP337A是一种人体热释电传感器,可以通过非接触的方式检测出物体放射出来的红外线能量变化,并将其转换成电信号输出.红外温度传感器的特点是反应速度快、灵敏度高、准确度高、测量范围广、使用方便,尤其非接触式测量使红外温度传感器和以红外传感器为核心的红外测温模块、红外测温仪在工业现场、国防建设、科学研究等领域得以广泛应用。主要应用于铁路、车辆、石油化工、食品、医药、塑料、橡胶、纺织、造纸、电力等行业的温度测量、温度检测、设备故障的诊断。特别适用于高温和危险场合的远距离测温。其详细的参数表见图3所示.图2红外探测器管脚图图3红外探测器温度参数表红外探测器温度与输出电压的关系如图4所示。图4红外探测器温度与输出电压的关系综合以上相关资料,可以大致推测出在环境温度为25摄氏度时,温度与电压大致呈线性关系,温度大约是电压的39000倍。红外探测器的典型工作电路如图5所示。图5红外探测器原理图2.3.2LM358电压信号放大模块由于TP337温度传感器输出的电信号非常微弱,为了我们准确地测出人体温度,我需要将信号放大,根据课设要求,采用LM358运算放大器,放大由TP337温度传感器输出的电信号,其具体方案如下。方案一方案一采用LM358双运算放大器,内部包括有两个独立的、高增益、内部频率补偿的运算放大器。适合于电源电压范围很宽的单电源使用,也适用于双电源工作模式,在推荐的工作条件下,电源电流与电源电压无关,其方案一的原理图如图6所示.图2采用LM358双运算放大器原理图图6方案一原理图方案二方案二也采用LM358双运算放大器,但与方案一不同的是在两个运算放大器添加一电容C8,添加此电容之后便可以起到滤波,消除噪声干扰等效果,这样可以有效放大信号,同时又可以减少噪声干扰,其方案二原理图如图7所示。图7采用LM358双运算放大器原理图方案三针对方案一放大信号之后存在较多噪声,会影响实际效果,方案二采用添加电容C8来实现滤波,消除噪声干扰,为了更强劲地的抑制零点漂移以及消除噪声干扰,所以采用差分放大电路,其原理图如图8所示。图8差分放大电路2.3.3AD转换模块利用PCF8591搭建AD转换电路。PCF8591是单片,单电源低功耗8位CMOS数据采集器件,具有4个模拟输入,一个输出和一个串行I2C总线接口。3个地址引脚用于编程硬件地址,允许将最多8个器件连接至I2C总线而不需要额外硬件。器件地址,控制和数据通道通过两线双向I2C总线传输.经过放大电路后的电压值通过AIN0输入,SCL和SDA输出转换后的数据,与后续的单片机连接并进行处理。所以,我们需要采用AD0804转换.AD0804是属于连续渐进式的AD转换器,这种转换器转换速度快,分辨率高,普遍被应用于微电脑的接口设计上。对于编程来说,直接输出八位的数字信号,利用编程,简化程序的复杂性。其AD转换模块原理图见图9.图9AD0804搭建的AD转换电路2。3.4单片机模块选用STC89C52单片机,这是一种低功耗,高性能的CMOS位微控制器。STC89C52使用经典的MCS-51内核,但做了很多的改进使得芯片具有传统51单片机不具备的功能。设计电路如图10所示.其中,P1.0和P1.1分别用来与I2图10单片机模块2.3.5LED显示模块LED的位选使用138译码器,可以节约单片机引脚,段选端使用573锁存器,因为直接利用单片机引脚驱动功率不够.74LS138译码器的功能是把输入的3位二进制数转换为十进制,并让对应的输出端输出低电平.即,A2A1A0输入001时,对应的十进制数为1,则输出端Y1输出低电平,其余为高电平。当OE端为低电平时,芯片可以工作,LE为高电平时,输出端与输入端相同,若LE为低电平,芯片锁存,此时不管输入多少,芯片始终输出锁存前状态的输出值查阅资料可知,74HC573的真值表如图11所示。根据真值表看出,当OE端为低电平时,芯片可以工作,LE为高电平时,输出端与输入端相同,若LE为低电平,芯片锁存,此时不管输入多少,芯片始终输出锁存前状态的输出值。图1174HC573的真值表LED连接图见图12所示。图12LED显示电路2.4方案比较对于LM358电压信号放大模块,方案一和方案二采用同样的芯片,但方案二比方案一输出的信号更准确,受到外界的干很少,也很容易找出他们之间的电流电压关系来计算放大倍数,对于方案三难度高,不容易实现这会给后期的调试过程带来很大的麻烦,所以选择方案二.3实现方案如图所示,TP337A感应到红外线后,转换为电信号输出,经过两级放大电路得到最终的模拟电压信号。通过模数转换,得到数字信号,并用单片机进行处理,最后通过LED动态输出温度值。TP337A工作电路中的电容起到滤波的作用,滤掉信号中不稳定的交流信号,得到稳定的直流信号;两级运放电路中,根据公式可以推算出电阻的大概范围,这些内容在第四部分会给出详细的叙述.根据上面的分析,最终确定的实现方案原理图如图13所示。图13实现方案的原理图4调试过程或结论4.1调试过程技术要求中,要求温度精确到0.1度,因此电压需要放大1000倍以上,我选用了两个100K的电阻和两个10K的滑动变阻器,并将他们分别调节在90K和3K左右,这样放大倍数差不多接近于1000倍,这样才能达到课设要求。我也遇到一些困难,原本以为在仿真软件上可以正常工作,想当然硬件电路也能运行。然而,在检查无语法错误下载到单片机后,LED并没有显示数字,经过检查发现是自己弄错了138输入的三个管脚的高低顺序,输出又只选用了低位的四个输出,所以未能正确控制LED的位选。在改正了电路后,问题即解决,四位数码管上有我希望的三位可以亮起,但还是没有显示正确的数字,反而显示的是乱码。检查了一下程序,发现自己粗心大意在编程时没有考虑到P0端口和段选端的顺序对应,所以未能正常输出.改正程序后问题得到解决。在调节了电阻后,问题略有改善,但还是不能达到理想的状态。后来我考虑到是滤波的问题,如果不加入电容滤波,交流信号和直流信号混合会对电路产生很大干扰,加入电容后滤去交流信号,只留下稳定的直流信号,问题基本得到解决,虽然数值仍有跳动,但幅度很小,一般是在0.1到0。5之间,基本可以认为是稳定数值.当我把手放上去时,LED显示为40度至50度之间,虽然有些偏高,但咨询老师后得知,考虑到实际情况,这属于正常范围。其实物图见14,15。图14实物图图15实物图4。2结论本次课程设计从完成任务上来说是成功的,基本实现了技术要求上的所有内容。但是还是有些不完美,比如数字显示并不是十分稳定,温度值也不是那么准确,与实际还是存在一定的偏差,最后咨询老师才发现了问题所在,虽然问题没能及时解决.5心得体会热电堆由于不是老师上课重点讲的内容,也不在考察的范围内,所以我对热电堆的工作原理并不是十分了解,更别提利用它来设计一个温度感应系统来动态显示温度.但是通过老师的PPT,我也学到许多知识。首先,我仔细阅读了TP337A的技术手册,全英文的技术手册对自己的词汇量也是一个巨大的挑战.所幸自己还算不怎么费力的就看完了技术手册。了解了热电堆的工作原理后,便是系统的设计了.根据老师所给提示,本次的电路可以分为五部分:红外测温模块,信号放大模块,AD转换模块,单片机处理模块,LED显示模块.对于信号放大模块,我只有一个模糊的印象,所以我把大二时的模电课本翻了出来,仔细阅读了有关运算放大器的章节,设计出了放大电路。接下来是AD转换模块,在网上查阅了很多资料后,结合I2设计好电路,编写好程序,就是程序的烧录过程.本以为自己的程序编写的没有什么错误,只要能够正确烧录,就能够正常工作,没想到问题一大堆。这让我意识到了理论与实际的差别.实践是检验真理的唯一标准,这句话说的很对,不通过实践,我是不能发现程序中存在的错误的。在今后的学习生活中,我也要注意实践,不能停留在理论层面上。理论是基础,但应用才是最重要的.首先,此次课设综合了光电技术,模电,数电,单片机等相关学科的知识,对我们的动手能力,实践能力,综合运用能力是一个很大的挑战,这次课程设计很考验我们的学习能力,也正如我所愿,通过此次课设我学到很多东西,希望这些经历对我日后的学习有很大的帮助。6参考文献[1]吴友宇主编.《模拟电子技术基础》。北京:清华大学出版社,2009。5

[2]刘可文主编。《数字电子电路与逻辑设计》。北京:科学出版社,2013.3[3]杨应平等。《光电技术》.北京:机械工业出版社,2014.7目录TOC\o"1-3”\u1引言PAGEREF_Toc407621041\h12设计方案与论证PAGEREF_Toc407621042\h13设计内容PAGEREF_Toc407621043\h23.1系统扩展接口的选择PAGEREF_Toc407621044\h23.2温度传感器与A\D转换器的选择PAGEREF_Toc407621045\h23。3显示接口芯片PAGEREF_Toc407621046\h33。4设计原理及功能说明PAGEREF_Toc407621047\h33.5系统软件设计21048\h43。6单元电路的设计(计算与说明)PAGEREF_Toc407621049\h54。8086微处理器及其体系结构PAGEREF_Toc407621050\h84。18086微处理器的一般性能特点PAGEREF_Toc407621051\h84。2.8086CPU的编程结构PAGEREF_Toc407621052\h94。38255A并行I\O接口PAGEREF_Toc407621053\h94.4ADC0809概述07621054\h114.5ADC0809与8255的连接PAGEREF_Toc407621055\h134.6键盘/显示方式设置命令字PAGEREF_Toc407621056\h134.7LED显示器PAGEREF_Toc407621057\h145硬件的制作与调试PAGEREF_Toc407621058\h146结束语:PAGEREF_Toc407621059\h17参考文献PAGEREF_Toc407621060\h19附录1:元器件清单:PAGEREF_Toc407621061\h20附录2:电路总图PAGEREF_Toc407621062\h20附录3:程序PAGEREF_Toc407621063\h201引言为了实现计算机对生产过程及对象的控制,需要将对象的各种测量参数按照要求转换成数字信号送入计算机。计算机运算处理后再转换成适合于对生产过程进行控制的量。所以在微机和生产过程之间,须设置信息的变换和传递通道。主要功能就是随时间变化的模拟输入信号变成数字信号送入计算机,主要由AD590温度传感器,8088CPU,8255A,A/D转换器和数码管显示器等组成。本实验通过设计一个微机控制的温度控制系统旨在能做到以下几点:1。了解微机控制的温度采集系统软硬件设计原理和方法。2.进一步掌握并行接口芯片和模数转换的工作原理与使用方法.以8088CPU为核心设计一个温度采集系统,系统可以实现一路温度的采集,在3位LED显示器上显示当前温度。本设计所用器件主要有传感器,A/D转换器,8088CPU,可编程并行接口8255,显示器等。首先传感器把所测的温度转换为电压,输入A/D转换器中进行转换,然后再把得到的二进制数经过CPU在数码管上显示出来。本设计共分以下几个模块:8088主控模块、A/D转换模块、并行接口模块、显示模块。2设计方案与论证采用铂电阻温度传感器的电阻与温度的关系是非线性的,用电桥实现温度升高引起的电阻变化对应于电压的变化.经A/D转换器后,送入锁存器锁存,在经译码器输出后,再在数码管上显示,由于74LS373具有锁存功能就能实现四位的温度显示。由于铂电阻与温度的关系是非线性的,因此输出的结果测试精度较低,并且不能达到我们对温度控制的要求。电桥测温电路电桥测温电路放大电路A/D转换电路锁存器74LS373译码器7448LED数码显示图2—1设计方案3设计内容3.1系统扩展接口的选择本次设计采用的是8086微处理器,选择8255A可编程并行接口作为系统的扩展接口,8255A的通用性强,适应灵活,通过它CPU可直接与外设相连接.3.2温度传感器与A\D转换器的选择本系统选用温度传感器AD590构成测温系统。AD590是一种电压输入、电流输出型集成温度传感器,测温范围为-55℃~150℃,非线性误差在±0.30℃,其输出电流与温度成正比,温度每升高1K(K为开尔文温度),输出电流就增加1uA.其输出电流I=(273+T)uA。本设计中串联电阻的阻值选用2KΩ,所以输出电压V+=(2730+10T)MV.另外,为满足系统输入模拟量进行处理的功能,对其再扩展一片ADC0809,以进行模拟-数字量转化。3。3显示接口芯片为满足本次设计温度显示的需要,我们选择了8279芯片,INTEL8279芯片是一种通用的可编程的键盘、显示接口器件,单个芯片就能完成键盘键入和数码管显示控制两种功能。3.4设计原理及功能说明本系统采用的是8086微处理器,选择8255A可编程并行接口作为系统的扩展接口,8255A的通用性强,适应灵活,通过它CPU可直接与外设相连接。对温度进行检测,然后通过A/D转换器(ADC0809)转换成数字信号输入主机。使用Intel8279可编程序的键盘、显示接口功能,完成键盘输入和显示控制两种功能.针对各模块的硬件功能,对各模块设定子程序,通过主程序对这些子程序模块的调用,完成软件设计。(1)温度测量显示部分温度通过AD590温度传感集成芯片,将温度变化量转换成电压值变化量,经过OP07一级跟随后输入到电压放大电路,放大后的信号输入到A/D转换器将模拟信号转换成数字信号,然后将该数字信号通过然间编程转化为十进制BCD码,并送到8279进行温度值的显示。图3—1主程序流程图3。5系统软件设计本设计的目的是以8086微处理器为控制器,将温度传感器输出的小信号经过放大和低通滤波后,送至A/D转换器;微控制器实时采集、显示温度值(要求以摄氏度显示),同时系统还应可设定、控制温度值,使系统工作在设定温度。通过开始界面,显示提示信息,调用温度子程序,设置温度。通过模数转换器采集A\D值并求其平均值。调用BCD码转换子程序将其转换为十进制温度值;调用显示子程序,如果温度高于实际温度,就加热,反之拨动开关关闭,停止加热。在此过程中,还可以重复设置温度值。(1)BCD码转换子程序设定温度为0摄氏度时变换放大电路送出的模拟量为0.0V,此时A/D输出的数字量为00H;温度为68℃时变换器送出对应电压4.98V,此时A/D输出的数字量为FFH,即每0。3℃对应1LSB的变化量,对应电压值为19.5mV.报警温度设定为68℃,此时,输出电压约为5.0V左右。(2)温度值设置子程序为了避免加热温度过高,在程序设计中加了一条,即设定值不能大于68℃,否则就认为有错系统报警。3.6单元电路的设计(计算与说明)(1)温度检测系统温度信息由温度传感器测量并转换成微安级的电流信号,经过运算放大电路将温度传感器输出的小信号进行跟随放大,输入到A/D转换器(ADC0809)转换成数字信号输入主机。数据经过标度转换后,一方面通过数码管将温度显示出来;另一方面,将该温度值与设定的温度值进行比较,调整电加热炉的开通情况,从而控制温度。在断开电加热器,温度仍然异常,报警器发出声音报警,提示采取相应的调整措施。(2)温度测量部分A\D590是AD公司生产的一种精度和线度较好的双端集成传感器,其输出电流与绝对温度有关,对于电源电压从5-10V变化只引起1uA最大电流的变化或1摄氏度等效误差.图4—1给出了用于获得正比于绝对温度的输出电流的基本温度敏感电路。A\D590输出的电流I=(273+T)uA(T为摄氏温度)。因此测量的电压V为(273+T)uA×10K=(2。73+T/100)V,为了将电压测量出来,又务必使电流I不分流出来.使用电压跟随器使其输出电压V2等于V。由于一般电源供应多器件之后,电源是带杂波的,因此使用稳压二极管作为稳压元件,再利用可变电阻分压,其输出电压V1需调至2.73V。差动放大器其输出V0为(100K/10K)×(V2-V1)=T/10,如果现在为摄氏28℃,输出电压为2。8V。输出电压接A\D转换器,那么A\D转换输出的数字量就和摄氏温度成线性比例的关系。图3—2输出电流的基本温度敏感电路图3-3ADC0809与8255的连接模拟输入通道地址A,B,C直接接地,因此ADC0809只对通道IN0输入的电压进行模数转换。为了减少输入噪声其他通道直接接地.ADC0809的数据线D0—D7与8255的PB0—PB7相连接。其片选CS与8086的地址/数据总线AD14相连接。图3-48086的可编程外设接口电路8255的数据口D0-D7与CPU的6根控制线相连接,控制8255A内部的各种操作。控制线RESET用来使8255A复位。CS和地址线A1及A0用于芯片选择和通道寻址。分别与8086的高位地址线A19,A1,A0相连接。数据显示部分中我们采用功能强大的可编程设置型显示器8279来对控制温度和实际温度进行显示.我们用8段数码管显示。8279显示功能介绍:8279内部有16X8的显示RAM,通过显示寄存器和两个四位端口0UTA0-3,0UTBO-3来刷新显示,显示器可以是8段数码管,图3—5电路工作原理:AD转换器将转换结果由十六进制转换为十进制后分别存储在54H,55H,56H,57H,58H,59H.中。8279连接一个74ls38译码器,经过译码再接6个8段数码管分别显示每个存储单元的内容4.8086微处理器及其体系结构4。18086微处理器的一般性能特点(1)16位的内部结构,16位双向数据信号线;(2)20位地址信号线,可寻址1M字节存储单元;(3)较强的指令系统;(4)利用第16位的地址总线来进行I/O端口寻址,可寻址64K个I/O端口;(5)中断功能强,可处理内部软件中断和外部中断,中断源可达256个;(6)单一的+5V电源,单相时钟5MHz。4.2.8086CPU的编程结构图4-18086/8088CPU内部功能结构图编程结构:是指从程序员和使用者的角度看到的结构,亦可称为功能结构。从功能上来看,8086CPU可分为两部分,即总线接口部件BIU(BusInterfaceUnit)和执行部件EU(ExecutionUnit).4.38255A并行I\O接口8255A芯片内包含有3个8位的端口,它们是A口,B口和C口。这3个端口均可作为CPU与外设通讯时的缓冲器或锁存器,当需要“状态”或“联络"信号时,C口可以提供,此时,将C口的高4位为A口所用,C口的低4位为B口所用。3个端口通过各自的输入/输出线与外设联系。并行输入/输出端口:一个并行输入/输出的LSI芯片,多功能的I/O器件,可作为CPU总线与外围的接口。具有24个可编程设置的I/O口,即使3组8位的I/O口为PA口,PB口和PC口。它们又可分为两组12位的I/O口,A组包括A口及C口(高4位,PC4~PC7),B组包括B口及C口(低4位,PC0~PC3).A组可设置为基本的I/O口,闪控(STROBE)的I/O闪控式,双向I/O3种模式;B组只能设置为基本I/O或闪控式I/O两种模式,而这些操作模式完全由控制寄存器的控制字决定.8255引脚功能:RESET:复位输入线,当该输入端处于高电平时,所有内部寄存器(包括控制寄存器)均被清除,所有I/O口均被置成输入方式。CS:芯片选择信号线,当这个输入引脚为低电平时,即=0时,表示芯片被选中,允许8255与CPU进行通讯;=1时,8255无法与CPU做数据传输。RD:读信号线,当这个输入引脚为低电平时,即=0且=0时,允许8255通过数据总线向CPU发送数据或状态信息,即CPU从8255读取信息或数据。WR:写入信号,当这个输入引脚为低电平时,即=0且=0时,允许CPU将数据或控制字写入8255。D0~D7:三态双向数据总线,8255与CPU数据传送的通道,当CPU执行输入输出指令时,通过它实现8位数据的读/写操作,控制字和状态信息也通过数据总线传送.PA0~PA7:端口A输入输出线,一个8位的数据输出锁存器/缓冲器,一个8位的数据输入锁存器。PB0~PB7:端口B输入输出线,一个8位的I/O锁存器,一个8位的输入输出缓冲器。PC0~PC7:端口C输入输出线,一个8位的数据输出锁存器/缓冲器,一个8位的数据输入缓冲器.端口C可以通过工作方式设定而分成2个4位的端口,每个4位的端口包含一个4位的锁存器,分别与端口A和端口B配合使用,可作为控制信号输出或状态信号输入端口.A0、A1:地址选择线,用来选择8255的PA口,PB口,PC口和控制寄存器。当A0=0,A1=0时,PA口被选择;当A0=0,A1=1时,PB口被选择;当A0=1,A1=0时,PC口被选择;当A0=1.A1=1时,控制寄存器被选择。4。4ADC0809概述ADC0809是采样分辨率为8位的、以逐次逼近原理进行模-数转换的器件。其内部有一个8通道多路开关,它可以根据地址码锁存译码后的信号,只选通8路模拟输入信号中的一个进行A/D转换.(1)ADC0809的主要特性1)8路输入通道,8位A/D转换器,即分辨率为8位。2)具有转换起停控制端。3)转换时间为100μs4)单个+5V电源供电5)模拟输入电压范围0~+5V,不需零点和满刻度校准。6)工作温度范围为-40~+85摄氏度7)低功耗,约15mW。(2)ADC0809的内部逻辑结构

由下图可知,ADC0809由一个8路模拟开关、一个地址锁存与译码器、一个A/D转换器和一个三态输出锁存器组成。多路开关可选通8个模拟通道,允许8路模拟量分时输入,共用A/D转换器进行转换。三态输出锁器用于锁存A/D转换完的数字量,当OE端为高电平时,才可以从三态输出锁存器取走转换完的数据。图4-2ADC0809的内部逻辑结构(3)外部特性(引脚功能)ADC0809芯片有28条引脚,采用双列直插式封装,下面说明各引脚功能。IN0~IN7:8路模拟量输入端。2-1~2-8:8位数字量输出端。ADDA、ADDB、ADDC:3位地址输入线,用于选通8路模拟输入中的一路ALE:地址锁存允许信号,输入,高电平有效。START:A/D转换启动脉冲输入端,输入一个正脉冲(至少100ns宽)使其启动(脉冲上升沿使0809复位,下降沿启动A/D转换)。EOC:A/D转换结束信号,输出,当A/D转换结束时,此端输出一个高电平(转换期间一直为低电平)。OE:数据输出允许信号,输入,高电平有效。当A/D转换结束时,此端输入一个高电平,才能打开输出三态门,输出数字量。CLK:时钟脉冲输入端。要求时钟频率不高于640KHZ。REF(+)、REF(-):基准电压.Vcc:电源,单一+5V。GND:地。4。5ADC0809与8255的连接模拟输入通道地址A,B,C直接接地,因此ADC0809只对通道IN0输入的电压进行模数转换。为了减少输入噪声其他通道直接接地。ADC0809的数据线D0-D7与8255的PB0—PB7相连接.其片选CS与8086的地址/数据总线AD14相连接.4.6键盘/显示方式设置命令字命令格式:D7D6D5D4D3D2D1D0000DDKKK其中:D7、D6、D5=000方式设置命令特征位。DD(D4、D3):来设定显示方式,其定义如下:00:8个字符显示,左入口00:16个字符显示,左入口00:8个字符显示,右入口00:16个字符显示,右入口所谓左入口,即显示位置从最左一位(最高位)开始,以后逐次输入的显示字符逐个向右顺序排列;所谓右入口,即显示位置从最右一位(最低位)开始,以后逐次输入的显示字符时,已有的显示字符逐个向左顺序移动.KKK(D2、D1、D0):用来设定七种键盘、显示工作方式4.7LED显示器工作原理:发光二极管组成的显示器事单片机应用产品中最常用的廉价输出设备。它由若干个发光二极管按一定的规律排列而成。当某一个发光二极管导通时,相应的一个点或一个比划被点亮,控制不同组合的二极管导通,就能显示出多种字符.常见LED数码管的两种接法如图3。8所示。图4-37段LED数码管的两种接法通过控制管脚a、b、c、d、e、f、g、dp的电平即可获得所需的符号显示。显示器的工作方式有两种,一种是静态显示:当显示器显示某一个字符时,相应的发光二极管恒定地导通或截止.另一种事本次设计中采用的动态显示方式:所谓动态显示即一位一位轮流的点亮各位显示器,对于每一位显示器来说,每隔一段时间点亮一次。但由于时间间隔很小,我们就可以看到完整的显示了.5硬件的制作与调试通过前一部分的介绍说明,我们对系统的工作情况有了大体的了解。为了进一步了解系统的工作过程,介绍一下系统调试过程及调试过程中出现的一些具体的问题,软件仿真图(在仿真软件上运行,只是电路的一部分,通过硬件可以制作出来).按照要求,在仿真软件中画出一部分电路图:如下图通过电路的设计与链接在仿真软件中即可运行,在其中运行的时候要注意操作,通过TPC2003,EMU中运行后得到.exe文件,按照要求运行图5-1数据显示部分实验调试软件运行于DOC环境下,其步骤如下:一、根据硬件图和原理图连接好线路。二、在PC机上敲入程序,对其进行的查错,编译,连接,最后生成可执行文件.三、接上电源,敲入可执行文件的文件名,系统就开始了工作过程。图5-2硬件原理图1)这是DOC屏幕上会出现的一些提示信息,如’ENTERANYKEYTOBEGIN!’'LETPA0=0TOADJUSTTHETEMPERATUREVALUE!’'LETPA0=1TOINPUTANEWTEMPERATUREVALUE!'这里后两条只作注释用.2)然后敲任意一个键,系统就开始进行温度测量和显示,屏幕上就会显示'INPUTTHETEMPERATURE:’在这一条信息之后敲入一温度值.注意这里敲入的温度值不能大于76摄氏度,否则屏幕将会显示’INPUTVALUEERROR!’并返回DOC。(以后重新设定温度时也是如此)3)在正常情况下,敲入设定温度后系统就开始进行控制调节,当实际温度小鱼设定值时,系统就开始进行加热,如果不加改变,它就会加热一直稳定到设定的温度值;如果这是想重新设置一温度,只要把8255的PA0读取拨动开关拨到1,屏幕上就会显示:‘INPUTANEWTEMPERATURE:’这里又得注意一下,在敲入一个新的设定温度之前,得先把PA0读取拨动开关拨到0,否则,在敲完设定温度之后,屏幕上又会显示同样一条信息。因为它是根据PA0是0还是1来决定是去重新输入设定温度还是去调节温度。如果不先把PA0拨为0,它就是一直让你输入却不进行调节。6结束语:本设计采用的8086微处理器实现温度的控制。具有体积小、重量轻、抗干扰能力强、对环境要求不高、价格低廉、可靠性高、灵活性好、易于推广应用等显著优点,通过软件逻辑控制实现对温度的控制和调节。温度控制系统,只是8086广泛应用于各行各业中的一例。本设计中应用了许多与微机接口技术的芯片和常用的外部设备,芯片如:ADC0809,8255等.外部设备如:温度检测元件AD590,键盘和显示系统中的LED显示器等。该系统的主要优点如下:一、本系统本着简单可靠的原则完成了设计要求,尽量做到线路简单,充分利用软件编程,安装比较灵活而且价格较低。二、在系统的硬件和软件设计中,都加有安全设计部分,避免加热过高造成设备的损坏。最后,通过这次设计,我发现还有很多知识并不牢固,因此在以后的学习中更应该多了解并掌握微机原理与接口技术的相关知识,熟练掌握使用汇编语言编程实现微机芯片的控制,多积累经验为以后的工作打好基础,最后感谢王清珍老师的帮助与指点,对此我深表谢意。参考文献[1]戴梅蕚《微型计算机技术及应用》2007清华大学出版社[2]何克忠《计算机控制系统》2002清华大学出版社[3]朱善君《汇编语言程序设计》1998.3清华大学出版社[4]颜永军《protel99电路设计与应用》2001.1国防工业出版社[5]康华光.电子技术基础(模拟部分)。高等教育出版社.2006.1[6]何希才.传感器及其应用电路[M].北京:电子工业出版社,2001.[7]沙占友。智能化集成温度传感器原理与应用[M].北京:机械工业出版社,2002.[8]赵继文.传感器与应用电路设计[M].北京:科学出版社,2002。[9]张洪润、刘秀英、张亚凡等.单片机应用设计200例[M].北京:航空航天大学出版社,2006。附录1:元器件清单:传感器,A/D转换器,8086|8088CPU,可编程并行接口8255A芯片,LED显示器(7SEG-MPX2—CC),74LS138锁存器,8279等附录2:电路总图附录3:程序;DS18B20.ASM;*************DS18B20g。ASM*********************************;不用定时中断,用8253方式0延时,时钟1MHZ,计一个数1us;**********************************************************ioportequ0ec00h-0280hio8255kequioport+28bh;8255控制口io8255cequioport+28ah;8255C口io8255aequioport+288h;8255A口io8253aequioport+283h;8253控制口io8253bequioport+280h;8253计数器0STACKSEGMENTSTADB20DUP(?)TOPEQULENGTHSTASTACKENDS;—-——---———----——-—---—-———-———----——-—--—-———-—-—-——--DATASEGMENTCSREGDW?IPREGDW?count0db00COUNTdb00COUNT1DB00COUNT2DB00qfdb0ehTEMPDB00;温度,8位TEMPLDB00;温度,低字节TEMPHDB00;温度,高字节TEMPDDB00;温度,小数位MESSDB'8253ATIMEROINMODEO010uSTIMER',0AH,0DHDB’8255INMODEOPA0INPUTPC4-PC7OUTPUT',0AH,0DHDB'Strikeanykey,toconverttemperature!',0AH,0DHDB'StrikeESCkey,returntoDOS!’,0AH,0DH,’$'buffdb20hBUFF1DB20hbuff2db20hbuff3db20hbuff4db2ehbuff5db20h;172DATAENDS;——-—————---——----——-------————-------———---—---—--—-CODESEGMENTASSUMECS:CODE,DS:DATA,SS:STACK;--—-———--—-—-—--—--—-———--——----—-————-—---START:CLIMOVAX,DATAMOVDS,AXMOVDX,OFFSETMESSMOVAH,09HINT21H;显示提示信息;-—---—--—--—--———————-————-—--———-—-—----——MOVDX,io8255k;8255初始化MOVAL,91HOUTDX,AL;8255PA0INPC7-PC4CALLINI;初始化MOVAH,0CCH;跳过读ROM命令CALLWRITEMOVAH,4EH;写暂存器命令CALLWRITEMOVAH,32H;写高温度值50度CALLWRITEMOVAH,00H;写低温度值0度CALLWRITEMOVAH,1FH;写配置字节CALLWRITEKEY:MOVAH,01H;查有否键入INT16HjzkeyMOVAH,00;有键入,读取键值INT16HCMPAl,1BHJZsss;ESC退出CALLINI;初始化MOVAH,0CCH;跳过读ROM命令CALLWRITEMOVAH,44H;温度转换命令CALLWRITEconv:MOVDX,io8255kMOVAL,0eH;PC7清另OUTDX,ALnopnopMOVDX,io8255kMOVAL,0fH;PC7置1OUTDX,ALconv1:calldelay1;延迟50mscalldelay1MOVDX,io8255kMOVAL,0fH;PC7置1OUTDX,ALCALLINI;初始化MOVAH,0CCH;跳过读ROM命令CALLWRITEMOVAH,0BEH;读暂存器命令CALLWRITECALLREAD;读两个字节MOVTEMPL,ahCALLREADMOVTEMPH,ahMOVAL,TEMPL;合成一个十六位字MOVCL,04SALAX,CL;左移四位andah,7fhMOVTEMP,AH;温度值整数部分jmpjjjsss:jmpexitjjj:MOVBUFF,2BH;+AGN:MOVAH,TEMPLANDAH,08H;温度值小数部分JZAGN1MOVBUFF5,35H;.5JMPAGN2AGN1:MOVBUFF5,30H;.0;---——----——--------—-—--—---——-——---—-——--——-----—-—--————--—---——--——AGN2:movdl,buffmovah,02int21hcalldisp;显示movdl,0dhmovah,02int21hmovdl,0ahmovah,02int21hJMPKEY;—-————-——-———--——-——-———-—----——--———-————----—-----;恢复现场,返回DOSEXIT:MOVAX,4C00HINT21H;-——----—---—-——-----—-—---——————-—----—--—-——---—---——-;延时子程序,延时时间长短由COUNT的值决定DELAY:pushaxpushfMOVDX,io8253aMOVAL,30H;定时器0,模式0,16OUTDX,ALMOVDX,io8253bMOVAl,count;8253clk01MHZOUTDX,ALMoval,count0Outdx,alMOVDX,io8255clll:inal,dxandal,01hjzlllpopfpopaxRET;--—-—-————---—---——--——-—-----—-—--——————--—---—-—---—-;DS18B20初始化子程序INI:MOVDX,io8255kMOVAL,0eHOUTDX,AL;PC7置0口清0MOVCOUNT0,02hmovcount,0bchCALLDELAY;主机发复位脉冲持续700微妙MOVCOUNT0,00movcount,00MOVDX,io8255kMOVAL,0fHOUTDX,AL;主机置位,为输入作准备MOVCOUNT0,00movcount,28hCALLDELAY;等待40微秒MOVCOUNT,00ini1:MOVDX,io8255aINAL,DXANDAL,80HJNZINI;数据线应变低,若没变低,重来.;数据线变高,初始化成功;初始化失败,重来L2:MOVCOUNT0,02hmovcount,0bchCALLDELAY;DS18B20的应答过程至少需700movcount0,00MOVCOUNT,00MOVDX,io8255kMOVAL,0fHOUTDX,ALRET;-———-—————----—-———-----—----——--——-—-——---——---—----—-——-—-—-;写DS18B20子程序WRITEPROCNEARMOVCOUNT1,08HW0:MOVDX,io8255kMOVAL,0fHOUTDX,AL;PC7清1w1:MOVDX,io8255kMOVAL,0eHOUTDX,AL;PC7置0,DS18B20数据线变低nopnopSHRAH,01JCW2MOVDX,io8255kMOVAL,0eHOUTDX,AL;PC7置0,写0JMPW3W2:MOVDX,io8255kMOVAL,0fHOUTDX,AL;PC7清1,写1W3:MOVCOUNT0,00movcount,46hCALLDELAY;延时70微秒,写时间为70微秒MOVCOUNT,00MOVDX,io8255kMOVAL,0fHOUTDX,ALDECCOUNT1JNZW1RETWRITEENDP;——--——--—----—--—-------—--—--—--—-—-———----——--—-——-—;读DS18B20子程序READ:MOVCOUNT1,08Hmovah,00RE1:MOVDX,io8255kMOVAL,0fHOUTDX,AL;PC7置1,数据线为1nopwt0:MOVDX,io8255kMOVAL,0eHOUTDX,AL;PC7置0,数据线为0movcx,02hwt2:loopwt2MOVDX,io8255kMOVAL,0fHOUTDX,AL;PC7置1,数据线为1movcx,08hwt1:loopwt1MOVDX,io8255aINAL,DXANDAL,80H;按位读数据RCLal,01;数据送CFRCRah,01;数据通过CF送AHMOVCOUNT0,00movcount,46hCALLDELAY;读数据过程持续60微秒MOVCOUNT,00DECCOUNT1JNZwt0RET;---—--—-——-——-——--——--—-—--—--—--———-—-------—-----——————-—-——-;转换成BCD码并显示dispPROCNEAR;BCD转换并显示子程序moval,tempmovah,00hmovcl,100divcl;除100movbuff1,al;百位值moval,ahmovah,00movcl,10divcl;除10movbuff2,al;10位值movbuff3,ah;个位值ttt:moval,buff1calldisp1moval,buff2calldisp1moval,buff3calldisp1movdl,buff4movah,02int21hmoval,buff5calldisp1retDISPENDP;——-—-—-—--—-—--——-—————--—-——--———-----—-----—------—-—-——disp1PROCNEAR;显示一个字符andal,0fhaddal,30hmovdl,almovah,02int21hretdisp1endp;—-————--—-——--------————--——---—-—-—---—---—-—-—---——-————-—-disp2procnearmoval,tempmovcl,04shral,clandal,0fhaddal,30hcmpal,39hjbentaddal,07nt:movdl,almovah,02int21hmoval,tempandal,0fhaddal,30hcmpal,39hjbent1addal,07nt1:movdl,almovah,02int21hmovdl,0ahmovah,02int21hmovdl,0dhmovah,02int21hretdisp2endp;-—-——--—----—-—--——-——-—---—-—-———-—-——--——--—-—-—----—DELAY1PROCNEARpushaxpushfMOVDX,io8253aMOVAL,30H;定时器0,模式0,十六位OUTDX,ALMOVDX,io8253bMoval,50h;8253clk01MHZOUTDX,AL;50ms延时Moval,0c3hOutdx,alMovdx,io8255cxxx:inal,dxandal,01hjzxxxpopfpopaxRETDELAY1endpCODEENDSENDSTART基于视频的人体姿态检测设计目的和要求1.根据已知要求分析视频监控中行人站立和躺卧姿态检测的处理流程,确定视频监中行人的检测设计的方法,画出流程图,编写实现程序,并进行调试,录制实验视频,验证检测方法的有效性,完成系统软件设计。2.基本教学要求:每人一台计算机,计算安装matlab、visio等软件。设计原理2.1图像分割中运动的运用(运动目标检测)首先利用统计的方法得到背景模型,并实时地对背景模型进行更新以适应光线变化和场景本身的变化,用形态学方法和检测连通域面积进行后处理,消除噪声和背景扰动带来的影响,在HSV色度空间下检测阴影,得到准确的运动目标.噪声的影响,会使检测结果中出现一些本身背景的区域像素点被检测成运动区域,也可能是运动目标内的部分区域被漏检.另外,背景的扰动,如树枝、树叶的轻微摇动,会使这部分也被误判断为运动目标,为了消除这些影响,首先对上一步的检测结果用形态学的方法进行处理,在找出经过形态学处理的后的连通域,计算每个连通域中的面积,对于面积小于一定值的区域,将其抛弃,不看做是前景运动目标。bwlabel函数用法:L=bwlabel(BW,n)[L,num]=bwlabel(BW,n),这里num返回的就是BW中连通区域的个数。返回一个和BW大小相同的L矩阵,包含了标记了BW中每个连通区域的类别标签,这些标签的值为1、2、num(连通区域的个数)。n的值为4或8,表示是按4连通寻找区域,还是8连通寻找,默认为8.四连通或八连通是图像处理里的基本感念:8连通,是说一个像素,如果和其他像素在上、下、左、右、左上角、左下角、右上角或右下角连接着,则认为他们是联通的;4连通是指,如果像素的位置在其他像素相邻的上、下、左或右,则认为他们是连接着的,连通的,在左上角、左下角、右上角或右下角连接,则不认为他们连通。2。3regionprops统计被标记的区域的面积分布,显示区域总数函数regionprops语法规则为:STATS=regionprops(L,properties)该函数用来测量标注矩阵L中每一个标注区域的一系列属性。L中不同的正整数元素对应不同的区域,例如:L中等于整数1的元素对应区域1;L中等于整数2的元素对应区域2;以此类推.返回值STATS是一个长度为max(L(:))的结构数组,结构数组的相应域定义了每一个区域相应属性下的度量。Properties可以是由逗号分割的字符串列表、包含字符串的单元数组、单个字符串’all’或者’basic’。如果properties等于字符串'all’,则表4.1中的度量数据都将被计算;如果properties等于字符串'basic',则属性:’Area','Centroid’和’BoundingBox'将被计算.’Area'——

图像各个区域中像素总个数’BoundingBox’——

包含相应区域的最小矩形'Orientation'与区域具有相同标准二阶中心矩的椭圆的长轴与x轴的交角(度)设计内容3。1理论依据3.1。1应用背景随着监控系统到位,以帮助人们甚至完成监控任务。可以减少人力和财力的投入,由于就业监视人员进行.另外,如果长时间不运动图像信息记录,保存几下,就失去了意义和视频监控系统的存储资源浪费存储空间。因此,传统的监视系统浪费了大量的人力,并有可能引起报警,性能差的实时监控的泄漏.监控等实时行为分析系统来识别人体,不仅可以替代监控人员的工作的一部分,提高监测系统的自动化水平,同时也提高监视存储的效率,还有一个广泛的应用,并在视频监视系统的潜在经济价值之前.由于人的行为具有自由的伟大程度,因为身体宽松长裙不同程度和它的外貌和从图像捕获设备位置不同距离的表现风格将是一个很大的分歧,这是人的行为分析,找出了一定的难度。但是,人类行为的实时分析,智能监控系统,以确定关键技术及其广阔的前景药,安全性,虚拟现实,军事和潜在的经济价值,国内外研究机构和学者越来越多的关注,并在许多全球领先的刊物和会议专题讨论。美国和欧洲都进行了一些相关的研究项目。3.1.2首先利用统计的方法得到背景模型,并实时地对背景模型进行更新以适应光线变化和场景本身的变化,用形态学方法和检测连通域面积进行后处理,消除噪声和背景扰动带来的影响,在HSV色度空间下检测阴影,得到准确的运动目标。本次采用了基于累积差分和数学形态学处理的运动区域提取算法。在时域窗口内,首先对图象进行降级处理得到灰度带图象,对灰度带差分图象累积并进行数学形态学处理得到运动目标的轨迹模版,将轨迹模版与当前帧差分图象与运算得到当前帧运动目标象素,最后进行多级数学形态学处理得到当前帧运动区域。实验结果表明,该算法不仅能够对静止背景序列运动区域有较好的分割结果,而且在没有进行全局运动补偿的情况下,对部分运动背景序列也能成功的提取出运动区域。3。1.3’BoundingBox’——

包含相应区域的最小矩形’Orientation'与区域具有相同标准二阶中心矩的椭圆的长轴与x轴的交角(度)3.2方案设计根据设计要求确定视频监控中行人分割和人体姿态识别的方法,选择确定运动目标检测、行人人体姿态特征信息提取实现方法。画出流程图见附录2并对各部分功能进行说明。(1)判断是否为人体在目标提取之前,首先要对输入的图片进行检测。本文通过连通域的面积来检测判断目标是否为人体。(2)人体目标提取如果是人体导入背景图片与背景图片做差,再通过背景差阈值分割法进行提取。(4)行为识别在解决了以上的问题之后,接下来就是要选择一种合适的算法来进行人体姿态识别,这也是本文研究的重点和难点。本文采用人体目标的连通区域的长宽比例和方向角的方法来对人体行为进行识别。3.3程序设计根据设计要求确定视频中行人检测和人体姿态特征信息提取方法,进行程序设计,编写实现程序,使用matlab等软件。3。3.1运动目标检测首先利用统计的方法得到背景模型,并实时地对背景模型进行更新以适应光线变化和场景本身的变化,用形态学方法和检测连通域面积进行后处理,消除噪声和背景扰动带来的影响,在HSV色度空间下检测阴影,得到准确的运动目标.该段程序读取了视频从100帧到400帧的图像。先对导入视频采用近似中值滤波背景模型参考图像实现运动目标分割,然后创建边长为3的方形结构元素,用于对分割结果形态学滤波。原视频、近似中值滤波后的视频以及采用形态学滤波后的视频如图3。3.1—1图3。3。1—1videoObj=VideoReader('gyz。avi’);本程序使用了VideoReader函数,该函数用于读取视频文件对象.函数调用格式:obj=VideoReader(filename)obj=VideoReader(filename,Name,Value)其中obj为结构体,包括如下成员:Name—视频文件名Path—视频文件路径Duration—视频的总时长(秒)FrameRate—视频帧速(帧/秒)NumberOfFrames-视频的总帧数Height—视频帧的高度Width-视频帧的宽度se=strel('square',3);本程序通过创建方形结构元素,用于对分割结果形态学滤波。pixInc=find(Idiff>0);fmed(pixInc)=fmed(pixInc)+beta;pixDec=find(Idiff<0);fmed(pixDec)=fmed(pixDec)-beta;背景差分法别名背景减法,背景差分法的原理是将当前的图像与背景图像进行差分来得到目标区域,这种方法能很好的识别和提取运动目标,是目前运动分割中最常用的一种方法.但是需要构建一幅背景图像,这幅背景图像必须不含要检测的目标或其他不需要检测目标,并且应该能不断的更新来分辨当前背景的变化.运用阈值法原理进行分割,阈值法是比较简单的图像分割方法,是一种常常运用的并行区域的技术。阈值是用运在区分目标图片和背景图片的灰度门限。如果要检测的图像只有目标和背景两类,那么只需要选取一个阈值这种方法称为单阈值分割,这种方法是将图像中每个像素中的灰度值与阈值相对比,灰度值大于阈值的算一种,灰度值小于阈值的为另一种。如果图像中存在多个检测目标或无关目标,那么就选多个阈值将每个目标及背景区分开,这种方法称为多阈值分割阈值,由于本人只有一个目标则采用单阈值分割.fg2=imopen(fg,se);fg2=imclose(fg2,se);对分割结果进行形态学滤波先进行了开操作,再进行闭操作。开操作是一般使对象的轮廓变得光滑,断开狭窄的间断和消除细的突出物。闭操作可使轮廓线更光滑,但与开操作相反的是,闭操作通常消弥狭窄的间断和长细的鸿沟,消除小的空洞,并填补轮廓线中的断裂。3.3。2[L,num]=bwlabel(fg2,4);%对连通域进行标记,num=6Bwlabel函数的用法:L=bwlabel(BW,n)[L,num]=bwlabel(BW,n),这里num返回的就是BW中连通区域的个数.返回一个和BW大小相同的L矩阵,包含了标记了BW中每个连通区域的类别标签,这些标签的值为1、2、num(连通区域的个数)。n的值为4或8,表示是按4连通寻找区域,还是8连通寻找,默认为8。本程序使用的是4连通。四连通或八连通是图像处理里的基本感念:8连通,是说一个像素,如果和其他像素在上、下、左、右、左上角、左下角、右上角或右下角连接着,则认为他们是联通的;4连通是指,如果像素的位置在其他像素相邻的上、下、左或右,则认为他们是连接着的,连通的,在左上角、左下角、右上角或右下角连接,则不认为他们连通.all=[img_reg.Area];%求出6个连通域的像素个数[d,ind]=max(all);%得到面积最大的连通域本段bwlabel函数是对连通域进行标号,标完号后利用“Area”属性的参数找到面积最大的连通域,这个连通域即为视频中的人。3.3.3or=[img_reg.Orientation];函数regionprops语法规则为:STATS=regionprops(L,properties)该函数用来测量标注矩阵L中每一个标注区域的一系列属性。L中不同的正整数元素对应不同的区域,例如:L中等于整数1的元素对应区域1;L中等于整数2的元素对应区域2;以此类推。返回值STATS是一个长度为max(L(:))的结构数组,结构数组的相应域定义了每一个区域相应属性下的度量。Properties可以是由逗号分割的字符串列表、包含字符串的单元数组、单个字符串'all’或者'basic'.如果properties等于字符串'all',则表4.1中的度量数据都将被计算;如果properties等于字符串'basic',则属性:’Area','Centroid’和'BoundingBox'将被计算。bo=cat(1,img_reg。BoundingBox);cat:用来联结数组用法:C=cat(dim,A,B)

按dim来联结A和B两个数组。

C=cat(dim,A1,A2,A3,.。.)

按dim联结所有输入的数组.Boundingbox用来表示包含相应区域的最小矩形,它有四个参数分别为[x,y,width,height].根据regionprops函数的boundingbox和orientation的参数,我们可以获得每一帧的图像的长宽比和方向角的参数。然后跟据这些数据来判断人体站立和躺卧来设置长宽比和方向角的范围,通过多次比对与测试,我认为站立的方向角从81~89,躺卧的方向角从-3~6,站立的长宽比从1。7~3躺卧的长宽比0.2~0.5是比较合适的。if(or_m(n)>ori_low)&&(or_m(n)<ori_high)title(strcat('躺卧,NO。’,int2str(n)));elseif(or_m(n)>ors_low)&&(or_m(n)〈ors_high)title(strcat('站立,NO.',int2str(n)));elseiftitle(strcat(’其他,NO.',int2str(n)));endifratio(n)〈bo_t1&&ratio(n)〉bo_t2title(strcat('躺卧,NO。’,int2str(n)));elseifratio(n)〉bo_z1&&ratio(n)〈bo_z2title(strcat('站立,NO。',int2str(n)));elseiftitle(strcat('其他,NO.’,int2str(n)));end本程序采用循环语句来判断图像每一帧的人体姿态,根据该帧图像的参数判断该参数处在哪一个的范围内,就可以在图像上方显示此时人体正处于的姿态,从而达到预期的效果,下面的图片就是采用统一的参考视频根据所编的程序进行人体检测后所得到的结果。在输出的图像中可以看到人体在站立时,视频的上方会出现“站立"的文字,如下图3.3.3—图3。3.3—1在躺卧时,视频的上方会出现“躺卧”的文字,如下图3.3—2所示图3。3—2对躺卧姿势的判断在不是站立和躺卧时,视频的上方会出现“其他”的文字,如下图3.3—3所示图3.3。3—3.4程序调试对编写的软件程序,以测试视频为例进行调试,根据结果,再使用另一个视频进行测试,并完善程序功能。新视频中检测人体站立姿态的检测结果,如图3。4-1所示图3.4—1对站立姿势的判断新视频中检测人体躺卧姿态的检测结果,如图3.4—2所示图3。4-2对躺卧姿势的判断新视频中检测人体其它姿态的检测结果,如图3.4-3所示图3.4-3对其他姿势的的判断通过比对,新视频的结果基本上达到了预期的效果,说明本次设计的程序可以实现对人体姿态的站姿与躺卧姿态的检测。结论与致谢本次课程设计是通过matlab编程以实现对视频中人体站姿与躺卧两种姿态的检测,它的应用在实际生活中有很大的意义与价值。通过这次课程设计,我摆脱了单纯的理论知识状态,锻炼了我的综合运用专业知识的实际设计,提高我查阅文献资料的水平,也由课程设计,这给我写的论文的能力得到提高.尽管课程设计的过程很繁琐,内容复杂,但是它让我收获更加丰富。让我对于理解和使用MATLAB程序设计得到了提高和加深,通过和老师沟通,我也对自己的设计有新的要求和更深刻的了解。

在设计过程中,程序始终困扰着我,尤其是bwlabel和regionprops这两个函数,因为在这个领域只是刚刚入门,也可以说是只懂一些简单的指令,为了做出满意的效果,我查阅了很多相关资料,并且根据程序内容进行许多次的改写与调试,除此之外还经常求教与老师帮忙解决问题,老师也很耐心的解决了我的问题,使我的设计指导的问题得以解决。这让我意识到,不管在什么时候,我们都必须学会与他人沟通。正是这样的设计让我积累了大量的实践经验,相信脑海里的知识,让我在今后的工作中表现出较高的弹性和学习,更多的理解和沟通能力。在最后,我十分感谢指导老师的细心指导与讲解,让我有了巨大的进步。参考文献[1]罗万盈.基于单目视觉的人体运动姿态捕捉研究与实现[D].北京交通大学,2015.[2]陈硕。基于视频序列的人体姿态检测与估计系统[D].东南大学,2012..[3]杨丹,赵海滨,龙哲等。MATLAB图像处理实例详解[M].清华大学出版社,2013.[4]Nehmer,J.,Becker,M.,Karshmer,A.,Lamm,R.Livingassistancesystems—anambientintelligenceapproach[C]//The28thInternationalConferenceonSoftwareEngineering,ACM,USA,NewYork,2006:43–50。[5]孔晓东.智能视频监控技术研究[D].上海:上海交通大学,2008.[6][美]RichardO。Duda,模式分类[M]。北京:机械工业出版社,2003.[7]冈萨雷斯。数字图像处理(MATLAB)中文版[M]。北京:电子工业出版社,2007[8]常好丽.运动行人检测与跟踪方法研究[D]。陕西:西北工业大学,2006。[9]章毓晋.图像分割[M].北京:科学出版社,2001.[10]KentaroToyama,et,alWallflower:PrinciplesandPracticeofBackgroundMaintenance.InternationalConferenceonComputerVision,September1999,Corfu,附录1%ApproximateMedianFilterbackgroundmodelformovingobjectsegmentation.%采用近似中值滤波背景模型参考图像实现运动目标分割clearall;closeall;%Constructavideoreaderclasstoreadaavifile,firstthe’car_parking.avi’,%thenthe‘highwayII_raw。avi'.videoObj=VideoReader(’gyz.avi');numFrames=videoObj。NumberOfFrames;%GetthespeedoftheAVImovieinframespersecond(fps)FPS=videoObj。FrameRate;%Readthefirstframeinthevideosequenceastheinitialvaluenewframe=read(videoObj,1);fmed=double(newframe);%Gettheheight,width,andnumberofcolorcomponentsoftheframe[height,width,numColor]=size(newframe);%AssignavaluetothethresholdThreh=20;beta=0.6;fg=false(height,width);ors_low=82;ors_high=89;ori_high=6;ori_low=-3;bo_t1=0.5;bo_t2=0。2;bo_z1=1。7;bo_z2=3;%创建方形结构元素,用于对分割结果形态学滤波se=strel('square',3);%Toavoidconsumingtoomuchmemories,readonlyaoneframeeachtime.forn=100:400newframe=read(videoObj,n);ﻩ%Calculatethedifferrenceimagebetweenthenewframeandfmed

温馨提示

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

最新文档

评论

0/150

提交评论