毕业设计(论文)-瓦斯传感器数据处理及数显子程序编程调试.doc_第1页
毕业设计(论文)-瓦斯传感器数据处理及数显子程序编程调试.doc_第2页
毕业设计(论文)-瓦斯传感器数据处理及数显子程序编程调试.doc_第3页
毕业设计(论文)-瓦斯传感器数据处理及数显子程序编程调试.doc_第4页
毕业设计(论文)-瓦斯传感器数据处理及数显子程序编程调试.doc_第5页
已阅读5页,还剩31页未读 继续免费阅读

下载本文档

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

文档简介

瓦斯传感器数据处理及数显子程序编程调试 摘 要 现阶段煤矿安全问题已经成为全社会关注的焦点,成为关系到人民生命财产,甚至影响建立和谐社会的重大问题。研发出高质量、高性能、高可靠性、低成本的煤矿瓦斯检测报警系统无疑对解决这一重大问题有很大帮助。采用煤矿瓦斯检测报警系统,能有效地对瓦斯气体状态进行连续跟踪检测和报警。为我们调控瓦斯气体浓度,保障工人在最安全的状态下工作,提供及时准确的数据。本文根据总体设计的要求,在总体设计方案的基础上,提出切实可行的瓦斯传感器数据处理及数字显示的方案。所设计的方案可以保证系统能高效,稳定地实现设计的所有要求。本文论述了该系统的硬件和软件设计,并对数据处理及数显子程序编程调试进行了详细的介绍。关键词 瓦斯传感器;stc单片机;ad转换;数显 intermediate injection mould designmachincal designing manufacturing and automation major wang shao-fengabstract:this topic is intermediate injection mould design. the topic of the problems involved in the following aspects: the parts of measurement, analysis, drawing, plastic mold structure design, part of the mould parts processing procedures and after processing mould assembly. the main problem is plastic mould design.by surveying and intermediates for the plastic parts for linear structure analysis, design of a pair of the production of plastic mold two cavities. the mould chose double parting surface, using a runner gating system, putting out feed-in institution, double guide column type institution, the mould structure column orientation, steering mechanism of forming parts structure form, and the size of molding is calculated, the injection machine tooling for the preliminary selection and checking.key words: plastic mold; process analysis ; double parting surface目 录1.引言2.系统的功能和设计的要求2.1 该系统所要实现的主要功能2.2 系统设计要求2.3 系统的调试和试运行要求3.主要元器件的选择3.1单片机的选型3.2 传感元件的选择3.3变压芯片的选择4.硬件电路设计4.1 硬件总体结构4.2 传感器信号放大电路4.3 变压电路4.4 时钟电路4.5 led显示电路 4.6 声光报警电路4.7 红外遥控部分5.系统软件设计5.1单片机程序设计的特点5.2系统初始化子程序5.3系统参数设定子程序5.4自检子程序5.5数据处理子程序5.6 led显示子程序5.7 红外遥控子程序5.8 软件抗干扰措施6.参考文献7.附录8.致谢1 引言当前,随着采矿技术的不断发展,井下作业的安全越来越有保障,但是仍然有许多采矿企业的机械化程度低,对现场采矿的工作人员的生命安全造成潜在的威胁,特别是针对瓦斯气体的检测和报警仍旧存在隐患,每年由于瓦斯泄露造成的特大事故依然很多,因此对瓦斯气体的检测和报警是一项必要的工作。我们可以利用气体传感器技术,将瓦斯气体的浓度转换成与之有关系的电信号,通过对电信号的数据处理及数显转换成浓度信号,将检测到的瓦斯气体浓度和标准值进行比较,当高过一定浓度值时候进行相应的声光报警,提醒正在作业的人员进行相应的处理,组织人员撤离并对矿井通风排气,避免不安全事故的发生。随着现代技术的发展,各种瓦斯传感器的数据处理及数显软件发展的非常的迅速,可以运用软件编程的方法对瓦斯传感器的数据进行各种处理及数字显示。通过各种算法(算术平均值法、移动式算术平均法、中值法、竞赛评分法、超值滤波法等)对信号进行数字滤波处理,然后进行、量程转换、报警等功能,并可以将处理后的数据转换成bcd码,通过调用相应的段码送去显示,从而实现其数字显示功能。但现有程序大多没有针对具体的问题采用合适的滤波算法,并且不具备零位自校准和合适的线性化处理功能。另外,由于汇编语言针对不同的操作系统平台,不同的微控制器,指令都是完全不同的,即使指令相似,也不具有可移植性,而采用c编程则能很好的解决上述问题所以我们采用c编程进行数据处理和数字显示。2 系统的功能和设计的要求2.1该系统所要实现的主要功能2.1.1硬件功能(1)适用于煤矿井下采掘工作面、回风巷道、机电峒室等有瓦斯爆炸气体环境中对瓦斯浓度进行连续测定和报警。(2)显示功能:实时显示瓦斯浓度和红外遥控过程。(3)测量范围:0-4%ch4(4)测量误差:6m ,遥控控制传感器系统的零点修正,测量范围,报警上线。2.1.2 软件功能要求(1)瓦斯传感器的数据采集控制。(2)软件进行传感器系统非线性补偿。(3)软件进行传感器零点修正。(4)软件进行传感器频率输出信号精度修正。(5)控制单片机接收遥控器信号并译码。(6)完成系统的声光报警功能。2.2 系统设计要求2.2.1系统总体设计要求进行总体设计时,首先要对用户的要求,控制对象,硬件资源以及现场的情况作出调研,尤其是对用户的要求要详细询问记录,并做好备案,以免日后做大的修改,浪费人力物力。另外,还要明确各项指标的要求,例如被测对象的精度要求,量程范围,信号类型等等。在此基础上编制出完整的设计任务书。12.2.2系统硬件设计要求硬件设计要根据总体方案的要求确定合理,高可靠性,高精度,低功耗的硬件系统。因为井下要求本安防爆,所以对传感器提出了较为苛刻的功耗要求,因此,在设计系统硬件时要将降低功耗始终放在首位。另外,在设计时还要充分考虑软硬件的分工和配合,软件能实现的功能尽量由软件实现,这样可有效的降低硬件线路的复杂程度,降低功耗。但也要考虑软件实现要占用单片机的时间,响应时间也较慢。最后,在硬件设计时还不得不考虑降低成本的问题,在满足功能要求的情况下要尽量降低成本。22.2.3系统软件设计要求软件设计包括制定程序的总体方案,画出程序流程图,编制具体程序以及程序的检查修改等。由于程序是有多人完成的,所以要注意大家的分工协作。要采用结构化编程的方法,可有效避免冲突。各个寄存器和变量的使用要统一规划,分配各人使用。2.3 系统的调试和试运行要求系统调试包括分块调试和系统连调两部分。例如系统要求既能进行数字显示又能进行声光报警,我们可以分别对每一块进行调试,然后再连在一起对两者功能进行调试。另外,系统调试完成后还要进行一段时间的试运行,不但可以检验系统的可靠性,各项功能的完善性,还可以让用户充分使用后提出改进意见,使系统更加完善。3 主要元器件的选择3.1单片机的选型我们选用宏晶科技生产的stc12c5a60s2 系列单片机,外观如图1所示。与普通单片机比较stc12c5a60s2 系列单片机具有许多优点。3图1 stc12c5a60s2单片机stc12c5a60s2 系列单片机是宏晶科技生产的单时钟/机器周期(1t)的单片机,是高速/低功耗/超强抗干扰的新一代8051单片机,指令代码完全兼容传统8051,但速度快8-12倍。内部集成max810专用复位电路,2路pwm,8路高速10位a/d转换(250k/s,即25k/s),针对电机控制,强干扰场合。工作频率范围:035mhz;通用i/o口(40个),复位后为:准双向口/弱上拉(普通8051传统i/o口)可设置成四种模式:准双向口/弱上拉,推挽/上拉,仅为输入/高阻,开漏 推挽/上拉,仅为输入/高阻,开漏推挽/上拉,仅为输入/高阻,开漏每个i/o口驱动能力均可达到20ma;isp(在系统可编程)/ iap(在应用可编程),无需专用编程器,无需专用仿真器可通过串口(p3.0/p3.1)直接下载用户程序,数秒即可完成一片;内部集成max810专用复位电路(外部晶体12m以下时,复位脚可直接1k电阻到地);有外部掉电检测电路;具有a/d转换,8路10位精度adc,转换速度可达250k/s(每秒钟25万次)3.2传感元件的选择传感元件的性能对传感器系统有着很大的影响,在选用传感元件时一是测量精度要高,二是工作可靠,三是工作条件能适应恶劣环境的要求。最重要的是应具有防爆功能。通过慎重调研对比最后选用了郑州炜盛电子科技有限公司生产的新型载体催化元件,外观如图2所示。.其优于传统的催化元件,在响应特性,长期储存特性,温度特性和长期稳定性方面都有了明显的改进。图2 mc113型催化元件3.3变压芯片的选择图3 lm317芯片lm317 是美国国家半导体公司的三端可调正稳压器集成电路,如图3所示。lm317 的输出电压范围是1.2v至37v,负载电流最大为1.5a。它能够为传感元件提供稳定的工作电压和电流,使用非常简单,仅需两个外接电阻来设置输出电压。此外它的线性调整率和负载调整率也比标准的固定稳压器好。lm317 内置有过载保护、安全区保护等多种保护电路。通常lm317 不需要外接电容,除非输入滤波电容到lm317 输入端的连线超过 6 英寸(约 15 厘米)。使用输出电容能改变瞬态响应。调整端使用滤波电容能得到比标准三端稳压器高的多的纹波抑制比。可调整输出电压低到1.2v。保证1.5a 输出电流。典型线性调整率0.01%。典型负载调整率0.1%。80db 纹波抑制比。输出短路保护。过流、过热保护。调整管安全工作区保护。标准三端晶体管封装。本系统选用lm317做为变压电路。4硬件电路设计4.1硬件总体结构本系统在硬件电路设计时主要从以下原则出发: 44.1.1硬件电路设计与软件设计相结合优化硬件电路一些由硬件实现的功能可用软件来实现,反过来一些由软件实现的功能也可用硬件来完成。用软件来实现硬件的功能时,其响应时间比用硬件实现长,还要占用cpu 时间。但是用软件实现硬件的功能可以简化硬件结构,提高硬件电路的可靠性,还可降低成本。因此在本系统的设计过程中,在满足可行性和实时性的前提下尽可能地将硬件功能用软件来实现。4.1.2可靠性及抗干扰设计根据可靠性设计理论,系统所用芯片数量越少,系统的平均无故障时间越长,而且所用芯片数量越少,地址数据总线在电路板上受干扰的可能性就越少,因此单片机基本系统的设计思想是在满足功能的情况下力争使用较少数量的芯片。4.1.3灵活的功能扩展一次设计往往不能完全考虑到系统的各个方面,系统需要不断完善,需要进行功能升级。功能扩展时系统应该在原有设计不需要很大改变的情况下,修改软件和少量硬件甚至不修改硬件就能完成。功能扩展是否灵活是衡量一个系统优劣的重要指标。根据系统要求及上面几个硬件设计原则,系统以单片微机stc为中央处理单元,由传感元件,测量电桥,放大电路,数字显示,声光报警,信号输出,自校准电路等单元电路组成。下面对主要的电路设计做详细介绍。4.2 传感器信号放大电路由于传感器输出的信号比较微弱而且带有很多的干扰信号,我们需要设计一个放大电路来放大传感器输出的信号并能消除干扰信号的影响。lm324系列器件为价格便宜的带有真差动输入的四运算放大器。与单电源应用场合的标准运算放大器相比,它们有一些显著优点。因此我们选用lm324来设计放大电路。电路图如图4所示。图4 传感器信号放大电路4.3变压电路lm317 是美国国家半导体公司的三端可调正稳压器集成电路。lm317 的输出电压范围是1.2v至37v,负载电流最大为1.5a。它可以很好的满足传感器的工作要求。它的使用非常简单,仅需两个外接电阻来设置输出电压。此外它的线性调整率和负载调整率也比标准的固定稳压器好。lm317 内置有过载保护、安全区保护等多种保护电路。所以我们选用lm317来设计变压电路。电路图如图5所示。图5 变压电路4.4时钟电路5 系统时钟是一切微处理器,微控制器内部电路工作的基础,振荡周期和时钟周期又决定了cpu 的时序。单片机内部有一个自激振荡电路,可以通过内部自激振荡或外部提供振荡源这两种方式,驱动内部时钟电路产生系统时钟信号。本系统选用外部振荡源。为适应信号采集以及转换等功能的要求选择24mhz的晶振。电路图如图6所示。图6 时钟电路4.5 led显示电路6 本文所要求显示接口电路完成四位十进制数字的显示。由于stc12c5a60s2单片机不可以直接驱动数码管,我们需要接外围电路,可将stc12c5a60s2单片机的p0端口(并行从动端口)的p0.0-p0.7作为显示器的数据bcd码传送端口。用p2.0端口的p2.0-p2.3作为的地址线,分别选中不同的led数码管。数据显示的过程是首先由p2.0, p2.1, p2.2,p2.3确定当前要选中的数码管,然后p0将相应位要显示的数字送入对应的数码管显示。电路图如图7所示。图7 led显示电路4.6 声光报警电路在单片机控制系统中,一般的工作状态可以通过指示灯或数码显示来指示,以供操作员参考。但对于某些紧急状态或反常状态,为了使操作人员不致忽视,以便及时采取措施,往往还需要有某种更能引人注意提起警觉的报警信号。这种报警信号通常有三种类型:闪光报警,鸣音报警,语音报警。本系统的报警电路包括闪光报警和鸣音报警两种方式所。电路图如图8所示图8 声光报警电路4.7 红外遥控部分7 红外遥控就是利用红外遥控器产生的红外线作为空间传递遥控信息的媒介,从而实现对被控设备的各种遥控操作。它是一种电能光能-电能的一种光控方式。在近距离遥控中,红外遥控体现出许多优点。如抗干扰能力强、体积小、外形美、成本低等。随着集成电路的发展和新产品的不断出现,特别是红外专用集成电路及通用低功耗集成电路的广泛应用,为红外线遥控装置性能的提高体积的减小成本的降低均创造了十分有利的条件,使红外遥控技术得到了广泛的应用。为了缩短开发周期,我们采用普通彩电遥控器来调节瓦斯传感器,无需设计专用的遥控器。根据原遥控器按键布置和瓦斯传感器的具体要求,重新设计面板即可实现对瓦斯传感器的零点、量程、报警点、断电点等参数的遥控操作。电路图如图9所示。图9 红外控制5 系统软件设计8随着现代技术的发展,智能传感器正逐步走向成熟,它的主导思想是利用软件代替和简化硬件,利用基本的硬件电路和软件技术达到系统多功能集成,容易修改的要求。本文在前文搭建了一个较为简单的硬件电路,系统功能的主要实现是依靠软件的设计来完成的。本系统的软件采用模块化设计,将系统分为若干个模块,分别实现各项功能,这样在系统软件的调试过程中,各个模块的独立调试有助于问题的发现和解决,在一定程度上节约了程序的调试时间。本系统的软件设计是用stc12c5a60s2的c语言在keilc编程软件里运行,调试,完成的。本文所述系统的软件主要包括:初始化与自检子程序,数据处理子程序, led 显示子程序,红外遥控译码子程序,。整个系统的功能分析如图10所示。下面就将各主要程序逐一介绍。并对ad转换子程序,数据处理子程序,led 显示程序进行详细的介绍。数据上传浓度显示开机自检功能设置断电控制浓度获得浓度报警掉电报警led显示功能选择参数设置a/d转换换浓度计算遥控接收参数更改功能显示断电控制量程调整零点调整报警设置led显示main 图10 系统功能分析图ma5.1 单片机程序设计的特点采用单片机c语言编程具有很多的优越性。就算不懂得单片机的指令集,也能够编出完美的单片机程序,无须懂得单片机的具体硬件,也能够编出符合硬件实际的专业水平的程序,不同函数的数据实行覆盖,有效利用单片机上有限的ram 空间,程序具有坚固性,数据被破坏是程序运行异常的重要因素,c语言对数据进行了许多工业性的处理,避免了运行中间非异步的破坏,c语言提供复杂的数据类型(数组,结构体,联合,枚举,指针等),极大地增强了程序处理能力和灵活性,提供了多种数据存储类型和专门针对8051的data、idata、pdata、xdata、code等存储类型,自动为变量合理分配地址,提供small,large等编译模式,以适应芯片上存储器的大小,中断服务程序的现场保护和恢复,中断向量的地址是直接跟单片机相关的都由c编译器代办:提供常用的标准函数库,以供用户直接使用,头文件中定义的宏,说明复杂数据类型和函数原型,有利于程序的移植和支持单片机的系列化和产品的开发有严格的句法检查,错误很少且很容易在高级语言的水平上迅速地被排掉,提高运行的安全性9。按照可靠性理论10,程序设计最主要任务是确保应用程序按照给定的顺序有序地运行。有序地运行的基础是硬件的可靠性,可靠性高的硬件基础可以保证不会出现硬件系统故障:但是,在工业现场使用时,大量的干扰源虽然不会造成单片机系统硬件的破坏,却常常会破坏数字信号的时序,更改单片机寄存器内容,导致程序跑飞或进入死循环.因此在提高硬件可靠性的基础上必须在程序设计中采取措施,提高软件的可靠性,减少软件错误的发生以及在发生软件错误的情况下仍然能使系统恢复正常运行。可软件的可靠性问题常常容易被人们忽视。随着单片机测控系统越来越复杂,工作环境干扰越来越严重,软件可靠性问题逐渐为人们所重视。软件的可靠性问题虽然和硬件的可靠性问题不尽相同,在基于单片机的测控系统中软件的重要性与硬件是处于相同等重要的地位。单片机测控系统本身对程序设计的要求除了可靠,易理解,易维护,准确和可测试外,温度采集系统在软件设计时还提出了以下要求:(1)容错性 :在工业控制中,由于单片机测控系统所处的环境比较恶劣,常存在于干扰源如环境温度,电场,磁场等。使数据采集不可靠控制失灵或程序运行失常,当发生这些错误或故障时,测控软件要能够不受影响,从错误或故障中恢复,保证系统的正常工作。(2)实时性:实时性是测控系统的普遍要求,即要求系统及时响应外部事件的发生并及时给出处理结果。随着电子技术的飞速发展,硬件的集成度与速度却不断提高。因此这就要编写相应的测控软件来满足实时性要求.在工程应用程序设计中,采用汇编语言比高级语言更具有实时性。(3)足够的时序裕度:时序是程序设计中必须考虑的问题。系统在中心控制下,实现分时操作,在非握手控制下,程序运行完全依靠时序调度,切换控制,这就要求在编写程序时,不仅要时序正确,而且要有足够的时序裕度。5.2 系统初始化子程序系统初始化子程序主要有三个部分组成:控制端口的初始化,a/d转换的初始化以及其他功能的初始化。控制端口的初始化:stc12c5a60s2的数字或模拟输入/输出模块大多数是基本功能和一般i/o口复用。初始化的主要目的是划分基本的功能和i/o口以及输入输出口的数据传输方向。a/d转换的初始化:设置触发方式,在什么情况下开始/结束转换,转换通道的设定,转换时钟的预标定。5.3 系统参数设定子程序在首次开机时,需要对零点,量程,报警点,断电点,等参数进行初始化设置。在对传感器进行校准后,这些参数就要进行相应的修改,修改后的参数存入e2prom中,而在非首次开机则是读取e2prom中的参数值。5.4 自检子程序自检子程序模块主要为故障诊断功能所设计的,一般检测电压值,也就是短路和断路以及单片机死机的状态,自检子程序模块主要对如下进行检测:电源、a/d转换、单片机的工作状态,如果在检测的过程中故障,除了做应急的反应外还应该通过简单的故障方式进行指示。对单片机运行情况的监测主要通过wdt看门狗来实现,在程序的开始部分将预分频器划归wdt使用,同时在主程序的主体部分增加了一条看门狗清零,(俗称喂狗)指令,主程序执行一圈的时间远远小于看门狗的超时溢出周期,因此,能够保证在单片机按照主程序规定的正常循环路线执行时,看门狗不发生超时溢出。当程序失控时,单片机跳出或偏离了安排有看门狗清零指令的正常循环路径,无法对看门狗按时清零,致使看门狗产生溢出复位信号,进而迫使单片机复位。5.5 数据处理子程序数据处理子程序包括a/d转换子程序,二级滤波子程序,零位漂移自校准子程序,非线性自校准子程序四部分。5.5.1 a/d转换子程序(1) a/d转换器的结构stc12c5a60ad/s2系列单片机带a/d转换,它的a/d转换口在p1口 (p1.0-p1.7),有8路10位 高速a/d转换器,速度可达到250khz(25万次/秒)。8路电压输入型a/d,可做温度检测、电池电压检测、按键扫描、频谱检测等。上电复位后p1口为弱上拉型i/o口,用户可以通过软件设置将8路中的任何一路设置为a/d转换,不需作为a/d使用的口可继续作为i/o口使用。stc12c5a60s2系列单片机adc(a/d转换器)的结构如图11所示 : 图11 adc(a/d转换器)的结构图当auxr.1/adrj = 0时,a/d转换结果寄存器格式如下: 当auxr.1/adrj = 1时,a/d转换结果寄存器格式如下:stc12c5a60s2系列单片机adc由多路选择开关、比较器、逐次比较寄存器、10位dac、转换结果寄存器(adc_res和adc_resl)以及adc_contr构成。stc12c5a60s2系列单片机的adc是逐次比较型adc。逐次比较型adc由一个比较器和d/a转换器构成,通过逐次比较逻辑,从最高位(msb)开始,顺序地对每一输入电压与内置d/a转换器输出进行比较,经过多次比较,使转换所得的数字量逐次逼近输入模拟量对应口。逐次比较型a/d转换器具有速度高,功耗低等优点。从上图可以看出,通过模拟多路开关,将通过adc07的模拟量输入送给比较器。用数/模转换器(dac)转换的模拟量与本口输入的模拟量通过比较器进行比较,将比较结果保存到逐次比较器,并通过逐次比较寄存器输出转换结果。a/d转换结束后,最终的转换结果保存到adc转换结果寄存器adc_res和adc_resl,同时,置位adc控制寄存器adc_contr中的a/d转换结束标志位adc_flag,以供程序查询或发出中断申请。模拟通道的选择控制由adc控制寄存器adc_contr中的chs2 chs0确定。adc的转换速度由adc控制寄存器中的speed1和speed0确定。在使用adc之前,应先给adc上电,也就是置位adc控制寄存器中的adc_power位。当adrj=0时,如果取10位结果,则按下面公式计算:当adrj=0时,如果取8位结果,按下面公式计算:当adrj=1时,如果取10位结果,则按下面公式计算:式中,vin为模拟输入通道输入电压,vcc为单片机实际工作电压,用单片机工作电压作为模拟参考电压。(2) 与a/d转换相关的寄存器stc12c5a60s2系列单片机a/d转换相关的寄存器列于下表所示。1) p1口模拟功能控制寄存器p1asfstc12c5a60s2系列单片机的a/d转换通道与p1口(p1.7-p1.0)复用,上电复位后p1口为弱 a/d转换通道与p1口(p1.7-p1.0)复用,上电复位后p1口为弱 通道与p1口(p1.7-p1.0)复用,上电复位后p1口为弱 p1口(p1.7-p1.0)复用,上电复位后p1口为弱 复用,上电复位后p1口为弱 ,上电复位后p1口为弱上拉型i/o口,用户可以通过软件设置将8路中的任何一路设置为a/d转换,不需作为a/d使用的p1口可继续作为i/o口使用(建议只作为输入)。需作为a/d使用的口需先将p1asf特殊功能寄存 (建议只作为输入)。需作为a/d使用的口需先将p1asf特殊功能寄存 。需作为a/d使用的口需先将p1asf特殊功能寄存器中的相应位置为1,将相应的口设置为模拟功能。p1asf寄存器的格式如下: p1asf : p1口模拟功能控制寄存器(该寄存器是只写寄存器,读无效) )当p1口中的相应位作为a/d使用时,要将p1asf中的相应位置1.2)adc控制寄存器adc_contradc_contr寄存器的格式如下:adc_contr : adc控制寄存器adc_power:adc电源控制位。 0:关闭a/d转换器电源; 1:打开a/d转换器电源.建议进入空闲模式前,将adc电源关闭,即adc_power=0。启动a/d转换前一定要确认a/d电源已打开,a/d转换结束后关闭a/d电源可降低功耗,也可不关闭。初次打开内部a/d转换模拟电源,需适当延时,等内部模拟电源稳定后,再启动a/d转换。建议启动a/d转换后,在a/d转换结束之前,不改变任何i/o口的状态,有利于高精度a/d转换,若能将定时器/串行口/中断系统关闭更好。speed1,speed0:模数转换器转换速度控制位stc12c5a60s2系列单片机的a/d转换模块说使用的时钟是内部r/c振荡器所产生的系统时钟,不使用时钟分频寄存器clk_div对系统时钟分频后所产生的供给cpu工作所使用的时钟.好处: 这样可以让adc用较高的频率工作,高a/d的转换速度 这样可以让cpu用较低的频率工作,降低系统的功耗adc_flag:模数转换器转换结束标志位,不管是a/d转换完成后由该位申请产生中断,还是由软件查询该标志位a/d转换是否结束,当a/d转换完成后,adc_flag = 1,一定要软件清0。 adc_start:模数转换器(adc)转换启动控制位,设置为“1”时,开始转换,转换结束后为0。chs2/chs1/chs0:模拟输入通道选择,chs2/chs1/chs0程序中需要注意的事项:由于是2时钟,所以,设置adc_contr控制寄存器后,要4个空作延时才可以正确读到adc_contr寄存器的,原因是设置adc_contr控制寄存器的语句行后,要经过4个cpu时钟的延时,其才能够保证被设置进adc_contr控制寄存器. adc_contr = adc_power | adc_speedll | adc_start; _nop_(); /适当延时,使ad转换电源完全打开 _nop_(); _nop_(); _nop_();3) a/d转换结果寄存器adc_res、adc_resl特殊功能寄存器adc_res和adc_resl寄存器用于保存a/d转换结果,其格式如下:auxr1寄存器的adrj位是a/d转换结果寄存器(adc_res,adc_resl)的数据格式调整控制位.当adrj=0时,10位a/d转换结果的高8位存放在adc_res中,低2位存放在adc_resl的低2位中。 此时,如果用户需取完整10位结果,按下面公式计算:如果用户只需取8位结果,按下面公式计算:式中,vin为模拟输入通道输入电压,vcc为单片机实际工作电压,用单片机工作电压作为模拟参考电压。当adrj=1时,10位a/d转换结果的高2位存放在adc_res的低2位中,低8位存放在adc_resl中。 此时,如果用户需取完整10位结果,按下面公式计算:式中,vin为模拟输入通道输入电压,vcc为单片机实际工作电压,用单片机工作电压作为拟参考电压。4)与a/d中断有关的寄存器ie : 中断允许寄存器(可位寻址)ea : cpu的中断开放标志,ea=1,cpu开放中断,ea=0,cpu屏蔽所有的中断申请。ea的作用是使中断允许形成多级控制。即各中断源首先受ea控制;其次还受各中断源自己的中断允许控制位控制。eadc : a/d转换中断允许位。 eadc=1,允许a/d转换中断; eadc=0,禁止a/d转换中断。iph : 中断优先级控制寄存器高(不可位寻址)如果要允许a/d转换中断则需要将相应的控制位置1:将eadc置1,允许adc中断,这是adc中断的中断控制位。将ea置1,打开单片机总中断控制位,此位不打开,也是无法产生adc中断的a/d中断服务程序中要用软件清a/d中断请求标志位adc_flag(也是a/d转换结束标志位)。iph : 中断优先级控制寄存器高(不可位寻址)ip : 中断优先级控制寄存器低(可位寻址)padch, padc: a/d转换中断优先级控制位。当padch=0且padc=0时,a/d转换中断为最低优先级中断(优先级0) 当padch=0且padc=1时,a/d转换中断为较低优先级中断(优先级1) 当padch=1且padc=0时,a/d转换中断为较高优先级中断(优先级2) 当padch=1且padc=1时,a/d转换中断为最高优先级中断(优先级3)(3) a/d转换模块的参考电压源stc12c5a60s2系列单片机的参考电压源是输入工作电压vcc,所以一般不用外接参考电压源。如7805的输出电压是5v,但实际电压可能是4.88v到4.96v,用户需要精度比较高的话,可在出厂时将实际测出的工作电压记录在单片机内部的eeprom里面,以供计算。如果有些用户的vcc不固定,如电池供电,电池电压在5.3v-4.2v之间漂移,则vcc不固定,就需要在8路a/d转换的一个通道外接一个稳定的参考电压源,来计算出此时的工作电压vcc,再计算出其次几路a/d转换通道的电压。如可在adc转换通道的第七通道外接一个1.25v(或1v,或)的基准参考电压源,由此求出此时的工作电压vcc,再计算出其它几路a/d转换通道的电压(理论依据是短时间之内,vcc不变)。(4)由于本系统中只有一个模拟量需要进行a/d转换,a/d转换子程序依照以下步骤进行:1)设置adc模块;2)开放a/d中断功能,开放相应的中断使能位;3)等待所需要的采样时间;4)将控制位兼状态位置1,启动a/d转换过程;5)等待a/d转换完成;6)读取相应的a/d转换结果寄存器送入指定地址进行处理;详细见图3.11所示流程图及程序。 开始打开a/d转换电源开始a/d转换a/d转换设置为:360clocks,一路a/d 通道设置输入端口a/d转换是否结束写a/d转换结果到指定的寄存器图11 a/d转换子程序流程图a/d转换子程序:#include#includeunsigned int d;void initadc();void getadcresult();/*定义与ad转换有关的特殊功能寄存器 */ sfr adc_contr = 0xbc; /定义adc控制寄存器sfr adc_res = 0xbd; /定义adc高8位转换结果寄存器sfr adc_resl = 0xbe; /定义adc低2为转换结果寄存器sfr p1asf = 0x9d; /定义p1口模拟功能控制寄存器 /*定义 adc_contr各位*/ #define adc_power 0x80 /定义adc电源控制位#define adc_flag 0x10 /定义adc转换结束标志位#define adc_start 0x08 /定义adc转换开始控制位#define adc_speedll 0x00 /定义adc转换周期540 clocks #define adc_speedl 0x20 /定义adc转换周期360 clocks#define adc_speedh 0x40 /定义adc转换周期180 clocks#define adc_speedhh 0x60 /定义adc转换周期90 clocks/*ad换初始化函数*/ void initadc() unsigned int n; p1asf = 0xff;/打开模拟功能控制寄存器p1口为模拟量输入口 adc_res = 0; /清空ad转换结果寄存器(高8位) adc_resl = 0; /清空ad转换结果寄存器(低2位) adc_contr = adc_power | adc_speedll;/打开ad转换电源并选择ad转换的速度 for(n=10000;n0;n-);/适当延时,使ad转换电源稳定/*取ad转换的结果函数*/void getadcresult() adc_contr = adc_power | adc_speedll | adc_start; _nop_(); /适当延时,使ad转换电源完全打开 _nop_(); _nop_(); _nop_(); while(!(adc_contr & adc_flag); /等待ad转换结束 adc_contr &= adc_flag; /关闭ad转换结束标志位 d=(adc_res*4+adc_resl); /取ad转换结果 5.5.2 数字滤波a/d转换之后的随机误差主要是由窜入单片机的随机干扰引起的,虽然这种误差不能在硬件予以根除,但在多次测量中符合统计规律。另外由于包括传感器在内的各测量环节硬件本身的固有误差,往往达不到测量的精度,在这种情况下,可以采取数字滤波的方法。数字滤波就是按统计规律用软件来消除随机误差的算法,具有成本低,可靠性高,滤波稳定的特点,而且通过修改滤波程序和运算参数,即可改变滤波特性。常采用的数字滤波方法主要有26:(1)算术平均值法算术平均值法是最简单的数字滤波,只要选择合理的采样次数(一般20),就可以有效地滤除低频纹波。其缺点是对于明显的不合理数据(如在慢变化参数的采集中因干扰引起的突变信号)也被平均在结果中,使数据的准确性降低。弥补的办法是提高n,但将加长采集数据的时间,影响系统实时处理的能力。(2)移动式算术平均法能有效地提高n次采样求平均值的速度。这种方法要求n取2的幂,并在存储器中设立一个放n个数据的缓冲区,采集的数据存储缓冲区以后,每采集一个新数据时,就淘汰掉原n个数据中最老的,然后求和及平均值。这样就使滤波处理的速度提高了n-1倍。此法适合应用在采集缓慢变化的模拟量系统中。由于n为2的幂,所以求均值只需做右移操作。(3)中值法要求对同一点连续采样3次,进行比较后取中间值作为该点的测量值。它能消除脉冲型的干扰。(4)竞赛评分法类似于某些体育比赛中的评分方法,即去掉一个最高分和一个最低分,然后取其余评分的平均值。这种方法兼有中值法和算术平均值法的特点,但要求编一个对n个数的排序程序。(5)超值滤波法对于某些变化缓慢和较均匀的物理量,如温度,加速度等,每次采样值与前一次采样值作比较,差值若远超出可能的变化范围,便可认为是干扰引起的,则丢弃此值,用前一次采样值代替。若干扰持续地作用在采样回路则可发出故障信息,查找干扰或对数据作适当的处理。经过比较本系统软件采用了移动式算术平均法,以克服随机误差对最终读数的影响。将n设为32,即求32次的移动平均值,但仍然发现数据变化太快,随后改为两层移动算术平均法滤波,这样才起到了很好的稳定读数的作用。滤波子程序:#include#include#define n 32 unsigned char value_bufn;unsigned char i=0;/*滤波函数*/char filter() unsigned char count; unsigned int sum=0; value_bufi+=d;/d为每次a/d转换的结果 if (i = n) i=0;for ( count=0;count sum+ = value_bufcount;/32个转换值相加return (char)(sum/n);/返回结果5.5.3 零位漂移自校准传感器及外围电路受外界环境影响会产生一定漂移, 长时间工作受老化等环境变化因素影响就可能产生较大的零点漂移。为了使系统在长时间工作后仍能够精确读数,在软件中使用了零位漂移自校准方法。当系统工作稳定后我们可以通过红外遥控把测得的浓度减去或加上一个数,使当浓度为零时显示也为零,从而达到零位漂移校准的目的。5.6 led显示子程序5.6.1 led介绍led 即发光二极管,它是一种由某些特殊的半导体材料制作成的pn结,由于掺杂浓度很高,当正向偏置时,会产生大量的电子一空穴复和,把多余的能释放变为光能。 led显示器具有工作电压低、体积小、寿命长(约十万小时)、响应速度快,颜色丰富等特点。led的正向电压降一般在1.2-2.6v,发光工作电流在5ma-20ma。七段led显示器由数个led组成一个阵列,并封装于一个标准的外壳中。为适用于不同的驱动电路,有共阳极和共阴极两种结构。本文采用的是共阴极结构。为了显示某个数或字符,就要点亮对应的段,这就需要译码。译码有硬件译码和软件译码。硬件译码电路的优点是计算机时间开销比较小,但硬件开支大。软件译码与硬件电路相比,省去了硬件译码器。其bcd码转换为对应的段码这项工作由软件来完成。表3.1显示的就是共阳极情况下段码与数字、字母的关系。字符共阳极段码字符共阳极段码字符共阳极段码0c0h592ha88h1f9h682hb83h2a4h7f8hcc6h3b0h880hda1h499h990h灭ffh表3.1 led段码与字符的关系5.6.2七段led的显示按照显示的方式,七段led数码管显示有静态显示和动态显示之分。在静态显示系统中,每位显示器都应有各自的锁存器、译码器与驱动器。用以锁存各自待显示数字的bcd码或反码。因此静态显示系统在每一次显示输出后能够保持显示不变,仅在待显示数字需要改变时,才更新其数字显示器中锁存的内容。这种显示占用机时少,显示稳定可靠。缺点是,当显示的位数较多时,占用的器件也较多。在采用动态显示的系统中,微处理器或控制器应定时地对各个显示器进行扫描,显示器件分时轮流工作,每次只能使一个器件显示,但由于人的视觉暂留现象,仍感觉所有的器件都在同时显示。此种显示的优点是使用硬件少,占用1/o口少。缺点是占用机时长,只要不执行显示程序,就会立即停止显示。本文采用了动态显示模式。用p2口的p2.0,p2.1,p2.2,p2.3端口选择相应的位,用p0口的p0.0,p0.1, p0.2, p0.3, p0.4 p0.5, p0.6, p0.7端口选择相应的段。其流程图和程序清单如图3.12所示:led显示子程序流程图程序清单:#include#includeunsigned char duanxuan10=0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f;unsigned char weixuan4=0xfe,0xfd,0xfb,0xf7;void delay();void jisuan(unsigned int s);/*数显延时函数*/void delay() unsigned char i,j;

温馨提示

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

评论

0/150

提交评论