微控制器的工作原理


由: 馬歇爾大腦

微控制器是電子產品中的專用計算機。 埃內斯托·阿吉托斯 / 蓋蒂圖片社
如今,微控制器隱藏在數量驚人的產品中。如果您的微波爐有一個 發光二極管 或 液晶顯示器 屏幕和鍵盤,它包含一個微控制器。所有現代汽車都至少包含一個微控制器,并且可以有多達六個或七個:發動機由微控制器控制,就像 防抱死制動器這 巡航控制 等等。任何具有遙控器的設備幾乎肯定都包含一個微控制器: 電視, 錄像機 而高端立體聲系統都屬于這一類。好 長官 和 數碼相機, 手機, 攝錄一體機, 答錄機, 激光打印機, 電話 (帶有來電顯示、20 號碼存儲器等)、尋呼機和功能齊全的冰箱、洗碗機、洗衣機和烘干機(帶有顯示器和鍵盤的那些)......你明白了。基本上,任何與用戶交互的產品或設備內部都埋有一個微控制器。
在本文中,我們將介紹微控制器,以便您了解它們是什么以及它們是如何工作的。然后,我們將更進一步,討論如何自己開始使用微控制器 - 我們將創建一個帶有微控制器的數字時鐘!我們還將建造一個數字溫度計。在這個過程中,您將學到很多關于微控制器如何在商業產品中使用的信息。
什么是微控制器?
微控制器是一臺計算機。所有計算機 - 無論我們談論的是個人 臺式電腦 或大 大型計算機 或微控制器 - 有幾個共同點:
所有計算機都有一個 中央處理器 (中央處理單元)執行程序。如果您現在坐在臺式計算機上閱讀本文,則該計算機中的 CPU 正在執行實現顯示此頁面的 Web 瀏覽器的程序。
CPU 從某處加載程序。在臺式計算機上,瀏覽器程序從 硬盤.
計算機有一些 公羊 (隨機存取存儲器),它可以在其中存儲“變量”。
計算機有一些輸入和輸出設備,因此它可以與人交談。在臺式機上, 鍵盤 和 鼠 是輸入設備,并且 監控 和 打印機 是輸出設備。硬盤是一種 I/O 設備 - 它處理輸入和輸出。
您使用的臺式計算機是“通用計算機”,可以運行數千個程序中的任何一個。微控制器是“專用計算機”。微控制器有一件事做得很好。還有許多其他共同特征定義了微控制器。如果計算機符合這些特征中的大多數,那么您可以將其稱為“微控制器”:
微控制器是”嵌入式“在其他設備(通常是消費產品)內部,以便他們可以控制產品的功能或動作。因此,微控制器的另一個名稱是“嵌入式控制器”。
微控制器是 耿耿 到一個任務并運行一個特定程序。該程序存儲在 .ROM (只讀內存)并且通常不會更改。
微控制器通常是 低功耗設備.臺式計算機幾乎總是插入墻上插座,可能會消耗 50 瓦的電力。電池供電的微控制器可能消耗 50 毫瓦。
微控制器具有 專用輸入設備 并且經常(但并非總是)有一個小 用于輸出的 LED 或 LCD 顯示屏.微控制器還從其控制的器件獲取輸入,并通過向器件中的不同組件發送信號來控制器件。 例如,電視內部的微控制器從 遙控 并在電視屏幕上顯示輸出。控制器控制通道選擇器, 議長 系統和對顯像管電子設備的某些調整,例如色調和亮度。這 發動機控制器 In 汽車從氧氣和爆震傳感器等傳感器獲取輸入,并控制燃油混合和火花塞正時等。一個 微波爐 控制器從鍵盤獲取輸入,在LCD顯示屏上顯示輸出并控制 中繼 這將打開和關閉微波發生器。
微控制器通常是 體積小,成本低.選擇組件是為了最小化尺寸并盡可能便宜。
微控制器通常是(但并非總是) 加固型 在某種程度上。 例如,控制汽車發動機的微控制器必須在普通計算機通常無法處理的極端溫度下工作。阿拉斯加的汽車微控制器必須在-30華氏度(-34攝氏度)的天氣下正常工作,而內華達州的同一微控制器可能在120華氏度(49攝氏度)下工作。當您添加由 發動機,發動機艙內的溫度可能高達 150 或 180 華氏度(65-80 攝氏度)。 另一方面,嵌入在VCR中的微控制器根本沒有加固。
實際的 處理器 用于實現微控制器的用途可能差異很大。例如,顯示的手機 數字手機內部 包含一個 Z-80 處理器.Z-80 是 8 位 微處理器 開發于 1970 年代,最初用于當時的家用電腦。Garmin GPS 顯示在 全球定位系統接收器如何 我被告知,工作包含英特爾 80386 的低功耗版本。80386 最初用于臺式計算機。
在許多產品中,例如微波爐,對CPU的要求相當低,價格是一個重要的考慮因素。在這些情況下,制造商轉向 專用微控制器芯片 - 最初設計為低成本、小型、低功耗的嵌入式CPU的芯片。摩托羅拉 6811 和 英特爾 8051 都是這種芯片的好例子。還有一系列流行的控制器稱為“PIC微控制器”,由一家名為“PIC微控制器”的公司創建。 微片.按照今天的標準,這些 CPU 非常簡約;但是,當大量購買時,它們非常便宜,并且通常只需一個芯片即可滿足設備設計人員的需求。
一個典型的低端微控制器芯片可能有 1,000 個 字節 芯片上的 ROM 和 20 字節 RAM,以及 8 個 I/0 引腳。在大量情況下,這些芯片的成本有時可能只有幾美分。你當然永遠不會在這樣的芯片上運行Microsoft Word——Microsoft Word可能需要30兆字節的RAM和一個每秒可以運行數百萬條指令的處理器。但是,您也不需要Microsoft Word來控制微波爐。使用微控制器,您需要完成一項特定的任務,而低成本、低功耗的性能才是最重要的。
使用微控制器

