论文金属探测器(8)

2019-04-22 21:21

(1)在用MCS—51编写程序时,立即寻址时,一定要在立即数前加“#”否则的程序将以直接寻址的方式对待,造成不可预料的错误。

(2)频率测定时要不停的使用定时器,因此不停的要引发定时器中断,在编程的过程中曾经出现过定时器中断处理程序只能被引发一次,而后面即使发生中断,也不会执行中断处理程序的现象。结果发现原来是将RETI写为RET的原因,RETI除了执行RET的指令功能外,还清除内部响应的中断状态寄存器因此中断服务子程序必须以RETI为结束指令。

(3)写延时指令时需小心死循环。此次调试过程中曾经出现过这样的情况,开始不知道问题的原因所在,最后在每一步设标志才找出原因。

5)定时计数器的使用介绍

定时器的结构图如图6-1[9]所示,其中TCON用于控制定时/计数器T0和T1的启动和停止,同时包含定时/计数器的状态,它属于特殊功能寄存器其内容靠软件设置,系统复位时寄存器的所有位都被清零。定时计数器的工作方式是在TMOD寄存器中设置的,TMOD

微处理器CPUTH1TL1TH0TL0TCONTCON 图6-1 定时/计数器原理框图

和TCON的格式如图6-2[9]所示,模式设置组合如表7-1[9]由于这里只用到方式1所以对方式1加以说明,方式1的结构如图6-3[7]所示,方式1为计数器THX作为高8位TLX作为低8位,定时时间=(216-T0初值)×时钟周期×12[7],因此要定时50ms需给定时器T0的初值为D8F0H。

TCONTMODTF1GATETR1C/TTF0M1TR0M0IE1GATEIT1C/TIE0M1IT0M0

32

图6-2 定时/计数器的控制字格式

表6-1 模式设置组合

M1 0 0 1 1 M0 0 1 0 1 功能选择 方式0,13位定时/计数器 方式1,16位定时/计数器 方式2常数自动装入寄存器 仅适用于T0,分为两个8位计数器,对T1停止计数

图6-3 T0定时计数器的工作原理图 6.2.2 外围数据处理与显示模块的调试与集成

这一部分的程序是用C语言来写的,原因是这一部分的程序量,大倾向与数据处理而非底层的电路控制。

1)键盘模块的调试

键盘模块包括键盘输入的接收和键盘输入的处理,两个部分相互依赖。键盘接收部分采用了软件防抖动技术其基本原理如图7-4所示。

2)出现的问题

按键在按下的瞬间,它不是产生一个完整的脉冲信号,而是带有无数个毛刺的信号序列,要是不加防抖动处理或是防抖动处理的不好,那么程序接收到的将是按键多次按下,这样会产生意想不到的错误。在外围处理模块有一个精度设置模块,一个精度“加”按钮,一个精度“减”按钮,一开始程序的防抖动是这样

33

的,没有延时,只有行列值确定和一次校验,最后按下“加”键后,液晶上显示的数值从初始值一直往上加,按下减值后数值有一直往下减。最后加二次检验和延时后这种现象消失了。原因是改进后的代码每进行一次键位的确定都要经过3个步骤,每个步骤5ms,这三步骤必须同时满足,才能确定一个键位的按下,要是其中那一步出现了问题都会重新开始,这样就避免了很多干扰和脉冲中的毛刺。

确定行列延时5ms否行列确定成功?是检验一J1=R*3+C延时5ms否检验一通过?是检验二J2=R*3+C延时5ms否检验一通过?是JI==J2?是J=J1=J2J=7否返回

图6-4 防抖动键盘程序流程图

R:表示确定的行值;C表示确定的列值;J:最终确定键值;J1:第一次确定的

34

键值;J2第二次确定的键值;

6.3 系统性能分析

这里主要分析一下影响系统探测精度的因素以及提高探测精度的方法。 6.3.1 基准频率测定方法的优缺点分析

基准频率测定所使用的程序流程图如图6-2所示,由图可知基准频率不是一开始就设定的固定值,而是在系统开始运行时进行即时测定的。当然在振荡电路确定后系统的振荡频率也就固定下来,那么为什么不选用这个固定值作为基准频率?只能说这两个方案各有利弊吧,如果一开始就将基准频率固定,那么系统要做的是“绝对金属的测量”,意思是说,一旦遇见金属使得振荡电路的频率发生改变,用这个变化了的频率与固定的频率进行比较,如果超出了改变的范围则进行报警。但是如果遇见这种情况,在一堆同类型金属中检测别的类型的金属时这种法就不行,那就要用到“相对金属测量”也就是本次所使用的方法,是在系统运行是对频率进行确定。这样基准频率将随着环境的不同而变化,所以它探测金属的情况,是在当前环境中去检测金属的,所以可以辨别不同的金属。 6.3.2 金属探测的精度

金属探测器根据应用的不同,会有不同的精度要求,决定这一点的是金属探测器本身的设计与实现。这里只对本次毕业设计所做的金属探测器的精度进行讨论。对与本次设计的金属探测器影响它精度的有三方面因素,首先是振荡电路的振荡频率与幅值;其次是频率的测量;再次时频率变化范围的确定(这决定频率超过什么范围才进行报警)。振荡电路的频率与幅值,是有振荡电路本身的设计方案决定的,一经实现就无法改变,因此这里只对后两者进行讨论,先说频率的测量,频率测量的问题是说你多长时间的脉冲数作为进行比较判断的频率,这一点很重要,它直接影响着测量的精度,你选择10ms、20ms、和50ms为单位所测的值,对频率变化所反映的程度是不同的,例如10ms和50ms相差5倍,如果遇见某金属使振荡电路的频率增加20,那么用10ms做单位的则探测不到这种变化,而使用50ms的则可以探测到,也就是说所选用的时间段越长探测的精确度越高。下来

35

就是你在程序中设定的频率的变化范围,它用来报警,如果当前的振荡频率高出或低出基准频率某个值,那么就驱动蜂鸣器进行报警,很显然这个值设置的越大则探测的精度越小,用户也是通过这种方法来改变探测的精度的,他在键盘上增加或减小的值就是这个频率的变化范围。

36


论文金属探测器(8).doc 将本文的Word文档下载到电脑 下载失败或者文档不完整,请联系客服人员解决!

下一篇:北京欢乐水魔方攻略

相关阅读
本类排行
× 注册会员免费下载(下载后可以自由复制和排版)

马上注册会员

注:下载文档有可能“只有目录或者内容不全”等情况,请下载之前注意辨别,如果您已付费且无法下载或内容有问题,请联系我们协助你处理。
微信: QQ: