单片机学习之十:查询方式按键

发布者:pcwg最新更新时间:2016-09-09 来源: eefocus关键字:单片机  查询方式  按键 手机看文章 扫描二维码
随时随地手机看文章
一、实验现象

     最右面的数码管初始显示0,每次按下外部按键K1执行加一,计数到九时重新回零。

二、实验目的
   掌握读取外部按键时候应该注意的事项,掌握查询方式响应按键的方法
   掌握读取按键去抖动的方法
   掌握判直接寻址位转移指令jb,jnb的用法。

三、实验任务分析
     单片机响应外部按键的方式有两种,一种是查询方式,一种是中断方式。
     查询方式的响应过程如下:单片机不断的查询是否有按键按下,如果有按键按下的话,就执行相应的程序,否则继续查询。
     中断方式的响应过程如下:单片机处理自己的工作,如果有按键按下,向单片机发出中断请求。单片机停下现在正在处理的工作,转去执行中断程序,执行之后回来继续刚才的工作。
     本试验程序我们采用查询方式完成,下一个试验我们采用中断方式完成。
     还是先看看电路图吧,当JMP4跳线拔下的时候,电路图如下图6-1所示。
    (注:如果JMP4跳线插上,则按键和中断建立联系。在本试验中,JMP4跳线可以插也可以不插。因为我们采用查询方式,没有开中断。具体情况下一个试验介绍。)

         单片机学习之十:查询方式按键 - 北极星 - 要做一粒好的种子
        从图上我们可以看到,当按键k1按下的时候,对应P1.0输入低电平。因此,我们要查询k1是否按下,只要检测到p1.0是低电平就可以拉。
      注意,在查询按键是否按下时候,特别需要注意按键的去抖动问题,为什么呢?
      由于按键或者键盘都是利用机械触点的合、断作用。由于机械触点的弹性作用,在闭合和断开的瞬间都会出现抖动问题。由于这种抖动,使得电压信号在机械触点的闭合、断开瞬间会出现一系列的脉冲信号,如下图所示。抖动的时间长短,与开关的机械特性有关,一般为5~10ms。
       按键的稳定闭合期,由操作人员的按键动作确定,一般为十分之几秒至几秒。为了保证按下一次按键,单片机只对按键作一次处理,就必须经过去抖动处理。

                             单片机学习之十:查询方式按键 - 北极星 - 要做一粒好的种子
      通常去抖动的方法有硬件和软件两种。
      硬件去抖是利用基本RS触发器或者单稳态电路构成,大家可以参考相关数电教材。
      软件处理的方法是:在检测到按键按下时,执行一个10ms左右的延时程序后,再次检测该按键是否按下。如果仍然是按下状态,就确认为键真正按下,从而消除了抖动的影响。
        按照这个思路编写的程序如下:

四、实验程序
           org 0000h
start:   clr p1.5
           mov p0,#48h
           mov p2,#01h   ;初始状态最右面的数码管显示0
main:   mov r7,#0ffh
            wait1:  jb p1.0,wait1  ;如果P1.0为1,转回wait1继续查询。否则调用延时程序
            lcall del10ms   ;调用10ms延时
            jb p1.0,wait1  ;再次查询P1.0,如果是1,表示是抖动,转回wait1
            ljmp play1     ;确定按键按下,转去数码显示程序 
     
play1: inc r7
           mov a,r7
           mov dptr,#tab
           movc a,@a+dptr  ;利用查表指令找欲显示的数字,
           mov p0,a        ;把 这个数字送到P0显示
           cjne a,#48h,wait1 ;如果没有显示到最后一个数字,就继续查询按键状态 
           ljmp main       ;如果显示到最后一个数字就重新开始
          
tab:    db 0ebh,52h,62h,0e1h,64h,44h,0eah,40h,60h,48h   ;存放欲显示数字的表格
del10ms:mov r6,#14h        ;10ms延时子程序
del1:       mov r5,#0ffh
del2:       djnz r4,del2
               djnz r3,del1
               ret
              end

        把这个程序下载到学习板上,按下k1,发现了什么?
        我们发现这个程序运行不是很稳定,如果我们按下的时间稍微长一点,显示的数字就会变换几次。
