DS1804為數字電位器,具有EEPROM存儲器,其接口主要設計為與按鈕(人機接口)接口。通過仔細考慮這些按鈕控制的功能,DS1804也可以通過按鈕引腳直接連接到微控制器。本應用筆記以8051型處理器為例,描述了如何做到這一點。此外,本文還提供了匯編語言的源代碼,以簡化工程師在此類應用中使用DS1804的設計任務。涵蓋的主題包括:
如何在不更新EEPROM的情況下更改電位計設置。
如何通過更改EEPROM來更改電位器設置。
如何將電流電位計設置寫入EEPROM存儲器。
介紹
DS1804非易失(NV)微調電位器非常適合用于任何需要偏置電壓、電流或電阻的系統,無論是否手動調整。其遞增/遞減接口允許使用最少的外部硬件進行手動調整,或使用微型控制器進行自主操作。游標可以調整到100個位置之一,任何值都可以存儲在器件的NV寄存器中,以在上電時選擇游標值。該器件還提供多種小型封裝選項,包括 8 引腳 DIP、SOIC、μSOP 和倒裝芯片封裝。
本應用筆記提供了使用達拉斯半導體DS1804C87 (520)微控制器控制DS8051的簡單硬件和軟件設置。
與DS1804通信的微控制器硬件設置
使用DS1804的主要優點之一是硬件和軟件控制界面簡單。電位計和微控制器之間只需要三個連接:片選、上/下選擇和增量,分別位于圖1中微控制器的引腳P6.1、P5.1和P4.1上。原理圖上顯示了用于支持 8051 程序的兩個附加組件。第一個是經濟振蕩器芯片,可為 22 提供 22.8051 MHz 時鐘;連接到 P1.0 的 LED 是第二個。作為程序中的狀態指示器,LED 間歇性切換以顯示程序仍在執行。
圖1.DS87C520和DS1804連接原理圖
DS1077可以用22.118 MHz晶體代替。DS87C520采用晶體時鐘源操作的說明見達拉斯半導體的高速微控制器用戶手冊。需要注意的是,DS87C520能夠以高達33 MHz的時鐘工作;但是,軟件中使用的延遲取決于時鐘頻率。以較高的時鐘速率工作DS87C520可能會導致DS1804的時序故障,而以較低頻率工作應該不會產生不良影響。
使用CS、INC和UD信號控制DS1804
DS1804的操作很簡單,但需要了解一些細微差別才能可靠工作。首先,設備在 50ms 的過程中上電。嘗試在該時間段之前向部件發出信息信號將不會成功。該器件還需要500μs才能將游標的值調整為上電期間存儲在非易失寄存器中的值。
上電后,有兩種方法可以遞增或遞減器件。第一種方法僅更改電位計游標位置的值。第二個改變游標的值,并將當前值寫入非易失性寄存器。
在不寫入非易失寄存器的情況下更改游標位置可通過以下方法完成:
將向上/向下選擇輸入調整為高以遞增,或低以遞減。
通過置位CS信號(低電平有效)使能芯片。
脈沖INC低n-1倍以輸入/減少零件n倍。
再次斷言 INC 低點(INC 的下降沿上部分再次減少/減少)。
通過取消斷言 CS 來禁用芯片。
取消斷言 INC 以完成寫入。
要更改游標的值并將最終游標位置寫入非易失寄存器,請完成 以下順序:
將向上/向下選擇輸入調整為高以遞增,或低以遞減。
通過置位CS信號(低電平有效)使能芯片。
將增量信號脈沖低 n 次,以輸入/遞減零件 n 個位置。
通過取消斷言 CS 來禁用芯片。
等待10ms,將當前游標位置寫入NV寄存器。
另一個簡單而有用的例程將游標位置的當前值存儲到NV寄存器中。脈沖CS為低電平,而增量保持高電平,將游標的電流值存儲到NV寄存器中。取消 CS 后,控制器應等待 10ms 時間,以便使用當前游標位置寫入 NV 寄存器。
8051 DS1804 控制軟件
有數百萬種不同的例程可用于調整游標位置和寫入DS1804的NV寄存器;但是,最簡單的方法只需要四個例程。這些例程初始化DS1804,遞增芯片一個游標位置,遞減芯片一個游標位置,并將電流游標位置寫入NV寄存器。這些例程在附錄 A 中提供,稱為 Init1804、Increment1804、Decrement1804 和 WriteNVreg。Increment1804和Decrement1804例程可以放在一個環路中,對DS1804進行n次輸入/遞減,一旦達到所需的游標位置,就可以通過調用WriteNVreg例程將其寫入NV寄存器。如果需要在不編寫主程序中的循環的情況下對DS1804進行n次輸入/遞減,則可以編寫一個簡短的例程,從堆棧或累加器接收n并實現循環的功能。
當每次調整期間選擇 Up/Down 和 CS 的開銷對于手頭的應用程序來說太慢時,就會發生僅使用四個函數的垮臺。因此,包括兩個附加功能,用于演示芯片的輸入/遞減(每個方向五個間隔),只需選擇方向和芯片選擇輸入。這些例程稱為遞增 1804x5 和遞減 1804x5。
除了上述例程之外,軟件中還駐留了另外三個例程以生成時序。它們被稱為wait16us,wt和wait3sec。這些功能提供固定的1.6μs延遲、由R5、R6和R7中存儲的值選擇的可變延遲,以及主程序中使用的固定3秒延遲。
主節目序列
禁用所有中斷。
切換 P1.0 上的 LED 以表示執行開始。
初始化DS1804時,將DS1804的三個輸入全部設置為高電平并等待50ms。
等待 3 秒鐘,切換 LED。3秒延遲允許用萬用表讀取DS1804的上電值,LED指示何時發生變化。
以1804個間隔突發遞增DS5,共25個位置。在 3 個間隔的突發中的每一個之間添加了 5 秒的暫停,以允許萬用表監控更改。當游標發生變化時,LED 將切換。
等待3秒,切換LED,遞減DS1804 5個間隔。
將 NV 寄存器寫入當前值。
等待3秒,切換LED,遞增DS1804 1間隔。
等待3秒,切換LED,遞減DS1804 1間隔。
通過無限循環完成執行。
主程序輸出
假設您正在使用 V 執行程序抄送5V時,22 MHz晶體;萬用表是 在 W 和 Gnd 之間連接;和循環 V抄送從 Gnd 到 5V 啟動程序。的輸出 DS1804如下。
當電源接通時,該器件將啟動至NV寄存器中上次存儲的值。如果值 NV寄存器之前已寫入,然后它將顯示該值;否則將顯示偽隨機 值在發貨前由工廠存儲在NV登記冊中。游標輸出將顯示 萬用表上的電壓,對應于NV寄存器中存儲的值3秒。輸出 然后以 0.25V 步長遞增,并保持每個值 3 秒鐘,然后再繼續下一個值 位置。對于1.25V的總電壓變化,這將發生五次。然后游標電壓將為 降低0.25V,該值將保持3秒。該值將存儲在NV寄存器中,并且 將是部件啟動到下次重新通電時的值。最后,游標電壓將為 遞增0.05V,然后遞減0.05V,兩個值均保持3秒。發光二極管 附加到 P1.0 將在每次更改發生之前直接每 3 秒切換一次。
如果芯片上電時游標值等于或大于3.76V,程序將 嘗試將芯片遞增到5V以上。這不會損壞器件,但輸出將保持在5V,直到 發出遞減命令。因此,在這種情況下,端電壓將為4.75V。
審核編輯:郭婷
-
微控制器
+關注
關注
48文章
7489瀏覽量
151047 -
電源
+關注
關注
184文章
17586瀏覽量
249492 -
寄存器
+關注
關注
31文章
5317瀏覽量
120006
發布評論請先 登錄
相關推薦
評論