逢 甲 大 學 - auto.fcu.edu.t ·...

67
自動控制工程學系專題製作 數位溫度感測計之研究 A Study on Digital Temperature Sensor 指導教授:賴啟智 學生:黃柏翰 簡維成 中華民國九十八年八月

Upload: others

Post on 15-Sep-2019

3 views

Category:

Documents


0 download

TRANSCRIPT

  • 逢 甲 大 學

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

    專 題 論 文

    數位溫度感測計之研究

    A Study on Digital Temperature Sensor

    指導教授:賴啟智

    學生:黃柏翰

    簡維成

    中 華 民 國 九 十 八 年 八 月

  • i

  • 感謝

    謝謝指導教授不厭其煩的為我們解惑以及洪學佑學長針對我們硬體

    的電路部份所給予的協助還有其他實驗室學長們的鼎力相助。

    另外,感謝所有在專題製作期間給過我幫助的老師、助教、同學們等

    等,在此感謝各位的幫助,使我能完成這份專題。

    ii

  • 中文摘要

    在本文中,利用一個感測器 AD590 和 8951 微處理器來了解溫度感測的原理

    與方法。因此,首先介紹市面上常見的各種感測器,並深入介紹溫度感測器與

    AD590,並由此感測系統以達到溫度感測的目的。接下來,利用 AD590 本深的特

    性與電路元件結合,做到溫度監控的目的。此外介紹電路與在實驗中會用到的晶

    片與元件,與整體的電路流程。最後是檢討與結論,探討此專題遇到的問題,以

    及解決的方法,以達到希望的目標。

    iii

  • Abstract

    In this paper,the use of a microprocessor sensor AD590 and 8591 to

    understand the temperature of the principle and method of

    observation.Therefore,the first market to introduce a variety of common

    sensors,and depth information on temperature sensors and AD590,and the

    resulting sensor system in order to achieve the purpose of sensing

    temperature .Next,using AD590 own combination of features and circuit

    elements,to achieve the purpose of temperature monitoring .Also

    introduced with the circuit used in the experiment with the components

    of the chip,and the whole process of the circuit .finally,with the

    conclusions of the review to explore the problems faced by the topic,and

    solutions in order to achieve the desired goal.

    iv

  • 目錄

    感謝………………………………………………………………………………… ii

    中文摘要…………………………………………………………………iii

    英文摘要…………………………………………………………………………… iv

    目錄………………………………………………………………………………… v

    圖目錄………………………………………………………………………………vii

    表目錄…………………………………………………………………………… viii

    第一章 前言 ................................. ... .. .. .. .. 1

    1.1 問題之重要性.......................................... 1

    1.2 文獻探討.............................................. 1

    1.3 研究動機.............................................. 1

    1.4 研究目的.............................................. 2

    1.5 預期結果.............................................. 2

    第二章 理論探討............................................. 3

    2.1 單晶片 8051 介紹....................................... 3

    2.1.1 單晶片 8051 原理和特性............................... 3

    2.1.2 單晶片 8051 功能..................................... 3

    2.1.3 單晶片 8051 接腳說明................................. 5

    2.1.3 單晶片 8051 電路使用................................. 8

    2.2 溫度感測器_熱敏電阻................................... 9

    2.3 類比/數位轉換器ADC0804................................ 11

    2.3.1 ADC0804 的原理和特性 ................................ 11

    2.3.2 ADC0804 的用法 ...................................... 12

    2.4 LCD顯示原理........................................... 14

    第三章 系統設計............................................. 16

    3.1 感測器................................................ 16

    3.2 電路設計原理.......................................... 17

    3.2.1 運算放大器原理.................................. 17

    3.2.2 反相放大器...................................... 19

    3.2.3 非反相放大器.................................... 20

    3.2.4 電壓差放大器.................................... 21

    3.2.5 感測器電路設計.................................. 22

    3.3 DIPSWITCH的功能....................................... 24

    v

  • 3.4 電源處理電路、散熱與加熱功能.......................... 24

    3.5 系統電路圖............................................ 27

    3.6 程式流程方塊圖........................................ 28

    第四章 系統量測結果與分析................................... 32

    4.1 各電路的檢查.......................................... 32

    4.2 實驗過程.............................................. 33

    4.3 實驗數據與公式驗證.................................... 33

    第五章 結論與未來展望....................................... 35

    參考文獻..................................................... 36

    附錄A 程式碼說明........................................... 37

    A.1 8051 基本設定 ......................................... 37

    A.2 SW的設定並掃描ADC0804 讀取溫度並處理副程式 ............ 40

    A.3 比較溫度和LCD副程式................................... 42

    A.4 系統Timer0 中斷副程式................................. 55

    附錄B 材料表............................................... 57

    vi

  • 圖目錄

    圖 2-1 MCS-51 的內部構造[1].................................... 4

    圖 2-2 MCS-51 的 40Pin DIP 包裝的接腳圖[1]...................... 5

    圖 2-3 MCS-51 電路圖........................................... 8

    圖 2-4 硬體架構圖 ............................................. 9

    圖 2-5 AD590 的底視圖與接腳圖.................................. 10

    圖 2-6 AD590 的外觀[4]......................................... 10

    圖 2-7 ADC080X 接腳圖[6] ...................................... 11

    圖 2-8 ADC0804 基本用法[6]..................................... 12

    圖 2-9 時序圖一[6] ............................................ 12

    圖 2-10 時序圖二[6] ........................................... 13

    圖 2-11 LCM 與 CPU 的連接方塊圖[5].............................. 14

    圖 2-12 LCD 顯示電路圖........................................ 15

    圖 3.1 溫度感應/ADC 轉換電路................................... 16

    圖 3.2 運算放大器[9] .......................................... 17

    圖 3.3 運算放大器的反向輸入[9] ................................ 18

    圖 3.4 運算放大器的同向輸入[9] ................................ 18

    圖 3.5 反相放大器[9] .......................................... 19

    圖 3.6 反相放大器[7] .......................................... 19

    圖 3.7 非反相放大器[7] ........................................ 20

    圖 3.8 電壓差放大器[7] ........................................ 21

    圖 3.9 OP 放大電路設計圖....................................... 22

    圖 3.10 DIPSWITCH 接腳圖....................................... 24

    圖 3.11 電源處理電路圖 ........................................ 25

    圖 3.12 電源處理電路輸出電壓種類 .............................. 25

    圖 3.13 繼電器工作原理[1] ..................................... 25

    圖 3.14 散熱功能電路圖 ........................................ 26

    圖 3.15 加熱功能電路圖 ........................................ 26

    圖 3.16 系統總電路圖 .......................................... 27

    圖 3.17 系統方塊流程圖 ........................................ 28

    圖 3.18 程式方塊流程圖-1 ...................................... 28

    圖 3.19 程式方塊流程圖-2 ...................................... 29

    圖 3.20 程式方塊流程圖-3 ...................................... 29

    圖 3.21 程式方塊流程圖-4 ...................................... 30

    圖 3.22 程式方塊流程圖-5 ...................................... 30

    圖 3.23 程式方塊流程圖-6 ...................................... 31

    vii

  • 表目錄

    表 4-1 測到輸出端實際電壓值與理想電壓值的誤差表…………………………34

    表 B.1 溫度控制系統(材料表)……………………………………………………58

    viii

  • 第一章 前言

    1.1 問題之重要性

    舉凡日常生活中,烤箱、冷氣機與冰箱都要用到溫度控制來達其

    目的。在傳統工業界最常用到的塑膠射出成型機,精準地控制時間及溫

    度,甚至在半導體科技業所用到的真空鍍膜在溫度控制器上也必需大量

    設計,雖然目前溫度控制的技術已有許多長足的發展,但我相信在未來

    的世界,節能也是重要的一環,然而溫度控制中定溫的功能將再一次扮

    演不可或缺的角色。

    1.2 文獻探討

    在溫度控制最早的應用在溫度計,它是利用物質的某一種物理屬

    性隨溫度的變化來標示溫度。其工作原理根據使用目的不同,設計出許

    多不同的溫度計有分固、液和氣態三種型式,現今大多被半導體材質所

    做成的感測器取代。

    1593年義大利科學家伽利略,最早利用熱脹冷縮的原理做出誤差

    甚大的第一個溫度計,之後法國科學家列缪爾定出溫度範圍,定出水的

    華氏溫度為標準溫度,不久瑞典人攝爾修斯於1742年將華氏溫度刻度定

    為更精準,定水的沸點為 和冰點為 ,後來由他的同事施勒默

    爾把兩個數值倒過來用,就成了現在工業界最常用的攝氏溫度。

    Co0 Co100

    因為電子元件不斷地進步,我們利用其特性與電子學的概念,將

    其類比出來的電壓值數位化,以達到我們要的控制效果。

    1.3 研究動機

    在想要做溫度控制之前,原本打算做溫室控制的建立,但由於溫

    室感測,可能還會牽涉到溼度與光度方面的感測,在考慮溼度不易在開

    放式空間量測,需在密閉空間量測,再加上濕度所用為電容式的IC,無

    1

  • 法建立一套有數學公式跟實驗結果相符合的結果,所以決定拿掉濕度感

    測的成份,以溫度感測為主。

    如同溫室所知道的概念,無不是要控制室內的條件,以利生物生

    長。由於人類不斷地破壞大自然導致氣候變遷,影響農作物或養殖魚類

    甚劇,因此能將溫度控制在一定範圍內有利於生長使其大量繁殖以達到

    節省成本,提高效率為出發點,不僅能將溫度隨著不同的溫度定在不同

    功能,例如:種子乾燥倉儲系統等等…。

    1.4 研究目的

    利用溫度感測 AD590 具有半導體元件的特性,會輸出特定電流,

    在利用電路設計成電壓接 OP 放大電壓至 ADC0804 將其轉換成數位碼,

    輸入 89S51 的資料位址存取,轉換顯示在 LCD16X2 的模組上,當我們看

    到 LCD 上所顯示的溫度,可以利用輸入 89S51 的 DPSWITCH(4bit)輸入我

    們想要設定的溫度值,當溫度達到設定的溫度變定溫下來,溫度過低

    89S51 則會控制加熱燈泡啟動,溫度過高 89S51 則會啟動風扇降溫,此

    裝置是在一個密閉的小壓克力箱內完成,以達到溫度控制的情況。

    1.5 預期結果

    能在壓克力箱內完成定溫系統的控制,是所設定的目標。達到後

    再將目標擴大為一個大範圍的空間,看結果是否相同,不同則想辦法去

    改變,為再更深入研究的重點。

    2

  • 第二章 理論探討

    2.1 單晶片8051介紹

    2.1.1 單晶片 8051 原理和特性

    利用 8051 單晶片之特性,感測溫度及類比數位(ADC)轉換,當溫度

    過高或過低時則藉由控制風扇、加溫燈泡以達溫度平衡。其中應用電源

    處理電路、單晶片控制、溫度感測器、類比轉數位(ADC)電路、LCD 顯示、

    繼電器動作、程式多工邏輯判斷等自動控制技術。

    電腦的最基本組成單位是中央處理單元(CPU)、記憶體、以及

    I/O ,各有其專司職責及用途。例如,CPU 負責將程式解碼及執行、記

    憶體負責儲存程式及資料,而 I/O 則負責提供電腦系統與外界週邊設

    備的溝通管道。單晶片微電腦(Single Chip Microcomputer)則是將

    CPU、記憶體、I/O 這些單元組合在同一晶片之內,這些晶片只需要少

    量的支援電路即可獨立工作,如此就可以大量地減少電路板面積及降低

    成本,因此頗為適合家電、汽車、工業控制等產品及用途上,所以單晶

    片微電腦又稱之為微控制器(Microcontroller)。

    一般而言,單晶片微電腦只含有少量的記憶體及 I/O 點,以在此

    所介紹的 8 位元 8051 晶片為例,它有 4Kbyte 的 ROM、128byte 的

    RAM、以及 32 條 I/O 點。

    2.1.2 單晶片 8051 功能

    1. 專為控制應用所設計之八位元 CPU

    2. 加強了布林代數(單一位元的邏輯)之運算功能

    3. 32 條雙向且可被獨立定址之 I/O

    4. 晶片內部有 128 位元組可供儲存資料的 RAM

    5. 內部有兩個 16 位元計時器(8052 有三個)

    3

  • 6. 具全雙工 UART

    7. 5 個中斷源,且具有兩層(高/低)優先權順序之中斷結構

    8. 晶片內有時脈(Clock)振盪器線路

    9. 晶片內有 4K(8K/8052)位元組的程式記憶體(ROM)

    10. 程式記憶空間可達 64K 位元組

    11. 資料記憶體空間可定址到 64K 位元組[5]

    圖 2-1 MCS-51 的內部構造

    4

  • 2.1.3 單晶片 8051 接腳說明

    圖 2-2 MCS-51 的 40Pin DIP 包裝的接腳圖

    1.Vss(20):

    接地(GND)電源信號。

    2.Vcc(40):

    +5V 電源輸入端。

    3.XTAL1(19), XTAL2(18):

    工作頻率輸入信號。若使用石英振盪晶體時,則應將石英晶體的

    兩支接腳接到 XTAL1 與 XTAL2 接腳上。若使用外部的脈波信號源時波信

    號應接至 XTALl 接腳上,而 XTAL2 則必須接地。可使用的工作頻率範圍

    為:1.2 ~ l2 MHz。

    4.RST/VST(9):

    硬體重置(Reset)輸入信號。當本接腳收到一個由 low 上升為

    high 的轉態信號時,8051 將被重置,此時 8051 將其內部的特殊功能

    暫存器 (Special Function Register, SFR)設定為預設值,並由位址

    0000H 開始執行程式。

    5

  • 5.EA(31):

    外部存取致能(External Access Enable)輸入信號。決定程式記

    憶體最前面 bytes (0000H - 0FFFH) 是來自晶片內部的 ROM/EPROM

    (/EA=L),或來自外部的 ROM/EPROM (/EA=H)。

    6.P0.0~P0.7(39~32):

    埠 0。本接腳有兩種用途:當作 I/O 埠時為埠 0,為 8位元雙向開

    吸極(Open Drain)的 I/O 埠。本接腳亦當作多工式的低階位址(A0 - A7)

    及資料(DO - D7) 匯流排,可供存取外部的記憶體。通常在每一個指令

    週期中先送出低階位址信號(此時亦伴隨著送出 ALE 信號),然後再送出

    資料信號,故這 8 支接腳又稱之為 AD0 - AD7。

    7.P1.0~P1.7(1~8):

    埠 1。為 8位元雙方向性的 I/O 埠,此時可當作 I/O 輸入接腳。

    在 8052 系列晶片中,P1.0 及 P1.1 可做如下之用途:

    T2(P1.0):計時器 / 計數器 2 外部信號輸入端。

    T2EX(P1.1):計時器/計數器 2 在捕捉(Capture)模式時的 觸發/重新載

    入 信號輸入端。

    8.P2.0~P2.7(21~28):

    埠 2。本接腳有兩種用途:當作 I/O 埠時為 8 位元雙向 I/O 埠。

    將信號 1 寫入埠 2 時,此時可當作 I/O 輸入接腳。本接腳亦當作高

    階位址 (A8-A15) 匯流排,以存取外部記憶體。

    P3.0~P3.7(10~17):

    埠 3。為 8位元雙方向性的 I/O 埠。將信號 1 寫入埠 3 時,此

    時可當作 I/O 輸入接腳。本接腳亦可使用於下列之用途:

    RXD(P3.0):串列埠信號輸入端。

    TXD(P3.1):串列埠信號輸出端。

    /INT0(P3.2):外部中斷 0 信號輸入端。

    6

  • /INT1(P3.3):外部中斷 l 信號輸入端。

    T0(P3.4):計時器/計數器 0 外部信號輸入端。

    T1(P3.5):計時器/計數器 l 外部信號輸入端。

    /WR(P3.6):外部資料記憶體寫入閃控(Strobe)信號輸出。

    /RD(P3.7):外部資料記憶體讀取閃控(Strobe)信號輸出。

    9./PSEN(29):

    程式儲存致能(Program Store ENable)閃控輸出信號。在外部程

    式記憶體的指令碼擷取週期時, /PSEN 將送出一個閃控信號,以表示

    CPU 正自外部的程式記憶體中讀取指令碼。

    10.ALE/PROG(30):

    位址閂鎖致能 (Address Latch Enable) 輸出信號。當 CPU 自外

    界記憶體中擷取指令碼或存取資料時,ALE 將會在一個匯流排週期

    (Bus Cycle) 開始時送出 H 的信號,表示 P0.0 - P0.7 (AD0 - AD7) 正

    送出低階位址 A0 - A7 信號,以供外界電路鎖定這些低階位址信號,

    位址鎖定的功能在 8051 燒錄時用來接受燒錄時信號。[5]

    7

  • 2.1.4 單晶片 8051 電路使用

    10KRP

    D6

    D2

    D7

    11.059MHzCrystal

    D1D0

    0.1u

    D5

    10KRP

    D4

    AT89C51

    5V

    VCC

    3119

    18

    9

    12131415

    3938373635343332

    2122232425262728

    1716

    2930

    1110

    40 20

    12345678

    EAXTAL1/OSC

    XTAL2

    RESET

    INT0INT1T0T1

    P0.0P0.1P0.2P0.3P0.4P0.5P0.6P0.7

    P2.0P2.1P2.2P2.3P2.4P2.5P2.6P2.7

    RDWR

    PSENALE

    TXDRXD

    VCC VSS

    P1.0/T2P1.1/T2EXP1.2P1.3P1.4P1.5P1.6P1.7

    20pF VCC

    VCC

    VCC10KRP

    +

    10U

    /16V

    20pF

    D32K

    圖2-3 MCS-51電路圖

    8051 為一 40PIN 之 CPU,其 I/O 腳有 32 PIN。

    1. 第40PIN 為 VCC 電源輸入,20PIN 為接地腳。

    2. 第18,19 PIN 為石英振盪器接腳,提供程式執行時所須之時間脈

    波。

    3. RST 腳 (PIN9),接一 10uF/16V 電容及 2K電阻,即可得

    10ux2K=20Ms 之 Reset 時間,此時間可避免剛開機時電源尚不穩

    導致程式錯亂之情形。

    4. 第 29.30.31PIN 為外部記憶體控制腳,使用 8051 內部記憶體,

    故此 3PIN 均未使用,因此各接10K 拉至 5V。

    5. 第 10,16,17 PIN 為 ADC0804 控制輸出腳。。

    6. 第32-39 PIN 為 ADC0804 及 LCD 資料匯流排腳。

    7. 第 21,22,23 PIN 為 LCD 控制輸出腳。

    8. 第12-15 PIN 為溫度設定(利用 DIPSWITCH)

    9. 第 26 PIN 為加溫燈泡繼電器控制控制腳。

    10. 第24 PIN 為風扇繼電器控制控制腳。

    8

  • 圖2-4 硬體架構圖

    2.2 熱敏電阻

    熱敏電阻

    量測溫度的高低,熱敏電阻是最常見且便宜的元件,英文名稱為

    thermistor簡寫為Th。熱敏電阻是一種電阻值對溫度極為敏感的半導體

    元件,分為兩種:正溫度係數及負溫度係數,而正溫度係數熱敏電阻

    (Positive Temperature Coefficient Thermistors;簡稱PTC熱敏電阻)

    為隨著溫度升高,電阻值增加的熱敏電阻,反之,負溫度係數熱敏電阻

    (Negative Temperature Coefficient Thermistors;簡稱NTC熱敏電阻)

    為隨著溫度升高,電阻值降低的熱敏電阻。

    本專題我們將採用負溫度係數熱敏電阻NTC,特性如圖3-3所示。熱

    敏電阻的典型用法如圖3-4所示。本專題採用3-4 (a)圖,Vx的計算公式

    為分壓公式VX=5*RX/RX+RTH,實際實驗數值見表3-2

    圖 3-3 熱敏電阻 NTC 特性圖

    9

  • 圖 3-4 熱敏電阻典型用法

    表 3-2 熱敏電阻實際實驗數值表

    溫度 電阻值 Vx 電壓 A/D 值 範圍 四捨五入

    18 1.45 2.040816 104.0816 105.0554 105

    19 1.405 2.079002 106.0291 107.5017 108

    20 1.34 2.136752 108.9744 110.0427 110

    21 1.295 2.178649 111.1111 112.4752 112

    22 1.24 2.232143 113.8393 114.8742 115

    23 1.2 2.272727 115.9091 117.534 118

    24 1.14 2.336449 119.1589 120.2937 120

    25 1.1 2.380952 121.4286 122.8185 123

    26 1.053 2.43546 124.2085 125.4425 125

    27 1.013 2.483855 126.6766 128.0591 128

    28 0.97 2.538071 129.4416 130.4425 130

    29 0.94 2.57732 131.4433 132.6508 133

    30 0.905 2.624672 133.8583 135.2937 135

    31 0.865 2.680965 136.7292 138.0367 138

    32 0.83 2.73224 139.3443 140.3093 140

    33 0.805 2.770083 141.2742 142.4681 142

    34 0.775 2.816901 143.662 145.1068 145

    35 0.74 2.873563 146.5517 147.6199 148

    36 0.715 2.915452 148.688 150.0117 150

    37 0.685 2.967359 151.3353 152.4749 152

    38 0.66 3.012048 153.6145 154.7889 155

    39 0.635 3.058104 155.9633 156.9779 157

    40 0.614 3.097893 157.9926

    10

  • 表 3-3 溫度 A/D 值範圍表

    平均值

    (104.0816+106.0291)/2=

    105.0554

    18OC

    19OC

    20OC

    21OC

    22OC

    23OC

    24OC

    25OC

    37OC

    38OC

    39OC

    40OC

    2.3 類比/數位轉換器 ADC0804

    2.3.1 ADC0804 的用法

    如同我們前面所熟知微電腦大量處理各種數位資料做快速而精

    確的處理,但是人類在日常生活中所遇到的各種物理量(例如溫度、亮

    度、重量),因此我們如果想用 MCS-51 處理類比信號前,我們必須先轉

    成數位信號以便送入 MCS-51 作運算。

    類比/數位信號(analog to digital converter)簡稱為A/D轉換器

    (A/D converter)。ADC

    轉換器的功能是將輸入之類比信號轉換成數位信號輸出。目前最

    11

  • 常用的A/D轉換器是ADC0801系列,編號從ADC0801到ADC0805,它們的接

    腳及特性皆相容,可以互相代換使用,各說明如下:

    (1) 功能:8位元 A/D 轉換器 與 MCS-51 的 8 位元 CPU 操作相符合。

    (2) 特點:

    1. 8 位元CMOS 連續漸進型 ADC。

    2. 三態閂鎖輸出。

    3. 最大誤差±1LSB◦

    4. 轉換時間100uS@640KHZ。

    5. 內部含有時脈產生電路,頻率由外加 R、C 決定。

    圖 2-7 ADC080X 接腳圖

    2.3.2 ADC0804 的用法

    (1) 基本用法見圖2-8

    圖2-8 ADC0804基本用法

    (2) 動作情形:

    12

  • 1. 若令CS及WR腳皆為"0",則會令INTR接腳變 為"1",且使類比至

    數位電路完成準備工作。

    2. 經過100ns後,若CS與WR之中有任一腳以上變為"1",則類比至數

    位轉換電路進入工作狀態,開始將類比輸入電壓 轉換成8位元的數位

    資料。

    xV

    3. 當轉換好後,會將數位資料保存在栓鎖器,並令INTR腳輸出"0"表

    示已轉換完成,見圖2-9。

    圖 2-9 時序圖一

    4. 若令CS及RD腳皆為"0",則三態緩衝器導通,將數位資料由DB7~DB0

    輸出,見圖2-10。

    圖2-10 時序圖二

    5. ADC0804的參考電壓為( )為2.56V時,其轉換值為每個LSB等於

    0.020V。例如CPU讀到轉換值為01110101(即為75H)時,則電壓值應為:

    2/REFV

    13

  • (75H)×0.02V=117×0.02=2.34V

    6. 第10 和8 腳(D GND),(A GND)分別是數位的接地及類比的接地。

    7. ADC0804 其內部已內建一組時脈產生電路,只要在第19和4腳之間接

    一個電阻R,且於第4腳上再接一個電容C對地,就能產生時脈供ADC0804

    使用。而其頻率的大小約為fCLK≒1/1.1RC

    (3) 防雜訊的干擾:

    1. 在第20和10腳之間接一個1uF 以上的電容。

    2. 在第8和9腳之間接一個0.1uF 的電容。

    2.4 LCD顯示原理

    LCD 點矩陣模組式顯示器(LCM),內部已有字元產生器,因此接收

    CPU 想顯示的(ASCII code),然後其存到資料 RAM,由 LCD 控制並將字

    元逐一掃瞄到 LCD 上顯示,模組內含有一顆專門控制點矩陣式的液晶控

    制器 HD 44780,其特性如下:

    1. 直接使用在 4bit 或 8bit 的 CPU 上

    2. 資料顯示 RAM(DDRAM)有 80 個 byte,即最多顯示 80 個字元。

    3. 字元產生器 ROM(CG RAM),可規劃 8個 5x7 點矩陣字形。

    4. DDRAM、CGROM 的資料都可被 CPU 讀出。

    14

  • 5. 內含許多控制 LCD 顯示方式的指令。

    圖 2-11 LCM 與 CPU 的連接方塊圖

    (1)功能說明:

    1. 暫存器:

    HD 44780 裡面有兩個 8位元暫存器;即指令暫存器(IR)和資料庫

    暫存器(DR)。暫存器信號選擇是由RS(=0、1)指定,由8051寫入IR(RS=0)

    的命令只能寫入且無法被讀出;寫 DR(RS=1)(DDRAM+CGRAM)的資料將會

    隨著位址被叫出來。

    2. 忙碌旗標(BF):

    指示 LCM 是否已準備好接受 8051 的資料,RS=0 且 R/W=1 時可讀到

    BF 旗號,當 BF=1 表示內部正在忙碌無法寫入而 BF=0 才可寫入指令或資

    料。

    3. 位址計數器(AC)

    指定寫入 DDRAM 或 CGRAM 的位址,而位置設定指令寫入 IR 後,位

    址的信號就會從 IR 傳送到 AC。當資料從 DDRAM 或 CGROM 讀出後,AC 的

    內容就會被加 1(I/D=1)或減(I/D=0),其中 I/D 是進入模式所被設定。

    4. 資料顯示 RAM(DD RAM)

    16X2 的文字輸出顯示。

    5.字元產生器 ROM(CG ROM)和 RAM(CG RAM)

    ROM 為字型的資料庫和 RAM 為設定字型的資料庫。[5]

    15

  • 利用由 8051 程式對 LCD 下顯示控制命令,以顯示各設定值及測量

    值。

    D1D2D3D4

    D0LCD16X2

    VCCD6

    2

    789 6

    1011121314

    31

    54

    GNG

    D0D1D2D3D4D5D6D7

    VCVCC

    ER/W-

    RSD5

    D7 0.1u

    圖 2-12 LCD 顯示電路圖

    第三章 系統設計

    3.1 感測器

    OP 放大電路公式為 Vo=(V2-V1)x(Rf/R1),此 AD590 溫度感測器動

    作規格為 1uA/ Kο (絕對溫度),當 時其輸出電流為

    273uA( =273

    Cο0

    Cο0 Kο ),因負載電阻(Rt=1K),所以 時 V2 電壓為

    273uAx1K=273mV,且溫度每變化 1 時,V2 電壓變化為 1uAx1K=1mV,

    因希望 Vo 電壓在 時為 0V,調整 VR5K 將 V1 調在 273mV,則 時

    (V2-V1)=0,即 Vo=0V,再將 OP 設計放大 50 倍(Rf/R1=100K/2K=50),即

    Cο0

    Cο

    Cο0 Cο0

    16

  • 得溫度每變化 1 時,Vo 電壓變化為 1mVx50 倍=50mV,即 時

    Vo=0V(ADC 值=0),50 時 Vo=50x50mV =2.5V(ADC 值=7F),100 時

    Vo=100x50mV =5V(ADC值=FF),程式轉換公式為ADC值x0.392=溫度值(例

    如 FFx0.392=100)。

    Cο Cο0

    Cο Cο

    2k

    12V

    5V

    D1

    V2

    123

    D7

    ADC0804

    Vo=(V2-V1)x(Rf/R1)V1=0.273V

    Vo AD590Bottomview

    D4

    D0 671941325

    810

    1817161514131211

    20

    VI+VI-

    CLKRCLKCS/

    WR/RD/

    INTR/

    AGNDGNG

    D0D1D2D3D4D5D6D7

    VCC

    V1

    Rt

    (1

    K)

    150P

    Rf=100k CON1(接溫度感測器)

    D3

    CON2 (to AD590 溫度感測器)

    +

    -

    OP741

    3

    26

    74

    VR5k

    12V

    -12V

    D5

    VCC

    100k

    3c

    D2

    1+

    R1=2k

    VR200

    AD590

    2-

    D6

    10k

    910

    圖 3.1 溫度感應/ADC 轉換電路

    3.2 電路設計原理

    3.2.1 運算放大器原理

    運算放大器(Operational Amplifier,簡稱OP),圖3.2,放大器

    有兩個輸入端,為反向輸入端(Inverting Input),圖3.3,另一為非

    反向輸入端(Non-InvertingInput),圖3.4,所謂反相輸入,是指此端

    輸入信號後,OP 將輸出一個與輸入反相(180°相差)且放大A 倍的信

    號,再線路圖上以“-"表示該輸入端,而非反相輸入端,是指此端輸

    入訊號後,OP 將輸出一個與輸入同相且放大A 倍的信號,在線路圖上

    則以“+"表示該輸入端。

    17

  • 理想的運算放大器具有下列的特性:

    (1)增益無限大: 。 ∞=oA

    (2)頻寬無限大: 。 BW = ∞

    (3)輸入電阻無窮大: ,就是輸入端電流為零 =0(負端輸入電

    流=0,正端輸入電流=0)。

    iR = ∞ BI

    (4)輸出電阻為零:Ro=0。

    (5)輸入為零時,輸出為零;差動輸入電壓=0 時,Vo=0。

    (6)特性不受溫度影響。

    圖3.2 運算放大器

    圖3.3 運算放大器的反向輸入

    18

  • 圖3.4 運算放大器的同向輸入

    在電路設計中,我們採用反向放大器,圖3.5,放大倍率為 2

    1

    OV RV R

    = − ,

    1 1R K= , 2 61.5R K= , 3 984R = Ω ,所以放大倍率為61.5倍,因為真實

    電路中沒有辦法達到理想放大器,所以會有 BI 電流造成誤差,所以 3R 的

    設計為消除 BI 電流, 1 231 2

    R RRR R

    =+

    。[9]

    圖 3.5 反相放大器

    3.2.2 反相放大器(Inverting Amplifier)

    19

  • 圖 3.6 反相放大器

    −=VVo - =0-2RV 21

    1 RRV

    × =(- inV ×1

    2

    RR

    ) [Θ虛短路 ∴ −V =0]

    ⇒ ⎟⎟⎠

    ⎞⎜⎜⎝

    ⎛−=

    1

    2

    RR

    VV

    in

    o

    ⇒ ino VV 10= ΚΚΚ 在理想 OP 狀態下,輸入電壓放大 10 倍為輸出電壓

    3.2.3 非反相放大器(Non-inverting Amplifier)

    20

  • 圖 3.7 非反相放大器

    −=VVo - = +1RV inV2R

    Vin × 1R [Θ虛短路 ∴−V = ] inV

    ⇒ 1=in

    o

    VV +

    2

    1

    RR

    ⇒ ino VV 11= ΚΚΚ 在理想 OP 狀態下,輸入電壓放大 11 倍為輸出電壓

    3.2.4 電壓差放大器(Difference Amplifier)

    圖 3.8 電壓差放大器

    RRR

    RVV

    RRR

    RVV f

    f

    ff

    fo

    +×−

    ×−+

    ×=12

    1 [Θ虛短路 ∴−V =

    f

    f

    RRR

    V+

    ×1 ]

    ⇒ )1()( 12 RR

    RRR

    VRR

    VV ff

    ffo +×+

    ×+−×= ΚΚΚ 根據重疊原理得知

    21

  • 3.2.5 感測器電路設計

    圖 3.9 OP 放大電路設計圖

    由此圖可知,電壓差放大器的模式是所需要的放大方式,於是我

    們將 所接的電阻設計成 =100K 和 R=2K; 所接的電阻設計成 R=2K

    和 =100K 後,則

    2V fR 1V

    fR RRf =

    2100

    =50,由 3.2.3 得知:

    )1()( 12 RR

    RRR

    VRR

    VV ff

    ffo +×+

    ×+−×=

    ⇒ )()( 12 RRR

    RRR

    VRR

    VV ff

    ffo

    +×+−×=

    ⇒RR

    VRR

    VV ffo ×+−×= 12 )(

    ⇒RR

    VVV fo ×−= )( 21

    但 OP 的接法接+端的 與接-端的 2V 1V

    ∴公式修正為我們所想要的RR

    VVV fo ×−= )( 12 ΚΚΚ 放大的倍數 RRf

    因此由 AD590 所流出來的是電流經過負載電阻(Rt=1K),在 所

    測到的電流是 273

    Cο0

    Aμ ,由於此感測器是線性的元件 1uA/ Kο , 的電壓2V

    22

  • 變化為 1uAx1K=1mV,Vo 電壓變化為 1mVx50 倍=50mV,根據這個結果我

    來們進入 ADC 中所讀出來的值與我們要顯示在 LCD 上的值做個比較吧。

    Cο0 時 Vo=0V(ADC 值=0),8 位元的 2進位碼為 00000000;

    Cο50 時 Vo=2.5V(ADC 值=7F),10 進位碼為 7× 116 +15 =127, 016×

    將此 10 進位碼轉成 2進位碼送入 8051;

    Cο100 時 Vo=2.5V(ADC 值=FF),10 進位碼為 15× 116 +15 =255, 016×

    將此 10 進位碼轉成 2進位碼送入 8051;

    12750 Cο ..........3937.0≈

    225100 Cο . ..........392.0≈

    ⇒程式轉換公式為 ADC 值×0.392=溫度值(例如 FF×0.392=100 ), Cο

    之後會將它寫入 8051 的程式內。

    我們之前熟知 ADC 是處理 8元位元資料的 IC,因此 0~255 為所有

    位元都用盡,即使感測器再測出高出 100 ,也就是 255 位元亦是類比

    電壓 5V,也無法使資料再送進 8051,因為 ADC 最多就處理到 100 。

    LCD 也會根據 8051 的資料,最高顯示到 100 。

    Cο

    Cο

    Cο

    23

  • 3.3 DIPSWITCH 的功能

    DIPSWITCH 是一種封裝 IC 式的數位開關,利用開關 ON/OFF 去決定

    0、1的訊號分別送入 8051 的/INT0、/INT1、T0 和 T1 四隻接腳,作為

    I/O 腳,4bit 的輸入 0000、0001 和 0101 等Κ ,拿來作為設定溫度值的

    開關,1個 bit 在程式內代表 ,所以 0000 代表 和 0001 代表 ,

    0~15bit 對應於 ~ ,為一組 4位元 Dip Switch 可設 16 段溫度

    設定值,在程式內設定/INT0 為最低位元,依序 T1 為最高位元。

    Cο4 Cο0 Cο4

    Cο0 Cο64

    (溫度設定)

    DIPSW

    圖 3.10 DIPSWITCH 接腳圖

    3.4 電源處理電路、散熱與加熱功能

    就如同圖 3.11 所知一組電源處理電路產生 DC5V、DC-12V、

    DC12V、DC5VR 電源,用變壓器將 AC110V 轉成 AC15V(AC12V),在經過負

    半波整流器(由二極體和電容所組成)和 7912(穩壓器)產生-12V,再串聯

    一個電容接地,使其電壓輸出-12V 更趨於穩定,再用正半波整流器和

    7812(穩壓器),使其輸出 DC12V。DC 12V/-12V 供給 OP、溫感器 AD590

    使用和風扇,至於 DC12V 經過 7805(穩壓器)變成 DC5V 供 LCD、所有

    IC(ADC0804/OP741 等等…)以及電源燈(LED)使用,此外另一條

    AC15V(AC12V)經過 7805(穩壓器)變成 DC5VR 供繼電器使用。如圖 3.11

    畫紅色框線為正負半波整流器。

    24

  • 圖 3.11 電源處理電路圖

    圖 3.12 電源處理電路輸出電壓種類

    首先先了解繼電器的工作原理,下圖3.13為繼電器的工作原理。當

    控制電流流經線圈L時,會產生一磁場,這個磁場可帶動開關S接通接點

    2與接點1,當電流消失後,開 關恢復時接通接點2與接點3。透過開關S

    就可以控制外界的交流或直 流的高電壓或高電流。

    NC(Normal Close):常閉點。以COM為共同點,NC與COM再平時是呈

    導通的狀態。

    COM(Common):共通點。輸出控制接點的共同接點。

    NO(Normal Open):常開點。NO與COM 在平時是呈開路狀態,當繼電器 動

    作時,NO與COM導通,NC與COM則呈開路(不導通) 狀態。

    圖 3.13 繼電器工作原理

    25

  • 由上面 2 圖得知第 1 個接腳為 COM 共同相連,第 5和 10 個接腳

    為相連的常開點,而第 6為常閉點。當溫度過高或過低時則藉由控制風

    扇、加溫燈泡以達溫度平衡。

    由圖 3.15 知 8051 控制一電晶體,ON(High)時繼電器導通此時端子

    座輸出 AV110V,OFF(Low)時繼電器不通此時端子座無輸出電壓,端子座

    可外接燈泡。

    由圖 3.14 知 8051 控制一電晶體,ON(High)時繼電器導通此時端子

    座輸出DV12V,OFF(Low)時繼電器不通此時端子座無輸出電壓,端子座可

    外接風扇。

    圖 3.15 加熱功能電路圖

    圖 3.14 散熱功能電路圖

    26

  • 圖3.16 系統總電路圖

    27

    3.5 系統電路圖

  • 整個系統就是由 AD590 測到的值經 OP 放大電壓送入 ADC0804,再

    將資料送入 8051 中,以 DIPSWITCH 跟程式去設定與顯示溫度值,在依

    設定值決定是否降溫升溫啟動繼電器,達到定溫的效果。

    圖 3.17 系統方塊流程圖

    3.6 程式流程方塊圖

    溫度控制系統流程圖:

    開始

    把 VX 值讀入累加器 A 內

    DPTR 指向溫度資料表並讀

    入 R1

    A>R1?

    顯示 1 秒

    圖 3.18 程式方塊程圖-1

    28

  • 掃描溫度設定 SW 副程式流程圖:

    圖 3.19 程式方塊流程圖-2

    掃描 ADC0804 讀取溫度並作處理副程式流程圖:

    圖 3.20 程式方塊流程圖-3

    29

  • 比較溫度副程式流程圖:

    圖 3.21 程式方塊流程圖-4

    LCD 副程式流程圖:

    圖 3.22 程式方塊流程圖-5

    30

  • 系統時間Timer0中斷副程式流程圖:

    圖 3.23 程式方塊流程圖-6

    31

  • 第四章 系統量測結果與分析

    4.1 各電路的檢查

    1. 電源部份: 1.接上 AC110V 電源 .

    2.用三用電表檢測 7812 第三腳輸出是否為 DC12V.

    3.用三用電表檢測 7805 第三腳輸出是否為 DC5V.

    4.用三用電表檢測 7912 第三腳輸出是否為 DC-12V.

    5.檢視 LED 電源燈是否亮.

    6.若以上各項有誤,則檢查電源部份電路是否焊接錯誤.

    2. 溫度感測部份: 1.用三用電表檢測 IC OP741 第 6 腳(OUTPUT 端),溫度每變化 1度 C,

    其電壓變化應為 50mV.

    2.若檢測結果有誤,則檢查溫度感測部份電路是否焊接錯誤.

    3. 8051 CPU 部份: 1.檢視 8051 程式是否正常執行.

    2.若以上各項有誤,則檢查加 8051 CPU 部份電路是否焊接錯誤.

    32

  • 4.2 實驗過程

    1.量測的空間:

    我們利用 30cm×30cm×0.4cm 的四片壓克力 30.8cm×30cm×0.4cm

    的兩片壓克力,建構一個立方體的空間,首先我們利用一般市售的溫度

    計先測量在密閉空間的溫度,不管是我們所做的電子式溫度計跟一般市

    售的溫度計兩者都仍有誤差存在,所以我們取溫度計的值,將 Dip

    Switch 輸入想要達到的溫度,但注意不要跟溫度計的值相差過大。之

    後觀察 LCD 上所顯示的溫度值是否與溫度計所測到的溫度一樣。

    2.量測所需注意的地方:

    由於我們用的 AD590 是個類比的感測器,不是很靈敏再加上 ADC

    只有 8位元也不見得能測得很精準,然而在一個小密閉空間讓裡面的空

    氣完全靠燈泡升溫和風扇降溫都不是一件容易的事,所以必需注意到壓

    克力外的室溫或其它許多外力的因素,例如:冷氣等 ΚΚΚ 。壓克力板

    本來就為了隔絕外部的影響,因為為了觀察內部影響小幅度的變化明

    顯,所以我們不能讓外部的大量變化來影響到我們的結果。並且溫度的

    變化本來就無法在短時間看得出結果,若原本 30W 的加熱燈泡不夠用,

    我們可改採用 60W 加熱燈泡,讓升溫的效果更加明顯。

    4.3 實驗數據與公式驗證

    如同我們熟知在壓克力箱內是不太可能量到 的溫度,已經在

    OP 兩個輸入端設計好,我們想要在 有 273mv 的輸入,之後用三用電

    錶量到的電壓值都必須除以 50mV,逐漸隨著溫度升高去比較每個溫度值

    是否與量到的電壓除以 50mV,所輸出的結果一樣,以下就舉個例子與建

    立一個表格來看看誤差是否很大。

    Cο0

    Cο0

    33

  • 表 4-1 測到輸出端實際電壓值與理想電壓值的誤差表

    如同上述我們量到的電壓值如果是 2.5V,除以 50mV 後大約為

    ,以下利用 Dip Switch 設定 ~ 內所有的溫度值,去量看看

    OP741 的第 6隻接腳(output 端)的電壓是否吻合公式,並且查看誤差有

    多少。

    Cο50 ο20 ο50

    結果的確會有誤差值的存在,為何會有誤差值的存在,原因來自

    於每顆電阻包括任何一顆 IC 都有其小誤差值,將它們都連接在一起去

    量測一個系統當然也會出現一個誤差值,是由這些小誤差值所累積而成

    的,畢竟在數學的模型內未將其誤差值考慮進去,是以理想狀態下去演

    算出來的結果,當然與實驗結果有不一樣的情況。

    34

  • 第五章 結論與未來展望

    由於熱敏電阻的非線性特性,所以所量測的溫度數值不是很準

    確,但是靈敏度非常高,為了改善準確度,可以用更準確且線性的感溫

    元件來代替。

    雖然此電路有 7805 穩壓 ic 來作穩壓,但些微的雜訊就會導致

    8051 當機,因此可在 8051 第 40 腳(vcc)加一個 0.1uF 的電容來消除雜

    訊。

    本次的專題,由於時間迫切的關係,於是先做簡單的溫度感測,

    相信在時間允許的狀況下,是可以朝著溫度控制這方面去嘗試、研製的。

    35

  • 參考文獻

    [1]吳朗著,感測與轉換原理元件與應用,CH10,全欣資訊圖書,民92

    [2]蔡朝洋著,單晶片微電腦8051原理與應用,CH5~7,全華圖書,民 90

    [3]溫志中.李志偉,開放式溫度控制,逢甲大學自動控制工程學系畢業

    專題,2007 年 5 月

    [4]楊明豐著,8051 單晶片實作入門與應用,初版,第三波,第 10 章,

    民國 86 年

    [5]游金湖編譯,感測器及基礎技術,P79,建宏出版社,民 86

    [6]鄧錦城編著,8051 單晶片專題製作,初版,益眾科技 宏友圖書,第

    1、2、4章,2007 年 8 月

    [7]http://elearning.stut.edu.tw/mechelec/myweb/%E7%AC%AC%E5%9

    B%9B%E7%AB%A0.htm

    [8]http://tw.knowledge.yahoo.com/question/question?qid=150904

    3004054

    36

  • 附錄 A 程式碼說明

    A.1 8051 基本設定

    ;==============================================

    ;8951 記憶體及腳位定義

    ;==============================================

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

    ;腳位定義

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

    ADCBUS reg P0 ;A/D D0-D7

    ADCWR REG P3.6 ;A/D WRITE

    ADCRD REG P3.7 ;A/D READ

    ADCCS REG P3.0 ;A/D CS

    LCD_BUS reg P0

    LCD_RS reg P2.0

    LCD_ReadWrite reg P2.1

    LCD_Enable reg p2.2

    FAN reg P2.3 ;風扇繼電器

    HOTLT reg P2.5 ;加溫燈泡繼電器

    SET_SW reg P3 ;溫度設定 DIPSW (P3.2--P3.5)

    ;4 BITS=16 段,每段 4度 C,(0--15)x4 度

    C = 0 度 C--60 度 C

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

    ; 8951 記憶體定義

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

    37

  • OverMl REG 20H.1

    ONESECFLAG REG 20H.2

    FANFLAG REG 20H.3

    HOTFLAG REG 20H.4

    ONESEC EQU 27H

    STEMP EQU 28H

    RTEMP EQU 29H

    ;==============================================

    ; 8951 ROM 程式碼區

    ;==============================================

    .CODE

    .ORG 0

    LJMP START

    .ORG 0bH

    jmp TIMEISR ;T0

    .ORG 100H

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

    ; 初始化

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

    START:

    CLR FAN ;關風扇繼電器

    CLR HOTLT ;關加溫燈泡繼電器

    MOV SP,#61h ;設定堆疊

    CLR A

    MOV R0,#01 ;CLEAR RAM 01 -- 60H

    38

  • $10 MOV @R0,A

    INC R0

    CJNE R0,#60H,$10

    ;設定 T0 16 位元計時器

    MOV TMOD,#01010001B

    ;設定 timer0 50ms 中斷

    mov tl0, #(65535-50000)

    MOV ONESEC,#20 ;50msx20=1 秒

    call InitialLCD

    call LCDCLR

    call CURSOROFF

    CALL DELAY5

    MOVX @R0,A ;SET P0 TO HIGH IMPEDANCE

    CALL DELAY5

    ;Enable T0

    MOV IE,#10000010b

    ;啟動 T0 系統時鐘

    SETB TR0 ;start t0

    SETB ONESECFLAG

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

    ; 主流程

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

    MAINLOOP:

    JBC ONESECFLAG,$05

    JMP $1000

    39

  • $05

    CALL SCANSW ;掃描溫度設定 SW

    CALL SCANADC ;掃描 ADC

    CALL CHKTEMP ;比較溫度

    CALL SHOW ;LCD 顯示

    $1000

    SJMP MAINLOOP ;跳回主迴路

    A.2 SW 的設定並掃描 ADC0804 讀取溫度並處理副程式

    ;掃描溫度設定 SW

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

    SCANSW:

    MOV A,SET_SW

    CPL A

    RR A

    RR A

    ANL A,#0FH

    MOV B,#4

    MUL AB ; x4 度 C

    MOV STEMP,A

    RET

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

    ;SCANADC:掃描 ADC0804 並作處理

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

    SCANADC:

    40

  • CALL RUNADC

    MOV R0,A ;TEMP=Ax0.392 ;溫度值=Ax0.392 (255=100 度,

    127=50 度, 0=0 度,)

    MOV R1,#0

    MOV R2,#(25690)

    CALL Mul16

    MOV RTEMP,R6

    RET

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

    ;驅動 ADC0804

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

    RUNADC:

    CLR ADCCS

    MOV A,ADCBUS ;SET BUS INPUT

    CALL DELAY5

    CLR ADCWR

    NOP ;寫 0至ADCWR以啟動

    A/D 轉換

    NOP

    SETB ADCWR

    CALL DELAY5

    CLR ADCRD

    CALL DELAY5

    NOP

    NOP

    41

  • MOV A,ADCBUS ;讀取 A/D 值

    NOP

    NOP

    NOP

    SETB ADCRD

    CALL DELAY5

    SETB ADCCS

    CALL DELAY5

    MOVX @R0,A ;SET P0 TO HIGH IMPEDANCE

    CALL DELAY5

    RET

    A.3 比較溫度和 LCD 副程式

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

    ;比較溫度

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

    CHKTEMP:

    MOV A,STEMP

    MOV R1,RTEMP

    XRL A,R1

    JNZ $50

    CLR HOTLT ;降溫關加溫燈泡

    CLR HOTFLAG ;關燈泡旗標

    CLR FAN ;加溫關風扇

    CLR FANFLAG ;關風扇旗標

    42

  • JMP $1000

    $50

    CLR C

    MOV A,STEMP

    SUBB A,RTEMP

    JNC $100 ;JMP IF RTEMP(實測溫度)

  • $20 DJNZ R7,$20 ;2 cycles

    DJNZ R6,$10 ;2 cycles

    RET

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

    ; 延遲 1 MS (1000 cycles=1000 x 1 us = 1ms)

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

    DELAY5:

    MOV R6,#10 ;2 cycles 10

    $10 MOV R7,#50 ;2 cycles 5

    $20 DJNZ R7,$20 ;2 cycles

    DJNZ R6,$10 ;2 cycles

    RET

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

    ;16 位元乘法副程式(R7654 = R10 * R32)

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

    Mul16:

    MOV R6,#00

    MOV R7,#00

    MOV A,R2

    MOV B,R0

    MUL AB

    MOV R4,A ;R5-4 = R2 * R0

    MOV R5,B

    MOV A,R0

    MOV B,R3

    CALL R65MAB ;R6-5 += R0*R3

    44

  • MOV A,R1

    MOV B,R2

    CALL R65MAB ;R6-5 += R1*R2

    CLR OverMl ;check R6 carry?

    JC $20

    $10 MOV A,R1

    MOV B,R3

    MUL AB

    ADD A,R6

    MOV R6,A

    MOV A,B

    ADDC A,R7

    JB OverMl,$30

    $15 MOV R7,A ;R7-6 += R1*R3

    RET

    $20 SETB OverMl ;setting carry argument

    SJMP $10

    $30 INC A ;advancing carry to R7

    CLR OverMl ;clear carry argument

    SJMP $15

    R65MAB: MUL AB ;R65 = A*B+R65

    ADD A,R5

    MOV R5,A

    MOV A,B

    ADDC A,R6

    45

  • MOV R6,A

    RET

    ;================================================

    ; LCD 副程式

    ;================================================

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

    ; 延遲 10 MS (10000 cycles=10000 x 1 us = 10ms)

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

    DELAY2:

    MOV R6,#100 ;2 cycles 10

    $10 MOV R7,#50 ;2 cycles 5

    $20 DJNZ R7,$20 ;2 cycles

    DJNZ R6,$10 ;2 cycles

    RET

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

    ; 延遲 0.1MS(100 cycles=100 x 1 us = 100ns)

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

    DelayLCD: ;DELAY 1000ns

    MOV R6,#2 ;2 cycles 10

    $10 MOV R7,#25 ;2 cycles 5

    $20 DJNZ R7,$20 ;2 cycles

    DJNZ R6,$10 ;2 cycles

    RET

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

    ; LCD 初始化

    46

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

    InitialLCD:

    CALL DELAY2

    MOV LCD_BUS,#43H

    MOV LCD_BUS,#03H

    CALL DELAY2

    MOV LCD_BUS,#43H

    MOV LCD_BUS,#03H

    CALL DELAY2

    MOV LCD_BUS,#43H

    MOV LCD_BUS,#03H

    CALL DELAY2

    MOV LCD_BUS,#42H

    MOV LCD_BUS,#02H

    CALL DELAY2

    mov a,#38h

    call PutCmd

    mov a,#0eh ;;;0E

    call PutCmd

    mov a,#06h

    call PutCmd

    mov a,#01h

    call PutCmd

    MOV R0,#10

    $10 CALL DELAY2

    DJNZ R0,$10

    47

  • ret

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

    ; LCD 清除

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

    LCDCLR:

    mov a,#01h

    call PutCmd

    ret

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

    ; LCD 游標隱藏

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

    CURSOROFF:

    mov a,#0Ch

    call PutCmd

    ret

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

    ; LCD 字元資料寫入

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

    PutCh:

    SETB LCD_RS

    CLR LCD_ReadWrite

    MOV LCD_BUS,A

    SETB LCD_Enable

    CALL DelayLCD

    CLR LCD_Enable

    CALL DELAY2

    48

  • RET

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

    ; LCD 命令寫入

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

    PutCmd:

    CLR LCD_RS

    CLR LCD_ReadWrite

    MOV LCD_BUS,A

    SETB LCD_Enable

    CALL DelayLCD

    CLR LCD_Enable

    CALL DELAY2

    RET

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

    ; 顯示主畫面

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

    SHOW:

    mov a,#80h ;LCD 第一行第 0位址

    call PutCmd

    MOV A,#'S' ;顯示"SET:xxC TEST:xxC"

    CALL PutCh

    MOV A,#'E'

    CALL PutCh

    MOV A,#'T'

    CALL PutCh

    49

  • MOV A,#':'

    CALL PutCh

    CALL SHOWSTEMP ;LCD 第一行第 4位址

    MOV A,#'C'

    CALL PutCh

    MOV A,#' '

    CALL PutCh

    MOV A,#'T'

    CALL PutCh

    MOV A,#'E'

    CALL PutCh

    MOV A,#'S'

    CALL PutCh

    MOV A,#'T'

    CALL PutCh

    MOV A,#':'

    CALL PutCh

    CALL SHOWRTEMP ;LCD 第一行第 13 位址

    MOV A,#'C'

    CALL PutCh

    mov a,#C0h ;LCD 第二行第 0位址

    call PutCmd

    MOV A,#'F' ;顯示"FAN:xxx HOT:xxx "

    CALL PutCh

    MOV A,#'A'

    CALL PutCh

    50

  • MOV A,#'N'

    CALL PutCh

    MOV A,#':'

    CALL PutCh

    CALL SHOWFAN ;LCD 第二行第 4位址

    MOV A,#' '

    CALL PutCh

    MOV A,#'H'

    CALL PutCh

    MOV A,#'O'

    CALL PutCh

    MOV A,#'T'

    CALL PutCh

    MOV A,#':'

    CALL PutCh

    CALL SHOWHOT ;LCD 第二行第 12 位址

    MOV A,#' '

    CALL PutCh

    CALL DELAY5

    MOVX @R0,A ;SET P0 TO HIGH IMPEDANCE

    CALL DELAY5

    RET

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

    ; 顯示溫度設定值

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

    SHOWSTEMP:

    51

  • mov a,#84h ;LCD 第一行第 4位址

    call PutCmd

    MOV A,STEMP

    MOV B,#10

    DIV AB

    ORL A,#30H

    CALL PutCh

    MOV A,B

    ORL A,#30H

    CALL PutCh

    ; CALL DELAY5

    ; MOVX @R0,A ;SET P0 TO HIGH IMPEDANCE

    ; CALL DELAY5

    RET

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

    ; 顯示溫度測量值

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

    SHOWRTEMP:

    mov a,#8Dh ;LCD 第一行第 13 位址

    call PutCmd

    MOV A,RTEMP

    MOV B,#10

    DIV AB

    ORL A,#30H

    CALL PutCh

    MOV A,B

    52

  • ORL A,#30H

    CALL PutCh

    ; CALL DELAY5

    ; MOVX @R0,A ;SET P0 TO HIGH IMPEDANCE

    ; CALL DELAY5

    RET

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

    ; 顯示風扇狀態

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

    SHOWFAN:

    mov a,#C4h ;LCD 第二行第 4位址

    call PutCmd

    JB FANFLAG,$10

    MOV A,#'O' ;風扇狀態 OFF

    CALL PutCh

    MOV A,#'F'

    CALL PutCh

    MOV A,#'F'

    CALL PutCh

    JMP $100

    $10

    MOV A,#'O' ;風扇狀態 ON

    CALL PutCh

    MOV A,#'N'

    CALL PutCh

    MOV A,#' '

    53

  • CALL PutCh

    $100

    ; CALL DELAY5

    ; MOVX @R0,A ;SET P0 TO HIGH IMPEDANCE

    ; CALL DELAY5

    RET

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

    ; 顯示加溫燈泡狀態

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

    SHOWHOT:

    mov a,#0CCh ;LCD 第二行第 12 位址

    call PutCmd

    JB HOTFLAG,$10

    MOV A,#'O' ;加溫燈泡狀態 OFF

    CALL PutCh

    MOV A,#'F'

    CALL PutCh

    MOV A,#'F'

    CALL PutCh

    JMP $100

    $10

    MOV A,#'O' ;加溫燈泡狀態 ON

    CALL PutCh

    MOV A,#'N'

    CALL PutCh

    54

  • MOV A,#' '

    CALL PutCh

    $100

    ; CALL DELAY5

    ; MOVX @R0,A ;SET P0 TO HIGH IMPEDANCE

    ; CALL DELAY5

    RET

    ; 程式結束

    ;=================================================

    END

    A.4 系統 Timer0 中斷副程式

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

    ; 系統時間 Timer0 中斷副程式(50 ms interrupt.)

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

    TIMEISR: ;T0 系統時間

    push a ; Save Acc.

    push b

    push psw

    clr rs1 ; Select Bank 1

    setb rs0

    CLR TR0

    mov th0, #>(65535-50000)

    mov tl0, #

  • mov ONESEC,#20 ;reset counter

    SETB ONESECFLAG

    $10

    SETB TR0

    pop psw

    pop a

    pop b

    reti

    56

  • 附錄 B 材料表

    表 B.1 溫度控制系統(材料表)

    項次 名稱 型號 規格 數量 附註

    1 電阻 0 歐姆 9

    2 電阻 330 歐姆 18

    3 電阻 1K 歐姆 1

    4 電阻 10K 歐姆 2

    5 熱敏電阻 210 1

    6 二極体 1N4148 2

    7 繼電器 5Vdc 2

    8 振盪器 12MHZ 1

    9 蜂鳴器 5Vdc 1 小顆

    10 無段開關 3

    11 有段開關 1

    12 晶片 74LS47 2 14 腳

    13 晶片 AT89C51 1 40 腳

    14 晶片 7805 1 3 腳

    15 電晶体 9012 2 3 腳

    16 電容 陶瓷 30pF 2

    17 電容 陶瓷 150pF 1

    18 電容 陶瓷 104 2

    19 電容 電解 10uF 1

    20 電容 電解 100uF 1

    21 LED 綠色 5mm 1

    22 LED 紅色 6mm 1

    23 銅柱 4

    24 DC 端子 2.1 1

    25 交流電插座 2

    26 IC 座 16 腳 X2、20 腳 X1、40 腳 X1

    27 感光板 單面電木 1

    28 交流電線 1

    57

  • 58

    數位溫度感測計之研究A Study on Digital Temperature Sensor