简易波形发生器
- 格式:doc
- 大小:188.50 KB
- 文档页数:5
简易波形发生器
一、实验目的
1.掌握DAC0832和ADC0809的应用和编程方法。
2.熟悉几种典型波形的产生方法。
二、实验内容与要求
利用微机实验平台编程实现一个波形发生器,可以产生正弦波、方波、三角波等各种波形,频率和幅度均可调。
1.基本要求
(1)具有产生正弦波、方波、三角波三种周期性波形的功能。
(2)输出波形的频率范围为100Hz~1kHz,步进为100Hz。
(3)输出波形幅度范围1~5V(峰-峰值),可按步进1V(峰-峰值)调整。
(4)通过ADC0809采样DAC0832的输出,在屏幕上画出图形。
示波器查看波形发生器的输出和屏幕上的图形比较。
2.提高要求
(1)增加输出波形的类型。
(2)扩展输出波形频率范围。
(3)减少幅度范围的步进量。
三、实验报告要求
1.设计目的和内容
2.总体设计
3.硬件设计:原理图(接线图)及简要说明
4.软件设计框图及程序清单
5.设计结果和体会(包括遇到的问题及解决的方法)
四、总体设计
本次设计结合D/A和A/D转换,用键盘输入来选择DAC0832的输出波形,再通过ADC0809采集后在PC机上以图形方式显示。
实验主要利用实验箱上的DAC0832 、ADC0809和8253等硬件电路和PC机资源。
设计要求该波形发生器能产生正弦波、方波、三角波等形状的波形,频率和幅度可调。
不同的波形主要是由输入DAC0832的不同规律的数据,所以在软件设计是主要是构造各种波形的数据表格。
方波只需要控制输出高低电平的时间,三角波的表格可以由数字量的增减来控制,产生正弦波关于构造一个正弦函数数值表,通过查该函数表来实现波形的输出。
波形的频率控制是通过对输出数据的时间间隔控制。
幅度是通过改变输出数据的大小来控制的。
为了程序实现方便,可以把每种波形的数据表构造好,再统一查表来实现。
硬件由于采用了PC机的资源和微机实验平台,不用外加其他的电路,比较简单。
将微机系统里面的中断、8253、 DAC0832以及ADC0832的电路弄清楚,通过相应的跳线就可以完成电路的设计。
本次设计中,通过PC机键盘选择波形,启动DAC0832工作,在其输出端口VOUT1将会产生0~5V的直流电压,再由ADC 0809的IN0端口进行采样,显示到屏幕上。
DAC0832所对应的片选为CS4,ADC0809所对应的片选为CS0。
DAC0832 和ADC0809硬件连接图如图1所示。
在ADC0809芯片连接中,CLOCK用来接收外部时钟信号,在本实验中接收Q3端产生的时钟信号。
ADD_A,ADD_B和ADD_C这三个端口为三位地址线,用来选通8路模拟量输入中的一路。
在本实验中,只使用ADC 0809中的IN0端口,当ADD_A,ADD_B和ADD_C端口都为低电平时,才能选中IN0端口。
在本PC实验箱中ADC 0809IN0端口地址为280H,其地址总线中的A0,A1,A2均为低电平。
故将ADD_A,ADD_B和ADD_C与A0,A1,A2如图所示连接。
REF(+)接正参考电压(+5V),REF(-)接负参考电压(接地)。
图1 设计硬件连接图
8253定时/计数器用来产生定时中断,收到中断请求后输出数据到DAC0832。
所以采用8253的0号计数器,将GATE0接高电平,OUT0接IRQ2,clk0接Q3。
一个周期输出64个数据,定时时间是T/64,根据选择的不同频率计算相应的计数初值,放在一个表中,根据选择来查找。
本设计的主要是掌握各种典型波形的产生方法,例如三角波、方波和正弦波。
构造各种
波形的数据表和对ADC0832的编程输出。
对于波形的频率调节主要是由8253定时/计数器来
控制。
1.波形数据表的构造
每个周期的数据表由64个数据组成,不同的幅度对应的数据不一样,可以根据倍数关
系求出。
但是为了简化计算,将每个幅值的数据表列出。
这边我们只讨论幅值为5V时的数
据表,其他的数据表可以根据倍数关系求得。
1)方波数据表的构造
只要输出高电平和低电平就可以了,所以输入到ADC0832的数据由32个00H和32个FFH组成。
2)三角波数据表的构造
三角波是由数据量的增减来控制的。
在前半个周期数据由00H增加到FFH,在后半个周
期数据由FFH减少到00H,每次变化为08H。
所以三角波的数据表为:
BUF DB 00H,08H,10H,18H,20H,28H,30H,38H,40H,48H,50H,58H,60H,68H,70H,78H DB 80H,88H,90H,98H,0A0H,0A8H,0B0H,0B8H
DB 0C0H,0C8H,0D0H,0D8H,0E0H,0E8H,0F0H,0F8H
DB 0FFH,0F8H,0F0H,0E8H,0E0H,0D8H,0D0H,0C8H
DB 0C0H,0B8H,0B0H,0A8H,0A0H,98H,90H,88H
DB 80H,78H,70H,68H,60H,58H,50H,48H,40H,38H,30H,28H,20H,18H,10H,08H
3)正弦波数据表的构造
DAC 0832的输入数据与输出电压的关系为:Ua=(UREF)/256*N,其中UREF表示参考电压(+5V),N表示数据。
由于8位D/A转换器DAC 0832的数据N 的范围为:00H—FFH,故Ua的范围为:0V—4.98V。
则产生的正弦波的幅度也为0V—4.98V。
我们以正弦函数的0--π/2为例,0度时我们设定其对应的N为:80H,π/2时必然对应的N为:FFH,在0--π/2的范围内有16个点,故间隔为6度。
综上所诉正弦波函数为:Ua =2.48*sin6x+2.5(x=0,1,……15)。
联合上述两式,就可得出0--π/2范围内的16个N值。
构造出正弦波数据表如下:
SINBUF DB 080H,08CH,098H,0A5H,0B0H,0BCH,0C7H,0D1H
DB 0DAH,0E2H,0EAH,0F0H,0F6H,0FAH,0FDH,0FFH
DB 0FFH,0FDH,0FAH,0F6H,0F0H,0EAH,0E2H,0DAH
DB 0D1H,0C7H,0BCH,0B0H,0A5H,098H,08CH,080H
DB 7FH,73H,67H,5AH,4FH,43H,38H,2EH
DB 25H,1DH,15H,0FH,09H,05H,02H,00H
DB 00H,02H,05H,09H,0FH,15H,1DH,25H
DB 2EH,38H,43H,4FH,5AH,67H,73H,7FH
2.程序的主要模块
程序主要由主程序和中断服务程序构成。
主要由菜单显示、键盘读取、DA输出、AD采样、屏幕画图等模块组成。
菜单显示包含有3个菜单:主菜单和2个子菜单。
主菜单有选择波形和退出选项,子菜
单有选择频率菜单和选择幅度菜单。
键盘读取是配合菜单显示的条件下,接收键盘的输入,得到相应的数据来处理,决定输
出波形的信息。
DA输出是将数据输出到ADC0832转换为模拟量输出。
ADC0809的转换控制如下:选择通
道并启动转换→延时等待→读取转换结果。
屏幕画图主要是调用了INT 10H中第12H号功能(AH=12,CX=列号,DX=行号,AL=点的颜色),在屏幕上写点。
并通过幅度=(数字量)/255(FFH)*160这个公式来使从ADC 0809转换出的值显示到屏幕上。
3.程序框图
1).主程序框图如图2。
图2 主程序框图
2)中断程序框图
图3 中断服务程序。