文档库 最新最全的文档下载
当前位置:文档库 › keil的使用 ADC0804数模转换DAC0832模数转换

keil的使用 ADC0804数模转换DAC0832模数转换

keil的使用 ADC0804数模转换DAC0832模数转换
keil的使用 ADC0804数模转换DAC0832模数转换

Keil软件的使用

随着单片机开发技术的不断发展,目前已有越来越多的人从普遍使用汇编语

言到逐渐使用高级语言开发,其中主要是以C语言为主,市场上几种常见的单

片机均有其C语言开发环境。

这里以最为流行的80C51单片机为例来学习单片机的C语言编程技术。大家

都有C语言基础,但是编单片机程序,大家还得找专门的书来学习一下。这里我们

只介绍Keil这种工具软件的用法。

学习一种编程语言,最重要的是建立一个练习环境,边学边练才能学好。Keil

软件是目最流行开发80C51系列单片机的软件,Keil提供了包括C编译器、宏

汇编、连接器、库管理和一个功能强大的仿真调试器等在内的完整开发方案,通

过一个集成开发环境(μVision)将这些部份组合在一起。

下面我以一个实验举一个例子,一步一步学习Keil软件的使用。 首先我们看硬件原理图:

光二极管,必须使单

片机的I/O口P1.0输

出低电平。于是我们

的任务就是编程序使

P1.0输出地电平。

1.使用Keil前必须先安装。安装过程简单,这里不在叙述。

2.安装好了Keil软件以后,我们打开它。打开以后界面如下:

3.我们先新建一个工程文件,点击“Project->New Project…”菜单,如下图,:

3.选择工程文件要存放的路径,输入工程文件名LED, 最后单击保存.

4.在弹出的对话框中选择CPU 厂商及型号

5. 选择好Atmel 公司的A T89S52 后, 单击确定

1.在接着出现的对话框中选择“是”。

5.新建一个C51 文件, 单击左上角的New File 如下图所示:

6.保存新建的文件,单击SA VE如下图:

2.在出现的对话框中输入保存文件名MAIN.C(注意后缀名必须为.C),再单击“保存”,如下图;

7.保存好后把此文件加入到工程中方法如下: 用鼠标在Source Group1 上单

击右键, 然后再单击Add Files to Group ‘Source Group 1' 如下图:

8.选择要加入的文件 , 找到 MAIN.C 后 , 单击 Add, 然后单击 Close

9.在编辑框里输入如下代码 :

10.到此我们完成了工程项目的建立以及文件加入工程 , 现在我们开始编译工

程如下图所示 : 我们先单击编译, 如果在错误与警告处看到 0 Error(s) 表示编译通过 ;

11.生成 .hex 烧写文件,先单击Options for Target,如图;

12.在下图中,我们单击 Output, 选中 Create HEX F。再单击“确定”。

13.打开文件夹‘实验1’,查看是否生成了HEX文件。如果没有生成,在执行一

遍步骤10到步骤12,直到生成。

以上是Keil软件的基本应用,更多的高级应用请大家去查找资料.

以下将介绍的是如何将HEX文件下载到单片机里面。我们用的下载软件是 Easy 51Pro

Easy51Pro v2.0软件的使用

Easy51Pro v2.0是单片机下载工具: 在我们的QQ群里有这个软件,大家可以下载来直接用,而不用安装。下面我给大家简单的说一下用法:

1.硬件连接;必须满足下面的每一个条件才能下载。如图

2.打开软件;

3.检测器件,注意右边的信息提示。如果没有检测到器件,检查硬件连接。

3.打开HEX文件。先单击“(自动)打开文件”。在“实验1”的文件夹里找到文件LED.hex文件.

4.最后单击“自动完成”,OK 大功告成。

5.大功既然告成,就要看到效果。现在我们在实验板的左下角找到JK7,用导线连到P1.0上,LED2被点亮了把。是不是很有成就感。

如果以上的实验你觉得是小儿科,太简单了。那么请关注以下的内容。

一. 闪烁灯

[实验任务]

在P1.0端口上接一个发光二极管L1,使L1在不停地一亮一灭,一亮一灭的时间间隔为0.2秒。

[硬件电路]

与上面点亮小灯的连接完全相同。

[C语言源程序]

#include

/************************************************************************************* 第一行是一个"文件包含"处理。

所谓"文件包含"是指一个文件将另外一个文件的内容全部包含进来,所以这里的程序虽然只有4行,但C编译器在处理的时候却要处理几十或几百行。这里程序中包含REG51.h文件的目的是为了要使用P1这个符号,即通知C编译器,程序中所写的P1是指80C51单片机的P1端口而不是其它变量。

*****************************************************************************/

void delay02s(void) //延时0.2秒子程序

{

unsigned char i,j,k; //定义3个无符号字符型数据。

for(i=20;i>0;i--) //作循环延时

for(j=20;j>0;j--)

for(k=248;k>0;k--);

}

void main(void) //每一个C语言程序有且只有一个主函数,

{

while(1) //循环条件永远为真,以下程序一直执行下去。

{

P1_0=0; // I/O口P1.0输出低电平,小灯被点亮。

delay02s(); //延时经过0.2秒。

P1_0=1; // I/O口P1.0输出高电平,小灯熄灭。

delay02s(); //延时经过0.2秒。

}

}

二.广告灯的左移右移

[实验任务]

做广告灯的左移右移,八个发光二极管分别接在单片机的P3.0-P3.7接口上,输出“0”时,发光二极管亮,开始时P3.0→P3.1→P3.2→P3.3→┅→P3.7→P3.6→┅→P3.0亮,重复循环。

[硬件电路]

[DPY-1实验板连接]

用8芯排线把JP-LSH连接到JP12上。

[C语言源程序]

#include

unsigned char i;

unsigned char temp;

unsigned char a,b;

void delay(void) //延时子程序

{

unsigned char m,n,s;

for(m=20;m>0;m--)

for(n=20;n>0;n--)

for(s=248;s>0;s--);

}

void main(void) //主程序

{

while(1) //循环条件永远为真,以下程序一直执行下去。

{

temp=0xfe;

P3=temp; //直接对I/O口P3赋值,使.P3.0输出低点平。

delay(); //延时

for(i=1;i<8;i++) //实现广告灯的从右到左移动(以原理图为准){

a=temp<

b=temp>>(8-i);

P3=a|b;

delay();

}

for(i=1;i<8;i++) //实现广告灯的从左到右移动

{

a=temp>>i; b=temp<<(8-i); P3=a|b; delay(); } } }

三. 按键识别

[实验任务]

通过按下一次按键,使广告灯向左移动一位,直到最后一位,在向右移动。 [硬件电路]

(大家注意到这一个电路图与上一个实验的电路图只多了一个按键和一个5.1K 的电阻。)

[DPY-1实验板连接]

用8芯排线把JP-LSH 连接到JP12上。用一根导线把JK5接到P2.1上。 [实验原理]

从图中可以看出P2.1在按键没有按下时接的是高电平,按键按下时接的就是低电平了。所以我们只要判断P2.1的电平就可以知道按键是否被按下了。 而在按键按下的过程中,由于抖动,将产生干扰,在按下的过程中,一旦有干扰过来,可能造成误触发过程,这并不是我们所想要的。因此在按键按下的时候,要把我们手上的干扰信号以及按键的机械接触等干扰信号给滤除掉,一般情况下,我们可以采用软件滤波的方法去除这些干扰信号,一般情况下,一个按键按下的时候,总是在按下的时刻存在着一定的干扰信号,按下之后就基本上进入了稳定的状态。我们在程序设计时,从按键被识别按下之后,延时5ms 以上,从而避开了干扰信号区域,我们再来检测一次,看按键是否真得已经按下,若真得已经按下,这时肯定输出为低电平,若这时检测到的是高电平,证明刚才是由于干扰信号引起的误触发,CPU 就认为是误触发信号而舍弃这次的按键识别过程。 [C 语言源程序] #include

