【上海航芯ACM32F070开发板评测】4,LCD_TK程序解析
[复制链接]
LCD_TK例程我运行了一下,速度之快让我感到惊压。
我也是过点阵式显示屏的主,对一些菜单感到十分复杂,在检索时感觉不是太快,而这个例程,手碰一下就嘀一声,好像很灵活的样子。
那么我就有点感兴趣了,能不能我编出的东东也这么好用,且惹人喜爱呢?于是我来剖解一下。
就程序本身而言不太复杂,然而,不太复杂,我也瞅了老半天,瞅着瞅着就明白了,大体如下:
1,循环检测按键,只要有按键按下就嘀声提示
2,只有按下确定键程序就设个设定状态,而到设定状态跑程序,这个变量为:
fu8_Work_Mode
3,利用SYSTICK中断记数,记到一定量就设置变量来记住前一个状态,这个变量为:
gu8_time_count_free
大体流程就是这样子,让我感到惊讶的是这几个按键是电容的那么就得充放电。
看了下原理图如下:
自电容检测原理框图见结构框图章节所示。比较器负端连接到采样电容 Cs,正端连接
TKEY模块的参考电压VREF输出。每个TKSCLK周期,通过对SW1和SW2的控制,OPA/LDO
输出的充电电压 VKEY 会先给外置通道按键分布电容 Cx 充电,然后 Cx 给 Cs 充电,一般情
况下 Cx(pF 级)的值远小于 Cs(nF 级)。经过多次充放电后 Cs 两端电压超过参考电压 VREF
时,比较器输出翻转;由一个计数器对 Cx 向 Cs 充电的次数(从单个通道扫描开始到比较器
输出翻转)进行计数,得到单次扫描的计数值。当手指和触摸按键靠近时,会引起 Cx 值发生
变化,扫描的计数值就会发生变化。通过计数值的变化可以测量出 Cx 上电容的变化,从而达
到触摸检测的目的。另外,电路上除了外置的 Cx 通道,还有一个内置扫描通道连接到补偿电
容 Cr,Cr 可以用于测量 Cs,在 Cx 电容小于 10pF 时,也可以通过使能 Cr 进行补偿;还有用
于防水控制和增加检测灵敏度的 Cshield 屏蔽通道。
一个通道扫描控制流程如下:
使能检测通道,闭合 SWCX[n](正常模式)或 SWCR(内置通道);
SW1,SW2 断开,SWCS 闭合,使得 Cs 对地放电;
SW1,SW2,SWCS 断开,计数器清零;
SW1 闭合,SW2 断开,OPA/LDO 给 Cx 充电;
SW1 断开,SW2 闭合,Cx 给 Cs 充电,计数器加 1;
重复上两个步骤直到 Cs 电压超过 VREF;
比较器输出翻转,计数器结果锁存,并通过总线交给软件处理。
开发板按键有六个每个为一个通道,我按每个反应都很快但开发板都能准确响应,这我觉得有点不可思异。
就是说我每按一下,电容单元在里边已经无数次充放电了。
|