第九章应用系统配置及接口技术_第1页
第九章应用系统配置及接口技术_第2页
第九章应用系统配置及接口技术_第3页
第九章应用系统配置及接口技术_第4页
第九章应用系统配置及接口技术_第5页
已阅读5页,还剩83页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

第九章应用系统配置及接口技术9.1并行I/O口的扩展

9.1.1简单并行I/O口的扩展

9.1.28155带RAM和定时器/计数器的可编程并行接口芯片9.2人-机通道配置与接口技术

9.2.1键盘接口及处理程序

9.2.2LED显示器接口及显示程序

9.2.3串行口控制的键盘/LED显示器接口电路9.3A/D转换器及接口技术9.4D/A转换器及接口技术

9.1

并行I/O口的扩展9.1.1简单并行I/O口的扩展

在稍微大的系统,单片机片的并行口便不够用,需要扩展。所谓简单扩展,就是使用通用的74系列的TTL或4000系列的CMOS芯片扩展。

9.1.1简单I/O接口的扩展方法

常用74LS244作输入接口芯片,起缓冲作用;用74LS273作输出接口芯片,起锁存作用。1G,2G为H时,Y为高阻;1G,2G为L时,Y=A

扩展的输入输出口地址均为:P2.7P2.6P2.5P2.4P2.3P2.2P2.1P2.0P0.7P0.6P0.5P0.4P0.3P0.2P0.1P0.0ⅹ

ⅹ0ⅹ

除了P2.0以外均取1,则扩展的输入输出口地址写成16进制数均为:

FEFFH

上面电路的功能是:按下某键,对应的LED发光。其程序为:

MOVDPTR,#0FEFFHLP:MOVXA,@DPTRMOVX@DPTR,ASJMPLP9.1.2扩展8155可编程外围并行接口芯片

关于Intel的8155/8156:是一多功能的可编程外围接口芯片,内部资源有256B的RAM,2个8位、1个6位的I/O口和1个14位的“减1”计数器。40脚双列直插封装。1.8155的结构与引脚2.8155的RAM和I/O口地址

其地址按片外RAM统一编址(16位)。

CE、IO/M接单片机的高8位地址。一、I/O口(即片内寄存器)地址

CE=0、IO/M=1,低3位选择寄存器二、256BRAM的地址

CE=0、,由高8位地址控制;低8位选择RAM的256个存储单元。38155的寄存器(6个)一、命令寄存器

地址:*****000B输入输出PC3~PC5出工作控制二、状态寄存器

1、地址:*****000B

2、格式及各位的意义三、PA寄存器

是PA口引脚PA0~PA7的映射地址:*****001B四、PB寄存器

是PB口引脚PB0~PB7的映射地址:*****010B五、PC寄存器

是PC口引脚PC0~PC7的映射地址:*****011B六、定时器/计数器寄存器

是一14位计数器,对应有两个寄存器,最高两位设定输出波形。1、地址:两个寄存器的地址分别为:*****100B2、寄存器格式*****101BM2M1的意义(决定输出波形):48155芯片的使用一、作片外256BRAM用

低8位地址范围为:00H~FFH二、作扩展I/O口用

PA口、PB口、PC口注意:工作方式、地址三、作定时器扩展用

一般先写计数常数,再写命令字。58031与8155的接口及简单编程一、8031与8155的连接方法

二、8155的基本操作程序段

1、对8155中的RAM进行操作例1(1)向8155RAM中的5FH单元写入数据32H;(2)从8155RAM中的98H单元读取数据。程序段如下:(1)写数据:

MOVDPTR,#7E5FHMOVA,#32HMOVX@DPTR,A(2)读数据:

MOVDPTR,#7E98HMOVXA,@DPTR2、对8155中的I/O口和定时器进行操作

例2设置8155,使用I/O口和定时器:使A口为基本输入方式,B口为基本输出方式;定时器作方波发生器,对输入的脉冲进行24分频。试编程实现之。