sbit BY1=P2^1; //定义按键的输入端

unsigned char count; //按键计数,每按一下,count 加1 unsigned char temp; unsigned char a,b;

void delay10ms(void) //延时程序

{

unsigned char i,j;

for(i=20;i>0;i--)

for(j=248;j>0;j--);

}

key() //按键判断程序

{

if(BY1==0) //判断是否按下键盘

{

delay10ms(); //延时,软件去干扰

if(BY1==0) //确认按键按下

{

count++; //按键计数加1

if(count==8) //计8次重新计数

{ count=0; } //将count清零

}

while(BY1==0);//按键锁定,每按一次count只加1.

}

}

move() //广告灯向左移动移动函数

{

a=temp<

b=temp>>(8-count);

P3=a|b;

}

main()

{

count=0; //初始华参数设置

temp=0xfe;

P3=0xff;

P3=temp;

while(1) //永远循环,扫描判断按键是否按下

{

key(); //调用按键识别函数

move(); //调用广告灯移动函数

}

}

四.数码管动态显示

[实验任务]

P0端口接动态数码管的字形码笔段,P2端口接动态数码管的数位选择端,动态显示“1234”字样;

[硬件电路]

注意:在P0口还有Array 1K的排阻作为上拉

电阻,在以后的电路

原理图中都是如此,

请大家不要忽略了

[DPY-1实验板连接]

用排线把JP-CODE连到JP8是,注意:a接P0.0;b接P0.1;c接P0.3……

把JP-CS连到JP14上,注意:4H接P2.4;3H接P2.5;2H接P2.6;1H接P2.7;

[实验原理]

七段LED显示器内部由七个条形发光二极管和一个小圆点发光二极管组成,根据各管的极管的接线形式,可分成共阴极型和共阳极型。

LED数码管的a-dp七个发光二极管因以不同亮暗的组合就能形成不同的字形,这种组合称之为字形码,下面给出共阴极的字形码

“0”3FH “1”06H “2”5BH “3”4FH

“4”66H “5”6DH “6”7DH “7”07H

“8”7FH “9”6FH “A”77H “b”7CH

“C”39H “d”5EH “E”79H “F”71H

由于显示的数字0-9的字形码没有规律可循,只能采用查表的方式来完成我们所需的要求了。这样我们按着数字0-9的顺序,把每个数字的笔段代码按顺序排好!建立的表格如下所示:TABLE DB 3FH,06H,5BH,4FH,66H,6DH,7DH,07H,7FH,6FH

动态接口采用各数码管循环轮流显示的方法,当循环显示频率较高时,利用人眼的暂留特性,看不出闪烁显示现象,这种显示需要一个接口完成字形码的输出(字形选择),另一接口完成各数码管的轮流点亮(数位选择)。

[C语言源程序]

#include

code unsigned char seg7code[10]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,

0x7d,0x07,0x7f,0x6f}; //显示段码

void Delay(unsigned int tc) //延时程序

{

while( tc != 0 ) //如果tc为0则终止延时

{

unsigned int i; //局部正整数变量i

for(i=0; i<100; i++); //执行400次将耗时1毫秒

tc--; //tc计数减一

}

}

void Led(int date) //显示函数

{

P2=P2&0x7f; //P2.7输出低电平,选通千位数

P0=seg7code[date/1000]; //取出千位数,查表,输出。

Delay(8); //延时

P2=P2|0xf0; //销隐

P2=P2&0xbf; //P2.6输出低电平,选通百位数

P0=seg7code[date%1000/100]; //取出百位数,查表,输出。

Delay(8); //延时

P2=P2|0xf0; //销隐

P2=P2&0xdf; //P2.5输出低电平,选通十位数

P0=seg7code[date%100/10]; //取出十位数,查表,输出。

Delay(8); //延时

P2=P2|0xf0; //销隐

P2=P2&0xef;

P0=seg7code[date%10]; //取出个位数,查表,输出。

Delay(8);

P2=P2|0xf0;

}

main()

{

int display_date=1234; //定义并赋值要显示的数据

while(1)

{

Led(display_date);//调用显示函数显示数据display_date

}

}

五.4×4矩阵式键盘识别

[实验任务]

用AT89S51的并行口P3接4×4矩阵键盘,以P3.0-P3.3作输入线,以P3.4-P3.7作输出线;在每一个数码管上显示每个按键的“0-F”序号。

[硬件电路]

[DPY-1实验板连接]

用排线把JP-CODE连到JP8是,注意:a接P0.0;b接P0.1;c接P0.3…… 把JP-CS连到JP14上,注意:4H接P2.4;3H接P2.5;2H接P2.6;1H接P2.7;用排

线把JP-KEY连到JP12上,注意1,2,3,4,5,6,7,8,分别对应P3.0,P3.1,P3.3,P3.4……

[实验原理]

每个按键有它的行值和列值 ,行值和列值的组合就是识别这个按键的编码。矩阵的行线和列线分别通过两并行接口和CPU通信。键盘处理程序的任务是:确定有无键按下,判断哪一个键按下,键的功能是什么;还要消除按键在闭合或断开时的抖动。两个并行口中,一个输出扫描码,使按键逐行动态接地,另一个并行口输入按键状态,由行扫描值和回馈信号共同形成键编码而识别按键,通过软件查表,查出该键的功能。

[C语言源程序]

#include

unsigned char code seg7code[]={0x3f,0x06,0x5b,0x4f, 0x66,0x6d,0x7d,0x07,

0x7f,0x6f,0x77,0x7c, 0x39,0x5e,0x79,0x71}; unsigned char k;

void delay10ms(void) //延时程序

{

unsigned char i,j;

for(i=20;i>0;i--)

for(j=248;j>0;j--);

}

void Getch ( )

{ unsigned char X,Y,Z;

P3=0xff;

P3=0x0f; //先对P3置数行扫描

if(P3!=0x0f) //判断是否有键按下

{delay10ms(); //延时,软件去干扰

if(P3!=0x0f) //确认按键按下X = P3;

{

X=P3; //保存行扫描时有键按下时状态

P3=0xf0; //列扫描

Y=P3; //保存列扫描时有键按下时状态

Z=X|Y; //取出键值

switch ( Z ) //判断键值(那一个键按下)

{

case 0xee: k=0; break; //对键值赋值

case 0xde: k=1; break;

case 0xbe: k=2; break;

case 0x7e: k=3; break;

case 0xed: k=4; break;

case 0xdd: k=5; break;

case 0xbd: k=6; break;

case 0x7d: k=7; break;

case 0xeb: k=8; break;

case 0xdb: k=9; break;

case 0xbb: k=10;break;

case 0x7b: k=11;break;

case 0xe7: k=12;break;

case 0xd7: k=13;break;

case 0xb7: k=14;break;

case 0x77: k=15;break;

} } } } //请注意写程序时的格式规范,此处是为了节省纸张void main(void)

{

while(1)

{ P3=0xff;

Getch();

P0=seg7code[k]; //查表LED输出

P2=0x0f; //输出相同的四位数据。

}

}

六.按键中断识别

[实验任务]

采用中断技术,每按一下按键,计数器加1,并用LED显示出来。

[硬件电路]

注意:我们只用了4位数码管中的两位。

[DPY-1实验板连接]

用排线把JP-CODE连到JP8上,注意:a接P0.0;b接P0.1;c接P0.3…… 把JP-CS连到JP14上,注意: 2H接P2.0; 1H接P2.1; 中断按键已经接好。 [实验原理]

以上的两个关于按键识别的实验的程序都是采用扫描的方式来实现的,CPU 的利用率比较低,在实时性要求高比较高,要求快速响应的场合不太实用。中断方式可以满足快速响应的要求。关于中断技术的具体内容,请大家参照教材。 [C语言源程序]

#include

unsigned char code table[]={0x3f,0x06,0x5b,0x4f,0x66,

0x6d,0x7d,0x07,0x7f,0x6f};

