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