单片机数模转换器DAC0832设计实验报告(附程序)

合集下载

单片机实验报告0832

单片机实验报告0832
4、按下K1,产生连续锯齿波信号。
5、按下K2,产生连续三角波信号。
6、按下K3,产生连续正弦波信号。
7、通过外接示波器观察波形。
三、电路原理图
四、实验程序流程框图和程序清单
ORG0000H
STRAT:LJMP MAIN
ORG0100H
MAIN: MOV SP, #5FH
LCALL Keyscan
MOV R1,07H
MOV A, R0
MOVX @DPTR, A
INC R0
LCALL Keyscan
MOV R1, 07H
LJMP W2
CA4: MOV R4, #0FEH
W3: MOV A, R1
XRL A, #04H
JZ K3
MOV A, R1
JNZ TZ
K3:
MOV DPTR, #0FEFFH
MOV R0, #00H
W4: MOV A, R1
XRL A, #08H
JZ K4
MOV A, R1
JNZ LL
K4:
MOV DPTR, #0FEFFH
MOV DPTR, #TABLE
MOV A, R0
MFEFFH
MOVX @DPTR, A
INC R0
LCALL Keyscan
,0xFE,0xFE,0xFE,0xFE,0xFE,0xFE,0xFD,0xFD,0xFC,0xFB,0xFB,0xFA,0xF9,0xF8,0xF7,0xF6
,0xF5,0xF4,0xF2,0xF1,0xEF,0xEE,0xEC,0xEB,0xE9,0xE7,0xE5,0xE4,0xE2,0xE0,0xDD,0xDB
MOVX @DPTR, A

DAC0832实验

DAC0832实验

实验4 ADC0832并行数模转换实验【实验目的】熟悉D/A转换的工作原理,学习使用并行数模转换芯片DAC0832进行数字信号到模拟信号的转换过程。

【实验设备及器件】IBM PC 机一台DP-51PROC单片机综合仿真实验仪一台示波器一台【实验内容】通过片外总线方式访问并行数模转换器芯片DAC0832,掌握数字信号到模拟电压的转换方法。

【实验要求】理解掌握DAC0832的D/A转换原理和并行D/A转换器接口的编程方法,学会使用DAC0832并行模数转换器实现电压信号采集的方案设计。

【实验步骤】1.使用2×10的排线连接C9区的J4接到A7区的J84;2.将模块上的JP1跳线帽跳至右侧的VCC处;3.将A7区的P2_CS连接到A2区的A15;4.将A7区的P2_IO2、P2_IO5和P2_INT分别接入C4区的A-、A+和AOUT;5.将C4区的V+和V-分别接至C1区的+12V和-12V;6.将C4区的A+接到C1区的GND;7.运行编写好的软件程序,使用示波器观察C4区AOUT处的波形是否为锯齿波。

【实验预习要求】认真预习本节实验内容,按照实验要求提前做好实验准备工作,认真阅读DAC0832的数据手册。

图1.1DAC0832引脚接线图【实验参考程序】汇编语言程序清单ORG 8000HLJMP MAINORG 8100HMAIN: MOV SP,#70HMOV DPTR,#7FFFHMOV A,#0FFHLOOP: MOVX @DPTR,ADEC ALJMP LOOPENDC51程序清单#include <reg52.h>#include <absacc.h>#define PA XBYTE[0x7fff]typedef unsigned char byte;void main(void){byte a;while(1){for(a=255;a>0;a--){PA=a;}}}【实验思考题】1.请改变上面的程序,使之输出三角波,并通过示波器观察。

单片机c语言程序设计---DA转换实验报告

单片机c语言程序设计---DA转换实验报告

单片机c语言程序设计---D/A转换实验报告课程名称:单片机c语言设计实验类型:设计型实验实验项目名称: D/A转换实验一、实验目的和要求1.掌握数模转换的概念2.掌握D/A转换芯片DAC0832的功能及特点,掌握与单片机的接口3.掌握D/A转换芯片DAC0832的c语言编程实例二、实验内容和原理实验1.信号发生器功能:使用DAC0832用作信号发生器,编写产生锯齿波、三角波和方波的程序。

本次项目中,DAC0832采用单缓冲单极性的线选法接线方式,其选通地址为7FFFH。

(1)硬件设计使用P1口接3个独立的按键S01、S02、S03,当按下S01时输出锯齿波,按下S02时输出三角波,当按下S03时输出方波。

电路原理图如下仿真所需元器件(2)proteus仿真通过Keil编译后,利用protues软件进行仿真。

在protues ISIS 编译环境中绘制仿真电路图,将编译好的“xxx.hex”文件加入AT89C51。

启动仿真,观察仿真结果。

三、实验要求:1.完成信号发生器实验。

具体包括绘制仿真电路图、编写c源程序、进行仿真并观察仿真结果,需要保存原理图截图,保存c源程序,总结观察的仿真结果。

完成思考题。

四、操作方法与实验步骤1.按照硬件设计在protues上按照所给硬件设计绘制电路图。

2.在keil上进行编译后生成“xxx.hex”文件。

3.编译好的“xxx.hex”文件加入AT89C51。

启动仿真,观察仿真结果。

