1、人机接口 键盘接口 显示器接口 模拟量输入/输出接口 D/A转换接口 A/D转换接口 通信接口,第 章 单 片 机 接口技术,本章内容,Single Chip Microcomputer,PC机除了主机以外还需要哪些部分呢?,单片机电路有时候也需要键盘、显示等外设。,7.1 键盘接口,按键的特点及输入原理 独立式按键 矩阵式按键,按键的特点及输入原理,按键的分类:触点式:机械;无触点式:电气 键输入原理:通过按键的接通与断开,产生两种相反的逻辑状态低电平“0”与高电平“1”。 键功能的实现:对于一组键或一个键盘,需通过接口电路与单片机相连。可采用查询或中断方式测试有无键按下,再确定是哪一个键按
2、下,将该键号送入累加器ACC,然后判断是数字键还是功能键,若是数字键,则将键号对应的数字送入相关输入缓冲区;若是功能键,则通过跳转指令转入执行该键的功能程序,执行完后再返回主程序。,键盘接口需要解决的问题,是否有键按下,按键识别:,键抖动及消除:,机械按键抖动时间在5ms10ms之间,硬件方案双稳态去抖电路,软件方案延时10ms20ms后再次判断,消除方法:,求键号,独立式按键,接口电路:,特点:一线一键,按键识别(编程)简单;但占用较多口线,适合8键以下使用。,例1:用P1口检测三个按键的状态并完成相应的功能,解:,资源分配: 用P1口的低3位检测3个按键的输入,为1则表示按键没有按下,为0
3、则表示相应按键被按下。,流程图:,ORG 0000H KB: MOV P1,#0FFHMOV A,P1CPL AANL A,#07HJZ KBLCALL D10MSMOV A,P1CPL AANL A,#07HJZ KBCJNE A,#01H,KB01LCALL PGM1SJMP KB KB01:CJNE A,#02H,KB02LCALL PGM2SJMP KB KB02:CJNE A,#04H,KBLCALL PGM3SJMP KBEND,编程:按三个按键中的任一键都对应一个特定功能。,矩阵式按键,关键:如何判断键号?,接口电路:,特点:按键识别应采用扫描法或线路反转法编程较为复杂,节省口资
4、源,8键以上使用,键盘扫描子程序一般包括以下内容:1.判别有无键按下;2.扫描获取闭合键的行、列值;3.用计算法或查表法得到键值;4.判断闭合键释放否,如没释放则继续等待;5.保存闭合键号。,按键识别扫描法 、反转法,流程:当第0列处于低电平时,逐行查找是否有行线变低,若有,则第0列与该行的交叉点按键按下;若无,则表示第0列无键按下,再让下一列处在低电平,依此循环,这种方式称为键盘扫描。键号=行首键号(0、4、8、12)+列号(0、1、2、3),扫描法原理:在某一时刻只让一条列线处于低电平,其余列线均处于高电平,则当这一列有键按下时,该键所在的行电平将会由高电平变为低电平,可判定该列相应的行有
5、键按下。,例2:键盘扫描程序,SERCH: MOV R2,#0EFH MOV R3,#00HLINE0: MOV A,R2 MOV P1,A MOV A,P1 JB ACC.3,LINE1MOV A,#00HAJMP TRYK LINE1: JB ACC.2,LINE2MOV A,#04HAJMP TRYK LINE2: JB ACC.1,LINE3MOV A,#08H,AJMP TRYK LINE3: JB ACC.0,LINE4 MOV A,#0CH AJMP TRYK LINE4: INC R3 MOV A,R2 RL A JNB ACC.0,BACK MOV R2,A AJMP LIN
6、E0 TRYK: ADD A,R3 BACK: RET,基本原理是:将行线接一个并行口,先让它工作在输出方式,将列线出接到一个并行口,先让它工作在输入方式。编程使CPU通过输出端口往各行线全部送低电平,然后读入列线的值。如果有某一个键被按下,则必有一条列线为低电平。然后进行线反转,通过编程对两个并行端口进行方式设置,使连接行线的端口工作在输入方式,并将刚才读到的列线值通过所连接的并行口再输出到列线,然后读取行线的值,那么闭合键所对应的行线必为低电平,这样当一个键被按下时,就可以读到一对唯一的列值和行值。,线反转法识别按键,第一步:行线并行口输出全 0,读列线;列线有 0,表示有键按下,则进行第
7、二步。 第二步:反转。列线并行口输出,读行线。 第三步: 列码与行码的组合即可作为码。 特点:接行线和列线的并行口必须既能输出又能输入;行线和列线仅需输出、输入各1次, 键识别速度快。,定时扫描方式,定时扫描方式就是每隔一段时间对键盘扫描一次,它利用单片机内部的定时器产生一定时间(例如10 ms)的定时,当定时时间到就产生定时器溢出中断。CPU响应中断后对键盘进行扫描,并在有键按下时识别出该键,再执行该键的功能程序。,中断扫描方式,为提高CPU工作效率,可采用中断扫描工作方式。其工作过程如下:当无键按下时,CPU处理自己的工作,当有键按下时,产生中断请求,CPU转去执行键盘扫描子程序,并识别键
8、号。,7.2 显示器接口技术,LED的结构和显示原理 静态显示方式 动态显示方式 动态显示的实现,动态显示方式,问题引入:,LED显示器如何显示出指定数字/字符?,g f com a b,a,f g b,e d c,dp,e d com c db,(a) 管脚图,ace,b,d,f,g,dp,com,地,com,+5V,ace,b,d,f,g,dp,(b) 共阴极,(c) 共阳级,七段LED数码管结构,上图中的ag七个笔划(段)及小数点dp均为发光二极管。数码管显示器根据公共端的连接方式,可以分为共阴极数码管(将所有发光二极管的阴极连在一起)和共阳极数码管(将所有发光二极管的阳极连在一起)。单
9、片机系统扩展LED数码管时多用共阳LED。共阳数码管每个段笔画是用低电平(“0”)点亮的,要求驱动功率很小;而共阴数码管段笔画是用高电平(“0”)点亮的,要求驱动功率较大。通常每个段笔画要串一个数百欧姆的降压电阻。,LED的驱动接口 LED工作时需要一定的工作电流,才能正常发光。单个LED实际上是一个压降为1.21.5V的发光二极管,流过LED的电流大小决定了它的发光强度,R为限流电阻。适当减小限流电阻可以增加LED的工作电流,使LED的显示效果更好。但工作电流过大,会对驱动器件、LED造成损害。通常每个段笔画要串一个数百欧姆的降压电阻。下图为单个LED的驱动接口电路。,表7.1 数码管字型编
10、码表,续表,单个LED数码管的显示,8255A,PA0 PA1 PA2 PA3 PA4 PA5 PA6 PA7,同 相 驱 动 电 路,a b c d e f g h,com,+5V,对一般数字电路而言,其灌电流(输出低电平)的能力要大于拉电流(输出高电平)的能力,共阳数码管,送0点亮,送0点亮,静态显示方式,连接所有LED的位选均共同连接到+VCC或GND,每个LED的8根段选线分别连接一个8位并行I/O口,从该I/O口送出相应的字型码显示字型。特点原理简单;显示亮度强,无闪烁;占用I/O资源较多。,静态LED数码显示电路(共阳极),七段译码器,七段译码器,七段译码器,七段译码器,七段译码器
11、,Vcc,BCD码 0000 0001 0010 0011 0100,返回,动态显示方式,连接所有LED的段选线共同连接在一起共用一个 8位I/O口,而每个LED的位选分别由一根相应的I/O口线控制。因此必须采用动态扫描显示方式,每一个时刻只选通其中一个LED,同时在段选口送出该位LED的字型码。,动态显示基本原理,电路的接法决定了必须采用逐位扫描显示方式。 即从段选口送出某位LED的字型码,然后选通该位LED, 并保持一段延时时间。然后选通下一位,直到所有位扫 描完。,要注意的两个问题:,1.字型码通常通过查表指令MOVC来求得.,2.换位显示时通常要加一段程序使所有的LED全灭.,多个LE
12、D数码管的显示,8,锁存 同相 驱动,锁存 反相 驱动,七段码端口,位选通码端口,8,共阳 数码管,控制,控制,数据,送0时点亮相应段, 七段码:1111 1001B 将显示数码“1”,送1时选通相应数码管, 选通码:0000 0001B 将选中最左边的数码管,1,段控制端口电路,D0 D1 D2 D3 D4 D5 D6 D7,阳极,位0,a b c d e f g h,位1,位2,段码 D0D7,段控制,锁 存 / 同 相 驱 动,segport, -IOW,段控制端口作用,控制哪些段点亮,决定具体显示什么数码 段控制端口送出七段码到数码管段控制端 此端口为8个数码管的共用端口,段控制:Di
13、0,相应段点亮,通过位、段控制端口的共同作用才能确定哪个数码管显示什么数码,位控制端口电路,D7 D6 D5 D4 D3 D2 D1 D0,共阳极,数位0,数位1,数位2,位码 D0D7,位控制,锁 存 / 反 相 驱 动,bitport, -IOW,共阳极,共阳极,位控制端口作用,位控制端口控制点亮哪位数码管(其余数码管暂不点亮) 当位控制端口的控制码某位为0时,经反相驱动,便在相应数码管的公共阳极上加了高电平,该数码管将点亮并显示数据,位控制:Di0,相应数位的数码管可以发光,动态LED数码显示电路(共阴极),七 段 译 码 器,B C D 码,动态扫描时序图,返回,动态扫描时序图,00H
14、,01H,02H,03H,04H,万位,仟位,佰位,十位,个位,位扫描 万位 仟位 佰位 十位 个位 BCD码,返回上一页,返回,单片机与动态显示电路的接口(一),MCS-51 P0P1,驱 动 电 路,采用软件进行七段译码可以省去译码器,但要使用7-8条口线输出字形码,单片机与动态显示电路的接口(二),MCS-51P0.7 P0.6 P0.5 P0.4P0.3 P0.2 P0.1,七 段 译 码 器,3-8 译 码 器,使用“BCD/七段译码器”和“位扫描译码器”可以有效的节省单片机的口线,单片机与动态显示电路的接口(三),8155/8255 AD0.7 PA.7AD0.0 PA.0/CS
15、PB.5PB.0,驱 动 电 路,TO 51的P0口,可以使用8155/8255并行口扩展芯片组成的动态扫描电路,采用动态显示方式比较节省I/O口,硬件电路也较静态显示方式简单,但其亮度不如静态显示方式,而且在显示位数较多时,CPU要依次扫描,占用CPU较多的时间。用8051系列单片机构建数码管动态显示系统时,常采用8155可编程I/O扩展接口,其典型应用如图所示。图中,数码管采用共阴极LED,8155的A口线经过8路驱动电路后接至数码管的各段。当A口线输出“1”时,驱动数码管发光。8155的C口线经过6路驱动电路后接至数码管的公共端。当C口线输出“0”时,选通相应位的数码管发光。,8155构
16、成的六位数码管动态显示电路,单片机在嵌入式系统中的应用示意图,MCS-51,D/A 转换器,控制 执行机构,被控实体,A/D 转换器,多 路 开 关,传感器1,传感器2,传感器n,控制 执行机构,温度、压力、流量等信号,模拟 信号,模拟 信号,数字信号,返回,7.3 D/A转换器接口,D/A转换器的作用典型芯片DAC0832DAC0832的应用,D/A转换器的作用,将数字量转换为模拟量,以便操纵控制对象。,D/A转换器的主要指标转换速度:一般几十微秒到几百微秒,快速的可达1微秒。转换精度(分辨率):决定于输入数字量的位数,位数越多,精度越高。,典型芯片-DAC0832介绍,DAC0832是一个
17、八位D/A转换器,转换时间1微秒,结构如下:,DAC0832功能分析,DI0-DI7:转换数据输入 CS:片选信号,因此,DAC0832可以有三种工作形式:直通、单级锁存、两级锁存。,单缓冲方式的接口(1),一个处于直通方式,另一个处于受控的锁存方式,“同时”做何解释?,单缓冲方式的接口(2),两个输入寄存器同时受控的方式,单缓冲方式的应用 产生锯齿波,假定采用接口(1)方式,即输入寄存器受控,而DAC寄存器直通,输入寄存器地址为E000H,产生锯齿波。,源程序清单如下:ORG 0200HMOV DPTR,#0E000H ;指向输入寄存器地址MOV A,#00H ;转换初值 WW: MOVX
18、DPTR,A ;WR1有效,启动D/A转换INC A NOP ;延时NOPAJMP WW,1/28,2/28,3/28,254/28,255/28,0,产生的锯齿波的过程,D/A转换产生的锯齿波,用同样的方法也可以产生三角波、矩形波、梯形波。,若将A的初值改为FF INC改为DEC?,ORG 0200HMOV DPTR,#0E000H ;指向输入寄存器地址MOV A,#0FFH ;转换初值 WW: MOVX DPTR,A ;WR1有效,启动D/A转换A NOP ;延时NOPAJMP WW,DEC,INC,两个锁存器都接成受控锁存方式。,双缓冲方式的接口和应用,对一个数字量的转换,需两步完成,程
19、序如下: MOV DPTR,#00E0H MOVX DPTR,A MOV DPTR,#00C0H MOVX DPTR,A,输入寄存器地址:00E0H DAC寄存器地址:00C0H,你知道它与第二种单缓冲方式的区别吗?,双缓冲方式应用举例双缓冲方式用于多路D/A转换系统,以实现多路模拟信号同步输出的目的。例如使用单片机控制X-Y绘图仪。X-Y绘图仪由X、Y两个方向的步进电机驱动,其中一个电机控制绘图笔沿X方向运动,另一个电机控制绘图笔沿Y方向运动,从而绘出图形。因此,对X-Y绘图仪的控制有两点基本要求:一是需要两路D/A转换器分别给X通道和Y通道提供模拟信号,二是两路模拟量要同步输出。,两路模拟
20、量输出是为了使绘图笔能沿X-Y轴作平面运动,而模拟量同步输出则是为了使绘制的曲线光滑,否则绘制出的曲线就是台阶状的,绘出的曲线如图所示。为此就要使用两片DAC0832,并采用双缓冲方式连接,如图7.31示。图7.31电路中,以译码法产生地址,两片DAC0832共占据三个单元地址,其中两个输入寄存器各占一个地址,而两个DAC寄存器则合用一个地址。编程时,先用一条传送指令把X坐标数据送到X向转换器的输入寄存器;再用一条传送指令把Y坐标数据送到Y向转换器的输入寄存器;最后再用一条传送指令同时打开两个转换器的DAC寄存器,进行数据转换,即可实现X、Y两个方向坐标量的同步输出。,图7.30 单片机控制X
21、-Y绘图仪 (a) 同步输出;(b) 先X后Y;(c) 先Y后X,(a) b) (c),图7.31 控制X-Y绘图仪的双片DAC 0832 接口,假定X方向DAC 0832输入寄存器地址为F0H,Y方向DAC 0832输入寄存器地址为F1H,两个DAC寄存器公用地址为F2H;X坐标数据存于DATA单元中,Y坐标数据存于DATA+1单元中,则绘图仪的驱动程序为MOV R1,#DATA ;X坐标数据单元地址MOV R0,#0F0H ;X向输入寄存器地址MOV A,R1 ;X坐标数据送A,MOVX R0,A ;X坐标数据送输入寄存器 INC R1 ;指向Y坐标数据单元地址 INC R0 ;指向Y向输
22、入寄存器地址 MOV A,R1 ;Y坐标数据送A MOVX R0,A ;Y坐标数据送输入寄存器 INC R0 ;指向两个DAC寄存器地址 MOVX R0,A ;X、Y转换数据同步输出,7.4 A/D转换器接口,A/D转换器的作用典型芯片ADC0809ADC0809的应用,A/D转换器的作用,将模拟量转换为数字量,以便计算机接收处理,传感器,单片机,A/D 转换器,D7: D0,数字量输出,模拟量 输入VX,基准电压VR,A/D转换器概述A/D转换器用于实现模拟量数字量的转换,按转换原理可分为4种,即:计数式A/D转换器、双积分式A/D转换器、逐次逼近式A/D转换器和并行式A/D转换器。目前最常
23、用的是双积分式A/D转换器和逐次逼近式A/D转换器。双积分式A/D转换器的主要优点是转换精度高,抗干扰性能好,价格便宜。其缺点是转换速度较慢,因此,这种转换器主要用于速度要求不高的场合。,另一种常用的A/D转换器是逐次逼近式的,逐次逼近式A/D转换器是一种速度较快,精度较高的转换器,其转换时间大约在几s到几百s之间。通常使用的逐次逼近式典型A/D转换器芯片有:(1)ADC0801ADC0805型8位MOS型A/D转换器(美国国家半导体公司产品)。(2)ADC0808 / 0809型8位MOS型A/D转换器。(3) ADC0816 / 0817。这类产品除输入通道数增加至16个以外,其它性能与A
24、DC0808 /0809型基本相同。,典型芯片ADC0809介绍,ADC0809是一个8位8通道的AD转换器。,逐次比较式A/D转换器ADC0809,八 路 模 拟 开 关,地址 锁存,IN0 26 IN1 27 IN2 28 IN3 1 IN4 2 IN5 3 IN6 4 IN7 5addA 25 addB 24 addC 23ALE 22,+ -,比较器,VX,VS,控制电路,逐次比较寄存器SAR,数状开关,256 电阻网络,三 态 输 出 寄 存 器,Vcc GND VR(+) VR()11 13 12 15,EOC 7 D7 21 D6 20 D5 19 D4 18 D3 17 D2
25、16 D1 15 D0 14,START 6 CLOCK 10,ADC0809芯片的引脚,IN0IN7: 八路模拟电压输入端; ALE: 地址锁存控制信号; addA addC: 地址输入线; START: 启动脉冲输入端,其中上升沿清SAR,下降沿启动ADC工作; EOC:转换结束标志。此线输出高电平时表明转换完成。 D7D0:数字量输出线。 OE:输出三态控制线。输入高电平时,引脚D7D0上输出转换后的8位 数字量。 CLOCK:时钟输入端。为ADC提供640KH的逐次比较脉冲时序。 Vref(+)、 Vref(-):参考电压输入,为电阻网络提供电压。 Vref(+)、 Vref(-)可以
26、与Vcc和GND 连接。 Vcc、GND:电源和地。,简化的两位电阻阶梯和树状开关,1,0,1,1,0,0,2.5V,1.5V,0.5V,0.0V,1/2Vref,VST,D1,D0,由左边的两组树状电子开关,右边四只分压电阻构成; 树状开关D1、D0由SAR(逐次比较寄存器)对应控制; 树状开关D1、D0的状态与DAC输出VST的关系见表; 实际电路为8位,既256个分压电阻,形成256个标准电压供树状开关使用,返回,MCS-51与ADC0809的接口电路,/RD /WRP0口MCS-51 ALE/INT1,OESTART ALE ADC0809 addC addB addCD7D0 CLO
27、CKEOC,地 址 锁 存 器,地 址 译 码 器,+,+,P0.2,P0.1,P0.0,分频器,F0H,使用MOVX Ri,A 指令启动ADC,A中为通道代码,Ri=F0H(/WR) 使用MOVX A,Ri 指令来读ADC的数据,Ri=F0H,(/RD) 使用中断方式为ADC0809服务。,ADC0809功能分析,CLK:时钟信号,可由单片机ALE信号分频得到。,转换有以下几步:,ALE信号上升沿有效,锁存地址并选中相应通道。 ST信号有效,下降沿启动转换。A/D转换期间ST为低电平。 EOC信号输出高电平,表示转换结束。 OE信号有效,允许输出转换结果。,ADC0809和单片机的连接,通道
28、选择表,1. 首先分析各个通道的地址。(IN0到IN7的地址为0000H到0007H),编程应用中断方式,编程:可采用中断、查询两种方式。,中断方式:ORG 0000H ;主程序入口地址AJMP MAIN ;跳转主程序ORG OO13H ;中断入口地址AJMP INT1 ;跳转中断服务程序MAIN:SETB IT1 ;边沿触发SETB EA ;开中断SETB EX1 ;允许中断MOV DPTR,#0007H ;指向0809 IN7通道地址,MOVX DPTR,A ;启动A/D转换SJMP $ ;等待中断 INT1: MOVX A,DPTR ;读A/D转换结果MOV B,A ;存数RETI ;返回,查询方式:ORG 0000H ;主程序入口地址AJMP MAIN ;跳转主程序ORG 1000H ;中断入口地址 MAIN: MOV DPTR,#0007H ;指向0809 IN7通道地址MOVX DPTR,A ;启动A/D转换L1: JB P3.3 L1 ;查询MOVX A,DPTR ;读A/D转换结果MOV B,A ;存数SJMP $,