基于凌阳单片机的环境测试仪_第1页
基于凌阳单片机的环境测试仪_第2页
基于凌阳单片机的环境测试仪_第3页
基于凌阳单片机的环境测试仪_第4页
基于凌阳单片机的环境测试仪_第5页
已阅读5页,还剩45页未读 继续免费阅读

下载本文档

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

文档简介

本科生毕业设计(论文)题目:基于单片机的环境测试仪摘要随着生活水平的提高,人们对居住环境也越来越关注.在电子产品突飞猛进地发展,电子测量仪表逐渐丰富起来的同时,原来的模拟产品逐步向数字化、综合化转化,并且不断走向人性化.该环境测量系统能够充分发挥人性化的特质,实现室内光线强弱、温度、湿度的检测.利用单片机自带的语音功能,配合传感器,实现带语音播报功能的环境测试仪的设计.本方案是采用凌阳科技公司的传感器数据采集模组进行室内温湿度及光线的测量,并通过LED键盘模组实现采集数据的显示.整个系统使用凌阳公司的16位单片机SPCE061A作为控制板,实现室内环境的测量、显示和播报功能,从而完成一个环境测试仪器的设计.关键词:室内环境测量;SPCE061A单片机;语音播报ABSTRACTAstheimprovementoflivingstandard,peoplestarttopaymoreandmoreattentionfortheirlivingenvironment.TheoriginalanalogproductsturntoDigital,TantalizationandHumanizationstepbystep,whileelectronicproductsaredevelopingbyleapsandboundsandelectronicmeasurementinstrumentsaregraduallyenrich.Thisenvironmentalmeasuringsystemcanfullyexerthumanizedidiosyncratic,realizethedetectionofindoorlightintensity,temperature,andhumidity.ByusingthespeechfunctionofSCM,whichcoordinateswithtransducer,wecanrealizethedesignofEnvironmentTesterhavingspeechfunction.ThisschemeadoptsthesensordataacquisitionmoduleofSunplustotesttheindoortemperature,humidityandlight,andthroughLEDkeyboardmoduletorealizethedisplayofacquisitiondata.Thewholesystemusethe16-bitsinglechipSPCE061AofSunpluscompanyaspanel,realizingtheindoorenvironmentmeasurement,displayandreportingfunction,soastocompleteandesignofenvironmentaltestinstrument.Keywords:Indoorenvironmentmeasurement;SPCE061Amicrocontroller;voicereport目录摘要 IABSTRACT II目录 i第1章绪论 11.1选题的目的和意义 11.2传感器技术的发展和国内外研究概况 11.3设计任务和要求 21.3.1设计任务 21.3.2设计要求 2第2章系统组成介绍 32.1凌阳单片机——SPCE061A芯片简介 32.2温度传感器——DS18B20介绍 42.2.1DS18B20概述 42.2.2DS18B20测温原理 52.2.3DS18B20的内部结构 62.2.4DS18B20温度传感器的存储器 72.3湿度传感器——HS1101介绍 82.3.1HS1101概述 82.3.2HS1101性能参数 92.3.3HS1101湿度测量方案简述 92.4光敏电阻测量光线原理 102.4.1光敏电阻器简介 102.4.2光敏电阻器的结构 112.4.3光敏电阻器的主要参数 112.4.4光敏电阻器的工作原理 122.4.5光敏电阻测量光线方案简介 122.5LED键盘模组简介 122.5.1主要功能 132.5.2结构框图 132.5.3键盘布局 142.5.4接口说明 14第3章系统硬件设计 173.1SPEC061A最小系统 173.2电源模块 173.3音频输出模块 183.4环境参数测量模块 183.4.1温度测量模块 183.4.2湿度测量模块 193.4.3光线测量模块 203.5按键和显示电路模块 203.6系统硬件总体设计 21第4章系统软件设计 234.1环境参数模块主程序说明 234.1.1测温程序模块 234.1.2测湿度程序模块 274.1.3光线测量程序模块 314.2语音播报程序说明 334.3AD转换和中断程序说明 34第5章系统组装与调试 375.1系统组装 375.2程序下载 375.3程序调试 385.3.1控制程序运行 385.3.2调试窗口 395.4系统应用 39第6章结论与展望 416.1结论 416.2不足之处及未来展望 41参考文献 43致谢 45第1章绪论1.1选题的目的和意义近年来,生活水平的不断提高促使人们开始关注自身的居住环境,而不断成熟的传感器技术也使各种环境电子测量仪丰富起来.然而,市面上很少有能够同时测量温湿度及光线的室内环境测试仪,有鉴于此,本课题欲设计出一个传感器数据采集模组进行室内温湿度及光线的测量,通过LED键盘模组实现采集数据的显示.整个系统使用凌阳公司的16位单片机SPCE061A作为控制板,实现室内环境的测量、显示和播报功能,从而完成一个环境测试仪器的设计.该环境测量系统能够充分发挥人性化的特质,实现室内光线强弱、温度、湿度的检测,利用单片机自带的语音功能,配合传感器,实现带语音播报功能的环境测试仪.1.2传感器技术的发展和国内外研究概况传感器技术是一项当今世界令人瞩目的迅猛发展起来的高新技术之一,也是当代科学技术发展的一个重要标志.可以说传感器是新技术革命和信息社会的重要技术基础,是现代科技的开路先锋,它与通信技术、计算机技术构成了信息产业的三大支柱.传感器技术开发大体上可分为三代.第一代是结构型传感器,它利用结构参数的变化来感受和转换信号.例如,电阻应变式传感器,它利用了弹性敏感元件变形引起的应变计电阻变化.第二代传感器是70年代发展起来的固体传感器.这类传感器由半导体、电介质、磁性体等固体元件构成,它利用了材料的某种特性随被测量的变化来感受和转换信号的原理,其结构参数在信号转换过程中基本不变.例如热电偶、光敏电阻和压电晶体传感器,分别利用了材料的热敏效应光敏效应和压敏效应.70年代后期,由于集成电路技术迅速发展,可以把传感器和外围电路做在同一块芯片上,所以出现了集成传感器.使用这类传感器可以大大缩短电路设计时间,减少构成系统的部件数,提高了可靠性,从而实现了系统的小型化、轻量化和低价格化.现在能够实现集成化的传感器主要是热敏、力敏、光敏和磁敏等物理传感器.由于集成传感器容易同计算机接口,所以发展非常迅速,目前已占传感器市场的2/3,现在集成传感器正向着低价格、多功能和系列化方向发展.但是,在高温、高湿、高压、强磁、强振动、强冲击和强腐蚀等条件下,仍需使用结构型传感器.今后,结构型传感器将与微电子技术和计算机技术紧密结合向高精度发展.第三代传感器是80年代刚刚发展起来的智能传感器.随着大规模集成电路和微处理机技术的发展,可以把传感器、信号调节电路、微计算机、存储器及其接口集成在一块芯片上,使传感器具有一定的人工智能.由于这类传感器本身具有数据处理能力,所以可借助软件对非线性滞后、温度等参数进行修正,可取代那种通过繁琐模拟补偿来改善特性的方法[1].目前世界上从事传感器研制生产单位已增到5000余家.美国、欧洲、俄罗斯各有从事传感器研究和生产厂家1000余家,日本有800余家,其中不少是世界上著名厂商,例如美国福克斯波罗(Foxboro)公司,霍尼韦尔(Honeywell)公司、德国的西门子、荷兰的飞利浦、俄罗斯的科学院半导体所、热工仪表所等.传感器技术是测量技术、半导体技术、计算机技术、信息处理技术、微电子学、光学、声学、精密机械、仿生学、材料科学等众多学科相互交叉的综合性高新技术密集型前沿技术之一.因此,今后一段时间内,对传感技术的应用将更为广泛,如航天、航空、国防科研、信息产业、机械、电力、能源、交通、农林、食品、烟酒制造、机器人、家电等诸多领域,可以说几乎渗透到人类活动的各个领域.1.3设计任务和要求1.3.1设计任务利用凌阳公司的16位单片机SPCE061A作为控制板,外接温湿度及光电传感器进行数字化采集,通过内部语音算法将结果播报出来,同时利用LED数码模块将所测数据显示出来.1.3.2设计要求1通过按键监测环境光线状况,根据光线强弱系统会进行温馨提示:如果光线太弱,系统播报“光线太弱,请注意保护眼睛”;如果光线太强,系统播报“光线太强,请注意保护眼睛”;2播放当前温度值:播放温度值的格式为“温度,XX摄氏度”;3可以通过按键启动湿度测量,根据湿度情况系统会进行温馨提示:如果湿度大于正常值,系统播报“潮湿,请打开除湿机”;如果湿度小于正常值,系统播报“太干,请打开加湿器”.第2章系统组成介绍2.1凌阳单片机——SPCE061A芯片简介凌阳的16位单片机的CPU内核采用凌阳最新推出的μ’nSP(MicrocontrollerandSignalProcessor)16位微处理器芯片.由于芯片内部加入了硬件乘法器,这样凌阳单片机即可以做控制,也可以完成数据的信息的处理,尤其是在图像识别和语音识别上,有自己的特色.而且凌阳单片机还采用了SOC理念,一颗芯片就是一个系统,把传统单片机学要扩展的AD、DA、存储器等器件都做到了芯片内容,方便了单片机的学习和项目的开发.