五、实验结果与分析void main(){while(1){while( K01==0 ) //生成锯齿波{for(cDigital=0;cDigital<=250;cDigital++){TransformData(cDigital);//进行数模转换}}while( K02==0 ) //生成三角波{for(cDigital=0;cDigital<=250;cDigital++){TransformData(cDigital);//进行数模转换}for(cDigital=250;cDigital>=0;cDigital--){TransformData(cDigital);//进行数模转换}}while( K03==0 ) //生成方波{TransformData(0);//进行数模转换Delay(500);TransformData(250);//进行数模转换Delay(500);}}}六、讨论和心得。

数模转换器dac0832的应用毕业设计

数模转换器dac0832的应用毕业设计

数模转换器dac0832的应用毕业设计目录摘要.................................................... 错误!未定义书签。

一、引言 (1)二、单片机基础 (2)(一)单片机概念以及种类 (2)1.单片机的概念 (2)2.单片机的种类 (2)三、数模转换器 (3)(一)集成D/A转换器DAC0832 (3)1.定义 (3)2.主要性能参数 (3)3.引脚及其功能 (3)四、仿真实验 (4)五、总结 (4)致谢 (6)参考文献 (7)一、引言随着数字技术,特别是计算机技术的飞速发展与普及,在现代控制、通信及检测等领域,为了提高系统的性能指标,对信号的处理广泛采用了数字计算机技术。

由于系统的实际对象往往都是一些模拟量(如温度、压力、位移、图像等),要使计算机或数字仪表能识别、处理这些信号,必须首先将这些模拟信号转换成数字信号;而经计算机分析、处理后输出的数字量也往往需要将其转换为相应模拟信号才能为执行机构所接受。

这样,就需要一种能在模拟信号与数字信号之间1起桥梁作用的电路--模数和数模转换器。

本文主要是在介绍单片机AT89C51的基础上,初步了解以及掌握数模转换器,有关数模转换器的定义,转换原理,分类以及位数。

然后进一步了解dac0832芯片,并用XLISP软件与Keil软件对其进行烧写和仿真实验。

在对dac0832实验过程中,验证了DA芯片以其价格低廉、接口简单、转换控制容易等优点,在单片机应用系统中得到广泛的应用。

二、单片机基础(一)单片机概念以及种类1.单片机的概念单片机是指一个集成在一块芯片上的完整计算机系统。

尽管它的大部分功能集成在一块小芯片上,但是它具有一个完整计算机所需要的大部分部件:CPU、存、部和外部总线系统,目前大部分还会具有外存。

同时集成诸如通讯接口、定时器,实时时钟等外围设备。

而现在最强大的单片机系统甚至可以将声音、图像、网络、复杂的输入输出系统集成在一块芯片上。

实验四 DA转换

实验四 DA转换

实验四:DAC0832实验一、实验目的和要求1、掌握单片机与DAC0832的接口设计方法 。

2、进一步掌握Proteus 软件中示波器的用法与Keil 软件调试功能的使用方法 。

3、掌握原理图模块化设计方法,掌握程序模块话(子程序)设计方法 二、设计要求1、用Proteus 软件画出电路原理图。

2、在单片机的外部扩展一个4个按键的键盘。

3、按下K0,产生连续方波信号。

4、按下K1,产生连续锯齿波信号。

5、按下K2,产生连续三角波信号。

6、按下K3,产生连续正弦波信号。

7、编程实现产生连续梯形波信号。

8、通过外接示波器观察波形。

三、实验说明1,DAC0832梗概DAC0832是美国资料公司研制的8位双缓冲器D/A 转换器。

芯片内带有资料锁存器,可与数据总线直接相连。

电路有极好的温度跟随性,使用了COMS 电流开关和控制逻辑而获得低功耗、低输出的泄漏电流误差。

芯片采用R-2RT 型电阻网络,对参考电流进行分流完成D/A 转换。

转换结果以一组差动电流IOUT1和IOUT2输出。

DAC0832主要性能参数:①分辨率8位; ②转换时间1μs;③参考电压±10V ;④单电源+5V~+15v ;⑤功耗20mW 。

2,DAC0832的结构DAC0832的内部结构如上图所示。

DAC0832中有两级锁存器,第一级锁存器称为输入寄存器,它的锁存信号为ILE ;第二级锁存器称为DAC 寄存器,它的锁存信号为传输控制信号。

因为有两级锁存器,DAC0832可以工作在双缓冲器方式,即在输出模拟信号的同时采集下一个数字量,这样能有效地提高转换速度。

此外,两级锁存器还可以在多个D/A 转换器同时工作时,利用第二级锁存信号来实现多个转换器同步输出。

XFER图10.9中LE 为高电平、和为低电平时,为高电平,输入寄存器的输出跟随输入而变化;此后,当由低变高时,为低电平,资料被锁存到输入寄存器中,这时的输入寄存器的输出端不再跟随输入资料的变化而变化。

单片机实验DA转换器DAC0832的应用的报告

单片机实验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数模转换实验

DAC0832数模转换实验一、实验目的1、掌握DAC0832直通方式,单缓冲器方式、双缓冲器方式的编程方法2、掌握D/A转换程序的编程方法和调试方法二、实验说明DAC0832是8位D/A转换器,它采用CMOS工艺制作,具有双缓冲器输入结构,其引脚排列如图所示,DAC0832各引脚功能说明:DI0~DI7:转换数据输入端。

CS:片选信号输入端,低电平有效。

ILE:数据锁存允许信号输入端,高电平有效。

WR1:第一写信号输入端,低电平有效,Xfer:数据传送控制信号输入端,低电平有效。

WR2:第二写信号输入端,低电平有效。

Iout1:电流输出1端,当数据全为1时,输出电流最大;当数据全为0时,输出电流最小。

Iout2:电流输出2端。

DAC0832具有:Iout1+Iout2=常数的特性。

Rfb:反馈电阻端。

Vref:基准电压端,是外加的高精度电压源,它与芯片内的电阻网络相连接,该电压范围为:-10V~+10V。

VCC和GND:芯片的电源端和地端。

DAC0832内部有两个寄存器,而这两个寄存器的控制信号有五个,输入寄存器由ILE、CS、WR1控制,DAC寄存器由WR2、Xref控制,用软件指令控制这五个控制端可实现三种工作方式:直通方式、单缓冲方式、双缓冲方式。

直通方式是将两个寄存器的五个控制端预先置为有效,两个寄存器都开通只要有数字信号输入就立即进入D/A转换。

单缓冲方式使DAC0832的两个输入寄存器中有一个处于直通方式,另一个处于受控方式,可以将WR2和Xfer相连在接到地上,并把WR1接到80C51的WR上,ILE接高电平,CS 接高位地址或地址译码的输出端上。

双缓冲方式把DAC0832的输入寄存器和DAC寄存器都接成受控方式,这种方式可用于多路模拟量要求同时输出的情况下。

三种工作方式区别是:直通方式不需要选通,直接D/A转换;单缓冲方式一次选通;双缓冲方式二次选通。

三、实验步骤1、用8P数据线连接单片机最小应用系统1模块的 P0口到D/A转换模块的DI0~DI7口,用二号导线分别连接单片机最小应用系统1模块的P2.0、WR到D/A转换模块的P2.0、WR,连接D/A转换模块的Vref口到-5V口,D/A转换模块的OUT接示波器探头。

数模转换器DAC0832的应用

数模转换器DAC0832的应用

实训报告十一实训目的:通过DAC0832作为D/A转换器,在虚拟显示正弦波或三角波,从而了解DAC0832的工作方式,把数字量转化为模拟量,学会利用c语言编程实现输出正弦波、三角波等波形。

实训原理图:实训步骤:1.在ptoteus平台找出所需的元器件2.理解该实验的原理,按照原理图画出仿真图;3.根据实验要求写出如下程序:#include <reg51.H>#include<absacc.h>#define DAC0832 XBYTE[0X12ef]unsigned char sindot[64]={0x80,0x8c,0x98,0xa5,0xb0,0xbc,0xc7,0xd1,0xda,0xe2,0xea,0xf0,0xf6,0xfa,0xfd,0xff,0xff,0xff,0xfd,0xfa,0xf6,0xf0,0xea,0xe3,0xda,0xd1,0xc7,0xbc,0xb1,0xa5,0x99,0x8c,0x80,0x73,0x67,0x5b,0x4f,0x43,0x39,0x2e,0x25,0x1d,0x15,0xf,0x9,0x5,0x2,0x0,0x0,0x0,0x2,0x5,0x9,0xe,0x15,0x1c,0x25,0x2e,0x38,0x43,0x4e,0x5a,0x66,0x73};//正弦代码表sbit K1=P2^7;//控制开关,void delay(unsigned char m)//延时{ unsigned char i;for(i=0;i<m;i++);}void main(void){unsigned char k;while(1){ if (K1==0)//K1为1时,输出三角波,K1为0时,输出为正弦波{for(k=0;k<64;){ DAC0832=sindot[k];//取正弦代码并输出k++;delay(10);}}else{ for(k=0;k<255;){ DAC0832=k;k+=5;delay(1);}for(k=255;k>0;){ DAC0832=k;k-=5;delay(1);}}}}总结:经过此次的实验,通过DAC0832作为D/A转换器,在虚拟显示正弦波或三角波,深刻地理解了DAC0832的结构以及工作方式。

使用DAC0832的DA转换实验

使用DAC0832的DA转换实验

实验一使用DAC0832的D/A转换实验一、实验目的熟悉DAC0832数模转换器的特性和接口方法,掌握D/A 输出程序的设计和调试方法。

1、DAC0832结构DAC0832是用先进的CMOS/Si-Cr工艺制成的双列直插式单片8位D/A转换器。

它可以直接和8088CPU相接口。

它采用二次缓冲方式(有两个写信号/WR1、/WR2),这样可以在输出的同时,采集下一个数字量,以提高转换速度。

而更重要的是能够在多个转换器同时工作时,有可能同时输出模拟量。

它的主要技术参数如下:分辨率为8 位,电流建立时间为1us,单一电源5V-15V直流供电,可双缓冲、单缓冲或直接数据输入。

DAC0832内部结构见图5-3 。

图5-3 DAC0832内部功能* /LE=“1”,Q输出跟随D输入,/LE=“0”,D端输入数据被锁存2、DAC0832引脚功能*DI0~DI7:数据输入线,TTL电平,有效时间应大于90ns(否则锁存的数据会出错);*ILE:数据锁存允许控制信号输入线,高电平有效;*/CS:选片信号输入线,低电平有效;*/WR1:输入锁存器写选通输入线,负脉冲有效(脉宽应大于500ns)。

当/CS为“0”、ILE 为“1”、/WR1为“0”时,DI0~DI7状态被锁存到输入锁存器。

*/XFER:数据传输控制信号输入线,低电平有效;*/WR2:DAC寄存器写选通输入线,负脉冲(宽于500ns)有效.当/XFER为“0”且/WR2有效时,输入锁存器的状态被传送到DAC寄存器中;*Iout1:电流输出线,当输入为全1时Iout1最大;*Iout2:电流输出线,其值和Iout1值之和为一常数;*Rfb:反馈信号输入线,改变Rfb端外接电容器值可调整转换满量程精度;*Vcc:电源电压线,Vcc范围为+5V~+15V;*VREF:基准电压输入线,VREF范围为-10V~+10V;*AGND:模拟地;*DGND:数字地。

2、DAC0832工作方式根据对DAC0832的输入锁存器和DAC寄存器的不同的控制方法,DAC0832 有如下三种工作方式:(1) 单缓冲方式此方式适用于只有一路模拟量输出或几路模拟量非同步输出的情形。

微机原理实验报告--数模转换

微机原理实验报告--数模转换

微机原理实验报告实验题目:数/模转换器DAC0832系部:电子与信息工程系学生姓名:专业班级:学号:指导教师:2013.12.30一. 实验目的1.掌握D/A转换原理;2.熟悉D/A芯片接口设计方法;3.掌握DAC0832芯片的使用方法。

二. 实验设备1.PC微机一台;2.TD-PIT实验装置一台;3.示波器一台。

三. 实验要求用DAC0832设计一个D/A转换接口电路,采用单缓冲工作方式,产生方波、三角波、锯齿波和正弦波。

四.实验原理1.DAC3802的结构及性能(1)输入/输出信号。

D7-D为8位数据输入线;IOUT1为DAC电流输出1,I OUT2为DAC电流输出2,IOUT1和IOUT2之和为一常量;RFB为反馈信号输入端,反馈电阻在芯片内。

(2)控制信号。

ILE为允许输入锁存信号;WR1和WR2分别为锁存输入数据信号和锁存输入寄存器到DAC寄存器的写信号;XFER为传送控制信号;CS为片选信号。

(3)电源。

VCC 为主电源,电压范围为+5V到+15V;VREF为参考输入电压,范围为-10V到+10V。

DAC0832管脚及其内部结构框图2.工作方式外部五个控制信号:ILE,CS,WR1,WR2,XFER连接方式的不同,可工作于多种方式:直通方式,单缓冲方式,双缓冲方式(1)直通方式ILE接高、CS、WR1、WR2、XFER接地,两级寄存器均直通;(2)单缓冲方式两级寄存器一个受控,一个直通;(3)双缓冲方式两级寄存器均受控。

0832为电流输出型D/A ,要得模拟电压,必需外加转换电路(运放)。

五. 实验内容1.硬件电路图:2.软件程序设计(1)产生方波stack segment stack 'stack'dw 32 dup(?)stack endscode segmentbegin proc farassume ss:stack,cs:codepush dssub ax,axpush axMOV DX,0D800H;片选信号输入地址MOV AL,0NEXT:OUT DX,ALMOV DX,0D800HOUT DX,ALLOOP $;延时NOT AL;求反,由高电平转为低电平或有低电平转为高电平 PUSH AX;保护数据MOV AH,11INT 21HCMP AL,0;有按键退出POP AXJZ NEXTretbegin endpcode endsend begin(2)产生三角波stack segment stack 'stack'dw 32 dup(?)stack endsdata segmentdata endscode segmentbegin proc farassume ss:stack,cs:code,ds:datapush dssub ax,axpush axMOV DX,0D800HMOV AL,0NEXT:OUT DX,ALCALL DELAY;调用延时CMP AL,0FFHJNE NEXT;自增至15NEXT1:OUT DX,ALCALL DELAY;调用延时DEC ALCMP AL,0JNE NEXT1PUSH AXMOV AH,11INT 21HCMP AL,0POP AXJZ NEXT;自减至0retbegin endpDELAY PROCPUSH CXMOV CX,10000LOOP $POP CXRETDELAY ENDP;延时子程序code endsend begin(3)产生锯齿波stack segment stack 'stack' dw 32 dup(?)stack endscode segmentbegin proc farassume ss:stack,cs:code push dssub ax,axpush axMOV DX,0D800HMOV AL,0UP:OUT DX,ALINC ALPUSH AX;保护数据MOV AH,11INT 21HCMP AL,0JZ UP;循环从0自增至15retbegin endpcode endsend begin(4)产生正弦波stack segment stack 'stack'dw 32 dup(?)stack endsdata segmentDATA DB7FH,87H,8FH,97H,9FH,0A6H,0AEH,0B5H,0BCH,0C3H,0CAH,0D0H,0D6H,0DCH,0E1H,0E6H,0EBH,0EFH,0F2H,0F6H,0F8H,0FAH,0FCH,0FDH,0FEH,0FFH,0FEH,0FDH,0FCH,0FAH,0F8H,0F6H,0F2H,0EFH,0EBH,0E6H,0E1H,0DCH,0D6H,0D0H,0CAH,0C3H,0BCH,0B5H,0AEH,0A6H,9FH,97H,8FH,87H,7FH,77H,6FH,67H,5FH,58H,50H,49H,42H,3BH,34H,2EH,28H,22H,1DH,18H,13H,0FH,0CH,8H,6H,4H,2H,1H,0,0,0,1H,2H,4H,6H,8H,0CH,0FH,13H,18H,1DH,22H,28H,2EH,34H,38H,42H,49H,50H,58H,5FH,67H,6FH,77H;建表,在正弦波一个周期内均匀采样100个点,用matlab将每点的值转换为相应的波形数字量(该处用16进制数表示)data endscode segmentbegin proc farassume ss:stack,cs:code,ds:datapush dssub ax,axpush axmov ax,datamov ds,axAG:MOV SI,OFFSET DATA;将表DATA放入SI中MOV DX,0D800HMOV BX,0NEXT:MOV AL,BYTE PTR[SI]OUT DX,ALCALL DELAY;调用延时INC BXINC SICMP BX,100JE AGPUSH AX;保护数据MOV AH,11CMP AL,0POP AXJZ NEXT;循环100次将表中的值输出 retbegin endpDELAY PROCPUSH CXMOV CX,10000LOOP $POP CXRETDELAY ENDP;延时子程序code endsend begin六. 实验结果用示波器观测波形,截图如下:1.方波2.三角波3.锯齿波4.正弦波七. 实验总结在本次实验中,首先自己在课外将实验原理充分掌握,提前画好电路图,并思考软件部分的代码核心,进入实验室后,进行电路连接及与软件的连调。

数模转换DAC0832的应用(含电路和源程序)

数模转换DAC0832的应用(含电路和源程序)

数模转换DAC0832的应用(含电路和源程序)数模转换DAC0832的应用[实验要求]通过用单片机控制DAC0832输出锯齿波,让实验板上发光二极管D12由暗到亮变化,循环下去。

[实验目的]学会用单片机控制数模转换芯片DAC0832。

DAC0832:DAC0832是8位全MOS中速D/A 转换器,采用R—2RT 形电阻解码网络,转换结果为一对差动电流输出,转换时间大约为1us。

使用单电源+5V―+15V 供电。

参考电压为-10V-+10V。

在此我们直接选择+5V 作为参考电压。

DAC0832 有三种工作方式:直通方式,单缓冲方式,双缓冲方式;在此我们选择直通的工作方式,将XFER WR2 CS 管脚全部接数字地。

管脚8 接参考电压,在此我们接的参考电压是+5V。

我们在控制P0口输出数据有规律的变化将可以产生三角波,锯齿波,梯型波等波形了。

[硬件电路][源代码]//TX-1BDA测试程序,下载后可观察到D13发光二极管由暗变亮再熄//灭过程,#include<reg51.h>sbit wela=P2^7; //数码管位选sbit dula=P2^6; //段选sbit dawr=P3^6; //DA写数据sbit csda=P3^2; //DA片选unsigned char a,j,k;void delay(unsigned char i) //延时{for(j=i;j>0;j--)for(k=125;k>0;k--);}void main(){wela=0;dula=0;csda=0;a=0;dawr=0;while(1){P0=a; //给a不断的加一,然后送给DAdelay(50); // 延时50ms 左右,再加一,再送DA。

a++;}}注意:随着给DA送的数字量的不断增加,其转换成模拟量的电流也不断的增大,所以我们观察发光二极管D12就会从暗变亮,熄灭。