BASIC Stamp 是一種 PIC 微控制器,經過定制,可以理解 BASIC 編程語言。在 電子門的工作原理,您了解了 7400 系列 TTL 設備,以及在哪里購買它們以及如何組裝它們。您發現,實現簡單的設備通常需要許多門。例如,在 數字時鐘文章,我們設計的時鐘可能包含 15 或 20 個芯片。微控制器的一大優勢是軟件 - 您在控制器上編寫和執行的小程序 - 可以取代許多門。因此,在本文中,我們將使用微控制器來創建數字時鐘。這將是一個相當昂貴的數字時鐘(近200美元!),但在這個過程中,你將積累未來幾年使用微控制器所需的一切。即使您實際上沒有創建此數字時鐘,也可以通過閱讀它來學到很多東西。
我們在這里將使用的微控制器是一種專用設備,旨在使生活盡可能簡單。該設備被稱為“BASIC郵票”,由一家名為 視差.BASIC Stamp 是一種 PIC 微控制器,經過定制,可以理解 BASIC 編程語言。使用BASIC語言使得為控制器創建軟件變得非常容易。微控制器芯片可以在接受9伏的小型載板上購買 電池,您可以通過將其插入臺式計算機上的其中一個端口來對其進行編程。任何制造商都不太可能在實際生產設備中使用BASIC印章 - 印章昂貴且緩慢(相對而言)。但是,將郵票用于原型設計或一次性演示產品是很常見的,因為它們非常易于設置和使用。
順便說一下,它們被稱為“郵票”,因為它們和郵票一樣大。
我們將在本文中使用的特定 BASIC 郵票稱為“BASIC 郵票修訂版 D”。
BASIC Stamp 修訂版 D 是安裝在載板上的 BS-1,帶有 9 伏電池座、電源調節器、編程電纜連接、I/O 線的針座引腳和小型原型制作區域。您可以購買BS-1芯片并將其他組件連接到面包板上。修訂版 D 只是讓生活更輕松。
從上表中可以看出,您不會用 BASIC 印章做任何奇特的事情。75 行限制(256 字節 電丙胺 可以容納大約 75 行長的 BASIC 程序)對于 BS-1 來說是相當有限的。但是,您可以創建一些非常整潔的東西,而且Stamp非常小且電池供電的事實意味著它幾乎可以去任何地方。
對基本印章進行編程
您可以使用 基本編程語言.如果您已經了解 BASIC,那么您會發現郵票中使用的 BASIC 很簡單,但有點精簡。如果你不懂BASIC,但你懂另一種語言,比如 C、帕斯卡或 爪哇島,那么拿起 BASIC 將是微不足道的。如果你以前從未編程過,你可能想去 學習編程 首先在臺式計算機上。以下是Stamp BASIC中可用說明的快速概述。(有關完整文檔,請轉到視差:基本圖章文檔。
標準基本說明:
為。。。下一個 - 正常循環語句
gosub - 轉到子例程
轉到 - 轉到程序中的標簽(例如 - “標簽:”)
如果。。。then - 正常 if /then 決定
let - 賦值(可選)
返回 - 從子例程返回
結束 - 結束程序并休眠
與 I/O 引腳相關的說明:
按鈕 - 讀取輸入引腳上的按鈕,具有去抖動和自動重復功能
高電平 - 將 I/O 引腳設置為高電平
輸入 - 將 I/O 引腳的方向設置為輸入
低電平 - 將 I/O 引腳設置為低電平
輸出 - 設置 I/O 引腳到輸出的方向
電位器 - 讀取 I/O 引腳上的電位計
脈沖蛋白 - 讀取輸入引腳上輸入的脈沖的持續時間
脈沖輸出 - 在輸出引腳上發送特定持續時間的脈沖
PWM - 在輸出引腳上執行脈沖寬度調制
反轉 - 反轉 I/O 引腳的方向
Serin - 讀取輸入引腳上的串行數據
Serout - 在輸出引腳上寫入串行數據
聲音 - 將特定頻率的聲音發送到輸出引腳
切換 - 切換輸出引腳上的位
特定于基本印章的說明:
分支 - 讀取分支表
調試 - 將調試字符串發送到臺式計算機上的控制臺
EEPROM - 將程序下載到 EEPROM
向下查看 - 返回列表中值的索引
查找 - 使用索引進行數組查找
小睡 - 短時間睡眠
暫停 - 指定時間的延遲
隨機 - 選擇一個隨機數
讀取 - 從 EEPROM 讀取值
睡眠 - 在指定時間內關閉電源
寫入 - 將數據寫入 EEPROM
操作:
+ - 加法
--減法
* - 乘法(低字)
** - 乘法(高詞)
/-劃分
-勇氣
max - 返回最多 2 個值
min - 返回最少 2 個值
&- 和
|-或
^-異或
&/ - NAND
|/ - 無
^/ - XNOR
If 語句邏輯:
=
<>
<
<=
>
>=
和
或
變量
BS-1 中的所有變量都有預定義的名稱(您可以用自己的名稱替換)。請記住,只有 14 字節的 RAM 可用,因此變量非常寶貴。以下是標準名稱:
W0, W1, W2...W6 - 16 位字變量
B0, B1, B2...b13 - 8 位字節變量
位0, 位 1, 位 2...bit15 - 1 位位變量
因為只有 14 個字節的內存,所以 w0 和 b0/b1 在 RAM 中的位置相同,w1 和 b2/b3 是相同的,依此類推。此外,bit0 到 bit15 駐留在 w0 中(因此 b0/b1 也是如此)。
I/O 引腳
您可以看到BS-1中的14條指令與I / O引腳有關。之所以強調這一點,是因為I/O引腳是BASIC印章與世界對話的唯一途徑。BS-1 上有 8 個引腳(編號為 0 到 7),BS-2 上有 16 個引腳(編號為 0 到 15)。
引腳是 雙向,這意味著您可以讀取它們的輸入值或向其發送輸出值。將值發送到引腳的最簡單方法是使用 高 或 低 功能。語句高電平 3 在引腳 3 上發送 1 (+5 伏)。低電平發送 0(接地)。引腳 3 在這里是任意選擇的 - 您可以在從 0 到 7 的任何引腳上發送位。
有許多有趣的I/O引腳指令。例如,POT讀取電位計(可變電阻器)上的設置,如果您用 電容器 正如 POT 指令所期望的那樣。PWM指令發出脈寬調制信號。像這樣的說明可以使將控件和電機連接到印章變得更加容易。請參閱的 文檔 了解詳細信息的語言。此外,像斯科特·愛德華這樣的書 編程和自定義 BASIC 印章計算機 由于它包含的示例項目,因此非常有用。
玩基本圖章

典型 BASIC 程序編輯器的屏幕截圖如果您想玩 BASIC 印章,很容易上手。您需要的是一臺臺式計算機和一臺 基本印章入門套件.入門套件包括 Stamp、編程電纜和您在臺式計算機上運行的應用程序,用于將 BASIC 程序下載到 Stamp 中。
您可以從以下位置獲得入門套件 視差 (制造商)或來自供應商,如 賈梅科 (誰應該熟悉 電子門 和 數字時鐘 文章)。您可以從視差訂購 BASIC Stamp D 入門套件(部件號 27202),或者從 Jameco 訂購零件編號140089。您將收到印章(如下圖所示)、編程電纜、軟件和說明。該套件的價格為兩家供應商的 79 美元。偶爾,Parallax會推出一個名為“We've Bagged the Basics”的特別節目,其中還包括Scott Edward的 編程和自定義 BASIC 印章計算機].
連接郵票很容易。您將其連接到 并行端口 的電腦。然后,您運行DOS應用程序來編輯您的BASIC程序并將其下載到圖章。
要在此編輯器中運行程序,請單擊 ALT-R。編輯器應用程序檢查 BASIC 程序,然后將其通過電線發送到圖章上的 EEPROM。然后,圖章執行程序。在這種情況下,程序在I/O引腳3上產生方波。如果將邏輯探頭或 LED 連接到引腳 3(請參閱 電子門文章 有關詳細信息),您將看到 LED 閃爍每秒打開和關閉兩次(由于暫停命令,它每 250 毫秒更改一次狀態)。該程序將使用9伏電池運行數周。您可以通過縮短 LED 亮起的時間(可能亮起 50 毫秒,熄滅 450 毫秒)以及使用 NAP 指令而不是暫停來節省電量。
創建一個非常昂貴的數字時鐘

花費 79 美元來刷新一個 發光二極管 對你來說可能看起來很奢 侈。您可能想做的是用您的 BASIC 印章創建一些有用的東西。通過多花大約 100 美元,您可以創建一個非常漂亮的數字時鐘!這似乎 非常 奢 侈,直到您意識到這些零件可以在您以后可能想要構建的各種其他項目中重復使用。
假設我們想使用 BASIC 標記上的 I/O 引腳來顯示數值。在 數字時鐘文章,我們看到了如何使用 7447 芯片連接到 7 段 LED 顯示屏。7447 與 BASIC 印章配合使用同樣出色。您可以將四個 I/O 引腳直接連接到 7447,并輕松顯示 0 到 9 之間的數字。由于 BS-1 Stamp 有 8 個 I/O 引腳,因此像這樣直接驅動兩架 7447 很容易。
對于時鐘,我們至少需要四位數字。要用八個 I/O 引腳驅動四個 7447,我們必須稍微更有創意。下圖顯示了一種方法:
在此圖中,圖章中的 8 條 I/O 線從左側進入。這種方法使用四條線路連接到所有四條 7447。然后,Stamp 中的其他四條線按順序激活 7447(芯片上的“E”表示“啟用”——在 7447 上,這將是引腳 5 上的消隱輸入)。為了使這種安排起作用,Stamp中的BASIC程序將輸出四條數據線上的第一個數字,并通過將其E引腳與第一條控制線切換來激活第一個7447。然后它會發送第二個數字的值并激活第二個 7447,像這樣重復對所有四個 7447 進行排序。通過稍微不同的接線方式,您實際上可以只用一個 7447 來做到這一點。通過使用 74154 解復用器芯片和一些驅動程序,您可以使用此方法驅動多達 16 位數字。
事實上,這是控制LED顯示屏的標準方法。例如,如果您有一個舊的 LED 計算器,請在觀看顯示屏時將其打開并搖晃。您實際上將能夠看到一次只有一個數字被照亮。該方法稱為 多路復用 顯示。
雖然這種方法適用于時鐘和計算器,但它有兩個重要問題:
LED 消耗大量功率。
7 段 LED 只能顯示數值。
另一種方法是使用 液晶屏.事實證明,LCD廣泛可用,可以很容易地掛在郵票上。例如,下面顯示的兩行乘 16 個字符的字母數字顯示可從 賈梅科 (部件號 150990)和 視差 (部件號 27910)。此處顯示了安裝在試驗板上的典型顯示器,以便于接口:

這種LCD有幾個優點:
顯示器可由單個 I/O 引腳驅動。顯示屏包含允許圖章與其通信的邏輯 串行,因此只需要一個 I/O 引腳。此外,Stamp BASIC中的SEROUT命令可以輕松處理串行通信,因此與顯示器的通信很簡單。
LCD可以顯示字母數字文本:字母,數字甚至自定義字符。
LCD消耗的功率非常小 - 只有3毫安。
唯一的問題是其中一個顯示器售價59美元。顯然,您不會將其中一個嵌入到 烤面包機烤箱.但是,如果您正在設計烤面包機烤箱,您可能會使用這些顯示器之一進行原型設計,然后創建自定義芯片和軟件以驅動最終產品中更便宜的LCD。
要驅動這樣的顯示器,您只需為其提供 +5 伏電壓和接地(Stamp 均由 9 伏電池供電),然后將 Stamp 中的一個 I/O 引腳連接到顯示器的輸入線。我發現將 Stamp 的 I/O 引腳連接到 LCD 等設備的最簡單方法是使用繞線工具(賈梅科 部件號 34577)和 30 號繞線(Jameco 部件號 22541 是典型值)。這樣,不涉及焊接,連接緊湊可靠。
以下 BASIC 程序將使 BASIC 標記的行為類似于時鐘,并在 LCD 上輸出時間(假設 LCD 連接到標記上的 I/O 引腳 0):
暫停 1000'等待 LCD 顯示屏啟動
Serout 0, N2400, (254, 1) '清除顯示屏
Serout 0, n2400, (“time:”) 'Paint “time:” 在顯示屏上
'加載程序前預設
b0 = 0 '秒
b1 = 27 分鐘
b2 = 6 '小時
再:
b0 = b0 + 1'增量秒
如果 B0 < 60,則分鐘
b0 = 0'如果秒=60
b1 = b1 + 1 ' 然后遞增分鐘數
紀要:
如果 B1 < 60 則小時數
b1 = 0'如果分鐘=60
b2 = b2 + 1 ' 然后遞增小時數
小時:
如果 B2 < 13,則顯示
b2 = 1'如果小時數=13 重置為 1
顯示:
Serout 0, N2400, (254, 135) '顯示位置光標,
'然后顯示時間
Serout 0, N2400, (#b2, “:”, #b1, “:”, #b0, “ ”)
暫停 950 '暫停 950 毫秒
再次轉到“重復”
在此程序中,SEROUT 命令將數據發送到 LCD。序列 (254, 1) 清除 LCD(254 是轉義字符,1 是清除屏幕的命令)。序列 (254, 135) 定位光標。另外兩個 SEROUT 命令只是將文本字符串發送到顯示器。
這種方法將創建一個相當準確的時鐘。通過調整 PAUSE 語句,您可以將準確性提高到每天幾秒鐘內。顯然,在實際時鐘中,您希望連接一兩個按鈕以使其更容易設置-在此程序中,您在將程序下載到Stamp之前預設了時間。

懷表B模塊
雖然這種方法簡單且有效,但它并不是非常準確。如果您想要更好的精度,一個好方法是連接 實時時鐘芯片 直到您的印章。然后,每隔一秒左右,您就可以從芯片中讀取時間并顯示它。實時時鐘芯片使用 石英晶體 以提供出色的準確性。時鐘芯片通常還包含日期信息和句柄 閏年 自動更正。
將實時時鐘連接到圖章的一種簡單方法是使用稱為 懷表 B.
懷表B可從兩者購買 賈梅科 (部件號 145630)和 視差 (部件號 27962)。該器件大約四分之一那么大,包含時鐘芯片、晶體和串行接口,因此只需要一個 I/O 引腳即可與之通信。這個組件的成本約為30美元 - 同樣,不是你想嵌入烤面包機烤箱的東西,但在構建原型時很容易玩。
構建數字溫度計

現在您對印章和LCD有了一點了解,我們可以添加另一個組件并創建一個數字溫度計。為了創建溫度計,我們將使用一種稱為DS1620的芯片。該芯片包含:
一個 溫度傳感裝置
一 模數 (A/D) 轉換器 用于溫度傳感裝置
一個 移位寄存器 從 A/D 轉換器讀取數據
一點兒 電丙胺 (電可擦除可編程只讀存儲器)以記住設置
DS1620有兩種模式:一種模式用作獨立的恒溫器芯片,另一種模式將其連接到計算機并用作 溫度計.EEPROM記住恒溫器的電流模式和設定溫度。
將DS1620連接到印章非常容易。DS1620采用8引腳芯片。從印章向DS1620引腳8提供+5伏電壓。DS1620引腳4的電源接地。然后使用印章中的三個I/O引腳驅動DS1620上的三個引腳:
DS1620上的引腳1是數據引腳。在此引腳上讀取和寫入數據位。
DS1620上的引腳2是時鐘引腳。使用此引腳對移位寄存器中的數據進行時鐘輸入和輸出。
DS1620上的引腳3為復位/選擇引腳。將引腳 3 設置為高以選擇芯片并與之通信。
對于此示例代碼,假定:
數據引腳轉到標記上的 I/O 引腳 2。
時鐘引腳轉到印章上的 I/O 引腳 1。
復位/選擇引腳轉到標記上的 I/O 引腳 0。
完成的接線如下所示:
您可以從以下任一位置獲得DS1620 賈梅科 (部件號 146456) 或 視差 (部件號 27917)在“應用套件”中,其中包括芯片、電容器、一些良好的文檔和示例代碼。或者您可以從以下位置自行購買芯片 賈梅科 (部件號 114382)。我建議在第一次嘗試使用DS1620時購買應用套件,因為文檔非常有用。
您可以將DS1620組裝在Stamp載板的原型區域或單獨的試驗板上。組裝完成后,將LCD顯示器掛接到印章的I / O引腳3,然后加載并運行以下程序:
符號 RST = 0 ' 1620 上的選擇/重置線
符號 CLK = 1 ' 時鐘線,用于 1620 上的移位寄存器
符號 DQ = 2 ' 數據線 1620
符號 DQ_PIN = DQ 的引腳 2 ' 引腳表示
符號 LCD = 3' LCD 數據線
開始:
低 RST ' 取消選擇 1620,除非與之交談
1620 上的高 CLK ' 時鐘引腳應默認為高電平
暫停1000' 等待溫度計和液晶屏啟動
設置:
高 RST ' 選擇 1620
b0 = $0C ' $0c 是 1620 命令字節
' 說“寫入配置”
gosub shift_out ' 發送到 1620
b0 = %10 ' %10 是 1620 命令字節
' 設置溫度計模式
gosub shift_out ' 發送到 1620
低 RST ' 取消選擇 1620
暫停 50' 延遲 50ms 對于 EEPROM
start_convert:
b0 = $EE ' $EE 是 1620 命令字節
' 開始轉換
高 RST ' 選擇 1620
gosub shift_out ' 發送到 1620
低 RST ' 取消選擇 1620
' 這是主循環
' - 每秒讀取并顯示溫度
main_loop:
高 RST ' 選擇 1620
b0 = $AA ' $AA 是 1620 命令字節
' 用于讀取溫度
gosub shift_out ' 發送到 1620
gosub shift_in ' 讀取溫度
'從 1620 年
低RST'取消選擇DS1620。
gosub display'以攝氏度為單位顯示溫度
暫停 1000 ' 等待一秒鐘
轉到main_loop
' shift_out子例程發送任何內容
' 1620 的 B0 字節
shift_out:
輸出 DQ ' 將 DQ 引腳設置為
' 輸出模式
對于 b2 = 1 到 8
低 CLK ' 準備為位計時
'進入1620年
DQ_PIN = bit0 ' 發送數據位
高CLK'鎖存數據位進入1620
b0 = b0/2 ' 向右移動所有位
' 朝向位 0
下一個
返回
' shift_in子例程得到一個 9 位
' 溫度從 1620
shift_in:
輸入 DQ ' 將 DQ 引腳設置為
' 輸入模式
w0 = 0 ' 清除 w0
對于 B5 = 1 到 9
w0 = w0/2 ' 向右移位輸入。
低 CLK ' 詢問 1620 以獲取下一個位
bit8 = DQ_PIN ' 讀取位
高電平 CLK ' 切換時鐘引腳
下一個
返回
' 以攝氏度為單位顯示溫度
顯示:
如果 bit8 = 0,則 pos ' 如果 bit8=1
' 則溫度為負數
b0 = b0 &/ b0 ' 通過 NAND 反轉 b0
' 與自身
b0 = b0 + 1
位置:
液晶屏,N2400,(254,1)' 清除液晶屏
鋸齒 LCD, n2400, (“溫度 = ”) ' 顯示 “溫度=”
' 在顯示屏上
bit9 = bit0 ' 保存半度
b0 = b0 / 2 ' 轉換為度數
如果 bit8 = 1,則 neg ' 查看溫度是否為負數
顯示器液晶顯示器,N2400,(#b0)顯示正溫度
轉到一半
負:
鋸齒液晶屏,n2400,(“-”,#b0)' 顯示負溫度
半:
如果 bit9 = 0,則偶數
鋸齒液晶屏,n2400,(“.5 C”)' 顯示半度
轉到完成
甚至:
鋸齒液晶屏,n2400,(“.0 C”)' 顯示半度
做:
返回
如果運行此程序,您會發現它以半度的精度顯示攝氏溫度。
DS1620測量溫度,單位為攝氏半度。它以 9 位 2s 補碼數返回溫度,范圍為 -110 至 250 F(-55 至 125 C)。將收到的數字除以 2 得到實際溫度。 2s補碼二進制數 是一種方便的表示方式 負值.以下列表顯示了 4 位 2s 補碼編號的值:
0111 : 7
0110 : 6
0101 : 5
0100 : 4
0011 : 3
0010 : 2
0001 : 1
0000 : 0
1111 : -1
1110 : -2
1101 : -3
1100 : -4
1011 : -5
1010 : -6
1001 : -7
1000 : -8
您可以看到,2s 補碼數中的 4 位表示值 -8 到 7,而不是 4 位表示 0 到 15 之間的值。您可以查看最左側的位以確定該數字是負數還是正數。如果數字為負數,則可以反轉位并加 1 以獲得數字的正表示。
以下是此處顯示的數字溫度計程序的情況:
它使用 象征 關鍵字來設置幾個常量,使程序稍微更易于閱讀(并且還使您可以輕松地將芯片移動到印章上的不同I / O引腳)。
它將DS1620上的CLK和RST引腳設置為預期值。
它向DS1620上的EEPROM寫入一個命令字節,告訴芯片在“溫度計模式”下工作。 由于該模式存儲在EEPROM中,因此您只需執行一次,因此從技術上講,您可以在運行程序一次后將這部分代碼從程序中取出(以節省程序空間)。
程序發送命令 $EE (“$”表示“十六進制數” - $EE十進制為238)告訴溫度計啟動其轉換過程。
然后程序進入 圈.每秒向DS1620發送一條命令,告訴DS1620返回當前溫度,然后將DS1620返回的9位值讀取到w0變量中。通過切換DS1620上的CLK線,Stamp一次發送和接收1位數據。請記住,w0(16位)變量覆蓋b0/b1(8位)變量,b0/b1(8位)變量覆蓋bit0/bit1/.../bit15(1位)變量,因此,當您將DS1620中的一個位插入第8位并將w0除以2時,您所做的是將每個位向右移動,以將DS1620的9位溫度存儲到w0中。將溫度保存為 w0 后,顯示子例程將確定該數字是正數還是負數,并將其作為攝氏度溫度在 LCD 上適當地顯示。從攝氏度到華氏度的轉換是:
dF = dC * 9/5 + 32
在這一點上,我們已經成功地創造了一種極其昂貴的溫度計。你會用它做什么?這里有一個想法。假設您在一家制藥公司工作,并且您正在全國各地運送昂貴的藥物,這些藥物必須始終保持在一定溫度下,否則藥物會變質。您可以使用圖章做什么是創建一個 數據記錄溫度計.雙 賈梅科 (部件號 143811) 和 視差 (部件號 27960) 銷售一種名為“RAM 包模塊”的設備。 它包含一個帶串行接口的低功耗 8 KB(或可選的 32 KB)RAM 芯片。您可以將此組件(或類似內容)添加到 Stamp 中,并編寫每分鐘將溫度讀數保存到 RAM 的代碼。然后,您可以將郵票放入毒品運輸中,并在旅行的另一端取回郵票。RAM模塊將包含整個行程的溫度歷史記錄,您將知道藥物是否解凍。
有各種像這樣的整潔、有用的設備,現在你知道微控制器是如何工作的,你可以用 Stamp 構建!
責任編輯:David
【免責聲明】
1、本文內容、數據、圖表等來源于網絡引用或其他公開資料,版權歸屬原作者、原發表出處。若版權所有方對本文的引用持有異議,請聯系拍明芯城(marketing@iczoom.com),本方將及時處理。
2、本文的引用僅供讀者交流學習使用,不涉及商業目的。
3、本文內容僅代表作者觀點,拍明芯城不對內容的準確性、可靠性或完整性提供明示或暗示的保證。讀者閱讀本文后做出的決定或行為,是基于自主意愿和獨立判斷做出的,請讀者明確相關結果。
4、如需轉載本方擁有版權的文章,請聯系拍明芯城(marketing@iczoom.com)注明“轉載原因”。未經允許私自轉載拍明芯城將保留追究其法律責任的權利。
拍明芯城擁有對此聲明的最終解釋權。