本章分为五节,主要介绍: 7.1 存储器的扩展 7.2 输入/输出及其控制方式 7.3 并行接口的扩展 7.4 8279接口芯片 7.5 显示器及键盘接口.

Slides:



Advertisements
Similar presentations
第五章 键盘及其接口技术 本章要点: 1 .按键的抖动干扰及其解决方法。 2 .独立式键盘的结构原理及其接口电路。 3 .矩阵式键盘的结构原理及其行扫描法。 4 .编码器及其编码键盘接口电路。 返回总目录.
Advertisements

第7章 AT89S51单片机的 串行口 1.
实验四 利用中规模芯片设计时序电路(二).
5.4 顺序脉冲发生器、 三态逻辑和微机总线接口 顺序脉冲发生器 顺序脉冲 计数型 分类 移位型.
本章内容: 中断的概念 MCS-51单片机中断系统 外部事件中断及应用
第 十 章 单 片 机 应用系统 Single Chip Microcomputer 本章内容 人机接口 键盘接口 显示器接口.
8051 指令.
第8章 AT89S51单片机 外部存储器的扩展 1.
第四章 指令系统及汇编语言程序设计.
本章分为四节,主要介绍: 4.1 程序编制的方法和技巧 4.2 源程序的编辑和汇编 4.3 基本程序结构 4.4 常用程序举例.
单片机原理与应用.
第8章 AT89S52单片机外部 存储器的扩展 1.
简单芯片扩展I/O接口 8255可编程接口芯片及其使用 8155可编程接口芯片及其使用 键盘及显示器接口设计 A/D和D/A转换接口技术
第2章 MCS-51单片机指令系统与汇编语言程序设计
報告者:朱耿育 紀翔舜 組員:詹以群 張永傑 指導老師:梁新潁
复 习 一. 计算机中的数和编码 1. 2,10,16进制数及其之间的转换(整数) 按权展开,除x取余 2
单片机应用技术 项目一 循环彩灯装置 第6讲 指令功能及汇编语言程序设计(一) 《单片机应用技术》精品课程组 湖北职业技术学院机电工程系.
本章内容: 中断的概念 MCS-51单片机中断系统 外部事件中断及应用
第8章 模拟接口 8.1 模拟接口概述 8.2 DAC及其接口 8.3 ADC及其接口.
第二部分 微机原理 第3章 MCS-51的 指令系统 主讲教师:喻红.
一、任务描述 二、任务分析 三、任务演示 四、相关知识 五、任务布置. 一、任务描述 二、任务分析 三、任务演示 四、相关知识 五、任务布置.
第七章 MCS-51系统扩展 一、程序存储器扩展
第3章 AT89C51指令系统 3.1基本概念内部结构和引脚功能 指令、指令系统、机器代码
单片机原理及应用 MCS-51系列单片机的基本硬件结构 MCS-51指令系统 MCS-51单片机的系统扩展与应用.
第10章 MCS-51与键盘、显示器、拨盘、打印机的接 口设计 输出外设:LED显示器、LCD显示器、打印机等。
第三章 微机基本系统的设计 第一章 8086程序设计 第二章 MCS-51程序设计 第四章 存贮器与接口 第五章 并行接口
第八章 MCS-51与数码显示器和键盘的接口 一、MCS-51与数码显示器接口 数码显示器是单片机应用产品中最常用的廉价的输 出设备,它由8个发光二极管按一定规律排列而成, 当某一发光二极管导通时,则会被点亮,控制不同 组合的二极管导通,就能显示出各种字符。 1.显示器的结构.
第七章 MCS-51并行口的扩展 MCS51单片机内部有4个并行口,当内部并行口不够用时可以外扩并行口芯片。可外扩的并行口芯片很多,分成2类:不可编程的并行口芯片(74LS3734和74LS245)和可编程的并行口芯片(8255)。 7.1 不可编程并行口芯片的扩展 7.2 可编程并行口芯片的扩展.
微机原理与接口技术 微机原理与接口技术 朱华贵 2015年11月20日.
4.A/D与D/A转换器 1).DAC0832与MCS-51接口
第2章 单片机的结构原理与 简单应用 (课时:10学时).
第八章 MCS-51与数码显示器和键盘的接口 一、MCS-51与数码显示器接口 数码显示器是单片机应用产品中最常用的廉价的输 出设备,它由8个发光二极管按一定规律排列而成, 当某一发光二极管导通时,则会被点亮,控制不同 组合的二极管导通,就能显示出各种字符。 1.显示器的结构.
本 章 重 点 单片机的简单I/O扩展 8255A可编程并口芯片 8279可编程键盘/显示器接口芯片 单片机键盘接口技术
单片机原理 单 片 机 单片机接口技术 单片机应用技术.
第三章 指令系统.
第3章 指令系统及程序设计举例 3.1 指令格式与寻址方式 一、指令格式 1. 指令 操作码 目标操作数,源操作数
第6章 键盘、显示接口技术 6.1 键盘及其与计算机接口 6.2 独立式按键接口设计 6.3 矩阵式键盘接口设计
逆向工程-汇编语言
CPU结构和功能.
第10章 综合实训 课题一 水温控制系统设计 一、实训目的 二、课题要求 熟悉常用温度传感器AD590的特性及接口电路的设计方法;
6.1 输入/输出 6.2 CPU与外设数据传送方式 6. 3 MCS-51中断系统 6. 4 中断应用举例
本 章 重 点 单片机的结构特点 单片机的存储器特点 I/O端口的特点 CPU时序 课时安排:3个课时.
第四章 指令系统及汇编语言程序设计.
数码管数字时钟电路的设计 1. 系统硬件电路的设计
得技通电子 问题 1.0 、选择题:本大题共15个小题,每小题1分,共15分,在每小题给出的四个选项中,只有一项符合题目要求,把所选项前的字母填在括号内。
第四章 MCS-51定时器/计数器 一、定时器结构 1.定时器结构框图
第3章 MCS-51指令系统 介绍MCS—51系列单片机的寻址方式 介绍MCS—51系列单片机的指令系统
第4章 80C51系列指令系统 教学目的:熟悉80C51系列单片机的寻址方式及 每一种寻址方式对应的寻址空间;掌 握每一条指令功能。
本章内容 MCS-51单片机指令系统的格式 MCS-51单片机寻址方式 指令系统的分析
计算机组成原理 课程设计.
(Random Access Memory)
第三章 MCS 51的硬件结构.
第二章 补充知识 2.1 总线和三态门 一、总线(BUS) 三总线结构 数据总线DB(Data Bus)
实验三 16位算术逻辑运算实验 不带进位控制的算术运算 置AR=1: 设置开关CN 1 不带进位 0 带进位运算;
3.1 指令系统简介 一、几个概念 二、汇编语言指令格式 三、指令的分类 四、指令的符号说明 主讲:吴政江 下一页.
实验二 带进位控制8位算术逻辑运算实验 带进位控制8位算术逻辑运算: ① 带进位运算 ② 保存运算后产生进位
汽车单片机应用技术 学习情景1: 汽车空调系统的单片机控制 主讲:向楠.
四、手工汇编 完成汇编的方法有两种:手工汇编和汇编程序汇编 1.手工汇编步骤 A
7.1 AT89C51最小应用系统 从本质上讲,单片机本身就是一个最小应用系统。由于晶振、开关等器件无法集成到芯片内部,这些器件又是单片机工作所必需的器件,因此,由单片机与晶振电路及由开关、电阻、电容等构成的复位电路就是单片机的最小应用系统。如图7-1所示,AT89C51片内有Flash程序存储器,由它构成的最小应用系统简单可靠。
3. 逻辑运算指令 A、简单逻辑操作指令 CLR A. (不影响CY、AC、 OV标志) CPL A
简单芯片扩展I/O接口 8155可编程接口芯片及其使用 键盘及显示器接口设计 A/D和D/A转换接口技术
汽车单片机应用技术 学习情景1: 汽车空调系统的单片机控制 主讲:向楠.
单片机应用技术 (C语言版) 第3章 MCS-51指令系统及 汇编程序设计
上节复习(11.7) 1、定时/计数器的基本原理? 2、定时/计数器的结构组成? 3、定时/计数器的控制关系?
第4章 MCS-51汇编语言程序设计 教学基本要求: (1)、了解MCS-51汇编语言程序设计的特点;
工业机器人入门使用教程 ESTUN机器人 主讲人:李老师
人机界面接口技术(人机交互) 4.1 显示人机界面接口技术 4.2 常用显示设备应用介绍:LED、七段数码管、LCM、LCD等;
DSP技术与应用 电子与信息技术系.
第1章 微型计算机基础.
Presentation transcript:

