当前位置:文档之家› dac0832产生正弦波的c程序

dac0832产生正弦波的c程序

dac0832产生正弦波的c程序
dac0832产生正弦波的c程序

dac0832产生正弦波的c程序

下面是一个51单片机做的正弦波发生器,用的最古老的dac0832,程序很有参考价值,大家看看吧。

#include"reg52.h"

#include"absacc.h"

#include "math.h"

typedef unsigned char uint8;

typedef unsigned int uint16;

typedef unsigned long uint32;

#define DAC0832_PORT XBYTE[0X7FFF]

uint8 const code ZXB_code[256]={

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,0xfe ,0xfe,0xff,

0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff ,0xfe,0xfe,

0xfd,0xfc,0xfc,0xfb,0xfa,0xf9,0xf8,0xf7,0xf6,0xf5 ,0xf3,0xf2,

0xf0,0xef,0xed,0xec,0xea,0xe8,0xe6,0xe4,0xe3,0xe1 ,0xde,0xdc,

0xda,0xd8,0xd6,0xd3,0xd1,0xce,0xcc,0xc9,0xc7,0xc4 ,0xc1,0xbf,

0xbc,0xb9,0xb6,0xb4,0xb1,0xae,0xab,0xa8,0xa5,0xa2 ,0x9f,0x9c,

0x99,0x96,0x92,0x8f,0x8c,0x89,0x86,0x83,0x80,0x7d ,0x79,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,0xf,0xd,0xc,0xb,0x9,0x8,0x7,0 x6,0x5,0x4,

0x3,0x3,0x2,0x1,0x1,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0 x0,0x0,0x0,

0x0,0x1,0x1,0x2,0x3,0x3,0x4,0x5,0x6,0x7,0x8,0x9,0 xa,0xc,0xd,

0xe,0x10,0x12,0x13,0x15,0x17,0x18,0x1a,0x1c,0x1e, 0x20,0x23,

0x25,0x27,0x29,0x2c,0x2e,0x30,0x33,0x35,0x38,0x3b ,0x3d,0x40,

0x43,0x46,0x48,0x4b,0x4e,0x51,0x54,0x57,0x5a,0x5d ,0x60,0x63,

0x66,0x69,0x6c,0x6f,0x73,0x76,0x79,0x7c

};

void delayUser(uint16 User)

{

while(User--);

}

void main()

{

uint16 data x;

while(1)

{

for(x=0;x<256;x++)

{

DAC0832_PORT=ZXB_code[x]; }

}

}

DAC0832的波形发生器(汇编)

ORG 0000H KB:MOV P1,#0FFH;置P0口为输入方式MOV A,P1;读键值 CPL A ANL A,#1FH;屏蔽高三位 JZ KB;无键闭合继续检测 ACALL DL Y_10MS;延时10ms,去抖动MOV A,P1;再次检测有无键闭合 CPL A ANL A,#1FH JZ KB CJNE A,#01H,KB01 LCALL FANGBO;调用方波子程序SJMP KB KB01:CJNE A,#02H,KB02 LCALL JVCHI;调用锯齿波子程序SJMP KB KB02:CJNE A,#04H,KB03 LCALL TIXING;调用梯形波子程序SJMP KB KB03:CJNE A,#08H,KB04 LCALL SANJIAO;调用三角波子程序SJMP KB KB04:CJNE A,#10H,KB LCALL ZHENGXIAN;调用正弦波子程序SJMP KB ;方波子程序////////////// FANGBO: MOV DPTR,#0FFFEH LP1: MOV A,0 MOVX @DPTR,A LCALL DELAY1 MOV A,#0FFH MOVX @DPTR,A LCALL DELAY1 AJMP LP1 ;锯齿波子程序///////////// JVCHI: MOV DPTR,#0FFFEH MOV A,#0FFH WW:MOVX @DPTR,A DEC A NOP

NOP NOP AJMP WW ;梯形波子程序 TIXING: MOV DPTR,#0FFFEH MOV R2,#07DH MOV R4,#0AFH MOV A,#00H D1:MOVX @DPTR,A LCALL DELAY2 ADD A,R2 DJNZ R4,D1 AJMP D1 ;三角波子程序/////////////// SANJIAO: MOV DPTR,#0FFFEH MOV R6,#10H MOV A,#00H LOOP1: MOVX @DPTR,A ADD A,R6 CJNE A,#0FFH,LOOP1 LOOP2: MOVX @DPTR,A SUBB A,R6 CJNE A,#07H,LOOP2 AJMP LOOP1 ;正弦波子程序///////////////// ZHENGXIAN: MOV R1,#00H QZ:MOV A,R1 MOV DPTR,#SETTAB MOVC A,@A+DPTR MOV DPTR,#0FFFEH MOVX @DPTR,A INC R1 AJMP QZ ;延时程序2 DELAY2:MOV 31H,#02H PW:DJNZ 31H,PW RET ;延时子程序1 DELAY1: MOV 30H,#0FFH

单片机控制dac0832输出正弦波三角波汇编程序

