刘静波
(南京工程学院 通信工程系 江苏 南京 211167)
摘 要:以单片机89C52 为核心,控制四路D/A 转换器实现独立数控与显示。每路数控单元都能互不影响地各自调整,输出的步进电压为±0.1V。分析了系统数控原理,给出较详细的软件设计过程、电路和程序结构,并对实际应用方面作介绍。
关键词:数控 单片机 D/A转换
D/A 转换器DAC0832 内部主要由T 型电阻网络和电子开关组成,输入不同数字量可以控制相应电子开关,从而使T 型电阻网络输出与数字量成正比的模拟电流,并通过外接运放得到模拟电压[1、5]。若加到四个DAC0832 的基准电压为固定值UZ(可以是同一个UZ),则在单片机89C52 的作用下,可以对每路D/A 转换器分别进行控制,从而实现每路独立以0.1V 步进电压输出。DAC0832 是8 位D/A 转换常用器件,在本系统中作为被控对象,其内部的电阻网络对数字量的解码,完全可以达到低于0.1V 分辨率的要求,这是一种可行、实用的方案,单片机89C52 如何来控制每路数控独立输出与显示则是要解决的重点内容。系统实现的功能如下:各路数控独立输出与调整;同一基准电压UZ 条件下,各路输出电压范围0~UZ,步进电压0.1V;每路用两位数码管显示相应数值;每路用两个按键分别实现加、减功能,对应为+0.1V 和-0.1V 的调整。
1 DAC0832 的数控原理
对每一路数控单元来说,可以按图1 连接。根据本系统的要求以及考虑简化电路,图1中对DAC0832 电阻网络的连接端口Iout1、Iout2、Vref、Rfb 作适当的处理,区别于常规典型应用。通过分析可以得到以下两个表达式。
其中(1)式是当前DAC0832 内部电阻网络连接端口Iout1、Vref 与数字量之间的关系,注意基准电压UZ 通过射随器U1A 加在Iout1 端,因此(1)式中Iout1 用UZ 替换表示;(2)式是数字量与输出电压之间的关系,可以通过运放分析计算得到,采用叠加原理[2]不难推导。
其中ΣDn 是输入到DAC0832 数字量的表示方法,它清楚地表明对于每一个数控输出电压UO,必然对应一个数字量。如UZ=+5V,则按照0.1V 步进电压设计数控输出电压,对应有51 个数字量,这是数控的基本原理,也是程序设计的重要依据。
2 单片机控制部分
图2 是单片机控制部分的示意图,其硬件资源分配如下:P0 口作为数据总线,并通过8D 锁存器后,作为数码管显示与键盘扫描信号。P1 口是八位数码显示的位选信号。P3.5 用作键盘检测。八个按键S1~S8(四路输出、每路均可以单独加和减控制)控制数控输出与显示。采用了并行总线方式输出数据,因此必须解决地址的分配问题,采取将P2.7~P2.5经74HC138 译码得到的CS0~CS4 五个选择信号分配到各单元,地址分配关系是显示与键盘为0000H-1FFFH、数控1 单元至数控4 单元分别是2000H-3FFFH、4000H-5FFFH、6000H-7FFFH 和8000H-9FFFH。
3 软件设计
本系统的监控程序任务是初始化、启动输出与显示、处理键盘检测,然后根据键值调用相应功能模块。其次是具体执行软件部分,它完成具体实质性的功能,输出数字量、显示键盘检测取键值、按键处理程序、明确该键控制哪路?是实现“加”功能还是实现“减”功能等。
图3 是系统总流程图,它表明了系统监控程序的框架,这实际上采取的是查询方式的调度模式[3]。30H~37H 是八位数码显示的指针,40H~43H 是四个控制输出数字量的指针。
3.1 数字量输出子程序
送给DAC0832 的数字量在此子程序中完成,40H~43H 作为四个控制输出数字量的指针,配合查表指令不难实现数字量的输出的。但要注意每路地址与数据指针的对应,而40H~43H 的内容显然由键盘处理程序中进行更新。值得重视的问题是,系统采取查询方式、不断循环的监控模式,如没有按键按下,或某一个具体按键按下则只要进行该按键的处理时,没有必要每循环一次而把所有数字量重复送到D/A转换器。程序这样解决:对每一路数字量输出前,查询当前各自标志位,当然标志位满足判断条件的前提下,才能送出数字量。标志位有四个,占用单片机位寻址空间00H~03H,这四个标志位的控制在键盘处理时置位,并
上一篇:单片机开平方的快速算法