本章分为五节,主要介绍: 7.1 存储器的扩展 7.2 输入/输出及其控制方式 7.3 并行接口的扩展 7.4 8279接口芯片 7.5 显示器及键盘接口

7.1 存储器的扩展 7.1.1 程序存储器的扩展 一、扩展总线

74LS373是有输出三态门的电平允许8D锁存器。当G(使能端)为高电平时,锁存器的数据输出端Q的状态与数据输入端D相同(透明的)。当G端从高电平返回到低电平时(下降沿后),输入端的数据就被锁存在锁存器中,数据输入端D的变化不再影响Q端输出。

二、片外ROM操作时序 进行ROM的扩展,其扩展方法较为简单容易,这是由单片机的优良扩展性能决定的。单片机的地址总线为16位,扩展的片外ROM的最大容量为64KB,地址为0000H~FFFFH。扩展的片外RAM的最大容量也为64KB,地址为0000H~FFFFH。 由于80C51采用不同的控制信号和指令 ,尽管ROM与RAM的地址是重叠的,也不会发生混乱。 80C51对片内和片外ROM的访问使用相同的指令,两者的选择是由硬件实现的。 芯片选择现在多采用线选法,地址译码法用的渐少。ROM与RAM共享数据总线和地址总线。

访问片外ROM的时序 : 80C51系列单片机的CPU在访问片外ROM的一个机器周期内,信号ALE出现两次(正脉冲),ROM选通信号也两次有效,这说明在一个机器周期内,CPU两次访问片外ROM,也即在一个机器周期内可以处理两个字节的指令代码,所以在80C51系列单片机指令系统中有很多单周期双字节指令。

