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