单片机控制DAC0832输出正弦波三角波汇 编程序 org 0000h LJMP MAIN ORG 0003H LJMP L0 MAIN:MOV R2,#0aH ;调幅倍数 MOV R4,#01H ;增减选择 MOV R5,#01H pp: SETB EA SETB EX0 ;延时计数个数 MOV A,#0FFH ;读取波形状态 MOV P1,A MOV A,P1 JNB ACC.0,ZXB ;P1.0=0 则选择正弦波 JNB ACC.1,SJB ;P1.1=0 则选择三角波 JNB ACC.2,FB ;P1.2=0 则选择方波 AJMP PP ZXB:MOV R1,#00H .

LOOP1:MOV A,R1 MOV DPTR,#TABLE1 ;读取正弦波数据首地址 MOVC A,A+DPTR ;去表格数据 MOV B,R2 MUL AB ;幅度大小 INC R1 XCH A,R1 CLR C SUBB A,#0AH ;是否已采样半个周期 JNC LK1 ;C=0跳转,即R1大于0A,以采样半个周期以上 ADD A,#0AH XCH A,R1 ;还原R1 ADD A,#80H ;8OH为零点,取得正的幅度值 AJMP LK0 LK1:ADD A,#0AH XCH A,R1 MOV R3,A MOV A,#80H CLR C .

SUBB A,R3 ;80H为零点,取得负的幅度值LK0:MOV DPTR,#8000H ;送DA转换入口地址 MOVX DPTR,A MOV A,R5 KD:DEC R5 ;调用延时 CALL DELAY CJNE R5,#00H,KD MOV R5,A CJNE R1,#12H,LOOP1 LJMP PP FB:MOV R1,#00H LOOP2:MOV A,R1 MOV DPTR,#TABLE2 ;读取方波数据首地址 MOVC A,A+DPTR ;去表格数据 MOV B,R2 MUL AB ;幅度大小 INC R1 XCH A,R1 CLR C SUBB A,#0AH ;是否已采样半个周期 .

微机原理及其应用报告数模转换器DAC0832双缓冲输出设计

本科生实验报告 实验名称:数模转换器DAC0832双缓冲输出设计 一、实验目的 1)了解DAC0832芯片引脚、内部结构及工作原理; 2)掌握应用单片机I/O 端口控制DAC0832实现数模转换的方法; 3)掌握DAC0832单缓冲和双缓冲控制技术及编程设计方法; 二、实验原理 DAC0832是8位分辨率的数模转换集成芯片,内部采用倒T 形网络,电流型 输出模式,电流输出稳定时间为1us ,采用单电源供电。 片内部由一个8位输入锁存器、一个8位DAC 寄存器和一个8位D/A 转换器构成,内部具有双缓冲结构,可以实现单缓冲、双缓冲数字输入。 双缓冲同步控制方式 : 针对多个模拟量需要同时输出的控制系统,可以采用双缓冲同步控制方式。D/A 转换数据的输入锁存和D/A 转换输出分两步完成。首先,CPU 分时向各路D/A 转换器输入要转换的数字量并锁存在各自的输入锁存器中,然后,CPU 同时对所有D/A 转换器发出输入所存数据打入DAC 寄存器的控制信号,即可实现 VREF IOUT2 IOUT1 DGND VCC AGND RFB

多通道的同步模拟量数据输出。 应用双缓冲方式,可以在输出模拟信号的同时采集下一个数字量,有效地提高转换速度。另外,可以在多个D/A转换器同时工作时,利用双缓冲模式实现多路D/A的同步输出。 三、实验内容 通过单片机I/O端口控制两路DAC0832实现数模转换,控制方式采用双缓冲控制方式。 1.阅读理解双缓冲控制电路图,分析双缓冲模式下DAC0832与单片机接口电路的设计及两次DA转换实验在控制电路上的异同。 2.设计程序,实现双缓冲模式下DA转换的同步输出。 首先,CPU分时向各路D/A转换器输入要转换的数字量并锁存在各自的输入锁存器中,然后,通过按键控制,同时对两个DAC0832锁存数据进行数模转换,同步产生三角波、正弦波模拟输出信号。 四、实验过程 1,实验原理图 2,实验源程序 #include sbit DAC1_WR1=P2^0; sbit DAC2_WR1=P2^1; sbit DAC_SW1=P2^2; sbit DAC_SW2=P2^3;

dac0832函数信号发生器.

智能仪器课程设计 设计题目:函数信号发生器设计 学生姓名:赵鑫、罗承波、江再农 学院名称:机械工程学院 班级:测控技术与仪器062班 学号:200646000227、20064600222、20064600215 指导教师:袁锋伟、王玉林、蒋彦 2009年6月

设计任务: 设计一个函数信号发生器,具体指标如下: 1采用AT89S51及DAC0832设计函数信号发生器; 2输出函数信号为正弦波或三角波或阶梯波; 3输出信号频率为100Hz,幅度0-10V可调; 4必须具有信号输出及外接电源、公共地线接口