三、ROM芯片及扩展方法 1、EPROM存储器及扩展 常用的芯片有2732、2764、27128、27256、27512等 。

EPROM存储器扩展电路:

2、EEPROM存储器及扩展 常用的EEPROM芯片有2864、2817等 。

7.1.2 数据存储器的扩展 一、RAM扩展原理 扩展RAM和扩展ROM类似,由P2口提供高8位地址,P0口分时地作为低8位地址线和8位双向数据总线。外部RAM读时序为:

外部RAM写时序为:

二、RAM扩展方法 1、数据存储器 常用的数据存储器SRAM芯片有6116﹑6264﹑62256等。

2、数据存储器扩展电路

7.2 输入/输出及其控制方式 原始数据或现场信息要利用输入设备输入到单片机中,单片机对输入的数据进行处理加工后,还要输出给输出设备。常用的输入设备有键盘、开关及各种传感器等,常用的输出设备有LED(或LCD)显示器、微型打印机及各种执行机构等。 80C51单片机内部有四个并行口和一个串行口,对于简单的I/O设备可以直接连接。当系统较为复杂时,往往要借助I/O接口电路(简称I/O接口)完成单片机与I/O设备的连接。现在,许多I/O接口已经系列化、标准化,并具有可编程功能。

7.2.1 输入/输出接口的功能 单片机与I/O设备的关系:

I/O接口的功能是: 1、对单片机输出的数据锁存 锁存数据线上瞬间出现的数据,以解决单片机与I/O设备的速度协调问题。 2、对输入设备的三态缓冲 外设传送数据时要占用总线,不传送数据时必须对总线呈高阻状态。利用I/O接口的三态缓冲功能,可以实现I/O设备与数据总线的隔离,便于其它设备的总线挂接。

3、信号转换 信号类型(数字与模拟、电流与电压)、信号电平(高与低、正与负)、信号格式(并行与串行)等的转换。 4、时序协调 不同的I/O设备定时与控制逻辑是不同的,并与CPU的时序往往是不一致的,这就需要I/O接口进行时序的协调。

7.2.2 单片机与I/O设备的数据传送方式 一、无条件传送 适用于对简单的I/O设备(如开关、LED显示器、继电器等)的操作,或者I/O设备的定时固定或已知的场合。 二、查询状态传送 效率低。 三、中断传送方式 效率大大提高。 四、直接存储器存取(DMA)方式 适于高速外设以及成组交换数据的场合 。

7.3 并行接口的扩展 7.3.1 并行输入/输出口的简单扩展

7.3.2 可编程接口8155的扩展 一、8155的引脚及结构

二、8155的内部编址 内部RAM地址为:00H~FFH。 内部端口地址为: 000-----------命令/状态寄存器 010-----------B口 011-----------C口 100-----------计数器低8位 101-----------计数器高6位及计数 器方式设置位

三、工作方式设置及状态字格式 1、方式设置 PA:A口数据传送方向设置位。0--输入;1--输出。 PB:B口数据传送方向设置位。0--输入;1--输出。 PC1、PC2:C口工作方式设置位。