实验15:DAC0832的DA转换实验

实验15:DAC0832的DA转换实验

实验15:DAC0832的D/A转换实验
一、实验要求
单片机输出的数字量D0~D7加到DAC0832的输入端,用虚拟直流电压表测量DAC0832的电流输出经运放LM358N的I/V转换后的电压值,并使用虚拟直流电压表查看输出电压的结果。

仿真运行,可以看到虚拟直流电压表测量的电压在-2.5V~0V范围内变化。

如果由于电流表太小,显示电压值不清楚,可用鼠标滚轮放大电路原理图、
二、实验目的
掌握单片机与DAC0832的接口与软件编程
三、实验程序
MAIN:CLR P2.0 ;启动片选
CLR P2.1 ;写信号有效
MOV R2,#0FFH ;LOOP执行256次
MOV A,#0 ;从0V开始
LOOP:MOV P1,A ;A的内容送P1输出给0832
INC A ;A加1,使电压不断增加
LCALL DELAY100MS ;调用延时程序
DJNZ R2,LOOP ;执行LOOP256次之后达到最大量程-2.5V
LJMP MAIN ;返回重新开始
DELAY100MS: ;延时100ms子程序
MOV R7,#13H
DL1:
MOV R6,#14H
DL0:
MOV R5,#82H
DJNZ R5,$
DJNZ R6,DL0
DJNZ R7,DL1
RET
END
四、实验原理图
仿真截图。