unsigned char dispcount=0; //计数

sbit gewei=P2^0; //个位选通定义

sbit shiwei=P2^1; //十位选通定义

void Delay(unsigned int tc) //延时程序

{ while( tc != 0 )

{

unsigned int i;

for(i=0; i<100; i++);

tc--;

}

}

void ExtInt0() interrupt 0 //中断服务程序

{

dispcount++; //每按一次中断按键,计数加一if (dispcount==100) //计数范围0-99

{dispcount=0;}

}

void LED( ) //LED显示函数

{

if(dispcount>=10) //显示两位数

{

shiwei=0;

P0=table[dispcount/10];

Delay(8);

shiwei=1;

gewei=0;

P0=table[dispcount%10];

Delay(5);

gewei=1;

}

else //显示一位数

{

shiwei=1;

gewei=0;

P0=table[dispcount];

Delay(8);

}

}

void main()

{ TCON=0x01; //中断设置

IE=0x81;

while(1) //循环执行

{

LED(); //只须调用显示函数

}

}

七.定时器T0的应用---9.9秒计时设计

[实验任务]

开始时,显示“00”,第1次按下BY1后就开始计时。第2次按BY1后,计时停止。 第3次按BY1后,计时归零。

[硬件电路]

与上一个的接法只

是按键接的I/O口

不一样。所以只要

用导线把JK5接到

P3.0上就可以了。

[DPY-1实验板连接]

用排线把JP-CODE连到JP8上,注意:a接P0.0;b接P0.1;c接P0.3……把JP-CS连到JP14,注意: 2H接P2.0; 1H接P2.1; 用导线把JK5接到P3.0上。[C语言源程序]

#include

unsigned char code table[]={0x3f,0x06,0x5b,0x4f,0x66,

0x6d,0x7d,0x07, 0x7f,0x6f, };

unsigned char sec; //定义计数值,每过1/10秒,sec加一

unsigned char keycnt=0;

unsigned int tcnt; //键值判断

sbit gewei=P2^0; //个位选通定义

sbit shiwei=P2^1; //十位选通定义

void Delay(unsigned int tc) //延时程序

{

while( tc != 0 )

{

unsigned int i;

for(i=0; i<100; i++);

tc--;

}

}

void LED() //LED显示函数

{

shiwei=0;

P0=table[sec/10];

Delay(8);

shiwei=1;

gewei=0;

P0=table[sec%10];

Delay(5);

gewei=1;

}

void KEY() //按键扫描程序

{

unsigned char i,j;

if(P3_0==0)

{

for(i=20;i>0;i--) //延时去干扰

for(j=248;j>0;j--);

if(P3_0==0)

{

keycnt++;

switch(keycnt) //按下次数判断

{

case 1: //第一次按下

TH0=0x06; //对TH0 TL0赋值

TL0=0x06;

TR0=1; //开始定时

break;

case 2: //第二次按下

TR0=0; //定时结束

break;

case 3: //第三次按下

keycnt=0; //重新开始判断键值

sec=0; //计数重新从零开始

break;

}

while(P3_0==0);

} } } //请注意写程序时的格式规范,此处是为了节省纸张void t0(void) interrupt 1 using 0 //定时中断服务函数

{

tcnt++; //每过250ust tcnt加一

if(tcnt==400) //计满400次(1/10秒)时

{

tcnt=0; //重新再计

sec++;

if(sec==100) //定时10秒,在从零开始计时

{

sec=0;

}

}

}

模数与数模转换

3. 模数转换器 (1) 模/数(A/D )转换器 A/D 转换器是模拟信号源与计算机或其它数字系统之间联系的桥梁,它的任务是将连续变化的模拟信号转换为数字信号,以便计算机或数字系统进行处理、存储、控制和显示。在工业控制和数据采集及其它领域中,A/D 转换器是不可缺少的重要组成部分。 1) 逐次逼近型A/D 转换器 逐次逼近型A/D 转换器又称逐次渐近型A/D 转换器,是一种反馈比较型A/D 转换器。逐次逼近型A/D 转换器进行转换的过程类似于天平称物体重量的过程。天平的一端放着被称的物体,另一端加砝码,各砝码的重量按二进制关系设置,一个比一个重量减半。称重时,把砝码从大到小依次放在天平上,与被称物体比较,如砝码不如物体重,则该砝码予以保留,反之去掉该砝码,多次试探,经天平比较加以取舍,直到天平基本平衡称出物体的重量为止。这样就以一系列二进制码的重量之和表示了被称物体的重量。例如设物体重11克,砝码的重量分别为1克、2克、4克和8克。称重时,物体天平的一端,在另一端先将8克的砝码放上,它比物体轻,该砝码予以保留(记为1),我们将被保留的砝码记为1,不被保留的砝码记为0。然后再将4克的砝码放上,现在砝码总和比物体重了,该砝码不予保留(记为0),依次类推,我们得到的物体重量用二进制数表示为1011。用下表7.1表示整个称重过程。 表7.1 逐次逼近法称重物体过程表 图7.7 逐次逼近型A/D 转换器方框图 利用上述天平称物体重量的原理可构成逐次逼近型A/D 转换器。 逐次逼近型A/D 转换器的结构框图如图7.7所示,包括四个部分:电压比较器、D/A 转换器、逐次逼近寄存器和顺序脉冲发生器及相应的控制逻辑。 逐次逼近型A/D 转换器是将大小不同的参考电压与输入模拟电压逐步进行比较,比较结果以相应的二进制代码表示。转换开始前先将寄存器清零,即送给D /A 转换器的数字量为0,三个输出门G 7、G 8、G 9被封锁,没有输出。转换控制信号有效后(为高电平)开始转换,在时钟脉冲作用下,顺序脉冲发生器发出一系列节拍脉冲,寄存器受顺序脉冲发生器及控制电路的控制,逐位改变其中的数码。首先控制逻辑将寄存器的最高位置为1,使其输出为100……00。这个数码被D/A 转换器转换成相应的模拟电压U o ,送到比较器与待转换的输入模拟电压U i 进行比较。若U o >U i ,说明寄存器输出数码过大,故将最高位的1变成0,同时将次高位置1;若U o ≤U i ,说明寄存器输出数码还不够大,则应将这一位的1 保留。数码的取舍通过电压比较器的输出经控制器来完成的。依次类推按上述方法将下一位置1进行比较确定该位的1是否保留,直到最低位为止。此时寄存器里保留下来的数码即为所求的输出数字量。 2) 并联比较型A/D 转换器 并联比较型A/D 转换器是一种高速A/D 转换器。图8-9所示是3位并联型A/D 转换器,

数模及模数转换器习题解答

数模及模数转换器习题解答

————————————————————————————————作者: ————————————————————————————————日期: ?

自我检测题 1.就实质而言,D/A转换器类似于译码器,A/D 转换器类似于编码器。 2.电压比较器相当于1位A/D 转换器。 3.A/D 转换的过程可分为 采样 、保持、量化、编码4个步骤。 4.就逐次逼近型和双积分型两种A /D 转换器而言, 双积分型 的抗干扰能力强, 逐次逼近型 的转换速度快。 5.A/D转换器两个最重要的指标是分辨率和转换速度。 6.8位D /A 转换器当输入数字量只有最低位为1时,输出电压为0.02V ,若输入数字量只有最高位为1时,则输出电压为 V 。 A.0.039 B .2.56 C .1.27 D .都不是 7.D/A 转换器的主要参数有 、转换精度和转换速度。 A .分辨率 B .输入电阻 C .输出电阻 D.参考电压 8.图T7.8所示R-2R网络型D/A 转换器的转换公式为 。 R R R I V REF 2R 2R 2R 2R 2R S 3 S 2 S 1 S 0 D 3 D 2 D 1 D 0 R F =R A + -v O i ∑ 图T 7.8 A .∑ =?- =3 3 REF o 22 i i i D V v ??B .∑=?- =3 4 REF o 2 232i i i D V v ??C .∑=?- =3 4 REF o 2 2 i i i D V v ??D .∑=?= 3 4 REF o 2 2 i i i D V v 9.D/A 转换器可能存在哪几种转换误差?试分析误差的特点及其产生误差的原因。 解:D/A 转换器的转换误差是一个综合性的静态性能指标,通常以偏移误差、增益误差、非线性误差等内容来描述转换误差。 偏移误差是指D/A转换器输出模拟量的实际起始数值与理想起始数值之差。 增益误差是指实际转换特性曲线的斜率与理想特性曲线的斜率的偏差。 D/A 转换器实际的包络线与两端点间的直线比较仍可能存在误差,这种误差称为非线性误差。 10.比较权电阻型、R -2R 网络型、权电流型等D/A 转换器的特点,结合制造工

