《《单片机应用及控制技术》第8章-应用系统配置及接口技术.ppt》由会员分享,可在线阅读,更多相关《《单片机应用及控制技术》第8章-应用系统配置及接口技术.ppt(59页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。
1、第第8章章 应用系统配置及接口技术应用系统配置及接口技术上海电子信息职业技术学院上海电子信息职业技术学院 何永艳主编何永艳主编8.1 按键概述按键概述键盘的结构规则排列的按键组成,一个按键实际上是一个开关元件。键盘通常使用机械触点式按键开关,其主要功能是把机械上的通断转换1和0。常见的种类有独立式按键和矩阵式键盘。8.1.1 独立式按键独立式按键1.按键开关去抖动问题按键在闭合和断开时,触点会存在抖动现象:图8.1 键操作和键抖动如图8.1所示,键盘的抖动时间一般为510ms,抖动现象会引起CPU对一次键操作进行多次处理,从而可能产生错误。消除抖动不良后果的方法有:硬件、软件两种方法硬件去抖动
2、图8.2硬件消抖电路简单实用,效果较好软件去抖动检测到按键按下后,执行延时10ms子程序后再确认该键是否确实按下,从而消除抖动影响。2.按键连接方式特点特点:各按键相互独立,电路配置灵活;按键数量较多时,I/O端线耗费较多,电路结构繁杂;软件结构简单。适用于按键数量较少的场合8.1.2 独立式按键接口电路应用独立式按键接口电路应用1.按键直接与I/O口连接【例8.2】结构如图8.4所示,其特点是每个按键单独占用一根I/O线,每个按键工作不会影响其他I/O口线的状态。多用于所需按键不多的场合,可采用JNB或JB来查询哪一个按键按下,并转向相应的功能处理程序。JNBP1.0,B1;如P1.0键按下
3、,则跳到B1图8.4独立式按键JNBP1.1,B2;如P1.1键按下,则跳到B2JNBP1.2,B3JNBP1.3,B4JNBP1.4,B5JNBP1.5,B6JNBP1.6,B7JNBP1.7,B8图8.4独立式按键8.1.3 用独立式按键控制灯移动用独立式按键控制灯移动【例8.3】如图8.5所示电路,用4个独立式按键开关组成独立式按键,要求按下K1,灯依次左移;按下K2,灯依次右移;按下K3,使右边4个灯与左边4个灯交替闪烁;按下K4,使灯闪烁。图8.5 独立式按键控制电路图8。6 程序流程图程序见书程序见书8.2 矩阵式键盘矩阵式键盘8.2.1 矩阵式键盘矩阵式键盘在键盘中按键数量较多时
4、,为了减少在键盘中按键数量较多时,为了减少I/O口口的占用,通常将按键排列成矩阵形式,如的占用,通常将按键排列成矩阵形式,如图图8.7所示。所示。图8.7 矩阵式键盘矩阵式键盘的按键识别方法:矩阵式键盘的按键识别方法:确定矩阵确定矩阵式键盘上有无按键被按下的式键盘上有无按键被按下的“行扫描法行扫描法”。行扫描法又称为逐行(或列)扫描查询法,是一种最常用的按键识别方法,按键识别过程如下。1)判断键盘中有无键按下将全部行线Y0-Y3置低电平,然后检测列线的状态。2)判断闭合键所在的位置在确认有键按下后,即可进入确定具体闭合键的过程。8.2.2 用矩阵式键盘应用用矩阵式键盘应用【例8.4】图8.5所
5、示。80C51单片机的P1口用作键盘I/O口,键盘的列线接到P1口的低4位,键盘的行线接到P1口的高4位。列线P1.0-P1.3分别接有4个上拉电阻到正电源+5V,并把列线P1.0-P1.3设置为输入线,行线P1.4-P.17设置为输出线。4根行线和4根列线形成16个相交点。图8.6键盘扫描程序流程图方法:1.检测当前是否有键被按下。2.去除键抖动。3.若有键被按下,应识别出是哪一个键闭合。方法是对键盘的行线进行扫描。8.3 LED显示器显示器显示器接口是实现单片机信息输出的重要电路。用户的程序、数据、命令等相关信息的表示都需要通过显示装置显示,才能直观的知道输入的正确与否。目前在单片机应用中
6、,常用的有LED显示器和LCD显示器两大类,显示方式有静态显示和动态显示两种,8.3.1 LED显示器结构与原理显示器结构与原理用LED数码数码管显示器来显示各种数字或符号。由于它具有显示清晰、亮度高、使用电压低、寿命长的特点,因此使用非常广泛。LED数码管的主要特点如下数码管的主要特点如下:(1)能在低电压、小电流条件下驱动发光,能与CMOS、ITL电路兼容。(2)发光响应时间极短(0.1s),高频特性好,单色性好,亮度高。(3)体积小,重量轻,抗冲击性能好。(4)寿命长,使用寿命在10万小时以上,甚至可达100万小时。成本低。因此它被广泛用作数字仪器仪表、数控装置、计算机的数显器件。共阳极
7、LED共阴极LED如何将显示数转换为显示字段码将显示数转换为显示字段码呢?转换过程需分两步进行。从显示数中分离出显示的每一位数字,通用的方法是将显示数除以十进制的权。例显示数238,除以100,分离出百位显示数字2;再除以10,分离出十位显示数字3;余数3为个位显示数字。将分离出的显示数字转换为显示字段码,通常方法是查表。8.3.2 用用4位开关控制位开关控制LED显示器显示器【例8.5】P3作为输入端口接有1组8个DIP拨动开关,开关的另一端接地。P0作为输出端口接有1位LED显示器。用DIP开关中的低4位作二进制的输入,控制输出端数码管显示器的显示。电路原理图如图8.8所示。程序流程图如图
8、8.9所示。图8.8 DIP开关输入电路图图8.9 程序流程图8.3.3 用矩阵式键盘控制用矩阵式键盘控制LED显示器显示器【例8.6】如图8.10所示的电路,使用44矩阵式键盘,共有16个按键,通过扫描方法控制显示器输出0F十六进制数。图8.10 矩阵式键盘控制LED显示器电路在使用按键数量较多的场合下,可以将按键开关按矩阵式排列组成矩阵式键盘。在单片机P3端口接有44矩阵式键盘,矩阵式键盘由4条行线和4条列线所组成,16个按键设置在行、列线交叉点上。当扫描开始时,首先将行设置低电平,在判断有键按下后,读入列状态。如果列状态出现并非全部为1状态,这时0状态的列与行相交的键就是被按下的键。使用
9、矩阵式键盘时,通过不断对键盘进行扫描的办法来确定是否有键被按下。一旦按下不同的键号,显示器就会显示出相应的数。对于按键的抖动,通过调用延时子程序这种软件方法来消除。图8.11 程序流程图8.3.4 静态显示电路静态显示电路在静态显示方式下,每一位显示器的字段需要一个8位I/O口控制,而且该I/O口须有锁存功能,相应的驱动电路能够锁存数据并使显示器显示稳定的显示相应的信息直至CPU刷新。N位显示器就要N个8位。静态显示连接电路的特点为编程较简单,但占用I/O口线多,一般适用于显示位数较少的场合。【例8.7】并行扩展静态显示电路。3位LED静态显示电路如图8.12所示,编制显示子程序,显示数(25
10、5)存在内RAM30H中。图图8.12 3位位LED静态显示电路静态显示电路芯片74377为带有输出允许控制的8D触发器。芯片介绍芯片介绍74377并行扩展8位I/O口,P0输出8位字段码,P2.5,P2.6,P2.7分别片选百、十、个位74377,控制显示。8.3.5 交通路口读秒计时显示器交通路口读秒计时显示器【例8.8】交通路口读秒计时显示器,2位LED显示器要求能显示060S。硬件电路如图8.13所示,采用静态扫描方式。8.13 交通路口读秒计时显示器电路芯片芯片7447介绍介绍七段LED数码显示器的输入信号应该是要显示数字的七段码,而一般习惯上将要显示的数字直接以8421BCD码的形
11、式由单片机输出。这时就需要一个转换器件,她将单片机输出的8421BCD码转换成七段码,然后送给七段LED数码显示器。7447就是这样一种器件,它的全称是4线七段译码器/驱动器,其输入是4位8421BCD码,输出是七段码。用80C51的P1.0P1.3经7447控制个位的LED显示器,P1.4P1.7经7447控制十位的LED显示器。做交通路口读秒显示器时也可以不使用7447,而是将数字09的七段码以表格的形式存放在RAM单元中,然后通过查表指令实现从8421BCD码到七段码的转换。8.3.6 动态显示电路动态显示电路为了实现LED显示器的动态扫描,除了要给显示器提供段码(字形编码)的输入之外,
12、还要对显示器加位的控制(控制LED显示器亮灭),这就是通常所说的位控位控和段控段控。段位段位的连接方式为将显示各位的所有相同字段线连在一起,共8段,由一个8位I/O口控制,而每一位的公共端(共阳或共阴COM)由另一个I/O口控制,这种连接就是位控位控连接方式。在动态显示即单片机定时对显示器扫描。此时,显示器件分时工作,每次只能有一个器件显示。即在这一瞬间,只有一位在显示,其他几位暗。同样,在下一瞬间,单独显示下一位,这样依次循环扫描,轮流显示,由于人的视觉滞留效应,人们看到的是多位同时稳定显示。动态显示方式编程较复杂,CPU要定时扫描刷新显示,占用CPU,只要单片机不执行显示程序,显示就立即停
13、止。使用元件少,电路较简单,硬件成本低,如图8.14所示,只有1个段码端口但是有4个位码端口。【例8.9】如图8.14是一个共阴型8位动态显示电路,试编制循环扫描(10次)显示子程序,已知显示字段码存在以30H(低位)为首址的8字节内RAM中。8.14 共阴极8位动态显示电路8.4 8255可编程外围接口芯片可编程外围接口芯片从前面学习中知道,80C51在系统扩展时,P0口,P2口常被用作地址线,P0又被兼做数据线,P3口被专用线占用,只有P1口可以用作I/O接口,但是只有一个8位I/O接口往往是不够的,故I/O接口也需要扩展,本节重点介绍I/O接口扩展方法及应用实例。I/O接口一般有二种扩展
14、方法:总线扩展法,串行总线扩展法,串行口扩展法。口扩展法。总线扩展又可分为简单I/0接口扩展和可编程I/O接口扩展。简单I/O接口扩展常用芯片有TTL、CMOS锁存器、三态门,如74系列的373、244、273、367等,可编程芯片有8255、8155等。8.4.1 8255芯片介绍芯片介绍8255是Intel公司生产的一种可编程芯片,8255合理设置,应用灵活,可与MCS-51单片机系统总线直接接口。1.8255内部结构及引脚功能图8.15 8255引脚与内部结构图2.8255的控制字8255是一个可编程器件,其工作方式由软件来选择,类似于单片机内部的定时/计数器及串行通信端口等的工作方式选
15、择。8255有两种控制字,方式选择控制字和端口PC置位复位控制字,这两种控制字都写入8255的控制寄存器中。8255的控制字格式中最高位D7是特征位。D7=1是方式选择控制字,D7=0是PC口置位/复位控制字。1)方式选择控制字2)PC口按位置位口按位置位/复位控制字复位控制字3.8255扩展电路及地址设置(1)8255地址口确定图8.18 80C51扩展一片8255电路(2)8255初始化使用8255芯片时,首先要对它初始化。所谓初始化,是对8255的3个端口的工作方式预先设置。设置控制字经控制口写入。4.8255的工作方式8255有三种可通过程序来选择的基本工作方式:方式0基本输入输出方式
16、;方式1选通输入输出方式;方式2双向传送方式(仅用于PA口)。工作方式的选择由方式控制字决定。8.4.2 利用利用8255 实现简单输入输出应用实现简单输入输出应用 【例8.10】试设计一个80C51单片机与并行接口芯片8255的接口电路。端口A接一组指示灯,显示的内容由A口输出至指示灯;端口B接一组开关,将开关的内容由B口输入,并将此开关状态通过A口由指示灯显示出来。8255的A口、B口、C口和控制字的地址分别为7F00H、7F01H、7F02H和7F03H。图8.19 80C51单片机与8255的接口电路1.使使8只只LED循环点亮循环点亮源程序如下:源程序如下:D8255 EQU 7F0
17、3HH ;8255 状态状态/命令口地址命令口地址D8255A EQU 7F00H ;8255 PA 口地址口地址D8255B EQU 7F01H ;8255 PB 口地址口地址D8255C EQU 7F02H ;8255 PC 口地址口地址 ORG 0000H LJMP START ORG 0100HSTART:MOV SP,#60H LCALL DELAY ;延时延时 MOV DPTR,#D8255 MOV A,#82H ;置置8255状态状态 ;方式方式0,PA,PC口输出,口输出,PB口输入口输入 MOVX DPTR,A MOV A,#7FH MOV DPTR,#D8255AROTAT
18、E:MOVX DPTR,A ;点亮点亮LED RL A ;循环右移循环右移 LCALL DELAY ;延时延时 SJMP ROTATEDELAY:MOV R0,#0H ;延时子程序延时子程序DELAY1:MOV R1,#0H DJNZ R1,$DJNZ R0,DELAY1 RET END2.开关的状态在对应开关的状态在对应LED上显示出来。上显示出来。源程序如下:源程序如下:D8255 EQU 7F03H ;8255 状态状态/命令口地址命令口地址D8255A EQU 7F00H ;8255 PA 口地址口地址D8255B EQU 7F01H ;8255 PB 口地址口地址D8255C EQU
19、 7F02H ;8255 PC 口地址口地址 ORG 0000H LJMP START ORG 0100HSTART:LCALL DELAY ;延时延时 MOV DPTR,#D8255 MOV A,#82H ;置置8255状态状态 ;方式方式0,PA,PC口输出,口输出,PB口输入口输入 MOVX DPTR,AROTATE:MOV DPTR,#D8255B MOVX A,DPTR ;读开关状态读开关状态 MOV DPTR,#D8255A MOVX DPTR,A ;点亮对应的点亮对应的LED SJMP ROTATEDELAY:MOV R0,#0H ;延时子程序延时子程序DELAY1:MOV R1
20、,#0H DJNZ R1,$DJNZ R0,DELAY1 RET END8.5 模数转换接口模数转换接口由于单片机只能对数字信号进行处理。而在测控领域中,很多时候需要对模拟量进行采集、处理,这些模拟量涉及到温度、速度、压力、电流、电压等信号。所有常常需要把检测到的连续变化的模拟信号转换成数字量,以便单片机进行加工和处理,这便需要用到模/数转换器件,其具有数字量输出,并和单片机接口方便,还具有体积小、功能强、误差小、功耗低、可靠性高等优点,因此得到广泛应用。这种转换过程称为A/D转换,完成这种转换的器件称为A/D转换器。8.5.1 A/D转换器转换器 数据采集是将模拟信号源输出的模拟信号转换成数
21、字信号,并送入单片机中保存和进行处理的过程。常用的模/数转换接口芯片有ADC0809(8位),ADC0804(10位),AD574(12位)。在此介绍A/DC0809芯片的使用。1.A/D转换器的主要性能指标转换器的主要性能指标1)分辨率分辨率表示输出数字量变化一个相邻数码所需输入模拟电压的变化量。2)量化误差3)转换精度:A/D转换精度指出了一个实际A/D转换在量化值上与理想A/D转换器进行模/数转换的差值,可以用两个方式来表示:绝对精度:用最低位(LSB)的倍数表示,如1/2LSB等。用绝对精度除以满量程值的百分数来表示。4)转换时间与转换速率转换时间为完成一次A/D转换所需要的时间,转换
22、速度是转换时间的倒数2.A/D转换器的分类按其转换原理,可分为逐次近式,双积分式和V/F转换式1)逐次逼近式逐次逼近式A/D属直接式A/D转换,转换精度高,转换速度快,是目前应用最为广泛的A/D转换,缺点是抗干扰能力较差,比如8位ADD809,12位的AD574等。2)双积分式双积分式是一种间接A/D转换器,其优点是抗干扰能力强,转换精度高,缺点是转换时间长,速度较慢。比如31/2位14433,41/2位71353)V/F转换式V/F转换式是将模拟电压信号转换成频率信号可以代替A/D转换,转换精度高,抗干扰能力强。比如:AD650,LM331等8.5.2 ADC0809 8位位A/D转换器转换
23、器ADC0809是逐次逼近式A/D转换器,8位,28引脚,双列直插式,最快的转换速度为100s,图8.20所示为内部逻辑结构图。它由8路模拟开关,8位A/D转换器,三态输出锁存器以及地址锁存器译玛器等组成。8.5.3 ADC0809应用应用【例8.11】如图8.21所示为例,将IN0IN7通道的模拟量各采样一次,结果放入40H47H单元中,下面分别用查询和中断二种方式实现图图8.21 ADC0809与与80C51的连接的连接(1)查询方式程序清单如下:ORG0000HSTART:MOVR0,#47H;;采样数据存放首址MOVDPTR,#7FFFH;IN7通道地址MOVR2,#08H;模拟量通道
24、道数CLREX0LOOP:MOVXR1,A;启动A/D转换 MOVR3,#20HDELY:DJNZR3,DELY;等待EOC信号变低 SETBP3.2POLL:JBP3.2,POLL;查询转换是否结束 MOVX A,DPTR;读取转换结果 MOV R0,A;存放结果 DECR0 DECDPL;DPTR减1,指向下个通道 DJNZR2,LOOP;8通道未完,则采集下一个通道SJMP$END在上述程序中,有一段延时程序,其目的是A/D启动后,需等待一段时间后EOC信号才变低(2)中断方式程序清单如下:ORG0000HSTART:AJMPMAINORG0003HAJMPEXINT0MAIN:MOV
25、R0,#47H;采样数据存放地址MOVDPTR,#7FFFH;IN7通道地址MOVR2,#08H;模拟量通道数MOVXDPTR,A;启动A/D转换SETBIT0;外部中断0为边沿触发方式SETBEX0;允许外部中断0中断SETBEA;开放CPU中断SJMP$EXINT0:PUSHPSW;保护现场CLRRS0CLRRS1MOVXA,DPTR;读取转换结果MOVR0,A;存放结果DECR0DECDPLDJNZR2,NEXT;8通道未完,则采集下一通道CLREX0;采集完毕,则停止中断SJMPDONENEXT:MOVXDPTR,A;启动下一通道A/D转换DONE:POPPSWRETIEND8.6 数
26、模转换接口数模转换接口 在控制系统中,需要将单片机的控制信号转换位期望的电压或电流等模拟信号。这就要用数模转换接口电路。D/A转换器在精度、转换速度、可靠性、方便性等方面都日趋成熟,很好的满足了各种测控系统的需求,且其特有的数字接口可以很方便的和单片机相连,便于控制。8.6.1 D/A转换器转换器D/A转换器进行的是数字量和模拟量之间的转换,也称为模数转换,实际上是单片机的一个输出设备。常见的D/A转换器有8位和12位。此外还有F/V转换器。D/A转换器的主要性能指标:1)分辨率2)线性度3)精度4)建立时间5)失调误差8.6.2.DAC0832 8位位D/A转换器转换器1.DAC0832介绍
27、DAC0832是最为常见的8位D/A转换器图8.22 DAC0832结构框图2.DAC0832的引脚介绍3.DAC0832工作方式 DAC0832利用1、2、ILE、XFER控制信号可以构成三种不同的工作方式。(1)直通方式1=2=0时,数据可以从输入端经两个寄存器直接进入D/A转换器。(2)单缓冲方式两个寄存器之一始终处于直通,即1=0或2=0,另一个寄存器处于受控状态。(3)双缓冲方式两个寄存器均处于受控状态。这种工作方式适合于多模拟信号同时输出的应用场合。4.单缓冲方式的接口与应用所谓单缓冲方式就是使DAC0832的两个输入寄存器中有一个(多位DAC寄存器)处于直通方式,而另一个处于受控
28、锁存方式。单缓冲方式连接如图8.24所示。8.6.3.单缓冲方式实现锯齿波电压发生器单缓冲方式实现锯齿波电压发生器【例8.12】简易波形发生器在一些控制应用中,需要有一个线性增长的信号来控制检测过程、移动记录笔或移动电子束等。对此可通过在DAC0832的输出端接运算放大器,由运算放大器产生不同的波形来实现,其电路连接图如图8.25所示图8.25中的DAC0832工作于单缓冲方式,其中输入寄存器受控,而DAC寄存器直通。由于DAC0832DE/CS端接80C51单片机的P2.7引脚,故外扩的输入寄存器地址为7FFFH,要求产生锯齿波(如图8。26所示)、方波、梯形波。1)锯齿波的产生:只要单片机
29、从输出数字量0开始,逐次加1到255,然后再从0开始,如此重复DAC0832即可输出锯齿波。1)输出连续锯齿波源程序如下:ORG 0000HAJMPMAINORG 0100HMAIN:MOV DPTR,#7FFFH ;指向0832口地址LOOP2:MOV A,#00H ;取下限值 LOOP1:MOVX DPTR,A ;启动D/A转换输出,INC A ;累加器内容加1 CJNE A,#255,LOOP1;循环255次,形成锯齿波的上升沿AJMP LOOP2;连续输出波形 END2)方波的产生:只要单片机连续255次输出数字量0,然后再连续255次输出数字量255,如此重复DAC0832即可输出方
30、波。源程序如下:ORG0000HAJMPMAINORG0100HMAIN:MOVDPTR,#7FFFH;指向0832口地址MOVR7,#255;循环次数LOOP1:MOVA,#00H;置方波低电平LOOP1:MOVXDPTR,A;启动D/A转换输出,DJNZR7,LOOP1;循环255次,形成方波的低电平MOVR7,#255;重置循环次数LOOP2:MOVA,#255;置方波高电平MOVXDPTR,A;启动D/A转换输出DJNZR7,LOOP2;循环255次,形成方波的高电平MOVR7,#255;重置循环次数AJMPLOOP1;连续输出波形END8.6.4 双缓冲方式双缓冲方式D/A接口设计接
31、口设计在多路D/A转换的情况下,若要求同步转换输出,必须采用双缓冲方式。DAC0832采用双缓冲方式时,数字量的输入锁存和D/A转换输出是分两步进行的。(1)CPU分时向各路D/A转换器输入要转换的数字量并锁存在各自的输入寄存器中。(2)CPU对所有的D/A转换器发出控制信号,使各路输入寄存器中的数据进入DAC寄存器,实现同步转换输出。图8.27为两片DAC0832与8031的双缓冲方式连接电路,能实现两路同步输出。实现两路D/A同步输出的子程序如下:LOOP1:MOVDPTR,#0DFFFH;送ADC0832(1)输入锁存器地址 MOVA,#data1;data1送0832(1)输入锁存器 MOVXDPTR,A MOVDPTR,#0BFFFH;送ADC0832(2)输入锁存器地址 MOVA,#data2;data2送0832(2)输入锁存器 MOVXDPTR,A MOVDPTR,#7FFFH;送两路DAC寄存器地址 MOVXDPTR,A;两路数据同步启动D/A转换RET