第10章 MCS-51与键盘、显示器、拨盘、打印机的接 口设计 输出外设:LED显示器、LCD显示器、打印机等。

Slides:



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

第7章 AT89S51单片机的 串行口 1.
本章分为五节,主要介绍: 7.1 存储器的扩展 7.2 输入/输出及其控制方式 7.3 并行接口的扩展 接口芯片 7.5 显示器及键盘接口.
实验四 利用中规模芯片设计时序电路(二).
5.4 顺序脉冲发生器、 三态逻辑和微机总线接口 顺序脉冲发生器 顺序脉冲 计数型 分类 移位型.
第5章 中断系统 5.1 中断的概念 5.2 MCS-51单片机的中断流程 5.3 MCS-51的中断响应条件和中断处理
本章内容: 中断的概念 MCS-51单片机中断系统 外部事件中断及应用
第 十 章 单 片 机 应用系统 Single Chip Microcomputer 本章内容 人机接口 键盘接口 显示器接口.
8051 指令.
第四章 指令系统及汇编语言程序设计.
本章分为四节,主要介绍: 4.1 程序编制的方法和技巧 4.2 源程序的编辑和汇编 4.3 基本程序结构 4.4 常用程序举例.
单片机原理与应用.
第9章 数模转换器与模数转换器 本章学习目标 了解数模转换器的工作原理及性能指标 掌握模数转换器的应用 掌握数模转换器的应用.
第2章 MCS-51单片机指令系统与汇编语言程序设计
報告者:朱耿育 紀翔舜 組員:詹以群 張永傑 指導老師:梁新潁
复 习 一. 计算机中的数和编码 1. 2,10,16进制数及其之间的转换(整数) 按权展开,除x取余 2
单片机应用技术 项目一 循环彩灯装置 第6讲 指令功能及汇编语言程序设计(一) 《单片机应用技术》精品课程组 湖北职业技术学院机电工程系.
本章内容: 中断的概念 MCS-51单片机中断系统 外部事件中断及应用
第二部分 微机原理 第3章 MCS-51的 指令系统 主讲教师:喻红.
一、任务描述 二、任务分析 三、任务演示 四、相关知识 五、任务布置. 一、任务描述 二、任务分析 三、任务演示 四、相关知识 五、任务布置.
第6章 MCS - 51单片机内部定时器/ 计数器 及串行接口 6.1 定时器/计数器的结构及工作原理 6.2 方式和控制寄存器
第七章 MCS-51系统扩展 一、程序存储器扩展
第3章 AT89C51指令系统 3.1基本概念内部结构和引脚功能 指令、指令系统、机器代码
单片机原理及应用 MCS-51系列单片机的基本硬件结构 MCS-51指令系统 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 中断应用举例
单元五 MCS-51单片机内部资源 5.1 任务九 单片机计数并显示 5.2 任务十 单片机流水灯控制 5.3 任务十一 两台单片机数据互传
本 章 重 点 单片机的结构特点 单片机的存储器特点 I/O端口的特点 CPU时序 课时安排:3个课时.
第七章 显示器与键盘接口 第一章 8086程序设计 第二章 MCS-51程序设计 第三章 微机基本系统的设计 第四章 存贮器与接口
第四章 指令系统及汇编语言程序设计.
第4章 中断技术 一个完整的微机系统是由硬件和软件共同构成的。微机系统的硬件有CPU、存储器和I/O口,外设组成。CPU与存储器之间的信息交换比较简单,而CPU与外设之间进行信息交换之前必须确定外设是否准备好,即选择I/O传送方式。I/O传送方式有4种:无条件、查询、中断和DMA。本章学习中断传送方式的有关内容。
数码管数字时钟电路的设计 1. 系统硬件电路的设计
第四章 MCS-51定时器/计数器 一、定时器结构 1.定时器结构框图
第3章 MCS-51指令系统 介绍MCS—51系列单片机的寻址方式 介绍MCS—51系列单片机的指令系统
第4章 80C51系列指令系统 教学目的:熟悉80C51系列单片机的寻址方式及 每一种寻址方式对应的寻址空间;掌 握每一条指令功能。
本章内容 MCS-51单片机指令系统的格式 MCS-51单片机寻址方式 指令系统的分析
(Random Access Memory)
第二章 补充知识 2.1 总线和三态门 一、总线(BUS) 三总线结构 数据总线DB(Data Bus)
实验三 16位算术逻辑运算实验 不带进位控制的算术运算 置AR=1: 设置开关CN 1 不带进位 0 带进位运算;
3.1 指令系统简介 一、几个概念 二、汇编语言指令格式 三、指令的分类 四、指令的符号说明 主讲:吴政江 下一页.
实验二 带进位控制8位算术逻辑运算实验 带进位控制8位算术逻辑运算: ① 带进位运算 ② 保存运算后产生进位
汽车单片机应用技术 学习情景1: 汽车空调系统的单片机控制 主讲:向楠.
第八章 总线技术 8.1 概述 8.2 局部总线 8.3 系统总线 8.4 通信总线.
四、手工汇编 完成汇编的方法有两种:手工汇编和汇编程序汇编 1.手工汇编步骤 A
单片机原理与应用.
3. 逻辑运算指令 A、简单逻辑操作指令 CLR A. (不影响CY、AC、 OV标志) CPL A
简单芯片扩展I/O接口 8155可编程接口芯片及其使用 键盘及显示器接口设计 A/D和D/A转换接口技术
汽车单片机应用技术 学习情景1: 汽车空调系统的单片机控制 主讲:向楠.
微机原理与接口技术 西安邮电大学计算机学院 杨锐.
单片机应用技术 (C语言版) 第3章 MCS-51指令系统及 汇编程序设计
第二章 MCS-51单片机程序设计 第一章 8086程序设计 第三章 微机基本系统的设计 第四章 存贮器与接口 第五章 并行接口
上节复习(11.7) 1、定时/计数器的基本原理? 2、定时/计数器的结构组成? 3、定时/计数器的控制关系?
第4章 MCS-51汇编语言程序设计 教学基本要求: (1)、了解MCS-51汇编语言程序设计的特点;
第2章 80C51单片机的硬件结构 教学基本要求: (1)、熟悉单片机的定义、名称、分类方法;
人机界面接口技术(人机交互) 4.1 显示人机界面接口技术 4.2 常用显示设备应用介绍:LED、七段数码管、LCM、LCD等;
第1章 微型计算机基础.
Presentation transcript:

第10章 MCS-51与键盘、显示器、拨盘、打印机的接 口设计 输出外设:LED显示器、LCD显示器、打印机等。 输入外设:键盘、BCD码拨盘等; 输出外设:LED显示器、LCD显示器、打印机等。 10.1 LED显示器接口原理 LED(Light Emitting Diode):发光二极管的缩写。 显示器前面冠以“LED”。 10.1.1 LED显示器的结构 常用的LED显示器为8段(或7段,8段比7段多了一 个小数点“dp”段)。 有共阳极和共阴极两种。如图10-1所示。

提供给LED显示器的段码(字型码)正好是一个字 节(8段)。各段与字节中各位对应关系如下: 为使LED显示不同的符号或数字,要为LED提供段码 (或称字型码)。 提供给LED显示器的段码(字型码)正好是一个字 节(8段)。各段与字节中各位对应关系如下: 按上述格式,8段LED的段码如表10-1所示。

表10-1 LED段码(8段) 显示字符 共阴极段码 共阳极段码 3FH C0H c 39H C6H 1 06H F9H d 5EH A1H 3FH C0H c 39H C6H 1 06H F9H d 5EH A1H 2 5BH A4H E 79H 86H 3 4FH B0H F 71H 8EH 4 66H 99H P 73H 8CH 5 6DH 92H U 3EH C1H 6 7DH 82H T 31H CEH 7 07H F8H y 6EH 91H 8 7FH 80H H 76H 89H 9 6FH 90H L 38H C7H A 77FH 88H “灭” 00H FFH b 7CH 83H …

表10-1只列出了部分段码,可根据实际情况选用。 另外,段码是相对的,它由各字段在字节中所处的 位决定。例如表10-1中8段LED段码是按格式: 而形成的, “0”的段码为3FH(共阴)。反之,如 将格式改为下列格式: 则 “0”的段码为7EH(共阴)。 字型及段码由设计者自行设定,习惯上还是以“a” 段对应段码的最低位。

10.1.2 LED显示器工作原理 图10-2是4位 LED显示器的结构原理图。 N个LED显示块有N位位选线和8×N根段码线。

段码线控制显示的字型, 位选线控制该显示位的亮或暗。 静态显示和动态显示两种显示方式。 1. 静态显示方式 各位的公共端连接在一起(接地或+5V)。 每位的段码线(a~dp)分别与一个8位的锁存器 输出相连。 显示字符一确定,相应锁存器的段码输出将维持 不变,直到送入另一个段码为止。显示的亮度高。 图10-3: 4位静态LED显示器电路。该电路各位可独立显示。

2. 动态显示方式 所有位的段码线相应段并在一起,由一个8位I/O 口控制,形成段码线的多路复用,各位的公共端分别由 相应的I/O线控制,形成各位的分时选通。

图10-4:4位8段LED动态显示电路。其中段码线占用一个8位I/O口,而位选线占用一个4位I/O口。

图10-5为8位LED动态显示2003.10.10的过程。 图(a)是显示过程,某一时刻,只有一位LED被选通 显示,其余位则是熄灭的; 图(b)是实际显示结果,人眼看到的是8位稳定的 同时显示的字符。

10.2 键盘接口原理 1. 键盘输入的特点 键盘:一组按键开关的集合。 行线电压信号通过键盘开关机械触点的断开、闭合, 输出波形如图10-6。

采取以上措施,躲开了两个抖动期t1和t3的影响。 2. 按键的确认 检测行线电平 高电平:断开;低电平:闭合, 3.如何消除按键的抖动 常用软件来消除按键抖动。 基本思想:检测到有键按下,键对应的行线为低,软 件延时10ms后,行线如仍为低,则确认该行有键按下。 当键松开时,行线变高,软件延时10ms后,行线仍为 高,说明按键已松开。 采取以上措施,躲开了两个抖动期t1和t3的影响。

此种接口适于键数较少或操作速度较高的场合。 图10-7(a)为中断方式的独立式键盘工作电路 图10-7(b)为查询方式的独立式键盘工作电路。 10.2.2 键盘接口的工作原理 独立式按键接口和行列式键盘接口。 1.独立式键盘接口 各键相互独立,每个按键各接一根输入线,通过检 测输入线的电平状态可很容易判断那个键被按下。 此种接口适于键数较少或操作速度较高的场合。 图10-7(a)为中断方式的独立式键盘工作电路 图10-7(b)为查询方式的独立式键盘工作电路。

图10-8为8255A扩展I/O口的独立式按键接口电路。

图10-9用三态缓冲器扩展的I/O口的按键接口电路。

CJNE A,R3,RETURN ;两次不同,抖动引起转RETURN 对图10-9独立式键盘编程,软件消抖,查询方式检测键的状态。仅有一键按下时才有效才处理。 KEYIN:MOV DPTR,#0BFFFH;键盘端口地址BFFFH MOVX A,@DPTR ;读键盘状态 ANL A,#1FH ;屏蔽高三位 MOV R3,A ;保存键盘状态值 LCALL DELAY10 ;延时10ms去键盘抖动 MOVX A,@DPTR ;再读键盘状态 ANL A,#1FH ;屏蔽高三位 CJNE A,R3,RETURN ;两次不同,抖动引起转RETURN CJNE A,#1EH,KEY2 ;相等,有键按下,不等转KEY2

