實際上用單片機實現電平式觸摸的原理是簡單的,因為手指觸摸即有電平的變化,讀出電平狀態就可以處理按鍵了。與之相比,看上去更高級一些的電容式觸摸技術就沒有這么簡單了,所謂的“更高級”并不是因為它的技術實現復雜,還是指在應用上顯得更文雅。電容式觸摸技術可以讓手指不接觸到金屬導線,給用戶的感覺是更安全的。因為誰也不能保證裸露在外的金屬片會不會帶有上千伏的電壓。電容式觸摸技術的另一個優勢是在產品設計方面。對于我們電子愛好者來說,找到一款適合自己DIY作品的外殼是很困難的,有的外殼制作高手可以在很短的時間內制作出精致又專業的外殼,可是并不是每個人都有這樣的本領。為露出微動開關而在外殼上鉆孔是再平常不過的了,可是鉆了孔就很難美觀了,我也一時為這個問題困惑。幸好有電容式觸摸技術,可以把我們的觸摸片設計在塑料外殼的內部(外殼不能是金屬的,不然電容觸摸就沒有效果了),外殼的表面只要貼一張標簽,寫明這是觸摸按鍵,具有什么功能就可以了。
(詳細內容:http://www.cndzz.com/diagram/3942_3943/96220.html)
防誤判部分源程序
/******************************************************************************
函數名:觸摸按鍵處理函數
調 用:? = Read_R ();
參 數:無
返回值:bit 1表示有感應物,0表示沒有感應物
結 果:
備 注:需要根據實現應用調協靈敏度和其他參數
/*****************************************************************************/
bit Read_R (void){
unsigned char R,ii,m=0,i,j,k;
bit aa;
for(ii=0;ii<3;ii++){ //循環檢查防干擾
j=0;k=0;
for(i=0;i<10;i++){ //一次采集數據的數量
DELAY_MS (3); //3毫秒延時
R = Read (0); //ADC讀取數據
if(R < 0x2F){ //此參數可調整感應靈敏度值在0x01到0x2F
k++; //波谷計數加1
}
if(R == 0xFF){ //ADC讀數的最大值必須等于0xFF
j++; //波峰計數加1
}
}
if(k>1 && j>1){ //觸摸波形的數量積加m的值
m++;
}else{
m=0; //如果波形條件不符合則m=0
}
}
if(m>2){ //根據m的數值判斷是否有感應物體
aa =1;
}else{
aa=0;
}
return(aa); //將aa作為返回值
}
/*****************************************************************************/
| 歡迎光臨 (http://m.raoushi.com/bbs/) | Powered by Discuz! X3.1 |