单片机独立按键检测程序

发布者:Amybaby最新更新时间:2012-10-11 来源: 21ic 关键字:单片机  独立按键  检测程序 手机看文章 扫描二维码
随时随地手机看文章
/********************************************************

功能:独立按键测试

时间:2010—7—17

**********************************************************/
#include
sbit key1=P3^0;
sbit key2=P3^1;
sbit key3=P3^2;
sbit key4=P3^3;


void delay(unsigned int cnt)
{
        while(--cnt);
}


main()
{ 

        P2=0x09;
        while(1)
        { 
                if(!key1)
                        P0=0x06;
                if(!key2)
                        P0=0x5B;
                if(!key3)
                        P0=0x4F;
                if(!key4)
                        P0=0x66;

        }
}

/*

定义寄存器P3的4个端子为可寻址位,分别接四个独立按键,按键另一端全部接地,
当按键按下的时候,端口检测到变为低电平,开始为P0赋值。在按键没有被按下的时候,4个
寄存器的32个端口都是高电平,被选中的位8段全亮。

修改了P2=0x09,因为P2出来串接74HC138,本来P2最多等于0x07=0000 0111,经译
码出来的是HHHH HHHL,接共阴数码管的第8位数码管被选中。在P2=0x09=0000 1001,取后
低三位是ABC=001,注意这里A时最高位,也就是点亮第二位数码管,这里可以取 P2=x%8。

 

------------------------------------------------------------------------

A    B    C    |    Y0   Y1    Y2    Y3    Y4    Y5    Y6    Y7

-------------------------------------------------------------

0    0    0    |    L     H     H     H     H     H     H     H

0    0    1    |    H     L     H     H     H     H     H     H

0    1    0    |    H     H     L     H     H     H     H     H

0    1    1    |    H     H     H     L     H     H     H     H

1    0    0    |    H     H     H     H     L     H     H     H

1    0    1    |    H     H     H     H     H     L     H     H

1    1    0    |    H     H     H     H     H     H     L     H

1    1    1    |    H     H     H     H     H     H     H     L

------------------------------------------------------------

显然如果使用共阳数码管,则很难实现选位点亮,可能是选位熄灭。使用万用表
测量按键另一端接地按键按下后确实检测到被按下按键对应的端口为低电平。
独立按键另外一个问题就是抖动,可以用硬件电路或者软件来消除。硬件电路可以
使用SR锁存器(与非门)来构成(参见康华光数字电路)。但最好还是使用软件,延时
程序可以很方便的解决。根据按键的不同机械抖动固有时间,一般情况下为4~15ms。
通过延时躲避抖动,按下和释放都存在抖动,实际使用程序需要两次去抖动。设定时间
为20ms就能满足一般要求。

 

if(!KEY)

{
        DelayMs(10);    //按下去抖动
        while(!KEY);
        if(KEY)
        {
                DelayMs(10);    //释放驱抖动
                if(KEY)
                {
                        //启动按键按下后需要执行的程序
                }
        }
}

本程序存在瑕疵,延时10ms,如果抖动已经结束,此时KEY=1,不必执行while(!KEY),紧
接着执行释放去抖动;但是如果抖动的时间比较长(超过20ms)的话就不好说了。不过本程序的可
取之处时,如果一直按着按键很长时间,相当于按了一次,因为while(!KEY)将按下去的时间消除。

按键控制是单片机和外界通信,接受外界控制的重要机制,在独立按键特别是本程序中,
用不上去抖动,因为抖动对程序不造成任何影响。

*/
关键字:单片机  独立按键  检测程序 引用地址:单片机独立按键检测程序

上一篇:拉暮式数码管显示
下一篇:单片机控制的报警器系统

推荐阅读最新更新时间:2024-03-16 13:10

