单片机的硬件结构第五章文档.docx

上传人:b****0 文档编号:8937633 上传时间:2023-05-16 格式:DOCX 页数:21 大小:282.22KB
下载 相关 举报
单片机的硬件结构第五章文档.docx_第1页
第1页 / 共21页
单片机的硬件结构第五章文档.docx_第2页
第2页 / 共21页
单片机的硬件结构第五章文档.docx_第3页
第3页 / 共21页
单片机的硬件结构第五章文档.docx_第4页
第4页 / 共21页
单片机的硬件结构第五章文档.docx_第5页
第5页 / 共21页
单片机的硬件结构第五章文档.docx_第6页
第6页 / 共21页
单片机的硬件结构第五章文档.docx_第7页
第7页 / 共21页
单片机的硬件结构第五章文档.docx_第8页
第8页 / 共21页
单片机的硬件结构第五章文档.docx_第9页
第9页 / 共21页
单片机的硬件结构第五章文档.docx_第10页
第10页 / 共21页
单片机的硬件结构第五章文档.docx_第11页
第11页 / 共21页
单片机的硬件结构第五章文档.docx_第12页
第12页 / 共21页
单片机的硬件结构第五章文档.docx_第13页
第13页 / 共21页
单片机的硬件结构第五章文档.docx_第14页
第14页 / 共21页
单片机的硬件结构第五章文档.docx_第15页
第15页 / 共21页
单片机的硬件结构第五章文档.docx_第16页
第16页 / 共21页
单片机的硬件结构第五章文档.docx_第17页
第17页 / 共21页
单片机的硬件结构第五章文档.docx_第18页
第18页 / 共21页
单片机的硬件结构第五章文档.docx_第19页
第19页 / 共21页
单片机的硬件结构第五章文档.docx_第20页
第20页 / 共21页
亲,该文档总共21页,到这儿已超出免费预览范围,如果喜欢就下载吧!
下载资源
资源描述

单片机的硬件结构第五章文档.docx

《单片机的硬件结构第五章文档.docx》由会员分享,可在线阅读,更多相关《单片机的硬件结构第五章文档.docx(21页珍藏版)》请在冰点文库上搜索。

单片机的硬件结构第五章文档.docx

单片机的硬件结构第五章文档

第五章 MCS-51单片机系统扩展技术

 

5.1外部存储器的扩展

 

5.1.1外部程序存储器的扩展

 

外部程序存储器的扩展原理及时序

 

2.EPROM扩展电路

 

2716有五种工作方式

 

2716与8031的连接图

 

由图可确定2716芯片的地址范围。

方法是A10~A0从全0开始,然后从最低位开始依次加1,最后变为全1,相当于211=2048个单元地址依次选通,称为字选。

即  

E2PROM 2864A的扩展

 

(1)   维持和读出方式:

2864A的维持和读出方式与普通EPROM完全相同。

(2)写入方式:

2864A提供了两种数据写入操作方式,字节写入和页面写入。

(3)数据查询方式:

 

 

2864A与8031的接口电路

 

6264的8KB地址范围不唯一(因为A14A13可为任意值),6000H~7FFFH是一种地址范围。

当向该片6000H单元写一个数据DATA时,可用如下指令:

    MOV  A, #DATA

      MOV  DPTA,#6000H

      MOVX    @DPTR,A

从7FFFH单元读一个数据时,可用如下指令:

      MOV   DPTR,#7FFFH

       MOVX  A,@DPTR

 

5.3输入/输出接口的扩展

 

5.3.18255A可编程并行I/O接口

8255A具有3个8位并行I/O口,称为PA口、PB口和PC口。

其中PC口又分为高4位和低4位,通过控制字设定可以选择三种工作方式:

①基本输入/输出;②选通输入/输出;③PA口为双向总线。

1.8255A的内部结构和引脚

8255A内部结构包括三个并行数据输入/输出端口,两个工作方式控制电路,一个读/写控制电路和8位总线缓冲器。

 

8255A内部结构和引脚

 

(1)端口A、B、C。

A口:

是一个8位数据输出锁存器/缓冲器和一个8位数据输入锁存器。

       B口:

是一个8位数据输出锁存器/缓冲器和一个8位数据输入缓冲器。

       C口:

是一个8位数据输出锁存器/缓冲器和一个8位数据输入缓冲器。

通常,A口#,B口作为数据输入/输出端口,C口作为控制/状态信息端口。

C口内部又分为两个4位端口,每个端口有一个4位锁存器,分别与A口和B口配合使用,作为控制信号输出或状态信息输入端口。

(2)工作方式控制。

 

   工作方式控制电路有两个,一个是A组控制电路,另一个是B组控制电路。