LJMP PKEY1 ;是K1键按下,转K1键处理 ;子程序PKEY1 KEY2: CJNE A,#1DH,KEY3 ;S2键未按下,转KEY3 LJMP PKEY2 ;S2键按下,转PKEY2处理 KEY3: CJNE A,#1BH,KEY4 ;S3未按下,转KEY4 LJMP PKEY3 ;S3按下,转PKEY3处理 KEY4: CJNE A,#17H,KEY5 ;S4键未按下,转KEY5 LJMP PKEY4 ;S4按下,转PKEY4处理 KEY5: CJNE A,#0FH,PASS ;S5未按下,转RETURN LJMP PKEY5 ;S5按下,转PKEY5处理 RETURN:RET ;重键或无键按下,从子程序返回 识别和编程简单,用在按键数较少的场合。

2. 行列式(矩阵式)键盘接口 用于按键数目较多的场合,由行线和列线组成, 按键位于行、列的交叉点上。如图10-10所示。 按键数目较多的场合,行列式键盘与独立式键盘 相比,要节省很多的I/O口线。

(1)行列式键盘工作原理 无键按下,该行线为高电平,当有键按下时,行线电平由列线的电平来决定。 由于行、列线为多键共用,各按键彼此将相互发 生影响,必须将行、列线信号配合起来并作适当的处 理,才能确定闭合键的位置。 (2)按键的识别方法 a. 扫描法 图10-10(b)中3号键被按下为例,来说明此键 时如何被识别出来的。

识别键盘有无键被按下的方法,分两步进行: 第1步:识别键盘有无键按下; 第2步:如有键被按下,识别出具体的按键。 把所有列线置0,检查各行线电平是否有变化,如有变化,说明有键按下,如无变化,则无键按下。 上述方法称为扫描法,即先把某一列置低电平, 其余各列为高电平,检查各行线电平的变化,如果某 行线电平为低,可确定此行列交叉点处的按键被按 下。 b. 线反转法 只需两步便能获得此按键所在的行列值,线反转 法的原理如图10-11。

第1步:列线输出为全低电平,则行线中电平由高变低 的所在行为按键所在行。 第2步:行线输出为全低电平,则列线中电平由高变低 所在列为按键所在列。 结合上述两步,可确定按键所在行和列。 (3)键盘的编码 根据实际需要灵活编码。 10.2.3 键盘的工作方式 单片机在忙于各项工作任务时,如何兼顾键盘的输 入,取决于键盘的工作方式。

原则:即要保证能及时响应按键操作,又不要过多占 用CPU的工作时间。 通常,键盘工作方式有3种,即编程扫描、定时扫 描和中断扫描。 1. 编程扫描方式 只有当单片机空闲时,才调用键盘扫描子程序, 扫描键盘。 工作过程: (1)在键盘扫描子程序中,先判断有无键按下。 方法:PA口8位输出全0,读PC口低4位状态,若PC0~ PC3为全1,则说明键盘无键按下;若不全为1,则说明 键盘可能有键按下。

(2)用软件来消除按键抖动的影响。如有键按下,则 进行下一步。 (3)求按下键的键号。 (4)等待按键释放后,再进行按键功能的处理操作。 2. 定时扫描工作方式 利用单片机内的定时器,产生10ms的定时中断,对 键盘进行扫描。 3.中断工作方式 只有在键盘有键按下时,才执行键盘扫描程序,如 无键按下,单片机将不理睬键盘。 键盘所做的工作分为三个层次,如图10-13。

第1层:单片机如何来监视键盘的输入。三种工作方 式:①编程扫描②定时扫描③中断扫描。 第2层:确定具体按键的键号。体现在按键的识别方 法上就是:①扫描法;②线反转法。 第3层:执行键处理程序。 10.3 键盘/显示器接口设计实例 一般把键盘和显示器放在一起考虑。 10.3.1 利用并行I/O芯片实现键盘/显示器接口 图10-14:8031用扩展I/O接口芯片8155H实现的 6位LED显示和32键的键盘/显示器接口电路。图中 8155H也可用8255A来替代。

8031外扩一片8155H。RAM地址:7E00H~7EFFH。 I/O口地址:7F00H~7F05H。 PA口为输出口,控制键盘列线的扫描,同时又是6位共阴极显示器的位扫描口。 PB口作为显示器段码输出口,PC口作为键盘的行线状态的输入口。 75452:反相驱动器,7407:同相驱动器。 1.动态显示程序设计 8031内部RAM 6个显示缓冲单元:79H~7EH,存 放要显示的6位数据。 8155H的PB口输出相应位的段码,依次改变PA口 输出为高的位使某一位显示某一字符,其它位为暗。 动态地显示出由缓冲区中显示数据所确定的字符。程 序流程如图10-15 。

参考程序: ;最左边LED亮 DIR: MOV R0,#79H ;置缓冲器指针初值 MOV R3,#01H ;位选码的初值送R3 MOV A,R3 LD0: MOV DPTR,#7F01H;位选码→PA口(PA.0位) ;最左边LED亮 MOVX @DPTR,A INC DPTR ;数据指针指向PB口 MOV A,@R0 ;显示数据→A ADD A,#0DH ;加偏移量(下条指令到表首间 ;所有指令占的单元数) MOVC A,@A+PC ;根据显示数据来查表取段码

DIR1: MOVX @DPTR,A ;段码→8155HPB口 ACALL DL1ms ;该位显示1ms INC R0 ;指针指向下一个数据单元 MOV A,R3 ;位选码送入A中 JB Acc.5,LD1 ;判断是否扫描到最右边的 ; LED,如到最右边则返回 RL A ;位选码向左移一位,准备让 ; 右边的下一位LED亮 MOV R3,A ;位选码送R3中保存 AJMP LD0 ; LD1: RET ; DSEG: DB 3FH,06H,5BH,4FH,66H,6DH ;共阴极段码表 DB 7DH,07H,7FH,6FH,77H,7CH DB 39H,5EH,79H,71H,73H,3EH