数模模数转换实验报告

数模模数转换实验报告 一、实验目的 1、了解数模和模数转换电路的接口方法及相应程序设计方法。 2、了解数模和模数转换电路芯片的性能和工作时序。 二、实验条件 1、DOS操作系统平台 2、数模转换芯片DAC0832和模数转换器ADC0809芯片。 三、实验原理 1、数模转换: (1)微机处理的数据都是数字信号,而实际的执行电路很多都是模拟的。因此微机的处理结果又常常需要转换为模拟信号去驱动相应的执行单元,实现对被控对象的控制。这种把数字量转换为模拟量的设备称为数模转换器(DAC),简称D/A。 (2)实验中所用的数模转换芯片是DAC0832,它是由输入寄存器、DAC 寄存器和D/A 转换器组成的CMOS 器件。其特点是片内包含两个独立的8 位寄存器,因而具有二次缓冲功能,可以将被转换的数据预先存在DAC 寄存器中,同时又采集下一组数据,这就可以根据需要快速修改DAC0832 的输出。 2、模数转换: (1)在工程实时控制中,经常要把检测到的连续变化的模拟信号,如温度、压力、速度等转换为离散的数字量,才能输入计算机进行处理。实现模拟量到数字量转换的设备就是模数转换器(ADC),简称A/D。

(2)模数转换芯片的工作过程大体分为三个阶段:首先要启动模数转换过程。其次,由于转换过程需要时间,不能立即得到结果,所以需要等待一段时间。一般模数转换芯片会有一条专门的信号线表示转换是否结束。微机可以将这条信号线作为中断请求信号,用中断的方式得到转换结束的消息,也可以对这条信号线进行查询,还可以采用固定延时进行等待(因为这类芯片转换时间是固定的,事先可以知道)。最后,当判断转换已经结束的时候,微机就可以从模数转换芯片中读出转换结果。 (3)实验采用的是8 路8 位模数转换器ADC0809 芯片。ADC0809 采用逐次比较的方式进行A/D 转换,其主要原理为:将一待转换的模拟信号与一个推测信号进行比较,根据推测信号是大于还是小于输入信号来决定增大还是减少该推测信号,以便向模拟输入逼近。推测信号由D/A 转换器的输出获得,当推测信号与模拟信号相等时,向D/A 转换器输入的数字就是对应模拟信号的数字量。ADC0809 的转换时间为64 个时钟周期(时钟频率500K 时为128S)。分辨率为 8 位,转换精度为±LSB/2,单电源+5V 供电时输入模拟电压范围为04.98V。 四、实验内容 1、把DAC0832 的片选接偏移为10H 的地址,使用debug 命令来测试 DAC0832 的输出,通过设置不同的输出值,使用万用表测量Ua 和Ub 的模拟电压,检验DAC0832 的功能。选取典型(最低、最高和半量程等)的二进制值进行检验,记录测得的结果。实验结果记录如下:

第九章:数模和模数转换器

第九章:数模和模数转换器 一、单选题 1:想选一个中等速度,价格低廉的A/D转换器,下面符合条件的是()。 A 逐次逼近型 B 双积分型 C 并联比较型 D 不能确定 2:下面抑制电网公频干扰能力强的A/D转换器是()。 A 逐次逼近型 B 双积分型 C 并联比较型 D 不能确定 3:不适合对高频信号进行A/D转换的是()。 A 并联比较型 B 逐次逼近型 C 双积分型 D 不能确定 4:四位DAC和八位DAC的输出最小电压一样大,那么他们的最大输出电压()。 A 一样大 B 前者大于后者 C 后者大于前者 D 不确定 5:四位权电阻DAC和四位R—2R倒T型DAC在参数一样的条件下最大输出电压()。 A 一样大 B 前者大于后者 C 后者大于前者 D 不确定 6:四位权电阻DAC和四位R—2R倒T型DAC在参数一样的条件下分辨率()。 A 一样大 B 前者大于后者 C 后者大于前者 D 不确定 7:下列A/D转换器类型中,相同转换位数转换速度最高的是()。 A 并联比较型 B 逐次逼近型 C 双积分型 D 不能确定 8.一个无符号8位数字量输入的DAC,其分辨率为位。 A.1 B.3 C.4 D.8 9.将一个时间上连续变化的模拟量转换为时间上断续(离散)的模拟量的过程称为。 A.采样 B.量化 C.保持 D.编码 10.以下四种转换器,是A/D转换器且转换速度最高。 A.并联比较型 B.逐次逼近型 C.双积分型 D.施密特触发器 二、判断题 1:D/A转换器的建立时间等于数字信号由全零变全1或由全1变全0所需要的时间。()2:D/A转换器的转换精度等于D/A转换器的分辨率。() 3:采用四舍五入量化误差分析时,A/D转换过程中最小量化单位与量化误差是相等的。() 4:在A/D转换过程中量化误差是可以避免的。() 5:由于R-2R 倒T 型D/A转换器自身的优点,其应用比权电阻DAC广泛。() 6:倒T型网络D/A转换器由于支路电流不变,所以不需要建立时间。() 7:A/D转换的分辨率是指输出数字量中只有最低有效位为1时所需的模拟电压输入值。() 8.权电阻网络D/A转换器的电路简单且便于集成工艺制造,因此被广泛使用。()9.D/A转换器的最大输出电压的绝对值可达到基准电压V REF。()

第8章-数模和模数转换习题解答

思考题与习题 8-1 选择题 1)一输入为十位二进制(n=10)的倒T 型电阻网络DAC 电路中,基准电压REF V 提供电流为 b 。 A. R V 10REF 2 B. R V 10REF 22? C. R V REF D. R V i )2(REF ∑ 2)权电阻网络DAC 电路最小输出电压是 b 。 A. LSB 21V B. LSB V C. MSB V D. MSB 2 1V 3)在D/A 转换电路中,输出模拟电压数值与输入的数字量之间 a 关系。 A.成正比 B. 成反比 C. 无 4)ADC 的量化单位为S ,用舍尾取整法对采样值量化,则其量化误差m ax ε= b 。 A.0.5 S B. 1 S C. 1.5 S D. 2 S 5)在D/A 转换电路中,当输入全部为“0”时,输出电压等于 b 。 A.电源电压 B. 0 C. 基准电压 6)在D/A 转换电路中,数字量的位数越多,分辨输出最小电压的能力 c 。 A.越稳定 B. 越弱 C. 越强 7)在A/D 转换电路中,输出数字量与输入的模拟电压之间 a 关系。 A.成正比 B. 成反比 C. 无 8)集成ADC0809可以锁存 8 模拟信号。 A.4路 B. 8路 C. 10路 D. 16路 5)双积分型ADC 的缺点是 a 。 A.转换速度较慢 B. 转换时间不固定 C. 对元件稳定性要求较高 D. 电路较复杂 8-2 填空题 1)理想的DAC 转换特性应是使输出模拟量与输入数字量成__正比__。转换精度是指DAC 输出的实际值和理论值__之差_。 2)将模拟量转换为数字量,采用 __A/D__ 转换器,将数字量转换为模拟量,采用__D/A_____ 转换器。 3)A/D 转换器的转换过程,可分为采样、保持及 量化 和 编码 4个步骤。 4)A/D 转换电路的量化单位位S ,用四舍五入法对采样值量化,则其m ax ε= 0.5s 。 5)在D/A 转换器的分辨率越高,分辨 最小输出模拟量 的能力越强;A/D 转换器的分辨率越高,分辨 最小输入模拟量 的能力越强。 6)A/D 转换过程中,量化误差是指 1个LSB 的输出变所对应的模拟量的范围 ,量化误差是 不可 消除的。

