单片机原理及接口技术(C51编程)11课件.pptx
- 【下载声明】
1. 本站全部试题类文档,若标题没写含答案,则无答案;标题注明含答案的文档,主观题也可能无答案。请谨慎下单,一旦售出,不予退换。
2. 本站全部PPT文档均不含视频和音频,PPT中出现的音频或视频标识(或文字)仅表示流程,实际无音频或视频文件。请谨慎下单,一旦售出,不予退换。
3. 本页资料《单片机原理及接口技术(C51编程)11课件.pptx》由用户(三亚风情)主动上传,其收益全归该用户。163文库仅提供信息存储空间,仅对该用户上传内容的表现方式做保护处理,对上传内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知163文库(点击联系客服),我们立即给予删除!
4. 请根据预览情况,自愿下载本文。本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
5. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007及以上版本和PDF阅读器,压缩文件请下载最新的WinRAR软件解压。
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 单片机 原理 接口 技术 C51 编程 11 课件
- 资源描述:
-
1、第11章AT89S51单片机与DAC、ADC的接口单片机原理及接口技术(C51编程)(第2版)目 录CONTENTS11.1 单片机扩展DAC概述11.2 单片机扩展并行8位DAC0832的设计 11.3 AT89S51扩展10位串行DAC-TLC561511.4 单片机并行扩展8位A/D转换器ADC0809 11.5 单片机扩展串行8位A/D转换器TLC549 11.6 AT89S51扩展12位串行ADC-TLC2543的设计11.1 单片机扩展DAC概述 单片机只能输出数字量,但是对于某些控制场合,常常需要输出模拟量,例如直流电动机的转速控制。下面介绍单片机如何扩展DAC。目前集成化的DA
2、C芯片种类繁多,设计者只需要合理选用芯片,了解它们的性能、引脚外特性以及与单片机的接口设计方法即可。由于现在部分单片机的芯片中集成了DAC,位数一般在10位左右,且转换速度也很快,所以单片的DAC开始向高的位数和高转换速度上转变。而低端的并行8位DAC,开始面临被淘汰的危险,但是在实验室或涉及某些工业控制方面的应用,低端8位DAC以其优异的性价比还是具有较大的应用空间。11.1 单片机扩展DAC概述1D/A转换器简介购买和使用D/A转换器时,要注意有关D/A转换器选择的几个问题。(1)D/A转换器的输出形式D/A转换器有两种输出形式:电压输出和电流输出。电流输出的D/A转换器在输出端加一个运算
3、放大器构成的I-V转换电路,即可转换为电压输出。11.1 单片机扩展DAC概述1D/A转换器简介(2)D/A转换器与单片机的接口形式单片机与D/A转换器的连接,早期多采用8位的并行传输的接口,现在除了并行接口外,带有串行口的D/A转换器品种也不断增多,目前较为流行多采用SPI串行接口。在选择单片D/A转换器时,要根据系统结构考虑单片机与D/A转换器的接口形式。11.1 单片机扩展DAC概述2主要技术指标D/A转换器的指标很多,设计者最关心的几个指标如下。(1)分辨率分辨率指单片机输入给D/A转换器的单位数字量的变化,所引起的模拟量输出的变化,通常定义为输出满刻度值与2n之比(n为D/A转换器的
4、二进制位数),习惯上用输入数字量的位数表示。显然,二进制位数越多,分辨率越高,即D/A转换器输出对输入数字量变化的敏感程度越高。11.1 单片机扩展DAC概述2主要技术指标例如,8位的D/A转换器,若满量程输出为10V,根据分辨率定义,则分辨率为10V/2n,分辨率为10V/256=39.1mV,即输入的二进制数最低位数字量的变化可引起输出的模拟电压变化39.1mV,该值占满量程的0.391%,常用符号1LSB表示。同理:10位D/A转换1 LSB=9.77mV=0.1%满量程12位D/A转换1 LSB=2.44mV=0.024%满量程16位D/A转换1 LSB=0.076mV=0.00076
5、%满量程11.1 单片机扩展DAC概述2主要技术指标使用时,应根据对D/A转换器分辨率的需要来选定D/A转换器的位数。(2)建立时间建立时间是描述D/A转换器转换速度的参数,表明转换时间长短。其值为从输入数字量到输出达到终值误差(1/2)LSB(最低有效位)时所需的时间。电流输出的转换时间较短,而电压输出的转换器,由于要加上完成I-V转换的时间,因此建立时间要长一些。快速D/A转换器的建立时间可控制在1s以下。11.1 单片机扩展DAC概述2主要技术指标(3)转换精度理想情况下,转换精度与分辨率基本一致,位数越多精度越高。但由于电源电压、基准电压、电阻、制造工艺等各种因素存在误差。严格地讲,转
6、换精度与分辨率并不完全一致。两个相同位数的不同的DAC,只要位数相同,分辨率则相同,但转换精度会有所不同。例如,某种型号的8位DAC精度为 0.19%,而另一种型号的8位DAC精度为 0.05%。目 录CONTENTS11.1 单片机扩展DAC概述11.2 单片机扩展并行8位DAC0832的设计 11.3 AT89S51扩展10位串行DAC-TLC561511.4 单片机并行扩展8位A/D转换器ADC0809 11.5 单片机扩展串行8位A/D转换器TLC549 11.6 AT89S51扩展12位串行ADC-TLC2543的设计11.2.1 8位并行DAC 0832简介1DAC0832的特性
7、美国国家半导体公司的DAC0832芯片具有两级输入数据寄存器的8位DAC,能直接与AT89S51连接,特性如下。分辨率为8位。01OPTION02OPTION03OPTION电流输出,建立时间为1s。可双缓冲输入、单缓冲输入或直通输入。单一电源供电(+5V+15V),低功耗,20mW。04OPTION11.2.1 8位并行DAC 0832简介2DAC0832的引脚及逻辑结构引脚见图11-1。图11-1 DAC0832引脚11.2.1 8位并行DAC 0832简介2DAC0832的引脚及逻辑结构内部结构见图11-2。图11-2 DAC0832逻辑结构11.2.1 8位并行DAC 0832简介2D
8、AC0832的引脚及逻辑结构 由图11-2,片内共两级寄存器,第一级为“8位输入寄存器”,用于存放单片机送来的数字量,使得该数字量得到缓冲和锁存,由LE1*(即M1=1时)加以控制;“8位DAC寄存器”是第二级8位输入寄存器,用于存放待转换的数字量,由LE2*控制(即M3=1时),这两级8位寄存器,构成两级输入数字量缓存。“8位D/A转换电路”受“8位DAC寄存器”输出数字量控制,输出和数字量成正比的模拟电流。如要得到模拟输出电压,需外接I-V转换电路。11.2.1 8位并行DAC 0832简介2DAC0832的引脚及逻辑结构 各引脚的功能如下。DI7DI0:8位数字量输入端,接收发来的数字量
9、。01OPTION02OPTION03OPTIONILE、CS*、WR1*:当ILE=1,CS*=0,WR1*=0时,即M1=1,第一级8位输入寄存器被选中。待转换的数字信号被锁存到第一级8位输入寄存器中。XFER*、WR2*:当 XFER*=0,WR2*=0时,第一级8位输入寄存器中待转换数字进入第二级8位DAC寄存器中。11.2.1 8位并行DAC 0832简介2DAC0832的引脚及逻辑结构 各引脚的功能如下。04OPTIONIOUT1:D/A转换电流输出1端,输入数字量全为“1”时,IOUT1最大,输入数字量全为“0”时,IOUT1最小。IOUT2:D/A转换电流输出2端,IOUT2+
10、IOUT1=常数。Rfb:I-V转换时的外部反馈信号输入端,内部已有反馈电阻Rfb,根据需要也可外接反馈电阻。05OPTION06OPTIONVREF:参考电压输入端。VCC:电源输入端,在+5V+15V范围内。07OPTION08OPTION11.2.1 8位并行DAC 0832简介2DAC0832的引脚及逻辑结构09OPTIONDGND:数字地。AGND:模拟地,最好与基准电压共地。10OPTION11.2.2 案例设计:单片机扩展DAC0832的程控电压源 单片机控制DAC0832可实现数字调压,单片机只要送给DAC0832不同数字量,即可实现不同模拟电压输出。DAC0832输出可用单缓
11、冲方式或双缓冲方式。单缓冲方式是DAC0832片内的两级数据寄存器的有一个处于直通方式,另一处于受AT89S51控制的锁存方式。实际应用中,如只有一路模拟量输出,或虽是多路模拟量输出,但并不要求多路输出同步情况下,就可采用单缓冲方式。11.2.2 案例设计:单片机扩展DAC0832的程控电压源 单片机控制DAC0832实现数字调压的单缓冲方式接口电路见图11-3。由于 XFER*=0、WR2*=0,所以第二级“8位DAC寄存器”处于直通。第一级“8位输入寄存器”为单片机控制的锁存方式,3个锁存控制端的ILE直接接到有效的高电平,另两个控制端CS*、WR1*分别由单片机P2.0和P2.1控制DA
12、C 0832输出电压Vo与输入数字量B关系为:11.2.2 案例设计:单片机扩展DAC0832的程控电压源 由上式见,输出模拟电压Vo与输入数字量B以及基准电压VREF成正比,且B为0时,Vo也为0,B为255时,Vo为最大的绝对值输出,且不会大于VREF。下面介绍单缓冲方式下单片机扩展DAC0832程控电压源的设计。11.2.2 案例设计:单片机扩展DAC0832的程控电压源 图11-3 单缓冲方式的单片机与DAC0832的接口原理电路11.2.2 案例设计:单片机扩展DAC0832的程控电压源【例11-1】单片机与DAC0832单缓冲方式接口见图11-3,单片机P2.0脚控制DAC0832
13、的CS*脚,P2.1控制WR1*端。当P2.0脚为低时,如果同时WR*有效,单片机就会把数字量通过P1口送入DAC0832 的DI7DI0端,并转换输出。用虚拟直流电压表测量经运放LM358N的I/V转换后的电压值,并观察输出电压变化。11.2.2 案例设计:单片机扩展DAC0832的程控电压源 仿真运行后,可看到虚拟直流电压表测量输出电压在2.5V0V(参考电压为2.5V)范围内不断线性变化。如参考电压为5V,则输出电压在5V0V范围内变化。如果虚拟直流电压表太小,看不清楚电压显示值,可用鼠标滚轮放大直流电压表。单片机送给DAC0832不同的数字量,就可得到不同的输出电平,从而使单片机控制D
14、AC0832成为一个程控电压源。11.2.2 案例设计:单片机扩展DAC0832的程控电压源 参考程序如下:include regal.h#define uchar unsigned char#define uint unsigned int#define out p1sbit dac csp2 osbit dac wr-p2 1void main(void)/主函数uchar temp,1-25511.2.2 案例设计:单片机扩展DAC0832的程控电压源 while(1)out-temp;DAC CS=0;/单片机控制Cs脚为低 DAC Wr=0;/单片机控制wR1脚为低,向DAC写入 /
15、转换的数字量 DAC CS=I;DAC Wr=l;temp+;while(-1);i先减1,然后再使用i的值 while(-1);while(-1);11.2.3 案例设计2:波形发生器的制作 单片机如把不同波形数据发送给DAC0832,就可产生各种不同波形信号。下面介绍单片机控制DAC0832产生各种函数波形案例、【例11-2】单片机控制DAC0832产生正弦波、方波、三角波、梯形波和三角波。Proteus 的原理电路见图11-4。单片机P1.0 P1.4接有5个按键,当按键按下时,分别对应产生正弦波、方波、三角波、梯形波和三角波。11.2.3 案例设计2:波形发生器的制作 图11-4 控制
16、DAC0832产生各种波形的原理电路 11.2.3 案例设计2:波形发生器的制作 单片机控制DAC0832产生各种波形,实质就是单片机把波形的采样点数据送至DAC0832,经D/A转换后输出模拟信号。改变送出的函数波形采样点后的延时时间,就可改变函数波形的频率。产生各种波形原理如下。4321678511.2.3 案例设计2:波形发生器的制作 正弦波产生原理:单片机把正弦波的256个采样点的数据送给DAC0832。正弦波采样数据可用软件编程或MATLAB等工具计算。方波产生原理:单片机采用定时器定时中断,时间常数决定方波高、低电平持续时间。三角波产生原理:单片机把初始数字量0送DAC0832后,
17、不断增1,增至0 xff后,然后再把送给DAC0832的数字量不断减1,减至0后,再重复上述过程。11.2.3 案例设计2:波形发生器的制作 锯齿波产生原理:单片机把初始数据0送DAC0832后,数据不断增1,增至0 xff后,再增1则溢出清“0”,模拟输出又为0,然后再重复上述过程,如此循环,则输出锯齿波。正弦波产生原理:单片机把正弦波的256个采样点的数据送给DAC0832。正弦波采样数据可用软件编程或MATLAB等工具计算。11.2.3 案例设计2:波形发生器的制作 参考程序如下:#includesbit wr=P36;sbit rd=P32;sbit key0=P10;/定义P1.0脚
18、的按键为正弦波键key0sbit key1=P11;/定义P1.1脚的按键为方波键key1sbit key2=P12;/定义P1.2脚的按键为三角波键key2sbit key3=P13;/定义P1.3脚的按键为梯形波键key3sbit key4=P14;/定义P1.3脚的按键为锯齿波键key4unsigned char flag;/flag为1、2、3、4、5时对应/正弦波、方波、三角波、梯形波、锯齿波unsigned char const code /以下为正弦波采样点数组256个数据11.2.3 案例设计2:波形发生器的制作 SIN_code256=0 x80,0 x83,0 x86,0
19、x89,0 x8c,0 x8f,0 x92,0 x95,0 x98,0 x9c,0 x9f,0 xa2,0 xa5,0 xa8,0 xab,0 xae,0 xb0,0 xb3,0 xb6,0 xb9,0 xbc,0 xbf,0 xc1,0 xc4,0 xc7,0 xc9,0 xcc,0 xce,0 xd1,0 xd3,0 xd5,0 xd8,0 xda,0 xdc,0 xde,0 xe0,0 xe2,0 xe4,0 xe6,0 xe8,0 xea,0 xec,0 xed,0 xef,0 xf0,0 xf2,0 xf3,0 xf4,0 xf6,0 xf7,0 xf8,0 xf9,0 xfa,0
20、xfb,0 xfc,0 xfc,0 xfd,0 xfe,0 xfe,0 xff,0 xff,0 xff,0 xff,0 xff,0 xff,0 xff,0 xff,0 xff,0 xff,0 xff,0 xfe,0 xfe,0 xfd,0 xfc,0 xfc,0 xfb,0 xfa,0 xf9,0 xf8,0 xf7,0 xf6,0 xf5,0 xf3,0 xf2,0 xf0,0 xef,0 xed,0 xec,0 xea,0 xe8,0 xe6,0 xe4,0 xe3,0 xe1,0 xde,0 xdc,0 xda,0 xd8,0 xd6,0 xd3,0 xd1,0 xce,0 xcc,0
21、xc9,0 xc7,0 xc4,0 xc1,0 xbf,0 xbc,0 xb9,0 xb6,0 xb4,0 xb1,0 xae,0 xab,0 xa8,0 xa5,0 xa2,0 x9f,0 x9c,0 x99,0 x96,0 x92,0 x8f,0 x8c,0 x89,0 x86,0 x83,0 x80,0 x7d,0 x79,0 x76,0 x73,0 x70,0 x6d,0 x6a,0 x67,0 x64,0 x61,0 x5e,0 x5b,0 x58,0 x55,0 x52,0 x4f,0 x4c,0 x49,0 x46,0 x43,0 x41,0 x3e,0 x3b,0 x39,0
22、x36,0 x33,0 x31,0 x2e,0 x2c,0 x2a,0 x27,0 x25,0 x23,0 x21,0 x1f,0 x1d,0 x1b,0 x19,0 x17,0 x15,0 x14,0 x12,0 x10,0 xf,0 xd,0 xc,0 xb,0 x9,0 x8,0 x7,0 x6,0 x5,0 x4,0 x3,0 x3,0 x2,0 x1,0 x1,0 x0,0 x0,0 x0,0 x0,0 x0,0 x0,0 x0,0 x0,0 x0,0 x0,0 x0,0 x1,0 x1,0 x2,0 x3,0 x3,0 x4,0 x5,0 x6,0 x7,0 x8,0 x9,0 x
23、a,0 xc,0 xd,0 xe,0 x10,0 x12,0 x13,0 x15,0 x17,0 x18,0 x1a,0 x1c,0 x1e,0 x20,0 x23,0 x25,0 x27,0 x29,0 x2c,0 x2e,0 x30,0 x33,0 x35,0 x38,0 x3b,0 x3d,0 x40,0 x43,0 x46,0 x48,0 x4b,0 x4e,0 x51,0 x54,0 x57,0 x5a,0 x5d,0 x60,0 x63,0 x66,0 x69,0 x6c,0 x6f,0 x73,0 x76,0 x79,0 x7c11.2.3 案例设计2:波形发生器的制作 unsi
24、gned char keyscan()/键盘扫描函数unsigned char keyscan_num,temp;P1=0 xff;/P1口输入temp=P1;/从P1口读入键值,存入temp中/判是否有键按下,即键值不为0 xff,则有键按下 if(temp&0 xff)if(key0=0)/产生正弦波的按键按下,P1.0=0 keyscan_num=1;/得到的键值为1,表示产生正弦波 else if(key1=0)/产生方波的按键按下,P1.1=0 keyscan_num=2;/得到键值为2,表示产生方波 11.2.3 案例设计2:波形发生器的制作 else if(key2=0)/产生三
25、角波的按键按下,P1.2=0keyscan_num=3;/得到的键值为3,表示产生三角波else if(key3=0)/产生梯形波的按键按下,P1.3=0keyscan_num=4;/得到的键值为4,表示产生梯形波else if(key4=0)/产生锯齿波的按键按下,P1.3=0keyscan_num=5;/得到的键值为5,表示产生锯齿波else keyscan_num=0;/没有按键按下,键值为0 return keyscan_num;/得到的键值返回11.2.3 案例设计2:波形发生器的制作 void init DAo8320/AC0832初始化函数rd=0;wr=0;Void SIN()
展开阅读全文