最新单片机原理与应用92精品课件

上传人:cn****1 文档编号:570557001 上传时间:2024-08-05 格式:PPT 页数:127 大小:2.04MB
返回 下载 相关 举报
最新单片机原理与应用92精品课件_第1页
第1页 / 共127页
最新单片机原理与应用92精品课件_第2页
第2页 / 共127页
最新单片机原理与应用92精品课件_第3页
第3页 / 共127页
最新单片机原理与应用92精品课件_第4页
第4页 / 共127页
最新单片机原理与应用92精品课件_第5页
第5页 / 共127页
点击查看更多>>
资源描述

《最新单片机原理与应用92精品课件》由会员分享,可在线阅读,更多相关《最新单片机原理与应用92精品课件(127页珍藏版)》请在金锄头文库上搜索。

1、单片机原理与应用单片机原理与应用-9 (2)图图9 91 1 系统前向、后向人机通道配置框图系统前向、后向人机通道配置框图8/5/20248/5/20242 21) 独立式非编码键盘接口及处理程序独立式按键是指各按键相互独立地接通一条输入数据线,如图9-4所示。这是最简单的键盘结构,该电路为查询方式电路。当任何一个键按下时,与之相连的输入数据线即被清0(低电平),而平时该线为1(高电平)。要判别是否有键按下,用单片机的位处理指令十分方便。这种键盘结构的优点是电路简单;缺点是当键数较多时,要占用较多的线。图图9-4 9-4 独立连接式非编码键盘独立连接式非编码键盘8/5/20248/5/2024

2、9 9图9-4所示查询方式键盘的处理程序比较简单。程序中没有使用散转指令,并且省略了软件去抖动措施,只包括键查询、键功能程序转移。P0FP7F为功能程序入口地址标号,其地址间隔应能容纳JMP指令字节;PROM0PROM7分别为每个按键的功能程序。8/5/20248/5/20241010程序清单(设为P1口):START:MOVA,#0FFH;输入时先置P1口为全1MOVP1,AMOVA,P1;键状态输入PL1:JNBACC.0,P0F;0号键按下转P0F标号地址JNBACC.1,P1F;1号键按下转P1F标号地址JNBACC.2,P2F;2号键按下转P2F标号地址JNBACC.3,P3F;3号

3、键按下转P3F标号地址JNBACC.4,P4F;4号键按下转P4F标号地址JNBACC.5,P5F;5号键按下转P5F标号地址JNBACC.6,P6F;6号键按下转P6F标号地址JNBACC.7,P7F;7号键按下转P7F标号地址LJMPSTART;无键按下返回8/5/20248/5/20241111P0F: LJMPPROM0 P1F: LJMPPROM1 ;入口地址表P7F: LJMPPROM7PROM0:;0号键功能程序LJMP START;0号键执行完返回PROM1:LJMP START PROM7:LJMP START由程序可以看出,各按键由软件设置了优先级,优先级顺序依次为07。8

4、/5/20248/5/20241212【例9-1】 设计一个有4个独立式按键的键盘接口,并编写键扫描程序。解: 电路原理图如图9-5所示。图图9-5 9-5 键盘接口电路原理图键盘接口电路原理图8/5/20248/5/20241313KEY: MOVP1,#0FFH;P1口为输入,各位应先置位为高电平MOVA,P1;读取按键状态CPLA;取正逻辑,高电平表示有键按下ANLA,#0FHJZKEY;A=0时无键按下,重新扫描键盘LCALL D10ms;有键按下延时去抖动MOVA,P1;读取按键状态CPLA;取正逻辑,高电平表示有键按下ANLA,#0FH;再判别是否有键按下JZKEY;A=0时无键按

5、下重新扫描键盘MOVB,A;有键按下,键值送B暂存MOVA,P1CPLAANLANLA A,#0FH#0FH;判别按键释放;判别按键释放KEY1KEY1: JNZ JNZKEY1KEY1;按键未释放,等待;按键未释放,等待LCALLLCALL D10msD10ms;释放,延时去抖动;释放,延时去抖动=MOVMOVA A,B B;取键值送;取键值送A A8/5/20248/5/20241414 ANL A,#0FH;判别按键释放KEY1:JNZ KEY1;按键未释放,等待 LCALLD10ms;释放,延时去抖动 MOV A,B;取键值送A JBACC.0,PKEY1;K1按下转PKEY1 JBA

6、CC.1,PKEY2;K2按下转PKEY2 JBACC.2,PKEY3;K3按下转PKEY3 JBACC.3,PKEY4;K4按下转PKEY4EKEY:RET8/5/20248/5/20241515PKEY1:LCALLK1;K1命令处理程序 RETPKEY2:LCALLK2;K2命令处理程序 RETPKEY3:LCALLK3;K3命令处理程序 RETPKEY4:LCALLK4;K4命令处理程序 RETD10ms:MOVR7,#10H;10 ms延时子程序DS1: MOVR6,#0FFHDS2: DJNZ R6,DS2 DJNZ R7,DS1 RET8/5/20248/5/202416162)

7、 行列式键盘接口及工作原理为了减少键盘与单片机接口时所占用I/O线的数目,在键数较多时,通常都将键盘排列成行列矩阵形式,如图9-6所示。以图9-6所示的44键盘为例,说明行扫描法识别哪一个按键被按下的工作原理。8/5/20248/5/20241717图图9-6 449-6 44矩阵键盘接口图矩阵键盘接口图8/5/20248/5/20241818首先判别键盘中有无键按下,由单片机口向键盘送(输出)全扫描字,然后读入(输入)列线状态来判断。方法是: 向行线(图中水平线)输出全扫描字00H,把全部行线置为低电平,然后将列线的电平状态读入累加器A中。如果有按键按下,总会有一根列线电平被拉至低电平,从而

8、使列输入不全为1。判断键盘中哪一个键被按下是通过将行线逐行置低电平后,检查列输入状态实现的。方法是: 依次给行线送低电平,然后查所有列线状态,称行扫描。如果全为1,则所按下的键不在此行;如果不全为1,则所按下的键必在此行,而且是在与零电平列线相交的交点上的那个键。8/5/20248/5/20241919(1) 行扫描法识别键号(值)的原理行扫描法识别键号的工作原理如下:将第0行变为低电平,其余行为高电平时,输出编码为1110。然后读取列的电平,判别第0行是否有键按下。在第0行上若有某一按键按下,则相应的列被拉到低电平,则表示第0行和此列相交的位置上有按键按下。若没有任一条列线为低电平,则说明0

9、行上无键按下。将第1行变为低电平,其余行为高电平时,输出编码为1101。然后通过输入口读取各列的电平。检测其中是否有变为低电平的列线。若有键按下,则进而判别哪一列有键按下,确定按键位置。将第2行变为低电平,其余行为高电平时,输出编码为1011。判别是否有哪一列键按下的方法同上。将第3行变为低电平,其余行为高电平时,输出编码为0111。判别是否有哪一列键按下的方法同上。8/5/20248/5/20242020在扫描过程中,当发现某行有键按下,也就是输入的列线中有一位为0时,便可判别闭合按键所在列的位置,根据行线位置和列线位置就能判断按键在矩阵中的位置,知道是哪一个键按下。8/5/20248/5/

