信息工程学院 基于单片机的环境噪声监测仪的设计
中断入口 关T0、T1 读计数器 重新初始化T0、T1 开T0、T1 中断返回 图4-2 中断服务程序流程图
一、 T0中断子程序的设计
计数功能是对外来脉冲进行计数。芯片有T0(P3.4)和T1(P3.5)两个输入引脚,分别是这两个计数器的计数脉冲输入端。当输入信号产生由1至0的负跳变时,计数器的值增1。每个机器周期的S5P2期间,对外部输入引脚进行采样。如在第一个机器周期中采得的值为1,而在下一个机器周期中采得的值为0,则在紧跟着的再下一个机器周期S3P1的期间,计数器加1。由于去确认一次负跳变要花两个机器周期,即24个振荡周期,因此外部输入的计数脉冲的最高频率为振荡器频率的1/24。
由于本设计采用T0计数器,当定时时间到时产生中断,故需要编写中断子程序。本设计把T0作为计数器,采用方式1计数,当定时1秒后,即产生中断,而计数器T0的溢出中断TF0作为外部中断请求的标志,于是,CPU暂时终止当前的工作,转去执行中断服务程序,这时除了硬件会自动把断点地址(16位程序计数器PC的值)压入堆栈之外,还得保护有关工作寄存器、累加器、标志位等信息,在完成中断服务程序后,恢复有关的工作寄存器、累加器、标志位内容,最后执行中断返回指令,从堆栈中自动弹出断点地址到PC,继续执行被中断的程序,如图4-3所示为中断子程序流程图。
第 32 页 共46页
信息工程学院 基于单片机的环境噪声监测仪的设计
关中断 现场保护 开中断 中断处理 现场恢复 中断返回
图4-3 T0中断服务程序流程图
二、 T1中断子程序的设计
所谓定时功能也是通过计数器的计数来实现的,不过这时的计数脉冲来自单片机的内部,即每个机器周期产生一个计数脉冲。也就是每个机器周期计数器加一。由于一个机器周期等于12个振荡脉冲周期,因此计数频率为振荡频率的1/12。如果单片机采用6MHz晶体,则计数频率为0.5MHz。这样就可以根据定时时间的要求计算出计数器的初值。因此本设计中T1的初值为(216?X)?10?6?10?1,即X=15536=3CB0H,因此TH1=3CH,TL1=B0H。
定时功能:用T1做定时1秒,每满1秒,就读计数器的内容。具体的T1中断子程序软件流程图见图4-4。
第 33 页 共46页
信息工程学院 基于单片机的环境噪声监测仪的设计
中断服务子程序T1 保护现场 关定时闸门 Y 中断次数计数器 R0-1=0? N 读计数结果 存入RAM 开闸门 开中断屏蔽 开闸门 开屏蔽 重新置计数器 初值和R0初值 结果送结果单元并加累加器内容 恢复现场 返回 图4-4 T1中断服务程序
第 34 页 共46页
信息工程学院 基于单片机的环境噪声监测仪的设计
4.4 查表子程序
声学中常用声压级LP来反映声压的变化,将声压P声压级表示成
LP?20lg(P/P0)dB
(4-1)
其中,基准量P0为20m Pa。当P=P0时,Lp=0dB,而当P=200 Pa时,LP=140dB。 值得指出的是,查表程序实现了计数值向声压级的转换。由式(4-1)知声压每增加12.2%,声压级增加1dB,因此T0计数值每增加12.2%,声压级增加1dB。在E2PROM中定义一张表格,每四个字节为一组数据,其中前两个字节为计数值,后两个字节为压缩BCD码表示的声压级值。调试时,参照精密声级计,读出某声压级所对应的计数值,从而确定表格中两参数的对应关系,当程序固化后,还可通过硬件电路对其进行调整。由于设计要求声压级的测量范围为40~96db,所以给表格设定了上下限。下面给出定义该表格的伪指令格式。
TAB:DB 1BH,0AH,0BH,0BH DB 18H,9DH,09H,06H;表格上限 ...
DB 05H,83H,08H,03H DB 05H,00H,08H,03H DB 04H,0EAH,08H,02H DB 04H,61H,08H,01H DB 04H,00H,08H,01H DB 03H,0E7H,08H,00H …
DB 00H,0BH,04H,01H
DB 00H,0AH,04H,,00H;表格下限 DB 00H,00H,0AH,0AH
查表子程序流程图如图4-5所示。
第 35 页 共46页
信息工程学院 基于单片机的环境噪声监测仪的设计
查表子程序入口 置表首地址 i=i+1 Y 取表中双字节数xi xi>(TH0)(TL0) N 数值显示 返回 图4-5 查表子程序流程图
4.5 显示子程序
根据一般城市内噪声等级、测量方法和标准,显示只需四位即可满足要求,显示格式:× × d b。
数据处理完后,显示子程序开始工作,由于LED显示为段码的显示,所以处理后的十进制数要首先取段码,然后送显示单元。
本设计的显缓单元为5CH-5FH,采用两个四位LED显示,先把要显示的数据存入显缓单元,然后取段码,再把段码送到指定的位上,用R5进行位的选择,显示程序流程图如图4-6所示。
第 36 页 共46页