思路:先对定时器赋初值和设定输出波形,向定时器/计数器寄存器中写;再设定A、B口的工作方式和传输方向,并启动定时器工作,向命令寄存器中写。程序段如下:(1)对定时器赋初值和设定输出波形:

定时器/计数器寄存器地址:7F04H、7F05HMOVDPTR,#7F04HMOVA,#24MOVX@DPTR,AINCDPTRMOVA,#01000000BMOVX@DPTR,A(2)设定A、B口的工作方式并启动定时器工作:

命令寄存器地址:7F00HMOVDPTR,#7F00HMOVA,#11000010BMOVX@DPTR,A

9.2人-机通道配置与接口技术

9.2.1键盘接口及处理程序

9.2.2LED显示器接口及显示程序

9.2.3串行口控制的键盘/LED显示器接口电路9.2.1键盘接口及处理程序键盘可以分为独立连接式和行列式(矩阵式)两类,每一类按其译码方法又都可分为编码及非编码两种类型.1)独立式非编码键盘接口及处理程序检查键盘是否有键被按下,消除按键抖动。硬件电路消除抖动或软件消除抖动。抖动时间<10ms开关动作时间>100ms“1”“0”<10ms前沿抖动后沿抖动&I/O接口&+5v+5v消除抖动电路开关单片机(1)独立式键盘电路:独立式键盘电路:每个按键单独占有一根I/O接口引线。优点:电路简单;缺点:当键数较多时,要占用较多的I/O线.程序P/231键盘接口形式:P1.0P1.1P1.7+5v

下列程序为省略了软件去抖动措施的程序Start:mova,#0ffhmovP1,aMova,P1PL1:JNBACC.0,P0fJNBACC.1,P1FJNBACC.2,P2FJNBACC.3,P3FJNBACC.4,P4FJNBACC.5,P5FJNBACC.5,P6FJNBACC.6,P7FLJMPSTART

P0F:LJMPPROM0P1F:LJMPPROM1

……….P7F:LJMPPROM7PROM0:….LJMPSTARTPROM1:…..LJMPSTART…..PROM7:….LJMPSTART

例9-1:设计一个有4个独立式按键盘接口,并编写键扫描程序KEY:MOVP1,#0FFHMOVA,P1CPLAANLA,#0FFHJZKEYLCALLD-10MSMOVA,P1CPLAANLA,#0FHJZKEYMOVB,AMOVA,P1CPLAANLA,#0FHKEY1:JNZKEY1LCALLD-10MSMOVA,BJBACC.0,PKEY1JBACC.1,PKEY2JBACC.2,PKEY3JBACC.3,PKEY4EKEY:RETPKEY1:LCALLK1RETPKEY2:LCALLK2RETPKEY3:LCALLK3RETPKEY4:LCALLK4RETD-10MS:MOVR7,#10HDS1:MOVR6,#0FFHDS2:DJNZR6,DS2DJNZR7,DS1RET(2)矩阵式键盘:

0

1+5v

C0C1R0R1键盘I/O接口

非编码式键盘识别按键的方法有两种:一是行扫描法,二是线反转法。1)行扫描法通过行线发出低电平信号,如果该行线所连接的键没有按下的话,则列线所接的端口得到的是全“1”信号,如果有键按下的话,则得到非全“1”信号。

为了防止双键或多键同时按下,往往从第0行一直扫描到最后1行,若只发现1个闭合键,则为有效键,否则全部作废。找到闭合键后,读入相应的键值,再转至相应的键处理程序。

2)线反转法线反转法也是识别闭合键的一种常用方法,该法比行扫描速度快,但在硬件上要求行线与列线外接上拉电阻。先将行线作为输出线,列线作为输入线,行线输出全“0”信号,读入列线的值,然后将行线和列线的输入输出关系互换,并且将刚才读到的列线值从列线所接的端口输出,再读取行线的输入值。那么在闭合键所在的行线上值必为0。这样,当一个键被按下时,必定可读到一对唯一的行列值。