IEA:A口的中断允许设置位。0--禁止;1--允许。 IEB:B口的中断允许设置位。0--禁止;1--允许。 TM2、TM1:计数器工作方式设置位。

2、状态字格式 INTRX:中断请求标志。INTRX =1,表示A或B口有中断请求;INTRX=0,表示A或B口无中断请求。 BFX:口缓冲器空/满标志。BFX=1,表示口缓冲器已装满数据,可由外设或单片机取走;BFX=0,表示口缓冲器为空,可以接受外设或单片机发送数据。 INTEX:口中断允许/禁止标志。INTEX=1,表示允许口中断;INTEX=0,表示禁止口中断。 TIMER:计数器计满标志。 TIMER=1, 表示计数器的原计数初值已计满回零; TIMER=0, 表示计数器尚未计满。

四、计数器输出模式 计数器是一个14位的减法计数器,它能对输入的脉冲进行计数,在到达最后一个计数值时,输出一个矩形波或脉冲。 装入计数长度寄存器的值为2H~3FFFH。15、14两位用于规定计数器的输出方式 。

五、选通I/O的组态 对8155命令字的PC2﹑PC1位编程,使A或B口工作在选通方式时,C口的PC0~PC5就被定义为A或B口选通I/O方式的应答和控制线。

选通方式的组态逻辑 :

六、8155芯片与单片机的接口 80C51单片机可以与8155直接连接而不需要附加任何电路。使系统增加256字节的RAM,22位I/O线及一个计数器。

8155中RAM地址因P2.7(A15)=0 及P2.0(A8)=0,故可选为01111110 00000000B(7E00H)~ 01111110 11111111B(7EFFH); I/O端口的地址为:7F00H~7F05H。

若A口、 B口定义为基本输入方式,计数器作为方波发生器,对80C31输入脉冲进行24分频(但需要注意8155的计数最高频率约为4MHZ),则8155 I/O口初始化程序如下: START: MOV DPTR,#7F04H ;计数寄存器低8位 MOV A,#18H ;计数器初值#18H(24D) MOVX @DPTR,A ;计数器寄存器低8位赋值 INC DPTR;指向计数器寄存器高6位及方式位 MOV A,#40H ;计数器为连续方波方式 MOVX @DPTR,A ;计数寄存器高6位赋值 MOV DPTR,#7F00H ;命令寄存器 MOV A,#0C2H ;设命令字 MOVX @DPTR,A ;送命令字

7.4 8279接口芯片 由80C51系列单片机构成的小型测控系统或智能仪表中,常常需要扩展显示器和键盘以实现人机对话功能。8279芯片在扩展显示器和键盘时功能强、使用方便。 8279是Intel公司为8位微处理器设计的通用键盘/显示器接口芯片,其功能是:接收来自键盘的输入数据并作预处理;完成数据显示的管理和数据显示器的控制。单片机应用系统采用8279管理键盘和显示器,软件编程极为简单,显示稳定,且减少了主机的负担。

7.4.1 8279的结构

数据缓冲器将双向三态8位内部数据总线D0~D7与系统总线相连,用于传送CPU与8279之间的命令和状态。 控制和定时寄存器用于寄存键盘和显示器的工作方式,锁存操作命令,通过译码器产生相应的控制信号,使8279的各个部件完成相应的控制功能。 定时器包含一些计数器,其中有一个可编程的5位计数器(计数值在2~31间),对CLK输入的时钟信号进行分频,产生100 KHz的内部定时信号(此时扫描时间为5.1ms,消抖时间为10.3ms)。外部输入时钟信号周期不小于500ns。

扫描计数器有两种输出方式:一是编码方式,计数器以二进制方式计数,4位计数状态从扫描线SL3~SL0 输出,经外部译码器可以产生16位的键盘和显示器扫描信号;另一种是译码方式,扫描计数器的低两位经内部译码后从SL3~SL0 输出,直接作为键盘和显示器的扫描信号。 回送缓冲器、键盘消抖及控制完成对键盘的自动扫描以搜索闭合键,锁存RL7~RL0的键输入信息,消除键的抖动,将键输入数据写入内部先进先出存储器(FIFO RAM)。RL7~RL0为回送信号线作为键盘的检测输入线,由回送缓冲器缓冲并锁存,当某一键闭合时,附加的移位状态SHIFT、控制状态CNTL及扫描码和回送信号拼装成一个字节的“键盘数据”送入8279内部的FIFO(先进先出)RAM。

