新聞中心

        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

        評論


        相關推薦

        技術專區

        關閉
        主站蜘蛛池模板: 兰西县| 台州市| 宣城市| 固安县| 柳州市| 隆昌县| 贡觉县| 红安县| 房产| 满城县| 铜山县| 西乌珠穆沁旗| 博罗县| 堆龙德庆县| 调兵山市| 克山县| 仙居县| 莱西市| 古田县| 都江堰市| 从化市| 藁城市| 花莲市| 鲁山县| 高碑店市| 思茅市| 本溪市| 井研县| 涟水县| 临猗县| 信宜市| 山丹县| 唐山市| 兴化市| 嘉禾县| 永登县| 浪卡子县| 香港 | 班玛县| 松潘县| 望都县|