实验九、DAC0832(数模转换)

实验九、DAC0832(数模转换)

实验九、DAC0832(数/模转换)一、实验目的:1.掌握DAC0832的使用方法;2.掌握DAC0832在51系列单片机中的使用方法。

二、实验设备:TDS-MD一台MP-51一片74LS00一片DAC0832一片LM324一片10K电阻一个示波器一台三、实验内容:电路如下图8.1所示,图中当WR和P2.7有效时选中该片,因此可取FFFFH为片选地址。

(图9.1)四、实验参考程序:1.如下程序为产生锯齿波程序,周期约为2ms。

地址机器码助记符────────────────────────────────220090FFFFMOVDPTR,#FFFF2203E4CLRA2204F0MOVX@DPTR,A220504INCA220680FCSJMP2204────────────────────────────────2.如下程序为三角波程序,周期约为4ms。

地址机器码助记符────────────────────────────────220090FFFFMOVDPTR,#FFFF2203E4CLRA2204F0MOVX@DPTR,A22O504INCA2206B4FFFBCJNEA,#FF,2204220914DECA220AF0MOVX@DPTR,A220B14DECA220CB400FBCJNEA,#00,220A220F80F3SJMP2204────────────────────────────────3.如下程序为产生阶梯波程序,周期约为30ms。