键盘的数据格式为: 在传感器矩阵方式和选通方式时,回送线RL7~RL0的内容被直接送往相应的FIFO RAM。输入数据即为RL7~RL0。数据格式为 :

FIFO/传感器RAM是具有双功能的8×8 RAM 在键盘或选通方式时,它作为FIFO RAM,依先进先出的规则输入或读出,其状态存放在FIFO/传感器RAM状态寄存器中。只要FIFO RAM不空,状态逻辑将置中断请求IRQ=1; 在传感器矩阵方式,作为传感器RAM,当检测出传感器矩阵的开关状态发生变化时,中断请求信号IRQ=1。在外部译码扫描方式时,可对8×8矩阵开关的状态进行扫描,在内部译码扫描方式时,可对4×8矩阵开关的状态进行扫描。

显示RAM用来存储显示数据,容量是16×8位 在显示过程中,存储的显示数据轮流从显示寄存器输出。显示寄存器输出分成两组,即OUTA0~OUTA3和OUTB0~OUTB3,两组可以单独送数,也可以组成一个8位的字节输出,该输出与位选扫描线SL0~SL3配合就可以实现动态扫描显示。 显示地址寄存器用来寄存CPU读/写显示RAM的地址,可以设置为每次读出或写入后自动递增。

7.4.2 8279的引脚定义 DB7~DB0为双向外部数据总线 ; 为片选信号线,低电平有效; 和 为读和写选通信号线; 7.4.2 8279的引脚定义 DB7~DB0为双向外部数据总线 ; 为片选信号线,低电平有效; 和 为读和写选通信号线; IRQ为中断请求输出线。 RL7~RL0为键盘回送线。 SL3~SL0为扫描输出线。 OUTB3~OUTB0、OUTA3~OUTA0为显示寄存器数据输出线。 RESET为复位输入线。 SHIFT为换档键输入线。 CNTL/STB为控制/选通输入线。 CLK为外部时钟输入线。 为显示器消隐控制线 。

7.4.3 8279的操作命令

一、显示器和键盘方式设置命令 D7 D6 D5=000 是键盘/显示方式命令特征字。 D4 D3=DD 为显示器方式设置位。 D2 D1 D0 =KKK 为键盘工作方式设置位。 8279 可外接8位或16位 LED 显示器,显示器的每一位对应一个8位的显示器缓冲单元。左端输入方式较为简单,显示缓冲器RAM地址0~15分别对应于显示器的0位(左)~15位(右)。CPU依次从0地址或某一地址开始将段数据写入显示缓冲器。右端输入方式是移位,输入数据总是写入右端的显示缓冲器,数据写入显示缓冲器后,原来缓冲器的内容左移一个字节。

内部译码的扫描方式时,扫描信号由SL3~SL0输出,仅能提供4选1扫描线。 双键互锁工作方式时,键盘中同时有两个以上的键被按下,任何一个键的编码信息均不能进入FIFO RAM,直至仅剩下一个键闭合时,该键的编码信息方能进入FIFO RAM。

N键轮回工作方式时, 如有多个键按下,键盘扫描能够根据发现它们的顺序,依次将它们的状态送入FIFO RAM。 传感器矩阵工作方式,是指片内的去抖动逻辑被禁止掉,传感器的开关状态直接输入到FIFO RAM中。因此,传感器开关的闭合或断开均可使IRQ马上为1,向CPU快速申请中断。

二、时钟编程命令 D7D6D5=001 为时钟编程命令特征位。 8279的内部定时信号是由外部输入时钟经分频后产生的,分频系数由时钟编程命令确定。D4~D0 用来设定对CLK端输入时钟的分频次数N,N=2~31。利用这条命令,可以将来自CLK引脚的外部输入时钟分频,以取得100KHz的内部时钟信号。例如CLK输入时钟频率为2MHz,获得100KHz的内部时钟信号,则需要20分频。

三、读FIFO /传感器RAM命令 D7D6D5=010 为该命令的特征位。 D2~D0(AAA)为起始地址。D4(AI)为多次读出时的地址自动增量标志,D3无用。在键扫描方式中,AIAAA均被忽略,CPU总是按先进先出的规律读键输入数据,直至输入键全部读出为止。在传感器矩阵方式中,若AI=1,则CPU从起始地址开始依次读出,每读出一个数据地址自动加1;AI=0,CPU仅读出一个单元的内容。