低频函数信号发生器的设计 摘要:信号发生器是一种常用的信号源,广泛地应用于电子电路、自动控制系统和教学实验等领域。目前使用的信号发生器大部分是利用分立元件组成的体积大,可靠性差,准确度低。课程设计需要各个波形的基本输出,这些波形的实现的具体步骤:正弦波的实现是非常麻烦的。它的实现过程是通过定义一些数据,然后执行时直接输出定义的数据就可以了。而三角波,则每次累加1,当达到初值时,每次累减1,算出延时时间,也就达到要求了,阶梯波和三角波类似!该设计使用的是AT89S51单片机构成的发生器,可产生三角波、方波、正弦波等多种波形,波形的频率可用程序控制改变。在单片机上加外围器件独立式开关,通过开关控制波形的选择。在单片机的输出端口接DAC0832进行DA转换,再通过运放进行波形调整,最后输出波形接在示波器上显示。 关键词:信号发生器;单片机;波形调整

The design of low-frequency function signal-generator Abstract:Signal generator is a common signal source, widely used in electronic circuits, automatic control systems and experiments in areas such as teaching. Currently used by most of the signal generator is composed of discrete components use bulky, poor reliability, low accuracy. Curriculum design of the basic needs of all the output waveform, the waveform of the specific steps to achieve: the realization of sine wave is very troublesome. It is through the implementation of the definition of some data, and then direct the output when the definition of the implementation of the data on it. The triangle wave, then add 1 each time, when the initial value to reach every tired by 1, calculate the delay time, they meet the requirement, the ladder-wave and triangular wave similar! The design is composed of single-chip AT89S51 generator can produce the triangular wave, square wave, sine wave, etc.,

单片机控制DAC0832输出正弦波三角波汇编程序

单片机控制DAC0832 输出正弦波三角 波 汇编程序 org 0000h LJMP MAIN ORG 0003H LJMP L0 MAIN:MOV R2,#0aH MOV R4,#01H MOV R5,#01H pp: SETB EA SETB EX0 MOV A,#0FFH MOV P1,A MOV A,P1 JNB ACC.0,ZXB JNB ACC.1,SJB JNB ACC.2,FB AJMP PP ZXB:MOV R1,#00H LOOP1:MOV A,R1 ;调幅倍数 ;增减选择 ;延时计数个数 ;读取波形状 态 ;P1.0=0 则选择正弦 波 ;P1.1=0 则选择三角波 ;P1.2=0 则选择方波

MOV DPTR,#TABLE1 ;读取正弦波数据首地址 MOVC A,@A+DPTR ;去表格数据 MOV B,R2 MUL AB ;幅度大小 INC R1 XCH A,R1 CLR C SUBB A,#0AH ;是否已采样半个周期 JNC LK1 ;C=0 跳转,即R1 大于0A,以采样半个周期以上 ADD A,#0AH XCH A,R1 ;还原R1 ADD A,#80H ;8OH 为零点,取得正的幅度值 AJMP LK0 LK1:ADD A,#0AH XCH A,R1 MOV R3,A MOV A,#80H

CLR C SUBB A,R3 ;80H 为零点,取得负的幅度值LK0:MOV DPTR,#8000H ;送DA 转换入口地址MOVX @DPTR,A MOV A,R5 KD:DEC R5 ;调用延时 CALL DELAY CJNE R5,#00H,KD MOV R5,A CJNE R1,#12H,LOOP1 LJMP PP FB:MOV R1,#00H LOOP2:MOV A,R1 MOV DPTR,#TABLE2 ;读取方波数据首地址 MOVC A,@A+DPTR ;去表格数据 MOV B,R2 MUL AB ;幅度大小 INC R1

单片机制作简易正弦波信号发生器(DAC0832)

调试时,电源的质量需要较高,不然的话,波形不易观察看清楚。 //河北工程大学信电学院自动化系 //设计调试成功 ***************将DA输出的 0V ~ -5V范围扩展成 -5V ~ +5V范围,电路如下图:*************** 如若VO2输出更平滑一些,可以在VO2处接一个小电容,滤掉高频。 (一)过程分析计算如下: ?第一级运放出来的V o1=-N*V ref/256。当V ref为+5V时,V o1=0~ -5V。 其中,V ref为参考电压,N为8位数字量输出到DAC0832 ?并结合第二级运放,是否可以推出来如下式子: V o2=-(2*V o1+V ref)=-(2*-N*V ref/256+V ref) =-(-2N*V ref/256+V ref) =2N*V ref/256-V ref 当参考电压V ref=5V时,V o2=10N/256-5。 由于要求输出的是正弦波xsinθ,幅值x不定,下面考虑幅值x分别取5和1的情况: ●当输出波形为5 sinθ时:5 sinθ=V o2 =2N*V ref/256-V ref =10N/256-5 //此时V ref=+5V 得sinθ=2N/256-1