这两组控制电路共有一个控制命令寄存器,用来接收中央处理器发来的控制字。

A组控制电路用来控制A口和C口的上半部分(PC7~PC4)。

B组控制电路用来控制B口和C口的下半部分(PC3~PC0)。

(3)总线数据缓冲器。

 

   总线数据缓冲器是一个三态双向8位缓冲器,作为8255与系统总线之间的接口,用来传送数据、指令、控制命令以及外部状态信息。

(4)读/写控制逻辑电路。

   读/写控制逻辑电路接收CPU发来的控制信号RD、WR、RESET、地址信号A1、A0 等,然后根据控制信号的要求,将端口数据读出,送往CPU或将CPU送来的数据写入端口。

 

8255A接口工作状态选择表

 

2.工作方式选择

 

(1)方式0:

基本输入/输出方式。

   这种方式不需选通信号。

PA,PB和PC中任一端口都可以通过方式控制字设定为输入或输出。

(2)方式1:

选通输入/输出方式。

共有3个口,被分为两组。

A组包括A口和PC7~PC4,A口可由编程设定为输入或输出,PC7~PC4 作为输入/输出操作的选通信号和应答信号。

B组包括B口和PC3~PC0,这时C口作为8255A和外设或CPU之间传送某些状态信息及中断请求信号。

(3)方式2:

双向传送方式。

只有A口有方式2,此时,A口为8位双向传送数据口,C口的高5位PC7~PC3用来作为指定A口输入/输出的控制联络线。

3.8255A的控制字

(1)   方式控制字

(2)   

(2)端口C置位/复位控制字

 

4.8255A和8031单片机的硬件接口

 

设8255A的A、B、C口和控制寄存器地址依次为00H、01H、02H和03H。

如果用户需要将C口的PC3 置1,PC5 置0,可编程如下:

 MOV R0,#03H     ;8255A控制口地址

 MOV A,#07H;将PC3置1控制字

 MOVX @R0,A;置PC3=1

 MOV A,#0AH      ;将PC5置0控制字

 MOVX   @R0, A;置PC5=0

 

5.3.28155可编程并行I/O接口

 

1.8155的结构与引脚

 

2.8155的RAM和I/O口的编址

 

3.8155I/O的工作方式

 8155I/O的工作方式有两种:

基本I/O和选通I/O。

   1)基本I/O

   基本I/O为无条件传送,不需任何联络信号,8155的A口、B口、C口都可以工作于该方式。

2)选通I/O

   选通I/O为条件传送,传送的方式可用查询方式,也可用中断方式。

8155的A口、B口均可工作于此方式,这时需由C口提供联络控制信号线。

这些联络控制信号线有:

      

(1)BF:

I/O缓冲器满标志,输出,高电平有效。

      

(2)STB:

选通信号,输入,低电平有效。

      (3)INTR:

中断请求信号,输入,低电平有效。

      以上信号线对A口和B口均适用,分别称为ABF,ASTB,AINTR和BBF、BSTB、BINTR。

它们都由C口提供,

1.     8155的命令/状态字

 

   8155有一个命令/状态字寄存器,实际上这是两个不同的寄存器,分别存放命令字和状态字。

由于对命令寄存器只能进行写操作,对状态寄存器只能进行读操作,因此把它们统一编址,合称命令/状态寄存器。

   命令字

   命令字共8位,用于定义I/O口及定时器的工作方式。

对C口工作方式的说明:

   D3D2=00(ALT1):

A口、B口为基本I/O,C口为输入。

   D3D2=11(ALT2):

A口、B口为基本I/O,C口为输出。

   D3D2=01(ALT3):

A口为选通I/O,B口为基本I/O,C口低3位为联络信号,高3位输出。

 

   D3D2=10(ALT4):

A口、B口均为选通I/O,C口低3位作A口联络信号,高3位作B口联络信号。

对定时器运行控制位(TM2,TM1)的说明:

当TM2TM1=11时,其操作为:

当计数器未计数时,装入计数长度后,立即开始计数;当计数器正在计数时,待计数器溢出后以新装入的计数长度和方式进行计数。

 

5.8155的定时器/计数器

   8155的定时器/计数器是一个14位的减法计数器,由两个8位寄存器构成,其格式如下:

 

6.8155的接口电路及应用

 

5.3.3键盘显示器接口8279

1.8279的组成及引脚

       8279芯片有40条引脚,由单一+5V电源供电。

它主要由以下几部分组成:

(1)I/O控制和数据缓冲器;

(2)控制和定时寄存器及定时控制部分;

(3)扫描计数器;