2.键盘程序设计 (1)判别键盘上有无键闭合 (2)去除键的机械抖动 (3)判别闭合键的键号 (4)使CPU对键的一次闭合仅作一次处理 DB 31H,6EH,1CH,23H,40H,03H DB 18H,00H DL1ms: MOV R7,#02H ;延时1ms子程序 DL: MOV R6,#0FFH DL6: DJNZ R6,DL6 DJNZ R7,DL RET 2.键盘程序设计 (1)判别键盘上有无键闭合 (2)去除键的机械抖动 (3)判别闭合键的键号 (4)使CPU对键的一次闭合仅作一次处理 键盘程序的流程如图10-16。

键盘子程序如下: KEYI:ACALL KS1 ;调用判有无键闭合子程序 JNZ LK1 ;有键闭合,跳LK1 NI: ACALL DIR ;无键闭合,调用显示子程序,延 ;迟6ms后,跳KEYI AJMP KEYI LK1: ACALL DIR ;可能有键闭合,软件延迟12ms去抖 ACALL DIR ACALL KS1 ;调用判有无键闭合子程序 JNZ LK2 ;经去抖,判键确实闭合,跳LK2 ACALL DIR ;调用显示子程序延迟6ms AJMP KEYI ;抖动引起,跳KEYI LK2: MOV R2,#0FEH ;列选码→R2 MOV R4,#00H ;R4为列号计数器

LK4: MOV DPTR,#7F01H ;列选码→8155H的PA口 MOV A,R2 ; MOVX @DPTR,A ; INC DPTR ;数据指针增2,指向PC口 INC DPTR ; MOVX A,@DPTR ;读8155H PC口 JB Acc.0,LONE ;0行线为高,无键闭合,跳 LONE,转判1行 MOV A,#00H ;0行有键闭合,首键号0→A AJMP LKP ;跳LKP,计算键号 LONE:JB Acc.1,LTW0 ;1行线为高,无键闭合,跳LTW0, ;转判2行 MOV A,#08H ;1行有键闭合,首键号8→A AJMP LKP

LTW0:JB A.2,LTHR ;2行线为高,无键闭合,跳 ;LTHR,转判3行 MOV A,#10H ;2行有键闭合,首键号10H→A AJMP LKP ;跳LKP,计算键号 LTHR:JB Acc.3,NEXT ;3行线为高,无键 ;闭合,跳NEXT,准备下一列扫描 MOV A,#18H ;3行有键闭合,首键号18H→A LKP: ADD A,R4 ;计算键号:首键号+列号=键号 PUSH A ;键号进栈保护 LK3: ACALL DIR ;调用显示子程序,延时6ms ACALL KS1 ;调用判有无键闭合子程序,延时 ;6ms JNZ LK3 ;判键释放否,未释放,则循环 POP A ;键已释放,键号出栈→A RET

NEXT:INC R4 ;列计数器加1,为下一列扫描作准备 MOV A,R2 ;判是否已扫到最后一列(最右一列) JNB Acc.7,KND ;键扫描已扫到最后一列,跳KND, ;重新进行整个键盘扫描 RL A ;键扫描未扫到最后一列,,位选码左移 ;一位 MOV R2,A ;位选码→R2 AJMP LK4 ; KND: AJMP KEYI ; KS1: MOV DPTR ,#7F01H;判有无键闭合子程序,全“0”→ ;扫描口(PA口) MOV A,#00H ;即列线全为低电平 MOVX @DPTR,A ; INC DPTR ;DPTR增2,指向PC口

串口为方式0输出,串口外接移位寄存器74LS164。 INC DPTR ;指针增1,指向PC口 MOVX A,@DPTR ;从PC口读行线的状态 CPL A ;行线取反,如无键按下,则A为0; ANL A,#0FH ;屏蔽无用的高4位 RET 10.3.2 利用8031的串行口实现键盘/显示器接口 串口未作它用,可用来外扩键盘/显示器。 串口为方式0输出,串口外接移位寄存器74LS164。 接口电路如图10-17。 74LS164(0)~74LS164(7):作为8位LED的段码输出, 8031的P3.4、P3.5:两行键的行状态输入 P3.3(TXD):同步移位脉冲输出控制线,

优点:亮度大,容易做到显示不闪烁,且CPU不必 频繁的为显示服务,从而使单片机有更多的时间处理 其它事务。 显示子程序: DIR: SETB P3.3 ;P3.3=1允许TXD脚同步移位 ;脉冲输出 MOV R7,#08H ;送出的段码个数,R7为段 ;码个数计数器 MOV R0,#7FH ;7FH~78H为显示数据缓冲区 DL0: MOV A,@R0 ;取出要显示的数送A ADD A,#0DH ;加上偏移量 MOVC A,@A+PC ;查段码表SEGTAG,取出段码 MOV SBUF ,A ;将段码送SBUF

DL1: JNB TI,DL1 ;输出段码,查询TI状态,1个字节 ;的段码输出完否? CLR TI ;1个字节的段码输出完,清TI标志 DEC R0 ;指向下一个显示数据单元 DJNZ R7,DL0 ;段码个数计数器R7是否为0, 如不 ; 为0,继续送段码 CLR P3.3 ;8个段码输出完毕,关显示器输出 RET ;返回 SEGTAB:DB 0C0H,0F9H,0A4H,0B0H,99H ;共阳极段码表, ;0,1,2,3,4 DB 92H,82H,0F8H,90H ;5,6,7,8,9 DB 88H,83H,0C6H,0A1H,86H ;A,B,C,D,E DB 8FH,0BFH,8CH,0FFH,0FFH ;F,-,P,暗

