mcs51单片机系统扩展_第1页
mcs51单片机系统扩展_第2页
mcs51单片机系统扩展_第3页
mcs51单片机系统扩展_第4页
mcs51单片机系统扩展_第5页
已阅读5页,还剩78页未读 继续免费阅读

下载本文档

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

文档简介

1、第8章 MCS - 51单片机的系统及接口扩展8.1 外部总线的扩展 8.2 外部存储器的扩展8.2.1 外部程序存储器的扩展8.2.2 外部数据存储器的扩展8.2.3 多片存储器芯片的扩展8.3 输入/输出接口的扩展 8.3.1 8255A可编程接芯片 8.3.2 8155可编程接口芯片8.4 管理功能部件的扩展8.4.1 键盘接口8.4.2 LED显示器接口8.4.3 键盘显示器接口82798.5 A/D和D/A接口功能的扩展8.5.1 A/D转换器接口8.5.2 D/A转换器接口18.1 外部总线的扩展单片机系统结构28.1 外部总线的扩展总线扩展结构38.1 外部总线的扩展锁存器4 单

2、片机应用系统中扩展的三总线上挂接很多负载(存储器、并行接口、A/D接口、显示接口等), 但总线接口的负载能力有限, 因此常需要通过接总线驱动器进行总线驱动。 系统总线中地址总线和控制总线是单向的, 因此可以选用单向驱动器。 系统中的数据总线是双向的, 其驱动器要选用双向的。8.1 外部总线的扩展总线驱动器 5常用总线驱动器及接口 8051与总线驱动器的接口(a) P2 口的驱动; (b) P0 口的驱动 68.2 外部存储器的扩展 存储器扩展的基本问题:1)容量:16根地址线最大可扩展到64K2)地址:地址线选择、地址分配3)片选: 多芯片时常采用线选法或译码法4)芯片选择(RAM和ROM)7

3、8.2 外部存储器的扩展 8.2.1 外部程序存储器的扩展88.2.1 外部程序存储器的扩展92716与8031的连接图 10 2716芯片的地址范围: A10A0从全0开始, 然后从最低位开始依次加 1, 最后变为全1, 相当于211=2048个单元地址依次选通, 称为字选。即 8.2.1 外部程序存储器的扩展118.2.2 外部数据存储器的扩展 MCS - 51 数据存储器的扩展示意图 12静态RAM扩展 表 6264的工作方式 1314 6264的8 KB地址范围不唯一(因为A14、A13可为任意值), 6000H7FFFH是一种地址范围。当向该片6000H单元写一个数据DATA时, 可

4、用如下指令: MOV A, DATA MOV DPTA, 6000H MOVX DPTR, A 从FFFH单元读一个数据时, 可用如下指令: MOV DPTR, 7FFFH MOVX , DPTR 静态RAM扩展 158.2.3 多片存储器芯片的扩展线选法16各芯片的地址范围如下: P27 P24 P23P20 P07P00IC1: 1 1 1 0 xxxx xxxx xxxx E000H-EFFFHIC2: 1 1 0 1 xxxx xxxx xxxx D000H-DFFFHIC3: 1 0 1 1 xxxx xxxx xxxx B000H-CFFFHIC4: 0 1 1 1 xxxx xx

5、xx xxxx 7000H-7FFFH17 译码法寻址就是利用地址译码器对系统的片外高位地址进行译码, 以其译码输出作为存储器芯片的片选信号, 将地址划分为连续的地址空间块, 避免了地址的间断。 译码法又分为完全译码和部分译码两种。 8.2.3 多片存储器芯片的扩展译码法18完全译码存储器扩展连接图示 19各芯片的地址范围如下: P27 P24 P23P20 P07P00IC1: 1 1 0 0 xxxx xxxx xxxx C000H-CFFFHIC2: 1 1 0 1 xxxx xxxx xxxx D000H-DFFFHIC3: 1 1 1 0 xxxx xxxx xxxx E000H-E

6、FFFHIC4: 1 1 1 1 xxxx xxxx xxxx F000H-FFFFH 完全译码法20部分译码存储器扩展连接图示 21各芯片的地址范围如下: P27 P24 P23 P20 P07 P00IC1: 0 0 ? ? xxxx xxxx xxxx 0 0 0000H-0FFFH 0 1 1000H-1FFFH 1 0 2000H-2FFFH 1 1 3000H-3FFFHIC2: 0 1 ? ? xxxx xxxx xxxx 7000H-7FFFHIC3: 1 0 ? ? xxxx xxxx xxxx B000H-BFFFHIC4: 1 1 ? ? xxxx xxxx xxxx F

