图2-3
方法二:利用定时器控制输出间隔时间。同实验一,对控制计算机内的1#计数器编程,定时时间1ms,时间到由定时器OUT1产生的信号接到控制计算机的中断请求IRQ7申请中断,在中断程序中进行D/A数据输出。
自行设计接线图及程序流程图。
实验步骤
1.按图接线,画“о”的线需自行连接,不带“о”的线电路板上已连好无须连接。连接好后,请仔细检查,无误后方可接通电源。
2.D/A转换器调零。在输出窗口区/调试窗口下的“>”提示符后键入O 0640 80↙,用虚拟万用表测量数模转换单元OUT1端,调电位W101使该端输出电压为0.00V,同样键入O 0641 80↙,用虚拟万用表测量数模转换单元OUT2端,调电位W102使该端输出电压为0.00V。
3.编辑程序1,延时子程序文件名:c:\\shiyan\\yanshi.asm可以打开并粘贴到程序中。然后编译链接并加载,如中间出现错误,则按提示进行修改,直至加载成功。
4.按工具栏上的“RUN”按钮执行程序。
5.点击虚拟示波器菜单,进入虚拟示波器界面,按“运行”按钮观察并记录OUT1、OUT2输出波形。
6.如示波器显示不正确,运用调试命令调试程序,找出程序中的问题,使之实现预期的结果。
7.完成方法二的接线,编辑程序2,重复步骤3~6。
8.改变计数器的定时时间,以改变锯齿波的周期,重复以上步骤,用示波器观察输出波形并记录。
预习报告要求
1.写出实验目的、内容、原理、步骤等,画出实验电路图。 2.完成方法二的电路原理图,画出程序流程。
3.根据流程图编写实验程序,正确选取8254、8259的控制字和工作方式,计算8254计数初值,确定中断向量。
4.回答思考问题。
思考题
如实验中的8253计数器定时时间为1ms,则锯齿波的周期为多少?
实验报告要求
1.整理实验数据,画出实验结果波形。 2.附上调试通过的程序清单。
3.实验过程中遇到的问题进行分析、总结。
20
实验三 A/D转换实验
实验目的
1.学习掌握A/D转换的基本原理及ADC0809器件的性能。 2.掌握实验教学系统中A/D转换单元的电路原理。 3.了解模数转换器的采样作用及学习选择采样周期。
实验设备
PC 机一台,TD-ACC+实验系统一套
实验内容
1.当输入电压为–5.00V到+5.00V之间变化时,由显示器上读取A/D转换数值。 2.当A/D输入为连续信号时,由A/D输入并由D/A直接输出,用示波器观察D/A端输出的相应信号。改变采样周期观察波形何时失真,观察D/A器件的零阶保持器的作用。
实验原理
1.ADC0809 芯片主要包括多路模拟开关和A/D转换器两部分,其主要特点为:单电源供电、工作时钟CLOCK 最高可达到1200KHz、8 位分辨率,8个单端模拟输入端,TTL 电平兼容等,可以很方便地和微处理器接口。TD-ACC+教学系统中的ADC0809 芯片,其输出八位数据线以及CLOCK 线已连到控制计算机的数据线及系统应用时钟1MCLK(1MHz)上。其它控制线根据实验要求可另外连接 (A、B、C、STR、/OE、EOC、IN0~IN7)。
其中IN0~IN5的模拟量输入允许范围:0V~4.98V,对应数字量00H~FFH,2.5V对应80H。IN6和IN7两路由于接了上拉电阻,所以模拟量输入允许范围:-5V~+4.96V,对应数字量00H~FFH。0V对应80H。模数转换单元原理图如图3-2。
根据实验内容一,可以设计出如图3-1所示的实验线路图。–5.00V到+5.00V的输入电压由单次阶跃单元电路的电位器进行调节获得,考虑模拟量输入允许范围(-5V~+4.96V)选取IN7为模拟量输入端,因而地址线A、B、C应接高电平(+5V),ADC0809转换器的启动信号START(STR)由内部1#定时器输出信号OUT1控制,转换结束后数据锁存在三态
21
输出锁存器中,当计算机读取数据时,IN语句中的地址信号IOY0有效,使得ADC0809输出允许信号OE有效,转换好的数据出现在ADC0809数据端口上供计算机读取。
图3-1
模数转换单元-A,B,C→+5V:选择A/D输入通道为INT7,地址码为“111”;
单次阶跃单元-X→+5V,U14-Z→-5V:使U14单元的Y端输出 –5 V~ +5V连续可调电压;
控制计算机-分频器→模数转换单元-CLOCK:提供给A/D器件的时钟信号,频率为1MHz;同时该信号提供给内部计数器作时钟。
控制计算机-OUT1→模数转换单元-STR:控制计算机的1#计数器输出定时信号,启动A/D转换器。
控制计算机-/IOY0→模数转换单元-/OE:控制计算机的端口有效地址/IOY0使模数转换ADC0809的输出允许控制OE有效,ADC0809三态输出锁存缓冲器中的数据可供计算机读取。
控制计算机- XD0~XD7→模数转换单元- D0~D7:控制计算机的数据线接A/D转换器的八位数据线。
XD0-XD7
图3-2
参考流程:
开始 22 调用初始化子程序
图3-3
控制计算机内部定时器定时1ms,每1ms在OUT1端产生一个负脉冲,经反相后变为正脉冲(如图3—2)启动A/D转换器,定时器的工作方式选择方式4(软件触发的选通信号发生器),时间到产生一个负脉冲后便一直维持高电平,除非写入新的计数初值。经过软件短延时(等待A/D转换结束)后,将A/D 转换完后的数据量读入到控制计算机中,程序中通过调用内部中断INT 10H,将数据最后显示在输出区窗口。程序中使用的延时及显示子程序已保存在机器中。
显示子程序:
DISPLAY: PUSH AX
MOV AX,0001 INT 10 POP AX MOV CL,04 MOV DL,AL SHR AL,CL CMP AL,09 JNA DLAY1 ADD AL,07 NOP
DLAY1: ADD AL,30
MOV
INT AND CMP JNA ADD
DLAY2: ADD
MOV MOV INT RET
AH,01 10
DL,0F DL,09 DLAY2 DL,07 DL,30 AL,DL AH,01 10
延时子程序:
LOOP DEL DELAY: PUSH CX
POP CX MOV CX,1000H
RET DEL: PUSH AX
POP AX
2.对连续信号进行采样,然后再还原输出为模拟信号。由正弦波单元的“OUT”端
23
输出周期性的正弦波信号,通过模数转换单元的“IN7”端输入, 系统用定时器作为基准时钟(初始化为10ms),定时采集“IN7”端的信号,A/D转换结束信号EOC接中断控制器8259的IRQ7请求中断,响应中断后,在中断服务程序中读入转换好的数字量,再输出给数模转换单元,在数模转换单元的“OUT1”端输出相应的模拟信号。实验线路图如图3-4 所示。
图3-4
采样周期T= TK×10ms,TK 的范围为01~ FFH,程序中将其定义在某个数据单元(如2600H),相当于软件计数器,通过修改TK 就可以灵活地改变采样周期。
定时器的工作方式可选择方式2——分频器或方式3——方波发生器(参考实验一程序),计数初值为10ms。
参考流程: 中断开始
开始
N 采样周期到否? 初始化8259 (TK=0?) Y 关中断
读取采样值
调用系统初始化子程序 初始化8254 还原采样周期变量初值 赋采样周期变量初值TK 采样周期变量TK-1 开中断 等待中断 图3-5
24
送D/A输出 写中断结束字 中断返回