10、20242121(2) 键盘扫描工作过程按键扫描的工作过程如下: 判断键盘中是否有键按下; 进行行扫描,判断是哪一个键按下,若有键按下,则调用延时子程序去抖动; 读取按键的位置码; 将按键的位置码转换为键值(键的顺序号)0、1、2、F。图9-7所示为44键盘扫描流程图。8/5/20248/5/20242222图图9-7 449-7 44键盘扫描流程图键盘扫描流程图8/5/20248/5/20242323键的位置码及键值的译码过程上述行扫描过程结束后得到的行号存放在R0中,列号存放在R2中。 键值(号)的获得(译码)通常采用计数译码法。这种方法根据矩阵键盘的结构特点,每个按键的值=行号每行的按键

11、个数+列号,即键号(值)=行首键号+列号第0行的键值为: 0行4+列号(03)为0、1、2、3;第1行的键值为: 1行4+列号(03)为4、5、6、7;第2行的键值为: 2行4+列号(03)为8、9、A、B;第3行的键值为: 3行4+列号(03)为C、D、E、F。44键盘行首键号为0、4、8、C,列号为0,1,2,3。所以键值译码子程序为DECODE,该子程序出口: 键值在A中。8/5/20248/5/20242424(3) 键盘扫描子程序(参见图9-7)出口: 键值(键号)在A中KEY:MOV P1, #0F0H;令所有行为低电平MOV R7,#0FFH;设置计数常数KEY1: DJNZ R

12、7,KEY1 ;延时 MOV A,P1;读取P1口的列值 ANL A,#0F0H;判别有键值按下吗? CPL A;求反后,有高电平就有键按下 JZ EKEY;无键按下时退出 LCALL DEL20 ms;延时20 ms去抖动SKEY: MOV A,#00;下面进行行扫描,1行1行扫 MOV R0,A;R0作为行计数器,开始为0 MOV R1,A;R1作为列计数器,开始为0 MOV R3 #0FEH;R3为行扫描字暂存,低4位为行扫描字SKEY2:MOV A,R3 MOV P1,A;输出行扫描字,高4位全1 NOP NOP NOP;3个NOP操作使P1口输出稳定8/5/20248/5/20242

13、525MOVA,P1;读列值MOVR1, A;暂存列值ANLA,#0F0H;取列值CPLA;高电平则有键闭合S123: JNZSKEY3;有键按下转SKEY3,无键按下时进;行一行扫描INCR0;行计数器加1SETBC;准备将行扫描左移1位,形成下一行;扫描字,C=1保证输出行扫描字中高4;位全为1,为列输入作准备,低4位中;只有1位为0MOVA,R3;R3带进位C左移1位RLCAMOVR3,A;形成下一行扫描字R3MOVA,R0CJNEA,#04H,SKEY1;最后一行扫(4次)完了吗?EKEY:RET8/5/20248/5/20242626;列号译码SKEY3:MOV A,R1JNBACC

14、.4,SKEY5JNBACC.5,SKEY6JNBACC.6,SKEY7JNBACC.7,SKEY8AJMPEKEYSKEY5:MOV A,#00HMOVR2, A;存0列号AJMPDKEYSKEY6:MOV A,#01HMOVR2,A;存1列号AJMPDKEYSKEY7:MOV A,#02HMOVR2,A;存2列号AJMPDKEYSKEY8:MOV A,#03HMOVR2,A;存3列号AJMPDKEY8/5/20248/5/20242727;键位置译码DKEY:MOVA,R0;取行号ACALL DECODEAJMPEKEY;键值(键号)译码DECODE:MOVA,R0 ;取行号送AMOVB,

15、#04H;每一行按键个数MULAB;行号按键数ADDA,R2;行号按键数+列号=键值(号),;在A中RET8/5/20248/5/20242828【例【例9292】设计一个】设计一个2222行列式键盘,并编写键盘扫描子程序。行列式键盘,并编写键盘扫描子程序。解: 原理如图9-8所示。 判断是否有键按下:将列线P1.0、P1.1送全0,查P0.0、P0.1是否为0。 判断哪一个键按下:逐列送0电平信号,再逐行扫描是否为0。 键号=行首键号+列号图图9-8 9-8 键盘扫描原理图键盘扫描原理图8/5/20248/5/20242929KEY: LCALL KS;调用判断有无键按下子程序JZKEY;无

16、键按下,重新扫描键盘LCALL T10 ms;有键按下,延时去抖动LCALL KSJZKEYMOVR2,#0FEH;首列扫描字送R2MOVR4,#00H;首列号#00H送入R4MOVP0,#0FFHLK1:MOVP1,R2;列扫描字送P1口MOVA,P0JBACC.0,ONE;0行无键按下,转1行MOVA,#00H;0行有键按下,该行首号#00H送ALJMPKP;转求键号8/5/20248/5/20243030ONE: JBACC.1,NEXT ;1行无键按下,转下列MOVA,#02H;1行有键按下,该行首号#02H送AKP:ADDA,R4;求键号,键号=行首键号+列号PUSHACC;键号进栈

17、保护LK:LCALL KS;等待键释放JNZLK;未释放,等待POPACC;键释放,键号送ARET;键扫描结束,出口状态: (A)=键号NEXT:INCR4;列号加1MOVA,R2;判断两列扫描完了吗JNBACC.1,KND;两列扫描完,返回RLA;未扫描完,扫描字左移一位MOVR2,A;扫描字入R2AJMPLK1;转扫下一列KND: AJMPKEY8/5/20248/5/20243131KS:MOVP1,#0FCH;全扫描字送P1口MOVP0,#0FFHMOVA,P0;读入P0口行状态CPLA;取正逻辑,高电平表示有键按下ANLA,#03H;保留P0口低2位(屏蔽高6位)RET;出口状态:

18、(A)0时有键按下T10 ms:MOV R7,#10H;延迟10 ms子程序TS1: MOVR6,#0FFHTS2: DJNZR6,TS2DJNZR7,TS1RET8/5/20248/5/202432322. 中断扫描方式为了提高CPU的效率,可以采用中断扫描工作方式,即只有在键盘有键按下时才产生中断申请;CPU响应中断,进入中断服务程序进行键盘扫描,并做相应处理。中断扫描工作方式的键盘接口如图9-9所示。P1.4P1.7作键输出线,P1.0P1.3作扫描输入线。扫描时,使P1.4P1.7位清0。当有键按下时,INT1端为低电平,向CPU发出中断申请。若CPU开放外部中断,则响应中断请求,进入

19、中断服务程序。图图9-9 9-9 中断方式键盘接口中断方式键盘接口8/5/20248/5/202433333. 键操作及功能处理若图9-6中为48的32键,设0、1、2、E、F共16个键为数字键;其他16个键为功能键,键值为1631,即10H1FH,各功能键入口程序地址标号分别为AAA、BBB、PPP。当对键盘进行扫描并求得键值后,还必须做进一步处理。方法是首先判别其是功能键还是数字键。若为数字键,则送显示缓冲区进行显示;若为功能键,则由散转指令“JMP A+DPTR”转到相应的功能键处理程序,完成相应的操作。完成上述任务的子程序流程图如图9-10所示。图图9-10 9-10 求功能键地址转换

20、程序流求功能键地址转换程序流程图程图8/5/20248/5/20243434功能键地址转移程序如下:BUFFEQU30HKEYADR:MOVA,BUFF;键值ACJNEA,#0FH,KYARD1AJMPDIGPRO;等于F,转数字键处理KYARD1:JCDIGPRO;小于F,转数字键处理KEYTBL:MOVDPTR,#JMPTBL;送功能键地址表指针CLRC;清进位位SUBBA,#10H;功能键值(10H1FH)减16RLA;(A)2,使(A)为偶数: 0、2、4、JMPA+DPTR;转相应的功能键处理程序8/5/20248/5/20243535JMPTBL:AJMPAAA;AJMPBBB;A

21、JMPCCC;AJMPDDD;AJMPEEE;AJMPFFF;AJMPGGG;AJMPHHH;AJMPIII;AJMPJJJ;AJMPKKK;AJMPLLL;AJMPMMM;AJMPNNN;AJMPOOO;AJMPPPP;均为2字节,转到16个功能键的相应入口地址。(A)=0、2、4、6散转到AAA、BBB、CCC、DDD、PPP8/5/20248/5/202436369.1.2 LED显示器接口及显示程序 单片机应用系统中使用的显示器主要有:发光二极管显示器,简称LED(Light Emitting Diode);液晶显示器,简称LCD(Liquid Crystal Display);CRT

22、显示器8/5/20248/5/202437371. LED显示器结构原理单片机中通常使用7段LED有共阴极和共阳极两种,如图9-11所示。发光二极管的阳极连在一起的(公共端K0)称为共阳极显示器阴极连在一起的(公共端K0)称为共阴极显示器。一位显示器由8个发光二极管组成,其中,7个发光二极管构成字型“8”的各个笔划(段)ag,另一个小数点为dp发光二极管。当在某段发光二极管上施加一定的正向电压时,该段笔划即亮;不加电压则暗。为了保护各段LED不被损坏,须外加限流电阻。8/5/20248/5/20243838以共阴极LED为例,如图9-11(a)所示,各LED公共阴极K0接地。若向各控制端a、b

23、、g、dp顺次送入11100001信号,则该显示器显示“7.”字型。共阴极与共阳极7段LED显示数字0F、“-”符号及“灭”的编码(a段为最低位,dp点为最高位)如表9-1所列。图图9-11 LED 79-11 LED 7段显示器段显示器8/5/20248/5/20243939表9-1 共阴极和共阳极7段LED显示字型编码表显示字符012345678共阴极段选码3F(BF)06(36)5B(DB)4F(CF)66(F6)6D(FD)7D(FD)07(87)7F(FF)共阳极段选码C0(40)F9(79)A4(24)B0(30)99(19)92(12)82(02)F8(78)80(00)显示字符

24、9ABCDEF-熄灭共阴极段选码6F(EF)77(F7)7C(FC)39(B9)5E(DE)79(F9)71(F1)40(C0)00(80)共阳极段选码90(10)88(08)82(03)C6(46)A1(21)86(06)8E(0E)BF(3F)FF(7F)8/5/20248/5/202440402. LED显示器接口及显示方式LED显示器有静态显示和动态显示两种方式。8/5/20248/5/202441411) LED静态显示方式静态显示就是当显示器显示某个字符时,相应的段(发光二极管)恒定地导通或截止,直到显示另一个字符为止。LED显示器工作于静态显示方式时,各位的共阴极(公共端K0)接

25、地;若为共阳极(公共端K0),则接+5v电源。每位的段选线(adp)分别与一个8位锁存器的输出口相连,显示器中的各位相互独立,而且各位的显示字符一经确定,相应锁存的输出将维持不变。因此,静态显示器的亮度较高。这种显示方式编程容易,管理也较简单,但占用口线资源较多。在显示位数较多的情况下,一般都采用动态显示方式。8/5/20248/5/202442422) LED动态显示方式在多位LED显示时,将所有位的段选线并联在一起,由一个8位口控制。而共阴(或共阳)极公共端分别由相应的线控制,实现各位的分时选通。图9-12所示为6位共阴极LED动态显示接口电路。图9-126位LED动态显示接口电路图913

26、6位动态扫描显示状态图图9-12 69-12 6位位LEDLED动态显示接口电路动态显示接口电路8/5/20248/5/20244343例如,要求显示“E020”时,I/O口1和I/O口2轮流送入段选码、位选码及显示状态如图9-13所示。段选码、位选码每送入一次后延时1 ms,因人眼的视觉暂留时间为 s(100 ms),所以每位显示的间隔不必超过20 ms,并保持延时一段时间,以造成视觉暂留效果,给人看上去每个数码管总在亮。这种方式称为软件扫描显示。图图9-13 69-13 6位动态扫描显示状态位动态扫描显示状态8/5/20248/5/202444443. LED显示器与89C51接口及显示子

27、程序图9-14图中,P0口输出段选码,P1口输出位选码,位选码占用输出口的线数决定于显示器位数,比如6位就要占6条。75452(或7406)是反相驱动器(30 V高电压,OC门),这是因为89C51 P1口正逻辑输出的位控与共阴极LED要求的低电平点亮正好相反,即当P1口位控线输出高电平时,点亮一位LED。7407是同相OC门,作段选码驱动器。逐位轮流点亮各个LED,每一位保持1 ms,在1020 ms之内再一次点亮,重复不止。这样,利用人的视觉暂留,好像6位LED同时点亮一样。扫描显示子程序流程如图9-15所示。8/5/20248/5/20244545图图9-14 69-14 6只只LEDL

28、ED动态显示接口动态显示接口8/5/20248/5/20244646图图9 915 DIS15 DIS显显示子程序流程图示子程序流程图8/5/20248/5/20244747DIS显示子程序清单如下:DIS:MOVR0,#7EH;显示缓冲区末地址R0MOVR2,#01H;位控字,先点亮最低位(右边)MOVA,R2MOVDPTR,#TAB;字型表头地址DPTRLP0:MOVP1,AMOVA,R0;取显示数据MOVC A,A+DPTR;取出字形码MOVP0,A;送出显示ACALL D1MS;调延时子程序DECR0;数据缓冲区地址减1MOVA,R2JBACC.5,LP1;扫描到最左面的显示器了吗?R

29、LA;没有到,左移1位MOVR2,AAJMPLP0LP1:RET8/5/20248/5/20244848TAB: DB3FH,06H,5BH,4FH,66H,6DHDB7DH,07H,7FH,6FH,77H,7CHDB39H,5EH,79H,71H,40H,00HD1MS:MOVR7,#02H;延时1 ms子程序DL:MOVR6,#0FFHDL1: DJNZR6,DL1DJNZR7,DLRET8/5/20248/5/202449499.1.3 9.1.3 串行口控制的键盘显示器接口电路串行口控制的键盘显示器接口电路89C51的串行口RXD和TXD为一个全双工串行通信口,但工作在方式0下可作同步

30、移位寄存器用,其数据由RXD(P3.0)端串行输出或输入;而同步移位时钟由TXD(P3.1)端串行输出,在同步时钟作用下,实现由串行到并行的数据通信。在不需要使用串行通信的场合,利用串行口加外围芯片74HC164就可构成一个或多个并行输入输出口,用于串并转换、并串转换、键盘驱动或显示器LED驱动。8/5/20248/5/2024505074HC164是串行输入、并行输出移位寄存器,并带有清除端。其引脚如图9-16所示。其中:Q0Q7: 并行输出端。A、B: 串行输入端。CLR: 清除端,零电平时,使74LS164输出清0。CLK: 时钟脉冲输入端,在脉冲的上升沿实现移位。当CLK=0、CLR=

