(40,41H)+PRISEH→(44,45H)(42,43H)+PRISEL→(46,47H)(44,45H)>(42,43H)?是(44,45H)<(46,47H)?是F_COMP=0否否F_COMP=1 返回
图5-3 频率比较程序流程图
否SET==0?是ADD==0?否DEC==0?是PRISEN+4→PRISEHPRISEL+1→PRISEL是返回DEC==0?否是PRISEN+4→PRISEHPRISEL+1→PRISEL是ADD==0?否
图5-4 精度设置程序流程图
5.2数据处理与显示模块设计
1)液晶显示
液晶显示模块是严格按照产品操作的时序图编写的驱动函数,共分为两大类函数,指令的读写和数据的读写,只要将操作位和数据位按照时序严格的结合在一起就可以完成数据的显示。用户只需要调用封装好的显示函数:DisplayOneChar(显示单个字符)、DisplayListChar(显示一个字符串)、
22
Displayarray(显示一字符数组)。
2)键盘接受
键盘是输入设备,用它来实现人机交互,让机器更好的按人的要求去工作。这里引入键盘的目的是,1进行金属探测精度的设置;2在进行数据通讯时进行控制。由于键盘普遍存在抖动现象,如果抖动现象处理不好,会发生意想不到的结果。为了防止抖动,在程序设计中采用了,一次键位判断,两次键位检测的方法,每一步骤间隔5ms,每次键位确定需要15ms,在检测与接受过程中每一步骤出现错误都将从新开始验证,因此保证了对用户输入的无误接受。键盘接受模块的程序流程图如图5-5所示。
3)键盘处理模块
键盘处理模块在判断是哪个键按下后,就立即引发相关的操作来满足用户的需求。同时键盘处理模块也展现出了系统提供给用户的所有功能。精度设置部分程序流程图如图5-6所示。
是ON/OFF按下?否F_OK==1?SET按下?否是ADD按下?否是DEC按下?否OK按下?否是CANCEL按下?否F_SET==1?否是F_SET==1?否是n_plus=0返回F_SET==1?否是发送设置结果F_SET==1?否是n_plus--是n_plus++是F_SET=~F_SET是F_START=~F_START建立连接否F_SET=0n_plus=0
图5-5 键盘接受处理程序流程图
23
SET=0延时否F_OK==1?是F_OK=0在ADD口发送n_plus个脉冲在DEC口发送-n_plus个脉冲是n_plus>0?否是n_plus<0?否SET=1延时否F_OK==1?是F_OK=0设置成功设置失败返回
图5-6 设置数据与前端单片机的通讯图
24
第6章 实现与性能分析
前面所有的准备都是为这一阶段作准备,这一部分的内容也将是最重要,最烦琐,最能考验人意志的。首先你需要来回奔走于电子市场,去准备器件,一次是绝对不会准备好所有的器件的,因为在调试时时常会发生与你预想的结果不一致的情况,或许在这个阶段你还要进行方案的局部修改,我就是这样。其次,调试工作考验人的细心与耐心,梢有不甚就可能烧毁器件,比如将单片机接反、电解电容接反、电源线接反、器件管脚焊接不对、电路板短路等等一系列由于不细心造成的后果。然而这个阶段也是最锻炼人的阶段,这一部分的经历将最深刻最让人难以忘怀。因为在没有登山之前你绝对体会不到登山的滋味,只有亲自爬一次山你才会体会到什么是爬山,而这个时候任何人对爬山的描述对你来说也都不重要了,这一阶段就好比爬山,道路越艰险,最后的成就感越大。
6.1 硬件电路焊接与调试
硬件电路的调试我分为四个阶段:振荡电路的焊接与调试、脉冲转换电路的焊接与调试、单片机处理系统的焊接与调试和外围单片机系统的焊接与调试。 6.1.1振荡电路的焊接与调试 1)所需器件
面包板一个、三极管(cs9014)一个、10μf偶合电容两个、47μf旁路电容一个、谐振电容0.22μf和0.47μf各一个、自绕电感线圈一扎、33K、20K、1.3K、2K电阻各一个。
2)电感绕制
选用半径为0.31mm的漆包线,绕成半径为3cm的线圈,绕制20圈。在电感测量仪上测量其电感值大约在500μf左右,用手使线圈间距边小,线圈的电感值会相应的增大,最后用胶带纸将线圈缠在一起使它们之间的间距相对固定,这样电感值保持在500μf,误差在10μf以内。
3)调试
所有的器件准备好并焊接在面包板上,按照电路图检查各器件件的连接情况
25
无误后,进行上电调试。振荡电路的起振都没有问题,可以产生幅值越为0.2V、频率接近33KHz的正弦波。
4)出现的问题与解决方法
(1)可以产生稳定的正弦波,频率符合,但是幅值偏小。将C1(0.47μf)、C2(0.22μf)的两个谐振电容进行调换以后,正弦波的幅值明显增加,增为0.5V,频率不变。
(2)信号的直流分量不是一个固定的值而是在2.0V~2.4V之间进行周期性的变化,先从2.4V减到2.0V,再变为2.4V就这样周期性的变化。这个问题是在信号放大部分解决的。
6.1.2 放大电路与脉冲转换电路的焊接与调试
这一部分多为集成电路只需按照放大电路的要求进行连接连接就可以。
1)所需器件
面包板与上面共用,LM358(内置两个放大器)一片、74LS08(内置4个与门)一片、10μf铝电解一个、5K、500K电阻各一个。
2)调试
振荡电路产生的正弦波不能直接进行脉冲波的变换,因为它的幅值太小,所以必须经过放大电路的放大。由于上面出现的电压不稳定问题,因此这里的放大电路只对信号的交流分量进行无穷放大。信号经电压跟随器进入LM358的反向端,同向端与反向端之间接一5K的电阻,而同向端则通过分压器分得与反向端成固定比例的电压。这样可以使同向与反向之间要进行差分放大的部分保持相对不变。在加上在同向端并联一10μf的旁路电容,它可以短路交流信号,因此同向端可以保持一个固定的直流分量,而交流分量通过差分放大器进行无穷次的放大。信经此放大电路后变换为与前面正弦波频率相等的梯形波幅值为3.7V,如图3-1。转换为幅值为3.7V梯形波后,在将其转换为单片机可以处理的脉冲波就相对容易了。简单的处理就是通过一TTL门电路,TTL门电路可以将逻辑运算的结果转换为TTL电平(5V),这里选用的是74LS08(与门),当然史密特出发器,其它的门电路都可以完成这样的转换。将与门的一端接入5V电源另一端接放大电路的输出端。转换的结果如图5-3所示。
26