μ’nSP家族有以下特点:体积小、集成度高、可靠性好且易于扩展;具有较强的中断处理能力高性能价格比;指令系统功能强、效率高;功耗低、电压低.SPCE061A精简开发板—61板结合集成开发环境不需外界任何仿真、调试器即可以完成在线编程、仿真、调试功能.

SPCE061A精简开发板—61板配有在线调试器、麦克风等.用户不需外接任何器件即可以完成语音录放等功能.用户可以将自己喜爱的歌曲录制到芯片中,即可听到自己录制的歌曲.因开发板小巧精致,甚至可以放到衣袋里,倾听自己的作品[2].图2-1板功能分区图SPCE061A是一款基于μ’nSP内核的16位单片机,其芯片特性如下:(1)工作电压:内核工作电压VDD为3.0~3.6V(CPU),I/O口工作电压VDDH为VDD~5.5V;(2)CPU时钟:0.32MHz~49.152MHz;(3)内置2K字SRAM和32K字闪存ROM;(4)系统处于备用状态下(时钟处于停止状态),耗电小于2μA@3.6V;(5)具备触键唤醒的功能;(6)32位通用可编程输入/输出端口;(7)2个16位可编程定时器/计数器(可自动预置初始计数值);(8)7通道10位电压模-数转换器(ADC)和单通道声音模-数转换器;(9)2个10位DAC(数-模转换)输出通道;(10)14个中断源可来自定时器A/B,时基,2个外部时钟源输入,键唤醒;(11)具备串行设备接口;(12)低电压复位(LVR)功和低电压监测(LVD)功能;(13)内置在线仿真(ICE,In-CircuitEmulator)接口[3].图2-2SPCE061A内部结构图SPCE061A引脚说明:表2-1芯片引脚说明引脚说明IOA0~IOA15(41~48,53,54~60脚)I/O口A,共16个IOB0~IOB15(5~1,81~76,68~64脚)I/O口B,共16个OSCI(13脚)振荡器输入.在石英晶振模式下,是石英元件的一个输入脚.OSCO(12脚)振荡器输出.在石英晶振模式下,是石英元件的一个输出脚.RES_B(6脚)复位输入.若这个脚输入低电平,会使得控制器被重置复位.ICE_EN(16脚)IC使能端,接在线调试器PROBE的使能脚ICE_EN.ICE_SCK(17脚)ICE时钟脚,接在线调试器PROBE的时钟脚ICE_SCK.ICE_SDA(18脚)ICE数据脚,接在线调试器PROBE的数据脚ICE_SDA.PVIN(20脚)程序保密设定脚.PFUSE(29脚)程序保密设定脚.DAC1(21脚)音频输出通道1.DAC2(22脚)音频输出通道2.VREF2(23脚)2V参考电压输出脚.AGC(25脚)语音输入自动增益控制引脚.OPI(26脚)Microphone的第二运放输入脚.MICOUT(27脚)Microphone的第一运放输出脚.MICN(28脚)Microphone的负向输入脚.MICP(33脚)Microphone正向输入脚.VRT(35脚)A/D转换外部参考电压输入脚.它决定A/D转换输入电压上限值.例如该点输入一个2.5V的参考电压,则A/D转换电压输入范围为0~2.5V.(外部A/D最高参考电压<3.3V).VCM(34脚)ADC参考电压输出脚.VMIC(37脚)Microphone电源.SLEEP(63脚)睡眠状态指示脚.当CPU进入睡眠状态时,该脚输出一个高电平.VCP(8脚)锁相环压控振荡器的阻容输入.XROMT、PVPP、XTEST(61、69、14脚)出厂测试用管脚,悬空即可.VDDH(51、52、75脚)I/O电平参考.该点输入一个5V的参考电压,则I/O输入输出高电平为5V.VDD(7脚)PLL锁相环电源.VSS(9脚)锁相环地.VSS(19、24脚)模拟地.VSS(38、49、50、62脚)数字地.VSS(15、36脚)数字电源.2.2温度传感器——DS18B20介绍2.2.1DS18B20概述传统的温度检测大多以热敏电阻为传感器,采用热敏电阻,可满足40℃至90℃测量范围,但热敏电阻可靠性差,测量温度准确率低,对于小于1℃的温度信号是不适用的,还得经过专门的接口电路转换成数字信号才能由微处理器进行处理.与传统的热敏电阻有所不同的是,DS18B20数字式温度传感器,使用集成芯片,采用单总线技术,其能够有效的减小外界的干扰,提高测量的精度.同时,它可以直接将被测温度转化成串行数字信号供微机处理,接口简单,使数据传输和处理简单化.部分功能电路的集成,使总体硬件设计更简洁,能有效地降低成本,搭建电路和焊接电路时更快,调试也更方便简单化,这也就缩短了开发的周期.DS18B20单线数字温度传感器,即“一线器件”,其具有独特的优点:(1)采用单总线的接口方式与微处理器连接时仅需要一条口线即可实现微处理器与DS18B20的双向通讯.单总线具有经济性好,抗干扰能力强,适合于恶劣环境的现场温度测量,使用方便等优点,使用户可轻松地组建传感器网络,为测量系统的构建引入全新概念.(2)测量温度范围宽,测量精度高DS18B20的测量范围为-55℃~+125℃;在-10~+85℃范围内,精度为±0.5℃.(3)在使用中不需要任何外围元器件即可实现测温.(4)多点组网功能多个DS18B20可以并联在惟一的三线上,实现多点测温.(5)供电方式灵活DS18B20可以通过内部寄生电路从数据线上获取电源.因此,当数据线上的时序满足一定的要求时,可以不接外电源,从而使系统结构更趋简单,可靠性更高.(6)测量参数可配置DS18B20的测量分辨率可通过程序设定9~12位.(7)负压特性电源极性接反时,温度计不会因发热而烧毁,但不能正常工作.(8)掉电保护功能DS18B20内部含有EEPROM,在系统掉电以后,它仍可保存分辨率及报警温度的设定值.DS18B20具有体积更小、适用电压更宽、更经济、可选更小的封装方式,更宽的电压适用范围,适合于构建自己的经济的测温系统,因此也就被设计者们所青睐[4].2.2.2DS18B20测温原理图2-3DS18B20的内部测温电路框图低温度系数晶振的振荡频率受温度的影响很小,用于产生固定频率的脉冲信号送给减法计数器1,为计数器提供一频率稳定的计数脉冲.高温度系数晶振随温度变化其震荡频率明显改变,很敏感的振荡器,所产生的信号作为减法计数器2的脉冲输入,为计数器2提供一个频率随温度变化的计数脉冲.图中还隐含着计数门,当计数门打开时,DS18B20就对低温度系数振荡器产生的时钟脉冲进行计数,进而完成温度测量.计数门的开启时间由高温度系数振荡器来决定,每次测量前,首先将-55℃所对应的基数分别置入减法计数器1和温度寄存器中,减法计数器1和温度寄存器被预置在-55℃所对应的一个基数值.减法计数器1对低温度系数晶振产生的脉冲信号进行减法计数,当减法计数器1的预置值减到0时温度寄存器的值将加1,减法计数器1的预置将重新被装入,减法计数器1重新开始对低温度系数晶振产生的脉冲信号进行计数,如此循环直到减法计数器2计数到0时,停止温度寄存器值的累加,此时温度寄存器中的数值即为所测温度.斜率累加器用于补偿和修正测温过程中的非线性,其输出用于修正减法计数器的预置值,只要计数门仍未关闭就重复上述过程,直至温度寄存器值达到被测温度值[5].2.2.3DS18B20的内部结构图2-4DS18B20的内部结构DS18B20内部结构如图2-4所示,主要由四部分组成:64位光刻ROM、温度传感器、非挥发的温度报警触发器TH和TL、配置寄存器.光刻ROM中的64位序列号是出厂前被光刻好的,它可以看作是该DS18B20的地址序列码.64位光刻ROM的排列是:开始8位(地址:28H)是产品类型标号,接着的48位是该DS18B20自身的序列号,并且每个DS18B20的序列号都不相同,因此它可以看作是该DS18B20的地址序列码;最后8位则是前面56位的循环冗余校验(CRC=X8+X5+X4+1).由于每一个DS18B20的ROM数据都各不相同,因此微控制器就可以通过单总线对多个DS18B20进行寻址,从而实现一根总线上挂接多个DS18B20的目的.8bit检验CRC48bit序列号8bit工厂代码(10H)8bit检验CRC48bit序列号8bit工厂代码(10H)MSBLSBMSBLSBMSBLSB