31、1时,74HC164保持原来的数据状态。图图9-16 74HC1649-16 74HC164引脚图引脚图8/5/20248/5/202451511. 1. 硬件电路硬件电路如图9-17所示,图中“与”门的作用是避免键盘操作时对显示器的影响,即仅当P1.2=1时,才开放显示器传送。图图9-17 9-17 串行控制键盘扫描和显示器接口电路串行控制键盘扫描和显示器接口电路8/5/20248/5/202452522. 2. 程序清单程序清单KEY: MOVA,#00H;向串行口数据缓冲器送全0MOVSBUF,AKL0:JNBTI,KL0;等待8位数据发送完毕CLRTI;清中断标志KL1:JNBP1.0

32、,PK1;第1行有键按下吗?JBP1.1,KL1;第2行有键按下吗?若无则继续扫描PK1: ACALL D10MS;有键按下,延时10 ms,消除键抖动JNBP1.0,PK2;确定是否键抖动引起JBP1.1,KL1PK2: MOVR7,#08H;不是键抖动引起则逐列扫描MOVR6,#0FEH;选中第0列MOVR3,#00H;记下列号初值8/5/20248/5/20245353PL5:MOVA,R6;使某一列为低MOVSUBF,AKL2:JNBTI,KL2CLRTIJNBP1.0,PK4;是第1行吗?JNBP1.1,PK5;是第2行吗?MOVA,R6;不是本列,则继续下一列RLAMOVR6,AI

33、NCR3;列号加1DJNZR7,PL5;若8列扫描完仍未找到,则退出,等待执行下一次扫描RETPK5:MOVR4,#08H;是第2行,则R4送初值08HAJMP PK3;转键处理PK4:MOVR4,#00H;是第1行,则R4送初值00HPK3:MOVA,#00H;等待键释放MOVSBUF,AKL3:JNBTI,KL3CLRTI8/5/20248/5/20245454KL4:JNBP1.0,KL4JNBP1.1,KL4MOVA,R4;取键号ADDA,R3SUBBA,#0AH;是命令键吗?JNCKL6;转命令键处理程序MOVDPTR,#TABL;字形码表初值送DPTRADDA,#0AH;恢复键号M

34、OVC A,A+DPTR;取字形码数据MOVR0,60H;取显示缓冲区指针MOVR0,A;将字形码入显示缓冲区INCR0;显示缓冲区地址加1CJNER0,#60H,KD;判是否到最高位MOV60H,#58H;保存显示缓冲区地址SJMPKD1KD:MOV60H,R0KD1: ACALL LED;调用送显示子程序RET8/5/20248/5/20245555KL6:MOVB,#03H;修正命令键地址转移表指针MULABMOVDPTR,KTAB;地址转移表首地址送DPTRJMPA+DPTR;根据指针跳转KTAB: LJMPK1;K1、K3为各命令键服务程序首地址LJMPK3TABL: DBC0H,F

35、9H,A4H,B0H;09字形码转换DB99H,92H,82H,F8HDB80H,90HLED:SETBP1.2;开放显示器控制MOVR7,#08H;显示位数R7MOVR0,#58H;先送最低位LED1: MOVA,R0;送显示器数据MOVSBUF,ALED2: JNBTI,LED2CLRTIINCR0;继续下一位DJNZR7,LED1;全部送完CLRP1.2;关闭显示器控制RET8/5/20248/5/202456569.2 前向通道中的转换器及接口技术模数()转换电路的种类有:计数比较型、逐次逼近型、双积分型等等。逐次逼近型转换器,在精度、速度和价格上都适中,是最常用的转换器件。双积分转换

36、器,具有精度高、抗干扰性好、价格低廉等优点,但转换速度低。串行输出的A/D芯片由于节省单片机的I/O口线,越来越多地被采用。如具有SPI三线接口的TLC1549、TLC1543、TLC2543、MAX187等,具有2线I2C接口的MAX127、PCF8591(4路8位A/D,还含1路8位D/A)等。8/5/20248/5/202457579.2.1 单通道串行输出A/D芯片TLC1549及接口1 TLC1549串行A/D转换器芯片1) 主要性能逐次比较型10位A/D转换器。片内自动产生转换时钟脉冲,转换时间21 s;最大总不可调转换误差为1 LSB;单电源供电(+5 V),最大工作电流仅为2.

37、5 mA;转换结果以串行方式输出;工作温度为-55+125 。8/5/20248/5/202458582) 引脚及功能TLC1549M有DIP和FK 2种封装形式。其中,DIP封装的引脚排列如图918所示。引脚功能见表92。图图9 918 TLC154918 TLC1549的引脚图的引脚图8/5/20248/5/20245959表92 TLC1549M引脚功能引脚8/5/20248/5/202460603) TLC1549的工作方式及时序TLC1549有6种工作方式,如表93所列。其中方式1和方式3属同一类型,方式2和方式4属同一类型。一般来说,时钟频率高于280 kHz时,可认为是快速工作方

38、式;低于280 kHz时,可认为是慢速工作方式。因此,如果不考虑I/O CLOCK周期大小,方式5与方式3相同,方式6与方式4相同。8/5/20248/5/20246161表93 TLC1549的工作方式方式8/5/20248/5/20246262工作方式1工作时序图如图919所示。图中从CS下跳到DATA输出数据要有1.3 s的延时;连续进行A/D转换时,在上次转换结果输出的过程中,同时完成本次转换的采样,这样大大提高了A/D转换的速率。如果I/O CLOCK的时钟频率为2.1 MHz,则完成一次A/D转换的时间大约为26 s。如果用连续模拟信号进行采样转换,显然其转换速率是很高的。图图9

39、919 19 方式方式1 1工作时序工作时序8/5/20248/5/202463632 TLC1549与89C51接口电路与程序TLC1549与89C51的SPI接口如图9-20所示。图图9-20 TLC1549M9-20 TLC1549M与与89C5189C51的接口电路的接口电路8/5/20248/5/2024646489C51读取TLC1549中10位数据程序如下:ORG 0050HR1549:CLRP3.0;片选有效,选中TLC1549MOVR0,#2;要读取高两位数据LCALLRDATA;调用读数子程序MOVR1,A;高两位数据送到R1中MOVR0,#8;要读取低8位数据LCALLR

40、DATA;调用读数子程序,读取数据MOVR2,A;低8位数据送入R2中SETBP3.0;片选无效CLRP3.1;时钟低电平RET;程序结束;读数子程序RDATA:CLRP3.1;时钟低电平MOVC,P3.2;数据送进位位CYRLCA;数据送累加器ASETBP3.1;时钟变高电平DJNZR0,RDATA;读数结束了吗RET;子程序结束8/5/20248/5/202465659.2.2 多通道串行输出A/D芯片TLC2543及接口TLC2543的特性如下: 12位A/D转换器(可8位、12位和16位输出); 在工作温度范围内转换时间为10 s; 11通道输入; 3种内建的自检模式; 片内采样/保持