地址机器码助记符────────────────────────────────220090FFFFMOVDPTR,#FFFF2203E4CLRA2204F0MOVX@DPTR,A22052410ADDA,#102207510BACALL220B220980F9SJMP2204220BC0E0PUSHE0220DC0F0PUSHF0220F7402MOVA,#02221175F0FAMOVF0,#FA2214D5F0FDDJNZF0,2214221714DECA221870F7JNZ2211221AD0F0POPF0221CD0E0POPE0221E22RET───────────────────────────────────五、实验步骤:1.按图9.1D/A线路图接线,将上述3个程序分别输入,仔细检查后运行,并用示波器观察波形;2.按Reset键中止程序运行。

数模转换实验

数模转换实验

D/A0832转换实验1.实验目的:了解D/A 转换与单片机的接口方法;了解D/A 转换芯片DA0832的性能及编程方法。

2.实验内容:利用0832输出一个三角波电压,数码管显示数字量值。

3.实验器材:(1)G2200/2100 实验平台 1 台 (2)仿真器/仿真板 1 台 (3)计算机 1 台 (4)实验连线 若干4.接线图案:5.程序框图:6.实验原理:D/A 转换器的功能主要是将输入的数字量转换成模拟量输出,在语音合成等方面得到了广泛的应用。

本实验中采用的转换器为DAC0832,该芯片为电流输出型8位D/A 转换器,输入设有两级缓冲锁存器,因此可同时输出多路模拟量。