这是为什么呢?

         由于数字显示之后,单片机会返回重新查询P1.0的状态,如果按下的时间很长,就会导致单片机又检测到低电平,所以就继续显示。因此就会出现错误。
         如果我们希望按下一次按键,无论时间长短,单片机只作一次按键处理,应该怎么办呢? 
        我们可以这样作:在数字显示之后,返回重新查询之前,我们加入一条指令,让单片机检测P1.0是否回到高电平。如果是,就表示按键按下了一次,程序可以返回继续查询,否则等待,一直到P1.0回到高电平。这样就保证了按键按下一次,无论时间长短,单片机只作一次按键处理。
        具体的做法是在原来的程序中增加如下的红色语句,改进后的程序如下:

org 0000h

  start:clr p1.5

      mov p0,#48h   

      mov p2,#01h    ;初始状态右面数码管显示0

     

main: mov r7,#0ffh

wait1:jb p1.0,wait1    ;按键没有按下,等待

      call del10ms   ;调用延时

      jb p1.0,wait1  ;继续查询

      ljmp play1

     

play1: inc r7

       mov a,r7

       mov dptr,#tab

       movc a,@a+dptr

       mov p0,a        ;查表显示数字

      

wait2:  jnb p1.0,wait2    ;等待按键弹起

       cjne a,#48h,wait1 ;判断是否显示到最后一个数字

       ljmp main

       ret

 

tab:   db 0ebh,52h,62h,0e1h,64h,44h,0eah,40h,60h,48h  

del10ms:mov r6,#14h

del1:   mov r5,#0ffh

del2:   djnz r4,del2

        djnz r3,del1

        ret

        end

关键字:单片机  查询方式  按键 引用地址:单片机学习之十:查询方式按键

上一篇:单片机学习之十一:中断方式按键
下一篇:单片机学习之九:多位数码动态显示

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

