模拟波形发生器.docx
《模拟波形发生器.docx》由会员分享,可在线阅读,更多相关《模拟波形发生器.docx(17页珍藏版)》请在冰点文库上搜索。
模拟波形发生器
模拟波形发生器
一、设计目的
二、设计内容及要求
三、背景知识
四、硬件原理
五、软件实现
六、心得体会
七、参考文献
一设计目的
1.1掌握D/A转换器的性能,ADC0832与8255A的连接方法;
1.2掌握D/A的编程和调试方法;
1.3掌握PC/XT机ISA总线连接方法。
二设计内容及要求
2.1通用板8位2路D/A板------信号发生器(推荐使用DAC0832)
2.22路8位分辨率D/A输出,输出电压0~5V,2路同步输出正弦波、三角波、锯齿波。
2.3系统线路图(一号图纸)
2.4接口程序流程图(二号图纸)
2.5接口程序清单(带注释)
三、背景知识
8位D/A转换器DAC0832简介:
DAC0832当今世界在以电子信是8位分辨率的D/A转换集成芯片,与微处理器完全兼容,这个系列的芯片以其价格低廉、接口简单、转换控制容易等优点,在单片机应用系统中得到了广泛的应用。
这类D/A转换器由8位输入锁存器,8位DAC寄存器,8位DA转换电路及转换控制电路构成。
1、DAC0832的引脚及功能:
DAC0832芯片是一种具有两个输入数据寄存器的8位DAC,它能直接与MCS51单片机接口,其主要特性参数如下:
·分辨率为8位;
·电流稳定时间1us;
·可单缓冲、双缓冲或直接数字输入;
·只需在满量程和下调整其线性度;
·单一电源供电(+5V~+15V);
·低功耗,200mW。
为便于DAC0832的使用,特将其应用特性总结如下:
·DAC0832是微处理器兼容型D/A转换器,可以充分利用微处理器的控制能力实现对D/A转换的控制。
这种芯片有许多控制引脚,可以和微处理器控制线相连,接受微处理器的控制,如ILE、/CS、/WR1、/WR2、/XFER端。
·有两级锁存控制功能,能够实现多通道D/A的同步转换输出。
·DAC0832内部无参考电压源;须外接参考电压源。
·DAC0832为电流输入型D/A转换器,要获得模拟电压输出时,需要外加转换电路。
DAC0832的引脚图及逻辑结构如下图:
图1DAC0832结构框图及引脚排列
DAC0832各引脚的功能如下:
DI0~DI7:
数据输入线。
ILE:
数据允许锁存信号,高电平有效;
/CS:
输入寄存器选择信号,低电平有效。
/WR1为输入寄存器的写选通信号。
输入寄存器的锁存信号/LE1由ILE、/CS、/WR1的逻辑组合产生。
当ILE为高电平、/CS为低电平、/WR1输入负脉冲时,在/LE1产生正脉冲;/LE1为高电平,输入锁存器的状态随数据输入线的状态变化,/LE1的负跳变将数据线上的信息锁入输入寄存器。
/XFER:
数据传送信号,低电平有效。
/WR2为DAC寄存器的写选通信号。
DAC寄存器的锁存信号/LE2,由/XEFR、/WR2的逻辑组合产生。
当/XFER为低电平,/WR2输入负脉冲,则在/LE2产生正脉冲;/LE2为高电平是时,DAC寄存器的输出和输入寄存器的状态一致,/LE2负跳变,输入寄存器的内容打入DAC寄存器。
VREF:
基准电源输入引脚。
Rfb:
反馈信号输入引脚,反馈电阻在芯片内部。
IOUT1、IOUT2:
电流输出引脚。
电流IOUT1、IOUT2的和为常数,IOUT1、IOUT2随DAC寄存器的内容线性变化。
VCC:
电源输入引脚。
AGND:
模拟信号地
DGND:
数字地。
2、DAC0832三种数据输入方式:
(1)双缓冲方式:
即数据经过双重缓冲后再送入D/A转换电路,执行两次写操作才能完成一次D/A转换。
这种方式可在D/A转换的同时,进行下一个数据的输入,可提高转换速率。
更为重要的是,这种方式特别适用于要求同时输出
多个模拟量的场合。
此时,要用多片DAC0832组成模拟输出系统,每片对应一个模拟量。
(2)单缓冲方式:
不需要多个模拟量同时输出时,可采用此种方式。
此时两个寄存器之一处于直通状态,输入数据只经过一级缓冲送入D/A转换电路。
这种方式只需执行一次写操作,即可完成D/A转换。
(3)直通方式:
此时两个寄存器均处于直通状态,因此要将
、
、
和
端都接数字地,ILE接高电平,使LE1、LE2均为高电平,致使两个锁存寄存器同时处于放行直通状态,数据直接送入D/A转换电路进行D/A转换。
这种方式可用于一些不采用微机的控制系统中或其他不须0832缓冲数据的情况。
8255A功能介绍:
------------------------------------------------------------------------------------------
四、硬件原理
通过8255A的C口控制输出类型,00H为2路同步输出,01H为由8255A的A口控制第一片ADC0832输出,10H为由8255A的B口控制第二片ADC0832输出。
当C口输入00H采用2路同步输出时,通过A口、B口的输入控制主程序调用的波形数据。
当A口、B口输入为00H时,调用锯齿波,01H调用三角波,10H调用正弦波。
调用的数据经数据总线非别送到两片DAC0832中,经双缓冲方式输出。
当C口输入为01H时系统为A口控制第一片DAC0832单路输出。
当A口输入为00H时,调用锯齿波,01H调用三角波,10H调用正弦波。
当C口输入为10H时系统为B口控制第二片DAC0832单路输出。
当B口输入为00H时,调用锯齿波,01H调用三角波,10H调用正弦波。
五、软件实现
系统软件由主程序和波形数据调用子程序组成。
主程序和子程序的流程图如图所示。
主程序
程序部分:
MY8255_AEQU0E460H
MY8255_BEQU0E461H
MY8255_CEQU0E462H
MY8255_MODEEQU0E463H
PORT1EQU0227H
PORT2EQU0228H
PORT3EQU0230H
CODESEGMENT
ASSUMECS:
CODE,DS:
CODE
DATAV1DB00,01,02,03,04,05,06,07,08,09
DB10,11,12,13,14,15,16,17,18,19
DB20,21,22,23,24,25,26,27,28,29
DB30,31,32,33,34,35,36,37,38,39
DB40,41,42,43,44,45,46,47,48,49
DB50,51,52,53,54,55,56,57,58,59
DB60,61,62,63,64,65,66,67,68,69
DB70,71,72,73,74,75,76,77,78,79
DB80,81,82,83,84,85,86,87,88,89
DB90,91,92,93,94,95,96,97,98,99
DB100,101,102,103,104,105,106,107,108,109
DB110,111,112,113,114,115,116,117,118,119
DB130,131,132,133,134,135,136,137,138,139
DB140,141,142,143,144,145,146,147,148,149
DB150,151,152,153,154,155,156,157,158,159
DATAV2DB00,02,04,06,08,10,12,14,16,18
DB20,22,24,26,28,30,32,34,36,38
DB40,42,44,46,48,50,52,54,56,58
DB60,62,64,66,68,70,72,76,78,80
DB82,84,86,88,90,92,94,96,98,100
DB102,104,106,108,110,112,114,116,118,120
DB122,124,126,128,130,132,134,136,138,140
DB142,144,146,148,150,152,154,156,158,160
DB160,158,156,154,152,150,148,146,144,142
DB140,138,136,134,132,130,128,126,124,122
DB120,118,116,114,112,110,108,106,104,102
DB100,98,96,94,92,90,88,86,84,82
DB80,78,76,74,72,70,68,66,64,62
DB60,58,56,54,52,50,48,46,44,42
DB40,38,36,34,32,30,28,24,22,20
DB18,16,14,12,10,08,06,04,02,00
DATAV3DB128,132,137,141,146,150,154,159,163,167
DB171,176,180,184,188,191,195,199,203,206
DB210,213,216,219,222,225,228,231,233,236
DB238,240,242,244,246,247,249,250,251,252
DB253,254,254,255,255,255,255,255,254,254
DB253,252,251,250,249,247,246,244,242,240
DB238,236,233,231,228,225,222,219,216,213
DB210,206,203,198,195,192,188,184,180,176
DB172,167,163,159,155,150,146,141,137,133
DB128,124,119,115,111,106,102,97,93,89,85
DB81,77,73,69,65,61,57,54,50,47,43,40,37
DB34,31,28,25,23,20,18,16,14,12,10,9,7
DB6,5,4,3,2,2,1,1,1,1,1,2,2,3,4,5,6
DB7,9,10,12,14,16,18,20,23,25,28,30,33,36
DB40,43,46,50,53,57,60,64,68,72,76,80,84
DB88,93,97,101,106,110,114,119,123,128,129
SATRT:
MOVAX,CODE
MOVDS,AX
LEASI,DATAV1
LEABX,DATAV2
LEADI,DATAV3
MOVCX,160
MOVDX,MY8255_MODE
MOVAL,93H
OUTDX,AL
MOVDX,MY8255_C
CMPDX,00H
JZA1
CMPDX,01H
JZA2
CMPDX,10H
JZA3
A1:
MOVDX,MY8255_A
INAL,DX
MOVDX,MY8255_B
INAH,DX
CMPAX,0000H
JZB1
CMPAX,0001H
JZB2
CMPAX,0100H
JZB3
CMPAX,0101H
JZB4
CMPAX,0010H
JZB5
CMPAX,1000H
JZB6
CMPAX,0110H
JZB7
CMPAX,1001H
JZB8
VMPAX,1010H
JZB9
B1:
MOVAL,[SI]
OUTPORT1,AL
OUTPORT2,AL
OUTPORT3,AL
CALLDELAY
INCSI
LOOPB1
RET
B2:
MOVAL,[BX]
OUTPORT1,AL
MOVAL,[SI]
OUTPORT2,AL
OUTPORT3,AL
CALLDELAY
INCBX
INCSI
LOOPB2
RET
B3:
MOVAL,[SI]
OUTPORT1,AL
MOVAL,[BX]
OUTPORT2,AL
OUTPORT3,AL
CALLDELAY
INCSI
INCBX
LOOPB3
RET
B4:
MOVAL,[BX]
OUTPORT1,AL
OUTPORT2,AL
OUTPORT3,AL
CALLDELAY
INCBX
LOOPB4
RET
B5:
MOVAL,[DI]
OUTPORT1,AL
MOVAL,[SI]
OUTPORT2,AL
OUTPORT3,AL
CALLDELAY
INCDI
INCSI
LOOPB5
RET
B6:
MOVAL,[SI]
OUTPORT1,AL
MOVAL,[DI]
OUTPORT2,AL
OUTPORT3,AL
CALLDELAY
INCSI
INCDI
LOOPB6
RET
B7:
MOVAL,[DI]
OUTPORT1,AL
MOVAL,[BX]
OUTPORT2,AL
OUTPORT3,AL
CALLDELAY
INCDI
INCBX
LOOPB7
RET
B8:
MOVAL,[BX]
OUTPORT1,AL
MOVAL,[DI]
OUTPORT2,AL
OUTPORT3,AL
CALLDELAY
INCBX
INCDI
LOOPB8
RET
B9:
MOVAL,[DI]
OUTPORT1,AL
OUTPORT2,AL
OUTPORT3,AL
CALLDELAY
INCDI
LOOPB9
RET
A2:
MOVDX,MY8255_A
INAL,DX
CMPAL,00H
JZC1
CMPAL,01H
JZC2
CMPAL,10H
JZC3
C1:
MOVAL,[SI]
OUTPORT1,AL
OUTPORT3,AL
CALLDELAY
INCSI
LOOPC1
RET
C2:
MOVAL,[BX]
OUTPORT1,AL
OUTPORT3,AL
CALLDELAY
INCBX
LOOPC2
RET
C3:
MOVAL,[DI]
OUTPORT1,AL
OUTPORT3,AL
CALLDELAY
INCDI
LOOPC3
RET
A3:
MOVDX,MY8255_B
INAL,DX
CMPAL,00H
JZD1
CMPAL,01H
JZD2
CMPAL,10H
JZD3
D1:
MOVAL,[SI]
OUTPORT2,AL
OUTPORT3,AL
CALLDELAY
INCSI
LOOPD1
RET
D2:
MOVAL,[BX]
OUTPORT2,AL
OUTPORT3,AL
CALLDELAY
INCBX
LOOPD2
RET
D3:
MOVAL,[DI]
OUTPORT2,AL
OUTPORT3,AL
CALLDELAY
INCDI
LOOPD3
RET
DELAY:
MOV0F7FFH
E1:
MOVAX,0D00H
E2:
DECAX
JNZE2
LOOPE1