键盘扫描子程序: KEYI:MOV A,#00H ;判有无键按下,使所有列线为0 ;的编码送A MOV SBUF,A ;扫描键盘的(8)号74LS164输 ;出为00H,使所有列线为0 KL0: JNB TI,KL0 ;串行输出完否? CLR TI ;串行输出完毕,清TI KL1: JNB P3.4,PK1 ;第1行有闭合键吗?如有,跳 ;PK1进行处理 JB P3.5,KL1 ;在第2行键中有闭合键吗?无闭 ;合键跳KL1 PK1: ACALL DL10 ;调用延时10ms子程序DL10,软 ;件消除抖动 JNB P3.4,PK2 ;判是否抖动引起的?

JB P3.5,KL1 PK2: MOV R7,#08H ;不是抖动引起的 MOV R6,#0FEH ;判别是哪一个键按下,FEH为最 ;左一列为低 MOV R3,#00H ;R3为列号寄存器 MOV A,R6 ; KL5: MOV SBUF,A ;列扫描码从串行口输出 KL2: JNB TI,KL2 ;等待串行口发送完 CLR TI ;串行口发送完毕,清TI标志 JNB P3.4,PKONE ;读第1行线状态,第1行有键闭 ;合,跳PKONE处理 JB P3.5,NEXT ;读第2行状态,是第2行某键否? MOV R4,#08H ;第2行键中有键被按下,行首键 ;号08H送R4 AJMP PK3 ;

PKONE:MOV R4,#00H ;第1行有键按下,行首键号00H送R4 PK3: MOV SBUF,#00H ;等待键释放,发送00H使所有列 ;线为低 KL3: JNB TI,KL3 ; CLR TI ;发送完毕,清标志 KL4: JNB P3.4,KL4 ;判行线状态 JNB P3.5,KL4 ; MOV A,R4 ;两行线均为高,说明键已释放 ADD A,R3 ;计算得到键码→A RET NEXT: MOV A,R6 ;列扫描码左移一位,判下列键 RL A ; MOV R6,A ;记住列扫描码于R6中 INC R3 ;列号增1 DJNZ R7,KL5 ;列计数器R7减1,8列键都检查 ;完?

Intel 8279芯片:通用可编程键盘/显示器接口芯片。 AJMP KEYI ;8列键扫描完毕,开始下一个键 ;盘扫描周期 DL10: MOV R7,#0AH ;延时10ms子程序 DL: MOV R6,#0FFH DL6: DJNZ R6,DL6 DJNZ R7,DL RET 10.3.3 利用通用键盘/显示器接口芯片8279实现键盘/ 显示器接口 Intel 8279芯片:通用可编程键盘/显示器接口芯片。 对键盘部分提供扫描工作方式,能对64个键键盘阵 列不断扫描,自动消抖,自动识别出闭合的键并得到键 号,能对双键或N键同时按下进行处理。

扫描方式的显示接口,可显示多达16位的字符。 1.8279的引脚及内部结构

2. 引脚功能介绍 (1)与CPU的接口引脚 DB0~DB7:数据总线、双向、三态,与单片机数据 总线相连,在CPU和8279之间传送命令或数据。 CLK:系统时钟,用于8279内部定时,以产生其工作 所需的时序。 RESET:高电平时,8279被复位,复位后的状态如下: * 16个字符左边输入显示方式 * 编码扫描键盘、双键锁定方式 CS*:片选

(2)扫描信号输出引脚 A0:=1,写入的是命令字节; 读出的是状态字节。 =0,写入或读出的字节均为数据。 RD*、WR*:读、写控制引脚 IRQ:中断请求线。在键盘方式中,当键盘RAM(先 进先出)中存有按下键的数据时,IRQ为高电平,向 CPU提出中断申请。 CPU每次从键盘RAM中读出一个字节数据时,IRQ就变为低电平。如果键盘RAM中还有未读完的数据,IRQ将再次变为高电平,再次提出中断请求。 (2)扫描信号输出引脚

SL0~SL3 扫描输出。用来扫描键盘和显示器。可编程设定 为编码输出,即SL0~SL3需外接4-16译码器,输出16 取1的扫描信号,也可编程设定为译码输出,即由SL0 ~SL3直接输出4取1的扫描信号。 (3)与键盘连接的引脚 RL0~RL7 键盘矩阵的行信号输入线。 SHIFT 输入线,通常用作键盘上、下档功能的控制键。 CNTL/STB 输入线,高电平有效。在键盘方式时,通常用来 作为键盘控制功能键使用。

(4)与显示器连接的引脚 OUTA0~OUTA3(A组显示数据)、OUTB0~OUTB3(B 组显示数据):向LED显示器输出的段码, 与扫描信号 线SL0~SL3同步。两组可独立使用,也可合并使用。 BD*:消隐显示控制。 3. 8279的基本功能部件 (1)扫描计数器 编码方式:扫描线SL0~SL3输出,经外部4-16译码器 译码后,为键盘和显示器提供16取1的扫描线。 译码方式:计数器的最低二位在8279内部译码后,从 SL0~SL3输出,为键盘和显示器提供4取1扫描线。

在逐列扫描时,当某一键闭合,消抖电路延时等 待10ms之后,再检验该键是否仍闭合。若闭合,则该 (2)键盘去抖动及回复缓冲器 RL0~RL7被接到键盘的行线。 在逐列扫描时,当某一键闭合,消抖电路延时等 待10ms之后,再检验该键是否仍闭合。若闭合,则该 键的行、列地址和附加的移位、控制状态一起形成键 盘数据,送入8279内部的键盘RAM存储器。格式为: D7 D6 D5 D4 D3 D2 D1 D0 CNTL SHIFT 扫 描 回 复 控制(CNTL)和移位(SHIFT)的状态由两个独立 的附加开关决定,而扫描(D5、D4、D3)是被按键的 列编码,而回复(D2、D1、D0)则是被按键的行位置 数据。

