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

XXXX学院课程设计报告课程名称:单片机课程设计院系:电气与信息工程学院专业班级:自动化09102班学生姓名: X X指导教师: X X X完成时间: 2012年6月10日报告成绩:简易波形发生器简易波形发生器是一种常用的信号源,它广泛地应用在电子技术实验、自动控制系统和其他科研领域。
本系统能够准确产生方波、正弦波、锯齿波及三角波。
基于数模转换芯片DAC0832技术的简易波形发生器由六个部分组成:MCU模块、波形发生模块、静态LED 数码管显示模块、键盘输入模块、在线下载模块以及电源模块。
MCU模块采用STC89C51RC 单片机进行数据处理,波形发生模块采用DAC0832及LM324进行波形发生及变换,静态LED数码管显示模块利用3位八段共阳极数码管及3个74LS164显示当前波形频率,键盘模块采取外部中断方式扫描键值,在线下载模块选用MAX232芯片进行单片机程序下载,电源模块使用三端稳压器为系统提供能源。
运用Altium Designer软件绘制了单元电路以及总体电路图,借助Proteus仿真软件对电路进行了虚拟实验,通过仿真分析,满足了课题性能指标的要求,成功地实现了简易波形发生器的设计。
关键词波形发生器;DAC0832;STC89C51RC;静态显示Simple waveform generator is a common source, it is widely used in the experiment of electronic technology, automatic control system and other scientific fields. The system can accurately produce a square wave, sine wave, sawtooth wave and triangle wave. Based on the digital-analog conversion chip DAC0832 simple waveform generator consists of six parts: MCU module, waveform generator module, static LED digital display module, keyboard input module, the download module and power supply. The MCU STC89C51RC microcontroller is for data processing. The waveform generation module which made of DAC0832 and LM324 is used to generate waveform and transform. The static LED digital display module uses three eight out common anode digital and three 74LS164 to show the current waveform frequency. The keyboard module to take external interrupt the scan key. Download module use a MAX232 chip microcontroller program download. The power supply uses three-terminal regulator to provide energy for the system. Altium Designer were used to draw a unit circuit as well as the overall circuit. With Proteus simulation software to conduct virtual experiments on the circuit, simulation analysis, to meet the requirements of the subject of performance indicators, the successful implementation of a simple waveform generator design.Keywords waveform generator ;DAC0832;STC89C51RC; static LED digital display目录摘要 (I)Abstract (II)第一章简易波形发生器的方案设计 (1)1.1简易波形发生器的方案分析与比较 (1)1.1.1 基于数模转换芯片DAC0832的简易波形发生器的设计 (1)1.1.2 基于MAX038函数发生器的简易波形发生器的设计 (1)1.1.3 基于DDS波形发生技术的简易波形发生器的设计 (2)1.2 简易波形发生器的总体结构说明 (2)第二章简易波形发生器的电路设计 (3)2.1 MCU模块 (3)2.1.1 STC89C51RC单片机 (3)2.1.2 复位电路 (5)2.1.3 时钟电路 (5)2.2 DAC0832模块 (5)2.2.1 DAC0832芯片基本介绍 (6)2.2.2 DAC0832波形发生电路 (7)2.3 静态LED数码管显示模块 (7)2.3.1 移位寄存器74LS164 (7)2.3.2 静态显示电路 (8)2.4 键盘输入模块 (8)2.5 在线下载模块 (9)2.6 电源模块 (9)2.7 总体电路说明 (9)第三章简易波形发生器的程序设计 (10)3.1系统接口定义 (10)3.2 主程序 (10)3.3 外部总中断1中断服务程序 (11)第四章简易波形发生器仿真分析 (13)4.1初始界面 (13)4.2 波形发生仿真 (13)4.2.1 正弦波的仿真分析 (13)4.2.2 锯齿波发生仿真分析 (14)4.2.3 三角波发生仿真分析 (15)4.2.4 方波发生仿真分析 (17)总结 (19)参考文献 (20)致谢 (21)附录1:简易波形发生器原理图 (22)附录2:简易波形发生器Protues仿真图 (23)附录3:简易波形发生器元器件明细表 (24)附录4:简易波形发生器源程序 (25)第一章 简易波形发生器的方案设计简易波形发生器是一种常用的信号源,它广泛地应用在电子技术实验、自动控制系统和其他科研领域。
单片机数模转换器DAC0832设计实验报告(附程序)

