本應用筆記說明了使用Microchip PIC1845F1855微控制器實現DS12或DS509非易失數字電位器按鈕接口的方法。
硬件設置
圖1中的原理圖說明了如何將按鈕連接到微控制器。它還顯示了IC接口是如何實現的。
其中三個開關為瞬時按鈕型,用于遞增 (UP)、遞減 (DWN) 和設置中間電位值 (MID)。按下時,這些開關會強制微控制器的三個通用I/O(GP0、GP1和GP3)為低電平。之所以明確選擇這些I/O,是因為它們具有內部(可選)上拉電阻,如果啟用低電流SLEEP模式,它們會產生喚醒中斷。另一個輸入開關是分配給GP2的DPDT開關。此開關可用于選擇 POT0 或 POT1 進行編程。
SDA、SCL 和 LED 上的輸出信號分配給 GP5、GP4 和 GP0。SDA和SCL具有4.7kΩ上拉電阻,并直接連接到數字電位器的通信引腳。LED 和 MID 瞬時開關均使用 GP0 引腳作為資源。GP0引腳大部分時間用作輸入,輪詢由MID按鈕引起的低電平。但是,如果按下一個或兩個其他瞬時按鈕,則PIC輸出低電平,導致LED被驅動。這樣,只要按下 MID 按鈕,LED 就會被驅動,每當按下另一個按鈕開關時,PIC 就會驅動 LED。R1、R2 和 R3 是可選的上拉電阻,使用 PIC12F509 時無需填充。
圖2給出了DS1845/DS1855用于評估的特定連接。提供跳線用于選擇地址引腳,分隔共享的V抄送(五DD),以及隔離 SDA 和 SCL。
圖1.PIC12F509接口電路。
圖2.DS1845/DS1855數字電位器連接到PIC控制器。
固件說明
該項目的固件是用MPLAB IDE(版本7.31)編譯的匯編語言編寫的。該工具目前可從Microchip免費獲得。整個程序由程序空間(閃存)中的不到512條指令和數據空間(RAM)中的14個位置組成。
指令分為五個塊:初始化、讀取、UP、DWN 和 MID。固件只是在循環中連續輪詢輸入引腳。由于程序的固有延遲和邏輯流程,開關去波化會自動合并到軟件中。
初始化模塊在 PIC 上電時或喚醒后運行一次(如果啟用了 SLEEP)。運行 Initialize 塊中的指令后,操作寄存器、標志和變量將加載到已知狀態。執行這些指令后,其余模塊串行形成無限循環,以輪詢開關,通過IC讀取或寫入新的電位器值。
電位器值的IC讀取僅在設置RD_FLAG時發生。此標志在初始化期間設置一次,然后在按鈕調用將電位器寄存器寫入新值時設置一次。通過在電位值變化期間和啟動時僅執行IC READ,當UP、DWN或MID按鈕未按下時,總線上不會發生多余的通信突發。例如,如果電位器已經在使用中控制電源微調參數,則連接按鈕控制器以執行在線編程。在對電位器值執行IC寫入之前,將讀取當前的電位器值。IC寫入完成后,再次設置RD_FLAG以生成新電位器值的最終IC讀取。
UP、DWN 和 MID 塊在讀取塊之后按順序運行。在每個模塊中,相應的引腳被輪詢為低狀態。如果找到HIGH狀態,則程序將快速退出該塊,而不會導致發生任何IC通信。如果檢測到 LOW,則程序按照邏輯框圖中的說明進行。
功能說明
該項目的固件和硬件允許在DS1845/DS1855上對電位器值進行編程時執行多種不同的操作。開關和 LED 功能包括:
POT0/1(選擇撥動開關) | 此開關選擇在下一次循環迭代中控制哪個電位器(如有必要)。此開關上的狀態更改會選擇 POT0 或 POT1,導致 IC 讀取,并且對 LED 沒有影響。2 |
點擊 MID、UP或 DWN 按鈕(< 400 毫秒) | 通過輕觸其中一個開關,所選電位器將遞增 (UP)、遞減 (DWN) 或直接加載中間位置 (MID)。執行IC寫入時,LED將短暫亮起;IC讀取將在下一次循環迭代中進行。22 |
按住 UP 或 DWN 按鈕(> 400 毫秒) | 通過按住UP或DWN按鈕,所選電位器將進入快速遞增或遞減模式。現在,電位器值將繼續變化,直到松開按鈕或達到最大/最小位置。執行 IC 寫入時,LED 將亮起;它將保持亮起,直到松開按鈕。按鈕釋放后,IC讀取將在下一次循環迭代中進行。22 |
按住 UP,然后點擊 DWN 按鈕 | 通過按住UP按鈕,所選的電位器將開始遞增。然后,在仍然按下UP按鈕的同時,點擊DWN按鈕,使所選電位器直接加載到最大位置。LED 將亮起,直到松開開關。釋放按鈕后,IC讀取將在下一次循環迭代中發生。2 |
按住 DWN,然后點擊向上按鈕 | 通過按住DWN按鈕,所選電位器將開始遞減。然后,在仍然按下DWN按鈕的同時,點擊UP按鈕,使所選電位器直接加載到最小位置0x00。LED 將亮起,直到松開開關。釋放按鈕后,IC讀取將在下一次循環迭代中發生。2 |
指示燈閃爍三次 | 每當上電期間初始化PIC或看門狗定時器導致系統復位(如果啟用)時,LED將閃爍三次。 |
LED 持續快速閃爍 | 每當發生IC錯誤時,LED將持續快速閃爍。糾正錯誤后,指示燈將恢復正常功能。通過檢查設備地址是否正確以及IC總線是否已連接來進行故障排除。22 |
結論
本應用筆記介紹如何為DS1845/DS1855非易失數字電位器使用和構建簡單、高性價比的控制器。按鈕輸入轉換為IC命令,以遞增、遞減或設置中間位置,而無需主機。
審核編輯:郭婷
-
微控制器
+關注
關注
48文章
7552瀏覽量
151426 -
led
+關注
關注
242文章
23277瀏覽量
660893 -
數字電位器
+關注
關注
4文章
267瀏覽量
83229
發布評論請先 登錄
相關推薦
評論