四、读显示RAM命令 D7D6D5=011为该命令的特征位。 D3~D0(AAAA)用来寻址显示RAM的16个存储单元,AI为自动增量标志,若AI=1,则每次读出后地址自动加1。 五、写显示RAM命令 D7 D6 D5=100为该命令的特征位。 D4(AI)为自动增量标志,D3~D0(AAAA)为起始地址,数据写入按左端输入或右端输入方式操作。若AI=1,则每次写入后地址自动加1,直至所有显示RAM全部写完。

六、 显示器写禁止/消隐命令 D7 D6 D5=101为该命令的特征位。该命令用以禁止写A组和B组显示RAM。 在双4位显示器使用时,即OUTA3~OUTA0和OUTB3~OUTB0独立地作为两个半字节输出时,可改写显示RAM中的低半字节而不影响高半字节的状态,反之亦可改写高半字节而不影响低半字节。D1、D0位是消隐显示器特征位,要消隐两组显示器,必须使之同时为1,为0时则恢复显示。

七、清除命令 D7 D6 D5=110为该命令的特征位。CPU将清除命令写入8279,使显示缓冲器呈初态(暗码),该命令同时也能清除输入标志和中断请求标志。 D4 D3 D2(CDCDCD)用来设定清除显示RAM的方式。 D1(CF)=1为清除FIFO RAM的状态标志,FIFO RAM被置成空状态(无数据),并复位中断请求线IRQ时,传感器 RAM的读出地址也被置成0。 D0(CA)是总清的特征位,它兼有CD和CF 的联合效用。当CA =1时,对显示RAM的清除方式仍由D3﹑D2编码确定。

八、结束中断/错误方式设置命令 D7 D6 D5=101为该命令的特征位。此命令用来结束传感器RAM的中断请求。 D4(E)=0 为结束中断命令。在传感器工作方式中使用。每当传感器状态出现变化时,扫描检测电路就将其状态写入传感器RAM,并启动中断逻辑使IRQ变高,向CPU请求中断,并且禁止写入传感器RAM。此时,若传感器RAM读出地址的自动增量特征位未设置(AI=0),则中断请求IRQ在CPU第一次从传感器RAM读出数据时就被清除。若AI=1,则CPU对传感器RAM读出并不能清除IRQ,而必须通过给8279写入结束中断/设置出错方式命令才能使IRQ变低。

D4(E)=1 为特定错误方式命令。在8279已被设定为键盘扫描N键轮回方式后,如果CPU给8279又写入结束中断/错误方式命令(E=1),则8279将以一种特定的错误方式工作。这种方式的特点是:在8279消抖周期内,如果发现多个按键同时按下,则FIFO状态字中的错误特征位S/E将置1,并产生中断请求信号和阻止写入FIFO RAM。

7.5 显示器及键盘接口 7.5.1 、七段显示器的原理 一、七段显示器的原理 7.5 显示器及键盘接口 7.5.1 、七段显示器的原理 一、七段显示器的原理

二、显示方式及接口 1、静态显示 并行输出:

串行输出:

2、动态显示

DIS:MOV R0,#79H ;显示数据缓冲区首地址送R0 MOV A,R3 ; LD0:MOV DPTR,#7F01H ;数据指针指向A口 MOVX @DPTR,A ;送扫描值 INC DPTR ;数据指针指向B口 MOV A,@R0 ;取欲显示的数据 ADD A,#0DH ;加上偏移量 MOVC A,@A+PC ;取出字型码 MOVX @DPTR,A ;送显示 ACALL DL1 ;调用延时子程序 INC R0 ;指向下一个显示段数据地址 MOV A,R3 ; JB ACC.5,ELD1 ;扫描到第六个显示器否? RL A ;未到,扫描码左移1位 MOV R3,A AJMP LD0 ELD1:RET

DSEG:DB 3FH,06H,5BH,4FH,66H,6DH DB 7DH,07H,7FH,6FH,77H,7CH DB 39H,5EH,79H,71H,40H,00H DL1:MOV R7,#02H ;延时1ms子程序 DL:MOV R6,#0FFH DL6:DJNZ R6,DL6 DJNZ R7,DL RET

7.5.2 键盘及其接口 按键在闭合和断开时,触点会存在抖动现象:

一、 独立式按键及其接口 芯片内有上拉电阻 芯片内无上拉电阻

随机扫描程序(也可以用定时扫描或中断扫描)如下: SMKEY:ORL P1,#0FFH ;置P1口为输入方式 MOV A,P1 ;读P1口信息 JNB ACC.0,P0F ;0号键按下,转0号键处理 JNB ACC.1,P1F ;1号键按下,转1号键处理 … … JNB ACC.7,P7F ;7号键按下,转7号键处理 LJMP SMKEY P0F:LJMP PROG0 P1F:LJMP PROG1 P7F:LJMP PROG7 PROG0:… … LJMP SMKEY PROG1:… … PROG7:… …

