微波EDA网,见证研发工程师的成长!
首页 > 硬件设计 > 嵌入式设计 > 基于单片机控制的DDZ型热工仪表检测仪的设计

基于单片机控制的DDZ型热工仪表检测仪的设计

时间:11-07 来源:互联网 点击:

软件设计
由于本仪表的功能较多,因此不但硬件电路复杂,同时也需很强的软件系统支持。本仪表的软件系统由一个主程序和多个子程序组成。
仪表的主程序
仪表的软件系统总的来说有三大部分组成:
(1) 系统的初始化。它包括PIC16F877芯片本身的初始化,串口、键盘接口、数码显示模块的初始化等。
(2) 响应外部中断由键盘中断程序来完成仪表具体执行那项任务:测量或输出模拟信号,并动态显示信号大小。
(3) 数据的采集、计算、显示部分。在这个循环中,程序根据不同的输入信号每10ms采集、刷新显示一次。
仪表的软件系统主程序流程图如图3所示。
仪表的子程序及功能
软件系统由多个子程序组成,现就主程序中的A/D转换来介绍一下其程序原理和流程图。
A/D转换的程序原理与流程图
以循环扫描方式利用PIC16F877的A/D转换读取RA0管脚上输入的模拟电压,并将其数值大小在数码管上显示出来。设计主程序的扫描时间为10ms,经过运算处理输出模拟量对应的BCD码至C口并重复循环。使用PIC16F877单片机的Timer1产生2ms的定时中断作为程序的基本时序,其主程序和中断服务程序的流程图如图4所示。
PIC16F877芯片使用外部4MHz的石英振荡器,其指令周期为1?s,Timer1子程序中预先定义的寄存器Scaler的值为5,在每一次中断过程中都使其值减1,主程序中检测Scaler寄存器中的值是否等于0,不等于0则主程序处于等待状态,当等于0时则使用命令:movlw 5 ;addwf Scaler,f 使寄存器Scaler始终为5,并返回到A/D转换子程序,这样使主程序的循环时间为10ms。
A/D转换中的编码运算
A/D转换的位数是10位,根据每次A/D转换后A/DRESH和A/DRESL中的值由公式:
A=(5/1023)*D可以计算出转换前模拟量的值。在进行动态显示时,采用4位数码管显示2位整数、2位小数,从高位到低位依次设为S3 S2 S1 S0,单片机依次送出S0 S1 S2 S3对应的BCD码到显示模块,并通过对数码管位选端的控制来实现动态显示的功能。

结语
随着仪器、仪表在日常生产、生活频繁的使用,其维修也越来越频繁。热工仪表检测仪作为提供维修信号源的标准仪表发挥着十分重要的作用。该设备采用集成的原理做成了一个便携式的装置,经过实际反复测试,性能良好,有着广泛的市场应用前景。

参考文献:
[1]. PIC16F877 datasheet http://www.dzsc.com/datasheet/PIC16F877_318821.html.
[2]. RS-232 datasheet http://www.dzsc.com/datasheet/RS-232_584855.html.
[3]. OP07 datasheet http://www.dzsc.com/datasheet/OP07_950754.html.
[4]. BCD datasheet http://www.dzsc.com/datasheet/BCD_1225719.html.
[5]. MAX232 datasheet http://www.dzsc.com/datasheet/MAX232_1074207.html.

Copyright © 2017-2020 微波EDA网 版权所有

网站地图

Top