(3)键盘RAM及其状态寄存器 键盘RAM:8字节先进先出(FIFO)存储器。内部的FIFO 状态寄存器存放FIFO的工作状态,如FIFO是空还是满, 其中存有多少字符,是否操作出错等等。 当FIFO存储器空间不足时,状态逻辑将产生IRQ=1 信号,向CPU发出中断申请。 (4)显示RAM和显示地址寄存器 显示RAM:存显示数据。16个字节,可存放16位显示信 息。显示RAM的输出与显示扫描配合,同时轮流驱动被选中的显示位,使显示器呈现稳定的显示(动态扫描)。 4. 8279的命令字和状态字 命令字:D7、D6、D5为命令特征位,来区分8条不同

的命令字。 状态字:主要用于键盘工作方式,以指示键盘RAM中 的字符数和有无错误发生。 5. 8279与键盘/显示器的接口 图10-20为8279与8位显示器,4×8键盘的接口电路。 行线接8279的RL0~RL3,8279选用外部译码方式,SL0 ~SL2经74LS138(1)译码输出,接列线,实现键盘逐 列扫描。 SL0~SL2又由74LS138(2)译码输出到显示器各位的公 共阴极,进行逐位扫描显示。OUTB0~3、OUTA 0~3输 出8位段码。 当位切换时,BD*输出为低电平,使74LS138(2)输出 全为高电平,显示消隐。 当键盘上出现有效的闭合键时,键输入数据自动进入

中断读取键盘RAM中的键输入数据。若要更新显示器输 出,仅需改变8279中显示RAM中的内容。 图10-20:8279的命令/状态口地址为7FFFH,数据口 地址为7FFEH。 8279初始化程序: INITI: SETB EX1 ; 允许外部中断1中断 MOV DPTR,#7FFFH ; 命令/状态口地址写入DPTR MOV A,#0D1H ; 控制字D1H送A MOVX @DPTR,A ; 向命令/状态口写入控制字 LP: MOVX A,@DPTR ; 读8279的状态 JB Acc.7,LP MOV A,#00H MOVX @DPTR,A

MOV A,#2AH MOVX @DPTR,A SETB EA …… 键输入中断服务程序: PINT1:PUSH PSW PUSH DPH PUSH DPL PUSH Acc MOV DPTR,#7FFFH ;向命令口写入读键盘RAM命令 MOV A,#40H MOVX @DPTR,A MOV DPTR,#7FFEH ;读键输入值 MOVX A,@DPTR CJNE A,#37H,PRI1 ;判输入停机命令否

SETB 20H PRI1:POP Acc POP DPL POP DPH POP PSW RETI 显示子程序: DIR: MOV DPTR,#7FFFH ;输出写显示RAM命令 MOV A,#90H MOVX @DPTR,A MOV R0,#70H MOV R7,#08H ;送显示RAM数据的个数 MOV DPTR,#7FFEH DL0: MOV A,@R0

ADD A,#05H ;05H为查表偏移量 MOVC A,@A+PC ;查表得到段码 MOVX @DPTR,A ;写入显示RAM INC R0 ;显示数据单元地址增1 DJNZ R7,DL0 ;8个显示数据是否输出完毕 RET ADSEG:DB 3FH,06H,5BH,4FH,66H,6DH ;段码表(共阴极) DB 7DH,07H,7FH,6FH,77H,7CH DB 39H,5EH,79H,71H,73H,3EH DB 31H,6EH,1CH,23H,40H,03H DB 18H,38H,00H

10.4 MCS-51与液晶显示器(LCD)的接口 LCD(Liquid Crystal Display):液晶显示器 的缩写,一种被动式的显示器,即液晶本身并不发光,而是经液晶经过处理后能改变光线通过方向的特性,而达到白底黑字或黑底白字显示的目的。 液晶显示器具有功耗低、抗干扰能力强等优点, 广泛用在仪器仪表和控制系统中。 10.4.1 LCD显示器的分类 按排列形状分:字段型、点阵字符型和点阵图形。 (1)字段型 广泛用于电子表、数字仪表、计算器中。

(2)点阵字符型 显示字母、数字、符号。它是由5×7或5×10点阵 组成,广泛应用在单片机应用系统中。 (3)点阵图形型 笔记本电脑和彩色电视等设备中。 10.4.2 点阵字符型液晶显示模块介绍 点阵字符型LCD显示器,需相应的LCD控制器、驱 动器,来对LCD显示器进行扫描、驱动,以及一定空 间的RAM和ROM来存储写入的命令和显示字符的点阵。 现在已将LCD控制器、驱动器、RAM、ROM和LCD显 示器用PCB连接到一起,称为液晶显示模块LCM(LCd Module)。

用户只向LCM送入相应的命令和数据就可实现所需要 的显示内容,与单片机接口简单,使用灵活方便。产品分为字符和图形两种。 1.基本结构 (1)液晶板 在液晶板上排列着若干5×7或5×10点阵的字符显 示位,从规格上分为每行8、16、20、24、32、40位, 有一行、两行及四行三类,用户可根据需要,来选择 购买。 (2)模块电路框图 由控制器HD44780、驱动器HD44100及几个电阻电 容组成。HD44100是扩展显示字符位用的(例如:16字 符×1行模块就可不用HD44100,16字符×2行模块就要 用一片HD44100)。

条电源线,见表10-2。通过单片机写入模块的数据和 指令,就可对显示方式和显示内容作出选择。 模块14个引脚,其中有8条数据线,3条控制线,3 条电源线,见表10-2。通过单片机写入模块的数据和 指令,就可对显示方式和显示内容作出选择。 表10-2 液晶显示模块的引脚 引线号 符号 名称 功能 1 VSS 地 0V 2 VDD 电源 5V±5% 3 VEE 液晶驱动电压 4 RS 寄存器选择 1:数据寄存器;0:命令寄存器 5 R/W* 读/写 1:读; 0:写 6 E 使能 下降沿触发 7~14 DB0~DB7 8位数据线 数据传输