图2-564B闪速ROM

DS18B20中的温度传感器用于完成对温度的测量,它的测量精度可以配置成9位,10位,11位或12位四种状态.温度传感器在测量完成后将测量的结果存储在DS18B20的两个8BIT的RAM中,单片机可通过单线接口读到该数据,读取时低位在前,高位在后.数据的存储格式如下图(以12位转化为例):图2-6温度信号寄存器格式这是12位转化后得到的12位数据,存储在18B20的两个8比特的RAM中,二进制中的前面5位是符号位,如果测得的温度大于0,这5位为0,只要将测到的数值乘于0.0625即可得到实际温度;如果温度小于0,这5位为1,测到的数值需要取反加1再乘于0.0625即可得到实际温度.例如:+125℃的数字输出为07D0H,+25.0625℃的数字输出为0191H,-25.0625℃的数字输出为FF6FH,-55℃的数字输出为FC90H.DS18B20完成温度转换后,就把测得的温度值与TH,TL作比较,若T>TH或T<TL,则将该器件内的告警标志置位,并对主机发出的告警搜索命令作出响应.因此,可用多只DS18B20同时测量温度并进行告警搜索.2.2.4DS18B20温度传感器的存储器DS18B20温度传感器的内部存储器包括一个高速暂存RAM和一个非易失性的可电擦除的E2RAM,后者存放高温度和低温度触发器TH、TL和结构寄存器.数据先写入RAM,经校验后再传给E2RAM.暂存存储器包含了8个连续字节,前两个字节是测得的温度信息,第一个字节的内容是温度的低八位TL,第二个字节是温度的高八位TH.第三个和第四个字节是TH、TL的易失性拷贝,第五个字节是结构寄存器的易失性拷贝,这三个字节的内容在每一次上电复位时被刷新.第六、七、八个字节用于内部计算.第九个字节是冗余检验字节,可用来保证通信正确.DS18B20的分布如下:图2-7DS18B20的暂存寄存器分布在64BROM的最高有效字节中存储有循环冗余校验码(CRC).主机根据ROM的前56位来计算CRC值,并和存入DS18B20中的CRC值做比较,以判断主机收到的ROM数据是否正确.设置寄存器:该位于高速闪存的第5个字节,这个寄存器中的内容被用来确定测试模式和温度的转换精度.寄存器各位的内容如下:

图2-8DS18B20的设置寄存器各位内容该寄存器的低五位一直都是1,TM是测试模式位,用于设置DS18B20在工作模式还是在测试模式.在DS18B20出厂时该位被设置为0,用户不要去改动.R1和R0用来设置分辨率,如下表所示:(DS18B20出厂时被设置为12位)图2-9分辨率设置由表可知,设定的分辨率越高,所需要的温度数据转换时间就越长.因此,在实际应用中要在分辨率和转换时间权衡考虑.2.3湿度传感器——HS1101介绍2.3.1HS1101概述HS1101湿度传感器采用专利设计的固态聚合物结构,具有响应时间快、高可靠性和长期稳定性特点,不需要校准的完全互换性.湿度传感器HS1101是基于独特工艺设计的电容元件,这些相对湿度传感器可以大批量生产.可以应用于办公室自动化,车厢内空气质量控制,家电,工业控制系统等.它有以下几个显著的特点[6]:(1)全互换性,在标准环境下不需校正(2)长时间饱和下快速脱湿(3)可以自动化焊接,包括波峰或水浸(4)高可靠性与长时间稳定性(5)专利的固态聚合物结构(6)可用于线性电压或频率输出回路(7)快速反应时间图2-10HS1101实物照2.3.2HS1101性能参数HS1101湿度传感器在电路中等效于一个电容器Cx,其电容随所测空气的湿度增大而增大,在相对湿度为0%-100%RH的范围内,电容的容量由160pF变化到200pF,其误差不大于±2%RH,响应时间小于5s,温度系数为0.04pF/℃,精度较高.图2-11HS1101湿度-电容响应曲线HS1101的一些常用参数如下表2-2:表2-2HS1101常用参数参数符号参数值单位工作温度Ta-40~100℃储存温度Tstg-40~125℃供电电压Vs10Vac湿度范围RH0~100%RH焊接时间@=260℃t10S2.3.3HS1101湿度测量方案简述对于湿度测量仪,除了具有一个控制器控制测量外,还需要测量器.本系统中采用SPCE061A作为控制器,电容式湿度传感器HS1101作为测量器,利用一个按键来启动湿度测量和语音播放.由于电容不能直接和SPCE061A的I/O口连接进行测量,所以需要一个电路模块,与SPCE061A的Feedback接口IOB2、IOB4,IOB3、IOB5连接,实现从电容到频率的转换,系统的结构框图如下图:图2-12HS1101测温结构框图SPCE061A单片机作为主控芯片,根据读到的键值判断是否启动测量,测量时负责读取Feedback电路的工作频率,根据频率计算HS1101的电容和它所在环境的湿度,并把湿度通过喇叭播放出来.同时如果湿度值太高或者太低,系统会播放温馨提示.2.4光敏电阻测量光线原理2.4.1光敏电阻器简介光敏电阻器是利用半导体的光电效应制成的一种电阻值随入射光的强弱而改变的电阻器;入射光强,电阻减小,入射光弱,电阻增大.光敏电阻器一般用于光的测量、光的控制和光电转换(将光的变化转换为电的变化).常用的光敏电阻器硫化镉光敏电阻器,它是由半导体材料制成的.光敏电阻器的阻值随入射光线(可见光)的强弱变化而变化,在黑暗条件下,它的阻值(暗阻)可达1~10M欧,在强光条件(100LX)下,它阻值(亮阻)仅有几百至数千欧姆.光敏电阻器对光的敏感性(即光谱特性)与人眼对可见光(0.4~0.76)μm的响应很接近,只要人眼可感受的光,都会引起它的阻值变化.设计光控电路时,都用白炽灯泡(小电珠)光线或自然光线作控制光源,使设计大为简化.下图为其实物图:图2-13\o"查看图片"

光敏电阻实物图2.4.2光敏电阻器的结构通常,光敏电阻器都制成薄片结构,以便吸收更多的光能.当它受到光的照射时,半导体片(光敏层)内就激发出电子—空穴对,参与导电,使电路中电流增强.为了获得高的灵敏度,光敏电阻的电极常采用梳状图案,它是在一定的掩膜下向光电导薄膜上蒸镀金或铟等金属形成的.一般光敏电阻器结构如下图所示:图2-14\o"查看图片"

