鉴于大家对电气工程与自动化类别十分关注,我们编辑小组在此为大家搜集整理了“基于单片机控制的金属探测器系统的设计过程和工作原理”一文,供大家参考学习
客服咨询,网学网竭诚为您服务,本站永久域名:myeducs.cn |
四 系统软件的设计 4.1 软件设计思想 软件是本系统的灵魂,在设计软件中,本文从系统的实用性、可靠性及方便灵活等几个方面出发,使程序满足设计的功能要求。整个系统的软件包括主程序、一个外部中断服务程序、数字滤波程序、比较判断子程序及发光报警等若干个子程序。软件采用汇编语言编写,并采用模块化设计,使程序结构清晰,便于今后进一步扩展系统的功能。 主程序初始化以后置位AT89C51的中断控制位EA,使CPU开放中断。然后通过检测RAM中30H中数值的值来判断是否采集基准电压,如果未采集过,则启动ADC0809对IN3通道的模拟输入量进行A/D转换。在电路设计中,ADC0809与AT89C51是采用中断方式连接的,所以系统的数据采集处理功能是在中断服务程序中完成的,从原理图看出,ADC0809的EOC端通过反相器接AT89C51的INT 1端,作为中断申请。采用中断方式,可大大节省CPU时间。软件编程允许AT89C51响应外部中断1,且设置其响应方式为边沿触发。当A/D转换完毕后,ADC0809的EOC端向AT89C51的INT1送入一个中断申请信号,AT89C51接此信号后响应中断请求,调用中断服务子程序INT1,中断服务程序进行压栈,保护现场,读取来自0809数据输出口的8位数字量,并将数字量储存到单片机RAM中,然后启动ADC0809的下一次转换。经过数据软件滤波之后将其存放在单片机RAM 30 H中,作为基准电压。 经反复实验测得的灵敏度△U的值被存放在单片机RAM地址为20H的存储器中。在检测过程中,将A/D转换器采集到的电压信号经数据软件滤波后存入内部RAM以31H的数据存储器中,然后将此数据U和基准电压进行比较,二者差值与灵敏度△U进行比较,以确定是否报警。 4.2数字滤波及算法说明 金属探测器的噪声抑制能力是金属探测器的主要设计指标。由于在采集电压量时经常会碰到各种瞬时干扰,,而硬件滤波一方面是电路比较的复杂,另一方面是电子元器件受外界环境的影响比较的大,可靠性低。因此本设计中采用算术平均滤波法,即在一次电压量的采集中,在很短的时间内对它进行4次采集,将它转换为数字量后求和,分析出4次输入中的最大值和最小值,然后减去最大值和最小值,除以2得到平均值的方法,完成一次数据采集的软件滤波。用软件代替硬件,从而省去了复杂的硬件,而且能够取得好而精确的效果。在一个采样周期内,对信号X的N次测量值进行算术平均,作为刻K的输出x(k),即 (4-1) 其中N为采样次数,x,为第i次的采样值。显然N越大,信号平滑度越高,灵敏度就会降低,但是本设计中需要较高的灵敏度,所以N取值不易过大,又因为汇编中运算比较麻烦,综合考虑取N=4。 4.3 系统主程序的功能 由于本系统中采集数据是利用中断来完成的,所以主要的判断程序主要是在中断服务子程序中完成,而主程序主要是完成初始化功能,一方面是清零将要使用的数据存储器,另一方面是完成响应外部中断1的中断控制,主要是开中断等。完成初始化之后,主程序就等待中断触发信号,以响应中断服务子程序。 MAIN: CLR P3.1 CLR P3.4 MOV SP,#60H MOV 20H,#28H MOV R1,#30H MOV R7,#0FFH MOV R0,#04H MOV 30H,#00H MOV 31H,#00H MOV R2,#00h MOV R3,#0FFH MOV R4,#00H MOV IE, #10000100B;开中断 SETB IT1 ;13 MOV DPTR,#0FEF3H ;启动A/D转换 MOV A,#00H MOVX @DPTR,A
4.4 子程序模块的设计 本系统的软件部分,除了初始化之外,主要的功能是在中断服务子程序中是实现的,主要的功能有数据采集,数字滤波子程序,判断子程序,声光报警子程序和数据数码管显示子程序等。 下面是简单的介绍一些主要的子程序,具体的程序见附录。 4.4.1 中断服务子程序 INT1: PUSH DPL PUSH DPH MOV DPTR,#0FEF3H MOVX A,@DPTR MOV R5,A LCALL SHZLB ;调用数字滤波子程序 CJNE R7,#00H,NEXT LCALL PDXSH ;调用判断显示报警子程序 MOV R1,#31H mov r2,#00h ;再次初始化各寄存器 mov r3,#0ffh mov r4,#00h mov r6,#00h mov r7,#0ffh ;198 NEXT: MOV IE, #10000100B;再次开中断 SETB IT1 MOV DPTR,#0FEF3H MOV A,#00H MOVX @DPTR,A POP DPH POP DPL ;,... RETI 4.4.2 数字滤波子程序模块 数字滤波子程序主要是将四次采集到的数字量判断其最大值和最小值,然后在四次相加和中减去最大值和最小值,再去平均值后存入30H或者31H单元中。 SHZLB: clr a clr c mov a,r2 subb a,r5 jnc dav1 mov a,r5 mov r2,a mov b,#04h div ab mov 41h,a mov 51h,b dav1:clr c mov a,r5 subb a,r3 jnc dav2 mov a,r5 mov r3,a mov b,#04h div ab mov 42h,a mov 52h,b dav2:mov a,r5 mov b,#04h div ab add a,r4 mov r4,a mov a,b add a,r6 mov r6,a djnz r0,dav3 mov a,r4 subb a,41h subb a,42h mov b,#02h div ab mov 50h,b mov b,#04h mul ab mov @r1,a mov a,50h mov b,#02h mul ab add a,@r1 mov @r1,a mov a,r6 subb a,51h subb a,52h mov b,02h div ab add a,@r1 mov @r1,a mov 31h,a mov r7,#00H mov r0,#04h dav3: ret |
本站发布的计算机毕业设计均是完整无错的全套作品,包含开题报告+程序+论文+源代码+翻译+答辩稿PPT |
本文选自计算机毕业设计http://myeducs.cn |