数模及模数转换器习题解答

数模及模数转换器习题 解答 Document number:NOCG-YUNOO-BUYTT-UU986-1986UT

自我检测题 1.就实质而言,D/A 转换器类似于译码器,A/D 转换器类似于编码器。 2.电压比较器相当于1位A/D 转换器。 3.A/D 转换的过程可分为 采样 、保持、量化、编码4个步骤。 4.就逐次逼近型和双积分型两种A/D 转换器而言, 双积分型 的抗干扰能力强, 逐次逼近型 的转换速度快。 5.A/D 6.8位D/A 1时,输出电压为,若输入数字量只有最高位为1时,则输出电压为 V 。 A . B .2.56 C . D .都不是 7.D/A 转换器的主要参数有 、转换精度和转换速度。 A .分辨率 B .输入电阻 C .输出电阻 D .参考电压 8.图所示R-2R 网络型D/A 转换器的转换公式为 。 V REF v O 图 A .∑=?- =3 3 REF o 2 2 i i i D V v B .∑=?- =3 4 REF o 2 232i i i D V v D .∑=?= 3 4 REF o 2 2i i i D V v 9.D/A 转换器可能存在哪几种转换误差试分析误差的特点及其产生误差的原因。 解:D/A 转换器的转换误差是一个综合性的静态性能指标,通常以偏移误差、增益误差、非线性误差等内容来描述转换误差。 偏移误差是指D/A 转换器输出模拟量的实际起始数值与理想起始数值之差。 增益误差是指实际转换特性曲线的斜率与理想特性曲线的斜率的偏差。 D/A 转换器实际的包络线与两端点间的直线比较仍可能存在误差,这种误差称为非线性误差。

实验一 D、A数模转换实验

实验一D/A数模转换实验 一、实验目的 1.掌握数模转换的基本原理。 2.熟悉12位D/A转换的方法。 二、实验仪器 1.EL-A T-II型计算机控制系统实验箱一台 2.PC计算机一台 三、实验内容 通过A/D&D/A卡完成12位D/A转换实验,在这里用双极性模拟量输出,数字量输入范围为:0~4096,模拟量输出范围为:-5V~+5V。转换公式如下:U0=Vref-2Vref(211K11+210K10+…20K0)/212 Vref=5.0V 例如:数字量=000110011001 则 K11=0,K10=0,K9=0,K8=1,K7=1,K6=0,K5=0,K4=1,K3=1,K2=0,K1=0,K0=1 模拟量U0=Vref-2Vref(211K11+210K10+…20K0)/212=4V 四、实验步骤 1.连接A/D、D/A卡的DA输出通道和AD采集通道。A/D、D/A卡的DA1的输出接A/D、D/A卡的AD1输入。检查无误后接通电源。 2.启动计算机,在桌面上双击图表[Computerctrl]或在计算机程序组中运行[Computerctrl]软件。 3.测试计算机与实验箱的通信是否正常,通信正常继续。如通信不正常查找原因使通信正常后才可以继续进行实验。 4.在实验课题下拉菜单中选择实验一[D/A模数转换实验],鼠标单击该选项弹出实验课题参数窗口。 5.在弹出的参数窗口中填入想要变换的数字量,点击变换,在下面的文字框内将算出变换后的模拟量。 6.点击运行,在显示窗口观测采集到的模拟量。并将测量结果填入下表:

五、实验报告 1.画出数字量与模拟量的对应曲线 2.计算出理论值,将其与实验结果比较,分析产生误差的原因。

数模与模数转换器 习题与参考答案

