構建DS1803/DS1805數(shù)字電位器的按鍵控制器
概述
本應用筆記介紹了一種使用幾個按鍵和一個微控制器控制DS1803或DS1805電位器阻值的簡易方法。Microchip PIC12F509微控制器用于連接四個開關和數(shù)字電位器,僅需極少的元件。
硬件
該應用的硬件原理圖如圖1、圖2所示。PIC12F509有6個I/O口,用于SDA、SCL輸出控制信號、一個LED和4個開關信號的接收。
圖1 給出了PIC12F509的內(nèi)部控制原理圖,R1 、R2和R3為上拉電阻,使用PIC12F509時無需安裝這些電阻。圖2是評估DS1803的電路連接,跳線用于選擇地址引腳、分離共用的VCC (VDD)以及斷開SDA、SCL連接。
3個開關為觸摸式按鍵,用于增(UP)/減(DWN)和中間值(MID)控制。當按鍵按下時,微控制器通用I/O (GP0、GP1、GP3)中的一路拉低。由于這些I/O均有內(nèi)部上拉(可選擇),在器件已進入低電流SLEEP模式時可以產(chǎn)生中斷喚醒,做出正確的I/O識別。另外一路輸入開關為雙刀雙擲配置,用于觸發(fā)GP2,用來選擇POT0或POT1的編程。
SDA、SCL和LED輸出信號分別分配由GP5、 GP4和GP0控制。 SDA和SCL具有4.7kΩ上拉電阻,直接連接到數(shù)字電位器的通信引腳。LED 和MID瞬時開關均采用GP0引腳控制。GP0引腳在大部分時間內(nèi)作為輸入,MID按鍵可將其拉至低電平。但如果一個或兩個其它觸摸式按鍵被按下,該引腳輸出低電平,使LED點亮。通過這種方式,LED在MID按鍵按下時點亮,或在其它按鍵按下時由PIC點亮。
圖1. PIC12F508接口電路
圖2. DS1803數(shù)字電位器與PIC控制器的連接
固件
本工程固件用匯編語言編寫,在MPLAB IDE (7.31版本)上編譯。目前此工具由Microchip免費提供,整個程序包括:程序空間(閃存)低于512個指令,數(shù)據(jù)空間(RAM)為11位置數(shù)據(jù)。
程序分為5塊:初始化、讀數(shù)據(jù)、UP、DWN和MID。由于這款PIC不提供任何中斷,固件簡單地循環(huán)運行,連續(xù)檢測輸入引腳。程序通過內(nèi)部延時和邏輯流程自動完成開關去抖。
PIC上電或喚醒后(如果SLEEP使能)執(zhí)行一次初始化程序。初始化程序執(zhí)行完畢后,工作寄存器、標志位和變量均被置為已知狀態(tài)。這些指令執(zhí)行完畢后,其它幾個程序可以連續(xù)循環(huán),檢測開關狀態(tài),通過I2C接口讀、寫新的電位器值。
只有在RD_FLAG置位后,才能通過I2C讀取電位器值。該標志位在初始化時被置位,按鍵按下時可調(diào)用電位器寄存器的寫操作,寫入一個新的數(shù)值。只有在電位器數(shù)值發(fā)生變化或上電時才進行I2C讀操作,所以在增、減控制和中點設置按鍵均沒有按下時,總線不會出現(xiàn)多余的通信。例如,如果數(shù)字電位器用于控制電源的參數(shù),連接按鍵以實現(xiàn)在線編程。執(zhí)行I2C寫操作之前,可讀取當前的電位器值。每當I2C寫操作完成后,RD_FLAG重新置位,產(chǎn)生I2C讀操作讀取新的電位器值。
讀程序后按順序執(zhí)行UP、DWN和MID指令。執(zhí)行每個子程序時將相應的引腳拉至低電平。如果相應的引腳為高電平,將迅速退出子程序,不產(chǎn)生任何I2C通信。如果檢測到低電平,則運行流程圖所示程序。
可從Dallas Semiconductor的FTP網(wǎng)站下載固件流程圖(PDF)、源代碼(ASM)和可執(zhí)行指令(HEX),獲取本工程設計的完整說明。
http://files.dalsemi.com/system_extension/AppNotes/AN4011
功能說明
本工程的固件和硬件在設置DS1803/DS1805電位器時允許進行多種不同的操作。開關和LED的功能如下:
結論
本應用筆記介紹了DS1803或DS1805電位器的使用和控制方法。系統(tǒng)將按鍵輸入轉換為I2C指令,完成增、減和中點設置。本設計無需計算機主機,只需要少量的外部元件即可實現(xiàn)電位器阻值控制。
有關該應用筆記的問題/說明/建議,請發(fā)送email至MixedSignal.Apps@dalsemi.com。
評論