41、电路; 最大1/4 096的线性误差; 内置系统时钟; 转换结束标志位; 单/双极性输出; 输入/输出的顺序可编程(高位或低位在前); 可支持软件关机; 输出数据长度可编程。 TLC1543为11个输入端的10位A/D芯片,价格比TLC2543低。8/5/20248/5/202466661 TLC2543的片内结构及引脚功能TLC2543引脚如图9-21所示,片内结构如图9-22所示。TLC2543片内由通道选择器、数据(地址和命令字)输入寄存器、采样/保持电路、12位的模/数转换器、输出寄存器、并行到串行转换器以及控制逻辑电路7个部分组成。通道选择器根据输入地址寄存器中存放的模拟输入通道地址

42、,选择输入通道,并将输入通道中的信号送到采样/保持电路中,然后在12位模/数转换器中将采样的模拟量进行量化编码,转换成数字量,存放到输出寄存器中。这些数据经过并行到串行转换器转换成串行数据,经TLC2543的DOUT输出到微处理器中。TLC2543的引脚意义如表9-4所列。图图9-21 TLC25439-21 TLC2543引脚排列引脚排列8/5/20248/5/20246767图图9-22 TLC25439-22 TLC2543片内结构框图片内结构框图8/5/20248/5/20246868表9-4 TLC2543各引脚定义(1)8/5/20248/5/20246969表9-4 TLC254

43、3各引脚定义(2)8/5/20248/5/202470702. TLC2543的接口时序TLC2543的时序有两种: 使用片选信号CS和不使用片选信号CS。这两种时序分别如图9-23和图9-24所示。图9-23 使用片选信号CS高位在前的时序8/5/20248/5/20247171图9-24 不使用片选信号CS高位在前的时序8/5/20248/5/202472723 TLC2543的命令字TLC2543的命令字如下:通道选择位输出数据长度控制位输出数据顺序控制位数据极性选择位D7D6D5D4D3D2D1D0输入到输入寄存器中的输入到输入寄存器中的8 8位编程数据选择器件输入通道位编程数据选择器

44、件输入通道和输出数据的长度及格式。其选择格式如表和输出数据的长度及格式。其选择格式如表9-59-5所列。所列。8/5/20248/5/20247373表9-5 输入寄存器命令字格式8/5/20248/5/202474744 TLC2543与89C51的SPI接口及程序TLC2543串行A/D转换器与89C51的SPI接口电路如图9-25所示。SPI(Serial Perpheral Interface)是一种串行外设接口标准,串行通信的双方用4根线进行通信。这4根连线分别是: 片选信号、I/O时钟、串行输入和串行输出。这种接口的特点是快速、高效,并且操作起来比I2C要简单一些,接线也比较简单,

45、TLC2543提供SPI接口。图9-25 TLC2543和89C51的接口电路8/5/20248/5/20247575对不带SPI或相同接口能力的89C51,须用软件合成SPI操作来和TLC2543接口。TLC2543的I/O CLOCK、DIN和CS端由单片机的P1.0、P1.1和P1.3提供。TLC2543转换结果的输出(DIN)数据由P1.2接收。89C51将用户的命令字通过P1.1输入到TLC2543的输入寄存器中,等待20s开始读数据,同时写入下一次的命令字。8/5/20248/5/202476761) TLC25431) TLC2543与与89C5189C51的的8 8位数据传送程

46、序位数据传送程序TLC2543: MOVR4,#04H;置控制字,AIN0,8位数据高位在前MOV A,R4CLRP1.3;片选CS有效,选中TLC2543MSB:MOVR5,#08H;传送8位LOOP:MOVP1,#04H;P12为输入位MOVC,P1.2;将TLC2543 A/D转换的8位数据串行读到C中一位RLCA;带进位位循环左移MOVP1.1,C;将控制字(在ACC中)的一位经DIN送入TLC2543SETBP1.0;产生一个时钟NOPCLRP1.0DJNZR5,LOOPMOVR2,A;A/D转换的数据存于R2中RET执行上述子程序的过程如图9-26所示8/5/20248/5/202

47、47777图9-26 TLC2543与89C51数据交换示意图8/5/20248/5/202478782) TLC25432) TLC2543与与89C5189C51的的1212位数据传送程序位数据传送程序ORG0100HMOVP1,#04H;P12为输入位MOVR6,#0AH;转换10次MOVR0,#2FH;置数据缓冲区指针CLRP1.0;置I/O时钟为低SETBP1.3;置CS为高ACALL TLC2543;调转换子程序SJMPTLC2543:MOVA,#00H;设置通道选择和工作模式(IN0,12位)CLRP13;置CS为低MOVR5,#0CH;置输出位计数初值LOOP:MOVP1,#0

48、4H;P12为输入位MOVC,P1.2;读入转换数据一位RLCA;将进位位移给A,即将转换数据的一位读入,同时将控制字的一位输入C8/5/20248/5/20247979MOVP1.1,C;送出一位控制位入2543SETBP1.0;置I/O时钟为高NOPCLRP1.0;置I/O时钟为低CJNER5,#04,LOP1;剩4位了吗?MOVR0,A;前8位存入RAMINCR0CLRALOP1:DJNZR5,LOOP;未转完继续读剩余4位ANLA,#0FHMOVR0,A;转换完的存入单元RET8/5/20248/5/202480803 3) TLC2543 TLC2543与与89C5189C51的的1

49、616位数据传送程序位数据传送程序ORG100HSTART:MOV SP,#50H;初始化堆栈指针MOVP1,#04H;初始化P1口CLRP1.0;置I/O CLOCK为低SETBP1.3;置CS为高MOVA,#0FFHACALL TLC2543ACALL STORELJMPSTARJTLC2543:MOVR4,#0CH;读输入数据命令字到R4,AIN0,16位,高位在前MOVA,R4;读输入数据到ADW0: CLRP1.3;置CS为低JBACC.1,LSB;若输入数据D1为1,首先进行低字节数据传送MSB: MOVR5,#08;以下传送高字节数据LOOP1:MOV C,P12;读转换数据到C

50、RLCA;转换数据移到A的最低位,输入数据移入C8/5/20248/5/20248181MOVP1.1,C;写输入数据(命令字)SETBP1.0;置I/O CLOCK为高NOPCLRP1.0;置I/O CLOCK为低DJNZR5,LOOP1;判8个数据送完否,未完跳回MOVR2,A;转换结果的高字节放入R2MOVA,R4;读输入数据到AJBACC.1,RETURN;若输入数据D1为1,送数结束LSB: MOVR5,#08;以下传送低字节数据LOOP2:MOV C,P1.2RLCAMOVP1.1,CSETBP1.0NOPCLRP1.0DJNZR5,LOOP2MOVR3,A;转换结果低字节放入R3

51、MOVA,R4JBACC.1,MSB;若输入数据D1为1,进行高字节数据传送RETURN:RET8/5/20248/5/20248282STORE:MOV A,R4;读输入数据到AANLA,#0F0H;只保留地址位SWAP A;以下产生存储地址MOVB,#02MULABADDA,#30HMOVR1,AMOVA,R2MOVR1,A;把高字节放入相应的偶数地址RAM:;各通道地址依次为30H、32HINCR1MOVA,R3MOVR1,A;把低字节放入相应的奇数地址RAM:;各通道地址依次为31H、33HRETEND8/5/20248/5/202483839.2.3 9.2.3 逐次逼近型并行输出转