二、矩阵式键盘及其接口 判有无键按下; 判按下的是哪一键; 键处理。

SMKEY:MOV P1,#0FH ;置P1口高4位为“0”、低4位为输入状态 MOV A,P1 ;读P1口 ANL A,#0FH ;屏蔽高4位 CJNE A,#0FH,HKEY ;有键按下,转HKEY SJMP SMKEY ;无键按下转回 HKEY:LCALL DELAY10 ;延时10ms,去抖 MOV A,P1 ; ANL A,#0FH ; CJNE A,#0FH,WKEY ;确认有键按下,转判哪一键按下 SJMP SMKEY ; 是抖动转回 WKEY:MOV P1,#1110 1111B ;置扫描码,检测P1.4列 MOV A,P1 ; CJNE A,#0FH,PKEY ;P1.4列(Y0)有键按下,转键处理

MOV P1,#1101 1111B ;置扫描码,检测P1.5列 MOV A,P1 ; ANL A,#0FH ; CJNE A,#0FH,PKEY ;P1.5列(Y1)有键按下,转键处理 MOV P1,#1011 1111B ;置扫描码,检测P1.6列 CJNE A,#0FH,PKEY ;P1.6列(Y2)有键按下,转键处理 MOV P1,#0111 1111B ;置扫描,检测P1.7列 MOV A,P1 ; CJNE A,#0FH,PKEY ;P1.7列(Y3)有键按下,转键处理 LJMP SMKEY ; PKEY:… … ;键处理

线反转法示例程序 : SMKEY:MOV P1,#0FH ;置P1口高4位为“0”、低4位为输入状态 MOV A,P1 ;读P1口 ANL A,#0FH ;屏蔽高4位 CJNE A,#0FH,HKEY ;有键按下,转HKEY SJMP SMKEY ;无键按下转回 HKEY:LCALL DELAY10 ;延时10ms,去抖 MOV A,P1 ; ANL A,#0FH ; MOV B,A ;行线状态在B的低4位 CJNE A,#0FH,WKEY ;确认有键按下,转判哪一键按下 SJMP SMKEY ; 是抖动转回 WKEY:MOV P1,#0F0H ;置P1口高4位为输入、低4位为“0” MOV A,P1 ; ANL A,#0F0H ;屏蔽低4位 ORL A,B ;列线状态在高4位,与行线状态合成于B中 … … ;键处理

键处理。键处理是根据所按键散转进入相应的功能程序。为了散转的方便,通常应先得到按下键的键号。键号是键盘的每个键的编号,可以是10进制或16进制。键号一般通过键盘扫描程序取得的键值求出。键值是各键所在行号和列号的组合码。如图所示接口电路中的键“9”所在行号为2,所在列号为1,键值可以表示为“21H”(也可以表示为‘12H’,表示方法并不是唯一的,要根据具体按键的数量及接口电路而定)。根据键值中行号和列号信息就可以计算出键号,如: 键号=所在行号×键盘列数+所在列号, 即2×4+1=9 根据键号就可以方便地通过散转进入相应键的功能程序。

7.5.3 键盘和显示器接口示例 一、8155的键盘及显示接口

KD1:MOV A,#00000011B;8155初始化:PA、PB为基本输出,PC为输入 MOV DPTR,#7F00H ; MOVX @DPTR,A ; KEY1:ACALL KS1 ;查有无键按下 JNZ LK1 ;有,转键扫描 ACALL DIS ;调显示子程序 AJMP KEY1 ; LK1: ACALL DIS ;键扫描 ACALL DIS ;两次调显示子程序,延时12ms ACALL KS1 ; JNZ LK2 ; ACALL DIS ;调显示子程序 AJMP KEY1

LK2:MOV R2,#0FEH ;从首列开始 MOV R4,#00H ;首列号送R4 LK4:MOV DPTR,#7F01H ; MOV A,R2 ; MOVX A,@DPTR ; INC DPTR ; INC DPTR ;指向C口 MOVX @DPTR,A ; JB ACC.0,LONE ;第0行无键按下,转查第1行 MOV A,#00H ;第0行有键按下,该行首键号送A AJMP LKP ;转求键号 LONE: JB ACC.1,LTWO ;第1行无键按下,转查第2行 MOV A,#08H ;第1行有键按下,该行首键号送A LTWO: JB ACC.2,NEXT ;第2行无键按下,转查下一列 MOV A,#10H ;第2行有键按下,该行首键号送A LKP: ADD A,R4 ;求键号。键号=行首键号+列号 PUSH ACC ;保护键号 LK3: ACALL DIS ;等待键释放 ACALL KS1 ; JNZ LK3 ; POP ACC ; RET ;键扫描结束。此时A的内容为按下键的键号

