新聞中心

        EEPW首頁 > 嵌入式系統 > 設計應用 > 基于Atmel QTouch的ATmega48感應的按鍵設計

        基于Atmel QTouch的ATmega48感應的按鍵設計

        作者: 時間:2013-11-12 來源:網絡 收藏
        4 函數庫安裝與軟件配置
          要把單片機的I/O口作為感應按鍵輸入口來使用,首先需要安裝函數庫__Libraries,目前比較新的函數庫版本是4.3。安裝完畢后,需要將與單片機對應的庫文件加載到工程中。公司的集成開發環境AVR Studio提供了便捷的設置,新建一個工程后,可在Project→Configuration Options→Libraries界面中添加函數庫鏈接文件。
          其次,需要對I/O口進行配置。在工程配置(Project→Configuration Options→Custom Options)界面設置相應的宏定義參數即可,如圖4所示。
        基于Atmel QTouch的ATmega48感應的按鍵設計
        圖4 AVR Studio工程配置界面
          D_QTOUCH_:需要使用函數庫。
          DSNSK=C和DSNS=C:表示將 PC口設置為感應按鍵口。
          DQT_NUM_CHANNELS=4:表示最大可用通道數量。
          DQT_DELAY_CYCLES=1:表示采樣電容充放電周期時間。
          另外,在應用系統源程序中需要加入庫函數的頭文件。代碼如下:
          #include "touch_api.h"
        5 系統應用
          應用流程如圖5所示。在系統初始化之后,首先調用config_sensors()函數將需要的I/O口配置成感應按鍵的采樣口,并對各個感應按鍵的各個狀態進行初始化。然后是設置感應參數,這些參數包括按鍵校準閾值、正向漂移值、負向漂移值、最大連續感應時間等[3]。最后,在應用系統的主程序中,需要周期地調用庫函數qt_measuer_channels()對感應信號進行測量,并檢測按鍵的狀態。
        基于Atmel QTouch的ATmega48感應的按鍵設計
        圖5 QTouch應用流程
          需要注意的是,感應按鍵采集使用了系統的一個定時器中斷,因此,應用系統中的中斷程序會對其造成一定的影響。這就要求在按鍵感應的過程中,應用系統的中斷服務程序的處理時間越短越好。在電容感應工作的時候,中斷服務程序處理時間不應該超過1 ms,否則將嚴重影響感應按鍵的靈敏度,甚至會導致感應按鍵失靈[4]。
          應用系統程序如下:
        int main( void ){
          init_system();/*系統初始化*/
          config_sensors();/*將I/O口配置成感應按鍵*/
          qt_init_sensing();/*初始化感應傳感器*/
          qt_set_parameters();/*感應參數設置*/
          init_timer_isr();/*用于感應按鍵的定時器設置*/
          qt_filter_callback = 0;/*濾波參數選擇*/
          __enable_interrupt();/*使能定時器中斷*//*應用程序主循環 */
          while (1) {
            if( time_to_measure_touch ) {
              time_to_measure_touch = 0u; /*繼續下一個采集周期*/
              qt_measure_sensors( current_time_ms_touch );/*感應檢測 */
            }
            KeyBuff = (qt_measure_data.qt_touch_status.sensor_states[0]);/*獲取感應按鍵狀態*/
            ……/*系統應用程序*/
          }
        }
        結語
          基于 QTouch技術的嵌入式感應按鍵設計,簡化了設計難度,降低了系統的應用成本,節省了印刷電路板的尺寸空間,系統應用穩定,可靈活應用于各類電子產品中。
        上一頁 1 2 下一頁

        關鍵詞: Atmel QTouch ATmega48

        評論


        相關推薦

        技術專區

        關閉
        主站蜘蛛池模板: 香格里拉县| 柯坪县| 兴安盟| 怀化市| 县级市| 蒙阴县| 青海省| 宁波市| 启东市| 广州市| 镇原县| 吉隆县| 南开区| 静乐县| 唐山市| 肥乡县| 甘泉县| 亚东县| 贵定县| 镇雄县| 江油市| 漳浦县| 新野县| 运城市| 托克逊县| 会东县| 鹤岗市| 洪雅县| 黑河市| 克拉玛依市| 福贡县| 四平市| 惠州市| 耿马| 泰来县| 咸宁市| 巴南区| 镇巴县| 神木县| 靖远县| 英吉沙县|