●当输出波形为sinθ时:sinθ=V o2 =2N*V ref/256-V ref =10N/256-5 //此时V ref=+5V 得sinθ=10N/256-5 最后可以考虑输出波形的频率问题。例如要求输出特定频率的正弦波。 (二)针对输出的不同幅值波形 ?当输出波形为5 sinθ时:得sinθ=2N/256-1 这里我们要求进步为一度。具体到进步大小,和内存RAM或者ROM有关,即和你存放数据表的空间有关。放到哪个空间都可以。(这里周期采样最多256个点,步数可以为1、2、5等,自己视情况而定,这里由于是360度,256个采样点,故步的大小360/256=1.4=△θ,由此算的前三个 θ=0,1.4,2.8……,对应N为0x80,0x83,0x86……) 通过sinθ的特征和计算部分数据发现规律: 0~90度与90~180度大小是对称的;181~270度与270~359度是对称的。 故,不是所有数据都是计算的。

DAC0832电路与程序(正弦波)

DAC0832电路与程序设计(正弦波) 1.函数法正弦波 #include #include sbit cs1=P2^3; sbit rd=P2^4; unsigned char p,q; float f; int a; #define pi 3.1415926

void delay(unsigned char i) { unsigned char j; for(;i>0;i--) for(j=0;j<110;j++); } void main() { cs1=0; rd=0; while(1) { q=0; for(q=0;q<225;q++) { p=5+q; if(p>255) p=0; f=(sin(2*pi/225*q)+1)*128; a=f;

P1=a; //delay(10); } } } 2.查表法正弦波高低频叠加 #include #include sbit cs1=P2^3; sbit rd=P2^4; unsigned char p,m; unsigned char code sin[]={ 0x80,0x83,0x86,0x89,0x8D,0x90,0x93,0x96,0x99,0x9C,0x9F,0xA2,0xA5,0xA8,0x AB,0xAE, 0xB1,0xB4,0xB7,0xBA,0xBC,0xBF,0xC2,0xC5,0xC7,0xCA,0xCC,0xCF,0xD1,0x D4,0xD6,0xD8, 0xDA,0xDD,0xDF,0xE1,0xE3,0xE5,0xE7,0xE9,0xEA,0xEC,0xEE,0xEF,0xF1,0x F2,0xF4,0xF5,

DAC0832数模转换说明书

设计说明书 题目:DAC0832数模转换 专业:机电 班级:机械111 姓名:蒋德昌 学号:2011071117

摘要 波形发生器是能够产生大量的标准信号和用户定义信号,并保证 高精度、高稳定性、可重复性和易操作性的电子仪器。函数波形发 生器具有连续的相位变换、和频率稳定性等优点,不仅可以模拟各 种复杂信号,还可对频率、幅值、相移、波形进行动态、及时的控制,并能够与其它仪器进行通讯,组成自动测试系统,因此被广泛 用于自动控制系统、震动激励、通讯和仪器仪表领域。 本设计是基于DAC0832波形发生器设计与实现。系统是用AT89C51 作为系统的控制核心,外围电路采用数字/模拟转换电路DAC0832, 运放电路采用最简单的反相放大器,按键,LCD显示器等。系统通 过按键来进行整个系统的控制,按键控制切换产生正弦波,锯齿波,三角波,并且通过另外四个按键改变幅值和频率。系统经过调试和 最后的检测,可以得出本系统一下特点:性能较好,稳定性强,价 格便宜,容易操作,具有一定的实用性,最后的成品可以用在常用 的有波形发生器功能要求的应用电子仪器设备上。 关键词:单片机波形发生器 DAC0832 LCD显示器

目录 1设计任务 (4) 2系统整体方案 (4) 3仿真图 (6) 4所用硬件介绍 (9) 4.1 DAC0832 (9) 4.2 LCD1602 (10) 4.3排阻 (11) 4.4 运算放大器 (12) 4.5按键 (13) 5软件系统设计 (14) 5.1 主程序流程图 (14) 5.2波形选择的设计 (14) 5.3按键改变波形频率的设计 (15) 5.4按键改变波形振幅的设计 (15) 6总结 (16)

DAC0832多种波形产生

DAC0832波形产生锯齿波 程序如下 #include #include #define uchar unsigned char #define uint unsigned int #define DAC0832 XBYTE[0xFFFE] void DelayMs(uint ms) { uchar t; while(ms--) for(t=0;t<120;t++); } void main() { uchar i; while(1) { for(i=0;i<256;i++) DAC0832=i;

DelayMs(1); } } DAC0832波形产生稳定波 #include #include

#define uchar unsigned char #define uint unsigned int #define DAC0832 XBYTE[0xFFFE] void DelayMs(uint ms) { uchar t; while(ms--) for(t=0;t<120;t++); } void main() { while(1) { DAC0832=200; DelayMs(1); } } DAC0832波形产生方波 #include

#include #define uchar unsigned char #define uint unsigned int #define DAC0832 XBYTE[0xFFFE] void DelayMs(uint ms) { uchar t; while(ms--) for(t=0;t<120;t++); } void main() { while(1) { DAC0832=200; DelayMs(1); DAC0832=0; DelayMs(1); } }

微机原理及其应用报告:数模转换器DAC0832双缓冲输出设计

本科生实验报告 实验名称:数模转换器DAC0832双缓冲输出设计 一、实验目的 1)了解DAC0832芯片引脚、内部结构及工作原理; 2)掌握应用单片机I/O端口控制DAC0832实现数模转换的方法; 3)掌握DAC0832单缓冲和双缓冲控制技术及编程设计方法; 二、实验原理 DAC0832是8位分辨率的数模转换集成芯片,内部采用倒T形网络,电流型输出模式,电流输出稳定时间为1us,采用单电源供电。 片内部由一个8位输入锁存器、一个8位DAC寄存器和一个8位D/A转换器构成,内部具有双缓冲结构,可以实现单缓冲、双缓冲数字输入。 双缓冲同步控制方式: 针对多个模拟量需要同时输出的控制系统,可以采用双缓冲同步控制方式。D/A转换数据的输入锁存和D/A转换输出分两步完成。首先,CPU分时向各路D/A转换器输入要转换的数字量并锁存在各自的输入锁存器中,然后,CPU同时对所有D/A转换器发出输入所存数据打入DAC寄存器的控制信号,即可实现

