逢 甲 自動控制工程學系專題製作 ... - fcu.edu.t · there is so much technology can be...

62
自動控制工程學系專題製作 DS1821 溫度感測器之研究 Study of DS1821 Temperature Sensor 指導教授:蘇文彬 生:郭沁睿 蘇聖哲 中華民國九十四年六月三十日

Upload: others

Post on 21-Jul-2020

8 views

Category:

Documents


0 download

TRANSCRIPT

  • 逢 甲 大 學

    自動控制工程學系專題製作

    專 題 論 文

    DS1821 溫度感測器之研究

    Study of DS1821 Temperature Sensor

    指導教授:蘇文彬

    學 生:郭沁睿

    蘇聖哲

    中 華 民 國 九 十 四 年 六 月 三 十 日

  • 逢 甲 大 學

    自動控制工程學系專題製作

    專 題 論 文

    DS1821 溫度感測器之研究 Study of DS1821 Temperature Sensor

    學生:郭沁睿 蘇聖哲

    經專題口試合格特此證明

    評 審 委 員 指 導 教 授

    系 主 任

    考試日期:中華民國九十三年十二月三十日

  • 感謝

    本身是資電系的我們,自從選了自動控制系的學程後就和自動控制系的同學

    一樣,榮耀的成為自動控制系的一份子,和所有的同學一起努力求學,在自動控

    制系三年以來一直感謝所有的師長在課業上與生活上所給予的指導,在本身是外

    系的我們而言,不僅僅沒有排斥我們的感覺,而且對我們不懂的地方熱心的教導

    我們,甚至自控系的同學也常常很熱心的教我們,在這裡我們也必須感謝所有的

    自控同學使我們並不感到孤單無助,在這裡我們必須特別感謝恩師蘇文彬老師,

    他使學生有充分的空間和資源可以專心的從事研究計畫,並在每個挑戰中提供最

    適切的指導與協助,學生才能完成這一篇論文,對於教授師恩,永銘於心。

    最感謝我的最佳戰友蘇聖哲同學和我以起製作這一篇論文,在搜尋文獻期

    間,我們必須特別感謝廖柏森同學和陳俊仁同學不辭辛苦,為我們找到幾篇重要

    的參考文獻,和諸多的釜正使致本論文可以更加完善與充實,在軟體的撰寫上,

    由於本身程式並不是我們最拿手的部分,在此感謝鄭恆一同學以及黃建富同學能

    從旁給予教導和協助,使我們能完成程式的初步撰寫。

    感謝實驗室裡每天朝夕相處的夥伴們,包括多位學長、同學、學弟,感謝有

    你們在這麼多的日子以來陪伴著我一起奮鬥、一起成長,讓我在歡笑與淚水中度

    過了一段既充實又精采的難忘時光。

    本論文,獻給我最深愛的父母和家人,感謝你們給了我最大的精神支持,特

    別是現在仍在住院的母親大人,時時的叮嚀我不可以放棄希望,面對自己最大的

    壓力,使我在無後顧之憂的環境裡認真研究、全力衝刺。未來我也將帶著所有人

    的關心繼續在每個環境裡接受挑戰、勇往直前並且充分的表現。

    i

  • 中文摘要

    有許多的技術可以被用來當作溫度感測之用,如熱敏電阻、電熱偶、DS1821

    等方法,而在本研究之中,將提出運用 DS1821 的方法來溫度感測系統,不同於

    一般大多是以電熱偶的方式來製作。只要把感測器放入水中或者是置於空氣中溫

    度感測器 DS1821,就會傳回一組數位訊號,即是所需要的溫度,溫度可以經由

    電腦的判斷看是否高於設定值即可啟動喇叭,在液晶的螢幕上也會顯示所測量的

    溫度和是否啟動繼電器。

    經過了一場 SARS 風波之後大家也都很清楚溫度對人們的重要性,不僅僅可

    以隨時知道自己的身體狀況,在加裝了加熱系統或者是冷卻系統之後便可以自動

    的上升或是降低溫度,即可作為溫度控制器也就是一般的熱水器而且加裝了液晶

    面板和恆溫裝置,或者可以做成全方位的空調,不用在需要對忽冷忽熱感到頭大

    了。

    ii

  • Abstract

    There is so much technology can be used to be temperature sensor, for example

    thermistor, termocouple, DS1821 etc .In this case, we use the way of DS1821 to make

    temperature sensor system. Different from most, which made by termocouple. You

    just need to put the sensor in to the water or just leave it in the air. The sensor DS1821

    will send back one digital information that's the temperature what we need. The

    computer will make a decision by the temperature, which can see if he needs to start

    the beeper. It will also show the temperature we got on the LCD and see if we start the

    relay or not.

    Everybody knows the temperature's important to human after SARS. Realizing

    temperature exactly can know the body condition. After you add the heater system or

    cooler system we can auto raise or down the temperature by machine which you use

    everyday. And it not as everyone you see. It has LCD and constant temperature

    system. After you add the cooler system, you can have a good air-conditioner. No

    need to be confuse to too cold or too hot.

    iii

  • 目錄

    感謝……………………………………………………………………………….i

    中文摘要…………………………………………………………………………ii

    英文摘要………………………………………………………………………...iii

    目錄…………………………………………………………………...…………iv

    圖目錄…………………………………………………………………………...vi

    表目錄…………………………………………………………………………..vii

    第一章 前言……………………………………………………………………1

    1.1 研究背景及動機………………………………………………………..1

    1.2 研究目的與重要性…………………………………………………….1

    1.3 文獻探討—國內外的溫度計研究情況……………………………….2

    1.4 研究方法……………………………………………………………….4

    1.5 預期結果……………………………………………………………….5

    第二章 理論探討………………………………………………………………6

    2.1 總電路圖………………………………….……...……………..……...6

    2.2 元件詳細規格和總表………………...………………………………7

    2.2.1 DS1821 :可控的數位自動調溫器(恆溫器)…….………….…7

    2.2.2 8951:單晶片處理器……………………………………………9

    2.2.3 7805…………………………………………………………….14

    第三章 設計和實驗準備……………………….……………………………18

    3.1 主程式流程圖…………………………………………………………18

    3.2 副程式流程圖…………………………………………………………19

    3.2.1 BZ 副程式流程圖………………………………………..………19

    3.2.2 LED副程式流程圖………………………………………………20

    iv

  • 3.3 部分程式說明………………………………………………………….20

    3.4 實驗設計……………………………………………………………….20

    3.4.1 89C51 的測試…………………………………………………….20

    第四章 模擬和實驗結果…………..…………………………………………22

    4.1 總電路實圖……………….…………………………………………..22

    4.2 溫度監控……………………………………………………………...23

    4.3 DS1821 之模擬……………………………………………………...25

    第五章 貢獻說明、探討……………………………………………………..29

    結論……………………………………………………………………………..30

    參考文獻………………………………………………………………………..31

    附錄……………………………………………………………………………..32

    附錄 1:程式碼……………………………………………………………32

    附錄 2:DS1821 原理……………………..………………………………54

    v

  • 圖目錄

    圖 1.1 傳統水銀體溫計測量相當耗時……………………………………………..2

    圖 1.2 一般實驗用玻璃溫度計……………………………………………………..2

    圖 1.3 只需一秒電子耳溫槍即可量出您的體溫…………………………………..3

    圖 1.4 紅外線溫度計………………………………………………………………..3

    圖 1.5 紅外線溫度槍………………………………………………………………..4

    圖 2.1 電路總圖……………………………………………………………………..6

    圖 2.2 DS1821…………………………………………….…………………………7

    圖 2.3 1-WIRE 的使用方法…………………………………………………………8

    圖 2.4 直流電源供應器電路圖……..…………………………………..………..15

    圖 2.5 電解電容與表示符號……………………………………………………..15

    圖 2.6 IC 7805 接線圖……………………………………………………………16

    圖 2.7 IC 7805元件圖…………………………………………………………….16

    圖 3.1 主流程圖……………………………………………………………………18

    圖 3.2 BZ 副程式流程圖…………..………………………………………………19

    圖 3.3 LED 副程式流程圖 ………………………………………………………20

    圖 4.1 電路完成圖…………………………………………………………………22

    圖 4.2 實際電路圖…………………………………………………………………22

    圖 4.3 LCD畫面……………………………………………………………………23

    圖 4.4 按鍵和繼電器……………………..…………..……………………………24

    圖 4.5 所調整的溫度為 28 度……………………………………………………24

    圖 4.6 Reset 時的詳細時序圖(1)………………………………………………….25

    圖 4.7 Reset 時的詳細時序圖(2)………………………………………………….26

    圖 4.8 Write 指令時序圖………………………………………………………….27

    圖 4.9 Read 指令時序圖…………………………………………………………..28

    vi

  • 表目錄

    表 2.1 溫度輸出資料的關係………………………………………………………..9

    表 2.2 8951接腳功能表……………………………………………………………12

    表 2.3 元件總圖……………………………………………………………………16

    vii

  • 第一章 前言

    1.1 研究背景及動機

    隨著科技的進步,溫度對人們而言不再只是單純的幾個數字了,它同時代

    表了你的身體狀況,是否發燒啦!或是今天要不要多帶一件衣服啦!或者是今天

    的溫度不適合出去玩等等,溫度對科學來說更是格外的重要,例如電容最高的耐

    熱溫度啦!高溫爐的溫度夠不夠啊!或者是電腦的最大耐熱溫度是多少啦!只

    要所測量的溫度高個一兩度,再精密的儀器可能都會報銷的,而溫度計在我們的

    日常生活中也已經是非常常見的物品,從小時候的水銀溫度計,做自然科學實驗

    的酒精溫度計到市面上都有賣的電子溫度計,還有因為 SARS 而大賣的紅外線溫

    度計等等。

    可見溫度是多麼的重要,而要怎麼正確又快速的量出溫度就變成了一個難

    題,而有些人又會覺得市面上所販售的水銀溫度計只能量體溫,而酒精溫度計只

    可以量室溫,而且類比式的溫度感應器容易有誤差,電子溫度計也需要一分多鐘

    才測的出數值,紅外線的溫度計卻是貴的不敢買下手,為了增加溫度計的多功能

    性和方便性,為此我們必須去思考如何才能降低價格,增加準確率,和容易使用

    的溫度計。

    1.2 研究目的與重要性

    本研究的主要目的是在研發一種很少人做的溫度感測器,且必須以較低的

    成本來完成,用以架設出一套高靈敏度但低成本的溫度感測系統,且在本系統中

    有一個最大的特色就是方便性和穩定性,只要電源一開即可立及操作此系統,另

    一優點就是如果在積體化之後可以變的非常小,如此一來可以增加使用的方便性

    1

  • 也不會造成使用者的不便。

    1.3 文獻探討—國內外的溫度計研究情況

    一般實驗室多以玻璃溫度計量取溶液的溫度。溫度計內多充填液體或水

    銀。目前一般實驗室所用的由攝氏零下十度到一百一十度的溫度計多為酒精溫度

    計。溫度計使用時不可在溫度計的規定溫度範圍外使用。當測量溫度超過規定使

    用溫度以上時,溫度計內部壓力會快速增高有爆裂的潛在危險性。正確使用時應

    將溫度計的流體到達的部分全部浸入所測的液體中;如此,測得的溫度才會準

    確。溫度計因其裝盛流體的部分很薄,甚易破裂,故不宜將其當成玻棒作攪拌的

    用途。溫度讀取的方法和一般讀取具刻度的量具相同。我們過去所使用的傳統水

    銀溫度計,使用要先將水銀指標甩到 35 度以下,才能進行測量,且要取得正確

    體溫,要花較長時間,相當不方便,且溫度計會依照測量角度的位置,而得到不

    同的溫度。

    圖 1.1 傳統水銀體溫計測量相當耗時 圖 1.2 一般實驗用玻璃溫度計

    耳溫槍的發明,除了使量體溫更為方便外,隨著一秒耳溫槍的發明,也使

    得體溫的測量更為快速。耳溫槍的設計原理,是利用紅外線去掃瞄耳膜所釋放出

    2

  • 的熱能,來得知你的體溫。而由於鼓膜(耳膜)位於頭骨內接近體溫控制中樞「下

    視丘」位置,且充分得到頸動脈血流供應,所以當人體的中心溫度有變動,便可

    即時地由鼓膜的溫度反應出來,再將之推算為口溫或肛溫,作為溫度的參考。基

    本上兩者所依據的原理,只是簡單的熱平衡和熱脹冷縮的原理,但兩種儀器都有

    可能因為操作者的熟練度而有誤差。

    圖 1.3 只需一秒電子耳溫槍即可量出您的體溫

    多數品牌耳溫槍需要更換耳套,免接觸式的紅外線溫度計,可以量測體溫

    或環境溫度,利用兩道紅外光束照射額頭聚焦後,約距離額頭二至三公分,就可

    快速量測體溫,因為不接觸耳朵,不會有疾病傳染的困擾,可避免交叉感染的危

    險,因此,現今公共場所的體溫測量,大多仍以額溫槍為主,既方便又安全。

    圖 1.4 紅外線溫度計

    3

  • 市面上亦有槍型的紅外線溫度計也是一般大賣場所長使用的,一般是使用

    紅外線的電熱偶,且可以以內建式軟體來修正誤差,以雙紅外線的方式定焦點在

    一到兩公分的地方唯一的缺點就是價錢比一般的溫度計貴上好幾倍,使的很多家

    庭主婦們買不下去。

    圖 1.5 紅外線溫度槍

    1.4 研究方法

    為了更進一步的了解溫度,我們在眾多的晶片之中找出了 DS1821 溫度感測

    計。DS1821 的好處在於它的輸出為數位訊號,而不是一般以類比電阻的方式輸

    出,所以不用另外加上解碼晶片。其所輸出的訊號,傳到 89C51 之中讀取此訊

    號。89C51 是全世界最流行的一般用途微控器,單晶片電腦又稱為微處理機,在

    不到一個手掌體積內就具備了中央處理單元、計時/計數、程式記憶體、輸入/輸

    出阜,它具有的特點是免組譯器軟體開發工具,內建程式碼下載功能,免燒錄,

    免用 ICE。再接上 LCD,即可在事先所燒錄進 89C51 的程式中讀取溫度傳送到

    LCD 的顯示器上。再來可以利用按鍵 K1~K4 設定所需要的溫度,先以 K1 進入

    設定畫面,再以 K2 設定溫度點上升,K3 設定溫度點下降,最後再以 K4 結束設

    4

  • 定。然後在 89C51 中作判斷,當溫度超過所設定溫度點時,89C51 會啟動繼電器,

    使得喇八發出閃爍聲,而在 LCD 上也顯示繼電器是否啟動。

    1.5 預期結果

    我們預期 DS1821 溫度感測器可以快速且準確的感測溫度,而且在 LCD 板

    上也可以清楚明白的表示出現在的溫度,由於液晶面板不夠大的關係,設定溫度

    的時候會跳到另一個畫面,所以液晶面板一共會有兩個畫面,一個是”8951 23’C

    繼電器 ON ” 而另一個畫面則是” Set Temperature 33’C ” 預計以四顆按鍵的方

    式來取代建盤,蜂鳴器則是在啟動時會有嗶—的聲音而當溫度超過了已設定的溫

    度時會有嗶嗶嗶的聲音,同時啟動了繼電器。

    5

  • 第 2 章 理論探討

    本章節將介紹總電路圖和元件功能。

    2.1 總電路圖

    圖 2.1 電路總圖

    6

  • 2.2 元件詳細規格和總表

    2.2.1 DS1821 :可控的數位自動調溫器(恆溫器)

    特色:

    一.不需要外部的零件

    二.測量溫度從-55 度 c 到+125 度 c 增加量為 1 度 c,華氏溫度相同

    的是從-67 度 F 到+257 度 F 增 加量為 1.8 度 F

    三.變換溫度到數位的字詞表示

    四.溫度調節裝置的設定是使用者可限定的和可操作的

    五.可利用 3-pin PR35,TO-220,和 8-pin SOIC 包裝

    六.應用(適用)包括溫度調節裝置的控制,工業的系統,消費者的產品,

    溫度計或任何熱的感光系統

    圖 2.2 DS1821

    pin 的介紹

    GND—數位訊號接地

    DQ—數據的進出

    VDD—電力供應伏特數+5V

    DS1821 可以以程式控制的數位自動調溫器,它提供一套熱的警報邏輯電路

    當溫度裝置超過使用者所設定的溫度 TH,.這一個輸出將會提醒動作單位是的溫

    7

  • 度下降,直到溫度下降到使用者所設定的溫度 TL,它也允許允許任何的延遲現

    象。使用者所設定的溫度將會儲存在一個不會揮發就是不會消失的記憶體中,提

    供給 DS1821 做判斷,因為 DS1821 的輸入或者是輸出全部都是經由 DQ 的接腳

    且 DS1821 裡並沒有 CLOCK 接腳,所以 DQ 接腳只能通過定量的資料,所以由

    8951 所輸入的程式必須遵行原廠公司的編制程序方法。

    DS1821 有兩個操作方法:1-WIRE 和自動恆溫器。在 1-WIRE 方法中 DS1821

    的 DQ 接腳跟 1-WIRE 電路都將會被連接到微處理機,微處理機會寫下資料到高

    低溫度啟動裝置,並記下 TH 和 TL,分別建立溫度界限使的自動恆溫器可以操

    作,一但溫度界限已經設定而且溫度計操作也已經被確定可以使用,使用者可能

    變換 DS1821 從溫度感測器到自動恆溫器。

    圖 2.3 1-WIRE 的使用方法

    溫度測量法:

    DS1821 測量溫度技術比一般的測量方法更具技巧性,抓取溫度是以 8-bit

    為單位,一對互補式讀腳,表 4.1 即為描述精確的溫度輸出資料的關係,資造連

    續的傳送到 1-WIRE 的界面上,DS1821 可以測量的溫度範圍介於-55 度 C 到+125

    度 C 為 1 度 C 的增加量,且式使用華氏的用法

    8

  • 表 2.1 溫度輸出資料的關係

    DS1821 的編制程序:

    DS1821 必須使用 1-WIRE 的方法,這個方法是最常被使用的,當它從工廠

    送出來時,有一部份已經被製作在內部了,而且如果使用者已經設定電力為高電

    位到自動恆溫器方法,1-WIRE 方法可能要當 VDD 接腳低電位而 DQ 接腳帶著

    高電位,而且必須要測量 DQ 接腳 16 次才可以完成。

    在使用 1-WIRE 的方法時,DS1821 有四個內部的紀錄點可能會被用來讀取

    DQ 接腳,這些紀錄點各是高溫度啟動裝置(TH) ,低溫度啟動裝置(TL) ,實際

    測量溫度的結果,測量溫度時的情況,這些接腳裡,TH、TL 和情況紀錄都是很

    容易改變的。

    後面章節將有 DS1821 的詳細探討。

    2.2.2 8951:單晶片處理器

    8951 是 INTEL 公司開發相當成功的晶片,在教育界中用來當作單晶片的入

    門首選,由於其內容的普及,目前有好幾家設計半導體的公司也有製造與 8951

    晶片相容的單晶片,有些公司所製造的單晶片其執行速度更快,可以高達

    40MHz。由於在教育界的大量使用,業界也有不少的使用未來的市場還是看好,

    無怪乎還有眾多的廠商紛紛推出相容的單晶片,及支援 8951 的程式發展工具。

    9

  • 微電腦是經由硬體合軟體所組成的,硬體是指有型的機器,軟體則是我們

    用來控制微電腦工作的指令和程式。為電腦的硬體結構包含五個主要的單元:輸

    出單元,記憶單元,運算單元,輸出單元和控制單元,其中運算單元和控制單元

    又合併成一個單元,稱為中央處理單元,就是我們所稱的 CPU。

    輸入單元: 輸入單元的工作是將外來的資訊直接存入記憶單元或送到 CPU

    處理,在個人電腦上常用的輸入設備有讀卡機、磁碟機、鍵盤、光筆、滑鼠和掃

    描器等。

    記憶單元: 記憶單元是用來儲存輸入單元送來的資訊或儲存已經被 CPU

    處理過的資料。記憶單元有主記憶體及輔助記憶體兩種。主記憶體由 IC 組成,

    是微電腦內部的基本記憶部份。主記憶體依存取方式的不同,又可分為唯讀記憶

    體及隨機存取記憶體。ROM 所儲存的資料可以讀出但不能寫入,並且不會隨電

    源的消失而流失,所以被用來儲存較重要或較常用的程式;而 RAM 則能快速地完

    成資料的讀寫工作,但在電源消失後,RAM 的內容就會流失,一般用來儲存即

    將執行的資料或程式。另外,輔助記憶體指的是磁碟,磁片和磁帶等,用來彌補

    主記憶體的不足,它的容量可以無限制的擴充。

    運算單元: 運算單元又稱為算術邏輯單元。顧名思義,運算單元可執行算

    術運算及邏輯運算,也可將資料或輸入單元送來的資訊,送到運算單元以執行各

    種運算;在運算完成後,再由控制單元將資料送回記憶單元存放,或直接送到輸

    出單元。

    輸出單元: 輸出單元負責將 CPU 處理過的資料,以人類或機器可以看的

    懂得型態輸出或儲存。在個人電腦上常用的輸出設備有顯示器,列表機,磁碟機

    和繪圖機等。

    控制單元: 控制單元視為電腦的指揮中心。負責協調和指揮各單元之間的

    資料傳送及運作,使得微電腦可以按照我們的要求完成工作。在執行一個程式

    時,控制單元先從程式讀取第一個指令,加以解碼,瞭解指令的動作意義後,在

    執行這個指令。然後再讀取下一個指令,解碼,執行,一步一步往下做,直到程

    10

  • 式做完為止。

    單晶片微電腦的內部結構,所謂單晶片微電腦,就是將一個微電腦系統的

    必要組成單元,全部都製作在一顆晶片中,如此當整個系統要運作時,除了單晶

    片微電腦之外,只要連接少數的電子元件即能正常運作。

    程式記憶體是由 ROM 或 EPROM 所組成,以供使用者或廠商將要讓單晶片

    微電腦執行的程式燒錄到其中;資料記憶體是由 RAM 所組成,提供給單晶片微電

    腦在執行程式的過程中,暫時儲存運算結果或變數資料。輸入單元及輸出單元通

    常是針對一些裝置如鍵盤,螢幕,磁碟機及印表機等而言,在單晶片微電腦的領

    域中,輸入輸出單元通常是很單純的 I/O 腳可以向外界電路送出(HI),(LO)的信

    號或是由外界電路接受(HI),(LO)的信號,利用這種方式執行資訊交換的功能。

    另外還有三個單元,分別是時脈產生器,中斷控制器及週邊裝置。這三個

    單元在單晶片微電腦中都有特殊的用途,茲分項說明如下:

    1.時脈產生器: 所有單晶片微電腦系統都是同步式的順序邏輯系統,整個

    系統的工作完全是依賴系統內部的時脈信號,利用它來產生各種的動作週期及同

    步信號等。如果時脈信號發生問題,則系統將會陷於癱瘓而無法工作。在個人電

    腦上,有一些特別的電路用來產生系統各部分所須要的信號,在單晶片微電腦

    中,則是將這些電路都製作在晶片裡,稱為時脈產生器。在使用時通常只需要接

    上石英振盪晶體及電容就可以讓系統產生正確的時脈信號。

    2.週邊裝置: 在單晶片微電腦中,會存在一些特殊用途的 I/O 及輔助系統

    工作的電路,稱為週邊裝置。週邊裝置包含有 Timer/Counter,UART,DMAC....

    等等。每一種單晶片微電腦內部所包含的週邊裝置,由於生產廠商設計目的的不

    同,而會有不同的取捨。例如一個專門為多功能電話所設計的單晶片微電腦,可

    能內部就提供了記憶電話號碼,自動重撥,複頻信號解碼器及複頻信號產生器等

    在其他場合不會被使用到的週邊裝置。在絕大部分的單晶片微電腦中,至少都具

    有一個以上的 Timer/Counter。

    3.中斷控制器: 在微電腦系統中,常常會有一些能夠自行運作,不須要 CPU

    11

  • 管理的子系統存在,這些子系統能夠利用中斷的方式和 CPU 在同一時間內同時

    運作,藉以增加系統的工作效率,單晶片微電腦即是將與中斷運作有關的控制電

    路,全部製作在晶片中,稱為中斷控制器。

    8951 有許多的功能,特性及優點,

    1.專為控制使用所設計的 8bits CPU。

    2.具有單一位元邏輯運算的能力。

    3.具有 32 條雙向並能單獨定址的 I/O 線。

    4.含有 128bytes 的 RAM。

    5.2 個 16bits 的 Timer/Counter。

    6.具有全雙工的 UART。

    7.有 5 個中斷源,兩層的中斷優先權結構。

    8.具有時脈產生電路,只須外接石英晶體及電容。

    9.8951 有 4K bytes 的 ROM。

    10.可以由外部電路擴充 64K bytes 的程式記憶體及 64K bytes 的資料記憶體。

    表 2.2 8951 接腳功能表

    接腳名稱 腳位 功能

    VSS 20 系統地線。

    VCC 40 電源供應腳,接+5V。

    P0.0~P0.7 39~32

    埠 0:埠 0 是一個開洩極(Open Drain)雙向 I/O 埠。

    如果將"1"寫入埠 0,會使那支 I/O 腳成為浮接狀

    態,此時可視為高阻抗輸入端。在存取外部記憶

    體時,埠 0 具有資料匯流排及低八位元位址線

    12

  • (A0~A7)的多重功能。埠 0 在當成一般 I/O 埠使用

    時必須加上外部提升電路

    P1.0~P1.7 1~8 埠 1:埠 1 是具有內部提升電路的雙向 I/O 埠。

    P2.0~P2.7 21~28

    埠 2:埠 2 是具有內部提升電路的雙向 I/O 埠。在

    存取外部記憶體時,埠 2 是當作高八位元的位址

    線(A8~A15)。

    P3.0~3.7 10~17

    埠 3:埠 3 是具有內部提升電路的雙向 I/O 埠。在

    8951 家族中,埠 3 的每支腳都有另一項的特殊功

    能,如下面所列:

    10 RXD(P3.0):串列輸入口

    11 TXD(P3.1):串列輸出口

    12 INT0(P3.2):外部中斷輸入端

    13 INT1(P3.3):外部中斷輸入端

    14 T0(P3.4):計時器 0 外部輸入端

    15 T1(P3.5):計時器 1 外部輸入端

    16 WR(P3.6):外部資料記憶體寫入激發(Strobe)信號

    PSEN 29

    程式激發致能(External Access enable),可輸出外

    部程式記憶體的讀取信號。每個機械週期動作兩

    次,在讀取內部程式記憶體時,PSEN 不動作,

    在存取外部資料記憶體時,PSEN 會跳過兩個脈

    波才動作。

    EA 31

    外部存取致能(External Access enable)。當 EA 腳

    為”LO”時,CPU 讀取外部程式記憶體執行。當

    EA 腳為”HI”時,8951 在程式計數器的值為

    0000~0FFFH 之間,CPU 讀取外部程式記憶體的

    13

  • 資料。

    XTAL1 19 反向震盪器的輸入端

    XTAL2 18 反向震盪器的輸出端

    2.2.3 7805

    大多數的感測器及訊號處理都需要使用直流電源,一般以 5V、12V、24V、

    ±15V 最為常見,設計電路時要根據所需電壓、電流大小,來選擇適當的元件。

    一般 DC 電源電路的電子元件包含變壓器、整流器、穩壓 IC、電容、開關、通

    電指示燈等。本文介紹如何自製簡易的 5V 電源供應器,價格便宜,製造彈性佳。

    電源供應器種類簡介,電源供應器種類非常多,常見的有雙電源供應器、

    鐵盒電源供應器、整流變壓器、自製電源供應器。一般實驗室最常使用雙電源供

    應器,這類的雙電源供應器,擁有兩個電源輸出,每個電源輸出最高為 30 伏特,

    彼此可以互相串、並聯使用,輸出電壓穩定效果佳,但是價格偏高,攜帶不易。

    鐵盒直流電源供應器,俗稱為「鐵盒子」,為單一電壓電源供應器,可依照

    自身需求購買所需電壓大小。輸出電壓穩定,價格約數百元至數千元不等。

    整流變壓器,通常使用在隨身聽、充電器等,價格較便宜,但輸出效果不

    佳。

    自製 5V電源供應器:5V電源供應器電路圖如下圖所示,只需要一些電子零

    件,便可製造出 5V的電源供應器。基本電路原理為變壓器T1將 110 伏特降壓到

    12 伏特交流電,經過橋氏整流器D1到D4變為直流電壓,電解電容作為調整濾波

    用途,IC 7805 的內部線路將輸入的電壓調整為 5V的輸出電壓。

    14

  • 圖 2.4 直流電源供應器電路圖

    T1 變壓器主要功能,是將 110 伏特交流電壓降為 12 伏特交流電壓。如圖 6

    所示,輸入端連接 110 伏特,對於三插頭電源而言,綠色接地線必須連接到金屬

    的機殼;而輸出端有三個接點,分別為 12V、0、12V,將 12V 的接點互相與橋

    氏整流器的 a、b 連接即可。

    電容器是用來儲存與釋放電能,一般電容器會將電容值直接標示於外殼,若

    有極性也會標示出來,不然就是用長短腳來表示。

    圖 2.5 電解電容與表示符號

    15

  • IC 7805 是一種穩壓 IC,經由內部線路處理,將輸入的電壓調整為 5 伏特的

    輸出電壓。如圖 9 所示,Input 連接 5V 電源電路圖的 1 號位置,Output 連接 2

    號,Gnd 連接 3 號地線共接點。

    圖 2.6 IC 7805 接線圖

    圖 2.7 IC 7805 元件圖

    表 2.3 元件總圖

    溫度監控器元件表

    項目 元件 位置 元件規格 單價 數量 小計 備註 1 IC U1 89C51 50 1 50 缺口向上2 IC 座 U1 40 pin 扁孔 5 1 5 3 IC U12 7805 50 1 50 4 散熱片 U12 1.5cm*1.5cm 5 1 5 5 螺絲 U12 1 1 1

    16

  • 6 螺母 U12 1 1 1 7 IC U13 HIN 232 30 1 30 缺口向上8 IC 座 U13 16 pin 扁孔 3 1 3 9 IC U14 DS1821 250 1 250 凸面向左10 IC 座 U14 3 pin 圓孔 10 1 10 11 LCD J2 公插排 7*2 200 1 200 12 LCD 座 J2 母插座 7*2 10 1 10 13 電源插座 J9 1.2mm 孔徑 10 1 10 14 變壓器 J9 9VDC output 150 1 150 15 RS232 插座 J 14 20 1 20 16 石英震盪器 X1 11Hz 20 1 20 17 按鈕開關 SW1 按鈕開關 10 1 10 缺口向上18 按鍵 K0-K4 按鍵 6 5 30 19 蜂鳴器 BZ 5V 20 1 20 正極向下20 繼電器 RY1 5V 25 1 25 21 電晶體 Q1-Q3 C945 15 2 30 凸面向左22 二極體 D1 2 1 2 正極向上23 齊納二極體 D4 2 1 2 正極向上24 發光二極體 D2-D3 2 2 4 正極向下25 短路器 JP7 5 1 5 預留接腳

    26 電阻 R1.R2.

    R16. R18 1K ohm 1/8W 1 4 4

    27 電阻 R3.R17.R21 10 ohm 1/8W 1 3 3 28 電阻 R4 100 ohm 1/8W 1 1 1 29 陶瓷電容 C1.C2 20p 2 2 4

    30 電解電容 C3.C12.C13.

    C14.C15 10uF 25V 2 5 10

    31 電解電容 C10.C11 100uF 25V 2 2 4 32 排組 SIP1 10K ohm 10 1 10

    17

  • 第 3 章 設計和實驗準備

    3.1 主程式流程圖:

    開始

    DS1821 測量溫度

    89C51

    判斷 K1 是否有按下 NO

    YES

    LCD 進入設定模式

    K2:增加設定溫度點 K3:減少溫度設定點

    LCD 顯示所設定的溫度

    K4:結束設定模式

    LCD 顯示溫度

    判斷溫度 是否高於設定點

    NO YES

    繼電器啟動

    蜂鳴器聲音變

    LCD 顯示繼電器狀態

    圖結束

    18

    繼電器不啟動

    鳴器聲音不變

    3.1 主流程圖

  • 3.2 副程式流程圖:

    3.2.1 BZ 副程式流程圖:

    暫存器 R6 設定為 0

    R7 設定為 180

    判斷 R7 是否為 0

    YES 反向 P3.4 接腳

    判斷 R6 是否為 0

    R7 值減 1 傳回

    R6 值減 1 傳回 NO

    NO YES

    R5 設定為 10

    延遲 10ms

    返回中斷點

    圖 3.2 BZ 副程式流程圖

    19

  • 3.2.2 LED 副程式流程圖: R4 設定為 4

    反向 P3.7 接腳

    R4 值減 1 傳回

    R5 設定為 3

    延遲 10ms

    判斷 R4 是否為 0 NO

    YES 返回中斷點

    圖 3.3 LED 副程式流程圖

    3.3 部分程式說明:

    我們先設定一些參數,並且將 89C51 的各個接腳做了定義。

    關於 LCD 格式的部分,我們設定 LCD 介面位元長度為 4bit〈高位元 4bit 和

    低位元 4bit〉,行數為 2 行,字型為 5×7,顯示器啟動時游標不顯示,游標不會閃

    爍。讀寫至 DDRAM 時 AC〈進位旗標〉值加 1,並且游標向右移一格。

    3.4 實驗設計:

    3.4.1 89C51 的測試:

    1. 將電源輸入座接上,並且連接 D1 1N4007、C10 C11 100uF 電解電容,注意極

    性,再接上 7805 穩壓 IC 並裝上散熱片。

    2. 接上 89C51 的基本動作電路,首先放置 89C51 並在 18、19 接腳間接上 X1

    石英震盪晶體。再接上 K0 TACO SW RESET 按鍵開關,C1 C2 為 20pF 電

    20

  • 容,C3 為 10uF 電解電容,R1、R2、R16 1K 電阻,D3 LED、D4 LED 電源

    指示燈。

    3. 檢查 +5V 電源。通入電源,則 D2 LED 電源指示燈亮起。

    4. 驗證 89C51 是否動作。通入電源,按下 RESET 按鍵開關,則工作指示燈 D3

    LED 會閃動,表示正常。

    21

  • 第 4 章 模擬和實驗結果

    4.1 總電路實圖

    圖 4.1 電路完成圖

    18cm

    12cm

    圖 4.2 實際電路圖

    22

  • 4.2 溫度監控:

    1. 取出 +9V 電源。

    2. 打開電源,工作 LED D3 閃爍,表示開機正常。

    3. LCD 畫面顯示如下:

    PT K1-SET K2-SEE

    現在溫度 024 deg C OFF 繼電器狀態

    圖 4.3 LCD 畫面

    4. 按 K2 鍵顯示如下:

    NOW TEMP. SET:

    33 deg C ON

    表示內定 33 deg C 繼電器會 ON

    5. 按 K1 鍵顯示如下:

    SET TEMP. BY K234

    33 deg C ON

    可以按 K2 K3 K4 鍵來調整溫度到達幾度時使繼電器 ON

    K2: 增加(最高至 50 deg C)

    K3: 減少(最低至 10 deg C)

    K4: 設定完成離開

    23

  • 圖 4.4 按鍵和繼電器

    6. 內定溫度變數如下:

    TEMP:現在溫度

    TEMPX:所調整的溫度到達幾度時使繼電器 ON

    例如:所調整的溫度(TEMPX) 為 28 度,則溫度到達 28 度時繼電器 ON,

    低於 28 度時繼電器 OFF

    圖 4.5 所調整的溫度為 28 度

    7. 以手觸摸 DS1821 IC 則溫度會逐漸升起來,可以做進一步的功能驗證。

    24

  • 4.3 DS1821 之模擬

    圖 4.6 Reset 時的詳細時序圖(1)

    第一步驟: 將 DQ pin 拉 Low 並保持至少 480 uS,

    在程式中, 我們將 Low 保持在 528 uS.

    25

  • 圖 4.7 Reset 時的詳細時序圖(2)

    將 PIC DQ pin 更改為 input 模式,因為 DQ pin 有一提昇電阻,所以此時電

    路會被拉 High。當 DS1821 偵測到此 pin 拉 high 之後,會將此 pin 再度拉 low,

    這一區間為 60~240 uS,根據實驗值為 120uS 左右。在 low 區間過去之後,DS1821

    會將此 pin 拉 high,從步驟 2 到此區間至少有 480uS 的時間,所以,當 PIC 偵測

    到此 DQ pin 變 high 之後,大概還需要等 380 uS 左右的時間才算完成,這一點非

    常重要喔!

    26

  • 圖 4.8 Write 指令時序圖

    在輸入指令的時候,以 LSB 為先,MSB 為最後的順序來輸入,這一點在資

    料手冊中並沒有提到這一點,不管是輸入 0 或是 1,都是以 60~120 uS 為一個

    bit 的時區,DS1821 會在時區開始之後的 15 uS 開始 Sample 資料,所以,資料

    一但輸出至 DQ pin 之後,就必須一直保持狀態,直到時區結束,對照上圖的時

    序就很明瞭了。

    27

  • 圖 4.9 Read 指令時序圖

    當 DQ pin 被拉 low 之後,DS1821 就會將所對應的資料輸出至 DQ pin,每

    一個 bit 的區間為 15 uS 左右,所以,資料手冊上建議等到最後再去 Sample 資料,

    在程式中就是依照手冊上所寫的部份,拉 low 之後等 15 uS,然後 Sample 資料,

    讀完 8-bit 資料之後會將資料存入 READ_TEMP 的暫存器之中。所以,呼叫

    READ_COM 這一個副程式之後,就可以由 READ_TEMP 這一個暫存器當中讀

    出從 DS1821 所取得的資料。

    28

  • 第 5 章 貢獻說明、探討

    本研究乃是數位式溫度控制系統的一個開端,本系統所使用的感測器在以

    往都鮮少再文獻中發現,而且以 DS1821 的強大功能下只做了感測溫度好像有一

    點大才小用,因此本系統的軟體實在有需要加強的地方,可以加強感測晶片部分

    的軟體撰寫,可以做出一套良好的恆溫系統。

    而已本系統而言,也因為本身自己不才只做到了設定一個溫度點,DS1821

    實際上是可以設定兩個溫度點的,一個為高溫點一個為低溫點,而達到溫度點的

    時候也只啟動了繼電器,如果在設定了兩個溫度點之後,所啟動的不是繼電器,

    而是加熱器,在提昇溫度和降低溫度的時候也可以以觸發式電路來改變加熱器的

    電流,直到一個定值,那麼即可以做一個加熱用的恆溫器了,如此可以使的本系

    統更加的完善。

    原本是以 RS232 作讀取的動作使的溫度可以傳進電腦裡面,半秒紀錄一次

    溫度,並以圖表的方式清楚的顯示出來,不過軟體撰寫的沒有成功,所以 RS232

    的接腳在這裡並沒有用處,實在是一個很可惜的地方。

    而以經濟價值來看,可能使用 DS1821 的晶片不太符合成本,因為一顆晶片

    的價格為 250 元而部分的功能可以使用 8951 來代替,只需要撰寫多一些的程式

    即可以替代 DS1821 晶片的功能,不過以數位式的溫度感測器再加上一般家用的

    熱水器,即可以發明出一種電熱式的恆溫裝置,大家不會再因為熱水器的忽冷忽

    熱所擔心,而且多少的溫度也都清楚的標示在液晶面板上面,也可以設定一個最

    高危險溫度,若超過此溫度,電熱水器會發出嗶嗶的聲音來提醒人們,老人和小

    孩在使用熱水器的時候在也不須要擔心會有燙傷的事情發生了,也可以為安全加

    分。

    29

  • 結論

    在本研究中,開發出的新型『溫度感測計』,主要是由 DS1821 晶片所感測

    的數值,再將數值回傳給 8951 晶片來判讀,數值將由液晶顯示器來顯現出現在

    溫度是多少,改變的溫度是以攝氏一度為一個單位,顯示清楚容易瞭解,也可以

    經由按鍵設定溫度,一當溫度超過所設定的溫度,即會再液晶面板上顯示出來,

    同時喇叭也會改變聲音變成嗶嗶嗶的聲音,此時繼電器也會被啟動,此電路圖並

    沒有太多的推算公式,大多是以軟體為主的方式來完成,而且充分運用了每一個

    晶片的特性和功能。透過上述之說明,可以清楚的知道本研究已經達到了一般類

    比式的感測器所擁有的精密度,也同時達到了方便性和簡單操作,只需要插上電

    源,即可知道現在的室溫為多少,只要放進水裡就可以清楚的知道水溫,不論使

    用者是誰都可以輕易的操作本系統。

    30

  • 參考文獻

    [1]陳明熒,8051 專題製作—使用 C 語言,第三波文化事業股份有限公司,1995

    [2]林永裁、鄭美珠,微處理機實習,松崗電腦圖書資料股份有限公司,1996

    [3]謝澄漢、馬嘉宏,8051 單晶片原理與實作,宏文圖書開發股份有限公司,1997

    [4]盧正興、陳昭綾,8051 單晶片為電腦應用,高立圖書有限公司,1999

    [5]吳一農,單晶片 8051 實務,松崗電腦圖書資料股份有限公司,1999

    [6]賴麒文,8051 單晶片韌體設計的藝術-軟體建構的思維與解決方法 使用 C 語

    言,文魁資訊股份有限公司,2001

    [7]徐樁樑、陳輔賢,8051/8951 理論與實務應用,全華科技圖書股份有限公司,

    2004

    [8]上山直彥,閘流體控制交流電動機的運轉與維護,大學圖書出版社,1983

    [9]溫坤禮、陳德超,最新交換式電源技術,全華科技圖書股份有限公司,1998

    [10]鄭振東,新型柔性交換式電源技術入門,全華科技圖書股份有限公司,2000

    [11]劉銘中、張獻中,EM78P447S 微控制器原理與 I/O 應用,儒林圖書有限公司,

    2000

    [12]Jonathan,用 PIC 讀取 DS-1821 溫度,DS1821 Programmable Digital

    Thermostat,2002

    31

  • 附錄

    附錄 1:程式碼

    TEMP EQU 30H ; TEMP1. VAR

    X EQU 31H ; LCD X POS.

    STATUS EQU 32H

    TEMPX EQU 33H ; TEMP. VAR

    TEMP_OFF EQU 34H ; TEMP. VAR

    ;-------------------------------------------------------------------------------------------------------

    ; 8051 I/O

    K1 EQU P2.4

    K2 EQU P2.5

    K3 EQU P2.6

    K4 EQU P2.7

    SPK EQU P3.4

    RY1 EQU P3.5

    RY2 EQU P3.6

    WLED EQU P3.7

    DE EQU 24

    DQ EQU P1.7 ; DQ

    ;-------------------------------------------------------------------------------------------------------

    ; LCD CONTROL

    RS EQU P0.0

    EN EQU P0.1

    ;-------------------------------------------------------------------------------------------------------

    32

  • ORG 0H

    JMP BEGIN

    ;-------------------------------------------------------------------------------------------------------

    INIT_PORT:

    CLR EN ; ACT. HI

    SETB DQ

    CLR RY1

    CLR RY2

    ;********************************************************************

    MOV TEMPX,#33 ;設定溫度初值為 33℃

    RET

    ;-------------------------------------------------------------------------------------------------------

    BEGIN:

    CALL INIT_RS232

    CALL INIT_PORT

    CALL BZ

    CALL LED_BL

    CALL SET_LCD

    CALL TSET_UP

    JMP LOOP

    LOOPA:

    CALL RTEMP

    CALL SHOW_DIG3

    MOV R5,#100

    CALL DELAY

    JMP LOOPA

    33

  • ;********************************************************************

    MESS: DB "PT 8051 TEMP. IO51+DS1821+RELAY+rs232"

    ;********************************************************************

    DELAY:

    MOV R6,#50

    D1: MOV R7,#90 ; 100

    DJNZ R7,$

    DJNZ R6,D1

    DJNZ R5,DELAY

    RET

    ;-------------------------------------------------------------------------------------------------------

    LED_BL:

    MOV R4,#4

    L0: CPL WLED

    MOV R5,#3

    CALL DELAY

    DJNZ R4, L0

    RET

    ;-------------------------------------------------------------------------------------------------------

    MENU:

    MOV DPTR,#LMESS1

    MOV A,#1 ; LINE1

    CALL LCD_PRINT

    MOV DPTR,#LMESS2

    MOV A,#2 ; LINE2

    CALL LCD_PRINT

    34

  • RET

    ;-------------------------------------------------------------------------------------------------------

    SET_LCD:

    CLR EN

    CALL INIT_LCD

    MOV R5,#10

    CALL DELAY

    CALL MENU

    RET

    ;-------------------------------------------------------------------------------------------------------

    LMESS1: DB "PTE 8051 TEMP. ",0

    LMESS2: DB "000 deg C OFF",0

    INIT_LCD1:

    MOV A,#28H

    CALL WCOM

    MOV A,#0CH

    CALL WCOM

    MOV A,#0EH

    CALL WCOM

    MOV A,#01H

    CALL WCOM

    RET

    ;-------------------------------------------------------------------------------------------------------

    CLR_LINE1:

    MOV A,#80H

    CALL WCOM

    35

  • MOV R0,#24

    C1: MOV A,#' '

    CALL WDATA

    DJNZ R0,C1

    RET

    ;-------------------------------------------------------------------------------------------------------

    ; A 為 LCD 的上排或下排

    ; DPTR 為資料指標

    LCD_PRINT:

    CJNE A,#1,LINE2

    LINE1: MOV A,#80H

    CALL WCOM

    CALL CLR_LINE

    MOV A,#80H

    CALL WCOM

    JMP FILL

    LINE2: MOV A,#0C0H

    CALL WCOM

    CALL CLR_LINE

    MOV A,#0C0H

    CALL WCOM

    FILL:

    CLR A

    MOVC A,@A+DPTR

    CJNE A,#0,L1

    RET

    36

  • L1:

    CALL WDATA

    INC DPTR

    JMP FILL

    RET

    ;-------------------------------------------------------------------------------------------------------

    CLR_LINE:

    MOV R0,#24

    CL1: MOV A,#' '

    CALL WDATA

    DJNZ R0,CL1

    RET

    ;-------------------------------------------------------------------------------------------------------

    DE1: MOV R7, #5

    DJNZ R7,$

    RET

    ;-------------------------------------------------------------------------------------------------------

    EN1:

    SETB EN

    CALL DE1

    CLR EN

    CALL DE1

    RET

    ;-------------------------------------------------------------------------------------------------------

    INIT_LCD:

    MOV P0, #30H

    37

  • CALL EN1

    MOV P0, #30H

    CALL EN1

    MOV P0, #30H

    CALL EN1

    MOV P0, #20H

    CALL EN1

    CALL INIT_LCD1

    RET

    ;-------------------------------------------------------------------------------------------------------

    WCOM:

    ; 寫高 4 BIT

    MOV P0, A

    CLR RS ; SET COMMAND

    CALL EN1

    RLC A

    RLC A

    RLC A

    RLC A

    ; 寫低 4 BIT

    MOV P0, A

    CLR RS ; SET COMMAND

    CALL EN1

    RET

    ;-------------------------------------------------------------------------------------------------------

    WDATA:

    38

  • ; 寫高 4 BIT

    MOV P0, A

    SETB RS ; SET DATA

    CALL EN1

    RLC A

    RLC A

    RLC A

    RLC A

    ; 寫低 4 BIT

    MOV P0, A

    SETB RS ; SET DATA

    CALL EN1

    RET

    ;-------------------------------------------------------------------------------------------------------

    ; 把 A 字原放到 LCD 上排

    ; A=ASC DATA

    ; B=LINE X POS.

    LCDP1:

    ; LINE 1

    PUSH ACC

    MOV A,B

    ADD A,#80H

    CALL WCOM

    POP ACC

    CALL WDATA

    RET

    39

  • ;-------------------------------------------------------------------------------------------------------

    ; 把 A 字原放到 LCD 下排

    ; A=ASC DATA

    ; B=LINE X POS.

    LCDP2:

    ; LINE 1

    PUSH ACC

    MOV A,B

    ADD A,#0C0H

    CALL WCOM

    POP ACC

    CALL WDATA

    RET

    ;-------------------------------------------------------------------------------------------------------

    ; A 表示溫度 X 表示 LCD 上的 X 點

    SHOW_DIG3:

    MOV X,#0

    MOV B,#100

    DIV AB

    ADD A,#30H

    PUSH B

    MOV B,X

    CALL LCDP2

    ;........................………………………………………………………………………….

    POP B

    MOV A,B

    40

  • MOV B,#10

    DIV AB

    PUSH B

    ADD A,#30H

    INC X

    MOV B,X

    CALL LCDP2

    ;........................………………………………………………………………………….

    POP B

    MOV A,B

    ADD A,#30H

    INC X

    MOV B,X

    CALL LCDP2

    RET

    ;-------------------------------------------------------------------------------------------------------

    ; DS1821 CODE

    ;-------------------------------------------------------------------------------------------------------

    TXDD:

    MOV B,#8

    TX1:

    RRC A

    JNC TX0

    CLR DQ

    NOP

    SETB DQ

    41

  • JMP TX2

    TX0:

    CLR DQ

    TX2:

    MOV R7,#DE

    TX3: NOP

    DJNZ R7,TX3

    SETB DQ

    DJNZ B,TX1

    RET

    ;-------------------------------------------------------------------------------------------------------

    RXDD:

    MOV B,#8

    RX1:

    CLR DQ

    NOP

    SETB DQ

    NOP

    MOV C,DQ

    RRC A

    MOV R7,#DE

    RX2: NOP

    DJNZ R7,RX2

    DJNZ B,RX1

    RET

    ;-------------------------------------------------------------------------------------------------------

    42

  • DEL:

    MOV R7,#190

    DD1: NOP

    NOP

    NOP

    DJNZ R7,DD1

    RET

    ;-------------------------------------------------------------------------------------------------------

    SET_STATUS:

    CALL RESET

    MOV A,#0CH

    CALL TXDD

    MOV A,STATUS

    CALL TXDD

    RET

    ;-------------------------------------------------------------------------------------------------------

    STARTC:

    CALL RESET

    MOV A,#0EEH

    CALL TXDD

    RET

    ;-------------------------------------------------------------------------------------------------------

    STOP:

    CALL RESET

    MOV A,#22h

    CALL TXDD

    43

  • RET

    ;-------------------------------------------------------------------------------------------------------

    READ_STATUS:

    CALL RESET

    MOV A,#0AAH

    CALL TXDD

    CALL DEL

    CALL RXDD

    MOV STATUS,A

    RET

    ;-------------------------------------------------------------------------------------------------------

    RTEMP:

    CALL RESET

    MOV A,#0AAH

    CALL TXDD

    CALL DEL

    CALL RXDD

    MOV TEMP,A

    RET

    ;-------------------------------------------------------------------------------------------------------

    RESET:

    CLR DQ

    CALL DEL

    SETB DQ

    CALL DEL

    RET

    44

  • ;-------------------------------------------------------------------------------------------------------

    TSET_UP:

    MOV STATUS,#00H

    CALL SET_STATUS

    CALL DEL

    CALL STARTC

    CALL DEL

    RET

    ;-------------------------------------------------------------------------------------------------------

    ; K1: SET TEMP.

    ; K2: LOOK TEMP.

    LOOP:

    CPL WLED

    MOV R5,#50

    CALL DELAY

    CALL RTEMP

    CALL SHOW_DIG3

    CALL RS_OUT

    CALL CHECK_TEMP

    ; 測試按鍵 .....................

    JB K1,LK1

    ; K1 KEYED .............SET TEMP

    CALL LED_BL

    CALL SET_TEMP

    ;********************************************************************

    ; SET TEMP_OFF VALUE: TEMP_OFF=TEMPX+4 (2 degC)

    45

  • MOV A,TEMPX

    ADD A,#4

    MOV TEMP_OFF,A

    JMP LOOP

    ;....................

    LK1: JB K2,LK2

    ; K2 KEYED.... LOOK TEMP....

    CALL LED_BL

    CALL LOOK_TEMP

    MOV R5,#250

    CALL DELAY

    CALL MENU

    JMP LOOP

    ;.....................

    LK2: JB K3,LK3

    JNB K3,$

    ; K3 KEYED ..........

    JMP LOOP

    ;.....................

    LK3: JB K4,LK4

    ; K4 KEYED.............

    JMP LOOP

    ;.........................................

    LK4:

    JMP LOOP

    ;-------------------------------------------------------------------------------------------------------

    46

  • ; K2:UP K3:DOWN K4:OK TEMP: 10--50 DEG C

    SET_TEMP:

    MOV DPTR,#M_STEMP

    MOV A,#1

    CALL LCD_PRINT

    CALL SHOW_ON

    MOV A,TEMPX

    CALL SHOW_DIG3

    Z1:

    ; SCAN KEY I/P..............

    JB K1,Z10

    ; K1 DO NOTHING...............

    JMP Z1

    Z10:

    JB K2,Z2

    MOV R5,#20

    CALL DELAY

    ; K2 --> UP

    INC TEMPX

    MOV A, TEMPX

    CJNE A,#51,Z11

    MOV TEMPX,#50 ; 50 DEG C ***********

    Z11:

    MOV A,TEMPX

    CALL SHOW_DIG3

    JMP Z1

    47

  • ;............................................

    Z2: JB K3, Z3

    MOV R5,#20

    CALL DELAY

    ; K3--> DOWN

    DEC TEMPX

    MOV A, TEMPX

    CJNE A,#10,Z21

    MOV TEMPX,#11 ; 10 DEG C **************

    Z21:

    MOV A,TEMPX

    CALL SHOW_DIG3

    JMP Z1

    Z3: JB K4, Z1

    ; K4--> OK

    CALL LED_BL

    CALL MENU

    RET

    ;-------------------------------------------------------------------------------------------------------

    M_TEMP1: DB "HEATER OFF......",0

    M_TEMP: DB "HEATER ON.......",0

    M_ALARM: DB "ALARM...........",0

    M_LTEMP: DB "NOW TEMP. SET: ",0

    M_STEMP: DB "SET TEMP BY K234",0

    ;-------------------------------------------------------------------------------------------------------

    ; LOOK SETTING TEMP.

    48

  • LOOK_TEMP:

    MOV DPTR,#M_LTEMP

    MOV A,#1

    CALL LCD_PRINT

    MOV A,TEMPX

    CALL SHOW_DIG3

    CALL SHOW_ON

    RET

    ;-------------------------------------------------------------------------------------------------------

    SHOW_OFF:

    MOV A,#'O'

    MOV B,#13

    CALL LCDP2

    MOV A,#'F'

    MOV B,#14

    CALL LCDP2

    MOV A,#'F'

    MOV B,#15

    CALL LCDP2

    RET

    ;-------------------------------------------------------------------------------------------------------

    SHOW_ON:

    MOV A,#'O'

    MOV B,#13

    CALL LCDP2

    MOV A,#'N'

    49

  • MOV B,#14

    CALL LCDP2

    MOV A,#' '

    MOV B,#15

    CALL LCDP2

    RET

    ;-------------------------------------------------------------------------------------------------------

    ; TEMP =TEMPX RELAY ON

    CHECK_TEMP1:

    CALL RTEMP ; SHOW TEMP...............

    ; CHECK HEATER ON...........

    MOV A,TEMP

    MOV B,TEMPX

    CJNE A,B,CH1

    SETB RY1

    CALL SHOW_ON

    CALL LED_BL

    CALL LED_BL

    RET

    CH1: CLR RY1

    CALL SHOW_OFF

    RET

    ;-------------------------------------------------------------------------------------------------------

    ; TEMP

  • ; CHECK HEATER ON...........

    MOV A,TEMP

    MOV B,TEMPX

    SUBB A,B

    JC LESS

    ; TEMP. UP NEAR SET VALUE..................

    SETB RY1

    CALL SHOW_ON

    CALL BZ

    CALL LED_BL

    CALL LED_BL

    RET

    LESS:

    CLR RY1

    CALL SHOW_OFF

    RET

    ;-------------------------------------------------------------------------------------------------------

    BZ:

    MOV R6,#0

    B1: CALL DEX

    CPL SPK

    DJNZ R6,B1

    MOV R5,#10

    CALL DELAY

    RET

    ;-------------------------------------------------------------------------------------------------------

    51

  • DEX: MOV R7,#180

    DE0: NOP

    DJNZ R7,DE0

    RET

    ;-------------------------------------------------------------------------------------------------------

    INIT_RS232:

    MOV SCON,#50H

    MOV TMOD,#20H

    MOV TH1,#0FDH

    SETB TR1

    SETB TI

    RET

    ;-------------------------------------------------------------------------------------------------------

    TX_CHAR:

    JNB TI,$

    CLR TI

    MOV SBUF, A

    RET

    ;-------------------------------------------------------------------------------------------------------

    ; RANGE :023--099

    RS_OUT:

    MOV A,#' '

    CALL TX_CHAR

    MOV A,TEMP

    MOV B,#100

    DIV AB

    52

  • ADD A,#30H

    CALL TX_CHAR

    MOV A,B

    MOV B,#10

    DIV AB

    ADD A,#30H

    CALL TX_CHAR

    MOV A,B

    ADD A,#30H

    CALL TX_CHAR

    RET

    ;-------------------------------------------------------------------------------------------------------

    END

    53

    專題01.pdf專題02.pdf專題03.pdf