NEXT:INC R4 ;指向下一列 MOV A,R2 ; JNB ACC.5,KND ;判6列扫描完没有。 RL A ;未完,扫描字对应下一列 MOV R2,A ; AJMP LK4 ;转下一列扫描 KND: AJMP KEY1 ;扫完,转入新一轮扫描 KS1: MOV DPTR,#7F01H ;查有无键按下子程序。先指向A口 MOV A,#00H ; MOVX @DPTR,A ;送扫描字“00H” INC DPTR ; INC DPTR ;指向C口 MOVX A,@DPTR ; CPL A ;变正逻辑 ANL A,#0FH ;屏蔽高位 RET ;子程序出口,A的内容非0则有键按下

二、8279的键盘及显示接口

初始化程序如下: INIT:MOV DPTR,#7FFFH ;置8279命令/状态口地址 MOV A,#0D1H ;置清显示命令字 MOVX @DPTR,A ;送清显示命令 WEIT:MOVX A,@DPTR ;读状态 JB ACC.7,WEIT ;等待清显示RAM结束 MOV A,#34H ;置分频系数,晶振12MHz MOVX @DPTR,A ;送分频系数 MOV A,#00H ;置键盘/显示命令 MOVX @DPTR,A ;送键盘/显示命令 MOV IE,#84H ;允许8279中断 RET

显示子程序如下: DIS:MOV DPTR,#7FFFH ;置8279命令/状态口地址 MOV R0,#30H ;字段码首地址 MOV R7,#08H ;8位显示 MOV A,#90H ;置显示命令字 MOVX @DPTR,A ;送显示命令 MOV DPTR,#7FFEH ;置数据口地址 LP:MOV A,@R0 ;取显示数据 ADD A,#6 ;加偏移量 MOVC A,@A+PC ;查表,取得数据的段码 MOVX @DPTR,A ;送段码显示 INC R0 ;调整数据指针 DJNZ R7,LP ; RET

SEG:DB 3FH,06H,5BH,4FH,66H,6DH ;字符0、1、2、3、4、5段码 DB 7DH,07H,7EH,6FH,77H,7CH ;字符6、7、8、9、A、b段码 DB 39H,5EH,79H,71H,73H,3EH ;字符C、d、E、F、P、U段码 DB 76H,38H,40H,6EH,FFH,00H ;字符H、L、-、Y、日、“空”段码

键盘中断子程序如下: KEY:PUSH PSW PUSH DPL PUSH DPH PUSH ACC PUSH B SETB PSW.3 MOV DPTR,#7FFFH ;置状态口地址 MOVX A,@DPTR ;读FIFO状态 ANL A,#0FH ; JZ PKYR ; MOV A,#40H ;置读FIFO命令 MOVX @DPTR,A ;送读FIFO命令 MOV DPTR,#7FFEH ;置数据口地址 MOVX A,@DPTR ;读数据 LJMP KEY1 ;转键值处理程序 PKYR: POP B POP ACC POP DPH POP DPL POP PSW RETI ; KEY1: … … ;键值处理程序

三、串行口键盘及显示接口电路

思考题与习题 1、试以80C31为主机,用2片2764 EPROM扩展16K ROM,画出硬件接线图。 2、设计扩展2KB RAM和4KB EPROM的电路图。 3、当单片机应用系统中数据存储器RAM地址和程序存储器EPROM地址重叠时,是否会发生数据冲突,为什么? 4、80C51单片机在应用中P0和P2是否可以直接作为输入/输出连接开关、指示灯等外围设备? 5、七段LED显示器有动态和静态两种显示方式,这两种显示方式要求80C51系列单片机如何安排接口电路? 6、设计80C51键盘显示接口,采用中断扫描方式扩展3×6共18个键分别为0~9、A~F、RUN和RESET键,具体要求如下: a、按下RESET键后,单片机复位。 b、按下RUN键后,系统进入地址为2000H的用户程序。 c、按下0~9、A~F键后,键值存入内部RAM,首地址为40H。 试画出接口电路的硬件连接图并编写相应程序。 7、试编写图7-27所示接口电路的实现程序