8. 按键识别方法之一

发布者:第二眼帅哥最新更新时间:2016-09-21 来源: eefocus关键字:按键识别  单片机系统 手机看文章 扫描二维码
随时随地手机看文章
1. 实验任务 I/O并行口直接驱动LED显示 
每按下一次开关SP1,计数值加1,通过AT89S51单片机的P1端口的P1.0到P1.3显示出其的二进制计数值。 
2. 电路原理图 
 
图4.8.1 
3. 系统板上硬件连线 
(1.       把“单片机系统”区域中的P3.7/RD端口连接到“独立式键盘”区域中的SP1端口上; 
(2.       把“单片机系统”区域中的P1.0-P1.4端口用8芯排线连接到“八路发光二极管指示模块”区域中的“L1-L8”端口上;要求,P1.0连接到L1,P1.1连接到L2,P1.2连接到L3,P1.3连接到L4上。 
4. 程序设计方法 
(1.       其实,作为一个按键从没有按下到按下以及释放是一个完整的过程,也就是说,当我们按下一个按键时,总希望某个命令只执行一次,而在按键按下的 过程中,不要有干扰进来,因为,在按下的过程中,一旦有干扰过来,可能造成误触发过程,这并不是我们所想要的。因此在按键按下的时候,         图4.8.2 
要把我们手上的干扰信号以及按键的机械接触等干扰信号给滤除掉,一般情况下,我们可以采用电容来滤除掉这些干扰信号,但实际上,会增加硬件成本及硬件电路的体积,这是我们不希望,总得有个办法解决这个问题,因此我们可以采用软件滤波的方法去除这些干扰信号,一般情况下,一个按键按下的时候,总是在按下的时刻存在着一定的干扰信号,按下之后就基本上进入了稳定的状态。具体的一个按键从按下到释放的全过程的信号图如上图所示: 
从图中可以看出,我们在程序设计时,从按键被识别按下之后,延时5ms以上,从而避开了干扰信号区域,我们再来检测一次,看按键是否真得已经按下,若真得已经按下,这时肯定输出为低电平,若这时检测到的是高电平,证明刚才是由于干扰信号引起的误触发,CPU就认为是误触发信号而舍弃这次的按键识别过程。从而提高了系统的可靠性。 
由于要求每按下一次,命令被执行一次,直到下一次再按下的时候,再执行一次命令,因此从按键被识别出来之后,我们就可以执行这次的命令,所以要有一个等待按键释放的过程,显然释放的过程,就是使其恢复成高电平状态。 
(1.       对于按键识别的指令,我们依然选择如下指令JB BIT,REL指令是用来检测BIT是否为高电平,若BIT=1,则程序转向REL处执行程序,否则就继续向下执行程序。或者是 JNB BIT,REL指令是用来检测BIT是否为低电平,若BIT=0,则程序转向REL处执行程序,否则就继续向下执行程序。 
(2.       但对程序设计过程中按键识别过程的框图如右图所示:                 图4.8.3 
5. 程序框图 
 
   
   
   
   
   
   
   
   
   
图4.8.4 
6. 汇编源程序 
         
  
  
  
  
  
  
  
                             ORG 0 
START:                        MOV R1,#00H                     ;初始化R7为0,表示从0开始计数 
                                     MOV A,R1                                     ; 
                                     CPL A                                             ;取反指令 
                                     MOV P1,A                                     ;送出P1端口由发光二极管显示 
REL:                    JNB P3.7,REL                                ;判断SP1是否按下 
                                     LCALL DELAY10MS          ;若按下,则延时10ms左右 
                                     JNB P3.7,REL                                ;再判断SP1是否真得按下 
                                     INC R7                                           ;若真得按下,则进行按键处理,使 
                                     MOV A,R7                                     ;计数内容加1,并送出P1端口由 
                                     CPL A                                             ;发光二极管显示 
                                     MOV P1,A                                     ; 
                                     JNB P3.7,$                                     ;等待SP1释放 
                                     SJMP REL                                      ;继续对K1按键扫描 
DELAY10MS:    MOV R6,#20                                  ;延时10ms子程序 
L1:                                MOV R7,#248 
                                     DJNZ R7,$ 
                                     DJNZ R6,L1 
                                     RET 
                                     END 
7. C语言源程序 
#include  
unsigned char count; 
void delay10ms(void) 

  unsigned char i,j; 
  for(i=20;i>0;i--) 
  for(j=248;j>0;j--); 

void main(void) 

  while(1) 
    { 
      if(P3_7==0) 
        { 
          delay10ms(); 
          if(P3_7==0) 
            { 
              count++; 
              if(count==16) 
                { 
                  count=0; 
                } 
              P1=~count; 
              while(P3_7==0); 
            } 
        } 
    } 
}
关键字:按键识别  单片机系统 引用地址:8. 按键识别方法之一

上一篇:9. 一键多功能按键识别技术
下一篇:7. I/O并行口直接驱动LED显示

推荐阅读最新更新时间:2024-03-16 15:11

提高单片机系统可靠性的设计方法
  目前,大量的嵌入式系统均采用了单片机,并且这样的应用正在更进一步扩展;但是多年以来人们一直为单片机系统的可靠性问题所困惑。在一些要求高可靠性的控制系统中,这往往成为限制其应用的主要原因。 1 单片机系统的失效分析   一个单片机系统的可靠性是其自身软硬件与其所处工作环境综合作用的结果,因此系统的可靠性也应从这两个方面去分析与设计。对于系统自身而言,能不能在保证系统各项功能实现的同时,对系统自身运行过程中出现的各种干扰信号及直接来自于系统外部的干扰信号进行有效的抑制,是决定系统可靠性的关键。有缺陷的系统往往只从逻辑上去保证系统功能的实现,而对于系统运行过程中可能出现的潜在的问题考虑欠缺,采取的措施不足,在干扰信号真正袭来的时候
[单片机]
C51最小单片机系统
1.芯片部分 其中P1是给烧写器留的接口,J3和J4是留的排插,用于拓展模块,比如万年历,温度照度传感器,语音播报等。 2.独立键盘部分 这里参考我的STC12C5A60S2的数据手册,P0口已经有内部上拉电阻,所以外部不需要再接电阻,直接接地。 3.稳压电路 9V直流进5V直流出 4.蜂鸣器部分 选用封装时候注意8550和8050的一三脚别搞错 选TO-220封装。 5.LED部分 只留了两个灯,足够用,不够的可以用其他空的IO口照着这个画。电阻560欧姆灯的亮度会比较亮,可以选更大的阻值 10K 20K都可。 6.晶振部分 选用11.0592M的晶振,这个频率的晶振用于串口通信合适,波特率误差最小。
[单片机]
C51最小<font color='red'>单片机系统</font>
信息纽扣DS1991在单片机系统中的应用
摘要:Dallas公司的iButton产品是一系列1-wire总线新型器件。DS1991是一种加密存储器型信息纽扣,封装于直径为16mm的不锈钢外壳中,体积小巧,便于携带、保存,防尘、防腐蚀,可以在恶劣的应用环境中实现带密码保护的数据传送。本文介绍DS1991的特点、工作原理及其带密码保护存储器区的读写方法。 关键词:iButton信息纽扣 1-Wire总线 单片机 DS1991是Dallas公司的1-wire总线信息纽扣家庭中的一员,是一种加密存储器型信息纽扣。它内部集成了1Kbit是非易失性存储器及加密保护逻辑,封装于直径为16mm、厚约6mm的不锈钢外壳中,何种小巧、操作便捷,防潮、抗震、防灰尘,可在恶劣的环境中实现带
[单片机]
一种基于单片机系统的无线遥控技术
1 引言 随着集成电路技术的飞速发展,基于各类芯片新型遥控的不断出现。遥控装置的中心控制部件已从早期的分立元件、集成电路逐步发展到现在的单片微型计算机,智能化程度大大提高。在无线遥控领域,目前常用的遥控方式主要有超声波遥控、红外线遥控、无线电遥控等。由于无线电波的自身技术特点可以在很大区域和空间内实现,成为遥控的主要方式,并在生产、建设和日常生活中具有广泛的应用价值。为此,在前人研究的基础上探索出了一种基于单片机控制技术的可编程无线电遥控多通道开关系统的设计方法。研究表明,采用该方法设计的遥控开关系统控制方便,适用于含有较多受控电器的场合,可实现多路多功能控制。 2 系统设计 2.1 系统分析 系统结构主要由天线接收部分,
[单片机]
单片机系统过程通道中防止干扰的探讨
1 引言 干扰一般是以随机出现的脉冲形式进入 单片机 系统的,主要来自电网上和系统内负载突变形成的交变磁场和电场耦合系统内部,形成尖峰脉冲电势或电流叠加到某些芯片的数据线、地址线或控制线上,从而扰乱输入信号,破坏某些器件的工作状态。干扰窜入单片机系统的渠道主要有两条:空间场干扰 (通过电磁波感应窜入系统)和过程通道干扰。一般来讲,空间干扰在强度上远小于过程通道干扰,而且空间干扰可用良好的屏蔽、正确的接地方法以及采取必要的软硬件滤波加以解决。这里只就过程通道的防止干扰设计进行探讨。 2 过程通道的抗干扰设计 就过程通道而言,由于它直接与外部设备相连,因此无论是数字量的输入输出通道,还是模拟量的输入输出通道,都是干扰窜入渠道。要
[单片机]
<font color='red'>单片机系统</font>过程通道中防止干扰的探讨
基于AT89C52的汽车驾驶模拟器单片机系统设计
引言   汽车驾驶模拟器是一种能正确模拟汽车的驾驶操纵动作,获得实车驾驶感觉的仿真系统。目前的汽车驾驶模拟器集合了传感器、计算机三维实时动画、计算机接口、人工智能、数据通信、网络、多媒体等多种先进技术,主要用于驾驶员的培训,也可以对微观交通进行仿真,对汽车的控制特性进行研究 。汽车驾驶模拟器具有安全性高、再现性好的特点。利用驾驶模拟器来进行研究和训练,可方便地模拟各种道路环境、天气状况,分析汽车的技术性能指标,从而可以节省大量的自然资源,具有很高的经济价值 。   在汽车驾驶模拟器中,传感控制系统的性能直接影响到整个汽车驾驶模拟系统的交互性和实时性,是衡量汽车驾驶模拟器实用性能的重要指标。传感控制系统主要由各种传感器、数据采集
[单片机]
基于AT89C52的汽车驾驶模拟器<font color='red'>单片机系统</font>设计
STM8S---外部中断应用之长按键识别
STM8常用中断指令 开总中断 _asm(“rim”); 禁止中断 _asm(“sim”); 进入停机模式 _asm(“halt”); 中断返回 _asm(“iret”); 等待中断 _asm(“wfi”); 软件中断 _asm(“trap”); STM8S常用中断映射 如使用中断函数时,可以通过在上图中查找相对应的中断向量号,而中断函数的名字可以自定义 /* BASIC INTERRUPT VECTOR TABLE FOR STM8 devices * Copyright (c) 2007 STMicroelectronics */ typedef vo
[单片机]
X25043的原理及在单片机系统中的应用
1. 序言   X25043是XICOR公司的单片机监控芯片。它把四种常用的功能:上电复位、看门狗定时器、电压监控和串行EEPROM功能组在单个封装之内。这种组合降低了系统成本并减少了对电路板空间的要求。下面将分别介绍它们的功能。 2. X25043的原理   X25043将多种功能集成在一起,图1是其原理框图: 图1 X25043原理框图   其中/WP是X25043写保护,低电平有效。   SI是串行数据输入口,串行时钟上升沿有效。   SO是串行数据输出口,串行时钟下降沿有效。   SCK是串行时钟,用于控制串行数据的I/O。   /CS是芯片片选信号,低电平有效。   VCC是供电电源。   /R
[单片机]
X25043的原理及在<font color='red'>单片机系统</font>中的应用
小广播
添点儿料...
无论热点新闻、行业分析、技术干货……
设计资源 培训 开发板 精华推荐

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

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

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