实验名称:数模转换器DAC0832设计实验学生姓名:xx 学号:xx 班级:测控xx班时间:课程名称:微机机原理及应用教师:成绩:一、实验目的1)了解DAC0832芯片引脚、内部结构及工作原理;2)掌握应用单片机I/O端口控制DAC0832实现数模转换的方法;二、实验内容1. 通过单片机I/O端口控制DAC0832实现数模转换,控制方式采用单缓冲方式,通过按键TRI/SIN选择输出,分别产生锯齿波、方波、正弦波。
1)绘制DAC0832与单片机接口电路原理图;2)参考PPT课件内容,设计程序,实现信号选择输出功能;2. 扩展功能:增加按键,通过按键控制调节输出信号的频率变化。
接口电路图设计参考下图所示:三、设计参考:正弦信号数据表:uchar code sine_tab[256]={0x80,0x83,0x86,0x89,0x8d,0x90,0x93,0x96,0x99,0x9c,0x9f,0xa2,0xa5,0xa8,0xab,0 xae,0xb1,0xb4,0xb7,0xba,0xbc,0xbf,0xc2,0xc5,0xc7,0xca,0xcc,0xcf,0xd1,0xd4,0xd6, 0xd8,0xda,0xdd,0xdf,0xe1,0xe3,0xe5,0xe7,0xe9,0xea,0xec,0xee,0xef,0xf1,0xf2,0xf4, 0xf5,0xf6,0xf7,0xf8,0xf9,0xfa,0xfb,0xfc,0xfd,0xfd,0xfe,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xfe,0xfd,0xfd,0xfc,0xfb,0xfa,0xf9,0xf8,0xf7,0xf6,0xf5, 0xf4,0xf2,0xf1,0xef,0xee,0xec,0xea,0xe9,0xe7,0xe5,0xe3,0xe1,0xde,0xdd,0xda,0xd8, 0xd6,0xd4,0xd1,0xcf,0xcc,0xca,0xc7,0xc5,0xc2,0xbf,0xbc,0xba,0xb7,0xb4,0xb1,0xa e,0xab,0xa8,0xa5,0xa2,0x9f,0x9c,0x99 ,0x96,0x93,0x90,0x8d,0x89,0x86,0x83,0x80, 0x80,0x7c,0x79,0x76,0x72,0x6f,0x6c,0x69,0x66,0x63,0x60,0x5d,0x5a,0x57,0x55,0x 51,0x4e,0x4c,0x48,0x45,0x43,0x40,0x3d,0x3a,0x38,0x35,0x33,0x30,0x2e,0x2b,0x29 ,0x27,0x25,0x22,0x20,0x1e,0x1c,0x1a,0x18,0x16 ,0x15,0x13,0x11,0x10,0x0e,0x0d,0 x0b,0x0a,0x09,0x08,0x07,0x06,0x05,0x04,0x03,0x02,0x02,0x01,0x00,0x00,0x00,0x 00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x02 ,0x02,0x03,0x04,0x05,0x0 6,0x07,0x08,0x09,0x0a,0x0b,0x0d,0x0e,0x10,0x11,0x13,0x15 ,0x16,0x18,0x1a,0x1c, 0x1e,0x20,0x22,0x25,0x27,0x29,0x2b,0x2e,0x30,0x33,0x35,0x38,0x3a,0x3d,0x40,0x 43,0x45,0x48,0x4c,0x4e,0x51,0x55,0x57,0x5a,0x5d,0x60,0x63,0x66 ,0x69,0x6c,0x6 f,0x72,0x76,0x79,0x7c,0x80};四.实验报告①实现调频功能的中断程序:void int0() interrupt 0//外部中断0,用以控制调节延时程序次数,达到调节频率的作用{counter++; //外部中断0触发一次,延时程序调用次数加1}②延时程序:void delay(){int i;for(i=0;i<10;i++){}} //延时子程序③锯齿波程序:#include<reg51.h>sbit MR=P2^7;void main (void){int num;int j;MR=0;while(1){for(num =0; num <=255; num++){ P1=num;for(j=0;j<counter;j++)delay(); //调用延时子程序}}}运行截图:调频前:调频后:④正弦波程序#include<reg51.h>sbit MR=P2^7;void main (void){unsigned char code sine_tab[256]= //正弦波字表{0x80,0x83,0x86,0x89,0x8d,0x90,0x93,0x96,0x99,0x9c,0x9f,0xa2,0xa5,0xa8,0xab,0 xae,0xb1,0xb4,0xb7,0xba,0xbc,0xbf,0xc2,0xc5,0xc7,0xca,0xcc,0xcf,0xd1,0xd4,0xd6, 0xd8,0xda,0xdd,0xdf,0xe1,0xe3,0xe5,0xe7,0xe9,0xea,0xec,0xee,0xef,0xf1,0xf2,0xf4, 0xf5,0xf6,0xf7,0xf8,0xf9,0xfa,0xfb,0xfc,0xfd,0xfd,0xfe,0xff,0xff,0xff,0xff,0xff,0xff, 0xff,0xff,0xff,0xff,0xff,0xff,0xfe,0xfd,0xfd,0xfc,0xfb,0xfa,0xf9,0xf8,0xf7,0xf6,0xf5, 0xf4,0xf2,0xf1,0xef,0xee,0xec,0xea,0xe9,0xe7,0xe5,0xe3,0xe1,0xde,0xdd,0xda,0xd8, 0xd6,0xd4,0xd1,0xcf,0xcc,0xca,0xc7,0xc5,0xc2,0xbf,0xbc,0xba,0xb7,0xb4,0xb1,0xa e,0xab,0xa8,0xa5,0xa2,0x9f,0x9c,0x99 ,0x96,0x93,0x90,0x8d,0x89,0x86,0x83,0x80, 0x80,0x7c,0x79,0x76,0x72,0x6f,0x6c,0x69,0x66,0x63,0x60,0x5d,0x5a,0x57,0x55,0x 51,0x4e,0x4c,0x48,0x45,0x43,0x40,0x3d,0x3a,0x38,0x35,0x33,0x30,0x2e,0x2b,0x29 ,0x27,0x25,0x22,0x20,0x1e,0x1c,0x1a,0x18,0x16,0x15,0x13,0x11,0x10,0x0e,0x0d,0 x0b,0x0a,0x09,0x08,0x07,0x06,0x05,0x04,0x03,0x02,0x02,0x01,0x00,0x00,0x00,0x 00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x02,0x02,0x03,0x04,0x05,0x0 6,0x07,0x08,0x09,0x0a,0x0b,0x0d,0x0e,0x10,0x11,0x13,0x15,0x16,0x18,0x1a,0x1c, 0x1e,0x20,0x22,0x25,0x27,0x29,0x2b,0x2e,0x30,0x33,0x35,0x38,0x3a,0x3d,0x40,0x 43,0x45,0x48,0x4c,0x4e,0x51,0x55,0x57,0x5a,0x5d,0x60,0x63,0x66,0x69,0x6c,0x6f,0x72,0x76,0x79,0x7c,0x80};int num;int j;MR=0;while(1){for(num =0; num <=255; num++){ P1=sine_tab[num];for(j=0;j<counter;j++)delay(); //调用延时子程序}}}运行截图:调频前:调频后:⑤方波程序:#include<reg51.h>sbit MR=P2^7;void main (void){ int num;int j;MR=0;while(1){int b;for(num=0;num<=255;b++){if(num<128){ P1=0x00;for(j=0;j<counter;j++)//当counter小于128时,P1输出0x00对应低电平delay();}else{P1=0xFF;//当num大于或等于128时,P1输出0xFF对应高电平for(j=0;j<counter;j++)delay();}}}调频前:调频后:主程序#include<reg51.h>sbit MR=P2^7;sbit P2_0=P2^0;sbit P2_1=P2^1;int counter=0;//设置延时程序次数变量counter,调节频率unsigned char code sine_tab[256]= //正弦波字表{0x80,0x83,0x86,0x89,0x8d,0x90,0x93,0x96,0x99,0x9c,0x9f,0xa2,0xa5,0xa8,0xab,0 xae,0xb1,0xb4,0xb7,0xba,0xbc,0xbf,0xc2,0xc5,0xc7,0xca,0xcc,0xcf,0xd1,0xd4,0xd6, 0xd8,0xda,0xdd,0xdf,0xe1,0xe3,0xe5,0xe7,0xe9,0xea,0xec,0xee,0xef,0xf1,0xf2,0xf4, 0xf5,0xf6,0xf7,0xf8,0xf9,0xfa,0xfb,0xfc,0xfd,0xfd,0xfe,0xff,0xff,0xff,0xff,0xff,0xff, 0xff,0xff,0xff,0xff,0xff,0xff,0xfe,0xfd,0xfd,0xfc,0xfb,0xfa,0xf9,0xf8,0xf7,0xf6,0xf5, 0xf4,0xf2,0xf1,0xef,0xee,0xec,0xea,0xe9,0xe7,0xe5,0xe3,0xe1,0xde,0xdd,0xda,0xd8, 0xd6,0xd4,0xd1,0xcf,0xcc,0xca,0xc7,0xc5,0xc2,0xbf,0xbc,0xba,0xb7,0xb4,0xb1,0xa e,0xab,0xa8,0xa5,0xa2,0x9f,0x9c,0x99,0x96,0x93,0x90,0x8d,0x89,0x86,0x83,0x80,0 x80,0x7c,0x79,0x76,0x72,0x6f,0x6c,0x69,0x66,0x63,0x60,0x5d,0x5a,0x57,0x55,0x5 1,0x4e,0x4c,0x48,0x45,0x43,0x40,0x3d,0x3a,0x38,0x35,0x33,0x30,0x2e,0x2b,0x29, 0x27,0x25,0x22,0x20,0x1e,0x1c,0x1a,0x18,0x16,0x15,0x13,0x11,0x10,0x0e,0x0d,0x 0b,0x0a,0x09,0x08,0x07,0x06,0x05,0x04,0x03,0x02,0x02,0x01,0x00,0x00,0x00,0x0 0,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x02,0x02,0x03,0x04,0x05,0x06, 0x07,0x08,0x09,0x0a,0x0b,0x0d,0x0e,0x10,0x11,0x13,0x15,0x16,0x18,0x1a,0x1c,0x 1e,0x20,0x22,0x25,0x27,0x29,0x2b,0x2e,0x30,0x33,0x35,0x38,0x3a,0x3d,0x40,0x43 ,0x45,0x48,0x4c,0x4e,0x51,0x55,0x57,0x5a,0x5d,0x60,0x63,0x66,0x69,0x6c,0x6f,0 x72,0x76,0x79,0x7c,0x80}; //正弦转换字符void delay(){int i;for(i=0;i<10;i++){}}//延时子程序void int0() interrupt 0//外部中断0,用以控制调节延时程序次数,达到调节频率的作用{counter++;//外部中断0触发一次,延时程序调用次数加1}void main(){int num;int j;EA=1;//中断总允许使能EX0=1;//外部中断0使能IT0=1;//外部中断0下降沿触发MR=0;//P2^7输出低电平,芯片正常工作while(1){if(P2_0==0&&P2_1==1) //P2_1为高电平,P2_0为低电平输出锯齿波{for(num=0;num<256;num++){P1=num; //P1直接输出numfor(j=0;j<counter;j++)delay(); //调用延时子程序}}if(P2_0==1&&P2_1==0)//P2_1为低电平,P2_0为高电平输出正弦波{P1=sine_tab[num];//P1端口输出正弦波字符数组for(j=0;j<counter;j++)delay(); //调用延时子程序}}if((P2_0==0&&P2_1==0)||(P2_0==1&&P2_1==1))//P2_1为低电平P2_0为低电平以及P2_1为高电平P2_0为高电平时输出矩形波for(num=0;num<256;num++){if(num<128)//当num小于128时,P1输出0x00对应低电平{P1=0x00;for(j=0;j<counter;j++)delay();}else{P1=0xFF;//当num大于或等于128时,P1输出0xFF对应低电平for(j=0;j<counter;j++)delay();}}}}五.总结在该实验的设计过程中,首先单独写出锯齿波、正弦波以及方波的程序,并写出延时程序以及外部中断0程序。
波形发生器实验---微机原理

