单片机一般按键的设计

发布者:skyhcg最新更新时间:2015-09-30 来源: eefocus关键字:单片机  一般按键 手机看文章 扫描二维码
随时随地手机看文章
一、机械按键的抖动

 

键盘,作为向系统操作人员的干预指令的接口,以其特定的按键序列代表着各种确定的操作命令,所以,准确无误的辨认每个键的动作和其所处的状态,是系统能否正常工作的关键。多数键盘的按键多使用机械式弹性开关,一个电信号通过机械触点的断开,闭合过程完成高低电平的切换。由于机械触点的弹性作用,一个按键开关在闭合及断开的瞬间必然伴随着一连串的抖动,其波形如图所示:

 

 06单片机一般按键的设计
 

抖动过程的长短是由按键的机械特性决定,一般是10~20ms。为了使CPU对一次按键动作只确认一次,必须消除抖动的影响,可以从硬件及软件两个方面着手。本文只介绍软件方面的防抖。

 

软件防抖的思路:当第一次检测到有建按下时,先用软件延时(10~20ms),而后再确认键电平是否依旧维持闭合状态的电平。若保持闭合状态电平,则确认此间已按下,从而消除抖动影响。

 

二、proteus仿真

06单片机一般按键的设计

 

源程序:

 

#include
#include
#define uchar unsigned char
#define uint unsigned int

sbit jia_key=P2^0;
sbit jian_key=P2^1;

uint i;        //定义要显示的数字、字符
uchar duan_code[]={
0x3f,0x06,0x5b,0x4f,
0x66,0x6d,0x7d,0x07,
0x7f,0x6f,0x77,0x7c,
0x39,0x5e,0x79,0x71
};                        //共阴极数码管段码0~F

void delay_ms(uint z)   //ms级延迟函数,z表示形参,是几就是几ms延迟
{
  uint x,y;
  for(x=z;x>0;x--)
   for(y=99;y>0;y--)
    { _nop_();
   _nop_(); 
 }
}

void scankey(void)     //按键扫描函数
{
 if(jia_key==0)     //加按键检测
  {
    delay_ms(150);    //延迟防抖
    if(jia_key==0)    //加按键检测
      i++;
    if(i>15)
      i=15;
   }

 if(jian_key==0)     //减按键检测
  {
    delay_ms(150);    //延迟防抖
    if(jian_key==0)    //减按键检测
      i--;
    if(i<0)
      i=0;
   }

}
void main(void)    //主函数
{
 P0=0X00;    //初始化P0口为低电平
 while(1)  
   { 
     scankey();   //检测按键
     P0=duan_code[i]; //数码管显示 
   }
}

关键字:单片机  一般按键 引用地址:单片机一般按键的设计

上一篇:单片机静态数码管的设计
下一篇:单片机矩阵按键的设计

推荐阅读最新更新时间:2024-03-16 14:34