光敏电阻外形图和电路符号光敏电阻器通常由光敏层、玻璃基片(或树脂防潮膜)和电极等组成.光敏电阻器在电路中用字母“R”或“RL”、“RG”表示.2.4.3光敏电阻器的主要参数光敏电阻器的主要参数有亮电阻(RL)、暗电阻(RD)、最高工作电压(VM)、亮电流(IL)、暗电流(ID)、时间常数、温度系数灵敏度等.具体如下:(1)亮电阻

亮电阻是指光敏电阻器受到光照射时的电阻值.(2)暗电阻

暗电阻是指光敏电阻器在无光照射(黑暗环境)时的电阻值.(3)最高工作电压

最高工作电压是指光敏电阻器在额定功率下所允许承受的最高电压.(4)亮电流

视电流是指在无光照射时,光敏电阻器在规定的外加电压受到光照时所通过的电流.(5)暗电流

暗电流是指在无光照射时,光敏电阻器在规定的外加电压下通过的电流.(6)时间常数

时间常数是指光敏电阻器从光照跃变开始到稳定亮电流的63%时所需的时间.(7)电阻温度系数

温度系数是指光敏电阻器在环境温度改变1℃时,其电阻值的相对变化.(8)灵敏度

灵敏度是指光敏电阻器在有光照射和无光照射时电阻值的相对变化.2.4.4光敏电阻器的工作原理光敏电阻的工作原理是基于内光电效应.在半导体光敏材料两端装上电极引线,将其封装在带有透明窗的管壳里就构成光敏电阻,为了增加灵敏度,两电极常做成梳状.用于制造光敏电阻的材料主要是金属的硫化物、硒化物和碲化物等半导体.通常采用涂敷、喷涂、烧结等方法在绝缘衬底上制作很薄的光敏电阻体及梳状欧姆电极,接出引线,封装在具有透光镜的密封壳体内,以免受潮影响其灵敏度.在黑暗环境里,它的电阻值很高,当受到光照时,只要光子能量大于半导体材料的禁带宽度,则价带中的电子吸收一个光子的能量后可跃迁到导带,并在价带中产生一个带正电荷的空穴,这种由光照产生的电子—空穴对了半导体材料中载流子的数目,使其电阻率变小,从而造成光敏电阻阻值下降.光照愈强,阻值愈低.入射光消失后,由光子激发产生的电子—空穴对将复合,光敏电阻的阻值也就恢复原值.在光敏电阻两端的金属电极加上电压,其中便有电流通过,受到波长的光线照射时,电流就会随光强的而变大,从而实现光电转换.光敏电阻没有极性,纯粹是一个电阻器件,使用时既可加直流电压,也加交流电压.半导体的导电能力取决于半导体导带内载流子数目的多少[7].2.4.5光敏电阻测量光线方案简介简单的光线测量框图:图2-15\o"查看图片"

光线测量结构框图采用SPCE061A作为控制器,光敏电阻作为测量器,直接把SPCE061A单片机ADC的任一通道与光线测量电路连接,利用KEY3按键来启动光线测量和语音播放.2.5LED键盘模组简介LED键盘模组集成LED、KEY、数码管功能,可作为单片机常用外围器件的扩展模块,采用DC5V或3.3V供电.2.5.1主要功能1.扩展了6位8段数码管,最大显示数据为999999;2.8个发光二极管,可作为显示状态信息使用;3.8个按键,可以组成1*8KEY也可组成2*4KEY;4.一个电位器,可以提供0-5V的模拟电压信号或者0~3.3V的模拟电压,与模组输入的VDD有关;5.键盘LED模组接口简单,可方便与任何一款单片机进行软硬件接口设计.2.5.2结构框图该模组主要包括:4位8段数码管和2位8段数码管,8个LED发光二极管,8个按键以及段码接SEG,位码接口DIG,按键接口1*8KEY和2*4KEY,模组的结构框图如图2-16所示[8]:图2-16LED键盘模组结构图2.5.3键盘布局图2-17LED键盘布局图2.5.4接口说明接口说明:LED模组使用十分简单,直接用排线与61板I/O接口相连即可.1.KEYTYPE选择接口[9]此接口是选择2*4KEY还是1*8KEY,具体选择方式如下:从左至右看,将第1至4短接块连接,选择了2*4KEY;只将第5个短接块短接,选择1*8KEY.2.2*4KEY接口2*4KEY的第1组行定义为ROW1,第2组行定义为ROW2,4列定义为COL1~COL4.使用时COL1是K1和K5的输入,COL2是K2和K6的输入,COL3是K3和K7的输入,COL4是K4和K8的输入.用户可自行选择ROW1与ROW2接至VDD还是GND,但同一时间只能使用一组.AV是模拟电压输出端,通过调整R20可以改变AV的值,AV的最大输出值与VDD相同.D_DP是第4位数码管后时钟冒号的位信号控制端.图2-182*4KEY接口图3.1*8KEY接口1*8KEY的8列分别定义为COL1~COL8,1行定义为ROW1.使用时COL1~COL8是K1~K8的列输入,ROW1是K1~K8的行输入.1*8KEY接口见图2-19:图2-191*8KEY接口图4.DIG接口6位数码管L1~L6的段发光管阳极和8个LED指示灯的阳极并联,并且8个LED指示灯采用共阴极方式.6位数码管L1~L6的阴极和8个LED的共阴极分别用DIG接口的DIG1~DIG7控制,第4位数码管后时钟冒号D_DP的位信号用DIG8控制,位信号均为高有效.DIG接口详见图2-20:图2-20DIG接口图5.SEG接口A~G、DP是6位数码管L1~L6的段信号和8个LED指示灯的阳极控制信号输入端.控制信号为高有效.图2-21SEG接口图第3章系统硬件设计3.1SPECO61A最小系统SPCE061A最小系统中,包括SPCE061A芯片及其外围的基本模块,其中外围的基本模块有:晶振输入模块(OSC)、锁相环外围电路(PLL)、复位电路(RESET)、指示灯(LED)等,如图3-1所示:图3-1SPCE061A最小系统图3.2电源模块SPCE061A的内核供电为3.3V,而I/O端口可接3.3V也可以接5V,所以在电源模块(61板上)中有一个端口电平选择跳线J5,下图为61板上的电源模块图:图3-2电源模块图由于本系统需要的端口高电平为3.3V(参数测量模块和LED键盘模块的供电电压都可为3.3V),所以J5跳线需要跳到1和2上.3.3音频输出模块SPCE061A内置2路10位精度的DAC,只需要外接功放电路即可完成语音的播放.图3-3是音频输出电路图.图3-3音频输出电路图3.4环境参数测量模块3.4.1温度测量模块由于DS18B20只有1个串行通信接口,与单片机的连接电路非常简单,只需和单片机的1个I/O端口连接即可,本系统选择了IOB1端口,其连接电路图如下图所示.DS18B20的I/O口属于漏极开路输出,外接上拉电阻后常态下呈高电平.本文采用外部电源供电,保证转换精度.图3-4DS18B20测温电路图3.4.2湿度测量模块由于湿度传感器HS1101是电容式的,所以要想办法测量得到它的电容,利用单片机没有办法直接读到,但是利用SPCE061A的Feedback功能可以测得HS1101所在RC电路的工作频率,这样就可以计算得到它的电容.