键盘处理程序任务:1.键输入:检查键盘是否有键被按下,消除按键抖动。确定被按键的键号,获取键号。硬件电路消除抖动或软件消除抖动。键译码:键号为键盘位置码,根据键号查表得出被按键的键值。键值:数字键0~9;字符键0AH~0FH;功能键10H~。键码=行首键号+列号(键号必须依次是从左至右书写)或键码=列首键号+行号(键号必须依次是从上至下书写)3.键处理:

根据键值转移到不同程序段。若键值属于数字、字符键,则调用显示数字和字符的子程序。若键值属于功能键,则进行多分支转移,执行各个功能程序段。延时等待10ms

仍有按键信号?Y

有按键信号?NYN键盘处理

按键释放?NY二、键盘接口方法:1、利用单片机本身的并行口;2、利用单片机本身的串行口;3、利用通用接口芯片8155、8255等;4、利用专用接口芯片8279等。三、键盘接口的控制方式:1、随机方式:每当CPU空闲时执行键盘扫描程序。2、中断方式:键的按下引起中断后,单片机对键盘进行扫描。3、定时方式:单片机定时地对键盘进行扫描。按键处理程序:延时消抖键扫描求键号延时等待键译码求键值修改显示缓冲区跳转各功能程序有按键输入?确有按键?按键释放?是数字键?YYYNNNYN1、使用8155作键盘接口:接口应用:P2.7=0,P2.0=1:A口地址为:7F01H;C口地址为:7F03H。扫描法:列线输出,行线输入。列线逐列输出0,某行有按键,行线输入就为0;若无按键,行线输入全部为1。0167891415键码=行首键号+列号(键号必须依次是从左至右书写)

或键码=列首键号+行号(键号必须依次是从上至下书写)2.键盘接口电路图采用8155的键盘接口电路判定有无键闭合的子程序:MOV DPTR,#7F01H MOV A,#00H ;A口送00HMOVX @DPTR,AINC DPTRINC DPTR ;建立C口地址MOVX A,@DPTR ;读C口CPL A

;A取反,无键按下则全“0”ANL A,#0FH ;屏蔽A高半字节(C口只4位)RET 执行KS1子程序的结果是:有闭合键则(A)≠0;无闭合键则(A)=

0。CPLA;负逻辑不直观,常采取行列线加反相器或软件求反的方法把键盘改成正逻辑。KS1:

键盘扫描子程序如下:(硬件线路如图,8155的A口、B口、C口和控制口地址分别为7F01H、7F02H、7F03H,设8155A已在主程序中初始化。已设定为A口方式0输出,C口的低4位方式0输入。)KEY1:ACALLKS1 ;调用判断有无键按下子程序

JNZLK1 ;有键按下时,(A)≠0转消抖延时KEY2:ACALLTM6ms AJMPKEY1 ;无键按下返回LK1:ACALLTM12ms;调12ms延时子程序

ACALLKS1 ;查有无键按下,若有则真有键按下

JNZLK2 ;键(A)≠0逐列扫描

AJMPKEY2 ;不是真有键按下,返回LK2:MOVR2,#0FEH ;初始列扫描字(0列)送入R2 MOVR4,#00H ;初始列(0列)号送入R4LK4:MOVDPTR,#7F01H;DPTR指向8155PA口

MOVA,R2 ;列扫描字送至8155PA口

MOVX@DPTR,A INCDPTR ;DPTR指向8155PC口

INCDPTR MOVXA,@DPTR;从8155PC口读入行状态

JB ACC.0,LONE;查第0行无键按下,转查第1行

MOVA,#00H ;第0行有键按下,行首键码#00H→A AJMPLKP ;转求键码LONE:JBACC.1,LTWO;查第1行无键按下,转查第2行

MOVA,#08H ;第1行有键按下,行首键码#08H→A AJMPLKP ;转求键码LTWO:JBACC.2,LTHR ;查第2行无键按下,转查第3行

