基于单片机的键盘和LED数码管工作原理

上传人:m**** 文档编号:490817120 上传时间:2023-12-06 格式:DOC 页数:10 大小:479.51KB
返回 下载 相关 举报
基于单片机的键盘和LED数码管工作原理_第1页
第1页 / 共10页
基于单片机的键盘和LED数码管工作原理_第2页
第2页 / 共10页
基于单片机的键盘和LED数码管工作原理_第3页
第3页 / 共10页
基于单片机的键盘和LED数码管工作原理_第4页
第4页 / 共10页
基于单片机的键盘和LED数码管工作原理_第5页
第5页 / 共10页
点击查看更多>>
资源描述

《基于单片机的键盘和LED数码管工作原理》由会员分享,可在线阅读,更多相关《基于单片机的键盘和LED数码管工作原理(10页珍藏版)》请在金锄头文库上搜索。

1、基于单片机的键盘和LED数码管工作原理摘要:键盘和显示器是微机最常见的输入输出设备。本文介绍键盘和LED显示器的基本工作原理,并给出在8051基础上的电路结构及C语言代码。关键字:键盘,LED,单片机 键盘是微型计算机系统中最基本、最常见的输入设备。在各种工业过程的计算机控制和监视系统中,广泛应用发光二极管向用户提供提示。由发光二极管可以构成7段/8段LED显示器,用于显示工作状态、参数数值和故障位置。一.键盘的工作原理 键盘实际上是一组按键开关的集合,平时按键开关总是处于断开状态,当按下键时它才闭合。(一)键盘的基本介绍1.键盘的功能 键盘接口必须具有4个基本功能:1. 去抖动2. 防串键3

2、. 识别被按键并产生与之对应的键码4. 释放键 而键码产生后如何去实现按键的特定功能,是操作系统和应用程序的任务2.键盘的分类 根据按键开关的排列方式,键盘可分为线性键盘和矩阵键盘。 线性键盘:硬件连接和接口程序都很简单,只适用于按键少的场合,因为线性键盘有多少按键,就需要有多少根连线与微机输入端口相连。 矩阵键盘:将按键排成n行m列,每个按键占据行列的一个交点,需要的外连接线数目是m+n,而容许的最大按键数是m*n,显然可以减少微机接口的连线,是一般微机常采用的键盘结构。3.键盘与单片机的连接方式 矩阵键盘的连接方法有多种。可直接连接于单片机的I/O口线;可利用扩展的并行I/O口连接;也可利

3、用可编程的键盘、显示接口芯片(如8297)进行连接等等。其中,利用扩展的并行I/O口连接方便灵活,在单片机应用系统中比较常用。下图就是通过8255A芯片扩展的并行I/O口连接的矩阵键盘。图 1 微处理器和键盘接口接线示意(二)键盘的工作过程 被按键的识别和键码的产生是键盘接口要解决的主要问题,可以通过软硬结合的方法来解决。通常识别被按键有两种方法:行扫描法和线反转法。 实际微型计算机系统中以行扫描法应用最广,其基本思想是:由程序对键盘进行逐行扫描,通过检测到的列状态来确定闭合键,需要输出端口、输入端口各1个。 下面由以并行接口芯片8255A组成的微机与键盘接口来说明非编码键盘采用行扫描法进行按

4、键识别并产生编码的原理。 设8255的端口地址为:4043H,键盘的行线接在PA0PA3上,列线接在PB0PB3上,接口示意如图1,PA端口定义为输出端口,PB端口定义为输入端口。扫描的步骤如下:(1)快速检查是否有键按下。使PA0PA3输出全为0,读取PB0PB3上数据,只要有一位为0,必定有某键被按下。(2)去抖动。延时20ms左右,等待按键通、断引起的抖动消失,然后再判断具体按下的到底是哪个键。(3)确定被按下的键。从0行开始,顺序逐行扫描,即该行输出0。每扫描一行,读入列线数据,从0列开始,逐列检查,判断是否有输入为0的列,若无,则顺序扫描下一行,并检查各列;若检查到某列线为0,则该行