为了减小误差,利用一个固定电容和一个电阻构成另一个Feedback电路,作为湿度传感器HS1101的基准.根据表2-2中的参数,为了使湿度传感器HS1101的工作频率尽量接近10KHz,选择一个620KΩ的电阻和HS1101形成Feedback1;390pF的电容作为基准,和另外一个620KΩ电阻形成Feedback2,如下图:图3-5测湿度电路图3.4.3光线测量模块光线测量电路原理图如下:图3-6光线测量电路图整个电路由6V电池供电,2.5V的稳压管为A/D转换电路提供2.5V基准电压.可调电阻R1用来校准由温漂和电源电压降低引起的基准电压的降低,R4与R5串联,光线强度的变化通过分压值的变化反应,并输入到单片机的IOB6端口,进行A/D转换.IOA2端口设置为悬浮输入口,在单片机中定义变量Light,光线测量得到的电压数据存放在Light中,并根据Light判断光线太强、太弱还是柔和.每1Ms取1次A/D转换数据,共取10次,这是为了在100Hz的自然光的一个周期中都能取到数据.取10次测量平均值查表得到光强.3.5按键和显示电路模块按键和显示功能采用配套的LED键盘模组实现,其中按键选择1×8独立按键,显示采用6位8段数码管动态显示.1×8独立按键电路原理如图3-7所示.在连接时要注意:按键公共端都接VCC,在键盘模块上注意把ROW1和ROW2用跳线短接起来.IOA口高八位连接8个按键的COL8~COL1,IOA口低八位控制数码管的段信号,IOB的高八位分别控制数码管的位信号、发光二极管的公共端和第4位数码管后时钟冒号D_DP的位信号,其中IOB的高六位控制位信号DIG1~DIG6,IOB14控制发光二极管的公共端(本方案中没有用到发光二极管模块),IOB15控制第4位数码管后时钟冒号D_DP的位信号,该信号低电平有效,配合时钟冒号D_DP的段信号就可以点亮或者熄灭时钟冒号.图3-71×8独立按键电路原理图数码管的使用说明:数码管的使用主要涉及DIG接口(见图2-20)和SEG接口(见图2-21).数码管L1~L6采用共阴极设计共阴极即位信号用DIG接口中的DIG~DIG6控制,阳极即段信号由SEG接口的A~G、DP控制.使用时首先将其位信号DIG~DIG6设置成有效状态“高”,即选择了相应数码管,然后将其段信号A~G、DP设置成需要的状态,即选择了显示信息,段信号高有效.相应原理见下图:图3-8数码管显示原理图3.6系统硬件总体设计用61板控制环境参数采集系统,使用了IOA口、IOB口的高八位、IOB1~6共30个I/O口,另外使用了61板的语音输出模块;LED键盘模组中用到了6个数码管和1×8键盘的其中两个键盘.系统总体硬件电路连接图如下图所示:图3-9系统总体硬件电路连接图按键说明:图3-10系统按键说明图第4章系统软件设计4.1环境参数模块主程序说明4.1.1测温程序模块温度测量流程图图4-1温度测量流程图测温程序清单://========================================================// 文件名称: DS18B20.c// 功能描述: DS18B20的相关操作,通过用户接口函数取得函数值// 维护记录: 2011-4-20 v1.0//========================================================#include"SPCE061A.h"//========================================================// 语法格式: voidDelay(unsignedintuiTime)// 实现功能: 延时,在调用Delay(1)时,延时时间小于1us// 参数: uiTime// 返回值: 无//========================================================voidDelay(unsignedintuiTime){ while(uiTime>0) { uiTime-=1; }}//========================================================// 语法格式: voidSet_DQ(intDir)// 实现功能: 改变IOB1口的状态// 参数: Dir,1:IOB1输出1;0:IOB1悬浮输入// 返回值: 无//========================================================voidSet_DQ(intDir){ if(Dir>0) *P_IOB_Dir|=0x0002; else *P_IOB_Dir&=0xFFFD; *P_IOB_Buffer|=0x0002;}//========================================================// 语法格式: voidClr_DQ(intDir)// 实现功能: 改变IOB1口的状态// 参数: Dir,1:IOB1输出0;0:IOB1悬浮输入// 返回值: 无//========================================================voidClr_DQ(intDir){ if(Dir>0) *P_IOB_Dir|=0x0002; else *P_IOB_Dir&=0xFFFD; *P_IOB_Buffer&=0xFFFD;}//========================================================// 语法格式: unsignedintRead_DQ(void)// 实现功能: 读取DQ的值// 参数: 无// 返回值: DQ的值//========================================================unsignedintRead_DQ(void){ unsignedintuiTemp; uiTemp=0; if((*P_IOB_Data&0x0002)>0) uiTemp=1; return(uiTemp);}//========================================================// 语法格式: unsignedintRead_18B20_Byte(void)// 实现功能: 读取18B20的值// 参数: 无// 返回值: 18B20的值//========================================================unsignedintRead_18B20_Byte(void){ inti; unsignedintData; Data=0; for(i=0;i<8;i++) { Set_DQ(1); Delay(1); Clr_DQ(1); Delay(2); Set_DQ(0); //切为输入 Data=Data>>1; if(Read_DQ()>0) Data|=0x0080; Delay(31); } return(Data);}//========================================================// 语法格式: voidWrite_18B20_Byte(unsignedintData)// 实现功能: 写18B20// 参数: 要写的字节// 返回值: 无//========================================================voidWrite_18B20_Byte(unsignedintData){ inti; Set_DQ(1); Delay(1); for(i=0;i<8;i++) { Clr_DQ(1); Delay(1); if((Data&0x0001)>0) Set_DQ(1); Data=Data>>1; Delay(31); Set_DQ(1); Delay(1); }}//========================================================// 语法格式: intInit_18B20(void)// 实现功能: 初始化18B20// 参数: 要写的字节// 返回值: 无//========================================================intInit_18B20(void){ intflag; Set_DQ(1); Delay(1); Clr_DQ(1); Delay(250); Set_DQ(0); Delay(31); if(Read_DQ()>0) flag=1; else { flag=0; Delay(220); } Set_DQ(1); return(flag);}//========================================================// 语法格式: unsignedintRead_Temp(void)// 实现功能: 读取温度// 参数: 无// 返回值: 温度值//========================================================unsignedintRead_Temp(void){ inti; unsignedintuiT; unsignedintData[10];*P_IOB_Attrib=0xffff; //初始化IOB同相低电平输出口 *P_IOB_Dir=0xffff; *P_IOB_Data=0x0000; Set_DQ(1); while(Init_18B20()>0) *P_Watchdog_Clear=0x0001; Delay(40); Write_18B20_Byte(0xcc); Write_18B20_Byte(0x44); for(i=0;i<26;i++) Delay(15000); //长时间延时 while(Init_18B20()>0) *P_Watchdog_Clear=0x0001; Write_18B20_Byte(0xcc); Write_18B20_Byte(0xbe); for(i=0;i<8;i++) //数据读取 Data[i]=Read_18B20_Byte(); i=Data[1]; //温度的高字节 i=i<<8; uiT=Data[0]; //温度的低字节 uiT|=i; //高低字节组和,有效位数11位 Init_18B20(); returnuiT;}4.1.2测湿度程序模块主程序流程如下图:调用按键扫描程序读取键值,如果是KEY1键按下则启动测量,调用湿度测量函数测量湿度,并根据测量结果进行相应播放;如果不是KEY1键按下,返回继续扫描按键.注意:在每次测量前都会关断快速中断FIQ,这是因为在测量过程中用到了定时/计数器TimerA,而在语音播放时打开了FIQ中断,所以在测量前需先关闭,以免在测量过程中CPU一直相应FIQ中断,造成不必要的麻烦.图4-2湿度测量主程序流程图湿度主程序清单://====================================================================================//工程名:SensorsMd_HMDemo.spj//功能描述:利用61板的KEY1键控制湿度测量,每按一次KEY1键,61板播放一次湿度及温馨提示//包含文件:main.c\Hum_Measure.c\PlayVoice.c//isr.asm\hardware.asm\AD.asm//SPCE061A.h//SPCE061A.inc//====================================================================================//====================================================================================//文件名:main.c//功能描述:利用61板的KEY1键控制湿度测量//维护记录:2011年4月30//====================================================================================#include"SPCE061A.h"externvoidKey_Init(void); //键盘初始化函数,在Key.c中定义externunsignedintKeyScan(void); //键盘扫描函数,在Key.c中定义externunsignedintHumidity_Measure(void); //湿度测量函数,在Hum_Measure.c中定义externvoidPlayData(unsignedintiData); //语音播放数据(整数)函数externvoidPlaySnd(unsignedintSndIndex); //申明语音播放函数//====================================================================================//语法格式:intmain(void)//功能描述:主函数,根据按键与否进行湿度测量并进行语音播放湿度值//入口参数:无//出口参数:无//维护记录:2011年4月30//====================================================================================intmain(void){ unsignedintResult,Key; //保存键值 Key_Init(); //键盘初始化/* while((*P_IOA_Data&0x0001)==0) //开机音乐,按KEY进入测量模式 { PlaySnd(21); *P_Watchdog_Clear=0x0001; }*/ while(1) { __asm("fiqoff"); Key=KeyScan(); //键盘扫描,取键值 if(Key==0x0001) //如果是KEY1键按下 {Result=Humidity_Measure();//测量湿度,返回湿度值.这个函数在Hum_Measure.c文件中定义 if(Result!=0) //如果湿度不为0 { PlaySnd(12); //播放"湿度" PlaySnd(13); //播放"百分之" PlayData(Result); //播放湿度 PlaySnd(14); //播放"RH" if(Result>80) { PlaySnd(15); //播放"潮湿" PlaySnd(17); //播放"请" PlaySnd(18); //播放"打开" PlaySnd(19); //播放"除湿机" } if(Result<30) { PlaySnd(16); //播放"太干" PlaySnd(17); //播放"请" PlaySnd(18); //播放"打开" PlaySnd(20); //播放"加湿器" } } else *P_Watchdog_Clear=0x0001; //清看门狗 } *P_IOA_Data&=0xfffe; //IOA0口回低电平 *P_Watchdog_Clear=0x0001; //清看门狗 }}4.1.3光线测量程序模块光线监测程序的驱动程序(文件夹名为LGDiver)包括Lig_Measure.c文件、AD.asm文件和isr.asm文件.Lig_Measure.c中包含光线监测端口初始化程序Light_Init()和光线监测函数Light_Measure(),其中端口初始化程序的功能是把IOB6初始化为悬浮的输入口,这里同样主要介绍光线监测函数的主程序结构图:图4-3光线测量主程序流程图光线测量主程序清单://工程名:SensorsMd_LGDemo.spj//功能描述:利用61板的KEY3键控制光线测量,每按一次KEY3键,61板播放一次光线状况及温馨提示//包含文件:main.c\Lig_Measure.c\PlayVoice.c//isr.asm\hardware.asm\AD.asm//SPCE061A.h//SPCE061A.inc//维护记录:2011年5月10v1.0//====================================================================================//====================================================================================//文件名:main.c//功能描述:利用61板的KEY3键控制光线测量//维护记录:2011年5月10//====================================================================================#include"SPCE061A.h"externvoidKey_Init(void); //键盘初始化函数,在Key.c中定义externunsignedintKeyScan(void); //键盘扫描函数,在Key.c中定义externunsignedintLight_Measure(void); //光线测量函数,在Lig_Measure.c中定义externvoidPlaySnd(unsignedintSndIndex); //申明语音播放指定段语音的函数//====================================================================================//语法格式:intmain(void)//功能描述:主函数,根据按键与否进行光线测量//入口参数:无//出口参数:无//维护记录:2011年5月10//====================================================================================intmain(void){ unsignedintKey,Result; //保存键值 Key_Init(); //键盘初始化 while(1) { __asm("fiqoff"); Key=KeyScan(); //键盘扫描,取键值 if(Key==0x0004) //如果是KEY3键按下 {Result=Light_Measure();//测量并播放光线状况,这个函数在Lig_Measure.c文件中定义 if(Result==1) //光敏电阻为>15K,太暗 { PlaySnd(0); //播放"光线" PlaySnd(3); //播放"太弱" PlaySnd(4); //播放"请" PlaySnd(5); //播放"注意保护眼睛" } if(Result==2) //光敏电阻为<2K,光线太刺眼 { PlaySnd(0); //播放"光线" PlaySnd(2); //播放"太强" PlaySnd(4); //播放"请" PlaySnd(5); //播放"注意保护眼睛" } if(Result==0) { //光敏电阻为6.8K<R<15K,光线柔和 PlaySnd(0); //播放"光线" PlaySnd(1); //播放"柔和" *P_Watchdog_Clear=0x0001; //清看门狗 } } *P_IOA_Data&=0xfffb; //IOA2口回低电平 *P_Watchdog_Clear=0x0001; //清看门狗 }}4.2语音播报程序说明该系统采用自动播放方式,显示时调用数码管驱动函数直接显示.流程图如图4-4,百位显示在第二位数码管,十位显示在第三位数码管,个位显示在第四位数码管,小数点后第一位显示在第五位数码管,小数点后第二位显示在第六位数码管.本方案的程序代码和语音资源全部存储在SPCE061A片内Flash中,当需要播放时,根据索引号从SPCE061A片内Flash读取相关语音资料进行播放[10].流程图如下:图4-4语音播报流程图4.3AD转换和中断程序说明DS18B20数字式温度传感器,使用集成芯片,采用单总线技术,它可以直接将被测温度转化成串行数字信号而不需要进行AD转换,因此,采用DS18B20测温可以直接得到结果.但HS1101湿度传感器和由光敏电阻构成的光线传感器均需要经过AD转换,以湿度测量为例,AD转换程序流程如图4-5:图4-5AD转换程序结构图IRQ4_1KHz中断服务函数负责LINE1(即湿度测量通道,LINE2为光线测量通道)的A/D转换,保存A/D转换值并记录测量次数,中断服务程序流程如图4-6:图4-6中断服务程序结构图第5章系统组装与调试5.1系统组装安装好u’nSPIDE后,需要连接61板,确认以下的硬件都备全了:●下载线(又称EZ-Probe);●完好的61板;●电池盒(要记得里面要装好电池);●喇叭.61板的J8、J7分别连接LED键盘模组的DIG和SIG,控制6位数码管的状态;61板的J9连接LED键盘模组的1*8键盘,这里需要注意J9与1*8键盘的连接顺序是J9的“+”端连接1*8键盘的“ROW”端;J6连接DS18B20测温模块、HS1101湿度测量模块和光线测量模块,连接顺序是:“1”连接DS18B20的“DQ”、“2、3、4、5”连接HS1101电路模块的四个端口,