命令格式及命令功能说明 (1) 命令格式 控制器HD44780内有多个寄存器,如表10-3所示。 表10-3 寄存器的选择 RS R/W* 操 作 命令寄存器写入 1 忙标志和地址计数器读出 数据寄存器写入 数据寄存器读出

RS位和R/W*引脚上的电平来选择寄存器,而DB7~DB0则决定命令功能。 命令共11种:清除,返回,输入方式设置,显示 开关控制,移位控制,功能设置,CGRAM(字符生成 RAM)地址设置,DDRAM(显示数据RAM)地址设置, 读忙标志和地址,写数据到CGRAM或DDRAM,从CGRAM 或DDRAM读数据。 这些命令功能强:可组合成各种输入、显示、移位方式以满足不同的要求。

(2)标准字符库 图10-23:字符库的内容、字符码和字型的对应 关系。例如“A”的字符码为41H,“B”的字符码为42H。

10.4.3 8031与LCD的接口及软件编程 1.8031与LCD模块的接口 接口电路见图10-24。将LCM挂接在8031的总线 上,通过对数据总线的读写实现对LCM的控制。

1.软件编程 初始化 用户所编的显示程序,开始必须进行初始化,否 则模块无法正常显示。 显示程序编写(自己阅读) 10.5 MCS-51与微型打印机的接口 内部有一个控制用单片机,固化有控打程序,智 能化程度高。 常用的微型打印机:TPμP-40A/16A、GP16以及 XLF嵌入仪器面板上的汉字微型打印机。 10.5.1 MCS-51与TPμP-40A/16A微型打印机的接口

1. TPμP-40A/16A微型打印机 单片机控制的微型智能打印机。TPμP-40A与 TPμP-16A的接口信号与时序完全相同,操作方式相 近,硬件电路及插脚完全兼容,只是指令代码不完全 相同。TPμP-40A每行打印40个字符,TPμP-16A则每 行打印16个字符。 2. 主要性能、接口要求及时序 (1)TPμP-40A主要技术性能 单片机控制, 2KB控打程序及标准的Centronics并 行接口。 可打印全部ASCII代码字符及128个非标准字符和图 符。1 6个代码字符(6×7点阵)由用户定义。 可打印出8×240点阵的图样(汉字或图案点阵)。

字符、图符和点阵图可在宽和高的方向放大为×2、 ×3、×4倍。 每行字符的点行数(包括字符的行间距)可用命令 更换。即字符行间距空点行在0~256间任选。 2.接口信号 采用国际上流行的Centronics打印机并行接口, 与单片机间是通过一条20芯扁平电缆及接插件相连。 打印机有一个20线扁平插座,信号引脚排列如图10- 26所示。 引脚介绍: DB0~DB7:数据线,单向传输,由单片机输入给打 印机。 STB*:数据选通信号。在该信号的上升沿时,数据 线上的8位并行数据被打印机读入机内锁存。

BUSY:打印机“忙”状态信号。当该信号有效(高电 平)时,表示打印机正忙。此时,单片机不得向打印机 送入新的数据。 ACK*:打印机的应答信号。低电平有效,表明打印 机已取走数据线上的数据。 ERR*:“出错”信号。当送入打印机的命令格式出错 时,打印机立即打印一行出错信息,提示出错。在打印 出错信息之前,该信号线出现一个负脉冲,脉冲宽度 为30μs。 3.接口信号时序 接口信号时序如图10-27所示。

选通信号STB*宽度需大于0.5μs。应答信号ACK*可 与STB*信号作为一对应答联络信号,也可与BUSY作为一 对应答联络信号。 2. 字符代码及打印命令 写入的全部代码共256个,其中00H无效。 代码:01H~0FH为打印命令; 代码:10H~1FH为用户自定义代码; 代码:20H~7FH为标准ASCII代码; 代码:80H~FFH为非ASCII代码,如图10-28所示。其 中包括少量汉字、希腊字母、块图图符和一些 特殊字符。

3. TPμP-40A/16A与MCS-51单片机接口设计 入电路中有锁存器,在输出电路中有三态门控制。因此 可直接与单片机相接。 TPμP-40A/16A只有握手线STB* 、BUSY(或ACK*), 接口电路如图10-29所示。 图10-30:并行I/O口连接的打印机接口电路。图中 的扩展I/O口为8255A的PA口,采用查询法,即通过读 8255A 的PC0脚的状态来判断送给打印机的一个字节的 数据是否处理完毕。也可用中断法(BUSY直接与单片机 的P3.3脚相连)。

例 把MCS-51单片机内部RAM 3FH~4FH单元中的ASCII码 数据送到打印机。8255A设置为方式0,即端口A与端口 C的上半部为输出方式。端口C的下半部为输入方式。 打印程序如下: PRINT: MOV R0,#7FH ;控制口地址→R0 MOV A ,#81H ;8255A控制字→A MOVX @R0,A ;控制字→控制口 MOV R1,#3FH ;数据区首地址→R1 MOV R2,#0FH ;打印数据个数的计数 LOOP: MOV A,@R1 ;打印数据单元内容→A INC R1 ;指向下一个数据单元 MOV R0,#7CH ;8255A的端口A地址→R0 MOVX @R0,A ;打印数据送8255A的口A并 锁存