(4)回送缓冲器与键盘去抖动控制电路;

(5)FIFO(先进后出)寄存器和状态电路;

(6)显示器地址寄存器及显示RAM。

 

2.8279的接口电路与应用

 

更新显示器和用查询方法读出16个键输入数的程序如下:

STRT1:

  MOV OPTR,#7FFFH     ;7FFFH为8279状态地址

           MOV A,#0D1H   ;清除命令

           MOVX DPTR,A     ;命令字输入

WAITD:

  MOVX A,@DPTR;读入状态

         JB   ACC.7,WAITD;清除等待

         MOV   A,#2AH  ;对时钟编程,设ALE为1MHz, 

       ,                                       ;10分频为100kHz

         MOVX@DPTR,A;命令送入

         MOV    A,#08H  ;显示器左边输入外部译码,双键

                              ;互锁方式

         MOVX   @DPTR,A

MOV  R0,#30H    ;设30H~3FH存放显示字形的段数据

           MOV  R7,#10H   ;显示16位数

         MOV  A,#90H   ;输出写显示数据命令

         MOVX @DPTR,A

         MOV  DPTR,#7EFFH   ;7EFFH是8279数据地址

LOOP1:

  MOV  A,@R0

         MOVX  @DPTR,A ;段选码送8279显示RAM

         INC   R0                  ;指向下一个段选码

         DJN2 R7,LOOP1     ;16个段选码送完?

         MOV R0,#40H       ;40H为键值存放单元首址

         MOV R7,#10H       ;有16个键值

LOOP2:

  MOVDPTR,#7FFFH   ;读8279状态

LOOP3:

  MOVX A,@DPTR

         ANL A,#0FH        ;取状态字低4位

         JZ   LOOP3              ;FIFO中无键值时等待输入

         MOV A,#40H      ;输出读FIFO的RAM命令

         MOVX  @DPTR,A;命令送入

         MOV  DPTR,7EFFH ;读键输入数据

         MOVX  A,@DPTR   ;读入键值

         MOV   @R0,A          ;键值存入内存40H~4FH

         INC  R0                      ;指向下一个键值存放单元

         DJNZ    R7,LOOP2   ;读完10H个键入数据?

HERE:

   AJMP  HERE              ;键值读完等待

5.4.1LED显示器接口

 

1.LED显示器结构与原理

 

2.LED显示器接口电路

 

程序清单如下:

 

DIR:

   MOV R0,#79H   ;显示缓冲区首址送R0

         MOV R3,#01H   ;使显示器最右边位亮

         MOV A,R3

LD0:

   MOV DPTR,#0101H ;扫描值送PA口

         MOVX @DPTR,A

         INC DPTR           ;指向PB口

         MOV  A,@R0     ;取显示数据

         ADD   A,#12H  ;加上偏移量

         MOVX  A,@A+PC    ;取出字形

         MOVX  @DPTR,A  ;送出显示

ACALL  DL1     ;延时

       INC R0  ;缓冲区地址加1

       MOV A,R3;

      JB ACC.5,LD1     ;扫到第6个显示位了吗?

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

      MOV  R3,A

      AJMPLD0

LD1:

  RET

DSEG:

  DB 3FH,06H,5BH,4FH,66H,6DH      ;显示段码表

DSEG1:

 DB 7DH,07H,7FH,6FH,77H,7CH

DSEG2:

 DB 39H,5EH,79H,71H,73H,3EH

DSEG3:

 DB 31H,61H,1CH,23H,40H,03H

DSEG4:

 DB 18H,00H,00H,00H

DL1:

   MOV R7,#02H[DW];延时子程序

DL:

    MOV R6,#0FFH

DL6:

   DJNZ R6,DL6

       DJNZ R7,DL

       RET

 

5.4.2键盘接口

 

键盘实际上是由排列成矩阵形式的一系列按键开关组成,用户通过键盘可以向CPU,输入数据、地址和命令。

   键盘按其结构形式可分为:

编码式键盘和非编码式键盘两类。

   单片机系统中普遍使用非编码式键盘,这类键盘主要解决以下几个问题:

①键的识别;

②如何消除键的抖动;

③键的保护。

1.非编码式键盘工作原理

  非编码式键盘识别按键的方法有两种:

一是行扫描法,二是线反转法。

   1)行扫描法

   通过行线发出低电平信号,如果该行线所连接的键没有按下的话,则列线所接的端口得到的是全“1”信号,如果有键按下的话,则得到非全“1”信号。

   为了防止双键或多键同时按下,往往从第0行一直扫描到最后1行,若只发现1个闭合键,则为有效键,否则全部作废。

   找到闭合键后,读入相应的键值,再转至相应的键处理程序。