7、000H-FFFFH部分译码法228.3 输入/输出接口的扩展 8.3.1 8255A可编程并行I/O接口 8255A具有 3 个 8 位并行I/O口, 称为PA口、 PB口和PC口。 其中PC口又分为高 4 位和低 4 位, 通过控制字设定可以选择三工作方式: 基本输入/输出; 选通输入/输出; PA口为双向总线。 1. 8255A的内部结构和引脚 8255A内部结构包括三个并行数据输入/输出端口, 两个工作方式控制电路, 一个读/写控制电路和 8 位总线缓冲器。 23242. 端口选择 253. 工作方式2627方式 1、2 8255A的C口联络控制信号线 28 4. 8255A 的控制字

8、(1) 方式控制字例:A口方式0输入, B口方式1输出, C口高4位输入, C口低4位输出。初始化程序为: ; 03H为 8255A 控制寄存器地址MOV R1, 03H; 8255A工作方式字为 9CH MOV A, 9CH; 方式字送入 8255A 控制口 MOVX R1, A29(2) C口某位置位/复位控制字 例:PC5置1的程序为: MOV DPTR, 03HMOV A, 0BHMOVX R1, A305. 8255A 和 8031 单片机的硬件接口 31 设 8255A的A、B、C口和控制寄存器地址依次为 00H、 01H、 02H 和 03H。 如果用户需要将C口的PC3 置 1

9、, 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 若将P2.0通过反相器接CS,上述程序如何修改?32 例 8031 扩展 8255A 与打印机接口的电路。 8255A的片选线为P0.7, 打印机与 8031 采用查询方式交换数据。打印机的状态信号输入给PC7, 打印机忙时BUSY=1, 打印机的数据输入采用选通控制, 当STB上出现负跳变时数据被打入, 要求编写向打印机输出 80 个

10、数据的程序。33 8255A 的A、 B、C和控制寄存器的口地址分别为: 7CH,7DH,7EH,7FH (也可以:00H,01H,02H,03H等)。34 8255A 的方式1中OBF为低电平有效, 而打印机STB要求下降沿选通。所以8255A采用方式0, 由PC0 模拟产生STB信号, PC7 读入BUSY信号。因PC7输入, PC0输出, 则方式选择命令字为: 10001110B=8EH。 RAM 20H单元开始向打印机输出80个数据的程序如下: MOV R0, 7FH ;R0 指向控制口MOV A, 8EH ;方式控制字为8EHMOV R0 , A ;送方式控制字MOV R1, 20H

11、 ;内部RAM数据块首地址MOV R2, 50H ;置数据块长度35LP: MOV R0, 7EH ; R0指向C口LP1: MOVX A, R0 ; 读PC7连接BUSY状态 JB ACC.7, LP1 ; 查询等待打印机 MOV R0, 7CH ; 指向A口 MOV A, R1 ; 取RAM 数据 MOVX R0, A ; 数据输出到8255 A口锁存 INC R1 ; RAM地址加1 MOV R0, 7FH ; R0指向控制口 MOV A, 00H ; PC0复位控制字 MOVX R0, A ; PC0=0, 产生STB的下降沿 MOV A, 01H ; PC0置位控制字 MOVX R0

12、, A ; PC0=1, 产生STB的上升沿 DJNZ R2, LP ; 未完, 则反复 368.4 管理功能部件的扩展 8.4.1 键盘接口 键盘是单片机系统中完成控制参数输入及修改的基本设备,是人工干预的重要手段。 单片机系统中使用非编码式键盘(无专用编/译码硬件)。 键盘设计中主要解决以下几个问题: 如何消除键的抖动; 键的识别; 键的保护。 37 由于按键是机械的弹性开关,在按下和断开时,触点在闭合和断开时,会引起A点电位的不稳定,一般有510ms的抖动,导致误信号,使CPU产生错误的处理。 软件去抖动:在首次检测到按键按下后,先执行一段延时子程序,一般为10ms延时,由程序确认按键是

13、否按下,达到去抖动的目的。 硬件去抖动:常用双稳态电路、单稳态电路和RC积分电路等方法。一、按键开关抖动问题 38二、独立式按键及其接口每个按键占用一根I/O线,相互之间没有影响。例 图为三个按键与8031的连接电路,试编制按键扫描子程序(查询或中断)KEY:MOV P1,#07HMOV A,P1CPL AANL A,#07HJZ GRETJB ACC.0,KEY1JB ACC.1,KEY2JB ACC.2,KEY3GRET:RETKEY1:LCALL WORK1KEY2:LCALL WORK2KEY3:LCALL WORK3RET39三、矩阵式键盘及其接口矩阵式键盘:也称行列式键盘。44行列