多通道的同步模拟量数据输出。 应用双缓冲方式,可以在输出模拟信号的同时采集下一个数字量,有效地提高转换速度。另外,可以在多个D/A转换器同时工作时,利用双缓冲模式实现多路D/A的同步输出。 三、实验内容 通过单片机I/O端口控制两路DAC0832实现数模转换,控制方式采用双缓冲控制方式。 1.阅读理解双缓冲控制电路图,分析双缓冲模式下DAC0832与单片机接口电路的设计及两次DA转换实验在控制电路上的异同。 2.设计程序,实现双缓冲模式下DA转换的同步输出。 首先,CPU分时向各路D/A转换器输入要转换的数字量并锁存在各自的输入锁存器中,然后,通过按键控制,同时对两个DAC0832锁存数据进行数模转换,同步产生三角波、正弦波模拟输出信号。 四、实验过程 1,实验原理图 2,实验源程序 #include sbit DAC1_WR1=P2^0; sbit DAC2_WR1=P2^1; sbit DAC_SW1=P2^2; sbit DAC_SW2=P2^3;

DAC0832波形发生器课程设计实验报告

DAC0832波形发生器课程设计实验报告 目录 第1章系统设计方案 (2) 1.1 设计思路 (2) 1.2 方案比较与选择 (2) 第2章系统硬件设计..................................................................................2. 2.1 主控制器电路 (2) 2.2 数模转换电路 (3) 第3章系统软件设计................................................................................ .6 3.1 系统整体流程...................................................................................... .6 3.2 数模转换程序...................................................................................... .6 第4章系统调试 (8) 4.1 proteus的调试 (8) 第5章结论与总结 (11) 5.1 结论 (11) (系统总体设计与完成做一个总结,是客观的,主要包括:设计思路,设计过程,测试结果及完善改进的方向。) 5.2 总结 (11) (这是一个主观的总结,谈谈自己收获和不足等方面的内容。) 第1章系统设计方案 1.1 设计思路 (一)、课设需要各个波形的基本输出。如输出矩形波、锯齿波,正弦波。这些波形的实现的具体步骤:正弦波的实现是非常麻烦的。它的实现过程是通过定义一些数据,然后执行时直接输出定义的数据就可以了。然而为了实现100HZ的频率,终于发现,将总时间除了总步数,根据每步执行时间,算出延时时间,最终达到要求,然后建一个表通过查表来进行输出,这样主要工作任务就落到了建表的过程中。这样做的好处在于,查表所耗费的时钟周期相同,这样输出的点与点之间的距离就相等了,输出的波形行将更趋于完美,当然更让我们感到的高兴的是它输出波形的频率将近达到了100赫兹,能够满足我们设计的扩展要求了。

接口芯片dac0832的应用三角波、梯形波两种波形

课程设计(论文)
课程名称: 微型计算机组成原理与接口技术
组 别:
第十组
题 目: 接口芯片 DAC0832 的应用
院 (系): 信息与控制工程系
专业班级: 电子信息科学与技术 1202
姓 名:
学 号:
指导教师:
2015 年 月 日

西安建筑科技大学华清学院 《微机原理与接口技术》课程设计(论文)任务书
专业班级:电子信息科学与技术1202学生姓名:
一、课程设计(论文)题目
指导教师(签名):
波形发生器的设计 二、本次课程设计(论文)应达到的目的
基于 Proteus 软件,绘制 8086 微处理器和 DAC0832 外围电路,实 现波形发生器的设计。
三、本次课程设计(论文)任务的主要内容和要求(包括原始数据、技术 参数、设计要求等)
1、利用 Proteus 软件绘制由 8086 微处理器和 DAC0832 构造波形发生器; 2、利用汇编语言编写程序实现三角波、梯形波两种波形; 3、综合调试实现仿真功能。 四、应收集的资料及主要参考文献: 1.刘乐善.微型计算机接口技术及应用[M].武汉:华中科技大学出版社, 2000 2.陈红卫.微型计算机基本原理与接口技术[M].北京:科学出版社,2003 3.顾晖,梁惺彦等.基于8086和Proteus仿真[M].北京:电子工业出版社, 2011.