单片机复位电路的工作原理
如何进行复位呢?只要在单片机的RST引脚上加上高电平就可以了,时间不少于5ms。 基本的复位电路的原理图如下所示:                   这种复位电路的工作原理是:通电时,电容两端相当于是短路,于是RST引脚上为高电平,然后电源通过电阻对电容充电,RST端电压慢慢下降,降到一定程度为低电平,单片机开始正常工作。 改进的复位电路如下:                      在满足单片机可靠复位的前提下,该复位电路的优点在于降低复位引脚的对地阻抗,可以显著增强单片机复位电路的抗干扰能力。二极管可以实现快速释放电容电量的功能,满足短时间复位的要求。
[单片机]
基于瑞萨单片机自动寻迹智能车的设计
随着计算机、通信、传感器等技术的发展,智能车成为汽车发展的趋势。传感器技术在智能车的应用中越来越广泛,如在夜间、雾天、高危高污染等环境下的行驶。智能车将成为人们生活的一部分。文中以瑞萨智能车大赛为背景,设计了一种以16位微控制器H8/3048F作为小车的控制核心,采用红外反射传感器检测路面引导线,能根据给定参数行驶的电动车。文中从硬件和软件方面详细阐述了智能车工作原理和设计方法,设计的小车具有电路设计简单、软件控制高效等优点。 1 系统总体设计方案 本智能车利用车体前方的光电传感器采集赛道信息、后轴上的光电编码器采集车轮转速的脉冲信号。这些信号经单片机调理后,用于控制小车的运动。同时,内部模块产生的PWM波驱动直流电机,对
[单片机]
基于瑞萨<font color='red'>单片机</font>自动寻迹智能车的设计
单片机学习之四:MCS-51单片机引脚说明
51系列单片机 89C51/89S51均采用40Pin 封装的双列直接DIP结构。在它们40 个引脚配置中,正电源和地线两根,外置石英振荡器的时钟线两根,4组8位,共32个I/O口,P3口线与第2功能复用。 现在我们对这些引脚的功能加以说明: Pin40:正电源脚,工作时,接+5V电源。 Pin20:负电源脚,工作时,接地。 Pin19:时钟XTAL1 脚,片内振荡电路的输入端。 Pin18:时钟XTAL2 脚,片内振荡电路的输出端。 8051的时钟有两种方式,一种是片内时钟振荡方式,但需在18和19脚外接石英晶体(2~12MHz)和振荡电容,振荡电容的值一般取10pF~30pF。另外一种是外
[单片机]
<font color='red'>单片机</font>学习之四:MCS-51<font color='red'>单片机</font>引脚说明
基于单片机C8051F021和时钟芯片实现定时采集存储系统的设计
随着科技的高速发展,现代工业测控领域的很多应用中都需要实现大量数据的定时采集存储。以为海流计设计的海流数据采集存储接口电路为例,介绍一种定时采集存储系统的工作原理及其实现方法。 1 总体结构 在很多情况下,尤其是恶劣的工作环境下,高性能的单片机和大容量的Flash存储器是数据采集存储系统的最佳选择,本文介绍的系统也是基于这样的考虑。系统硬件结构并不复杂,包括高性能单片机C8051F021、实时时钟芯片SD2300、大容量Flash存储器K9G8G08及其外围电路,如图1所示。工作原理也较为简单,通过串口将单片机C8051F021与海流计相连,通过对单片机的编程实现对海流计的控制和使用。同时,为了实现定时采集和数据存储的功能,还
[单片机]
基于<font color='red'>单片机</font>C8051F021和时钟芯片实现定时采集存储系统的设计
单片机中LED数码管的介绍
LED 小灯是一种简单的 LED,只能通过亮和灭来表达简单的信息。而这节课我们要来学习一种能表达更复杂信息的器件——LED 数码管。 先给大家提供一张原理图看一下,如图 5-3 所示。 图 5-3 数码管原理图 这是比较常见的数码管的原理图,我们板子上一共有 6 个数码管。前边有了 LED 小灯的学习,数码管学习就会轻松的多了。从图 5-3 可以看出来,数码管共有 a、b、c、d、e、f、g、dp 这么 8 个段,而实际上,这 8 个段每一段都是一个 LED 小灯,所以一个数码管就是由 8个 LED 小灯组成的。我们看一下数码管内部结构的示意图,如图 5-4。 图 5-4 数码管结构示意图 数码管分为共阳和共阴两种,共
[单片机]
<font color='red'>单片机</font>中LED数码管的介绍
AT89C51单片机系统简介
AT89C51是一种带4K字节闪烁可编程可擦除只读存储器(FPEROM—Falsh Programmable and Erasable Read Only Memory)的低电压,高性能CMOS8位微处理器,俗称单片机。该器件采用ATMEL高密度非易失存储器制造技术制造,与工业标准的MCS-51 ? 指令集和输出管脚相兼容。由于将多功能8位CPU和闪烁存储器组合在单个芯片中,ATMEL的AT89C51是一种高效微控制器,为很多嵌入式控制系统提供了一种灵活性高且价廉的方案。 1.主要特性: ·与MCS-51 兼容 ·4K字节可编程闪烁存储器 寿命:1000写/擦循环 数据保留时间:10年 ·全静态工作:0Hz-24Hz ·三
[工业控制]
小容量单片机系统的C语言程序结构
  2002年初,笔者着手写一个IC卡预付费电表的工作程序,该电表使用Philips公司的8位51扩展型单片机87LPC764,要求实现很多功能,包括熄显示、负荷计算与控制、指示闪烁以及电表各种参数的查询等,总之,要使用时间的单元很多。笔者当时使用ASM51完成了这个程序的编写,完成后的程序量是2KB多一点。后来,由于种种原因,这个程序并没有真正使用,只是作了一些改动之后用在一个老化设备上进行计时与负荷计算。约一年后,笔者又重新改写了这些代码。 1 系统的改进   可以说,这个用ASM51实现的代码是没有什么组织性可言的,要什么功能就加入什么功能,弄得程序的结构非常松散,其实这也是导致笔者最终决定重新改写这些代码的原因。  
[单片机]
单片机的编程器和烧录器有什么区别
单片机编程器(Single-chipprogrammerproducts),是一款低成本开发编程器。它能够对Microchip的大多数闪存单片机编程。单片机编程器旨在用于开发编程,对于生产编程,还是选用其他为生产环境设计的第三方编程器。 1.使用串口通讯,芯片自动判别,编程过程中的擦除、烧写、校验各种操作完全由编程器上的监控芯片89C51控制,不受PC配置及其主频的影响。 2.采用高速波特率进行数据传送,经测试,烧写一片4KROM的AT89C51仅需要9.5S,而读取和校验仅需要3.5S。 3.体积小巧,省去笨重的外接,所有器件全部以第一脚对齐,无附加跳线,对于DIP封装芯片无需任何适配器。 单片机的编程器和烧录器有什么区
[单片机]
<font color='red'>单片机</font>的编程器和烧录器有什么区别
小广播
添点儿料...
无论热点新闻、行业分析、技术干货……
设计资源 培训 开发板 精华推荐

最新单片机文章
何立民专栏 单片机及嵌入式宝典

北京航空航天大学教授,20余年来致力于单片机与嵌入式系统推广工作。

换一换 更多 相关热搜器件
电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2024 EEWORLD.com.cn, Inc. All rights reserved