成为订阅者(免费)

加入29,000名其他订阅者以获得用户销售折扣和 其他免费资源。
:
:
大学教师'担心 - 您的邮件地址完全是 安全的。我保证使用它 只要 到 send you MicroZine.

后退 12F675教程索引 下一个

12F675教程2: Switch debounce

这款12F675微控制器开关 去抖教程向您展示如何在微控制器端口读取密钥以及如何 去除开关以进行可靠的开关检测。



跳到  无焊接面包板。
跳到 电路原理图。
跳到 软件 .

一个安全的 story

我们买了一个小 保险箱,不要储存金条,而是储存我的妻子'S药物 - 拥有 一个好奇的三岁,需要进入药物。  

当我在几乎每一个的访问代码中输入时,我都无法相信它 时间我击中了一个关键 - 钥匙反弹,即是多个关键压力机 每一个按键,除非我非常精确地击中钥匙 - 他们 在他们设计它时显然很匆忙。  

当这种情况发生时,安全坐在那里一分钟 - 非常 annoying.

这就是为什么切换去抖动是重要的和设计者的一个例子 电子技术显然不知道它。我甚至打开它 - 它有一个 内部的Atmel微控制器,所以它们可以很容易地摆脱开关 反弹问题。一天我'LL必须改变它(当然使用PIC MICRO) 我们现在只使用钥匙! 

转变 去抖:是什么?

什么时候开关 第一次按下它没有完全关闭,因为金属 联系人互相反弹!  

将信号送入逻辑门或微控制器发送多个键 按信号不是你想要的,所以你必须忽略弹跳 信号 - 这被称为Debouncing开关。

基本交换机去抖动微控制器解决方案是:
  • 检测 第一个按钮(或许多反弹的1)。
  • 等待A. while.
  • 检查 再次切换,看看它是否仍然是持平的。
注意:因为构造了每个交换机 不同的方式,钥匙反弹的特征将不同,所以你需要 以表征不同的交换机并评估反弹持续400us的长度, 800us或更长时间? (或只是使用长延迟)。

交换机去抖动解决方案

全部解决方案 cases is 时间 - 你必须等到 弹跳已经停止了。您要么使用Debouncing电路或使用软件 在弹跳停止后等待一段时间。  

最常见的离散开关Debouncing电路是电阻器和电容器 对馈入逻辑门的输入信号的对(充电 开关关闭时的电容器) - 在这种情况下,门必须具有 滞后使其正确地反应否则它可以振荡无论如何。  

使用微控制器时,最好的方法是使用软件去除 当微控制器可以轻松等待在决定之前轻松等待设定的时间段 切换值有效。您还可以更改时间段并进行 不需要额外的组件。

无焊接面包板

添加交换机 并使用HEX文件提取电阻,然后使用HEX文件编程芯片。

12F675切换去抖

了解用于创建的工具 this diagram.

电路原理图

再次 switch  扑相 电路在原理图上更易于看。

切换去抖电路图

12F675 pinouts

 
12F675引脚出局
其他意见:

 pic 12F675 PIC微控制器微控制器  pic  12F675微控制器


了解用于创建的工具 this diagram.

软件

该计划简单 按下按钮后打开LED,但按钮被删除。

源代码文件 :
获取文件 软件项目文件和C源代码 点击这里.

注意:最初在上电时,LED闪烁 然后关闭6次以显示微控制器处于活动状态。

输入按钮(交换机) port direction

注意init_ports() 为输入端口的第五位设置端口方向(设置位5 高)使用Trisio寄存器所有其他人仍然作为输出。

转变 debounce

代码 Debouncing在Get_key()下面显示。它返回零以为故障,1如果 the key was ok.

首先,它只是测试关键状态以确保按下键 (此电路中的低输入),如果不是返回0。

然后它等待1毫秒,让弹跳停止(这次延迟 可以根据交换机的特征而改变。获得的 正确的切换去抖动动作)。

然后再次检查密钥 -
如果关键状态有 改变然后它返回0.如果它没有改变,则键已举行 在低状态并且与第一次测试相同 - 它是一个有效的按键 所以例程返回1。  

以下代码是交换机访问源代码的一部分:
// ////// //////////////////////////////////////////////////////////////////////////// //////////////////////
空白 init_ports(void) {
   TRISIO = (1<<5); // 设置为输出,除了位5 gp5 = I / p
}

// ////// //////////////////////////////////////////////////////////////////////////// //////////////////////
get_key(void) {

   // gp5低 - 没有 exit
   如果 (GPIO & (1<<5)) 返回 0; // 没有键

   delay_ms(1); // 等待 key to settle

   // gp5高吗?是的,所以 exit = false key.
   如果 ( (GPIO & (1<<5))>0 ) 返回 0; // 是一个假键,所以重启

   返回 1; // 键确定所以返回有效
}

基本上用于开关去抖动程序,您测试一个密钥,等待一个 虽然并重新测试 - 如果结果是一样的,那么它是有效的 key.

后退 12F675教程索引 下一个

从12F675跳跃 Tutorial 2 : 切换去抖 to
最佳微控制器 - 项目主页


隐私政策 | 接触 | 关于我

网站地图 | 使用条款



 ezoic. 报告此广告

访问我们的Facebook页面:

   点击这里



最近的文章

  1. 如何使用ADS1115

    使用ADS1115精度16位ADC进行教程进行低功耗。

    阅读更多

  2. arduino. 模拟输出...易模拟输出生成

    arduino. 模拟输出:如何创建最精确的PWM模拟输出以及如何创建模拟PWM正弦波。

    阅读更多

  3. 数号和等效的快速宏。加快代码!

    了解DigitalWrite()的工作原理......现在使用17倍宏宏!

    阅读更多

  4. TCS230颜色传感芯片:如何运作以及如何使用它。

    如何使用TCS230(/ TCS3200)彩色检测器芯片并轻松将其添加到您的任何项目中。

    阅读更多

  5. 如何使用ADXL345进行运动感测等。

    使用ADXL345 Acellerometer,您可以检测到16G!您还可以了解如何使用它来点击检测等。

    阅读更多

  6. HMC5883L 3轴数字MAGENTOMTER如何运作

    HMC5883L - 如何制作数字罗盘,了解HMC5883L和QMC5883L之间的差异以及它们是否兼容。

    阅读更多



读者 Comments

"I wanted to thank
你这么好
对于所有信息
你已经提供了
你的网站's

高超 极好的."

- 逃亡Potthath.

"This site really is
最好的和我最喜欢的。
我发现这里有很多很有用
项目和提示。"

- 米兰

Bursach.<at>gmail.com<

"Awesome site,
非常,非常容易和好
导航!"


-
Matt_tr. <at>
wolf359.cjb.net.


学习微控制器

"Interested in
微控制器?"

注册
免费7天指南:

自由 GUIDE : CLICK HERE


"I am a newbie to PIC
我想说
 how great your
网站一直在为我。"


- 戴夫

de_scott.<at>bellsouth.net

"Your site is a great
和完美的工作。
恭喜。"


- SURESH.

IntegratedInfosys.<at>
Yahoo.com.

"I couldn't find the correct
要定义的词语
你的网页。

非常有用,揭开,
诚实明确。

非常感谢
你的时间和作品。
问候。 "


- Anon.

回到顶部