五、审核批准意见
教研室主任(签字)

摘要
D/A 转换器即 DAC 是指把输入的数字信号量信息转换成为对应的模拟量信 号输出。本次课设是采用 DAC0832 波形发生器来设计和实现,系统利用 8086 作 为系统的核心来控制整个电路,加上 74154TTL 4 线—16 线译码器和 74273TTL 带公共时钟复位八 D 触发器以及 7427TTL3 输入端三或非门等器件的使用来完成 整个电路的设计,从而实现三角波,方波,锯齿波和阶梯波等波形。
关键字:DAC0832 波形发生器

DAC0832波形发生器课程设计实验报告1

DAC的输出控制 班级: 1221201 专业:测控技术与仪器 姓名: xxxxx 学号: xxxxx 指导老师:周伟 东华理工大学 2015年1月12日

目录 第1章系统设计方案 (2) 1.1 设计思路 (2) 1.2 方案比较与选择 (2) 第2章系统硬件设计……………………………………………………………………….2. 2.1 主控制器电路 (2) 2.2 数模转换电路 (3) 第3章系统软件设计…………………………………………………………………….. .6 3.1 系统整体流程………………………………………………………………………….. .6 3.2 数模转换程序………………………………………………………………………….. .6 第4章系统调试 (8) 4.1 proteus的调试 (8) 第5章结论与总结 (11) 5.1 结论 (11) (系统总体设计与完成做一个总结,是客观的,主要包括:设计思路,设计过程,测试结果及完善改进的方向。) 5.2 总结 (11) (这是一个主观的总结,谈谈自己收获和不足等方面的内容。)

第1章系统设计方案 1.1 设计思路 (一)、课设需要各个波形的基本输出。如输出矩形波、锯齿波,正弦波。这些波形的实现的具体步骤:正弦波的实现是非常麻烦的。它的实现过程是通过定义一些数据,然后执行时直接输出定义的数据就可以了。然而为了实现100HZ的频率,终于发现,将总时间除了总步数,根据每步执行时间,算出延时时间,最终达到要求,然后建一个表通过查表来进行输出,这样主要工作任务就落到了建表的过程中。这样做的好处在于,查表所耗费的时钟周期相同,这样输出的点与点之间的距离就相等了,输出的波形行将更趋于完美,当然更让我们感到的高兴的是它输出波形的频率将近达到了100赫兹,能够满足我们设计的扩展要求了。而三角波,则每次累加1,当达到初值时,每次累减1,算出延时时间,也就达到要求了,矩形波和锯齿波类似。 (二)、这次做的三种波形可以相互转换,这个实现起来找了很多人最终发现,在每次循环之初进行扫描,而在每个中断入口处,对中断优先级进行设定,最终达到设计目的。 1.2 方案比较与选择 方案一:采用模拟电路搭建函数信号发生器,它可以同时产生方波、三角波、正弦波。 但是这种模块产生的不能产生任意的波形(例如梯形波),并且频率调节很不方便。 方案二:采用锁相式频率合成器,利用锁相环,将压控振荡器(VCO)的输出频率锁定 在所需频率上,该方案性能良好,但难以达到输出频率覆盖系数的要求,且电路复杂。 方案三:使用集成信号发生器发生芯片,例如AD9854,它可以生成最高几十MHZ的波形。 但是该方案也不能产生任意波形(例如梯形波),并且价格昂贵。 方案四:采用AT89C51单片机和DAC0832数模转换器生成波形,加上一个低通滤波器, 生成的波形比较纯净。它的特点是可产生任意波形,频率容易调节,频率能达到设计的500HZ 以上。性能高,在低频范围内稳定性好、操作方便、体积小、耗电少。 经比较,方案四既可满足课程设计的基本要求又能充分发挥其优势,电路简单,易控制,性价比高,所以采用该方案. 第2章系统硬件设计 2.1 主控制器电路 89C52可编程并行接口芯片有三个输入输出端口,即A口、B口和C口,对应于引脚PA7~PA0、PB7~PB0和PC7~PC0。其内部还有一个控制寄存器,即控制口。通常A口、B口作为输入输出的数据端口。C口作为控制或状态信息的端口,它在方式字的控制下,可以分成4位的端口,每个端口包含一个4位锁存器。它们分别与端口A/B配合使用,可以用作控制信号输出或作为状态信号输入。 89C52可编程并行接口芯片工作方式说明:

微机原理课程设计利用DAC0832实现正弦波输出.

微机原理与接口技术课程设计 题目:利用DAC0832实现正弦波输出. 班级:. 姓名:. 学号:. 日期:2011年12月15日

