广告

基于MC20P24B实现电容式触摸按键的方法

2012-09-28 田庆兵 阅读:
MC20P24B是由上海晟矽微电子有限公司基于HC05设计的MCU,具有成本低、抗干扰能力强、指令丰富等特点。

一、MC20P24B芯片简介

MC20P24B是由上海晟矽微电子有限公司基于HC05设计的MCU,具有成本低、抗干扰能力强、指令丰富等特点。主要有以下特点:

●8位CISC型内核(HC05)

●4K byte OTP ROM、208 byte RAM

●3组IO口(最多可支持17个通用IO口和1个输入口)

●1个PWM输出、1个8位基本定时器、1个8位带比较输出的定时器

●1个10位ADC(9路输入)

●1个CLO输出(CLO频率为系统振荡频率的1/8)

●2个外中断、1个定时器中断、1个 PWM中断

●看门狗复位功能

●2.1V/3.6V低压复位

●可选晶振/RC振荡

晶振 400K-8MHz;RC振荡有 2MHz、4MHz、8MHz 3种可选(精度<2.5%)

●工作电压

2.2-5.5V(工作频率 400K-4MHz);2.7-5.5V(工作频率 4M-8MHz)

●工作温度-40-85℃

●封装形式:SOP20/DIP20/SOP16/DIP16/SOP8/DIP8

二、原理图


该系统主要由显示部分(TM1628和4位数码管)、按键部分及MCU(MC20P24B)组成MCU设置为内部RC振荡方式,频率为4MHz;P26设置为CLO输出功能(频率为 4MHz/8 = 500KHz)。

三、程序设计

1)软件流程图(见下图)


2)AD转换

AD转换程序主要完成对 4个按键值的采样,本例程采用采样 8次取平均值的方式;每 8次完成后分别与 4个按键 AD的前一个值(ADValue[ ])比较,如果大于则替代上一个值,小于则把两者的差值存放到对应的差值存储器(addifference[ ])【注 1】;

对差值进行排序,如果其中的最大值超过设定值【注 2】且第二大值小于设定值则认为此按键被按下,并把对应的按键值存放到按键值存储单元(KeyBuf)。

如果第二大值大于设定则认为按键无效【注 3】。

注 1:由于PCB布线的原因,差值会有一定的误差,所以要根据实际的情况进行修正

注 2:设定值要根据按键该板的厚度和材质实际测定。

注 3:出设置是为了避免按键板有水的情况,出现按键误判断。

3)按键程序

按键程序可以按照常规的做法设计,直接判断KeyBuf是否有值即可。

4)显示程序

本例程在无按键按下时,数码管循环显示每个按键的值及对应的按键AD值显示的差值,当有按键按下时最高位显示被按下的按键值,次高位和最低两位循环显示不同的按键值对应的按键AD值的差值。


作者:田庆兵

上海晟矽微电子有限公司

本文为EET电子工程专辑 原创文章,禁止转载。请尊重知识产权,违者本司保留追究责任的权利。
您可能感兴趣的文章
相关推荐
    广告
    近期热点
    广告
    广告
    可能感兴趣的话题
    广告
    广告
    向右滑动:上一篇 向左滑动:下一篇 我知道了