新聞中心

        EEPW首頁 > 光電顯示 > 設計應用 > MSP430 電容觸摸轉輪和LED PWM 輸出設計

        MSP430 電容觸摸轉輪和LED PWM 輸出設計

        作者: 時間:2018-08-14 來源:網絡 收藏

        本文引用地址:http://www.104case.com/article/201808/386752.htm

        驅動部分電路如圖 5, 由于每一個 的電流在10mA 左右,24 個 如果同時亮就有240mA,無法通過MCU IO 口直接驅動,在每個LED 上加一個三極管以及限流電阻,實現24路LED 的控制。

        圖 6 LED 驅動電路

        3.2 代碼設計

        3.2.1 LED驅動

        在編寫代碼控制LED 點亮時序前,先定義好PWM 輸出相關的規格:

        • PWM 輸出占空比設置為50%。

        • 頻率為5K Hz, 亮度的等級分為24 級,0 級的時候關閉LED, 23 的時候最亮。

        • 使用2個TIMER 進行PWM 輸出的控制

        • TIMERA0 中斷頻率為24 X 5K Hz = 120K Hz.

        • TIMERB中斷間隔設為10ms,在TIMERB 中進行LED 亮度等級的改變

        通過兩個TIMER 的中斷配合,就可以完成24 路獨立PWM 輸出的控制。當有觸摸事件產生時,根據觸摸位置對對應的LED 進行亮度等級賦值,然后在TIMERB 的中斷中讓亮度等級慢慢減少至零,這樣就可以實現手指離開電極后,對應LED 慢慢變暗的效果。

        在兩個TIMER 中斷里的程序流程圖如下圖 7 和圖 8

        圖 7 TIMERB 流程圖

        圖 8 TIMERA0 流程圖

        3.2.2 轉輪

        德州儀器的電容觸摸軟件庫支持電容按鍵的信號檢測以及轉輪坐標的計算,通過軟件庫相關參數的配置以及函數的調用就可以得到當前觸摸事件的位置值,可以參考德州儀器的觸摸按鍵軟件庫(www.ti.com/capacitivetouch)獲得詳細介紹。

        當用戶在轉輪上做滑動操作,LED 的軌跡顯示應該是N 個燈同時被點亮,手指所在位置的燈最亮,之前滑過的軌跡上的燈一個比一個暗,N 的數值由操作者滑動的速度決定,如果滑的速度夠快,24 個LED 燈會同時被點亮,只是亮度不同。

        在滑動很快的操作時會帶來一個問題,電容按鍵掃描的周期跟不上滑動的速度,導致坐標的變化不是連續的,結果就是LED 的軌跡不連貫,在連續的N 個LED 中有部分沒有被點亮。為了解決這個問題需要在轉輪坐標計算后加入一個插值算法,在用戶操作過快的時候對被漏掉的坐標進行補值,使得LED 的軌跡連續。

        插值的方法可以通過當前位置和上一次位置的比較,決定是否要進行插值,這里需要設置一個插值門限InterpolationThreshold,當位置跳動距離超過門限就不進行插值,反正誤操作產生。

        if((WheelPosition-LastPosition)

        {

        for (j=1;j=(WheelPosition-LastPosition+1);j++)

        {

        SetLightLevel(LastPosition+j);

        }

        }

        除此之外,還需要對兩個特殊情況做處理,及正向和反向滑動操作經過轉輪坐標0 點。

        4. 總結

        本文介紹了使用MSP430G 系列單芯片實現電容觸摸轉輪和24 路獨立PWM 輸出LED 控制方案,在一些需要低成本的產品設計,又要對多種LED 特效控制的場合,有很大的使用價值。


        上一頁 1 2 下一頁

        關鍵詞: LED

        評論


        相關推薦

        技術專區

        關閉
        主站蜘蛛池模板: 嘉祥县| 天全县| 于都县| 遂平县| 原阳县| 澳门| 澜沧| 夹江县| 沙田区| 锡林郭勒盟| 玉门市| 政和县| 福鼎市| 辽宁省| 威远县| 兴文县| 鄢陵县| 赣州市| 集安市| 汉阴县| 昭觉县| 灌云县| 乌苏市| 南岸区| 西丰县| 荃湾区| 惠来县| 通辽市| 楚雄市| 通城县| 丰台区| 晋江市| 罗平县| 长海县| 双桥区| 都匀市| 宣化县| 阜新市| 绥芬河市| 高密市| 邵阳县|