L03:
;写 0FH,输出高电平
L04:
UP1:
INC AL CMP AL,DANUM JNE UP1 DOWN1: MOV DX,DA0832 OUT DX,AL CALL DALLY DEC CMP JNE JMP AL AL,00H DOWN1 LOOP1
SAWTOOTH: MOV FLAG,3 MOV AL,00H L01: MOV DX,DA0832 OUT DX,AL CALL DALLY
正弦波 Y=ASIN(X):首先利用正弦函数算出各个点,一共取了 64 个点,存放在内存(SIN) 中,用 AL 指向内存首址,取第一个数,然后输出,接着内存地址加 1,延时一段时间,再取下 一个数,这样一直下去,直到读完 64 个数,并依次输出每一个点,就可得到正弦波。利用键盘
菜单选择,按键 4 就有正弦波产生。最后按键 5 可退出程序。
参考程序如下所示: IOY0 EQU 0DA00H ;片选 IOY0 对应的端 口始地址 DA0832 EQU IOY0+00H*4 ;DA0832 的端口地址 DANUM EQU 0FFH STACK1 SEGMENT STACK DW 256 DUP(?) STACK1 ENDS DATA SEGMENT STR1 DB '1. Triangle Square Wave ',0ah,0dh,'$' ;定义显示的 字符串 方波 STR2 DB '2. Triangle Delta Wave ',0ah,0dh,'$' ;定义显示的 字符串 三角波 STR3 DB '3. Triangle Sawtooth Wave ',0ah,0dh,'$' ;定义显示的 字符串 锯齿波 STR4 DB '4. Triangle Sine Wave ',0ah,0dh,'$' ;定义显示的 字符串 正弦波 STR5 DB '5. Exit ',0ah,0dh,'$' ;定义显示的字符串 正弦波 FLAG DB 0 SIN DB 00H,02H,05H,09H,0FH,15H,1DH,25H DB 2EH,38H,43H,4FH,5AH,67H,73H,7FH DB 80H,8CH,98H,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,98H,8CH,80H DB 7FH,73H,67H,5AH,4FH,43H,38H,2EH DB 25H,1DH,15H,0Fh,09H,05H,02H,00H DATA ENDS CODE SEGMENT USE16 ASSUME CS:CODE,DS:DATA,SS:STACK1 START: MOV MOV MOV MOV AX,DATA DS,AX AX,STACK1 SS,AX ;显示字符串 1
波形发生器设计报告