“6”连接光线电路模块,如图5-1所示.图5-1硬件连接图电池盒的接头接到61板上部的J10电源接口(插座具有防插错设计),喇叭接到61板上的J3接口.连接正确后,打开电源盒上的电源开关,可以看到61板上的电源指示灯(红色LED)点亮.下载线的一边(25针插座)与PC后面的并行接口(即打印口)相接,另一边的五针接头与61板上的J11接口(即标有“EZ-Probe”的插座)相接,并用J11接口边上的S5跳线把S5的2和3管脚短接.注意:在下载程序前,要先打开电源.5.2程序下载1.打开u’nSPIDE集成开发环境.2.选择[File]—>[LoadProgram]菜单项.3.打开环境数据采集系统的程序源代码,把程序载入IDE中.4.程序下载前所需要用到的工具按钮的位置在窗口的右上角;“SelectBody”用于选择芯片、下载线类型,“UseICE”使IDE处于在线仿真状态(只有在这种状态下,程序才能下载到61板里面),“Download”启动程序下载.5.点击“SelectBody”图标工具,打开“SelectBody”对话框.在“BodyName”下拉选择框中,选择“SPCE061A”;在“Probe”下拉选择框中选择所用的下载线、调试器,本例选用EZ_Probe(即简易下载线).设置完成后,点击“OK”.6.点击“UseICE”工具按钮(SelectBody工具左边,图标上有“ICE”字样的),使IDE处于在线仿真状态.7.选择[Build]—>[StartDebug]—>[Download]下载程序到61板中,或者直接点击按钮“Download”把程序下载到61板上.当程序处在下载状态时,会弹出一进度条对话框以示下载进程,不过前提要保证软件的设置以及硬件的连接都没有问题才可以.5.3程序调试利用μ’nSP®IDE用户可以轻松地找到程序的逻辑语法错误,还可借助一些调试窗口来查看变量寄存器和内存等的状态来监视程序的运行,同时可以连续单步和设置断点等运行方式来运行程序.5.3.1控制程序运行控制程序运行的目的是为了迅速查找程序中存在的错误,用户可根据程序调试的状态结果和错误目标搜索的需要来选择合适的控制方法[11].首先选择[Build]—>[StartDebug]—>[Do

温馨提示

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

评论

0/150

提交评论