MOVA,#10H;第2行有键按下,行首键码#10H→A AJMPLKP ;转求键码LTHR:JBACC.3,NEXT ;查第3行无键按下,转该查下一列

MOVA,#18H ;第3行有键按下,行首键码#18H→ALKP:ADDA,R4 ;求键码,键码=行首键码+列号

PUSHACC ;键码进栈保护LK3:ACALLKS1 ;等待键释放

JNZLK3 ;键未释放,等待

POPACC ;键释放,键码→A RET ;键扫描结束,出口状态(A)=键码NEXT:INC R4 ;准备扫描下一列,列号加1 MOV A,R2 ;取列扫描字送累加器A JNB ACC.7,KEND;判断8列扫描否?扫描完返回

RL A ;扫描字左移一位,变为下一列扫描字

MOV R2,A ;扫描字送入R2保存

AJMPLK4 ;转下一列扫描KEND:AJMPKEY1KS1:MOV DPTR,#7F01H;DPTR指向8155PA口

MOV A,#00H ;全扫描字→A MOVX@DPTR,A;全扫描字送往8155PA口

INC DPTR ;DPTR指向8155PC口

INC DPTR MOVXA,@DPTR ;读入PC口行状态

CPL A ;变正逻辑,以高电平表示有键按下

ANL A,#0FH ;屏蔽高4位,只保留低4位行线值

RET ;出口状态:(A)≠0时有键按下TM12ms:MOVR7,#18H;延时12ms子程序TM: MOVR6,#0FFHTM6:DJNZR6,TM6 DJNZR7,TM RETTM6ms:MOVR7,#0CH ;延时6ms子程序TM2:MOVR6,#0FFHTM62:DJNZR6,TM6 DJNZR7,TM RET2、使用8279作键盘接口:P207图7.36P2.7=0时:A0=P2.0=1:命令口地址为:7FFFH;A0=P2.0=0:数据口地址为:7EFFH。(程序略)键码=行首键号+列号(键号必须依次是从左至右书写)0134567874LS156为双2-4译码器/分配器3、使用中断方式作键盘接口:

当有键按下时,INT1为低,向CPU发出中断申请,在中断服务程序中除完成键识别、键功能处理外,仍须有清除键抖动等功能。0481215913键码=列首键号+行号(键号必须依次是从上至下书写)236710111415

BUFFEQU30HKEYADR:MOVA,SBUFCJNEA,#0FH,KYARD1AJMPDIGPROKYARD1:JCDIGPROKEYTBL:MOVDPTR,#JMPTBLCLRCSUBBA,#10HRLAJMP@A+DPTRJMPTBL:AJMPAAAAJMPBBBAJMPCCCAJMPDDD

…….

下面的程序是用行扫描法进行键扫描的程序,其中KS1为判键闭合的子程序。有键闭合时(A)=0。DIR为数码显示器扫描显示子程序,执行一遍的时间约6ms。程序执行后,若键闭合,键值存入A中,键值的计算公式是:键值=行号×4+列号;若无键闭合,则A中存入标志FFH。KEY1:LCALLKS1;检查有无闭合键?JNZLK1;(A)=0,有键闭合则转

LJMPLK8;无闭合键则返回LK1:LCALLDIR;延时12msLCALLDIR;清抖

LCALLKS1;再检查有键闭合否?JNZLK2;有键闭合则转

LJMPLK8;无键闭合则返回LK2:MOVR3,#00H;行号初值送R3MOVR2,#FEH;行扫描初值送R2LK3:MOVDPTR,#0101H;指向8155口AMOVA,R2;行扫描值送AMOVX@DOTR,A;扫描1行

INCDPTRINCDPTR;指向8155口CMOVXA,@DPTR;读入列值

ANLA,#0FH;保留低4位

MOVR4,A;暂存列值

CJNZA,#0FH,LK4;列值非全“1”则转

