图4-4 前端金属探测部分单片机系统
4.4 外围设置与显示系统
图5-5就是外围设置与显示系统,它有三部分构成:键盘输入、液晶显示和单片机系统。
1)键盘输入
键盘采用的是2×3的按键阵列,如图5-6所示,该阵列键盘的工作原理是,
将两条行线和3条列线接入AT89S52的一组I/O双向接口(比如:P1的低5为),在程序中通过给行线和列线先后输入,高电平低电平、低电平和高电平
来判断是哪个按钮按下。例如给P1的低5位的电平信号为11000,假如现在第2个按钮按下则此时的管脚电平信号为01000,所以判断为第一行。再将P1的低5位置为00111,由于第2个按钮被按下,则此时的管脚电压为00101,所以可以判断是第2列,到此就可以判断是第1行第2列的按钮被按下了[10]。 2)液晶显示
引入液晶显示的目的主要是为了显示频率值、金属类型、精度设置时的一些提示语,其次,有了显示器对键盘的调试将更加方便。液晶显示的要求比较低,1602A内置有基本ASCII字符的显示编码,使用起来比较方便。且价格低廉可以满足需求。
17
3)单片机系统
单片机使用的是有8K容量FLASH的AT89S52,由于在这个模块要引进算法对数据进行再处理,在加上液晶和键盘的驱动程序,所以需要比较大的程序空间。
图4-6 阵列键盘原理图
图4-5 液晶显示器接线图
18
第5章 软件设计
硬件电路要完成的任务是,产生振荡,并将波形变换为能够被单片机处理的方波,接下来进行频率测定、报警、通讯等都要用程序实现最后烧入单片机。以下是各功能模块的软件设计。
软件模块是整个系统的灵魂,软件部分设计的好坏直接影响到系统的精度、可用性、方便性和智能性。好的软件上在实现系统功能的前提下尽可能的友好,方便用户的使用。金属探测器中的程序分为两个部分,前端软件模块和外围数据处理与显示模块,前端软件完成的是一些比较基础的工作,如振荡频率的检测,比较,报警等,它与底层的硬件关系比较密切所以采用汇编语言进行编写,而外围数据处理与显示模块是进行数据的再处理的,是更高一层的分析与判断,它直接处理由前端模块传过来的数据,对其进行处理显示。它的程序量比较大,包括键盘的驱动和液晶的驱动,所以选择模块性比较强的c语言进行编写,两个模块结合起来实现了一个更加方便、智能的数字金属探测器。
5.1软件设计
前端软件负责频率的测定、频率的比较、报警以及与外围模块的通信,程序流程图如图5-1所示。
1)频率获得
获得频率是通过定时器T0和计数器T1两个协同工作而完成的。程序中所使用的频率不论是基准频率还是新探测的频率,都是50ms内所获得的脉冲数。这对此次设计的手持式金属探测器已经足够了,要想提高精度,一是延长获得脉冲的时间,二是减小△PRISE(它是频率波动的范围,如果超出此范围则报警)。
2)获取基准频率
基准频率的获得至关重要,因为它一经获得将作为判断有无金属的基准。其值的可靠性将影响整个程序的健壮性。基准频率的获得是按照如下方法获得的,如图5-2所示。
19
初始化基准频率测定F_FR==1?是探测当前频率否F_COMM==1?是调用精度设置否频率比较否F_COMP==1是F_COMM==1?是发送频率否报警
图5-1 前端金属探测主程序流程图
F_COMM:标志是否进行通讯;F_COMP:标志比较的结果;F_FR:标志基准频率是否成功获得
F_FR:标志是否已经顺利获得基准频率。F_COMM:后台是否发送通信请求。F_OK:标志通讯已建立。F1:新获取的频率。F基准频率。
20
延时R0=10当前频率→F获得当前频率F1是F1-2 返回 图5-2 基准频率测定程序流程图 3)比较模块 比较模块的程序流程图如图6-3所示,比较模块比较重要,程序通过它它来判断是否要发出警报和发出什么样的警报,可以修改传入给它的参数来改变金属探测的精度。 4)精度设置模块 精度设置模块的程序流程图如图6-4所示,精度设置是通过改变传入给比较模块的△PRISEH,△PRISEL的值来改变精度的,如果△PRISEH,△PRISEL的值设置的都比较大则对微小的频率变化系统不会发出警报。 21