本实验中采用单级缓冲连接方式,用0832来产生三角波,具体线路如上图所示。

Vref引脚的电压极性和大小决定了输出电压的极性与幅度,G2200/2100实验平台上的DA0832的第8引脚(Vref)的电压已接为-5V,所以输出电压值的幅度为0-5V。

7.实验步骤:(1)设定工作模式为模式2,即程序空间在仿真器上,数据空间在用户板上。

把DA0832的片选CS13孔和Xfer孔接至译码器的YS3(0B000H-0BFFFH)孔。

DA0832的WR1孔和WR2孔连控制总线区的/WR孔。

(2)硬件诊断:G2200/2100+仿真器连PC机,在伟福WAVE6000/VW调试环境下点击外部数据窗口图标(),在打开的XDATA窗口中的0B000H地址(即DA0832的片选空间)上写入FFH,则Aout孔输出应为5V,将00H写入,则Aout孔输出应为0V。

(3)编写程序、编译程序,用单步、断点、连续方式调试程序,排除软件错误。

运行程序,键显区数码管上显示不断加大或减小的数字量,用万用表测量D/A输出孔AOUT,应能测出不断加大或减少的电压值。

8.思考问题:修改程序,使能产生锯齿波。

9.软件清单:( MCS51\A22.ASM C51\C22.C)// 实验二十二D/A0832转换实验#define LEDLen 6#define MODE 0x03xdata unsigned char CS0832 _at_ 0xb000;xdata unsigned char OUTBIT _at_ 0x8002; // 位控制口xdata unsigned char OUTSEG _at_ 0x8004; // 段控制口xdata unsigned char IN _at_ 0x8001; // 键盘读入口unsigned char LEDBuf[LEDLen]; // 显示缓冲code unsigned char LEDMAP[] = { // 八段管显示码0x3f, 0x06, 0x5b, 0x4f, 0x66, 0x6d, 0x7d, 0x07,0x7f, 0x6f, 0x77, 0x7c, 0x39, 0x5e, 0x79, 0x71};void Delay(unsigned char CNT){unsigned char i;while (CNT-- !=0)for (i=100; i !=0; i--);}void DisplayLED(){unsigned char i;unsigned char Pos;unsigned char LED;Pos = 0x20; // 从左边开始显示for (i = 0; i < LEDLen; i++) {OUTBIT = 0; // 关所有八段管LED = LEDBuf[i];OUTSEG = LED;OUTBIT = Pos; // 显示一位八段管Delay(5);Pos >>= 1; // 显示下一位}OUTBIT = 0; // 关所有八段管}void Write0832(unsigned char b){CS0832 = b;}void main(){unsigned char i = 0;unsigned char j;while(1) {LEDBuf[0] = 0X3F;LEDBuf[1] = 0X7F;LEDBuf[2] = 0X4f;LEDBuf[3] = 0X5b;LEDBuf[4] = 0X00;LEDBuf[5] = 0X00;Write0832(i);LEDBuf[5] = LEDMAP[i & 0x0f] ;LEDBuf[4] = LEDMAP[i>>4 & 0x0f] ;i++;for(j=0; j<20; j++)DisplayLED(); // 延时};}; "传统模块" 实验二十二D/A0832转换实验; 把DA0832的片选CS13孔和Xfer孔接至译码器的YS3(0B000H-0BFFFH)孔; A0832的WR1孔和WR2孔连控制总线区的/WR孔。

DAC0832实验报告

DAC0832实验报告

DAC0830/0831/0832是8位分辩率的D/A转换集成芯片,与微处理器完全兼容。

这个系列的芯片以其价格低廉、接口简单、转换控制容易等优点,在单片机应用系统中得到了广泛的应用这类D/A转换器由8位输入锁存器、8位DAC寄存器、八位D/A转换电路及转换控制电路构成。

DAC0832的应用特性与引脚功能DAC0830系列芯片是一种具有两个输入数据寄存器的8位DAC,是一个8位D/A转换器芯片,单电源供电,从+5V~+15V均可正常工作。

其主体部分为由T型状态。

而模拟开关控制标准电源在T型电阻网络所产生的电流。

输入的数字量通过两级缓冲器送到 D/A 转换电路。

通过对这两级缓冲器进行控制,可以实现直通、单缓冲、双缓冲三种工作方式。

1)DAC0832内部结构和引脚DAC0832的内部结构如图所示:DAC0832引脚如下图所示,它采用20线双列直插式封装,引脚功能如下:(1)D7~D0——转换数据输入。

(2)CS——片选信号(输入),低电平有效。

(3)ILE——数据锁存允许信号(输入),高电平有效。

(4)WR1——第一信号(输入),低电平有效。

该信号与ILE 信号共同控制输入寄存器是数据直通方式还是数据锁存方式:当ILE=1和XFER=0时,为输入寄存器直通方式;当ILE=1和WR1 =1时,为输入寄存器锁存方式。

(5) WR2 ——第2写信号(输入),低电平有效.该信号与信号合在一起控制DAC寄存器是数据直通方式还是数据锁存方式:当 WR2=0和XFER=0时,为DAC寄存器直通方式; 当WR2=1和XFER=0时,为DAC寄存器锁存方式。

(6)XFER——数据传送控制信号(输入),低电平有效。

(7)Iout2——电流输出“1”。

当数据为全“1”时,输出电流最大;为全“0”时输出电流最小。

(8)Iout2——电流输出“2”。

DAC转换器的特性之一是:Iout1 +Iout2=常数。

(9)RFB——反馈电阻端即运算放大器的反馈电阻端,电阻(15KΩ)已固化在芯片中。

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

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