MOVA,R2;行扫描值送AJNBACC.7,LK8;扫至最后一行则转RLA;未扫完,则移至下一行MOVR2,A;行值存入R2中INCR3;行号加1SJMPLK3;转至扫描下一行LK4:MOVA,R3;行号送入AADDA,R3;行号×2MOVR5,AADDA,R5;行号×4MOVR5,A;存入R5中

MOVA,R4;列值送ALK5:RRCA;右移一位

JNCLK6;该位为0则转

INCR5;列号加1SJMPLK5;列号未判完则继续LK6:MOV20H,R5;存键值LK7:LCALLDIR;扫描一遍显示器

LCALLKS1;发扫描信号

JNZLK7;键未释放等待

LCALLDIR;键已释放

LCALLDIR;延时12ms,清抖

MOVA,20H;键值存入A中KND:RETLK8:MOVA,#FFH;无键标志FFH存入A中

RETKS1:MOVDPTR,#0101H;判键子程序

MOVA,#00H;全扫描信号

MOVX@DPTR,A;发全扫描信号

INCDPTRINCDPTR;指向8155口CMOVXA,@DPTR;读入列值

ANLA,#0FH;保留低4位

ORLA,#F0H;高4位取“1”CPLA ;取反,无键按下则全“0”RET9.2.2LED显示器接口及显示程序1.LED显示器结构与原理图7段LED数码显示器各段码位的对应关系如下:表十六进制数及空白与P的显示段码

LED显示器有静态显示和动态显示两种方式(1)静态显示方式编程容易,管理也简单,但占用I/O口线资源较多.(2)动态显示简化电路,因人眼的视觉暂留时间为0.1s(100ms),所以每位显示的间隔不必超过20ms,并保持延时一段时间,以造成视觉暂留效果,给人看上去每个数码管总在亮,这种方式称为软件扫描显示.2.LED显示器接口电路图6位动态显示器接口图显示子程序流程图程序清单如下:DIR:MOVR0,#79H;显示缓冲区首址送R0 MOVR3,#01H;使显示器最右边位亮

MOVA,R3LD0:MOVDPTR,#0101H;扫描值送PA口

MOVX@DPTR,A INCDPTR;指向PB口

MOVA,@R0;取显示数据

ADDA,#12H;加上偏移量

MOVXA,@A+PC;取出字形

MOVX@DPTR,A;送出显示ACALLDL1 ;延时

INCR0 ;缓冲区地址加1MOVA,R3;JBACC.5,LD1 ;扫到第6个显示位了吗?

RLA ;没有,R3左环移一位,扫描下一个显示位

MOVR3,AAJMPLD0LD1:RETDSEG:DB3FH,06H,5BH,4FH,66H,6DH;显示段码表DSEG1:DB7DH,07H,7FH,6FH,77H,7CHDSEG2:DB39H,5EH,79H,71H,73H,3EHDSEG3:DB31H,61H,1CH,23H,40H,03HDSEG4:DB18H,00H,00H,00HDL1:MOVR7,#02H[DW];延时子程序DL:MOVR6,#0FFHDL6:DJNZR6,DL6DJNZR7,DLRET

9.2.3串行口控制的键盘/LED显示器接口电路

见P/2457.4.3键盘显示器接口82791.8279的组成及引脚

8279芯片有40条引脚,由单一+5V电源供电。它主要由以下几部分组成:(1)I/O控制和数据缓冲器;(2)控制和定时寄存器及定时控制部分;(3)扫描计数器;(4)回送缓冲器与键盘去抖动控制电路;(5)FIFO(先进后出)寄存器和状态电路;(6)显示器地址寄存器及显示RAM。图8279的引脚图2.8279的接口电路与应用图9.318031与8279接口连接框图

9.3A/D转换器及接口技术

9.4D/A转换器及接口技术

9.3A/D转换器接口

1.概述