10.5.2 MCS-51与GP16微型打印机的接口 1. GP16微型打印机的接口信号 控制器为8031单片机。接口信号如下: MOV R0,#7FH ;8255A的控制口地址→R0 MOV A,#0EH ;PC7的复位控制字→A MOVX @R0,A ;PC7=0 MOV A,#0FH ;PC7的置位控制字→A MOVX @R0,A ;PC7由0变1 LOOP1: MOV R0,#7EH ;口C地址→R0 MOVX A,@R0 ;读入C口的值 ANL A,#01H ;屏蔽C口的高7位,只留PC0位 JNZ LOOP1 ;查询BUSY的状态,如为1跳LOOP1 DJNZ R2,LOOP ;未打完,循环 10.5.2 MCS-51与GP16微型打印机的接口 1. GP16微型打印机的接口信号 控制器为8031单片机。接口信号如下:

各信号的功能如下: IO0~IO7:双向三态数据总线,是CPU与GP16打印机之 间命令、状态和数据信息传输线。 CS*:设备选择线。 RD* 、WR*:读、写信号线。 BUSY:打印机状态输出,高电平表示GP16处于忙状态, 可供CPU查询或作中断请求线。 GP16控制器具有数据锁存器,与单片机接口十分方便。

1.打印命令及打印方式 GP16的打印命令占两个字节,其格式如下: 第一个字节 D7-----D4 D3-----D0 操作码 点行数n 第二个字节 D7------------------ D0 打印行数NN GP16为微型针打,字符本身占据7个点行。命令字 中的点行数n是选择字符行之间的行距的参数,若n=10,则行距为3个点行数,应大于或等于8。打印行数是执行本条命令时打印(或空走纸)的字符行数。 GP16的命令编码如下表。

D7 D6 D5 D4 命令功能 1 0 0 0 空走纸 1 0 0 1 打印字符串 1 0 1 0 十六进制数据打印 1 0 1 1 图形打印 3. MCS-51单片机和GP16的接口 GP16内部有三态锁存器, 能锁存数据总线上的数 据, ,故GP16可以直接与MCS-51数据总线相连而不须 外加锁存器。图10-32为GP16与8031数据总线口相连 的接口电路。

图中BUSY接(P3.3),直接可用于中断方式。如要以 如果使用其它I/O或扩展I/O口,只须将P0口线换成 其他I/O或扩展I/O口即可。 按照图10-32的连接,GP16的打印机地址为7FFFH, 读取GP16状态字时,8031执行下列程序段: MOV DPTR,#7FFFH MOVX A,@DPTR 将命令或数据写入GP16时,8031执行下列程序段: MOV DPTR,#7FFFH MOV A,#DATA/COMMAND MOVX @DPTR,A

10.6 MCS-51单片机与BCD码拨盘的接口设计 10.6.1 BCD码拨盘 有时需输入一些控制参数,设定完将维持不变。 使用的最方便的拨盘是十进制输入,BCD码输出的BCD码 拨盘。这种拨盘如图10-33,为四片BCD码拨盘

拼接的4位十进制输入拨盘组。每片拨盘具有0~9十 个位置,每个位置都有相应的数字显示。 BCD码拨盘后面有5个接点,A为输入控制线,另外4 是BCD码输出线。 拨盘拨到不同位置时,输入控制线A分别与4根BCD 码输出线中的某根或某几根接通,其接通的BCD码输出 线状态正好与拨盘指示的十进制数相一致。 表10-10为BCD码拨盘的输入输出状态表。

表10-10 BCD码拨盘的输入输出状态 拨盘输入 控制端A 输出状态 8 4 2 1 3 5 6 7 9

10.6.2 BCD码拨盘与单片机的接口 1.与单片BCD码拨盘的接口 图10-34是8031通过P1.0~P1.3与单片BCD码拨盘的 接口电路。

A端接+5V,当拨盘拨至某十进制数时,相应的8,4, 2,1有效端输出高电平(如拨至“6”时,4,2,端为“1”)无效端为低电平。输出的BCD码为正逻辑。 A端接地,8,4,2,1输出端通过电阻上拉至高电平时,拨盘输出的BCD码为负逻辑(反码)。 2. 多片BCD码拨盘与单片机的接口 如按图10-34,N位拨盘需占用4×N根I/O口线,为减少I/O口线,可将拨盘的输出线分别通过4个与非门与单片机的I/O口相连, 每片拨盘的控制端A不再接+5V或地,而是分别与I/O口线相连,用来控制选择多片拨盘中的任意一片。 这时,N位十进制拨盘,用N片BCD码拨盘拼成时只需占用4+N根I/O口线。图10-35通过P1与4片BCD码拨盘相连的4位BCD码输入电路。

4片拨盘的BCD码输出相同端接入同一个4个与非门。 四个与非门输出8,4,2,1端分别接入P1.3,P1.2,P1.1, P1.0。其余的P1.6,P1.5,P1.4分别与千、百、十、个位BCD码拨盘的控制端相连。当选中某位时,该位的控制端置0,其它三个控制端置1。 例如选中千位时,P1.7置0,P1.4~P1.6置1,此时四个与非门所有其它位连接的输入端均为1状态,因此四个与非门输出的状态完全取决于千位数BCD拨盘输出状态。由于该位的控制端置0,因此,拨盘所置之数输出为BCD反码,通过与非门输出为该千位数的BCD码 下面以图10-35为例,介绍BCD码拨盘输入子程序。

例如输入为9345,这时,每位BCD码输出端上有相应 的数字与A接通。 放在片内RAM的30H~33H单元,每个单元的高4位为0,低4 位为BCD码。 程序如下: RDS: MOV R0,#30H ;初始化,存放单元首址 MOV R2,#7FH ;P1口高4位置控制字及低4位置输入 ;方式 MOV R3,#04H ;读入4个BCD码 LOOP: MOV A,R2 MOV P1,A ;P1口送控制字及低4位置输入方式 MOV A,P1 ;读入BCD码 ANL A,#0FH ;屏蔽高4位

MOV @R0,A ;送入存储单元 INC R0 ;指向下个存储单元 MOV A,R2 ;准备下一片拨盘的控制端置0 RR A ; MOV R2,A ; DJNZ R3,LOOP ;未读完返回 RET ;读完结束