本科生实验报告实验名称:数模转换器DAC0832双缓冲输出设计 一、实验目的1)了解DAC0832芯片引脚、内部结构及工作原理;2)掌握应用单片机I/O 端口控制DAC0832实现数模转换的方法; 3)掌握DAC0832单缓冲和双缓冲控制技术及编程设计方法; 二、实验原理DAC0832是8位分辨率的数模转换集成芯片,内部采用倒T 形网络,电流型 输出模式,电流输出稳定时间为1us ,采用单电源供电。

片内部由一个8位输入锁存器、一个8位DAC 寄存器和一个8位D/A 转换器构成,内部具有双缓冲结构,可以实现单缓冲、双缓冲数字输入。

双缓冲同步控制方式 :针对多个模拟量需要同时输出的控制系统,可以采用双缓冲同步控制方式。

VREF IOUT2 IOUT1DGNDVCCAGND RFBD/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,实验原理图v1.0 可编辑可修改2,实验源程序#include<>sbit DAC1_WR1=P2^0;sbit DAC2_WR1=P2^1;sbit DAC_SW1=P2^2;sbit DAC_SW2=P2^3;sbit DAC_WR2=P2^7;unsigned char code sine_tab[256]={0x80,0x83,0x86,0x89,0x8d,0x90,0x93,0x96,0x99,0x9c,0x9f,0xa2,0xa5,0xa8 ,0xab,0xae,0xb1,0xb4,0xb7,0xba,0xbc,0xbf,0xc2,0xc5,0xc7,0xca,0xcc,0xc f,0xd1,0xd4,0xd6,0xd8,0xda,0xdd,0xdf,0xe1,0xe3,0xe5,0xe7,0xe9,0xea,0x ec,0xee,0xef,0xf1,0xf2,0xf4,0xf5,0xf6,0xf7,0xf8,0xf9,0xfa,0xfb,0xfc,0 xfd,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,0xe 3,0xe1,0xde,0xdd,0xda,0xd8,0xd6,0xd4,0xd1,0xcf,0xcc,0xca,0xc7,0xc5,0x c2,0xbf,0xbc,0xba,0xb7,0xb4,0xb1,0xae,0xab,0xa8,0xa5,0xa2,0x9f,0x9c,0 x99 ,0x96,0x93,0x90,0x8d,0x89,0x86,0x83,0x80,0x80,0x7c,0x79,0x76,0x72,0x6f,0x6c,0x69,0x66,0x63,0x60,0x5d,0x5a,0x57 ,0x55,0x51,0x4e,0x4c,0x48,0x45,0x43,0x40,0x3d,0x3a,0x38,0x35,0x33,0x3 0,0x2e,0x2b,0x29,0x27,0x25,0x22,0x20,0x1e,0x1c,0x1a,0x18,0x16 ,0x15,0 x13,0x11,0x10,0x0e,0x0d,0x0b,0x0a,0x09,0x08,0x07,0x06,0x05,0x04,0x03, 0x02,0x02,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00 ,0x00,0x01,0x02 ,0x02,0x03,0x04,0x05,0x06,0x07,0x08,0x09,0x0a,0x0b,0x 0d,0x0e,0x10,0x11,0x13,0x15 ,0x16,0x18,0x1a,0x1c,0x1e,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,0x 72,0x76,0x79,0x7c,0x80};unsigned char code triangle_tab[]={0,2,4,6,8,10,12,14,16,18,20,22,24,26,28,30,32,34,36,38,40,42,44,4 6,48,50,52,54,56,58,60,62,64,66,68,70,72,74,76,78,80,82,84,86,88,90,9 2,94,96,98,100,102,104,106,108,110,112,114,116,118,120,122,124,126,12 8,130,132,134,136,138,140,142,144,146,148,150,152,154,156,158,160,162 ,164,166,168,170,172,174,176,178,180,182,184,186,188,190,192,194,196, 198,200,202,204,206,208,210,212,214,216,218,220,222,224,226,228,230,2 32,234,236,238 ,240,242,244,246,248,250,252,254,255,255,254,252,250,2 48,246,244,242,240,238,236,234,232,230,228,226,224,222,220,218,216,21 4,212,210,208,206,204,202,200,198,196,194,192,190,188,186,184,182,180 ,178,176,174,172,170,168,166,164,162,160,158,156,154,152,150,148,146 ,144,142,140,138,136,134,132,130,128,126,124,122,120,118,116 ,114,112,110,108,106,104,102,100,98,96,94,92,90,88,86,84 ,82,80,78,76,74,72,70,68,66,64,62,60,58,56,54,52,50,48,46 ,44,42,40,38,36,34,32,30,28,26,24,22,20 ,18,16,14,12,10,8,6,4,2,0};unsigned char code juchi_tab[]={0,2,4,6,8,10,12,14,16,18,20,22,24,26,28,30,32,34,36,38,40,42,44,4 6,48,50,52,54,56,58,60,62,64,66,68,70,72,74,76,78,80,82,84,86,88,90,9 2,94,96,98,100,102,104,106,108,110,112,114,116,118,120,122,124,126,12 8,130,132,134,136,138,140,142,144,146,148,150,152,154,156,158,160,162 ,164,166,168,170,172,174,176,178,180,182,184,186,188,190,192,194,196, 198,200,202,204,206,208,210,212,214,216,218,220,222,224,226,228,230,2 32,234,236,238 ,240,242,244,246,248,250,252,254,255,255,0,2,4,6,8,10, 12,14,16,18,20,22,24,26,28,30,32,34,36,38,40,42,44,46,48,50,52,54,56, 58,60,62,64,66,68,70,72,74,76,78,80,82,84,86,88,90,92,94,96,98,100,10 2,104,106,108,110,112,114,116,118,120,122,124,126,128,130,132,134,136 ,138,140,142,144,146,148,150,152,154,156,158,160,162,164,166,168,170, 172,174,176,178,180,182,184,186,188,190,192,194,196,198,200,202,204,2 06,208,210,212,214,216,218,220,222,224,226,228,230,232,234,236,238 ,2 40,242,244,246,248,250,252,254,255,255};void main (void){int num;DAC1_WR1=0;DAC2_WR1=0;while(!DAC_WR2){for(num =0; num <=255; num++){if(DAC_SW1==0){if(DAC_SW2==0) P1 = sine_tab[num];if(DAC_SW2==1) {if(num>=125) P1=0;else P1=255;}}if(DAC_SW1==1){if(DAC_SW2==0) {P1 = triangle_tab[num];}if(DAC_SW2==1) {P1=juchi_tab[num];}}}}}3,实验截图当开关1闭合后,开关2,3均打开,显示为锯齿波:当开关1闭合后,开关2打开,开关3闭合,显示为三角波:当开关1闭合后,开关3打开,开关2闭合,显示为方波:当开关1闭合后,开关2,3均闭合,显示为正弦波:五、实验结论。