基于msp430单片机的方波发生器
这个题目的要求是用msp430f149模拟一个信号发生器,信号发生器的频率在100-1000hz,通过按键可以实现每次加减100hz,另外加入串口通信,还可以通过pc机发送来的数值,将频率调整为相应的频率值。 信号的产生用到的是timerA 来产生pwm波,通过控制周期从而达到控制频率的目的。 以下是代码: #include msp430x14x.h #include Config.h #include stdlib.h #include string.h int flag=0; uchar key; unsigned int a=5; //unsigned int b=5; uchar string , j
[单片机]
C51单片机定时器/计数器中断功能详细分析(二)
一.外部中断相关寄存器 1.定时器/计数器控制寄存器控制寄存器(TCON) IT0:外部中断0触发方式控制位 当IT0=0时,为电平触发方式(低电平有效) 当IT0=1时,为边沿触发方式(下降沿有效) IT1:外部中断1触发方式控制位 当IT1=0时,为电平触发方式(低电平有效) 当IT1=1时,为边沿触发方式(下降沿有效) 2.中断允许控制寄存器(IE) EX0:外部中断0允许位; EX1:外部中断1允许位; EA :CPU中断允许(总允许)位。 二.外部中断的处理过程 1、设置中断触发方式,即IT0=1或0,IT1=1或0 2、开对应的外部中断,即EX0=1或EX1=1; 3、开总中断,即EA=1; 4、等待外部设
[单片机]
C51<font color='red'>单片机</font>定时器/计数器中断功能详细分析(二)
如何提升单片机编程水平
现在大多数从事单片机行业的一般会选择软件开发。 大家在编程的时候,有没有一种感觉就是 功能基本上都能实现,但是总觉得自己的编程,缺少了一点东西。不够完美,多多少少都存在一些瑕疵,代码移植性不高。功能的扩展也不好。 上交时,最怕的就是自己的程序有问题打回来返工,原因肯定是出在自己身上,是自己的不够强大。才导致这些问题的出现,提升编程水平是每个程序员时时刻刻都在想的事。 要想程序提升的快,没有人一个厉害的人带,你真的会非常的难,困难! 要想找到一个愿意带你的人,也是非常难的。 主要有以下几点原因: 有厉害的人带你,你的眼界会提升的很快;提升编程水平,有时候不是我们做的越久就意味着代码写的就越好,就像池塘里的鱼已经觉得,在池塘里游泳的空
[单片机]
基于8051单片机的温湿度采集系统设计
通过前面的学习,我们学会了如何用串口发送数据和接收固定字节的命令。今天,我们继续讨论串口应用协议,主要焦点还是在如何有效地使用串口发送数据。为了简化描述,假设我们基于8051单片机开发一个温湿度采集系统,周期将温度和湿度数据上报到上位机。温度和湿度定义如下: float temperature = 25.0; //温度 float humidity = 70.0; //湿度 我们至少可以设计出以下两种不同的串口应用协议: 1.固定大小的消息:先发送float类型的温度,再发送float类型的湿度。每次传输8个字节。 温度(4字节) 湿度(4字节) 代码实现: // 固定消息发送温度和湿度函数 void se
[单片机]
基于8051<font color='red'>单片机</font>的温湿度采集系统设计
8051单片机(STC89C52)以轮询方式实现串口通信(51接收数据后发送回PC端)
#include STC89C5xRC.H int main() { char buf; TMOD = 0x21; //设定timer1的工作模式 SCON = 0x50; //设置串行通信格式 TH1 = 0xE6; //设定timer1的初始值 TL1 = 0xE6; TR1 = 1; //开启timer1 while(1) { if(RI == 1) { //如果收到数据 buf = SBUF; RI = 0; SBUF = buf;//将收到的数据发回去 while(TI == 0); //等待数据发送完毕 TI = 0;
[单片机]
8051<font color='red'>单片机</font>(STC89C52)以轮询方式实现串口通信(51接收数据后发送回PC端)
单片机应用中的干扰因素分析
单片机应用系统通常在实验室内部进行仿真 测试及质量检验,所以此时的单片机具有稳定的性 能水准。然而单片机在日常使用过程中,由于外部 环境和仪器设备存在诸多不确定因素导致单片机 运作时存在复杂的干扰,这极大地影响设备及单片 机的使用,对后续的运行产生巨大影响。目前,影 响单片机安全运行及可靠性的主要因素分为系统 内部因素及外部因素,主要受到系统结构设计的影 响、关键零部件的选型、安装及制造工艺的影响,这 些都会对单片机产生一定的干扰,轻则影响单片机 的正常运行,重则会产生一些事故,造成巨大的人 员伤害与经济损失。形成单片机干扰的基本因素 包括: 干扰源( 是指产生干扰的零部件、相关设备或 信号等,如打雷、闪电、高频电机或脉冲信号等都
[单片机]
单片机初学者的建议
基本要一些数字电路的知识,模拟电路的也要一些。 重点是了解接口、中断这一类的知识,本科的课程里面如《计算机硬件基础》的基础知识也很重要。 可以自己在网上买一块便宜些的电路板,可以自己做实验的,慢慢学,挺好的。 C语言必须会,因为单片机是那个C语言写程序的,你可以到网上下载谭浩强C设计第三版,这个对初学51单片机是绰绰有余,硬件的话模电数电也要了解。现在至少要学精数电,因为你至少要搞清什么叫数据(二进制、十六进制),而且从学习数电的过程中,你学精的话,会体会到,你思考问题的方式也发生了变化,变得更加逻辑化了(基础的与或非),到了后面你就会用逻辑的思维去解决实际问题了,因为编程关键就是要用逻辑的思维去看待问题,然后找出
[单片机]
新的V2XE型地磁传感器在单片机系统中的应用
1 引言 V2XE是一种以集成微处理器作为控制和接口的新型2轴罗盘和大地磁场传感器 ,U2XE使用新型系统常用的3V工作电源,具有功耗低、尺寸小、在各种条件下的抗噪声能力强、较大的测量灵敏感应区等优点。V2XE结合了PNI公司专利的磁场感应传感器和测量电路技术,不受补偿漂移的影响,在不同温度下的测量结果很稳定。V2XE通过简单易行的标准SPI接口输入/输出数据。 2 性能特点 V2XE的典型特性如下: 功率低(3V DC,2mA输出); 封装尺寸小(25.4mm×5.4mm×11.5mm); 高地磁感应(0.01°); 高地磁精度(2.0°); 数字接口输出(3V标准SPI接口); 具有高的磁场感应(0.00015Gauss
[应用]
小广播
添点儿料...
无论热点新闻、行业分析、技术干货……
设计资源 培训 开发板 精华推荐

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

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

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