14、结构,可安装16个按键,形成一个键盘。如图所示:键盘扫描:P2口输入,P1口输出某列线(P1.x)输出0,读P2口,若P2口不全1则有按键。40采用8155的键盘接口电路 三、矩阵式键盘及其接口41 下面的程序是用行扫描法进行键扫描的程序, 其中KS1 为判键闭合的子程序。 有键闭合时(A)=0。 DIR为数码显示器扫描显示子程序, 执行一遍的时间约6 ms。 程序执行后, 若键闭合, 键值存入A中, 键值的计算公式是: 键值=行号4+列号; 若无键闭合, 则A中存入标志FFH。 KEY1:LCALL KS1 ; 检查有无闭合键? JNZ LK1 ; (A)=0, 有键闭合则转 LJMP LK

15、8 ; 无闭合键则返回 LK1: LCALL DIR ; 延时 12 ms LCALL DIR ; 清抖 LCALL LS1 ; 再检查有键闭合否? JNZ LK2 ; 有键闭合则转 LJMP LK8 ; 无键闭合则返回 42LK2: MOV R3, 00H ; 行号初值送R3 MOV R2, FEH ; 行扫描初值送R2LK3: MOV DPTR, 0101H ; 指向 8155 口A MOV A, R2 ; 行扫描值送A MOVX DPTR, A ; 扫描 一行 INC DPTR INC DPTR ; 指向 8155 口C MOVX A, DPTR ; 读入列值 ANL A, 0FH ;

16、保留低 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 ; 行号加 1SJMP LK3 ; 转至扫描下一行 43LK4: MOV A, R3 ; 行号送入A ADD A, R3 ; 行号2 MOV R5, A ADD A, R5 ; 行号4 MOV R5, A ; 存入R5 中 MOV A, R4 ; 列值送ALK5: RRC A ; 右移一位 JNC LK6 ; 该

17、位为 0 则转 INC R5 ; 列号加 1 SJMP LK5 ; 列号未判完则继续LK6: MOV 20H, R5; 存键值LK7: LCALL DIR ; 扫描一遍显示器 LCALL KS1 ; 发扫描信号 JNZ LK7 ; 键未释放等待 LCALL DIR ; 键已释放 LCALL DIR ; 延时 12 ms, 清抖 MOV A, 20H ; 键值存入A中KND: RET LK8: MOV A, FFH ; 无键标志FFH存入A中 RET 44KS1: MOV DPTR, 0101H ; 判键子程序(D1D0=01选择A口) MOV A, 00H ; 全扫描信号 MOVX DPTR,

18、 A ; 发全扫描信号 INC DPTR INC DPTR ; 指向8155口C MOVX A, DPTR ; 读入列值 ANL A, 0FH ; 保留低4位 ORL A, F0H ; 高4位取“1” CPL A ; 取反, 无键按下则全“0” RET458.4.2 LED显示器接口 1. LED显示器结构与原理 7段LED数码显示器 46十六进制数及空白与P的显示段码 472. 显示器译码硬件译码74LS48,CD4511是”BCD码-7段共阴译码/驱动“IC74LS47”BCD码-7段共阳译码/驱动“IC硬件译码特点:采用专用的译码/驱动器件、驱动功率大,硬件开销大;软件编程简单,字型固定

19、(通常数字)482. 显示器译码软件译码 软件译码特点:不采用专用的译码/驱动器件、驱动功率小;软件编程复杂,字型灵活。493、显示方式505152535455564. 基于8155的LED显示器接口电路 57程序清单如下:58DIR: MOV R0, 79H ; 显示缓冲区首址送R0 MOV R3, 01H ; 使显示器最右边位亮 MOV A, R3LD0: MOV DPTR, 0101H ; 扫描值送PA口MOVX DPTR, AINC DPTR ; 指向PB口MOV A, R0 ; 取显示数据ADD A, 12H ; 加上偏移量MOVX A, A+PC ; 取出字形MOVX DPTR,

20、A ; 送出显示ACALL DL1; 延时INC R0; 缓冲区地址加 1MOV A, R3; JB ACC.5, LD1; 扫到第 6 个显示位了吗?RL A ; 没有, R3 左环移一位, 扫描下一个显示位 MOV R3, AAJMP LD0LD1: RET 59DSEG: DB 3FH, 06H, 5BH, 4FH, 66H, 6DH ; 显示段码表DSEG1: DB 7DH, 07H, 7FH, 6FH, 77H, 7CH DSEG2: DB 39H, 5EH, 79H, 71H, 73H, 3EHDSEG3: DB 31H, 61H, 1CH, 23H, 40H, 03HDSEG4:

21、 DB 18H, 00H, 00H, 00HDL1: MOV R7, 02HDW; 延时子程序DL: MOV R6, 0FFHDL6: DJNZ R6, DL6 DJNZ R7, DL RET608.4.3 键盘显示器接口8279 1. 8279的组成及引脚 8279 芯片有 40 条引脚, 由单一+5 V电源供电。 它主要由以下几部分组成: 1) I/O控制和数据缓冲器; 2) 控制和定时寄存器及定时控制部分; 3) 扫描计数器; 4) 回送缓冲器与键盘去抖动控制电路; 5) FIFO(先进后出)寄存器和状态电路; 6) 显示器地址寄存器及显示RAM。 612. 8279的接口电路与应用 6

22、2更新显示器和用查询方法读出 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为 1 MHz, ; 10 分频为 100 kHz MOVX DPTR, A ; 命令送入 MOV A, 08H ; 显示器左边输入外部译码, 双键 ;互锁方式 MOVX DPTR , A 63 MOV R0, 30H ; 设30H3FH

23、存放显示字形的段数据 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: MOV DPTR, 7FFFH ; 读 8279 状态 64LOOP3:MOVX A, DPT

24、R ANL A, 0FH ; 取状态字低 4 位 JZ LOOP3 ; FIFO中无键值时等待输入 MOV A, 40H ; 输出读FIFO的RAM命令 MOVX DPTR, A ; 命令送入 MOV DPTR, 7EFFH ; 读键输入数据 MOVX A, DPTR ; 读入键值 MOV R0, A ; 键值存入内存 40H4FH INC R0 ; 指向下一个键值存放单元 DJNZ R7, LOOP2 ; 读完 10H个键入数据? HERE: AJMP HERE ; 键值读完等待 658.5 A/D和D/A接口功能的扩展 A/D转换器用以实现模拟量向数字量的转换。 D/A转换器用以实现数字量

25、向模拟量的转换。 低通采样定理 带通采样定理66量化间隔和量化误差是A/D转换器的主要技术指标之一。 量化间隔由下式计算: 其中n为A/D转换器的位数。 量化误差有两种表示方法: 一种是绝对量化误差; 另一种是相对量化误差。 绝对量化误差 8.5.1 A/D转换672. 典型A/D转换器芯片ADC0809 简介 68地址码与输入通道的对应关系 2. 典型A/D转换器芯片ADC0809 简介 CLK=640KHz,转换时间100us69ADC0809时序图 2. 典型A/D转换器芯片ADC0809 简介 703. ADC0809与8031 的接口电路 1) 查询方式 分别对 8 路模拟信号轮流采

26、样一次, 并依次把结果转存到数据存储区。 71 MOV R1, data ; 置数据区首址 MOV DPTR, 7FF8H ; P2.7=0, 指向通道 0 MOV R7, 08H ; 置通道数LP1: MOVX DPTR, A ; 启动A/D转换 MOV R6, 15H ; 软件延时(100us128us)DALY: NOP ;设单片机时钟6MHzNOPDJNZ R6, DALYMOVX A, DPTR ; 读取转换结果MOV R1, A ; 存储数据INC DPTR ; 指向下一个通道INC R1 ; 修改数据区指针DJNZ R7, LP1 ; 8 个通道全采样完了吗? 724. 中断方式

27、 中断方式硬件接口 73 这里将ADC0809 作为一个外部扩展的并行I/O口, 直接由8031的P2.0和WR脉冲进行启动。因而其端口地址为 0FEFFH。用中断方式读取转换结果的数字量, 模拟量输入通道选择端ADD A、ADD B、ADD C分别与8031的P0.0、 P0.1、P0.2 直接相连, CLK由 8031 的ALE提供。其读取通道 0 转换后的数字量程序段如下: ORG 1000H INADC: SETB IT1 ; INT1设为边沿触发 SETB EA ; 开中断INT1 SETB EX1 74 MOV DPTR, #0FEFFH MOV A,00H MOVX DPTR, A ;启动A/D转换 ORG 0013HAJMP PINT1 PINT1: MOV DPTR,0FEFFH MOVX A, DPTR ;读取IN0 的转换结果 MOV 50H, A ;存入 50H单元 MOV A,00H MOVX DPTR, A ;启动A/DIN0转换 RETI ; 返回 758.5.2 D/A转换器接口 1. D/A转换器的性能指标 1)分辨率。如果数字量位数为n, 则转换器的分辨率为 2-n。 2)建立时间。指从输入数字量变化到输出达到终值误差1/2LSB时所需的时间。通常以

温馨提示

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

评论

0/150

提交评论