基于单片机和dac0832的波形发生器.docx
- 文档编号:28954042
- 上传时间:2023-07-20
- 格式:DOCX
- 页数:10
- 大小:211.40KB
基于单片机和dac0832的波形发生器.docx
《基于单片机和dac0832的波形发生器.docx》由会员分享,可在线阅读,更多相关《基于单片机和dac0832的波形发生器.docx(10页珍藏版)》请在冰豆网上搜索。
基于单片机和dac0832的波形发生器
基于单片机和dac0832的波形发生器
一、内容摘要
二、设计任务
三、元器件说明
四、硬件电路设计
五、程序编译
一、内容摘要
波形发生器是一种常用的信号源,广泛的应用于电子电路、自动控制系统和教学实验等领域,是现代测试领域内应用最为广泛的通用仪器之一。
在研制、生产、测试和维修各种电子元件、部件以及整机设备时,都需要有信号源。
由它产生不同频率不同波形的电压、电流信号并加到被测器件或设备上,用其他仪器观察。
测量被测仪器的输出响应,以分析确定它们的性能参数。
信号发生器是电子测量领域中最基本、应用最为广泛的一类电子仪器。
它可以产生多种波形信号,如方波、锯齿波、三角波等,因而广泛应用于通信、雷达、导航、宇航等领域。
本次课程设计使用的AT89C51单片机构成的发生器可产生三角波,正弦波和方波,波形的周期可用程序改变,并可根据需要选择单极性输出或双极性输出,具有线路简单、结构紧凑、性能优越等特点。
此设计给出了源代码,通过仿真测试,其性能指标达到了设计要求。
二、设计任务
利用DAC0832输出正弦波信号(用示波器观察输出波形),初始频率为50Hz,变频采用“+”、“-”键控制,实时测量输出信号的频率值,并分析和实测输出信号的频率范围。
具体完成以下任务:
1.完成系统的方案设计,给出系统框图。
2.完成系统的硬件设计,给出硬件电路图和系统资源分配表。
3.完成系统的软件设计,给出程序流程图和程序编写。
4.运用Proteus仿真软件对所设计的系统进行调试和仿真,直到预定的功能全部仿真通过,给出仿真结果。
5.准确、高质量地进行印刷电路板的焊接。
6.完成课程设计报告。
三、元器件说明
◆知识简介:
DAC0832当今世界在以电子信是8位分辨率的D/A转换集成芯片,与微处理器完全兼容,这个系列的芯片以其价格低廉、接口简单、转换控制容易等优点,在单片机应用系统中得到了广泛的应用。
这类D/A转换器由8位输入锁存器,8位DAC寄存器,8位DA转换电路及转换控制电路构成。
1、DAC0832的引脚及功能:
DAC0832是8分辨率的D/A转换集成芯片。
与微处理器兼容。
这个DA芯片以其价格低廉、接口简单、转换控制容易等优点,在单片机应用系统中得到广泛的应用。
D/A转换器由8位输入锁存器、8位DAC寄存器、8位D/A转换电路及转换控制电路构成。
◆应用特性:
·DAC0832是微处理器兼容型D/A转换器,可以充分利用微处理器的控制能力实现对D/A转换的控制。
这种芯片有许多控制引脚,可以和微处理器控制线相连,接受微处理器的控制,如ILE、/CS、/WR1、/WR2、/XFER端。
·有两级锁存控制功能,能够实现多通道D/A的同步转换输出。
·DAC0832内部无参考电压源;须外接参考电压源。
·DAC0832为电流输入型D/A转换器,要获得模拟电压输出时,需要外加转换电路。
◆各引脚功能说明:
D0~D7:
8位数据输入线,TTL电平,有效时间应大于90ns(否则锁存器的数据会出错);
ILE:
数据锁存允许控制信号输入线,高电平有效;
CS:
片选信号输入线(选通数据锁存器),低电平有效;
WR1:
数据锁存器写选通输入线,负脉冲(脉宽应大于500ns)有效。
由ILE、CS、WR1的逻辑组合产生LE1,当LE1为高电平时,数据锁存器状态随输入数据线变换,LE1的负跳变时将输入数据锁存;
XFER:
数据传输控制信号输入线,低电平有效,负脉冲(脉宽应大于500ns)有效;
WR2:
DAC寄存器选通输入线,负脉冲(脉宽应大于500ns)有效。
由WR2、XFER的逻辑组合产生LE2,当LE2为高电平时,DAC寄存器的输出随寄存器的输入而变化,LE2的负跳变时将数据锁存器的内容打入DAC寄存器并开始D/A转换。
IOUT1:
电流输出端1,其值随DAC寄存器的内容线性变化;
IOUT2:
电流输出端2,其值与IOUT1值之和为一常数;
Rfb:
反馈信号输入线,改变Rfb端外接电阻值可调整转换满量程精度;
Vcc:
电源输入端,Vcc的范围为+5V~+15V;
VREF:
基准电压输入线,VREF的范围为-10V~+10V;
AGND:
模拟信号地
DGND:
数字信号地
◆DAC0832三种数据输入方式:
(1)双缓冲方式:
即数据经过双重缓冲后再送入D/A转换电路,执行两次写操作才能完成一次D/A转换。
(2)单缓冲方式:
不需要多个模拟量同时输出时,可采用此种方式。
(3)直通方式:
此时两个寄存器均处于直通状态,因此要将
、
、
和
端都接数字地,ILE接高电平,使LE1、LE2均为高电平,致使两个锁存寄存器同时处于放行直通状态,数据直接送入D/A转换电路进行D/A转换。
2.CPU芯片—AT89C51
1.AT89C51概述
AT89C51是一种带4K字节闪烁可编程可擦除只读存储器的低电压,高性能CMOS8位微处理器,俗称单片机。
单片机的可擦除只读存储器可以反复擦除1000次。
该器件采用ATMEL高密度非易失存储器制造技术制造,与工业标准的MCS-51指令集和输出管脚相兼容。
2.AT89C51引脚说明
AT89C51单片机引脚图如图3-2所示。
它有40个引脚,其中包含2个专用于主电源的引脚,2个外接晶体的引脚,4个控制或与其它电源复用的引脚,以及32条输入输出I/O引脚。
四、设计原理
D/A转换器产生各种波形的原理:
利用D/A转换器输出的模拟量与输入数字量成正比关系这一特点,将D/A转换器作为微机输出接口,CPU通过程序向D/A转换器输出随时间呈现不同变化规律的数字量,则D/A转换器就可输出各种各样的模拟量,如方波、三角波、锯齿波、正弦波等。
仿真电路图(输出正弦波、三角波,锯齿波)
仿真图:
三角波:
锯齿波:
正弦波:
五:
程序编译
主程序:
#include
sbitkey2=P2^2;
sbitkey1=P2^1;
sbitkey0=P2^0;
charflag; //波型输出标置变量
bittime;
unsignedchari;
int num;
voidfrequency();
voiddelay(intz)//延时 z毫秒
{
intx,y;
for(x=z;x>0;x--)
for(y=124;y>0;y--);
}
unsignedcharsin(unsignedcharx)//正弦波
{
unsignedcharcodesin_tab[]={0x80,0x83,0x86,0x89,0x8c,0x8f,0x92,0x95,0x98,0x9c,0x9f,0xa2,0xa5,0xa8,0xab,0xae, //上半周
0xb0,0xb3,0xb6,0xb9,0xbc,0xbf,0xc1,0xc4,0xc7,0xc9,0xcc,0xce,0xd1,0xd3,0xd5,0xd8,
0xda,0xdc,0xde,0xe0,0xe2,0xe4,0xe6,0xe8,0xea,0xec,0xed,0xef,0xf0,0xf2,0xf3,0xf4,
0xf6,0xf7,0xf8,0xf9,0xfa,0xfb,0xfc,0xfc,0xfd,0xfd,0xfe,0xfe,0xff,0xff,0xff,0xff,0xff,
0xff,0xff,0xff,0xff,0xff,0xfe,0xfe,0xfd,0xfd,0xfc,0xfc,0xfb,0xfa,0xf9,0xf8,0xf7,
0xf6,0xf4,0xf3,0xf2,0xf0,0xef,0xed,0xec,0xea,0xe8,0xe6,0xe4,0xe2,0xe0,0xde,0xdc,
0xda,0xd8,0xd5,0xd3,0xd1,0xce,0xcc,0xc9,0xc7,0xc4,0xc1,0xbf,0xbc,0xb9,0xb6,0xb3,
0xb0,0xae,0xab,0xa8,0xa5,0xa2,0x9f,0x9c,0x99,0x96,0x92,0x8f,0x8c,0x89,0x86,0x83, 0x80,
0x80,0x7d,0x7a,0x76,0x73,0x70,0x6d,0x6a,0x67,0x64,0x61,0x5e,0x5b,0x58,0x55,0x52,//下半周期
0x4f,0x4c,0x49,0x46,0x43,0x41,0x3e,0x3b,0x39,0x36,0x33,0x31,0x2e,0x2c,0x2a,0x27,
0x25,0x23,0x21,0x1f,0x1d,0x1b,0x19,0x17,0x15,0x14,0x12,0x10,0x0f,0x0d,0x0c,0x0b,
0x09,0x08,0x07,0x06,0x05,0x04,0x03,0x03,0x02,0x02,0x01,0x01, 0x00,0x00,0x00,
0x00,0x01,0x01,0x02,0x02,0x03,0x03,0x04,0x05,0x06,0x07,0x08,0x09,0x0b,0x0c,0x0d,
0x0f,0x10,0x12,0x13,0x15,0x17,0x18,0x1a,0x1c,0x1e,0x20,0x23,0x25,0x27,0x2a,0x2c,
0x2e,0x30,0x33,0x35,0x38,0x3b,0x3d,0x3e,0x40,0x43,0x46,0x48,0x4b,0x4e,0x51,0x54,
0x57,0x5a,0x5d,0x5f,0x60,0x63,0x66,0x69,0x6b,0x6d,0x6f,0x72,0x74,0x76,0x78,0x7a,0x7e,0x80};
returnsin_tab[x];
}
voidDAC0832(unsignedcharx)
{
P1=x;
}
voidmain()
{
chard;
d=1;
TMOD=0X02;
num=10;
TH0=256-num; //num用来控制采样一个点所用的时间
TL0=256-num;
ET0=1; //按键接于外部中断0,与中断1
EA=1;
TR0=1;
flag=2; //开始时有输出
i=0;
while
(1)
{
if(key2==0) //按一下key3,d自加1
{
delay(5);
if(key2==0)
{
while(!
key2);
d++;
if(d==21)//当d=21,d变为1
d=1;
}
}
frequency();
if(time==1)
{
time=0;
if(i>255)
i=0;
else
i=i+d;//设置采样间隔
switch(flag) //当按键1的为输出三角波,按键2时输出正弦波
{
case0:
DAC0832(i);break;//当flag=0时,锯齿波
case1:
if(i>127)//当flag=1时,三角波
DAC0832(255-i);
else
DAC0832(i);
break;
case2:
DAC0832(sin(i));//当flag=2时,正弦波
break;
default:
break;
}
}
}
}
voidtime0()interrupt1
{
TH0=256-num;
TL0=256-num;
time=1;
}
voidfrequency()
{
if(key0==0)// //key0控制flag,频率选择
{
delay(5);
if(key0==0)//再次检测
{
while(!
key0); //等待按键释放
flag++; //按一下加1
if(flag==3)//大于2返回0
flag=0;
}
}
if(key1==0) //检测P21是否按下
{
delay(5);
if(key1==0)//再次检测
{
while(!
key1);
num=num+10; //按一下减10
if(num==250)//小于5,返回5
num=10;
}
}
}
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 基于 单片机 dac0832 波形 发生器