目录 1、引言 ......................................................................................................... 错误!未定义书签。 1.1背景和编写目的................................................................................... 错误!未定义书签。 1.2 术语和缩写.............................................................................................. 错误!未定义书签。 2.系统组成...................................................................................................... 错误!未定义书签。 3.硬件设计...................................................................................................... 错误!未定义书签。 3.1 8259A模块:........................................................................................... 错误!未定义书签。 3.2 DAC0832模块 ......................................................................................... 错误!未定义书签。 3.3 8086CPU模块.......................................................................................... 错误!未定义书签。 4.软件编程...................................................................................................... 错误!未定义书签。 4.1 正弦波产生的框图:............................................................................. 错误!未定义书签。 4. 2 源程序设计及程序代码......................................................................... 错误!未定义书签。 5.系统调试与仿真结果............................................................................. 错误!未定义书签。 6.仿真结果分析 (14) 7.设计日程...................................................................................................... 错误!未定义书签。 8.课程设计体会.............................................................................................. 错误!未定义书签。 9.参考文献...................................................................................................... 错误!未定义书签。 10.总电路图:................................................................................................ 错误!未定义书签。

单片机控制DAC0832输出正弦波三角波汇编程序

单片机控制DAC0832输出正弦波三角波 汇编程序 org 0000h LJMP MAIN ORG 0003H LJMP L0 MAIN:MOV R2,#0aH ;调幅倍数 MOV R4,#01H ;增减选择 MOV R5,#01H pp: SETB EA SETB EX0 ;延时计数个数 MOV A,#0FFH ;读取波形状态 MOV P1,A MOV A,P1 JNB ACC.0,ZXB ;P1.0=0 则选择正弦波 JNB ACC.1,SJB ;P1.1=0 则选择三角波 JNB ACC.2,FB ;P1.2=0 则选择方波 AJMP PP ZXB:MOV R1,#00H LOOP1:MOV A,R1

MOV DPTR,#TABLE1 ;读取正弦波数据首地址 MOVC A,@A+DPTR ;去表格数据 MOV B,R2 MUL AB ;幅度大小 INC R1 XCH A,R1 CLR C SUBB A,#0AH ;是否已采样半个周期 JNC LK1 ;C=0跳转,即R1大于0A,以采样半个周期以上 ADD A,#0AH XCH A,R1 ;还原R1 ADD A,#80H ;8OH为零点,取得正的幅度值 AJMP LK0 LK1:ADD A,#0AH XCH A,R1 MOV R3,A MOV A,#80H CLR C SUBB A,R3 ;80H为零点,取得负的幅度值 LK0:MOV DPTR,#8000H ;送DA转换入口地址

MOVX @DPTR,A MOV A,R5 KD:DEC R5 ;调用延时 CALL DELAY CJNE R5,#00H,KD MOV R5,A CJNE R1,#12H,LOOP1 LJMP PP FB:MOV R1,#00H LOOP2:MOV A,R1 MOV DPTR,#TABLE2 ;读取方波数据首地址 MOVC A,@A+DPTR ;去表格数据 MOV B,R2 MUL AB ;幅度大小 INC R1 XCH A,R1 CLR C SUBB A,#0AH ;是否已采样半个周期 JNC LK3 ;C=0跳转,即R1大于0A,以采样半个周期以上 ADD A,#0AH

DAC0832波形发生器的设计

参考文献 (9) 一、设计任务及意义 本系统是基于AT89C52单片机的数字式简易低频信号发生器。用程序实现方波、锯齿波、三角波等信号,并在Protues 电子设计平台上对方案进行了仿真。消除了传统信号发生器存在元器件分散性造成波形失真的弊端。系统采用AT89C52 单片机作为控制核心,外围采用数字/模拟转换电路(DAC0832)、按键电路。通过按键控制可产生方波、锯齿波、正弦波。波形的频率和幅度在一定范围内可任意改变,其设计简单、性能优良,可用于多种需要低频信号源的场所,具有一定的实用性。 二、设计方案选择及论证 系统方案比较 方案一:采用函数信号发生器ICL8038集成模拟芯片,(如图2-1)它是一种可以同时产生方波、三角波、正弦波的专用集成电路。但是这种模块产生的波形都不是纯净的波形,会寄生一些高次谐波分量,采用其他的措施虽可滤除一些,但不能完全滤除掉。 方案二:采用分立元件实现非稳态的多谐振振荡器,然后根据需要加入积分电路等构成正弦、矩形、三角等波形发生器。这种信号发生器输出频率范围窄,而且电路参数设定较繁琐,其频率大小的测量往往需要通过硬件电路的切换来实现,操作不方便。 方案三:采用单片机和DAC0832数模转换器生成波形,由于是软件滤波,所以不会有寄生的高次谐波分量,生成的波形比较纯净。它的特点是价格低、性能高,在低频范围内稳定性好、操作方便、体积小、耗电少。 经比较,方案三既可满足课程设计的基本要求又能充分发挥其优势,电路简单,易控制,性价比较高,所以采用该方案。 图2-1方案一方框图 D/A 键 盘 单片机 ICL8038 运算电 路 显 示 D/A 输出