基于MSP430F448单片机的交流数字电压表设计
摘要:描述了一种简易的交流数字电压表的系统设计。系统以MSP430F448为核心,该单片机内部集成了12位的A/D转换器,转换器带有内部参考源、采样保持、自动扫描特性,极大地简化了硬件设计。因为单片机内部中断资源丰富,电压转换、定时等都采用中断触发,减少了系统响应时间,提高了软件执行效率。此外该单片机的液晶驱动能力可达160段,可以直接将A/D转化数据显示在LCD上。 MSP430F44x系列是TI公司推出的一款超低功耗的16位单片机,其运算速度快而且体积小。片内集成了8路12位A/D、串行通信接口、看门狗定时器、比较器、硬件乘法器等外围设备模块,从而降低了应用电路的复杂程度,提高了系统的可靠性。该芯片可以工作于2.5 V和3
[单片机]
基于MSP430F448<font color='red'>单片机</font>的交流数字电压表设计
如何利用单片机和C语言来设计数字滤波系统
数据采集,又称数据获取,是利用一种装置,从系统外部采集数据并输入到系统内部的一个接口。数据采集技术广泛引用在各个领域。比如摄像头,麦克风,都是数据采集工具。被采集数据是已被转换为电讯号的各种物理量,如温度、水位、风速、压力等,可以是模拟量,也可以是数字量。在互联网行业快速发展的今天,数据采集已经被广泛应用于互联网及分布式领域,数据采集领域已经发生了重要的变化。 而在数据采集中存在着各种噪声。滤除噪声的方法有很多种,既有数字滤波器,也有模拟滤波器。这里我们采用了基于单片机和C语言来设计并开发数字滤波系统。 我们针对于单片机数据采集系统中经常出现的随机干扰,通过手动输入来模拟数据采集过程,验证了几种使用较为普遍的克服随机干扰的
[单片机]
如何利用<font color='red'>单片机</font>和C语言来设计数字滤波系统
51单片机串口通信的原理实例
一、原理简介 51单片机内部有一个全双工串行接口。什么叫全双工串口呢?一般来说,只能接受或只能发送的称为单工串行;既可接收又可发送,但不能同时进行的称为半双工;能同时接收和发送的串行口称为全双工串行口。串行通信是指数据一位一位地按顺序传送的通信方式,其突出优点是只需一根传输线,可大大降低硬件成本,适合远距离通信。其缺点是传输速度较低。 与之前一样,首先我们来了解单片机串口相关的寄存器。 SBUF 寄存器:它是两个在物理上独立的接收、发送缓冲器,可同时发送、接收数据,可通过指令对SBUF 的读写来区别是对接收缓冲器的操作还是对发送缓冲器的操作。从而控制外部两条独立的收发信号线RXD(P3.0)、TXD(P3.1)
[单片机]
51<font color='red'>单片机</font>串口通信的原理实例
基于单片机的主从红外通信的系统设计
1、引言 红外通信是目前比较常用的一种无线数据传输手段,其具有无污染、信息传输稳定、信息安全性高以及安装使用方便等优点,并且可以在很多场合应用,如家电产品,工业控制、娱乐设施等领域。红外通信是利用950nm近红外波段的红外线作为传递信息的载体,通过红外光在空中的传播来传递信息,由红外发射器和接收器实现。发射端将二进制数字信号调制成某一频率的脉冲序列,经电光转换电路,驱动红外发射管以光脉冲的形式发送到空中。接收端将接收到的光脉冲转换成电信号,再经解调和译码后恢复出原二进制数字信号。本文设计了一种基于单片机PIC18F248的主从式红外通信系统,主要设计了红外接口电路以及主机和从机通信软件流程。 2、系统硬件电路设计 在主从式红
[单片机]
基于<font color='red'>单片机</font>的主从红外通信的系统设计
51单片机基础之LCD1602
外观: 原理: LCD1602是一种工业字符型液晶,能够同时显示16x2即32个字符。 LCD1602液晶显示原理 LCD1602液晶显示的原理是利用液晶的物理特性,通过电压对其显示区域进行控制,有电就有显示,这样即可以显示出图形。 1602液晶也叫1602字符型液晶,它是一种专门用来显示字母、数字、符号等的点阵型液晶模块。 基本接线: 读状态:输入:RS=L,RW=H,E=H ----输出:D0~D7=状态字 写指令:输入:RS=L,RW=L,D0~D7=指令码 ----输出:无 读数据:输入:RS=H,RW=H,E=H ----输出:D0~D7=数据 写数据:输入:RS=H,RW=L,D0~D7=数据,E=高脉冲
[单片机]
51<font color='red'>单片机</font>基础之LCD1602
基于飞思卡尔MCU的AEC算法实现
0 引言 VoIP是在IP网络上实现音视频及传真信号传输的一门全新的集成业务数据网络技术。IP语音传输技术具有节省带宽、话费低,可方便地集成智能型开放体系结构以及多媒体业务等优势。但较之传统电话,其语音质量较差。事实上,影响因特网语音质量的因素是多方面的,关键因素之一是回声的影响。因此,要提高因特网的语音质量,就必须在语音传输过程中进行回声消除。AEC是基于自适应算法并可用于VoIP的声学回声消除技术。而用于AEC算法的实现与研究的硬件平台是以freescale公司的MCF5235为核心的开发板。MCF523x系列MCU是首个以带有增强型乘加运算单元(eMAC)的ColdFire V2内核为核心,该产品同时结合了增强型时序处理单
[应用]
单片机轻松入门之三:蜂鸣器
单片机轻松入门之三蜂鸣器 该电路较简单,用PNP型三极管驱动蜂鸣器,当P3.7为低电平时,PN结正向偏置,三极管导通,蜂鸣器发声。 程序如下: #include reg52.h #define uchar unsigned char sbit sounder=P3^7; void delay(uchar z) { uchar j,i; for(i=z;i 0;i--) for(j=110;j 0;j--); } void main() { sounder=1; while(1) { sounder=~sounder; delay(500); } 仿真结果如下:
[单片机]
<font color='red'>单片机</font>轻松入门之三:蜂鸣器
爱特梅尔推出1Mb闪存的SAM3S16 ARM微控制器
全新爱特梅尔SAM3S16带有Cortex-M3微控制器,实现30mA @ 100MHz运作,达到业界最低的动态功耗 微控制器及触摸解决方案的领导厂商爱特梅尔公司(Atmel® Corporation)宣布提供带有1MB 嵌入式闪存和128KB SRAM的32位ARM® Cortex® -M3微控制器(MCU)的早期样品。全新SAM3S16 Cortex-M3微控制器具有高性能、低功耗和高存储器密度的特点,用于需要电容式触摸高级用户接口、更高数据处理能力和连通性的应用。目标应用包括医疗设备、楼宇和家庭控制、工业自动化、机器对机器(M2M)、测试和测量、智能电网,以及用于消费和计算设备的数据输入/输出外设。
[单片机]
爱特梅尔推出1Mb闪存的SAM3S16 ARM<font color='red'>微控制器</font>
小广播
添点儿料...
无论热点新闻、行业分析、技术干货……
设计资源 培训 开发板 精华推荐

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

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

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