第11章 数模与模数转换器 习题与参考答案 【题11-1】 反相运算放大器如图题11-1所示,其输入电压为10mV ,试计算其输出电压V O 。 图题11-1 解:输出电压为: mV mV V R R V IN F O 10010101 =?=-= 【题11-2】 同相运算放大器如图题11-2所示,其输入电压为10 mV ,试计算其输出电压V O 。 图题11-2 解:mV mV V R R V IN F O 110101111 =?=+=)( 【题11-3】 图题11-3所示的是权电阻D/A 转换器与其输入数字信号列表,若数字1代表5V ,数字0代表0V ,试计算D/A 转换器输出电压V O 。 11-3 【题11-4】 试计算图题11-4所示电路的输出电压V O 。 图题11-4 解:由图可知,D 3~D 0=0101 因此输出电压为:V V V V O 5625.151650101254 === )( 【题11-5】 8位输出电压型R/2R 电阻网络D/A 转换器的参考电压为5V ,若数字输入为,该转换器输出电压V O 是多少?

解:V V V V O 988.21532565100110012 58≈== )( 【题11-6】 试计算图题11-6所示电路的输出电压V O 。 图题11-6 解:V V V D D V V n n REF O 5625.1516501012 5~240==-=-=)()( 【题11-7】 试分析图题11-7所示电路的工作原理。若是输入电压V IN =,D 3~D 0是多少? 图题11-7 解:D3=1时,V V V O 6221234== ,D3=0时,V O =0。 D2=1时,V V V O 3221224== ,D2=0时,V O =0。 D1=1时,V V V O 5.1221214== ,D1=0时,V O =0。 D0=1时,V V V O 75.0221204 ==,D0=0时,V O =0 由此可知:输入电压为,D3~D0=1101,这时V O =6V++=,大于输入电压V IN =,比较器输出低电平,使与非门74LS00封锁时钟脉冲CLK ,74LS293停止计数。 【题11-8】 满度电压为5V 的8位D/A 转换器,其台阶电压是多少?分辨率是多少? 解:台阶电压为mV mV V STEP 5.192/50008== 分辨率为:%39.00039.05000/5.195000/===mV V STEP

数模转换原理及应用

数模(D/A)转换器及模数(A/D)转换器 一、实验目的 1.熟悉D / A转换器的基本工作原理。 2.掌握D / A转换集成芯片DAC0832的性能及其使用方法。 3.熟悉A / D转换器的工作原理。 4.掌握A / D转换集成芯片ADC0809的性能及其使用方法。 二、实验原理 1.数模(D / A)转换 所谓数模(D / A)转换,就是把数字量信号转换成模拟量信号,且输出电压与输入的数字量成一定的比例关系。图47为D / A 转换器的原理图,它是由恒流源(或恒压源)、模拟开关、以及数字量代码所控制的电阻网络、运放等组成的四位D/ A转换器。 四个开关S0 ~ S3由各位代码控制,若―S‖代码为1,则意味着接VREF ,代码―S‖= 0,则意味着接地。 由于运放的输出值为V0= -I∑?Rf ,而I∑为I0、I1、I2、I3的和,而I0 ~ I3的值分别为(―S‖代码全为1): I0 =,I1 =,I2 =,I3 = 若选 R0 =,R1 =,R2 =,R3 = 则I0 ==?20 ,I1 =?21 ,I2 =?22 ,I3 =?23 若开关S0 ~ S3不全合上,则―S‖代码有些为0,有些为1(设4位―S‖代码为D3D2DlD0),则I∑ =D3I3 + D2I2 + DlIl + D0I0 =(D3?23 + D2?22 + D1?21 + D0?20)= B? 所以,V0 = -Rf ? B,B为二进制数,即模拟电压输出正比于输入数字量B ,从而实现了数字量的转换。 随着集成技术的发展,中大规模的D / A转换集成块相继出现,它们将转换的电阻网络和受数码控制的电子开关都集成在同一芯片上,所以用起来很方便。目前,常用的芯片型号很多,有8位的、12位的转换器等,这里我们选用8位的D / A转换器DAC0832进行实验研究。 DAC0832是CMOS工艺,共20管引脚,其管脚排列如图48所示。

数模转换器和模数转换器实验报告

实验报告 课程名称微机原理与接口技术 实验项目实验五 数/模转换器和模/数转换器实验实验仪器 TPC-USB通用微机接口实验系统 系别计算机系 专业网络工程 班级/学号 学生 _ 实验日期 成绩_______________________ 指导教师王欣

实验五数/模转换器和模/数转换器实验 一、实验目的 1. 了解数/模转换器的基本原理,掌握DAC0832芯片的使用方法。 2. 了解模/数转换器的基本原理,掌握ADC0809的使用方法。 二.实验设备 1.PC微机系统一套 2.TPC-USB通用微机接口实验系统一套 三.实验要求 1.实验前要作好充分准备,包括程序框图、源程序清单、调试步骤、测试方法、对运行结果的分析等。 2.熟悉与实验有关的系统软件(如编辑程序、汇编程序、连接程序和调试程序等)使用方法。在程序调试过程中,有意识地了解并掌握TPC-USB通用微机接口实验系统的软硬件环境及使用,掌握程序的调试及运行的方法技巧。 3.实验前仔细阅读理解教材相关章节的相关容,实验时必须携带教材及实验讲义。 四.实验容及步骤 (一)数/模转换器实验 1.实验电路原理如图1,DAC0832采用单缓冲方式,具有单双极性输入端(图中的Ua、Ub),编程产生以下锯齿波(从Ua和Ub输出,用示波器观察) 图1 实验连接参考电路图之一 编程提示: 1. 8位D/A转换器DAC0832的口地址为290H,输入数据与输出电压的关系为:

(UREF表示参考电压,N表示数数据),这里的参考电压为PC机的+5V电源。 2. 产生锯齿波只须将输出到DAC0832的数据由0循环递增。 3. 参考流程图(见图2): 图2 实验参考流程图之一 (二)模/数转换器 1. 实验电路原理图如图3。将实验(一)的DAC的输出Ua,送入ADC0809通道1(IN1)。 图3 实验连接参考电路图之二 2. 编程采集IN1输入的电压,在屏幕上显示出转换后的数据(用16进制数)。编程提示: 1. ADC0809的IN0口地址为298H,IN1口地址为299H。 2. IN0单极性输入电压与转换后数字的关系为:

数模转换与模数转换

第六章数模转换与模数转换 授课题目: 6.1 D/A转换器 教学目标: 1、掌握数模、模数转换的概念。 2、理解数模转换的原理。 3、熟悉D/A转换器集成芯片的性能,学习其使用方法。 教学内容(包括重点、难点): 教学重点:1、数模转换的基本原理。 2、D/A转换器集成芯片的使用。 教学难点:1、转换电路的分析计算。 2、知识的综合复习应用。 教学过程设计 ●复习并导入新课 问题:回忆二进制转换为十进制的加权和公式和电阻的串联、并联。 ●就新课内容提出问题 1、什么是模拟量? 2、什么是电模拟量? ●讲授新课 计算机对生产进行实时控制的过程如下: 模拟量:温度、压力、湿度、流量、速度等 电模拟量:电压、电流 6.1 D/A转换器

D/A 转换—从数字信号到模拟信号的转换。 D/A 转换器(简称DAC )—完成D/A 转换的电路。 一、D/A 转换电路原理图 数据锁存器:暂时存放输入的数字量; 模拟电子开关:这些数字量控制模拟电子开关,将参考电压源UREF 按位切换到电阻译码网络中变成加权电流。 集成运放:加权电流经运放求和,输出相应的模拟电压,完成D/A 转换过程。 二、倒 T 形电阻网络DAC 1、电路图 2、工作原理—电流分流形成加权值。 3、转换公式 4、特点 电阻值一致。倒T 形电阻网络支路电流恒定,电路转换速度高。 举例1:若U R=10V ,求对应D3D2D1D0分别为1010、0110和1100时输出电压值。 三、主要性能指标 1、分辨率 分辨率:说明DAC 输出最小电压的能力。它是指最小输出电压(对应的输入数字量仅最低位为1)与最大输出电压(对应的输入数字量各有效位全为1)之比: 分辨率= n :表示输入数字量的位数。n 越大,分辨最小输出电压的能力也越强。 举例2:n=8, DAC 的分辨率为 分辨率= =0.0039 数据锁存器 … D 0D 1 D n -1 … 模拟电子开关 … 电阻译码网络 … 求和运放 参考电压源 模拟输出 U )2...22(2 0022101?++?+?- =----D D D U U n n n n REF n 1 21-n 1 21 -n

基于51单片机的模数转换(AD)实验设计

HEFEI UNIVERSITY 单片机课程综述报告 主题基于51单片机的模数转换(A/D)实验设计姓名郭丽丽 专业通信工程 学号 1105021006 班级 11级通信(1)班 指导老师汪济洲 2014 年 6 月 2 日

目录 1.实验目的与要求 (1) 1.1实验目的 (1) 1.2实验要求 (1) 2.实验原理 (1) 2.1电路原理图 (1) 2.2 Proteus7.4 软件简介 (2) 3、实验步骤 (6) 4、源程序代码 (6) 5. 实验结果分析 (10) 6.总结 (10)

1.实验目的与要求 1.1实验目的 1.掌握A/D转换与单片机的接口方法 2.了解A/D芯片ADC0809转换性能及编程方法 3.通过实验了解单片机如何进行数据采集 1.2实验要求 1.采用查询法或中断法编程进行A/D采集; 2.采集0~5V范围的电压信号(以电位器模拟被测信号),使用4位串行数码管显示0~5V数值,小数点保留三位,实现简易电压表功能。 2.实验原理 2.1电路原理图 熟悉8051的输入输出端口的使用方法, 本实验的电路连接如图1所示。 图1 连接电路

2.2 Proteus7.4 软件简介 Proteus是英国Labcenter公司开发的电路分析与实物仿真软件。它运行于Windows操作系统上,可以仿真、分析(SPICE)各种模拟器件和集成电路,该软件的特点是: ①实现了单片机仿真和SPICE电路仿真相结合。具有模拟电路仿真、数字电路仿真、单片机及其外围电路组成的系统的仿真、RS232动态仿真、I2C调试器、SPI调试器、键盘和LCD系统仿真的功能;有各种虚拟仪器,如示波器、逻辑分析仪、信号发生器等。 ②支持主流单片机系统的仿真。目前支持的单片机类型有:ARM7(LPC21xx)、8051/52系列、AVR系列、PIC10/12/16/18系列、HC11系列以及多种外围芯片。 ③提供软件调试功能。在硬件仿真系统中具有全速、单步、设置断点等调试功能,同时可以观察各个变量、寄存器等的当前状态,因此在该软件仿真系统中,也必须具有这些功能;同时支持第三方的软件编译和调试环境,如Keil C51 uVision2、MPLAB等软件。 ④具有强大的原理图绘制功能。总之,该软件是一款集单片机和SPICE分析于一身的仿真软件,功能极其强大。 其操作界面如下图所示: 图2 Proteus操作页面

数模和模数转换习题解答

8-1 选择题 1)一输入为十位二进制(n=10)的倒T 型电阻网络DAC 电路中,基准电压REF V 提供电流为 b 。 A. R V 10REF 2 B. R V 10REF 22? C. R V REF D. R V i )2(REF ∑ 2)权电阻网络DAC 电路最小输出电压是 b 。 A. LSB 21V B. LSB V C. MSB V D. MSB 2 1V 3)在D/A 转换电路中,输出模拟电压数值与输入的数字量之间 a 关系。 A.成正比 B. 成反比 C. 无 4)ADC 的量化单位为S ,用舍尾取整法对采样值量化,则其量化误差m ax ε= b 。 A.0.5 S B. 1 S C. S D. 2 S 5)在D/A 转换电路中,当输入全部为“0”时,输出电压等于 b 。 A.电源电压 B. 0 C. 基准电压 6)在D/A 转换电路中,数字量的位数越多,分辨输出最小电压的能力 c 。 A.越稳定 B. 越弱 C. 越强 7)在A/D 转换电路中,输出数字量与输入的模拟电压之间 a 关系。 A.成正比 B. 成反比 C. 无 8)集成ADC0809可以锁存 8 模拟信号。 路 B. 8路 C. 10路 D. 16路 5)双积分型ADC 的缺点是 a 。 A.转换速度较慢 B. 转换时间不固定 C. 对元件稳定性要求较高 D. 电路较复杂 8-2 填空题 1)理想的DAC 转换特性应是使输出模拟量与输入数字量成__正比__。转换精度是指DAC 输出的实际值和理论值__之差_。 2)将模拟量转换为数字量,采用 __A/D__ 转换器,将数字量转换为模拟量,采用__D/A_____ 转换器。 3)A/D 转换器的转换过程,可分为采样、保持及 量化 和 编码 4个步骤。 4)A/D 转换电路的量化单位位S ,用四舍五入法对采样值量化,则其m ax ε= 。 5)在D/A 转换器的分辨率越高,分辨 最小输出模拟量 的能力越强;A/D 转换器的分辨率越高,分辨 最小输入模拟量 的能力越强。 6)A/D 转换过程中,量化误差是指 1个LSB 的输出变所对应的模拟量的范围 ,量化误差是 不可 消除的。 8-3 要求某DAC 电路输出的最小分辨电压LSB V 约为5m V,最大满度输出电压m U =10V,试求该电路输入二进制数字量的位数N应是多少?