52、换器及接口逐次逼近型并行输出转换器及接口1.ADC0809 A/D转换器芯片图9-27所示为ADC0809的引脚图及内部逻辑结构图。它由8路模拟开关、8位A转换器、三态输出锁存器以及地址锁存译码器等组成。图9-27 ADC0809结构8/5/20248/5/20248484引脚功能说明如下:IN0IN7:8个输入通道的模拟输入端。D0D7:8位数字量输出端。START:启动信号,加上正脉冲后,A/D转换开始进行。ALE:地址锁存信号。由低至高电平时,把三位地址信号送入通道号地址锁存器,并经译码器得到地址输出,以选择相应的模拟输入通道。EOC:转换结束信号,是芯片的输出信号。转换开始后,EOC信

53、号变低;转换结束时,EOC返回高电平。这个信号可以作为转换器的状态信号来查询,也可以直接用作中断请求信号。OE:输出允许控制端(开数字量输出三态门)。CLK:时钟信号。最高允许值为640 kHz。VREF+和VREF-:A/D转换器的参考电压。VCC:电源电压。由于是CMOS芯片,允许的电压范围较宽,可以是+5+15V。8位模拟开关地址输入通道的关系见表96。8/5/20248/5/20248585表表9-6 89-6 8位模拟开关功能表位模拟开关功能表ADC0809的时序图见图9-28。图9-28 ADC0809的时序图ADDCADDBADDA输入通道号000IN0001IN1010IN21

54、11IN78/5/20248/5/202486862. ADC08092. ADC0809与与89C5189C51接口接口ADC0809与89C51连接可采用查询方式,也可采用中断方式。图9-29为中断方式连接电路图。由于ADC0809片内有三态输出锁存器,因此可直接与89C51接口。图9-29 ADC0809与89C51的连接8/5/20248/5/202487873. 83. 8路巡回检测系统路巡回检测系统【例9-3】某粮库或某冷冻厂需对8点(8个冷冻室或8个粮仓)进行温度巡回检测。要求设计一个单片机巡回检测系统,使其能对各冷冻室或各粮仓的温度巡回检测并加以处理。设被测温度范围为-30+5

55、0,温度检测精度要求不大于1。将读数依次存放在片外数据存储器A0HA7H单元。其主程序和中断服务程序如下:主程序:MAIN:MOV R0,#0A0H;数据暂存区首址MOV R2,#08H;8路计数初值SETB IT1;脉冲触发方式SETB EA;开中断SETB EX1MOV DPTR,#7FF8H;指向0809首地址MOVX DPTR,A;启动转换HERE:SJMP HERE;等待中断8/5/20248/5/20248888中断服务程序:MOVX A,DPTR;读数MOVX R0,A;存数INC DPTR;更新通道INC R0;更新暂存单元DJNZ R2,DONERETIDONE:MOVX D

56、PTR,ARETI8/5/20248/5/202489899.2.4 3 9.2.4 3 位双积分位双积分A/DA/D转换器及接口技术转换器及接口技术适用于单片机接口的有3 位双积分A/D转换器 MC14433(精度相当于11位二进制数)和4 位双积 分A/D转换器ICL7135(精度相当于14位二进制数)。8/5/20248/5/202490901. MC144331. MC14433芯片介绍芯片介绍MC14433主要特性参数如下:转换精度具有1/1 999的分辨率或读数的0.051个字(相当于11位二进制数);电压量程分1.999 V和199.9 mV两档;转换速度为310次秒,相应的时钟

57、频率变化范围为50150 kHz;输入阻抗大于100 M;基准电压取2 V或200 mV(分别对应量程为1.999 V或199.9 mV);具有过量程和欠量程输出标志;片内具有自动极性转换和自动调零功能;转换结束输出经过多路调制的BCD码;工作电压范围为4.58 V或916 V;当电源为5 V时,典型功耗为8 mW。8/5/20248/5/20249191MC14433为24脚双列直插式封装,其引脚如图9-30所示。引脚功能介绍如下:VAG(1脚):模拟地。VREF(2脚):基准电压输入端。VX(3脚):被测电压输入端。R1、R1/C1和C1(46脚):外接积分阻容元件,4脚和6脚为输入线,5

58、脚为积分波形输出端。若时钟为66 kHz,R1为470 k(2 V)或27 k(200 mV)时,一次转换的时间约为250 ms。C01和C02(7和8脚):外接失调补偿电容。通常取0.1F。DU(9脚):定时输出控制端。若输入一个正脉冲,则使转换结果送至结果寄存器。图9-30 MC14433的引脚图8/5/20248/5/20249292EOC(14脚):一次转换结束标志输出。每一次A/D转换结束时便输出一个正脉冲,其宽度为时钟周期的1/2。若把9脚和14脚相连接,则每次转换结束都送到输出锁存器。在实际电路中常把它们相连。CLKI和CLKO(10和11脚):时钟信号输入、输出端。通常外接一个

59、300 K左右的电阻。OR(15脚):过量程标志。当VVR时,输出低电平。DS4DS1(1619脚):个、十、百、千位选通特征位输出信号,宽度为18个时钟周期。当DS11时,输出为千位数;DS2时,输出为百位数。Q3Q0(脚):经转换后的BCD码结果输出端。VEE(12脚):负电源,为电路最低电平端。VSS(13脚):输出低电平基准,为数字地或称系统地。VDD(24脚):正电源。若VSSVAG,则输出幅度为VAG VDD ;若VSS VEE,则输出幅度为VEE VDD 。图931为MC14433的转换输出时序。8/5/20248/5/20249393图9-31 MC14433选通脉冲时序8/5

60、/20248/5/20249494DS时,Q3Q2Q1Q0输出过量程、欠量程、千位和极性标志的编码如表9-7所列。由表9-7可知,Q3在Q0=0时,表示千位数的内容: Q3=0,千位为1;Q3=1,千位为0。Q3在Q0=1时,表示过、欠量程: Q3=0,表示过量程;Q3=1表示欠量程。当量程选为1.999 V时,过量程表示被测信号大于1.999 V;欠量程表示被测信号小于0.179 V。Q2表示被测信号的极性: Q2=1,为正极性;Q2=0,为负极性。表9-7 DS1选通时Q0Q3表示的输出结果DS1Q3Q2Q1Q0输出结果状态110千位数为0100千位数为1110输出结果为正100输出结果为

61、负101输入信号过量程111输入信号欠量程8/5/20248/5/202495952. MC14433与89C51接口MC14433与89C51的接口电路如图932所示。该电路采用中断方式管理MC14433的操作。由于引脚EOC与DU连接在一起,所以,MC14433能自动连续转换,每次转换结束便在EOC脚输出正脉冲,经反相后作为89C51的外部中断请求信号INT1。图图9 932 5G1443332 5G14433与与89C5189C51单片机直接连单片机直接连接的硬件接口接的硬件接口8/5/20248/5/202496969.3 系统后向通道配置及接口技术后向通道是计算机实现控制运算处理后,

62、对被控对象的输出通道接口。系统的后向通道是一个输出通道,其特点是弱电控制强电,即小信号输出实现大功率控制。常见的被控对象有电机、电磁开关等。单片机实现控制是以数字信号或模拟信号的形式通过口送给被控对象的。其中,数字信号形态的开关量、二进制数字量和频率量可直接用于开关量、数字量系统及频率调制系统的控制;但对于一些模拟量控制系统,则应通过转换器转换成模拟量控制信号后,才能实现控制。8/5/20248/5/202497979.3.1 后向通道中的功率开关器件及接口1. 继电器及接口1) 单片机与继电器的接口一个典型的继电器与单片机的接口电路如图9-33所示。图图9-33 9-33 继电器接口继电器接