波形发生器设计报告摘要本设计是以AT89C52为控制模块,控制DAC0832输出正弦波、方波、三角波,并利用倍频器输出波形的频率可达到1MHz。
关键词:AT89C52;DAC0832;倍频器;波形发生器。
设计任务:(1)能产生正弦波、方波、三角波;(2)频率、幅度可以设定;(3)输出频率能达到1MHZ。
发挥部分(自选)。
总体设计方案:该系统功能主要由AT89C52单片机通过相应的软件编程实现程序逻辑功能并结合相关的周围硬件电路而实现。
程序流程图-原理图本设计分为以下模块:一、控制模块二、键盘输入模块三、产生波形模块四、显示模块仿真波形一、三角波二、方波三、正弦波总结本次课程设计所用到的程序除LCD显示部分及DAC0832部分参考了其他的程序外全系独立编写,通过这一课程设计,使在课堂上所学习的单片机语言应用能力获得了大的提高,也极大的增强了编写调试程序和硬件连接的能力。
编程工作是一项繁重,系统的脑力劳动,需要编程者具有足够的耐心和毅力,耐心细致的工作态度和严谨务实的工作作风。
本次所编写的多功能波形发生器的源程序总共将近二百多行,系统庞大而且繁杂,在编写过程中,所遇到的问题非常多,整个编写过程就是一个不断面临问题,不断解决问题的过程,这一过程充满了挑战性,也充满了各种困难,但不断的追踪错误的来源也是很有趣味的一件事情。
出现了运行错误后,就处处添加显示代码,让LCD将它的运算过程中的数据显示出来,追踪错误的源头,最终会发现在运算过程的某一步上出现了异常,然后分析问题为什么会出在这里,找到程序中隐藏的逻辑错误并修改,找到错误的所在并解决掉是非常具有吸引力的。
通过这次课程设计使对单片机语言的理解和掌握上有了很大的进步,以前所了解的单片机语言仅限于一些片面的知识,通过这次编程,将这些零零碎碎的知识汇集起来,编写出了一个完整的系统,并且对单片机语言的应用能力有了极大的提高,对于硬件接口的问题也有了深刻的了解,体会到了单片机的独具一格的思想。
单片机实验DA转换器DAC0832的应用的报告

