片机应用接口技术.ppt

上传人:za****8 文档编号:14276429 上传时间:2020-07-15 格式:PPT 页数:67 大小:1.28MB
返回 下载 相关 举报
片机应用接口技术.ppt_第1页
第1页 / 共67页
片机应用接口技术.ppt_第2页
第2页 / 共67页
片机应用接口技术.ppt_第3页
第3页 / 共67页
点击查看更多>>
资源描述
第8章 单片机应用接口技术,8.1 显示器接口 在MCS-51系列单片机应用系统中,显示器是人机对话的主要输出器件,它显示系统运行中用户关心的实时数据。常见的显示器件有LED(发光二极管显示器)器件和LCD(液晶显示器)器件两大类。点阵显示屏通过编程能够显示各种图形、汉字,目前也被广泛应用于各种单片机应用系统中。,8.1.1 LED显示器接口,1LED 数码显示器的结构 LED 数码显示器是一种由LED发光二极管组合显示字符的显示器件。它使用了8 个LED发光二极管,其中7个用于显示字符,1个用于显示小数点,故通常称之为8 段发光二极管数码显示器。其内部结构如图8-1所示。,LED 数码显示器有两种连接方法: (1) 共阴极接法。把发光二极管的阴极连在一起构成公共阴极,使用时公共阴极接地,每个发光二极管的阳极通过电阻与输入端相连。 (2) 共阳极接法。把发光二极管的阳极连在一起构成公共阳极,使用时公共阳极接5V,每个发光二极管的阴极通过电阻与输入端相连。 为了显示字符,要为LED 显示器提供显示段码(或称字形代码),组成一个“8”字形字符的7 段,再加上1个小数点位,共计8段,因此提供给LED 显示器的显示段码为1 个字节。各段码位的对应关系如表8-1所示。,2.LED显示接口 在单片机系统中,LED显示一般采用静态显示和动态扫描两种驱动方式。静态驱动方式的工作原理是每一个LED显示器用一个I/O端口驱动、亮度大、耗电也大、占用的I/O端口多,但显示位多时一般很小采用。 动态扫面方式的工作原理是将多个显示器的段码同名端连在一起,位码分别控制,利用视角暂留效应,分别进行显示。只要保证显示的频率,看起来的效果和一直显示是一样的。电路上一般用一个I/O端口驱动段码,用另一个I/O口实现位控。因此动态显示占用的I/O口少,耗电也少。,(1)静态显示接口 目前静态显示接口一般采用如下三种方式 1)采用并行输出接口的静态显示接口 采用的并行输出接口可以是TTL的锁存器(如74LS273、74LS373),也可采用大规模集成并行输出接口(如8155、8255A等)。图8-2中8255A的PA、PB、PC口各驱动1个8段数码管,实现静态接口。,2)采用硬件译码器件构成静态显示接口 在CMOS和TTL器件里,都有专门用于驱动显示的器件。CMOS类型的器件有CD4511、CD14547、CD14495、CM14513等。TTL类型器件有74LS47、74LS247、74LS48等,其中74LS47和74LS247可驱动共阳数码管,其余只可驱动共阴数码管。这些驱动器中大部分CMOS驱动器均带有锁存器,而TTL器件均不带锁存器,在设计时应在其前面加上锁存电路。图8-3是CD4511构成的静态显示电路。图中要显示的数据送P1.0P1.2,利用74LS138译码信号使能CD4511,通过CD4511译码并锁存,从而实现静态显示的功能。,3)用串转并接口芯片构成静态显示接口 利用串转并接口芯片74LS164可以比较方便地实现多位静态显示(见图8-4)。图中4片74LS164依次级联,要显示的数据通过TXD端依次移入各片74LS164中,并锁存输出,从而实现4片LED静态显示。,设8031的串行口工作于方式0,要显示的数据存在DispBuf4中,则相应的显示程如下: Uchar code Shape10=0 xc0,0 xf9,0 xa4,0 xb0,0 x99 0 x92,0 x82,0 xf8,0 x80; void Disp164(void) uchari; for(i=0;i4;i+) SBUF= Shape DispBufi ; while(TI=0); TI=0; ,(2)动态显示接口 所谓动态显示是指一位一位地轮流点亮各个显示器。对于每一位显示器来说,每隔一段时间点亮一次。通常点亮时间为1mS左右,相隔时间为20mS。图8-5为8位共阴显示器和74LS273构成的动态显示接口。,图中74LS273-1的输出为段数据口,接显示器的各个段极,74LS273-2的输出为位扫描口,接LED的公共极。显示时,首先使74LS273-2的Q0为低电平,Q1Q7为高电平,则仅第一位显示器的公共阴极为低电平(被选通);同时74LS273-1输出第一个显示数据的段码,这时第一位显示器将显示出第一个显示数据。持续1ms左右后,使Q0为低电平,关闭第一个显示器,随后使Q1为低电平,选通第二位显示器,并由74LS273-1输出第二个显示数据,并持续1ms左右。用类似的方法依次选通第3,第4第8位即完 成一次循环显示。如果连续地循环便可在显示器上稳定地显示所需显示的内容。,设图中74LS273-1的地址为BFFFH、74LS273-2的地址为7FFFH Void Disp273(void) ucharI; for(i=0;i8;i+) *p=ShapeDispBufi; *q=Position; Position=1; Delay(1); *p=0 xff; ,#include Uchar code Shape10=0 xc0,0 xf9,0 xa4,0 xb0,0 x99, 0 x92,0 x82,0 xf8,0 x80; Uchar DispBuf8; uchar Position; Main() ucharxdata *p,*q; Position=0 xfe;p=0 xBFFF;q=0 x7fff; while(1) Disp273(); Position=0 xfe; ,(3)定时扫描显示程序 上述的动态扫描子程序用延时方法控制一位的显示时间,CPU的效率低下,使用定时器T0中断,定时扫描显示器,可以解决这个问题。方法如下: 用变量DispBuf指向显示缓冲区,用Position保存位扫描码,当它的某一位为0,对应的LED选通。 Position的初始值设为7EH,然后每扫描一次位扫描码码左移一位以便选通下一个LED,8个LED全显示完了,又设置其值为7EH。 设置一个显示1位子程序,其功能是将DispBuf指向的单元值显示在对应位上。显示完后,把下一个显示单元的值装入DispBuf,同时Position装入下一个位扫面码。 启动定时器,使定时器产生1ms定时,在定时中断中调用显示1位子程序。,Void Disp273(uchar xdata *p,uchar xdata *q, uchar In,uchar EnBit) *p=ShapeDispBufi; *q= EnBit; ,#include Uchar code Shape10=; Uchar DispBuf8; Uchar Position; Uchar DispSeq; Main() TMOD=0X01;TH0=0XFC;TL0=0X18; ET0=1;EA=1;TR0=1; Position=0 xfe; DispSeq=0; ,Void T0Isr(void) interrupt 1 using 1 TH0=0XFC;TL0=0X18; Disp273(uchar xdata *)0 xbfff,(uchar xdata *)0 x7fff, ShapeDispBufDispSeq ,Position); DispSeq+; Position=1; if( DispSeq=0 x07) Position=0XFE; DispSeq=0; ,8.2 键盘接口技术,键盘是一种常见的输入设备,通过它用户可以向计算机输入数据或命令。通常键盘可分为编码键盘和非编码键盘两种。通过硬件识别的键盘称编码键盘,通过软件识别的键盘称非编码键盘。非编码键盘有独立按键接口和矩阵式按键接口两种接口方式。,8.2.1独立式键盘接口设计,独立式键盘就是各按键相互独立,每个按键各接一根输入线,一根输入线上的按键工作状态不会影响其它输入线上的工作状态。因此,通过检测输入线的电平状态可以很容易判断哪个按键被按下了。这类键盘的接口方式可分为串行和并行两类。,1. 并行方式 按键的一端接地,另一端接上拉电阻后接输入端,当按键未按下时,由于上拉电阻的作用使输入端确保为高电平,当按键按下时,输入端与地短接而为低电平 除采用P1口作为输入口外,还可以用扩展I/O口构成并行式键盘接口电路,如用8255扩展I/O口,用74LS244扩展输入口等。,2. 串行接口方式 串行接口方式的独立式键盘如图8-13所示,图中键盘输入信息通过74LS165串行输入,具体读键程序如下:,uchar Key165(void) ucharKey; SCON=0 x10; Key=SBUF while(RI=0); RI=0; if(Key=0 xff) return(0 x08); else for(i=0;i8;i+) ,if(Key ,8.2.2矩阵式键盘接口设计,1矩阵式键盘原理在单片机系统中,若所需按键数量较多,可采用矩阵式键盘。矩阵式键盘一般采用行列式结构并按矩阵形式排列。图8-14示出44行列式键盘的基本结构。44表示有4根行线和4根列线,在每根行线和列线的交叉点上均分布1个单触点按键,共有16个按键。,矩阵式按键是通过扫描法实现键盘的识别。所谓行扫描法,就是通过行线发出低电平信号,如果该行线所连接的键没有按下的 话,则列线所连接的输出端口得到的是全“1”信号(如图8-14(a);如果有键按下的话,则得到的是非全“1”信号(如图8-14(b)。 然而对于机械开关结构的按键,由于机械触点的弹性及电压突跳等原因,往往在触点闭合或断开的瞬间会出现5ms10ms电压抖动(见图815)。为了保证CPU对键的闭合只作一次处理,必须消除抖动。消除抖动可采用硬件方法 图8-15 按键抖动示意图,消除抖动可采用硬件方法 图8-15 按键抖动示意图 (如用R-S触发器隔离)和软件方法(延时去抖)两种方法实现。为节省硬件,目前单片机系统一般采用软件方式消除抖动。,2矩阵式键盘程序设计方法 图8-16是利用74LS273组成的具有4x8键盘、8位显示器的接口电路,图中74LS244的输入为键盘行扫描线,74LS273的输出为列扫描线,键盘编程要点如下:,(1)判别键盘上有无键闭合 使74LS273的输出全为“0”, 读74LS244的输入D0-D3,若D0-D3为全“1”,则无键闭合,否则为有键闭合。 (2)消除抖动 当判别有键闭合时,延时10mS 后再判别键盘状态,若仍有键闭合,则认为键盘上有一个键处于稳定的闭合期,否则认为是键的抖动。 (3)确定闭合键的键号 方法是对键盘上的列线依次扫描,扫描的列线输出为0,其余的列线输出为1。这样74LS273的输出口分别为:,相应地顺序读取4位行线(74LS244的D0D3)的状态,若D0D3全为1,则输出为0的列线上没有键按下;否则该列有键闭合,由该列号和输入为0的行号就可确定是哪个键闭合。设0、1、2、3行的首键号分别为0、8、16、24,键盘的键号可按下列方式计算(结果见表8-6): 键号=行首键号+列号,(4)对键的一次闭合仅作一次处理,等待闭合键释放后再判断新的键盘输入。,3矩阵键盘程序编写 矩阵键盘程序编写主要是按上述四个步骤完成。 (1)判断有无键按下 Uchar KeyStart(uchar xdata *Rd,uchar xdata *Wr) uchar aa; *Wr=0 x00; aa=*Rd;aa=aa;aa ,(2)读键号 Bit RdKeyValue(uchar xdata *Rd,uchar xdata *Wr,uchar *KeyNo) uchar i,j; uchar Scan=0 xfe; for(j=0;j8;j+) *Wr=Scan;RdKey=*Rd;*KeyNo=0 x00;pressed=0; for (i=0;i4;i+) If(RdKey ,(2)完整的键盘程序。 Uchar xdata *p; uchar xdata *q; P=(uchar xdata *)0 xdfff; q=(uchar xdata *)0 xbfff;,uchar keyProcess() if( KeyStart(p ,q)=0) NoRealse=0;return(0) if(NoRelase=1) return(0); delay(10); if(KeyStart(p ,q)=0) NoRealse=0;return(0) if(RdKeyValue(p,q, ,8.3 A/D转换器接口,A/D转换器是用以实现模拟量向数字量转换的器件。按转换原理的不同A/D器可分为计数式、双积分式、逐次逼近式及并行式A/D转换器四种。逐次逼近式和双积分式A/D器件目前比较常用。逐次逼近式A/D转换器具有速度较快、精度较高等特点。双积分式A/D转换器具有转换精度高、抗干扰性能好、价格便宜等优点,但它的转换速度较慢。 量化间隔和量化误差是A/D转换器的主要技术指标之一。量化间隔可由下式求得: 其中n为A/D转换器的位数。,量化误差有两种表示方法:一种是绝对量化误差,另一种是相对量化误差。可分别由下式求得: 相对量化误差 绝对量化误差 =量化间隔/2=/2 除了量化误差外,A/D器件还有非线性度、转换数度、转换精度等指标。,8.3.2 A/D转换器芯片ADC0809,1ADC0809结构与原理 ADC0809是典型的8位8通道逐次逼近式A/D转换器,采用CMOS工艺制造。由单一的5V电源供电,片内带有锁存功能的8选1的模拟开关,其转换时间为100 s、转换误差为1/2LSB。图8-17 为ADC0809 的内部结构与引脚。,(1)引脚说明 1)IN7IN0:模拟量输入通道; 3)ALE:地址锁存信号; 4)START:转换启动信号,高电平有效; 5)D7D0:数据输出线; 6)OE:输出允许信号,高电平有效; 7)CLK:时钟信号,最高时钟频率为640kHz; 8)EOC:转换结束状态信号。上升沿后高电平有效; 9)Vcc:5V电源; 10)VREF(+VREF 、VREF):参考电压。,2)ADDA、ADDB、ADDC:模拟通道地址选择线、其通道选择见表8-8,表中A、B、C分别对应ADDA、ADDB、ADDC;,(2)工作过程 图8-18 为ADC0809 转换工作时序。其工作过程如下: ALE上升沿将ADDC、ADDB、ADDA 端选择的通道地址锁存到8位A/D 转换器的输入端。START 的下降沿启动8 位A/D 转换器进行A/D 转换。EOC 端在A/D 转换开始输出为低,转换结束后输出为高,该信号通常可作为中断申请信号。OE 为读出数据允许信号,高电平有效。,2. MCS-51单片机与ADC0809的接口 ADC0809与MCS-51单片机的一种常用连接方法如图8-19所示。电路连接主要涉及两个问题,一个是8路模拟信号的通道选择,另一个是A/D转换完成后转换数据的传送。,(1)8路模拟通道选择 ADC0809 的转换时钟可用单片机提供的ALE信号经分频器分频后得到。设单片机时钟频率为6MHz,则ALE 脚的输出频率为1MHz,再2分频后为500kHz,即可满足ADC0809 对时钟频率的要求。 图8-19中当P2.7=0时,单片机对ADC0809执行一次写操作就可以启动ADCO8O9。图中P0.0P0.2分别与ADDA,ADDB,ADDC相连,因此单片机对外部数据存储单元7FF0、7FF17FF8执行写操作,就分别启动了ADC0809的8个通道的转换。例如要启动IN0通道时,可采用如下两条指令: uchar xdata *p=0 x7ff0; *p=0 x#;,(2)转换数据的传送 A/D转换后得到的数据为数字量,这些数据应传送给单片机进行处理。数据传送的关键问题是如何确认A/D转换的完成,因为只有确认数据转换完成后才能进行传送。通常可采用下述3种方式。 1)延时方式 对于一种A/D转换器来说,转换时间作为一项技术指标是已知的和固定的。因此,单片机在启动ADC0809后,只要等待时间大于ADC0809 的转换时间就可以正确地读取A/D转换结果。,2)查询方式 ADC0809转换开始时EOC为低电平,转换结束后EOC变为高电平。因此单片机可以在启动ADC0809后,通过查询EOC的电平高低来判断是否转换结束。,3)中断方式 如果把表示转换结束的状态信号(EOC)作为中断请求信号,那么,便可以中断方式进行数据传送。要注意的是:ADC0809转换结束时EOC产生从低到高的跳变,而单片机采用外部边沿触发中断时,认为从高到低的跳变是一次中断请求;因此当采用中断方式时,一般在单片机的外部中断引脚(或)与EOC之间接入一个非门。 不管使用上述哪种方式,只要一旦确认转换结束,便可通过指令进行数据传送。所用的指令为MOVX读指令,仍以图819所示为例,则有对通道0的读取为: unsigned char AdBuf; unsigned char xdata *p=0 x7ff0; AdBuf=*p;,用延时或查询方式 unsigned char AdBuf,i; unsigned char *p=0 x7ff0; *p=0 x03;/启动通道0转换 for(i=0;i30;i+); /将上面语句换成查询P3.3是否为低电平,就是查询方 /式。但要注意 /while(P33=1); AdBuf=*p,用中断方式 /主程序如下: unsigned char xdata *p=0 x7ff0; unsigned char AdBuf; Main() IT1=1;/外部中断1,脉冲触发方式 EX1=1;/允许外部中断1 EA=1;/允许总中断 *p=0 x03;/启动通道0转换 while(1); ,外部中断1中断程序如下: Void Int1Isr(void) interrupt 2 AdBuf=*p; ,8.4 D/A转换器接口,8.4.1 D/A转换器概述,D/A转换器是将数字量转换成模拟量的器件。在D/A转换器中,每一个数字量都是二进制代码按位的组合,每一位数字代码都有一定的权,对应一定的模拟量。为了将数字量转换为模拟量,应将每一位都转换成相应的模拟量,然后求和即可得到与数字量成比例的模拟量。一般数模转换器都是按照这一原理设计的。 R2R 梯形网络是采用最多的D/A 转换器,其结构如图8-23所示。该图是一个8位并行A/D转换器,它由电阻网络、电子开关、基准电源(Er)和运放等部分组成。根据此图不难计算出运算放大器的输出电压Uo。,8.4.2 8位D/A 转换器DAC0832,1DAC0832结构与原理 DAC0832 是分辨率为8位的电流输出型D/A 转换器,它的片内带有两个输入数据寄存器,输出电流建立稳定时间为1 s。DAC0832 的引脚与结构框图如图8-24所示。,由图可知DAC0832 内部由“8 位输入锁存器”、 “8 位DAC寄存器”、 “8 位D/A 转换电路”三部分电路组成。“8 位输入锁存器”用于存放CPU 送来的数字量,由加以控制。“8 位DAC寄存器”用于存放待转换数字量,由控制。“8 位D/A 转换电路”由8位T形电阻网络和电子开关组成,电子开关受“8 位DAC 寄存器”控制输出。T 形电阻网络能输出和数字量成正比的模拟电流,因此DAC0832 通常需要外接I/V变化电路才能得到模拟输出电压。,引脚说明: 1)D7D0:数据量输入引脚; 2)CS:片选信号,输入,低电平有效; 3) :写信号1,输入,低电平有效; 4) :写信号2,输入,低电平有效; 5) : 参考电压,范围为10+10V; 6) 和 :电流输出引脚; 7) 和 :分别为寄存器的锁存端; 8) ILE:数据锁存允许信号,输入,高电平有效; 9) :数据传送控制信号,输入,低电平有效; 10) :反馈电阻引脚,片内集成的电阻为15k。 11)AGND,DGND:模拟地和数字地引脚。,2DAC0832 的工作方式 MCS-51单片机与DAC0832的接口有3种连接方式,即直通方式、单缓冲方式及双缓冲方式。直通方式不能直接与系统的数据总线相连,需另加锁存器,故较少应用。下面介绍单缓冲与双缓冲两种连接方式。,(1)单缓冲方式 单缓冲方式就是使DAC0832的两个输入寄存器中一个处于直通方式,而另一个处于受控锁存方式,当然也可使两个寄存器同时选通及锁存。,(a)所示的接口电路是把DAC寄存器接成常通状态;(b)是将输入寄存器接成常通状态;(c)是将两个寄存器接成同时选通和锁存。,(2)双缓冲方式 双缓冲方式,就是把两个锁存器都接成受控锁存方式。由于两个锁存器分别占据两个地址,因此在程序中需要使用两条传送指令,才能完成一个数字量的模拟转换。假设图8-26输入寄存器地址为7FFFH,DAC寄存器地址为BFFFH,则完成一次D/A转换的程序段应为: Unsigned char xdata *p; Unsigned char xdata *q;,Unsigned char DaValue; *p=DaValue; *q=DaValue;,3D/A转换应用举例 D/A转换器是计算机控制系统中常用的接口器件,它可以直接控制被控对象,例如控制伺服电动机或其它执行机构;它也可以很方便地产生各种输出波形,如矩形波、三角波、阶梯波、锯齿波、梯形波、正弦波及余弦波等。,图8-27是D/A输出的一种应用。图中,运算放大器A2的作用是把运算放大器A1的单极性输出变为双极性输出。,设VREF=5V,则: 当数字量=0时, Vb=-5V 当数字量=128时 Vb=0V 当数字量=256时 Vb=5V,【例8.1】 执行下面程序后,运放的输出端产生锯齿波,如图8-28 所示。 main() unsigned char DaVaue=0; unsigned char xdata *p=0 x7fff; while(1) *p=DaValue; DaValue+; ,【例8.2】 利用DAC0832 产生三角波,如图8-29 所示。,main() unsigned char i=0;bitStep=0; unsigned char xdata *p=0 x7fff; while(1) if(bit=0) *p=i; i+;if(i=0)bit=1;i=254 else *p=i; i-; if(i=0)bit=0;i=1 ,
展开阅读全文
相关资源
相关搜索

最新文档


当前位置:首页 > 图纸专区 > 课件教案


copyright@ 2023-2025  zhuangpeitu.com 装配图网版权所有   联系电话:18123376007

备案号:ICP2024067431-1 川公网安备51140202000466号


本站为文档C2C交易模式,即用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。装配图网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知装配图网,我们立即给予删除!