由于感應(yīng)按鍵跟使用的電源、接觸方式、隔離介質(zhì)不同,很多工程師使用專用感應(yīng)按鍵IC。選擇專用IC的一個總要原因是由于專用IC只要調(diào)節(jié)一個外部元件就可以。針對這些特點編寫了針對海爾的HR7P201的MCU感應(yīng)按鍵庫。設(shè)計要求:1、初次使用只要簡單選擇相關(guān)感應(yīng)按鍵通道 和靈敏度。其它參數(shù)庫文件內(nèi)部使用默認設(shè)計就使用2、針對高端用戶庫文件可以支持LED和感應(yīng)按鍵復用,感應(yīng)按鍵跟LED驅(qū)動iC的通信線復用,感應(yīng)按鍵跟LCD驅(qū)動IC復用特點3、調(diào)試函數(shù)??梢苑奖阌脩粼陂_發(fā)時,查看每個通道的情況 。方便更精準的使用感應(yīng)按鍵。 一、最簡易的測試程序 void main()
{
clr_ram();//清內(nèi)存 while(1) { //感應(yīng)按鍵通道任意選擇 TK_SET(0,25);//開啟感應(yīng)按鍵通道0,靈敏度為25 TK_SET(6,,25);//開啟感應(yīng)按鍵通道6,靈敏度為25 TK_SET(7,25);//開啟感應(yīng)按鍵通道7,靈敏度為25 if(TKCTL==2)//感應(yīng)按鍵轉(zhuǎn)換完 { TK_READ_DATA();//讀感應(yīng)按鍵結(jié)果
TK_START();//啟動感應(yīng)按鍵
} TK_MANAGE();//感應(yīng)按鍵處理函數(shù) KEY_OK=TK_RETUN_SINGLE();//感應(yīng)按鍵所有鍵讀出結(jié)果 }
一、感應(yīng)按鍵通道選擇和靈敏度設(shè)置
void TK_SET(unsigned char NUM,unsigned charSENSITIVITY)
TK_SET是感應(yīng)按鍵通道設(shè)定函數(shù)
NUM是通道值,HR7P201有14個通道分別是TK0到TK13。NUM的值范圍為0到13.0代表TK0,13代表TK13.
SENSITIVITY是靈敏度,建議賦值為(5-80)
比如選用感應(yīng)按鍵0,靈敏度為20;感應(yīng)鍵9,靈敏度為25;
TK_SET(0,20);
TK_SET(9,25);
二、感應(yīng)按鍵基線更新速度設(shè)置
void TK_BASELINE_SPEED(unsigned charTK_BASE_UP_SPEED,unsigned charTK_BASE_DOWN_SPEED,unsigned charTK_BASE_OK_SPEED);
TK_BASELINE_SPEED是基線更新速度函數(shù)
TK_BASE_UP_SPEED是向上更新速度,一般取值為(5-40);默認為20;
在滿足緩慢按下手感情況下,值越小越好。便于環(huán)境自適應(yīng)。
TK_BASE_DOWN_SPEED向下更新速度,一般取值為(5-40);默認為20;
在滿足手按住按鍵上電后再次按下手感情況下,值越大越好。
TK_BASE_OK_SPEED相等更新速度,一般取值為(5-40);默認為20;
在滿足上電后馬上操作情況下,值越大越好。
三、感應(yīng)按鍵系統(tǒng)初始化
void TK_SYS_CONFIG(unsigned char TK_single_ack_SPEED,unsigned char TK_strongest_ack_SPEED,unsigned char TK_AP,unsigned char TK_CLK);
TK_SYS_CONFIG是系統(tǒng)選項
TK_single_ack_SPEED是多鍵相應(yīng)速度,一般取值(1-20)默認為4;
多鍵按下相應(yīng)速度,相當于普通按鍵的濾波次數(shù)。在滿足手感情況下,值越大越好。
TK_strongest_ack_SPEED是最強鍵相應(yīng)速度,一般取值(1-20)默認為4;
最強鍵按下相應(yīng)速度,相當于普通按鍵的濾波次數(shù)。在滿足手感情況下,值越大越好。最強鍵是在感應(yīng)按鍵潮濕情況下,單個輸出的有效鍵
TK_AP是感應(yīng)按鍵的放大倍數(shù),取值范圍是(1-255);默認為20;
TK_CLK是最多按鍵有效數(shù)和感應(yīng)模塊頻率,高四位為感應(yīng)按鍵最多按鍵有效數(shù)(默認值為14),低四位為感應(yīng)模塊頻率默認值為1
高四位設(shè)定(2-14):
1、 在調(diào)試階段設(shè)定為14
2、 沒有組合鍵高四位設(shè)定為2
3、 有組合鍵設(shè)定為組合鍵數(shù)加1.比如是兩個鍵的組合鍵設(shè)定為3.
低四位的設(shè)定(0-3):
1、 用示波器看感應(yīng)按鍵的波形,在波形不變形的情況下數(shù)值越小越好
2、 查看按鍵結(jié)果,在數(shù)值不變情況下,數(shù)值越小越好。查看按鍵結(jié)果使用函數(shù)unsigned intTK_RETUN_RAWDATA(unsigned char NUM);
四、感應(yīng)按鍵轉(zhuǎn)換結(jié)果讀出函數(shù)
void TK_READ_DATA();
感應(yīng)按鍵轉(zhuǎn)換完利用本函數(shù)保存轉(zhuǎn)換結(jié)果
五、感應(yīng)按鍵通道啟動函數(shù)
void TK_START();
啟動感應(yīng)按鍵工作
六、感應(yīng)按鍵處理函數(shù)
void TK_MANAGE();
感應(yīng)按鍵處理函數(shù)。建議1毫秒調(diào)用一次。
七、感應(yīng)按鍵軟復位函數(shù)
voidTK_REST(void);
調(diào)用本函數(shù),感應(yīng)按鍵自動復位學習環(huán)境參數(shù)。
八、調(diào)試函數(shù)
unsigned char TK_RETUN_DELTA(unsigned char NUM);
感應(yīng)按鍵變化量讀出函數(shù),NUM的值范圍為0到13.0代表TK0,13代表TK13.
14為最大變化量。
本函數(shù)是為了設(shè)定感應(yīng)按鍵靈敏度,在實際系統(tǒng)調(diào)試時按下按鍵讀出相應(yīng)按鍵變化量取本值的1/2作為感應(yīng)按鍵的靈敏度值。
unsigned int TK_RETUN_RAWDATA(unsigned char NUM);
感應(yīng)按鍵原始值讀出函數(shù)。NUM的值范圍為0到13.0代表TK0,13代表TK13.
九、輸出函數(shù)
unsigned char TK_RETUN_strongest();
感應(yīng)按鍵最強值讀出結(jié)果。單鍵有效的時候建議使用本函數(shù)輸出的結(jié)果。TK0有效輸出為1,TK2有效輸出為3.
unsigned int TK_RETUN_SINGLE();
感應(yīng)按鍵多鍵輸出結(jié)果。TK0輸出在BIT0,TK1輸出在BIT1,TK13輸出在BIT13.
有組合鍵時利用本輸出結(jié)果。建議在有組合鍵時加上長按有效。 void main()
{
clr_ram();//清內(nèi)存
TK_SET(0,25);//開啟感應(yīng)按鍵通道0,靈敏度為25
TK_SET(6,,25);//開啟感應(yīng)按鍵通道6,靈敏度為25
TK_SET(7,25);//開啟感應(yīng)按鍵通道7,靈敏度為25
TK_BASELINE_SPEED(10,10,10);//
//TK_BASELINE_SPEED是基線更新速度函數(shù)
//TK_BASE_UP_SPEED是向上更新速度,一般取值為(5-40);
//TK_BASE_DOWN_SPEED向下更新速度,一般取值為(5-40);
//TK_BASE_OK_SPEED相等更新速度,一般取值為(5-40);
//建議本函數(shù)放主循環(huán)里
TK_SYS_CONFIG(4,4,20,0x21);//TK_SYS_CONFIG(4,4,20,0xf1);
//TK_SYS_CONFIG是系統(tǒng)選項
//TK_single_ack_SPEED是多鍵相應(yīng)速度,一般取值(1-20)
//TK_strongest_ack_SPEED是最強鍵相應(yīng)速度,一般取值(1-20)
//TK_AP是感應(yīng)按鍵的放大倍數(shù),取值范圍是(1-255);
//TK_CLK是感應(yīng)模塊頻率,0xf`1(最多支持15鍵),
while(1)
{
CLR_WDT()
TK_MANAGE();//感應(yīng)按鍵處理函數(shù),每1MS調(diào)用一次
// TK_RETUN_DELTA(9);//感應(yīng)按鍵變化量讀出函數(shù),NUM是通道
// TK_RETUN_DELTA(10);//感應(yīng)按鍵變化量讀出函數(shù),NUM是通道
//TK_RETUN_DELTA(11);//感應(yīng)按鍵變化量讀出函數(shù),NUM是通道
//TK_RETUN_SINGLE();//感應(yīng)按鍵所有鍵讀出結(jié)果
i=TK_RETUN_strongest();//感應(yīng)按鍵最強值讀出結(jié)果
}