嵌入式單片機基礎(chǔ)篇(十一)之電容觸摸按鍵_第1頁
嵌入式單片機基礎(chǔ)篇(十一)之電容觸摸按鍵_第2頁
免費預(yù)覽已結(jié)束,剩余1頁可下載查看

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領(lǐng)

文檔簡介

1、嵌式單機基礎(chǔ)篇()之電容觸摸按鍵stm32F1 電容觸摸按鍵詳解1、RC充放電電路原理:(1)如上圖所,當開關(guān)關(guān)閉時,電容經(jīng)過電阻R充電,最開始的瞬間電流為最值V1/R,隨后隨著Vt越來越,電流變,電容充電速度變慢,當V1=Vt時,電流為0(2)RC電路充放電公式:Vt= V0+(V1-V0)* 1-exp(-t/RC)V0 為電容上的初始電壓值;V1 為電容最終可充到或放到的電壓值;Vt 為t時刻電容上的電壓值。R 為充電電阻C 為電容容值e 為然底數(shù)t 為充電時間如果V0為0,也就是從0V開始充電。那么公式簡化為:Vt= V1* 1-exp(-t/RC)結(jié)論:同樣的條件下,電容值C跟時間值

2、t成正關(guān)系,電容越,充電到達某個臨界值的時間越長。2、電容觸摸按鍵原理:R:外接電容充放電電阻。Cs:TPAD和PCB間的雜散電容。Cx:指按下時,指和TPAD之間的電容。開關(guān):電容放電開關(guān),由STM32 IO代替。電容觸摸按鍵原理簡之就是,當指按下觸摸按鍵的時候,相當于充電電容增,那么所需的充電時間就變長,根據(jù)電容充電時間的差異來判斷是否按下了觸摸按鍵上圖的開關(guān)作是,當開關(guān)閉合時,電容放電,當開關(guān)斷開時,電容充電。IO代替的話是需要先將IO配置成推挽輸出,再將IO置低電平0,來實現(xiàn)電容放電,再將IO配置成浮空輸,相當于斷開開關(guān),此時電容開始充電3、程序?qū)崿F(xiàn):觸摸按鍵程序與原理#define

3、TPAD_ARR_MAX_VAL 0XFFFF /最的值vu16 tpad_default_val0;/空載的時候(沒有按下),計數(shù)器需要的時間第步:初始化,也就是先放電后充電RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOA, ); /使能端時鐘GPIO_InitStructure.GPIO_Pin =GPIO_Pin_1; /PA1 端配置GPIO_InitStructure.GPIO_Mode =GPIO_Mode_Out_PP; /推挽輸出GPIO_InitStructure.GPIO_Speed =GPIO_Speed_50MHz;GPIO_Res

4、etBits(,GPIO_Pin_1);/PA.1輸出0,放電delay_ms(5);TIM_SetCounter(TIM5,0); /0TIM_ClearITPendingBit(TIM5, TIM_IT_CC2|TIM_IT_Update); /清除中斷標志/設(shè)置GPIOA.1為浮空輸GPIO_InitStructure.GPIO_ModeGPIO_Mode_IN_FLOATING; /浮空輸GPIO_Init(, GPIO_InitStructure);第步:輸捕獲,上升沿捕獲/定時器2通道2輸捕獲配置void TIM5_CH2_Cap_Init(u16 arr,u16 psc)GPIO

5、_InitStructure.GPIO_Pin =GPIO_Pin_1; /PA1端配置GPIO_InitStructure.GPIO_Speed =GPIO_Speed_50MHz; /速度50MHzGPIO_InitStructure.GPIO_ModeGPIO_Mode_IN_FLOATING; /浮空輸GPIO_Init(, GPIO_InitStructure); /設(shè)置為浮空輸TIM_TimeBaseStructure.TIM_Period =arr; /設(shè)定計數(shù)器動重裝值TIM_TimeBaseStructure.TIM_Prescaler psc; /預(yù)分頻器TIM_TimeB

6、aseStructure.TIM_ClockDivision =TIM_CKD_DIV1; /設(shè)置時鐘分割:TDTS = Tck_timTIM_TimeBaseStructure.TIM_CounterMode =TIM_CounterMode_Up; /TIM向上計數(shù)模式TIM_TimeBaseInit(TIM5, TIM_TimeBaseStructure); /根據(jù)TIM_TimeBaseInitStruct中指定的參數(shù)初始化TIMx的時間基數(shù)單位/初始化通道2TIM5_ICInitStructure.TIM_Channel =TIM_Channel_2; /CC1S=01 選擇輸端IC

7、2映射到TI5上TIM5_ICInitStructure.TIM_ICPolarity =TIM_ICPolarity_Rising; /上升沿捕獲TIM5_ICInitStructure.TIM_ICSelection =TIM_ICSelection_DirectTI;TIM5_ICInitStructure.TIM_ICPrescaler =TIM_ICPSC_DIV1; /配置輸分頻,不分頻TIM5_ICInitStructure.TIM_ICFilter =0 x03;/IC2F=0011 8個定時器時鐘周期濾波TIM_ICInit(TIM5, TIM5_ICInitStructur

8、e);/初始化I5 IC2TIM_Cmd(TIM5,ENABLE); /使能定時器50開始到達上升沿的時間u16 TPAD_Get_Val(void)TPAD_Reset();while(TIM_GetFlagStatus(TIM5, TIM_IT_CC2) =)/等待捕獲上升沿if(TIM_GetCounter(TIM5)-500)return TIM_GetCounter(TIM5);/超時了,直接返回CNT的值;return TIM_GetCapture2(TIM5);第四步,獲取時間最值u16 TPAD_Get_MaxVal(u8 n)u16 temp0;tempTPAD_Get_Va

9、l();/得到次值TIM5_CH2_Cap_Init(,psc-1);/1Mhz的頻率計數(shù)for(0;10;)/連續(xù)讀取10次delay_ms(10);for(0;9;)/排序if(bufbuf)/升序排列tempbuf;bufbuf;for(2;8;)tempbuf;/取中間的6個數(shù)據(jù)進平均tpad_default_valtemp/6;if(tpad_default_val/2)return 1;/初始化遇到超過TPAD_ARR_MAX_VAL/2的數(shù)值,不正常!第六步,掃描并判斷是否觸摸按鍵/mode:0,不持連續(xù)觸發(fā)(按下次必須松開才能按下次);1,持連續(xù)觸發(fā)(可以直按下)/返回值:0,

10、沒有按下;1,有按下;#define TPAD_GATE_VAL 100 /觸摸的門限值,也就是必須于tpad_default_val+TPAD_GATE_VAL,才認為是有效觸摸.u8 TPAD_Scan(u8 mode)static u8 keyen0; /0,可以開始檢測;0,還不能開始檢測u8 res0;u8 sample3; /默認采樣次數(shù)為3次u16 rval;if(mode)sample6; /持連按的時候,設(shè)置采樣次數(shù)為6次keyen0; /持連按rvalTPAD_Get_MaxVal(sample);if(rval(tpad_default_valTPAD_GATE_VAL)/于tpad_default_val+TPAD_GATE_VAL,有效if(keyen0)res1; /keyen=0,有效/printf(r:%drn,rval);keyen3; /少要再過3次之后才能按鍵有效if(keyen)keyen-;第七步,主函數(shù)u8 t0; delay_init();NVIC_PriorityGroupConfig(NVIC_PriorityGroup_2);/設(shè)置中

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責。
  • 6. 下載文件中如有侵權(quán)或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論