HT45R35_触控按键

HT45R35_触控按键
HT45R35_触控按键

1 HT45R35在触控按键中的应用 - 使用C 语言

文件编码文件编码::HA0156S

简介简介

HT45R35 Demo Board 包含12个Touch Switch ,这是一种电容式的非接触式触摸按键,它可以用来取代任何的机械式按键。由于C 语言具有良好的可读性、可移植性等优点,本文将介绍如何使用Holtek C 语言来完成HT45R35 12 key Touch Switch Demo Board 的软件设计。

HT45R35基本特征

? 工作电压:

f SYS =4MHz :2.2V~5.5V

f SYS =8MHz :3.3V~5.5V ? 16位双向输入/输出口

? 2个与输入/输出口共享引脚的外部中断输入

? 8位可程序定时/计数器,具有溢出中断和7级预分频器 ? 外部RC 振荡转换电路 ? 内置晶体和RC 振荡电路 ? 看门狗定时器

? 12通道电容/电阻型传感器输入 ? 2048×14程序内存ROM ? 120×8数据存储器RAM

? HALT 和唤醒功能可降低功耗

? 在VDD=5V ,系统频率为8MHz 时,指令周期为0.58us ? 指令执行时间为1或2个指令周期 ? 查表指令,表格内容字长14位 ? 4层硬件堆栈 ? 位元操作指令 ? 63条指令

? 低电压复位功能 ?

28-pin DIP 封装

图1

硬件方块图

图2

方块图说明

?电源: 由电池提供DC 3V/4.5V给Demo Board使用

?HT45R35: 控制MCU

?LED指示灯: 当有一个键被按下时,对应的LED便会点亮

?触控按键(Touch Switch) : 每个RC通道对应一个按键

2

硬件电路及说明

图3

3

4 电路图说明

电源

电源部分直接用电池提供3V 或4.5V 电压,用两个电容做滤波:

图4 电源部分电路

控制IC —HT45R35 HT45R35

外部RC 振荡器

HT45R35提供一个外部RC 振荡的功能。外部RC 振荡器包含有两个16位可编程向上计数器Timer A 和Timer B 。当RCO (RCOCR 的第1位) 为 "1" 时,有四个缓存器与RC 振荡器相关,TMRAL 、TMRAH 、TMRBL 和TMRBH 。Timer B 的时钟可来自于外部RC 振荡器;而Timer A 来自于系统时钟或系统时钟四分频,由RCOCCR 缓存器决定。

图5 RCOCCR (22H) 缓存器

图6 RCOCR (25H) 缓存器

图7 外部RC振荡器内部结构

如上图,Timer B时钟源选为外部RC振荡,Timer A时钟源选为系统时钟,当人手有触摸按键时,RC OSC 振荡周期会改变,从而导致单位周期个数(由Timer B计量) 的时间长短(由Timer A计量) 会改变,检查Timer A计数值的变化是否在一个预先设定的范围之内,即可判别Touch Switch ON/OFF。

5

模拟开关

HT45R35提供一个模拟开关,用来切换RC1 ~ RC12仿真通道。

图8 模拟开关

上图中,RC1 ~ RC12表示可提供12根RC线用来输入外部RC振荡、IN、RREF、CREF引脚分别连接了固定的电阻电容,RC OSC电路振荡产生一个波形,其周期值为参考周期值,当有电阻或电容连到RC引脚,就会改变RC OSC电路的振荡周期。人接触Touch Switch时,相当于在电路中并入一个电容,振荡周期会增长。

仿真时,RC振荡频率大约700kHz (Rref = 27kΩ, Cref = 10pF) ;实际Demo Board上,频率大约为900kHz (Rref =27kΩ, Cref =10pF) 。调试时,可以根据实际需要改变电阻值或者电容值来改变RC振荡的频率。

6

触摸按键部分 — Touch Switch

Touch Switch部分图示如下:

图9

Touch Switch Key分成三个部份:

?粉红色作用是隔离A与B

?淡蓝色圆A由铜组成,上面为绝缘层

?淡橘色圆B由铜组成,上面为绝缘层,接到地网络

7

软件设计说明

主流程图

图10

8

软件设计说明

程序中主要包括main()主函数、scan_key()、key_check()、update_base()等几个函数,各函数实现的功能如下:

?main()主函数

?在main函数中首先完成对MCU资源进行初始化,包括各种参数的初始化、I/O口的初始

化、定时器的设定、中断设定等,然后进入main函数的主循环,在main函数中完成按键

的识别及按键的显示。

?scan_key()函数

?按键扫描函数,对所有使用的通道扫描一遍。每次扫描一个通道,直到所有使用的通道

都扫描完后,scan_flag标志位设定为1。在此过程中,如果有按键按下,保存按键的按键

值、如果没有按键按下,按键值清除为零。

?key_check()函数

?按键确认函数。在实际应用过程中,可能需要连续确认几次某一按键被按下,才能认为

该按键被有效按下(主要目的是为了防止干扰)。如果连续数次(本程序中设定为4次) 扫

描完所有通道后得到的按键为同一按键值,就表示该按键被有效按下,此时点亮相应的

LED。

?update_base()函数

?定时更新基准值函数。2S定时调用update_base函数一次,如果满足更新条件,更新基准

值。

9

10 PCB Layout PCB Layout

TOPLAYER TOPLAYER

图11 TOPLAYER

BOTTOMLAYER BOTTOMLAYER

图12 BOTTOM LAYER

Layout 注意事项

? 此Demo Board 之Touch Switch Lay 于底层,直径8mm 圆形Key ,顶层无需再放置压克力板 ? Key 周围和到IC 之RC pin 之间的走线周围都须铺地,RC Pin 的线径要尽量短和细 (线径

11 7~8mil ,以10mil 为限) ,如图12。

? 外部RC 振荡模块 (C3、R13、R14) 这部分电路要尽量靠近MCU ,如图11。

? 因为光罩选项中选的是外部晶体振荡模式 (External Crystal Mode) ,PCB 板上的外部RC

振荡电路部分的组件没有焊上,见图13。

? 在用3V/4.5V 电池时,电池断电到通电的时间不能太短,否则会引起MCU 工作不正常;

或者另外在C1两端并连一个10k Ω的电阻,加速放电。

DemoBoard 实物图

图13

相关主题
相关文档
最新文档