A/D转换器用以实现模拟量向数字量的转换。按转换原理可分为4种:计数式、双积分式、逐次逼近式以及并行式A/D转换器。逐次逼近式A/D转换器是一种速度较快,精度较高的转换器,其转换时间大约在几微秒到几百微秒之间。常用的这种芯片有:(1)ADC0801~ADC0805型8位MOS型A/D转换器;(2)ADC0808/0809型8位MOS型A/D转换器;(3)ADC0816/0817型8位MOS型A/D转换器;量化间隔和量化误差是A/D转换器的主要技术指标之一。量化间隔由下式计算:

其中n为A/D转换器的位数。量化误差有两种表示方法:一种是绝对量化误差;另一种是相对量化误差。绝对量化误差相对量化误差逐次比较型A/D转换器原理图:

2.典型A/D转换器芯片ADC0809简介ADC0809是采用CMOS工艺制造的双列直插式单片8位A/D转换器。分辨率8位,精度7位,带8个模拟量输入通道,有通道地址译码锁存器,输出带三态数据锁存器。启动信号为脉冲启动方式,最大可调节误差为±1LSB,ADC0809内部没有时钟电路,故CLK时钟需由外部输入,fclk允许范围为500kHz~1MHz,典型值为640kHz。每通道的转换需66~73个时钟脉冲,大约100~110μs。工作温度范围为-40℃~+85℃。功耗为15mW,输入电压范围为0~5V,单一+5V电源供电。它可以直接与Z80、8085、8080、8031等CPU相连,也可以独立使用。图ADC0809的内部结构图9.33ADC0809引脚图表9.9地址码与输入通道的对应关系图9.34ADC0809时序图3.ADC0809与8031的中断方式接口电路图9.36ADC0809中断方式硬件接口

这里将ADC0809作为一个外部扩展的并行I/O口,直接由8031的P2.0和WR脉冲进行启动。因而其端口地址为0FEFFH。用中断方式读取转换结果的数字量,模拟量输入通道选择端ADDA、ADDB、ADDC分别与8031的P0.0、P0.1、P0.2直接相连,CLK由8031的ALE提供。启动数据转换:例如选中0通道C、B、A为000,

MOVDPTR,#0FEFFH;端口地址送DPTRMOVA,#00H;选择0通道输入

MOVX@DPTR,A;启动输入转换数据的传送:MOVDPTR,#0FEF8H;端口地址送DPTRMOVXA,@DPTR;读取IN0的转换结果4.“转换数据传送”的时机(1)定时传送方式(AD0809转换时间为128US)(2)查询方式(3)中断方式

(1)定时传送方式用定时传送方式,对8个通道的模拟量逐个进行A/D转换.MAIN:MOVR1,#dataMOVDPTR,#7FF8HMOVR7,#08HMOVR2,#00HLOOP:MOVA,R2MOVX@DPTR,ALCALLDELAYMOVXA,@DPTRMOV@R1,AINCDPTRINCR1INCR2DJNZR7,LOOPRETDELAY:…..;延时128us

MAIN:MOVR1,#dataMOVDPTR,#7FF8HMOVR7,#08HMOVR2,#00HLOOP:MOVA,R2MOVX@DPTR,AHERE:JNBP1.0,$MOVXA,@DPTRMOV@R1,AINCDPTRINCR1INCR2DJNZR7,LOOPRET

(2)查询方式(EOC与单片机的P1.0连接)ORG0000HAJMPINADC

ORG1000HINADC:SETBIT1;INT1设为边沿触发

SETBEA;开中断INT1SETBEX1

MOVDPTR,#0FEF8H;端口地址送DPTRMOVA,#00H;选择0通道输入MOVX@DPTR,A;启动输入

HERE:SJMPHERE(3)中断方式

ORG0013HAJMPPINT1PINT1:…MOVDPTR,#0FEF8H;端口地址送DPTRMOVXA,@DPTR;读取IN0的转换结果

MOV50H,A;存入50H单元

MOVA,#00HMOV

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论