单片机应用技术课程报告实验名称D/A转换器DAC0832的应用实验时间2020年6月30 日学生姓名实验地点钉钉群线上同组人员专业班级1、实验目的(1)了解D/A转换与单片机的接口方法;(2)了解D/A转换芯片DAC0832的性能及编程方法(3)掌握D/A转换的程序设计方法。
2、任务设计要求(1)掌握实验原理,读懂实验线路图,了解所用到的元器件特性。
(2)会绘制电路原理图,会连接电路原理图。
(3)将编制的锯齿波、方波程序运行,用示波器观察波形。
使用STC89C51单片机、DAC0832芯片,设计一个波形发生器,能产生正弦波、方波、三角波、锯齿波,梯形波,要求通过编程实现不同波型的产生,通过按键实现不同波形输出的切换。
3、总体设计方案4、硬件电路设计5、软件程序设计#include<absacc.h>#include<reg51.h>#define DAC0832 XBYTE[0x7fff]sbit k1=P1^0;sbit k2=P1^1;sbit k3=P1^2;sbit k4=P1^3;sbit k5=P1^4;int flag1=0;int flag2=0;int flag3=0;int flag4=0;int flag5=0;unsigned char code zhengxian[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,0xf4,0xf3,0xf2,0xf0,0xef,0xed,0xec,0xea,0xe8,0xe6,0xe4,0xe2,0xe0,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, 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,0x01,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, 0x00,0x00,0x00,0x01,0x01,0x02,0x03,0x03,0x04,0x05,0x06,0x07,0x08, 0x09,0x0a,0x0c,0x0d,0x0e,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 delay()//延时程序{int i;for(i=0;i<1000;i++);}void panduan (void)//函数panduan用于扫描按键状态判断输出波形{if (k1==0){//按键消抖delay();if (k1==0)//通过赋值flag选择波形flag1=1;flag2=0;flag3=0;flag4=0;flag5=0;}if(k2==0){delay();if (k2==0)flag1=0;flag2=1;flag3=0;flag4=0;flag5=0;}if (k3==0){//补充程序flag1=0;flag2=0;flag3=1;flag4=0;flag5=0;。
dac0832课程设计