实验十——数模转换器

武汉大学物理科学与技术学院 物理实验报告 物理科学与技术学院 物理学基地2班专业 2013年12月12日 实验名称:实验十——数/模转换器 姓名:吕品磊 年级:2011 学号:2011301020033 成绩: 一、 实验目的: 1、了解数/模转换器的基本原理; 2、掌握DAC0832芯片的使用方法。 二、 实验内容 1、实验电路原理如图10.1,DAC0832采用单缓冲方式,具有单双极性输入 端(图中的Ua、Ub),利用debug输出命令(Out 290 数据)输出数据给DAC0832,用万用表测量单极性输出端Ua及双极性输出端Ub的电压,验证数字与电压之间的线性关系。 2、编程产生以下波形(从Ub输出,用示波器观察) (1)锯齿波 (2)正弦波 图 10.1

三、 流程图 四、 原程序 DATA S EGMENT DATA E NDS CODE S EGMENT ASSUME C S: C ODE, D S: D ATA START: MOV A X, D ATA MOV D S, A X AGAIN: MOV C L, 0 ;初始化锯齿波 MOV B L,0 ;初始化锯齿波数量 INC B L A1: MOV A L, C L MOV D X, 0C810H ;DAC0832控制端口 OUT D X, A L ;输出控制端口

INC C L ;波形上升 CMP B L, 0FH ;确定锯齿波数量(此处的OFH) JZ E NND CMP C L, 200 ;确定锯齿波高度(此处的200,可以更改) JZ A GAIN ENND: MOV A H, 1 ;输入回显 INT 16H JZ A1 MOV A H, 4CH ;返回DOS INT 21H CODE E NDS END S TART 五、 实验分析: 1、此次实验程序较为简单,在通过debug进行调试的时候,发现随着CL 的增加波形会不断上升,通过到达一个特定值,重置CL,做到实现锯 齿波的原理。 2、同样的道理,在实验二中要求做出一个正弦波只要根据正弦函数建一 个下弦数字量表,按照特定的取值就可以画出相应的波形。其他的函 数波形也可以采用同样的方式进行处理。

数模与模数转换

第8章数模与模数转换 随着科学技术的迅速发展,尤其是在自动控制、自动检测通信等领域中,广泛采用数字电子计算机处理各种模拟信号,这样,必须先把这些模拟信号转换成相应的数字信号,计算机系统才能进行分析、处理,处理后的数字信号还需再转换为模拟信号才能实现对执行机构的控制。从模拟信号到数字信号的转换称为模—数转换,简写为A/D。把能完成A/D转换功能的电路称为模数转换器,简称为ADC(Analog to Digital Converter)。从数字信号到模拟信号的转换称为数—模转换,简写为D/A,把能完成D/A转换功能的电路称为数模转换器,简称DAC(Digital to Analog Converter)。模拟信号和数字信号之间的转换可用图8-1所示,由此可见,ADC和DAC就是连接模拟系统和数字系统的“桥梁”—接口电路。 图8-1 模拟信号与数字信号的转换过程 8.1 数模转换 数模转换的基本思想是,把数字量中的每一位代码按对应权的大小转换成相应的模拟量,这些模拟量之和与数字量成正比。 数模转换器由输入寄存器、电子模拟开关、解码网络、基准电压源和求和电路组成,其组成的方框图如图8-2所示。 图8-2 DAC构成框图 DAC电路的工作过程为:数字量以并行或串行方式输入并存储在输入寄存器中,寄存器输出的每位数码驱动对应数位上的电子模拟开关,解码网络就能获得相应的模拟量,再将这些模拟量送到求和电路相加即得到与数字量相对应的模拟量。 数模转换器按解码网络结构分为T形及倒T形电阻网络D/A转换器,权电阻网络D/A 转换器,权电流D/A转换器等。按模拟开关电路的不同可分为CMOS开关型和双极开关型D/A转换器,下面介绍常见的两种即倒T形电阻网络型和权电流型D/A转换器。 8.1.1 倒T形电阻网络D/A转换器

单片机DA数模转换实验报告

一、实验目的和要求 1、掌握单片机与DAC0832的接口设计方法。 2、掌握Proteus软件与Keil软件的使用方法。 二、设计要求。 1、用Proteus软件画出电路原理图,在单片机的外部扩展片外三总线,并通过片外三总线与0832接口。 2、在单片机的外部扩展一个4个按键的键盘。 3、按下K0,产生连续方波信号。 4、按下K1,产生连续锯齿波信号。 5、按下K2,产生连续三角波信号。 6、按下K3,产生连续正弦波信号。 7、通过外接示波器观察波形。 三、电路原理图。 图1、电路仿真图

四、实验程序流程框图和程序清单。 ORG 0000H START: LJMP MAIN ORG 0100H MAIN: MOV SP, #60H LOOP: LCALL KEY JB 20H.0, JUCHIBO JB 20H.1, JUXINGBO JB 20H.2, SANJIAOBO JB 20H.3, ZHENGXIAN JB 20H.4, TIXINGBO LJMP LOOP JUCHIBO: MOV R2, #00H LOOP1: MOV DPTR, #0000H MOV A , R2 MOVX @DPTR, A LCALL KEY JB 20H.0, JUCHIBO JB 20H.1, JUXINGBO JB 20H.2, SANJIAOBO JB 20H.3, ZHENGXIAN JB 20H.4, TIXINGBO INC R2 LJMP LOOP1 JUXINGBO: MOV DPTR , #0000H LOOP2: MOV R3, #0FFH MOV A, R3 MOVX @DPTR, A LCALL DELAY1ms LCALL KEY JB 20H.0, JUCHIBO JB 20H.1, JUXINGBO JB 20H.2, SANJIAOBO JB 20H.3, ZHENGXIAN JB 20H.4, TIXINGBO MOV R3, #00H MOV A, R3 MOVX @DPTR, A LCALL DELAY1ms LCALL KEY JB 20H.0, JUCHIBO JB 20H.1, JUXINGBO JB 20H.2, SANJIAOBO JB 20H.3, ZHENGXIAN JB 20H.4, TIXINGBO LJMP LOOP2 SANJIAOBO:MOV R2, #00H MOV DPTR, #0000H LOOP3: MOV A, R2 NOP NOP MOVX @DPTR, A INC R2 LCALL KEY JB 20H.0, JUCHIBO JB 20H.1, JUXINGBO JB 20H.2, SANJIAOBO

