1 / 66

第 9 章 应用系统配置及接口技术

第 9 章 应用系统配置及接口技术. 教学目标. 掌握 A/D 转换器的工作方式 掌握单片机控制 A/D 转换器接口应用 掌握 D/A 转换器的工作方式 掌握单片机控制 D/A 转换器接口应用. 教学内容. 9.1 人机通道配置与接口技术 9.2 前向通道中的A/D转换器及接口技术 9.3 系统后向通道配置及接口技术 9.4 思考题与习题. 若输入是非电的模拟信号,还需要通过传感器转换成电信号并加以放大,把模拟量转换成数字量。该过程称为“量化”,也称为模/数转换。

meadow
Download Presentation

第 9 章 应用系统配置及接口技术

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. 第9章 应用系统配置及接口技术

  2. 教学目标 • 掌握A/D转换器的工作方式 • 掌握单片机控制A/D转换器接口应用 • 掌握D/A转换器的工作方式 • 掌握单片机控制D/A转换器接口应用

  3. 教学内容 • 9.1 人机通道配置与接口技术 • 9.2 前向通道中的A/D转换器及接口技术 • 9.3 系统后向通道配置及接口技术 • 9.4 思考题与习题

  4. 若输入是非电的模拟信号,还需要通过传感器转换成电信号并加以放大,把模拟量转换成数字量。该过程称为“量化”,也称为模/数转换。若输入是非电的模拟信号,还需要通过传感器转换成电信号并加以放大,把模拟量转换成数字量。该过程称为“量化”,也称为模/数转换。 • 实现模/数转换的设备称为模/数转换器(A/D),将数字量转换成模拟量的设备称为数/模转换器(D/A)。 • 图9-1所示为具有模拟量输入、模拟量输出以及键盘、显示器、打印机等配置的89C51应用系统框图。为节省I/O口线,89C51片外扩展应尽量采用串行外设接口芯片。

  5. 图9-1 系统前向、后向人机通道配置框图

  6. 9.1 人机通道配置与接口技术 • 单片机应用系统通常都需要进行人机对话。这包括人对应用系统的状态干预与数据输入,还有应用系统向人显示运行状态与运行结果等。如键盘、 显示器就是用来完成人机对话活动的人机通道。

  7. 9.1.1 键盘接口及处理程序 • 键盘分编码键盘和非编码键盘。 • 键盘上闭合键的识别由专用的硬件译码器实现,并产生键编号或键值的称为编码键盘,如BCD码键盘、ASCII码键盘等;靠软件识别的称为非编码键盘。

  8. 键盘中每个按键都是一个常开开关电路,如图9-2所示。键盘中每个按键都是一个常开开关电路,如图9-2所示。 当按键K未被按下时,P1.0输入为高电平;当K闭合时,P1.0输入为低电平。 图9-2 按键电路

  9. 通常按键所用的开关为机械弹性开关,当机械触点断开、闭合时,电压信号波形如图9-3所示。通常按键所用的开关为机械弹性开关,当机械触点断开、闭合时,电压信号波形如图9-3所示。 由于机械触点的弹性作用,一个按键开关在闭合时不会马上稳定地接通,在断开时也不会一下子断开。 因而在闭合及断开的瞬间均伴随有一连串的抖动,如图9-3所示。抖动时间的长短由按键的机械特性决定,一般为5~10 ms。这是一个很重要的时间参数,在很多场合都要用到。 图9-3 按键时的抖动

  10. 键抖动会引起一次按键被误读多次。为了确保CPU对键的一次闭合仅做一次处理,必须去除键抖动。在键闭合稳定时,读取键的状态,并且必须判别;在键释放稳定后,再作处理。按键的抖动,可用硬件或软件两种方法消除。键抖动会引起一次按键被误读多次。为了确保CPU对键的一次闭合仅做一次处理,必须去除键抖动。在键闭合稳定时,读取键的状态,并且必须判别;在键释放稳定后,再作处理。按键的抖动,可用硬件或软件两种方法消除。 如果按键较多,常用软件方法去抖动,即检测出键闭合后执行一个延时程序,产生5~10 ms的延时;让前沿抖动消失后,再一次检测键的状态,如果仍保持闭合状态电平,则确认为真正有键按下。当检测到按键释放后,也要给5~10 ms的延时,待后沿抖动消失后,才能转入该键的处理程序。

  11. 1. 键盘结构 • 键盘可以分为独立连接式和行列式(矩阵式)两类,每一类按其译码方法又都可分为编码及非编码两种类型。这里只介绍非编码键盘。

  12. 1) 独立式非编码键盘接口及处理程序 • 独立式按键是指各按键相互独立地接通一条输入数据线,如图9-4所示。这是最简单的键盘结构,该电路为查询方式电路。 • 当任何一个键按下时,与之相连的输入数据线即被清0(低电平),而平时该线为1(高电平)。要判别是否有键按下,用单片机的位处理指令十分方便。 • 这种键盘结构的优点是电路简单;缺点是当键数较多时,要占用较多的I/O线。 图9-4 独立连接式非编码键盘

  13. 图9-4所示查询方式键盘的处理程序比较简单。程序中没有使用散转指令,并且省略了软件去抖动措施,只包括键查询、键功能程序转移。P0F~P7F为功能程序入口地址标号,其地址间隔应能容纳JMP指令字节;PROM0~PROM7分别为每个按键的功能程序。图9-4所示查询方式键盘的处理程序比较简单。程序中没有使用散转指令,并且省略了软件去抖动措施,只包括键查询、键功能程序转移。P0F~P7F为功能程序入口地址标号,其地址间隔应能容纳JMP指令字节;PROM0~PROM7分别为每个按键的功能程序。

  14. 程序清单(设I/O为P1口): START: MOV A,#0FFH;输入时先置P1口为全1 MOV P1,A MOV A,P1;键状态输入 PL1: JNB ACC.0,P0F;0号键按下转P0F标号地址 JNB ACC.1,P1F;1号键按下转P1F标号地址 JNB ACC.2,P2F;2号键按下转P2F标号地址 JNB ACC.3,P3F;3号键按下转P3F标号地址 JNB ACC.4,P4F;4号键按下转P4F标号地址 JNB ACC.5,P5F;5号键按下转P5F标号地址 JNB ACC.6,P6F;6号键按下转P6F标号地址 JNBA CC.7,P7F;7号键按下转P7F标号地址 LJMP START;无键按下返回

  15. P0F: LJMP PROM0 ┊ ┊ P1F: LJMP PROM1 ;入口地址表  P7F: LJMP PROM7 PROM0:… ;0号键功能程序 LJMP START ;0号键执行完返回 PROM1:… LJMP START  ┊ PROM7:… LJMP START 由程序可以看出,各按键由软件设置了优先级,优先级顺序依次为0~7。

  16. 2) 行列式键盘接口及工作原理 • 为了减少键盘与单片机接口时所占用I/O线的数目,在键数较多时,通常都将键盘排列成行列矩阵形式,如图9-6所示。 • 以图9-6所示的4×4键盘为例,说明行扫描法识别哪一个按键被按下的工作原理。

  17. 图9-6 4×4矩阵键盘接口图

  18. 首先判别键盘中有无键按下,由单片机I/O口向键盘送(输出)全扫描字,然后读入(输入)列线状态来判断。方法是: 向行线(图中水平线)输出全扫描字00H,把全部行线置为低电平,然后将列线的电平状态读入累加器A中。如果有按键按下,总会有一根列线电平被拉至低电平,从而使列输入不全为1。 • 判断键盘中哪一个键被按下是通过将行线逐行置低电平后,检查列输入状态实现的。方法是: 依次给行线送低电平,然后查所有列线状态,称行扫描。如果全为1,则所按下的键不在此行;如果不全为1,则所按下的键必在此行,而且是在与零电平列线相交的交点上的那个键。

  19. 线反转法示例程序 : SMKEY:MOV P1,#0FH ;置P1口高4位为“0”、低4位为输入状态 MOV A,P1 ;读P1口 ANL A,#0FH ;屏蔽高4位 CJNE A,#0FH,HKEY ;有键按下,转HKEY SJMP SMKEY ;无键按下转回 HKEY: LCALL DELAY10 ;延时10ms,去抖 MOV A,P1 ANL A,#0FH ; MOV B,A ;行线状态在B的低4位 CJNE A,#0FH,WKEY ;确认有键按下,转判哪一键按下 SJMP SMKEY ; 是抖动转回 WKEY:MOV P1,#0F0H ;置P1口高4位为输入、低4位为“0” MOV A,P1 ; ANL A,#0F0H ;屏蔽低4位 ORL A,B ;列线状态在高4位,与行线状态合成于B中 … … ;键处理

  20. 2. 中断扫描方式 • 为了提高CPU的效率,可以采用中断扫描工作方式,即只有在键盘有键按下时才产生中断申请;CPU响应中断,进入中断服务程序进行键盘扫描,并做相应处理。中断扫描工作方式的键盘接口如图所示。

  21. 程序如下: ORG 0000H LJMP BEGIM ;转主程序 ORG 0003H LJMP WZD0 ;转外中断0程序 ORG 0013H LJMP WZD1 ;转外中断1程序 BEGIM: ORG 0100H MOV SP,60H ;设置堆栈 MOV R1,#00H ;R1存放键值 SETB IT1 ;设INT0、INT1为边沿触发 SETB IT0 SETB EA ;开中断 SETB EX0 SETB EX1 ┇ 键值处理程序(略) 其它主程序(略

  22. WZD0: PUSH PSW ;保护现场 PUSH A CLR EX0 ;关中断INT0 JNB P3.2,WZD01 ;再次确认是INT0中断吗 SETB EX0 ;不是,则恢复现场退出中断 POP A POP PSW RETI WZD01: MOV A,#01H ;置S1键的键值为1 MOV P1,#0FEH ;扫描P1.0 CALL QDDYS1 ;去抖动 JNB P3.2,KEYR1 ;是S1键则转移 INC A ;不是S1键,键值加1 MOV P1,#0FDH ;扫描P1.1,以下同P1.0类似 CALL ODDYS1 ;以下同P1.0类似(略) JNB P3.2,KEYR1 INC A MOV P1,#0FBH CALL QDDYS1 JNB P3.2,KEYR1 INC A MOV P1,#0F7H

  23. CALL QDDYS1 JNB P3.2,KEYR1 INC A MOV P1,#0EFH CALL QDDYS1 JNB P3.2,KEYR1 INC A MOV P1,#0DFH CALL QDDYS1 JNB P3.2,KEYR1 INC A MOV P1,#0BFH CALL QDDYS1 JNB P3.2,KEYR1 INC A MOV P1,#7FH CALL QDDYS1 JNB P3.2,KEYR1 LJMP KEYR2 ODDYS1:RET KEYR1: MOV R1,A ;将键值存入R1中 KEYR2: CLR IE0 ;清中断标志(因扫描中可能使IE0置位) SETB EX0 ;开中断INT0 POP A ;恢复现场 POP PSW RETI ;中断返回 WZD1: 外中断1程序与中断0相似(略)

  24. 9.1.2 LED显示器接口及显示程序 单片机应用系统中使用的显示器主要有: • 发光二极管显示器,简称LED(Light Emitting Diode); • 液晶显示器,简称LCD(Liquid Crystal Display); • CRT显示器

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

  26. 以共阴极LED为例,如图9-11(a)所示,各LED公共阴极K0接地。若向各控制端a、b、…、g、dp顺次送入11100001信号,则该显示器显示“7.”字型。以共阴极LED为例,如图9-11(a)所示,各LED公共阴极K0接地。若向各控制端a、b、…、g、dp顺次送入11100001信号,则该显示器显示“7.”字型。 • 共阴极与共阳极7段LED显示数字0~F、“-”符号及“灭”的编码(a段为最低位,dp点为最高位)如表9-1所列。 图9-11 LED 7段显示器

  27. 表9-1 共阴极和共阳极7段LED显示字型编码表

  28. 2. LED显示器接口及显示方式 • LED显示器有静态显示和动态显示两种方式。

  29. 1) LED静态显示方式 • 静态显示就是当显示器显示某个字符时,相应的段(发光二极管)恒定地导通或截止,直到显示另一个字符为止。 • LED显示器工作于静态显示方式时,各位的共阴极(公共端K0)接地;若为共阳极(公共端K0),则接+5v电源。每位的段选线(a~dp)分别与一个8位锁存器的输出口相连,显示器中的各位相互独立,而且各位的显示字符一经确定,相应锁存的输出将维持不变。 • 因此,静态显示器的亮度较高。这种显示方式编程容易,管理也较简单,但占用I/O口线资源较多。在显示位数较多的情况下,一般都采用动态显示方式。

  30. 2) LED动态显示方式 • 在多位LED显示时,将所有位的段选线并联在一起,由一个8位I/O口控制。而共阴(或共阳)极公共端K分别由相应的I/O线控制,实现各位的分时选通。图9-12所示为6位共阴极LED动态显示接口电路。 • 图9-12 6位LED动态显示接口电路图9-13 6位动态扫描显示状态 图9-12 6位LED动态显示接口电路

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

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

  33. 图9-14 6只LED动态显示接口

  34. 图9-15 DIS显示子程序流程图

  35. DIS显示子程序清单如下: DIS: MOV R0,#7EH;显示缓冲区末地址→R0 MOV R2,#01H;位控字,先点亮最低位(右边) MOV A,R2 MOV DPTR,#TAB;字型表头地址→DPTR LP0: MOV P1,A MOV A,@R0;取显示数据 MOVC A,@A+DPTR;取出字形码 MOV P0,A;送出显示 ACALL D1MS;调延时子程序 DEC R0;数据缓冲区地址减1 MOV A,R2 JB ACC.5,LP1;扫描到最左面的显示器了吗? RL A;没有到,左移1位 MOV R2,A AJMP LP0 LP1: RET TAB: DB 3FH,06H,5BH,4FH,66H,6DH DB 7DH,07H,7FH,6FH,77H,7CH DB 39H,5EH,79H,71H,40H,00H D1MS: MOV R7,#02H;延时1 ms子程序 DL: MOV R6,#0FFH DL1: DJNZ R6,DL1 DJNZ R7,DL RET

  36. 4.LED显示器与8255接口及显示子程序

  37. DIR:MOV A,#10000000B ;设置8255的工作方式,A、B口为输出 MOV DPTR,#0FFFFH ;8255的命令口地址送DPTR MOVX @DPTR,A MOV R0,#50H ;50H-57H为显示缓冲区 MOV R3,#7FH ;第1位的位选码 MOV A,R3 SCAN:MOV DPTR,#0FFFDH ;指向B口 MOVX @DPTR,A ;位选码送B口 MOV A,@R0 ;取显示数据 MOV DPTR,#TAB ;取字形码表首址 MOVC A,@A+DPTR ;取字形码 MOV DPTR,#0FFFCH ;指向A口 MOVX @DPTR,A ;字形码送A口 ACALL DL1ms ;调延时1ms子程序 INC R0 ;指向下一显示数据单元 MOV A,R3 JNB ACC.0,ED ;8位显示完,退出 RR A ;指向下一位 MOV R3,A AJMP SCAN ;继续显示下一位 ED: RET TAB: DB 3FH,06H,5BH,4FH,66H ; 共阴0~F的字型码表 DB 6DH,7DH,07H,7FH,6FH DL1ms:MOV R7,#01H ;延时1ms子程序 DL0:MOV R6,#0FFH DL1:DJNZ R6,DLI; DJNZ R7,DLO RET

  38. 9.2 前向通道中的A/D转换器及接口技术 • 模/数(A/D)转换电路的种类有:计数比较型、逐次逼近型、双积分型等等。 • 逐次逼近型A/D转换器,在精度、速度和价格上都适中,是最常用的A/D转换器件。 • 双积分A/D转换器,具有精度高、抗干扰性好、价格低廉等优点,但转换速度低。 • 串行输出的A/D芯片由于节省单片机的I/O口线,越来越多地被采用。如具有SPI三线接口的TLC1549、TLC1543、TLC2543、MAX187等,具有2线I2C接口的MAX127、PCF8591(4路8位A/D,还含1路8位D/A)等。

  39. 9.2.1 逐次逼近型并行输出A/D转换器及接口 • ADC0809 A/D转换器芯片 • 图9-27所示为ADC0809的引脚图及内部逻辑结构图。 • 它由8路模拟开关、8位A/D转换器、三态输出锁存器以及地址锁存译码器等组成。 图9-27 ADC0809结构

  40. 引脚功能说明如下: • IN0~IN7:8个输入通道的模拟输入端。 • D0~D7:8位数字量输出端。 • START:启动信号,加上正脉冲后,A/D转换开始进行。 • ALE:地址锁存信号。由低至高电平时,把三位地址信号送入通道号地址锁存器,并经译码器得到地址输出,以选择相应的模拟输入通道。 • EOC:转换结束信号,是芯片的输出信号。转换开始后,EOC信号变低;转换结束时,EOC返回高电平。这个信号可以作为A/D转换器的状态信号来查询,也可以直接用作中断请求信号。 • OE:输出允许控制端(开数字量输出三态门)。 • CLK:时钟信号。最高允许值为640 kHz。 • VREF+和VREF-:A/D转换器的参考电压。 • VCC:电源电压。由于是CMOS芯片,允许的电压范围较宽,可以是+5~+15V。 • 8位模拟开关地址输入通道的关系见表96。

  41. 表9-6 8位模拟开关功能表 ADC0809的时序图见图9-28 图9-28 ADC0809的时序图

  42. 2. ADC0809与89C51接口 • ADC0809与89C51连接可采用查询方式,也可采用中断方式。图9-29为中断方式连接电路图。由于ADC0809片内有三态输出锁存器,因此可直接与89C51接口。 图9-29 ADC0809与89C51的连接

  43. 3. 8路巡回检测系统 【例9-3】某粮库或某冷冻厂需对8点(8个冷冻室或8个粮仓)进行温度巡回检测。要求设计一个单片机巡回检测系统,使其能对各冷冻室或各粮仓的温度巡回检测并加以处理。设被测温度范围为-30~+50℃,温度检测精度要求不大于±1℃。 将读数依次存放在片外数据存储器A0H~A7H单元。其主程序和中断服务程序如下: 主程序: MAIN: MOV R0,#0A0H;数据暂存区首址 MOV R2,#08H;8路计数初值 SETB IT1;脉冲触发方式 SETB EA;开中断 SETB EX1 MOV DPTR,#7FF8H;指向0809首地址 MOVX @DPTR,A;启动A/D转换 HERE:SJMP HERE;等待中断

  44. 中断服务程序: MOVX A,@DPTR;读数 MOVX @R0,A;存数 INC DPTR;更新通道 INC R0;更新暂存单元 DJNZ R2,DONE RETI DONE:MOVX @DPTR,A RETI

  45. 9.2.2 3 位双积分A/D转换器及接口技术 • 适用于单片机接口的有3 位双积分A/D转换器 MC14433(精度相当于11位二进制数)和4 位双积 分A/D转换器ICL7135(精度相当于14位二进制数)。

  46. 1. MC14433芯片介绍 • MC14433主要特性参数如下: • 转换精度具有±1/1 999的分辨率或读数的±0.05%±1个字(相当于11位二进制数); • 电压量程分1.999 V和199.9 mV两档; • 转换速度为3~10次/秒,相应的时钟频率变化范围为50~150 kHz; • 输入阻抗大于100 MΩ; • 基准电压取2 V或200 mV(分别对应量程为1.999 V或199.9 mV); • 具有过量程和欠量程输出标志; • 片内具有自动极性转换和自动调零功能; • 转换结束输出经过多路调制的BCD码; • 工作电压范围为±4.5~±8 V或9~16 V; • 当电源为±5 V时,典型功耗为8 mW。

  47. MC14433为24脚双列直插式封装,其引脚如图9-30所示。引脚功能介绍如下:MC14433为24脚双列直插式封装,其引脚如图9-30所示。引脚功能介绍如下: • VAG(1脚) :模拟地。 • VREF(2脚):基准电压输入端。 • VX(3脚):被测电压输入端。 • R1、R1/C1和C1(4~6脚):外接积分阻容元件,4脚和6脚为输入线,5脚为积分波形输出端。若时钟为66 kHz,R1为470 kΩ(2 V)或27 kΩ(200 mV)时,一次转换的时间约为250 ms。 • C01和C02(7和8脚):外接失调补偿电容。通常取0.1μF。 • DU(9脚):定时输出控制端。若输入一个正脉冲,则使转换结果送至结果寄存器。 图9-30 MC14433的引脚图

  48. EOC(14脚):一次转换结束标志输出。每一次A/D转换结束时便输出一个正脉冲,其宽度为时钟周期的1/2。若把9脚和14脚相连接,则每次转换结束都送到输出锁存器。在实际电路中常把它们相连。EOC(14脚):一次转换结束标志输出。每一次A/D转换结束时便输出一个正脉冲,其宽度为时钟周期的1/2。若把9脚和14脚相连接,则每次转换结束都送到输出锁存器。在实际电路中常把它们相连。 • CLKI和CLKO(10和11脚):时钟信号输入、输出端。通常外接一个300 KΩ左右的电阻。 • OR(15脚):过量程标志。当|Vx|>VR时,输出低电平。 • DS4~DS1(16~19脚):个、十、百、千位选通特征位输出信号,宽度为18个时钟周期。当DS1=1时,Q3~Q0输出为千位数;DS2=1时,Q3~Q0输出为百位数……。 • Q3~Q0(23~20脚):经A/D转换后的BCD码结果输出端。 • VEE(12脚):负电源,为电路最低电平端。 • VSS(13脚):输出低电平基准,为数字地或称系统地。 • VDD(24脚):正电源。若VSS=VAG,则输出幅度为VAG ~ VDD ;若VSS =VEE,则输出幅度为VEE~ VDD 。 • 图931为MC14433的转换输出时序。

  49. 图9-31 MC14433选通脉冲时序

  50. DS1=1时,Q3Q2Q1Q0输出过量程、欠量程、千位和极性标志的编码如表9-7所列。DS1=1时,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选通时Q0~Q3表示的输出结果

More Related