微机原理--DAC0832产生正弦波

CODE SEGMENT ASSUME CS:CODE,DS:CODE,ES:CODE DAPORT EQU 0FFE0H ZXK EQU 0FFDCH ZWK EQU 0FFDDH ORG 33E0H ;=======以下程序是输出正弦波=======;START: MOV DX,DAPORT MOV BX,SEG SINDA TA ;找到数据区的段地址 MOV DS,BX MOV SI,OFFSET SINDA TA MOV BUF,00H ;DISPLAY 0832 80 MOV BUF+1,08H MOV BUF+2,03H MOV BUF+3,02H H6: MOV BX,0H; 判断次数 AGAIN: CMP BX,32 JZ H6 PUSH BX PUSH DX CALL DIS POP DX POP BX MOV AL,[SI+BX] OUT DX,AL INC BX JMP AGAIN DIS: MOV CL,20H MOV BX,OFFSET BUF DIS1: MOV AL,[BX] PUSH BX MOV BX,OFFSET LED XLA T POP BX MOV DX,ZXK OUT DX,AL MOV AL,CL MOV DX,ZWK OUT DX,AL PUSH CX MOV CX,0010H DELAY: LOOP $ POP CX CMP CL,04H

JZ EXIT INC BX SHR CL,1 JMP DIS1 EXIT: MOV AL,00H MOV DX,ZWK OUT DX,AL RET SINDA TA: DB 80H,96H,0AEH,0C5H,0D8H,0E9H,0F5H,0FDH;正弦波数据区DB 0FFH,0FDH,0F5H,0E9H,0D8H,0C5H,0AEH,96H DB 80H,66H,4CH,38H,25H,15H,09H,04H DB 00H,04H,09H,15H,25H,38H,4EH,66H BUF DB ?,?,?,?,?,? LED DB 0C0H,0F9H,0A4H,0B0H,99H,92H,82H,0F8H,80H,90H DB 88H,83H,0C6H,0A1H,86H,8EH,0FFH,0CH,0DEH,0F3H CODE ENDS END START

51单片机和dac0832输出方波、矩形波和正弦波由液晶1602显示的c语言程序

显示频率,幅度可调,可产生四种波形,正弦波,方波,锯齿波,三角波,希望你能喜欢,给你发了一张效果图,喜欢的话别忘了采纳我的回答啊 #include<> #define uchar unsigned char #define uint unsigned int #define DAdata P0 //DA数据端口 sbit DA_S1= P2^0; // 控制DAC0832的8位输入寄存器,仅当都为0时,可以输出数据(处于直通状态),否则,输出将被锁存 sbit DA_S2= P2^1; // 控制DAC0832的8位DAC寄存器,仅当都为0时,可以输出数据(处于直通状态),否则,输出将被锁存 sbit key= P3^2; uchar wavecount; //'抽点'计数 uchar THtemp,TLtemp;//传递频率的中间变量 uchar judge=1; //在方波输出函数中用于简单判别作用 uchar waveform; //当其为0、1、2时,分别代表三种波 uchar code freq_unit[3]={10,50,200}; //三种波的频率单位 uchar idata wavefreq[3]={1,1,1}; //给每种波定义一个数组单元,用于存放单位频率的个数 uchar code lcd_hang1[]={"Sine Wave " "Triangle Wave " "Square Wave " "Select Wave: " "press key! "}; uchar idata lcd_hang2[16]={"f= Hz "}; uchar code waveTH[]={ 0xfd,0xfe,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, 0xfd,0xfe,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, 0xec,0xf6,0xf9,0xfb,0xfc,0xfc,0xfd,0xfd,0xfd,0xfe}; uchar code waveTL[]={ 0x06,0x8a,0x10,0x4e,0x78,0x93,0xa8,0xb3,0xbe,0xc6, //正弦波频率调整中间值 0xac,0xde,0x48,0x7a,0x99,0xaf,0xbb,0xc8,0xd0,0xde, //三角波频率调整中间值 0x88,0x50,0x90,0x32,0x34,0xbe,0x4a,0xa3,0xe5,0x2c}; /******************************************************************** *****************************/ uchar code triangle_tab[]={ //每隔数字8,采取一次 0x00,0x08,0x10,0x18,0x20,0x28,0x30,0x38,0x40,0x48,0x50,0x58,0x60,0x68 ,0x70,0x78, 0x80,0x88,0x90,0x98,0xa0,0xa8,0xb0,0xb8,0xc0,0xc8,0xd0,0xd8,0xe0,0xe8, 0xf0,0xf8,0xff, 0xf8,0xf0,0xe8,0xe0,0xd8,0xd0,0xc8,0xc0,0xb8,0xb0,0xa8,0xa0,0x98,0x90,0 x88,0x80, 0x78,0x70,0x68,0x60,0x58,0x50,0x48,0x40,0x38,0x30,0x28,0x20,0x18,0x10 ,0x08,0x00};

相关主题
文本预览
相关文档 最新文档