2)线反转法

   线反转法也是识别闭合键的一种常用方法,该法比行扫描速度快,但在硬件上要求行线与列线外接上拉电阻。

先将行线作为输出线,列线作为输入线,行线输出全“0”信号,读入列线的值,然后将行线和列线的输入输出关系互换,并且将刚才读到的列线值从列线所接的端口输出,再读取行线的输入值。

那么在闭合键所在的行线上值必为0。

这样,当一个键被按下时,必定可读到一对唯一的行列值。

 

2.键盘接口电路

 

下面的程序是用行扫描法进行键扫描的程序,其中KS1为判键闭合的子程序。

有键闭合时(A)=0。

DIR为数码显示器扫描显示子程序,执行一遍的时间约6ms。

程序执行后,若键闭合,键值存入A中,键值的计算公式是:

键值=行号×4+列号;若无键闭合,则A中存入标志FFH。

KEY1:

        LCALL KS1      ;检查有无闭合键?

                JNZ LK1            ;(A)=0,有键闭合则转

               LJMP LK8         ;无闭合键则返回

LK1:

   LCALL DIR        ;延时12ms

             LCALL DIR         ;清抖

             LCALL LS1         ;再检查有键闭合否?

             JNZ LK2              ;有键闭合则转

             LJMP LK8           ;无键闭合则返回

LK2:

   MOV R3,#00H  ;行号初值送R3

             MOV R2,#FEH  ;行扫描初值送R2

LK3:

   MOV DPTR,#0101H ;指向8155口A                       

             MOV A,R2        ;行扫描值送A

             MOVX @DOTR,A   ;扫描1行

             INC DPTR

             INC DPTR     ;指向8155口C

             MOVX A,@DPTR    ;读入列值

             ANL A,#0FH     ;保留低4位

             MOV R4,A         ;暂存列值

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

             MOV A,R2        ;行扫描值送A

JNB ACC.7,LK8     ;扫至最后一行则转

RL A               ;未扫完,则移至下一行

MOV R2,A    ;行值存入R2中

INC R3        ;行号加1

SJMP LK3   ;转至扫描下一行                    

LK4:

   MOV A,R3     ;行号送入A

             ADD A,R3      ;行号×2

             MOV R5,A   

             ADD A,R5     ;行号×4

             MOV R5,A     ;存入R5中

             MOV A,R4    ;列值送A

 

LK5:

   RRC A           ;右移一位

             JNC LK6        ;该位为0则转

             INC R5           ;列号加1

             SJMP LK5      ;列号未判完则继续

LK6:

   MOV 20H,  R5;存键值

LK7:

   LCALL DIR    ;扫描一遍显示器

             LCALL KS1    ;发扫描信号

             JNZ LK7           ;键未释放等待

             LCALL DIR      ;键已释放

             LCALL DIR      ;延时12ms,清抖

             MOV A,20H     ;键值存入A中

KND:

   RET

LK8:

   MOV A,#FFH    ;无键标志FFH存入A中

             RET

KS1:

   MOV DPTR,#0101H ;判键子程序

             MOV A,#00H       ;全扫描信号

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

             INC DPTR

             INC DPTR             ;指向8155口C

             MOVX A,@DPTR;读入列值

             ANL A,#0FH     ;保留低4位

             ORL A,#F0H      ;高4位取“1”

             CPL A               ;取反,无键按下则全“0”

             RET

 

/D和D/A接口功能的扩展

5.5.1A/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转换器的主要技术指标之一。

量化间隔由下式计算:

 

2.典型A/D转换器芯片ADC0809简介

 

下面的程序是采用查询方法,分别对8路模拟信号轮流采样一次,并依次把结果转存到数据存储区的采样转换程序。

MOV R1,#data           ;置数据区首址

           MOV DPTR,#7FF8H ;P2.7=0,指向通道0

           MOV  R7,#08H          ;置通道数

LP1:

    MOVX  @DPTR,A     ;启动A/D转换

           MOV     R6,#0AH     ;软件延时

DALY:

   NOP

           NOP

           NOP

NOP

NOP

DJNZ  R6,DALY

MOVX A,@DPTR ;读取转换结果

MOV    @R1,A       ;存储数据

INC      DPTR          ; 指向下一个通道

INC      R1                ; 修改数据区指针

DJNZ   R

展开阅读全文
相关资源
猜你喜欢
相关搜索
资源标签

当前位置:首页 > IT计算机 > 电脑基础知识

copyright@ 2008-2023 冰点文库 网站版权所有

经营许可证编号:鄂ICP备19020893号-2