63、口8/5/20248/5/202498982) 单片机与固态继电器接口固态继电器简称SSR(Solid State Relay),是一种四端器件: 两端输入,两端输出,它们之间用光耦合器隔离。它是一种新型的无触点电子继电器,其输入端仅要求输入很小的控制电流,与TTL、HTL、CMOS等集成电路具有较好的兼容性,而其输出则用双向晶闸管(可控硅)来接通和断开负载电源。图9-34所示为固态继电器内部结构。图9-35为89C51单片机口线与固态继电器SSR接口电路。8/5/20248/5/20249999图9-34固态继电器内部结构图9-35 I/O口线与SSR接口电路8/5/20248/5/2024

64、1001002. 光电耦合器(隔离器)件及驱动接口后向通道往往所处环境恶劣,控制对象多为大功率伺服驱动机构,电磁干扰较为严重。为防止干扰窜入和保证系统的安全,常常采用光电耦合器,用以实现信号的传输,同时又可将系统与现场隔离开。晶体管输出型光电耦合器的受光器是光电晶体管,如图9-36所示。图9-36是使用4N25的光电耦合器接口电路图。图9-36 光电耦合器4N25的接口电路8/5/20248/5/2024101101图9-36所示的接口电路中,使用同相驱动器OC门7407作为光电耦合器4N25输入端的驱动。光电耦合器输入端的电流一般为1015 mA,发光二极管的压降为1.21.5 V。限流电阻

65、由下式计算:式中: VCC为电源电压;VF为输入端发光二极管的压降,取1.5 V;VCS为驱动器7407的压降,取0.5V。图9-36所示电路要求IF为15 mA,则限流电阻值计算如下: R=2008/5/20248/5/2024102102光电耦合器也常用于较远距离的信号隔离传送。一方面,光电耦合器可以起到隔离两个系统地线的作用,使两个系统的电源相互独立,消除地电位不同所产生的影响;另一方面,光电耦合器的发光二极管是电流驱动器件,可以形成电流环路的传送形式。由于电流环电路是低阻抗电路,它对噪音的敏感度低,因此,提高了通信系统的抗干扰能力。其常用于有噪音干扰环境下的传输,最大传输距离为900

66、m。图9-37是用光电耦合器组成的电流环发送和接收电路。图9-37 电流环电路8/5/20248/5/20241031033. 3. 光电耦合驱动晶闸管光电耦合驱动晶闸管( (可控硅可控硅) )功率开关及接口功率开关及接口图9-38是4N40和MOC3041的接口驱动电路。4N40是常用的单向晶闸管输出型光电耦合器,也称固态继电器。MOC3041是常用的双向晶闸管输出的光电耦合器(固态继电器)。图9-38 晶闸管输出型光电耦合器驱动接口8/5/20248/5/20241041049.3.2 串行输入D/A芯片TLC5615接口技术TLC5615是具有3线串行接口的数/模转换器。其输出为电压型,

67、最大输出电压是基准电压值的两倍。带有上电复位功能,上电时把DAC寄存器复位至全0。TLC5615的性能价格比较高,市场售价比较低。8/5/20248/5/20241051051. TLC56151. TLC5615的特点的特点 10位CMOS电压输出; 5 V单电源工作; 与微处理器3线串行接口(SPI); 最大输出电压是基准电压的2倍; 输出电压具有和基准电压相同的极性; 建立时间12.5 s; 内部上电复位; 低功耗,最高为1.75 mW; 引脚与MAX515兼容。8/5/20248/5/20241061062.2.功能方框图功能方框图TLC5615的功能方框图如图939所示。图图9 93

68、9 TLC561539 TLC5615功能方框图功能方框图8/5/20248/5/20241071073.3. 引脚排列及功能引脚排列及功能TLC5615的引脚排列及功能说明分别见图940及表98。图940 TLC5615引脚图引脚I/O说明名称序号DIN1I串行数据输入SCLK2I串行时钟输入/CS3I芯片选择。低有效DOUT4O用于菊花链(daisy chaining)的串行数据输出AGND5模拟地REFIN6I基准电压输入OUT7ODAC模拟电压输出VDD8正电源(4.55.5V)表98 引脚功能8/5/20248/5/20241081084. TLC5615的时序分析TLC5615的时

69、序图如图941所示。图941 时序波形图8/5/20248/5/20241091095. TLC56155. TLC5615的输入的输入/ /输出关系输出关系图942的D/A输入/输出关系如表99所列。图942 TLC5615与89C51接口电路数字量输入模拟量输出1111 1111 11(00)2VREFIN1023/1024 1000 0000 01(00)2VREFIN513/10241000 0000 00(00)2VREFIN512/10240111 1111 11(00)2VREFIN511/10240000 0000 01(00)2VREFIN1/10240000 0000 00

70、(00)0 V表表9 99 D/A9 D/A转换关系转换关系8/5/20248/5/2024110110因为TCL5615芯片内的输入锁存器为12位宽,所以要在10位数字的低位后面再添上两位数字。为不关心状态。串行传送的方向是先送出高位MSB,后送出低位LSB。10位如果有级联电路,则应使用16位的传送格式,即在最高位MSB的前面再加上4个虚位,被转换的10位数字在中间。4个虚位10位MSBLSB8/5/20248/5/20241111116. TLC56156. TLC5615与与89C5189C51的串行接口电路的串行接口电路图942为TLC5615和89C51单片机的接口电路。将89C5

71、1要输出的12位数据存在R0和R1寄存器中,其D/A转换程序如下:CLR P3.0;片选有效MOV R2,#4;将要送入的前4位数据位数MOV A,R0;前4位数据送累加器低4位SWAP A;A中高4位和低4位互换(4位数在高位)LCALL WRdata;由DIN输入前4位数据MOV R2,#8;将要送入的后8位数据位数MOV A,R1;8位数据送入累加器ALCALL WRdata;由DIN输入后8位数据CLR P3.1;时钟低电平SETB P3.0;片选高电平,输入的12位数据有效RET;结束送数子程序如下:WRdata: NOP;空操作LOOP:CLR P3.1;时钟低电平RLC A;数据

72、送入进位位CYMOV P3.2,C;数据输入TLC5615有效SETB P3.1;时钟高电平DJNZ R2,LOOP;循环送数RET8/5/20248/5/20241121129.3.3 并行输入芯片及接口技术1. 并行输入转换芯片DAC0832DAC0832引脚图和逻辑框图如图943所示。DAC0832主要由两个8位寄存器和一个8位转换器组成。图943 DAC0832结构8/5/20248/5/2024113113图中,LE1和LE2是寄存命令。当LE11时,输入寄存器的输出随输入变化;当LE10时,数据锁存在寄存器中,不再随数据总线上的数据变化而变化。ILE为高电平,且CS与WR1同时为低