dac0832课程设计一、课程目标知识目标:1. 让学生掌握 dac0832 芯片的基本原理和功能,了解其在数字信号处理中的应用。
2.使学生能够运用 dac0832 芯片进行模拟信号与数字信号之间的转换,理解转换过程中的关键技术。
3.让学生了解 dac0832 芯片的内部结构,掌握相关寄存器的配置方法。
技能目标:1. 培养学生动手实践能力,能够独立完成 dac0832 芯片的连接、编程和调试工作。
2. 提高学生的问题解决能力,使其在遇到 dac0832 相关问题时,能够运用所学知识进行分析和解决。
情感态度价值观目标:1. 培养学生对电子技术、数字信号处理等领域的兴趣,激发其探索精神。
2. 培养学生的团队协作意识,使其在课程实践过程中学会与他人合作,共同解决问题。
3. 引导学生认识到电子技术在日常生活和国家发展中的重要作用,培养其社会责任感。
课程性质:本课程为电子技术实践课程,旨在帮助学生将理论知识与实际应用相结合,提高学生的动手实践能力和问题解决能力。
学生特点:学生已具备一定的电子技术基础和编程能力,对 dac0832 芯片有一定了解,但实践经验不足。
教学要求:结合学生特点和课程性质,注重理论与实践相结合,强化实践环节,引导学生主动参与,培养其独立思考和解决问题的能力。
通过课程目标的分解和实现,使学生在知识、技能和情感态度价值观方面均取得明显的学习成果。
二、教学内容1. dac0832芯片基本原理及功能:介绍dac0832芯片的内部结构、工作原理、性能参数,使学生对其有全面的认识。
教材章节:第三章“DAC转换器”第2节“dac0832芯片”2. dac0832芯片的连接与编程:讲解dac0832芯片的引脚功能、连接方法以及编程技术,使学生能够实际操作和使用dac0832芯片。
教材章节:第三章“DAC转换器”第3节“dac0832芯片的连接与编程”3. 模拟信号与数字信号转换:分析dac0832芯片在模拟信号与数字信号转换过程中的关键技术,提高学生对转换过程的理解。
函数波形发生器实训报告

一、实训背景函数波形发生器是一种能够产生正弦波、方波、三角波等多种周期性波形的电子设备。
在现代电子技术中,波形发生器被广泛应用于通信、信号处理、自动控制等领域。
本实训旨在通过设计和实现一个基于51单片机的函数波形发生器,提高学生对单片机应用系统的设计与实现能力。
二、实训目标1. 掌握51单片机的基本原理和编程方法;2. 了解DAC0832数字模拟转换器的工作原理;3. 学会使用LM324运算放大器进行信号处理;4. 设计并实现一个能够产生正弦波、方波、三角波等多种周期性波形的函数波形发生器。
三、实训内容1. 硬件设计(1)51单片机:作为主控单元,负责控制整个系统的运行。
(2)DAC0832:将51单片机输出的数字信号转换为模拟信号。
(3)LM324运算放大器:对模拟信号进行放大、滤波等处理。
(4)电阻、电容、二极管等元件:构成滤波电路、限幅电路等。
2. 软件设计(1)正弦波发生器:采用查表法实现,将正弦波数据存储在单片机的存储器中,通过定时器产生中断,不断读取数据,经DAC0832输出。
(2)方波发生器:采用比较法实现,通过改变比较器的阈值,使输出波形在0和5V之间切换。
(3)三角波发生器:采用积分法实现,通过不断改变积分器的输入电压,使输出波形在0和5V之间变化。
3. 系统集成与调试将硬件电路连接完毕后,进行软件编程。
在编程过程中,不断调试,确保各个模块能够正常工作。
最后,将各个模块集成在一起,形成一个完整的函数波形发生器。
四、实训过程1. 硬件电路搭建(1)按照设计方案,连接51单片机、DAC0832、LM324运算放大器等元件。
(2)搭建滤波电路、限幅电路等。
2. 软件编程(1)编写正弦波发生器程序,实现正弦波输出。
(2)编写方波发生器程序,实现方波输出。
(3)编写三角波发生器程序,实现三角波输出。
3. 系统调试(1)检查各个模块是否正常工作。
(2)调整参数,使输出波形满足要求。
(3)测试不同频率、幅度下的波形输出。
基于DAC0832波形发生器

