基于单片机的键盘和LED数码管工作原理
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
摘要:键盘和显示器是微机最常见的输入输出设备。本文介绍键盘和LED显示器的基本工作原理,并给出在8051基础上的电路结构及C语言代码。
关键字:键盘,LED,单片机
键盘是微型计算机系统中最基本、最常见的输入设备。在各种工业过程的计算机控制和监视系统中,广泛应用发光二极管向用户提供提示。由发光二极管可以构成7段/8段LED显示器,用于显示工作状态、参数数值和故障位置。
一.键盘的工作原理
键盘实际上是一组按键开关的集合,平时按键开关总是处于断开状态,当按下键时它才闭合。
(一)键盘的基本介绍
1.键盘的功能
键盘接口必须具有4个基本功能:
1.去抖动
2.防串键
3.识别被按键并产生与之对应的键码
4.释放键
而键码产生后如何去实现按键的特定功能,是操作系统和应用程序的任务2.键盘的分类
根据按键开关的排列方式,键盘可分为线性键盘和矩阵键盘。
线性键盘:硬件连接和接口程序都很简单,只适用于按键少的场合,因为线性键盘有多少按键,就需要有多少根连线与微机输入端口相连。
矩阵键盘:将按键排成n行m列,每个按键占据行列的一个交点,需要的外连接线数目是m+n,而容许的最大按键数是m*n,显然可以减少微机接口的连线,是一般微机常采用的键盘结构。
3.键盘与单片机的连接方式
矩阵键盘的连接方法有多种。可直接连接于单片机的I/O口线;可利用扩展的并行I/O口连接;也可利用可编程的键盘、显示接口芯片(如8297)进行连接等等。其中,利用扩展的并行I/O口连接方便灵活,在单片机应用系统中比较常用。下图就是通过8255A芯片扩展的并行I/O口连接的矩阵键盘。
图 1 微处理器和键盘接口接线示意
(二)键盘的工作过程
被按键的识别和键码的产生是键盘接口要解决的主要问题,可以通过软硬结合的方法来解决。通常识别被按键有两种方法:行扫描法和线反转法。
实际微型计算机系统中以行扫描法应用最广,其基本思想是:由程序对键盘进行逐行扫描,通过检测到的列状态来确定闭合键,需要输出端口、输入端口各1个。
下面由以并行接口芯片8255A组成的微机与键盘接口来说明非编码键盘采用行扫描法进行按键识别并产生编码的原理。
设8255的端口地址为:40~43H,键盘的行线接在PA
0~PA
3
上,列线接在PB
~PB
3
上,接口示意如图1,PA端口定义为输出端口,PB端口定义为输入端口。扫描的步骤如下:
(1)快速检查是否有键按下。使PA
0~PA
3
输出全为0,读取PB
~PB
3
上数据,只要
有一位为0,必定有某键被按下。
(2)去抖动。延时20ms左右,等待按键通、断引起的抖动消失,然后再判断具体按下的到底是哪个键。
(3)确定被按下的键。从0行开始,顺序逐行扫描,即该行输出0。每扫描一行,读入列线数据,从0列开始,逐列检查,判断是否有输入为0的列,若无,则顺序扫描下一行,并检查各列;若检查到某列线为0,则该行、列交点上的按键为被按下的键。
具体控制程序请见附录1。
二.LED数码管显示器的工作原理
(一)LED显示器的基本介绍
一般8段LED显示器的内部结构和外部引脚如图2所示。每段都是一个发光二极管,通过点亮不同的字段,可显示0~9和A~F等不同字符。其内部各发光二极管之间的连接方法有共阴极和共阳极两种。如图2所示。
图2 LED显示器内部结构
(二)LED显示器工作过程
为了达到显示某一波形的目的,需要从接口中输出不同的数码,这些数码称为字形码或段码。采用共阳极接法时,得到低电平信号的引脚对应的段被点亮;采用共阴极接法时,得到高电平信号的引脚对应的段被点亮。所以对于共阴极和共阳极两种不同的接法,为了显示同一个字符,对应的显示段码是不同的。在8段和8位字节数有如下对应关系时,a~g分别接数据线D0~D5,dp接D7,图3给出了这两种接法的8段LED显示器字符段码表。
图3 8段LED显示器字符段码表
比如,为了显示5,采用共阴极接法(1是亮),应该使D7~D0=01101101B;采用共阳极接法,D7~D0=B。
实际使用的LED数码管LED数码显示器位数较多,为了简化线路,降低成本,对于多位LED数码显示器,通常采用动态扫描显示方法,即逐个地循环点亮各位显示器。这样虽然在任意时刻只有一位显示器被点亮,但是由于人眼具有视觉残留效应,看起来与全部显示器持续点亮的效果基本一样(在亮度上有差别)。
图4 8段动态LED显示器接口原理
三.键盘和显示器与单片机8051 的连接
图5 矩阵键盘与8051芯片连接原理
图6 LED显示器与8051连接原理
附录1:矩阵键盘与数码管显示控制程序
排线连接方法:JP8(P1)与JP4(矩阵键盘接口)连接;P0与JP3(静态数码管)连接。
矩阵键盘定义:为列线;为行线;
程序:
#include <>
#include <>
#define uchar unsigned char
#define uint unsigned int
uchar dis_buf; //显示缓存
uchar temp;
uchar key; //键顺序吗
void delay0(uchar x); //x*
#define delayNOP(); {_nop_();_nop_();_nop_();_nop_();};
// 此表为 LED 的字模 0 1 2 3 4 5 6
7 8 9 a b c d e f
unsigned char code LED7Code[] = {~0x3F,~0x06,~0x5B,~0x4F,~0x66,~0x6D,~0x7D,~0x07,~0x7F,~0x6F,~0x77,~0 x7C,~0x39,~0x5E,~0x79,~0x71};
/*************************************************************/
/* */
/* 延时子程序 */
/* */
/*************************************************************/
void delay(uchar x)
{ uchar j;
while((x--)!=0)
{ for(j=0;j<125;j++)
{;}
}
}
/*************************************************************/
/* */