3.1 任务3.1 按键控制LED亮灭-查询方式_第1页
3.1 任务3.1 按键控制LED亮灭-查询方式_第2页
3.1 任务3.1 按键控制LED亮灭-查询方式_第3页
3.1 任务3.1 按键控制LED亮灭-查询方式_第4页
3.1 任务3.1 按键控制LED亮灭-查询方式_第5页
已阅读5页,还剩11页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

单片机应用技术项目三按键控制LED亮灭任务3.1按键控制LED亮灭—查询方式任务要求

选择SW1为目标按键,CC2530开发板上电后D3熄灭,在程序中判断按键是否按下,每次按下,将D3的亮灭状态切换一次,即由亮到灭,或者由灭到亮。12相关寄存器基础知识3任务分析4电路图分析5任务实现一、基础知识

查询方式一般来说,按键会连接外接电源(或接地)、电阻,以及单片机的I/O引脚。按下按键后,会导致CC2530单片机I/O引脚上的电平发生高低转换。在程序中,通过不断查询I/O引脚上的高低电平的变化,来判断按键是否按下的方式。一、基础知识

按键抖动通常所用的按键都是机械弹性开关,由于机械触点的弹性作用,一个按键在闭合时不会马上稳定地接通,在断开时也不会马上稳定地断开,而是在闭合或断开的瞬间伴随一连串的抖动。按下抬起按下抬起一、基础知识

按键抖动抖动时间的长短由按键的机械特性决定,一般为5ms~10ms,人按一下按键的时间一般为零点几秒至数秒。由于单片机运行速度快,按键的抖动会导致在一次按下过程中,单片机识别出多次按下和抬起。为避免这种情况,需要消除按键抖动带来的影响。问题按下抬起按下抬起一、基础知识

通过电路硬件设计的方法来过滤按键输出信号,将抖动信号过滤成理想信号后传输给单片机。消除抖动的方式通过程序过滤的方法,在程序中检测到按键动作后,延时一段时间后再次检测按键状态,如果延时前后按键的状态一致,则说明按键是正常执行动作,否则认为是按键抖动。硬件去抖软件去抖二、相关寄存器输入模式寄存器:P0INP,P1INP,P2INPP0INP位名称复位读写描述7:00x00R/WP0_0~P0_7输入选择位:0为上拉/下拉,1为三态P1INP位名称复位读写描述7:2000000R/WP1_7~P1_2输入选择位:0为上拉/下拉,1为三态1:000R0没有使用二、相关寄存器P2INP位名称复位读写描述70R/W对所有P2端口设置上拉/下拉输入:0为上拉,1为下拉60R/W对所有P1端口设置上拉/下拉输入:0为上拉,1为下拉50R/W对所有P0端口设置上拉/下拉输入:0为上拉,1为下拉4:000000R/WP2_4~P2_0输入选择位:0为上拉/下拉,1为三态引脚是上拉、下拉,还是三态,需要P0INP、P1INP和P2INP配合设置。二、相关寄存器设置P1_2为上拉

P1INP&=~0x04;P2INP|=0x20;设置P1_2为上拉/下拉设置P1端口全为上拉,故P1_2也为上拉三、任务分析

CC2530单片机上电,配置SW1、D3对应的I/O引脚,并熄灭D3。使用软件去抖方式,判断按键是否按下。如果SW1按下,切换D3亮灭状态,等待SW1抬起后,返回步骤2,继续执行;如果SW1没按下,返回步骤2,继续执行。四、电路图分析

当SW1没有被按下时,P1_2引脚相当于外接了一个上拉电阻,并连接到3.3V电源上,呈现高电平状态。当SW1被按下时,SW1的4个引脚导通,P1_2引脚相当于直接连接到地,呈现低电平状态。根据电路连接图可知,当SW1按键被按下时,从P1_2引脚读取的逻辑值是0,按键没被按下时,从P1_2读取的值是1。五、任务实现

引脚设置设置P1_0为通用I/O引脚,输出方向P1SEL

&=~

0x01;

//设置P1_0引脚为通用I/O引脚P1DIR

|=

0x01;//设置P1_0引脚为输出方向设置P1_2为通用I/O引脚,输入方向P1SEL

&=~

0x04;

//设置P1_2引脚为通用I/O引脚P1DIR

&=~

0x04;

//设置P1_2引脚为输入方向设置P1_2为上拉输入模式P1INP

&=~

0x04;

//设置P1_2引脚为上拉/下拉模式P2INP

&=~

0x40;

//设置P1_2引脚为上拉模式五、任务实现

按键事件处理while(1)//程序主循环

{

if(SW1

==

0)

//如果按键被按下

{

delay(100);

//软件消抖进行延时

if(SW1

==

0)

//经过延时后按键仍旧处在按下状态

{

D3

=

!D3;

//切换D3的亮灭状态

while(!SW1);

//等待按键松开

}

}

}软件去抖的实现方式当按键处在按下状态的时候,SW1值是0,!SW1值为1,这样while(!SW1)是死循环,会导致CC2530单片机的CPU一直循环执行该行代码,即导致单片机“卡”在这里。当按键抬起的时候,SW1值为1,!SW1值为0,该循环会结束,然后继续执行主循环。#defineSW1(P1_2)#defineD3(P1_0)五、任务实现编译程序,并生成.hex文件,将.hex文件烧写到CC2530

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论