湖南科技大学课程设计(论文)题目基于DAC0832波形发生器二〇一二年一月一日目录目录I一、实验目的及任务- 1 -1.1 实验目的- 1 -1.2 实验任务- 1 -二、实验设备、实验分析- 1 -2.1 AEDK实验系统介绍- 1 -2.2 实验分析- 2 -三、设计方案- 2 -3.1 8255芯片简介- 2 -3.2 DAC0832芯片简介- 3 -3.3 设计原理- 4 -四、接线图电路原理图- 5 -五、程序流程图- 7 -5.1 子程序设计- 7 -5.2 总程序设计- 8 -六、调试方法及及实验结果- 9 -七、总结与体会- 9 -附录- 9 -源程序- 10 -致- 11 -参考文献- 12 -一、实验目的及任务1.1 实验目的1.掌握计算机应用系统特别是微机接口系统的设计。
2.掌握接口电路设计技术。
初步掌握电子设计软件Protel99使用。
3.掌握微机接口程序的编制与调试技术。
1.2 实验任务利用AEDK实验系统以及相关设备制作一个基于数/模转换器DAC0832的波形发生器,具备基本的功能。
二、实验设备、实验分析2.1 AEDK实验系统介绍2.1.1 系统组成AEDK8688ET微机教学实验系统是航虹高科技实业公司在继承8688T和8688TI微机教学实验机优点的基础上,广泛地吸取用户的使用意见和建议,结合8086188仿真技术,推出的新一代微机教学实验系统。
本实验系统由AEDK8688ET实验机外配计算机和其他一些附件及选配件组成该实验系统,既可以在无PC机的状态下独立运行,又可以接PC机通过串口或ISA总线运行。
在扩展功能上,可以通过实验机的25芯插座外接机电实验平台,做机电一体化实验。
系统硬件组成:主机:AEDK8688ET实验板附件:PC机缓冲驱动卡(UPCXT)、60芯联接电缆、RS-232通讯电缆、维修测试板(U88ETF)及联接电缆、硬导线一束、电源电缆。
选配件:专用电源、机电实验平台。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
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赫兹,能够满足我们设计的扩展要求了。
而三角波,则每次累加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可编程并行接口芯片工作方式说明:方式0:基本输入/输出方式。
适用于三个端口中的任何一个。
每一个端口都可以用作输入或输出。
输出可被锁存,输入不能锁存。
方式1:选通输入/输出方式。
这时A口或B 口的8位外设线用作输入或输出,C口的4条线中三条用作数据传输的联络信号和中断请求信号。
方式2:双向总线方式。
只有A口具备双向总线方式,8位外设线用作输入或输出,此时C口的5条线用作通讯联络信号和中断请求信号。
原理框图:硬件设计2.2 数模转换电路由于单片机产生的是数字信号,要想得到所需要的波形,就要把数字信号转换成模拟信号,所以该文选用价格低廉、接口简单、转换控制容易并具有8位分辨率的数模转换器DAC0832。
DAC0832主要由8位输入寄存器、8位DAC寄存器、8位D/A转换器以及输入控制电路四部分组成。
但实际上,DAC0832输出的电量也不是真正能连续可调,而是以其绝对分辨率为单位增减,是准模拟量的输出。
DAC0832是电流型输出,在应用时外接运放使之成为电压型输出。
1、DAC0832的引脚及功能:DAC0832是8分辨率的D/A转换集成芯片。
与微处理器兼容。
这个DA芯片以其价格低廉、接口简单、转换控制容易等优点,在单片机应用系统中得到广泛的应用。
D/A转换器由8位输入锁存器、8位DAC寄存器、8位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转换。
这种方式可在D/A转换的同时,进行下一个数据的输入,可提高转换速率。
更为重要的是,这种方式特别适用于要求同时输出多个模拟量的场合。
此时,要用多片DAC0832组成模拟输出系统,每片对应一个模拟量。
◆(2)单缓冲方式:不需要多个模拟量同时输出时,可采用此种方式。
此时两个寄存器之一处于直通状态,输入数据只经过一级缓冲送入D/A转换电路。
这种方式只需执行一次写操作,即可完成D/A转换。
◆(3)直通方式:此时两个寄存器均处于直通状态,因此要将、、和端都接数字地,ILE接高电平,使LE1、LE2均为高电平,致使两个锁存寄存器同时处于放行直通状态,数据直接送入D/A转换电路进行D/A转换。
这种方式可用于一些不采用微机的控制系统中或其他不须0832缓冲数据的情况。
第3章系统软件设计3.1 系统整体流程3.2 数模转换程序#include <reg51.h>#define uchar unsigned char#define uint unsigned int#define DAC0832 P2#define ALL 65536#define Fosc 12000000uchar TH_0,TL_0,flag1,flag=0;uint FREQ=100,num;float temp;uchar code sin_num[]={0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1,2, 2, 2,2, 3, 3, 4, 4, 4, 5, 5, 6, 6, 7,7, 8, 8, 9, 9,10, 10, 11, 12, 12, 13, 14, 15, 15, 16, 17, 18, 18, 19, 20, 21,22, 23, 24, 25, 25, 26, 27, 28, 29, 30, 31, 32, 34, 35, 36, 37,38, 39, 40, 41, 42, 44, 45, 46, 47, 49, 50, 51, 52, 54, 55, 56,57, 59, 60, 61, 63, 64, 66, 67, 68, 70, 71, 73, 74, 75, 77, 78,80, 81, 83, 84, 86, 87, 89, 90, 92, 93, 95, 96, 98, 99, 101,102,104, 106,107, 109, 110, 112, 113, 115, 116, 118, 120, 121, 123, 124, 126, 128,129, 131, 132, 134, 135, 137, 139,140, 142, 143, 145, 146,148, 149, 151, 153, 154, 156, 157, 159, 160, 162, 163,165, 166, 168, 169, 171, 172, 174, 175, 177, 178, 180, 181, 182, 184, 185, 187,188, 189, 191, 192, 194, 195, 196, 198, 199, 200, 201, 203, 204, 205, 206, 208,209, 210, 211, 213, 214, 215, 216, 217, 218,219, 220, 221, 223, 224, 225, 226, 227, 228, 229, 230, 230, 231, 232, 233, 234, 235, 236, 237, 237, 238, 239, 240, 240, 241, 242, 243, 243, 244, 245, 245, 246, 246, 247, 247, 248, 248, 249, 249, 250, 250, 251, 251, 251,252, 252, 253, 253, 253, 253, 254, 254, 254, 254, 254, 255, 255, 255, 255, 255, 255, 255, 255, 255 };sbit cs=P3^6;sbit change1=P3^2;sbit change2=P3^1;sbit change3=P3^0;void delay(uint z){uint x,y;for(x=z;x>0;x--)for(y=110;y>0;y--);}void init(){TMOD=0X01;temp=ALL-Fosc/12.0/256/FREQ;TH_0=(uint)temp/256;TL_0=(uint)temp%256;EA=1;EX0=1;IT0=1;ET0=1;TR0=1;}void changefreq(void){if(change==0){flag++; if(flag==4) {flag=0;num=0;}}TH_0=(uint)temp/256;TL_0=(uint)temp%256;}void sanjiaobo(void){for(num=0;num<255;num++){cs=0;DAC0832=num;cs=1;}for(num=255;num>0;--num){cs=0;DAC0832=num;cs=1;}}void fangbo(void){cs=0;DAC0832=0XFF;cs=1;for(num=0;num<255;num++);cs=0;DAC0832=0X00;cs=1;for(num=255;num>0;num--);}void juchibo(void){cs=0;DAC0832=++num;cs=1;}void zhengxianbo(void){for(num=0;num<255;num++){cs=0;DAC0832=sin_num[num];cs=1;}for(num=255;num>0;num--){cs=0;DAC0832=sin_num[num];cs=1;}}void ext0() interrupt 0{changefreq();}void timer0() interrupt 1{TH0=TH_0;TL0=TL_0;TR0=0;switch(flag){case 0: {sanjiaobo();TR0=1;break;}case 1: {fangbo();TR0=1;break;}case 2: {juchibo();TR0=1;break;}case 3: {zhengxianbo();TR0=1;break;}default: ;}}void main(){init();while(1);}第4章系统调试4.1 proteus的调试矩形波锯齿波正弦波第5章结论与总结5.1 结论基于单片机的信号发生器设计,这个信号发生器的设计中涉及到一个典型的控制过程。