5、、列交点上的按键为被按下的键。 具体控制程序请见附录1。二.LED数码管显示器的工作原理(一)LED显示器的基本介绍 一般8段LED显示器的内部结构和外部引脚如图2所示。每段都是一个发光二极管,通过点亮不同的字段,可显示09和AF等不同字符。其内部各发光二极管之间的连接方法有共阴极和共阳极两种。如图2所示。图2 LED显示器内部结构(二)LED显示器工作过程 为了达到显示某一波形的目的,需要从接口中输出不同的数码,这些数码称为字形码或段码。采用共阳极接法时,得到低电平信号的引脚对应的段被点亮;采用共阴极接法时,得到高电平信号的引脚对应的段被点亮。所以对于共阴极和共阳极两种不同的接法,为了显示同

6、一个字符,对应的显示段码是不同的。在8段和8位字节数有如下对应关系时,ag分别接数据线D0D5,dp接D7,图3给出了这两种接法的8段LED显示器字符段码表。图3 8段LED显示器字符段码表 比如,为了显示5,采用共阴极接法(1是亮),应该使D7D0=01101101B;采用共阳极接法,D7D0=10010010B。 实际使用的LED数码管LED数码显示器位数较多,为了简化线路,降低成本,对于多位LED数码显示器,通常采用动态扫描显示方法,即逐个地循环点亮各位显示器。这样虽然在任意时刻只有一位显示器被点亮,但是由于人眼具有视觉残留效应,看起来与全部显示器持续点亮的效果基本一样(在亮度上有差别)

7、。图4 8段动态LED显示器接口原理三.键盘和显示器与单片机8051 的连接图5 矩阵键盘与8051芯片连接原理图6 LED显示器与8051连接原理附录1:矩阵键盘与数码管显示控制程序排线连接方法:JP8(P1)与JP4(矩阵键盘接口)连接;P0与JP3(静态数码管)连接。矩阵键盘定义:P1.1-P1.4为列线;P1.4-P1.7为行线;程序:#include #include #define uchar unsigned char#define uint unsigned intuchar dis_buf; /显示缓存uchar temp;uchar key; /键顺序吗void delay

8、0(uchar x); /x*0.14MS#define delayNOP(); _nop_();_nop_();_nop_();_nop_();/ 此表为 LED 的字模 0 12 3 4 56 78 9 a b cd e funsigned char code LED7Code = 0x3F,0x06,0x5B,0x4F,0x66,0x6D,0x7D,0x07,0x7F,0x6F,0x77,0x7C,0x39,0x5E,0x79,0x71;/*/* */* 延时子程序 */* */*/void delay(uchar x) uchar j; while(x-)!=0) for(j=0;j4

9、)|0xF0); if(temp=1) / p1.4 被拉低 key=0; else if(temp=2) / p1.5 被拉低 key=1; else if(temp=4) / p1.6 被拉低 key=2; else if(temp=8) / p1.7 被拉低 key=3; else key=16; P1=0x0F; /低四位输入 列为高电平 行为低电平 delay(1);temp=P1; /读P1口 temp=temp&0x0F; temp=(temp|0xF0); if(temp=2) / p1.1 被拉低 key=key+0; else if(temp=4) / p1.2 被拉低 key=key+4; else if(temp=8)/ p1.3 被拉低 key=key+8; else key=16; dis_buf = key; /键值入显示缓存 dis_buf = dis_buf & 0x0f; /*/* */*判断键是否按下 */* */*/ void keydown(void) P1=0xF0;if(P1!=0xF0) /判断按键是否按下 如果按钮按下 会拉低P1其中的一个端口 keyscan(); /调用按键扫描程序 /*/* */* 主程序 */*

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 建筑/环境 > 综合/其它

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号