73、时,使得LE11;当WR1变高时,8位输入寄存器便将输入数据锁存。XFER与WR2同时为低,使得LE22,8位DAC寄存器的输出随寄存器的输入变化。WR2上升沿将输入寄存器的信息锁存在DAC寄存器中。图中的RFB是片内电阻,为外部运算放大器提供反馈电阻,用以提供适当的输出电压;VREF端由外部电路提供10-10V的参考电源;IOUT1与IOUT2是两个电流输出端。欲将数字量D0D7转换为模拟量,只要使WR20,XFER0,DAC寄存器为不锁存状态,即ILE,CS和WR1端接负脉冲信号,即可完成一次转换;或者WR10,CS0,ILE1,输入寄存器为不锁存状态,而WR2和XFER端接负脉冲信号,可

74、达到同样目的。8/5/20248/5/20241141141) DAC08321) DAC0832引脚功能引脚功能D0D7: 数字量数据输入线。ILE: 数据锁存允许信号,高电平有效。CS: 输入寄存器选择信号,低电平有效。WR1: 输入寄存器的“写”选通信号,低电平有效。XFER: 数据转移控制信号线,低电平有效。WR2: DAC寄存器的“写”选通信号。VREF: 基准电压输入线。RFB: 反馈信号输入线,芯片内已有反馈电阻。IOUT1和IOUT2: 电流输出线。 IOUT1与IOUT2的和为常数, IOUT1随DAC寄存器的内容线性变化。一般在单极性输出时,IOUT2接地;在双极性输出时,

75、接运放。 VCC: 工作电源。 DGND: 数字地。 AGND: 模拟信号地。8/5/20248/5/2024115115当时,输入锁存器状态随数据输入线状态变化;而时,则锁存输入数据。当时,DAC寄存器的输出随输入状态变化;时,锁存输入状态。 8/5/20248/5/20241161162) DAC0832特性主要的特性参数如下: 分辨率为8位。 只需在满量程下调整其线性度。 可与所有的单片机或微处理器直接接口,需要时亦可不与微处理器连接而单独使用。 电流稳定时间为1 。 可双缓冲、单缓冲或直通数据输入。 功耗低,约为200 mW。 逻辑电平输入与TTL兼容。 单电源供电( )。8/5/20

76、248/5/20241171172. D/A转换器与89C51接口在D/A芯片中,有许多芯片输出量是电流,而实际应用中常常需要的是模拟电压。在这种情况下,芯片的输出还需要有将电流转换为电压的电路。下面介绍两种电路供参考: 图9-44(a)是反相电压输出电路,输出电压;图9-44(b)是同相电压输出电路,输出电压()。图中, 当接 (或 )时,输出电压范围是 (或0 );当接 (或 )时,输出电压范围是 (或 )。输入数字量的变化,将引起模拟量输出的变化。图9-44 D/A转换输出电路8/5/20248/5/20241181181) 1) 直通式工作方式应用直通式工作方式应用图9-45所示为直通

77、式工作方式的连接方法。输入到DAC0832的D0D7数据不经控制直达8位D/A转换器。当某一根地线或地址译码器的输出线使DAC0832的脚有效(低电平)或与直接接地时,数据线上的数据字节直通转换器转换并输出。图图9-45 DAC08329-45 DAC0832直通式电压输出电路直通式电压输出电路8/5/20248/5/20241191192) 2) 单缓冲工作方式应用单缓冲工作方式应用应用系统中,在只有一路模拟量输出或几路模拟量不需要同时输出的场合,应采用单缓冲方式。在这种方式下,将二级寄存器的控制信号并接,输入数据在控制信号作用下(一次控制,一次缓冲),直接打入8位DAC寄存器中并进入8位D

78、/A转换器进行D/A转换。如图9-46所示。图946 一路D/A输出连线图(单路模拟量输出)8/5/20248/5/2024120120当执行“写”指令时,DAC0832相应的控制信号时序如图947所示。图947 DAC0832时序图8/5/20248/5/2024121121 产生锯齿波的程序产生锯齿波的程序程序框图如图948所示。程序如下:MOV DPTR,#2FFFH;设置口地址MOV A,#00H;输入数字量00H到A(初值为00H)LOOP: MOVX DPTR,A;输出对应于A内容的模拟量INC A;修改A的内容(原来值加1)AJMPLOOP;图图9 948 D/A48 D/A产生

79、锯齿波程序框图产生锯齿波程序框图8/5/20248/5/2024122122 产生方波的程序产生方波的程序MOVDPTR,#2FFFH;设置口地址LOOP: MOVA,#0FFH;给A送最大值MOVX DPTR,A;输出相应模拟量ACALL 2700H;延时MOVA,#00H;给A送最小值MOVX DPTR,A;D/A输出相应模拟量ACALL 2700H;延时AJMPLOOP;返回循环8/5/20248/5/20241231239.4 思考题与习题1. 为什么要消除键盘的机械抖动?有哪些方法?2. 试述转换器的种类及特点。3. 设计一个22行列(同在P1口)式键盘电路并编写键扫描子程序。4.

80、试设计一个LED显示器键盘电路。5. 在一个89C51应用系统中,89C51以中断方式通过并行接口74LS244读取器件5G14433的转换结果。试画出有关逻辑电路,并编写读取结果的中断服务程序。8/5/20248/5/20241241246. 在一个f为12 MHz的89C51系统中接有一片器件DAC0832,它的地址为7FFFH,输出电压为0 。请画出有关逻辑框图,并编写一个程序,使其运行后能在示波器上显示出锯齿波(设示波器X方向扫描频率为50 格,Y方向扫描频率为1 V格)。7. 在一个f为12 MHz的89C51系统中接有一片器件ADC0809,它的地址为7FF8H7FFFH。试画出有

81、关逻辑框图,并编写ADC0809初始化程序和定时采样通道2的程序(假设采样频率为1 ms/次,每次采样4个数据,存于89C51内部RAM 70H73H中)。8. 在一个89C51系统中扩展一片74LS245,通过光电隔离器件外接8路TTL开关量输入信号。试画出其有关的硬件电路。9. 用8051的P1口作8个按键的独立式键盘接口。试画出其中断方式的接口电路及相应的键盘处理程序。10. 试说明非编码键盘的工作原理。如何去键抖动?如何判断键是否释放?8/5/20248/5/202412512511. DAC0832与89C51单片机连接时有哪些控制信号?其作用是什么?12. 在一个89C51单片机与

82、一片DAC0832组成的应用系统中,DAC0832的地址为7FFFH,输出电压为05 V。试画出有关逻辑框图,并编写产生矩形波,其波形占空比为4,高电平时电压为2.5 V,低电平时电压为1.25 V的转换程序。13. 在一个由89C51单片机与一片ADC0809组成的数据采集系统中,ADC0809的地址为7FF8H7FFFH。试画出有关逻辑框图,并编写出每隔1 min轮流采集一次8个通道数据的程序。共采样100次,其采样值存入片外RAM 3000H开始的存储单元中。14. 以DAC0832为例,说明D/A的单缓冲与双缓冲有何不同。15. 以DAC0832为例,说明D/A的单极性输出与双极性输出有何不同。16. A/D和D/A的主要技术指标中,“分辨率”与“转换精度”(即“量化误差”或“转换误差”)有何不同。注: 第14、15和16题的答案在参考文献2中的P101105。单片机学习辅助测验及解答讲义8/5/20248/5/2024126126

展开阅读全文
相关资源
正为您匹配相似的精品文档
相关搜索

最新文档


当前位置:首页 > 办公文档 > 工作计划

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号