DAC0832数模转换实验报告131219x

DAC0832数模转换实验报告131219x

图4-4I两级运用放大解决输出双极性电压的问题。

输出电流经放大,输出电压:图4-6七、实验感受通过这次实验,我们对于MCS-51系列单片机有了初步的认识和理解,并且通过和DAC0832在一起,使我们对于I/O接口方面的知识也有了很好的应用。

同时对DAC0832芯片的结构、性能、工作原理我们是完全的掌握了,这样我们可以通过DAC0832进行其他的一系列实验。

再者,运放的基本原理及公式也可以让我们能更加灵活的对复杂电路进行转化。

与此同时,我们的动手能力也有了很大的提高,对于电路的排版、搭配也有了很清晰的认识。

总之,这次实验使我们的收获很大,理论和实际相结合,对知识也有了更深刻的理解和知新。

附录1.程序#include<reg52.h>#include<absacc.h>#define uint unsigned int#define uchar unsigned charbit time;unsigned char sin(unsigned char x){unsigned char code sin_tab[]={128,131,134,138,141,144,147,150,153,156,159,162,165,168,171,174,177,180,182,185,188,191,193,196, 198,201,203,206,208,211,213,215,217,219,221,223,225,227,229,231,232,234,235,237,238,239,241,242, 243,244,245,246,247,248,249,250,251,252,253,254,254,255,255,254,254,253,252,251,250,249,248,247, 246,245,244,243,242,241,239,238,237,235,234,232,231,229,227,225,223,221,219,217,215,213,211,208, 206,203,201,198,196,193,191,188,185,182,180,177,174,171,168,165,162,159,156,153,150,147,144,141, 138,134,131,128,125,122,119,116,112,109,106,103,100, 97, 94, 91, 88, 85, 82, 79, 76, 73, 70, 68,65, 62, 59, 57, 54, 52, 49, 47, 44, 42, 39, 37,35, 33, 31, 29, 27, 25, 27, 29, 27, 25, 23, 21,19, 18, 16, 15, 13, 12, 11, 10, 9, 8, 7, 6, 5, 4, 3, 2, 2, 1, 1, 0, 0, 0, 1, 1 ,2, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 15, 16, 18, 19, 21, 23, 25, 27, 29, 31, 33,35, 37, 39, 42, 44, 47, 49, 52, 54, 57, 59, 62, 65, 68, 70, 73, 76, 79, 82, 85, 88, 91, 97,100,103,106,109,112,116,119,122,125,128,131};return sin_tab[x];}void DAC0832(unsigned char x){P2=x;转换电路,就可以输出和数字量成正比的模拟输出电压。

DAC0832数模转换实验报告131219x

DAC0832数模转换实验报告131219x

实验报告基于DAC0832的数模转换一、实验目的1.学习单片机控制技术----用单片机控制外部数模转换设备,实现D/A 转换;2.熟悉DAC0832芯片的内部结构、引脚功能、各种工作方式下的工作时序;3.熟悉并掌握51单片机系统硬件电路的基本工作原理,并学习硬件电路设计;4.学习C51单片机编程、调试方法。

二、实验任务利用51单片机控制DAC0832生成正弦波电压输出。

三、实验器材C51单片机 一块DAC0832 一块 LM324 一块 单孔板 一块 导线 若干 直流稳压电源 一台 示波器 一台四、实验原理1. 系统方案确立 1)硬件电路工作原理图4-1 信号发生器的硬件框图MCU 作为单片机微处理系统,通过Keyboard 输入可以产生正弦波数字信号的程序,使MCU 输出正弦波数字信号,通过DAC0832数模转换,变成正弦波的模拟信号,用示波器显示出来。

如图4-1所示。

DisplayMCU KeyboardDAC08322)程序工作流程图4-2 信号发生器的程序流程图2. 硬件电路设计1)单片机最小系统的组成单片机最小系统是指用最小元件组成的单片机工作系统。

对MCS-51系列单片机来说,其内部已经包含了一定数量的程序存储器和数据存储器,在外部只要增加时钟电路和复位电路即可构成单片机最小系统。

下图所示便是MCS-51系列单片机最小系统电路,由单片机芯片和典型的时钟电路和复位电路构成。

图4-3典型的时钟电路大多采用内部时钟方式,晶振一般在1.2~12MHz 之间,甚至可达到24MHz 或更高,频率越高,单片机处理速度越快,但功耗也就越大,一般采用11.0592MHz 的石英晶振。

与晶振相位复0D/A 芯片初始化Y相位>=2π?Ni++相幅转换 YN幅度D/A 转换输出定时器初始化 time 0=0 置定时到标志T0重赋值返回并联的两个电容1C 、2C 通常为30pF 左右,对频率有微调作用。

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

实验名称:数模转换器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程序。

相关文档
最新文档