课程设计基于DAC0832的波形发生器设计Word文档格式.docx
- 文档编号:13933214
- 上传时间:2022-10-15
- 格式:DOCX
- 页数:17
- 大小:982.27KB
课程设计基于DAC0832的波形发生器设计Word文档格式.docx
《课程设计基于DAC0832的波形发生器设计Word文档格式.docx》由会员分享,可在线阅读,更多相关《课程设计基于DAC0832的波形发生器设计Word文档格式.docx(17页珍藏版)》请在冰豆网上搜索。
2.1D/A转换器与单片机接口探究
D/A转换器与单片机接口具有软硬相依性。
在连接过程中要考虑到数据线、地址线、控制线的连接。
2.1.1数据线连接
D/A转换器与单片机接口要考虑到两个问题:
一个是位数,当高于8位的D/A转换器与8位数据总线的51单片机接口时,51单片机的数据必须分时输出,这时就必须考虑数据分时传送的格式和输出电压“毛刺”问题;
二是D/A转化器的内部结构,当D/A转换器的内部结构没有输入锁存器时,必须在单片机与D/A转换器之间增设锁存器或者I/O口。
最常用的是8位带锁存端的D/A转换器与8位单片机的接口,这时只需要将单片机的数据总线和D/A转换器的8位数据输入端一一对应即可。
2.1.2地址线连接
一般的D/A转换器只有片选信号,而没有地址线。
这时单片机的地址线采用全译码或者部分译码,经译码器输出控制片选信号,也可以用某一位I/O线来控制片选信号。
也有少数D/A转换器有少量的地址线,用于选中片内独立的寄存器或者选择输出通道,这时单片机执行的地址线与D/A转换器的地址线对应连接。
2.1.3控制线连接
D/A转换器主要有片选信号、写信号、及启动转换信号等,一般由单片机的有关引脚或译码器提供。
一般来说,写信号多由单片机的信号控制;
启动信号常常由片选信号与写信号的组合形式(LE1、LE2)形成,当单片机执行一条输出指令时,传送的地址使转换器的片选信号有效,由实现启动。
(具体实现原理见1.2节)
2.2DAC0832的认识
图1.1DAC0832的管脚结构
2.2.1DAC0832的结构
DAC0832的结构如图1.1所示,主要由控制逻辑电路、输入寄存器、DAC寄存器和D/A转换器构成。
由上图逻辑控制电路可知:
LE1=(+)ILE
LE2=+
由LE1控制输入寄存器读入数据,由LE2控制输入寄存器向DAC寄存器传输数据,同时开始D/A转换。
2.2.2DAC0832的引脚
DAC0832的引脚如图1.1所示:
DI0~DI7:
8位数据输入线,高电平有效。
ILE:
数据锁存允许控制输入线,高电平有效。
:
片选信号输入线,低电平有效。
输入锁存器写选通输入线,负脉冲有效。
输入锁存器的信号就是LE1。
LE1负跳变有效。
数据传送控制信号输入线,低电平有效。
DAC寄存器写选通信号输入线,负脉冲有效。
DAC锁存信号就是LE2,LE2的负跳变有效。
模拟电流输出线。
模拟电流输出线,采用单极性输出时,通常接地。
反馈信号输入线。
反馈电阻被制作在芯片里,用作外接运放的反馈电阻,为D/A转换器提供电压输出。
参考电压输入端。
要求外接一精密电压源,电压范围在-10V~+10V之间选定。
通过的符号来改变输出极性。
:
电源接口。
AGND:
模拟地。
DGND:
数字地。
注:
数字信号的高频噪声很大,如果模拟信地和数字地混合的话,就会把数字的噪声传到模拟部分,造成干扰。
如果分开的话,高频噪声可以在电源处通过滤波来消除掉。
2.2.3DAC0832的启动控制方式
DAC0832有三种启动控制方式:
(1)直通方式:
将、、、信号都接地,ILE信号引脚接高电平,只要数据传送到数据线上,两级锁存器同时开始工作,并启动D/A转换,即转换器处于非受控状态。
在这种工作方式下,转换器的数据线不能直接和单片机的数据线(P0.0~P0.7)相连接。
因为P0口分时复用为低8位的地址总线和数据总线,对输出无锁存能力,会使转换器的输出不确定。
但是可以将ADC的数据线连接到某个I/O口上,执行端口输出指令(MOVPxA)即可启动一次D/A转换。
这种方式很少采用。
(2)单缓冲方式:
两级锁存器接受同一种控制,例如将和直接接地,8位ADC锁存器处于非受控状态,只有8位输入锁存器处于受控状态,即此时仅有LE1控制ADC。
这种方式在不要求多个模拟同步输出时采用。
(3)双缓冲方式:
俩个锁存器都处于受控状态,单片机要对转换器进行两步写操作:
第一次执行指令使LE1有效,称作第一级缓冲,第二次执行指令使LE2有效,称作第二级缓冲。
这种方式的优点是数据接收和启动转换可以异步进行,可在D/A转换的同时接收下一个转换数据,以提高转换速度,还可以实现多个转换器同时启动转换,同步输出。
第三章硬件设计
3.1启动方式选择
因为本设计要求设计一个波形发生器,要求能产生正弦波、方波、三角波、梯形波、锯齿波,而且由按键控制输出的波形。
故各个波形输出并非同步输出,而是由按键控制,单个输出,并且本例只需要一个DAC,如果选择双缓冲方式就会加大不必要的难度;
直通方式不能有效的控制DAC转换,转换时可能会出现数据流失。
故选择单缓冲启动控制方式来驱动DAC0832。
3.2框图设计
根据2.1节的判断,选择AT89c51单片机作控制,实现电路框
如下:
图2.1硬件设计框图
3.3电路图设计
根据以上框图,选择+12V的基准电压,选择一级集成运放作放大电路,连接A/D转换电路图如下:
图2.2单片机与ADC的连接方式
此外加上单片机最小系统,用P1口控制输出的波形,电路连接如下:
图2.3电路原理图
第四章程序设计
4.1程序流程图
4.1.1程序设计思路
(1)因为要使用到按钮(本例中选择独立按键),必须使用到键盘扫描,首先要进行键盘消抖,然后通过扫描确定是哪个按键被按下,通过I/O口(本例中为P1口)的数据判断选择五种波形中的哪一个;
(2)根据
(1)中的结果,通过编程产生各个波形的数字信号;
(3)控制DAC转换数字信号为模拟信号。
程序框图如下:
图3.1程序设计思路
4.1.2流程图
在本流程图中分别以k1、k2、k3、k4、k5代表单片机的I/O口P1.0、P1.1、P1.2、P1.3、P1.4;
设置flag1、flag2、flag3、flag4、flag5为1时分别代表方波、正弦波、三角波、梯形波、锯齿波。
当确认按键按下时,令相对应的flagx=1,然后用连续的判断程序来选择将要输出的波形。
程序实现了只需按一下按钮便可持续输出对应的波形。
流程图如下:
图3.2程序流程图
4.2用C语言实现
根据程序流程图用C语言编程,得C语言实现的代码为:
#include<
absacc.h>
reg51.h>
#defineDAC0832XBYTE[0x7fff]
sbitk1=P1^0;
sbitk2=P1^1;
sbitk3=P1^2;
sbitk4=P1^3;
sbitk5=P1^4;
intflag1=0;
intflag2=0;
intflag3=0;
intflag4=0;
intflag5=0;
unsignedcharcodezhengxian[256]={此处省略为正弦波数字信号};
voiddelay()//延时程序
{
inti;
for(i=0;
i<
1000;
i++);
}
voidpanduan(void)//函数panduan用于扫描按键状态,判断输出波形
{
if(k1==1){//按键消抖
delay();
if(k1==1)//通过赋值flag选择波形
flag1=1;
flag2=0;
flag3=0;
flag4=0;
flag5=0;
}
if(k2==1){
if(k2==1)
flag1=0;
flag2=1;
if(k3==1){
if(k3==1)
flag3=1;
if(k4==1){
if(k4==1)
flag4=1;
if(k5==1){
if(k5==1)
flag5=1;
voidboxing(void)//函数boxing用于产生选择好的波形
if(flag1==1)//产生方波
{
DAC0832=0x00;
DAC0832=0xff;
}
elseif(flag2==1)//产生正弦波
inti;
for(i=0;
256;
i++){
DAC0832=zhengxian[i];
elseif(flag3==1)//三角波
255;
i++)
DAC0832=i;
for(i=255;
i>
0;
i--)
elseif(flag4==1)//梯形波
DAC0832=0;
DAC0832=0XFF;
elseif(flag5==1)//锯齿波
voidmain(){//主函数
P1=0x00;
while
(1)
panduan();
boxing();
4.3用汇编语言实现
在用C语言实现设计之后,我又尝试使用汇编语言完成任务,由于对汇编语言还不够熟悉,只做到了以开关控制的矩形波、三角波、梯形波和锯齿波。
程序为:
START:
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 课程设计 基于 DAC0832 波形 发生器 设计