DAC0832数模转换技术实验

实验三DAC0832数/模转换技术实验 一实验目的 ①掌握DAC0832与MSC-51单片机的接口方法。 ②掌握D/A转换程序的设计方法。 二实验器材 1.实验仪一台;2. 编程器一台;3.小镊子一把; 4.示波器一台; 5.电脑一台 三实验原理 D/A转换器的功能主要是将输入的数字量信号转换成模拟量,在语音合成等方面得到了广泛的应用。本实验中采用的D/A转换器为DAC0832,该芯片为电流输出型8位D/A转换器,输入有两级缓冲锁存器,因此,可以同时输出多路模拟量。本实验中采用单级缓冲连接方式,用DAC0832来产锯齿波,具体线路如图20所示。(图中省去了复位电路、时钟电路、地址锁存器等电路) 四跳线设置 如程序存放在AT89S51中,AT89S51的/EA(引脚31)必须接高电平,实验时需短路J13的1和2引脚,否则;必须短路J13的2和3引脚;

五实验内容与要求 编制程序使图中运放LM741输出幅度为3V的方或矩形波。 六实验源程序 CS0832 EQU 0FF9FH ORG 0000H MAIN: MOV DPTR,#CS0832 MOV A,#10 LP: MOVX @DPTR,A ACALL DLY MOV A,#163 MOVX @DPTR,A ACALL DLY MOV A,#10 SJMP LP DLY: MOV R7,#125 DLY1:DJNZ R7,DLY1 RET END 七实验总结 这个DACO823数/模转换技术实验相对之前的两个实验难度大多了。我肯定我是学得不怎么好的,再加上这样的难度,对我们组来说真的挺大的挑战,跟同学讨论这个就肯定要的了。编制程序使图中运放LM741输出幅度为3V的方或矩形波。这个实验的过程经过了很多次的失败,原本认为是成功的了,叫老师来检查之后才知道还是错误的。

数模和模数转换

一、选择题 1.一个无符号8位数字量输入的DAC,其分辨率为位。 A.1 B.3 C.4 D.8 2.一个无符号10位数字输入的DAC,其输出电平的级数为。 10 A.4 B.10 C.1024 D.2 3.一个无符号4位权电阻DAC,最低位处的电阻为40KΩ,则最高位处电阻为。 A.4KΩ B.5KΩ C.10KΩ D.20KΩ 4.4位倒T型电阻网络DAC的电阻网络的电阻取值有种。 A.1 B.2 C.4 D.8 5.为使采样输出信号不失真地代表输入模拟信号,采样频率≥ B. ≤ C. ≥2 D. ≤2 和输入模拟信号的最高频率的关系是。 A. 6.将一个时间上连续变化的模拟量转换为时间上断续(离散)的模拟量的过程称为。 A.采样 B.量化 C.保持 D.编码 7.用二进制码表示指定离散电平的过程称为。 A.采样 B.量化 C.保持 D.编码 8.将幅值上、时间上离散的阶梯电平统一归并到最邻近的指定电平的过程称为。 A.采样 B.量化 C.保持 D.编码 9.若某ADC取量化单位△=,并规定对于输入电压,在0≤<时,认为输入的模拟电压为0V,输出的二进制数为000,则≤<时,输出的二进制数为。 A.001 B.101 C.110 D.111 10.以下四种转换器,是A/D转换器且转换速度最高。 A.并联比较型 B.逐次逼近型 C.双积分型 D.施密特触发器 二、判断题(正确打√,错误的打×)

1.权电阻网络D/A转换器的电路简单且便于集成工艺制造,因此被广泛使用。() 2.D/A转换器的最大输出电压的绝对值可达到基准电压V REF。() 3.D/A转换器的位数越多,能够分辨的最小输出电压变化量就越小。() 4.D/A转换器的位数越多,转换精度越高。() 5.A/D转换器的二进制数的位数越多,量化单位△越小。()6.A/D转换过程中,必然会出现量化误差。() 7.A/D转换器的二进制数的位数越多,量化级分得越多,量化误差就可以减小到0。() 8.一个N位逐次逼近型A/D转换器完成一次转换要进行N次比较,需要N+2个时钟脉冲。() 9.双积分型A/D转换器的转换精度高、抗干扰能力强,因此常用于数字式仪表中。() 10.采样定理的规定,是为了能不失真地恢复原模拟信号,而又不使电路过于复杂。() 三、填空题 1.将模拟信号转换为数字信号,需要经过、、、四个过程。 答案: 一、选择题 1. D 2. CD 3. B 4. B 5. C 6. A 7. D 8. B

实验十adc0832数模转换的显示

实验报告十 实验名称:ADC0832数模转换的显示 目的:ADC0832是8脚双列直插式双通道A/D转换器,能分别对两路模拟信号实现模—数转换,可以用在单端输入方式和差分方式下工作。ADC0832采用串行通信方式,通过DI 数据输入端进行通道选择、数据采集及数据传送。8位的分辨率(最高分辨可达256级),可以适应一般的模拟量转换要求。其内部电源输入与参考电压的复用,使得芯片的模拟电压输入在0~5V之间。具有双数据输出可作为数据校验,以减少数据误差,转换速度快且稳定性能强。独立的芯片使能输入,使多器件挂接和处理器控制变的更加方便。 ADC0832的工作原理: 正常情况下ADC0832 与单片机的接口应为4条数据线,分别是CS、CLK、DO、DI。但由于DO端与DI端在通信时并未同时使用并与单片机的接口是双向的,所以在I/O口资源紧张时可以将DO和DI并联在一根数据线上使用。当ADC0832未工作时其CS输入端应为高电平,此时芯片禁用,CLK 和DO/DI 的电平可任意。当要进行A/D转换时,须先将CS使能端置于低电平并且保持低电平直到转换完全结束。此时芯片开始转换工作,同时由处理器向芯片时钟(CLK)输入端输入时钟脉冲,DO/DI端则使用DI端输入通道功能选择的数据信号。在第一个时钟脉冲的下沉之前DI端必须是高电平,表示启始信号。在第二、三个脉冲下沉之前DI端应输入两位数据用于选择通道功能。 通道地址通道 工作方式说明 SGL/DIF ODD/SIGN 0 1

0 0 + - 差分方式 0 1 - + 1 0 + 单端输入方式 1 1 + 表1:通道地址设置表 如表1所示,当此两位数据为“1”、“0”时,只对CH0 进行单通道转换。当2位数据为“1”、“1”时,只对CH1进行单通道转换。当两位数据为“0”、“0”时,将CH0作为正输入端IN+,CH1作为负输入端IN-进行输入。当两位数据为“0”、“1”时,将CH0作为负输入端IN-,CH1 作为正输入端IN+进行输入。到第三个脉冲的下降之后DI端的输入电平就失去输入作用,此后DO/DI端则开始利用数据输出DO进行转换数据的读取。从第4个脉冲下降沿开始由DO端输出转换数据最高位Data7,随后每一个脉冲的下降沿DO端输出下一位数据。直到第11个脉冲时发出最低位数据Data0,一个字节的数据输出完成。也正是从此位开始输出下一个相反字节的数据,即从第11个字节的下降沿输出Data0。随后输出8位数据,到第19 个脉冲时数据输出完成,也标志着一次A/D转换的结束。最后将CS置高电平禁用芯片,直接将转换后的数据进行处理就可以了。时序说明请参照图4。 作为单通道模拟信号输入时ADC0832的输入电压是0—5V且8位分辨率时的电压精度为19.53mV,即(5/256)V。如果作为由IN+与IN-输入的输入时,可是将电压值设定在某一个较大范围之内,从而提高转换的宽度。但值得注意的

相关文档
相关文档 最新文档