逢 甲 自動控制工程學系專題製作 專 題 - fcu.edu.t...CH7 COM VCC DGND AGND J3...

53
自動控制工程學系專題製作 自動控制工程學系專題製作 自動控制工程學系專題製作 自動控制工程學系專題製作 LCD 溫溼度感測器 溫溼度感測器 溫溼度感測器 溫溼度感測器 LCD Temperature and Humidity Sensor 指導教授 指導教授 指導教授 指導教授:陳孝武 生:林靖凱 鄺思齊 楊培根 中華民國九十九年 中華民國九十九年 中華民國九十九年 中華民國九十九年六月

Transcript of 逢 甲 自動控制工程學系專題製作 專 題 - fcu.edu.t...CH7 COM VCC DGND AGND J3...

逢逢逢逢 甲甲甲甲 大大大大 學學學學

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

專專專專 題題題題 論論論論 文文文文

LCD溫溼度感測器溫溼度感測器溫溼度感測器溫溼度感測器

LCD Temperature and

Humidity Sensor

指導教授指導教授指導教授指導教授::::陳孝武

學學學學 生生生生::::林靖凱

鄺思齊

楊培根

中 華 民 國 九 十 九 年中 華 民 國 九 十 九 年中 華 民 國 九 十 九 年中 華 民 國 九 十 九 年 六六六六 月月月月

ii

iii

目錄目錄目錄目錄

目錄目錄目錄目錄...............................................................................................................................iii

感謝感謝感謝感謝...............................................................................................................................iv

中文摘要中文摘要中文摘要中文摘要........................................................................................................................v

英文摘要英文摘要英文摘要英文摘要.......................................................................................................................vi

圖目錄圖目錄圖目錄圖目錄..........................................................................................................................vii

表目錄表目錄表目錄表目錄...........................................................................................................................ix

第一章第一章第一章第一章 緒論緒論緒論緒論..................................................................................................................1

第二章第二章第二章第二章 元件與基礎理論元件與基礎理論元件與基礎理論元件與基礎理論............................................................................................2

2.1 系統硬件概述.......................................................................................2

2.2 類比/數位轉換器 ADC0838...............................................................3

2.3 AT89S51單晶片....................................................................................6

2.4 時鐘晶片DS1302..................................................................................9

2.5 溫濕度感測器.....................................................................................11

2.6 繪圖型LCD.........................................................................................18

第三章第三章第三章第三章 8051程式編寫程式編寫程式編寫程式編寫................................................................................................23

3.1 流程圖.................................................................................................24

第四章第四章第四章第四章 電路實作電路實作電路實作電路實作........................................................................................................25

4.1 設計想法來源.......................................................................................25

4.2 電路設計方塊圖...................................................................................26

4.3 專題電路圖...........................................................................................27

第五章第五章第五章第五章 實驗結果實驗結果實驗結果實驗結果........................................................................................................28

5.1 實驗結果呈現.....................................................................................28

參考文獻參考文獻參考文獻參考文獻......................................................................................................................30

附錄一附錄一附錄一附錄一..........................................................................................................................31

iv

感謝感謝感謝感謝

首先,要先感謝陳孝武老師給予我們的這個機會,也提供了我們很多建議,

除了在專題指導上,也教導了我們做人處事的道理,成為老師的專題生讓我們學

習很多,也變得更加成熟。

再者感謝去年畢業的楊孟輯學長,他在我們的專題研究方面給予很多協助,

也不厭其煩的講解原理,替我們準備了很多東西。除了長輩們的支持與鼓勵外,

也感謝同儕的建議與協助。

v

中文摘要中文摘要中文摘要中文摘要

本專題是由溫濕度感測、設定、A/D 轉換、繪圖型LCD等電路,組成一個

溫濕度的顯示糸統。量測溫濕度的數值大小顯示在LCD上,並判斷目前的狀態是

否在舒適範圍內,用不同顏色的指示LED燈提醒使用者。我們在本專題設定在以

下狀態時,為不適合狀態:

1. 低濕度時(LED燈為藍色)。

2. 高濕度時(LED燈為紅色)。

3. 低溫度時(LED燈為藍色)。

4. 高溫度時(LED燈為紅色)。

我們將A/D 轉換的訊號讀入8051,利用程式加以運算,以及判斷,並顯示

給使用者。

vi

英文摘要英文摘要英文摘要英文摘要

The topic is the temperature and humidity sensor, set, A / D

conversion,graphics-based LCD and other circuit, to form a display system which is

temperature and humidity. The measured temperature and humidity of the numerical

size displayed in the LCD , and determine whether the current state of the comfort

range ,use different colors of LED lights to remind the user. We set the topic in the

following state, as not suitable for the state:

1. Low humidity (LED lights to blue).

2. High humidity (LED lights to red).

3. Low temperature (LED lights to blue).

4. High temperature (LED lights to red).

We will be A / D conversion of the signal reads in the 8051, using the program to

compute, determine and display to the user.

vii

圖目錄圖目錄圖目錄圖目錄

圖圖圖圖 2.1 ADC0838腳位圖腳位圖腳位圖腳位圖.............................................................................................3

圖圖圖圖 2.2 ADC0838時序圖時序圖時序圖時序圖............................................................................................4

圖圖圖圖 2.3 A/D轉換器與溫濕度感測器連接電路圖轉換器與溫濕度感測器連接電路圖轉換器與溫濕度感測器連接電路圖轉換器與溫濕度感測器連接電路圖......................................................6

圖圖圖圖 2.4 8051接腳圖接腳圖接腳圖接腳圖.....................................................................................................8

圖圖圖圖 2.5 AT89S51電路圖電路圖電路圖電路圖.............................................................................................9

圖圖圖圖 2.6 DS1302腳位圖腳位圖腳位圖腳位圖...............................................................................................10

圖圖圖圖 2.7 DS1302電路圖電路圖電路圖電路圖...............................................................................................11

圖圖圖圖 2.8 NTC特性圖特性圖特性圖特性圖...................................................................................................12

圖圖圖圖 2.9 熱敏電阻典型用法熱敏電阻典型用法熱敏電阻典型用法熱敏電阻典型用法........................................................................................12

圖圖圖圖 2.10 溫度溫度溫度溫度(T)變化對應電阻值變化對應電阻值變化對應電阻值變化對應電阻值(K)變化變化變化變化.................................................................14

圖圖圖圖 2.11 溫度溫度溫度溫度(T)變化對應電壓值變化對應電壓值變化對應電壓值變化對應電壓值(Vx)變化變化變化變化................................................................14

圖圖圖圖 2.12 溫度溫度溫度溫度( ) 變化對應電壓值變化對應電壓值變化對應電壓值變化對應電壓值(Vx)變化變化變化變化..............................................................17

圖圖圖圖 2.13 溫濕度感測器電路圖溫濕度感測器電路圖溫濕度感測器電路圖溫濕度感測器電路圖....................................................................................18

圖圖圖圖 2.14 繪圖型繪圖型繪圖型繪圖型LCD正面外觀正面外觀正面外觀正面外觀...................................................................................19

圖圖圖圖 2.15 繪圖型繪圖型繪圖型繪圖型LCD背面外觀背面外觀背面外觀背面外觀...................................................................................19

圖圖圖圖 2.16 LCD內部結構方塊圖內部結構方塊圖內部結構方塊圖內部結構方塊圖....................................................................................20

圖圖圖圖 2.17 LCD電路圖電路圖電路圖電路圖....................................................................................................21

圖圖圖圖 2.18 百分比圖型百分比圖型百分比圖型百分比圖型....................................................................................................21

圖圖圖圖 2.19 度數度數度數度數圖型圖型圖型圖型........................................................................................................21

圖圖圖圖 2.20 溫度計圖型溫度計圖型溫度計圖型溫度計圖型....................................................................................................21

圖圖圖圖 2.21 冒號圖型冒號圖型冒號圖型冒號圖型........................................................................................................21

圖圖圖圖 2.22 電子鐘字樣電子鐘字樣電子鐘字樣電子鐘字樣....................................................................................................21

圖圖圖圖 2.23 時間字樣圖型時間字樣圖型時間字樣圖型時間字樣圖型................................................................................................21

圖圖圖圖 2.24 BMP圖檔轉程式碼圖檔轉程式碼圖檔轉程式碼圖檔轉程式碼........................................................................................22

viii

圖圖圖圖 3.1 程式流程圖程式流程圖程式流程圖程式流程圖......................................................................................................23

圖圖圖圖 3.2 顯示時鐘程式流程圖顯示時鐘程式流程圖顯示時鐘程式流程圖顯示時鐘程式流程圖......................................................................................24

圖圖圖圖 3.3 設定時間流程圖設定時間流程圖設定時間流程圖設定時間流程圖..............................................................................................24

圖圖圖圖 4.1 七段顯示氣溫度感測七段顯示氣溫度感測七段顯示氣溫度感測七段顯示氣溫度感測......................................................................................25

圖圖圖圖 4.2 電路設計方塊圖電路設計方塊圖電路設計方塊圖電路設計方塊圖..............................................................................................26

圖圖圖圖 4.3 電路圖電路圖電路圖電路圖..............................................................................................................27

圖圖圖圖 5.1 專題完成圖專題完成圖專題完成圖專題完成圖......................................................................................................28

圖圖圖圖 5.2 開機畫面開機畫面開機畫面開機畫面..........................................................................................................28

圖圖圖圖 5.3 39 LED 顯示紅燈顯示紅燈顯示紅燈顯示紅燈...........................................................................................28

圖圖圖圖 5.4 31 59%RH LED 顯示綠燈顯示綠燈顯示綠燈顯示綠燈............................................................................28

圖圖圖圖 5.5 24顯示藍燈顯示藍燈顯示藍燈顯示藍燈...................................................................................................28

圖圖圖圖 5.6 79%RH顯示紅燈顯示紅燈顯示紅燈顯示紅燈.............................................................................................28

圖圖圖圖 5.7 47%RH顯示藍燈顯示藍燈顯示藍燈顯示藍燈.............................................................................................29

圖圖圖圖 5.8 時間顯示時間顯示時間顯示時間顯示..........................................................................................................29

ix

表目錄表目錄表目錄表目錄

表表表表2.1 元件使用表及編號元件使用表及編號元件使用表及編號元件使用表及編號...........................................................................................2

表表表表2.2 MCS-51微處理器的晶片種類微處理器的晶片種類微處理器的晶片種類微處理器的晶片種類........................................................................7

表表表表2.3 MCS-51腳位說明腳位說明腳位說明腳位說明............................................................................................7

表表表表2.4 溫度與電壓溫度與電壓溫度與電壓溫度與電壓變化數值變化數值變化數值變化數值.....................................................................................13

表表表表2.5 濕度與電壓變化數值濕度與電壓變化數值濕度與電壓變化數值濕度與電壓變化數值.....................................................................................15

表表表表2.6 暫存器選擇及動作說明暫存器選擇及動作說明暫存器選擇及動作說明暫存器選擇及動作說明.................................................................................20

1

第一章第一章第一章第一章 緒論緒論緒論緒論

本專題目的是利用最基本的熱敏電阻熱敏電阻熱敏電阻熱敏電阻與濕度感測模組濕度感測模組濕度感測模組濕度感測模組AHT11來測量溫度與

濕度,並顯示在LCD上。

在感測器方面,本想選擇SHT10這顆溫濕度感測器,但一般店面買不到須特

別訂購,價格也較高,因此我們選用目前市面上最易取得價格也最低廉的這兩樣

元件。

硬件核心則是採用AT89S51,內部具有4KB ROM存儲空間,能於3V的超低

壓工作,而且與MCS-51系列單晶片完全兼容,但是運用於電路設計中時,由於

不具備ISP在線燒錄技術,當在對電路進行測試時,程式的錯誤修改或對程式的

新增功能需要燒入程式,晶片的多次拔插會對晶片造成一定的損壞。

在溫濕度感測器與8051之間還須連接一個類比對數位的轉換器,

ADC0838。這也是本專題很重要的一環。

顯示的部分由LCD來顯示,由於LCD具備耗電低、電路簡單容易,因此我

們選用它。LCD又可分為文字型與繪圖型兩種,本專題採用繪圖型LCD。

2

第二章第二章第二章第二章 元件與基礎元件與基礎元件與基礎元件與基礎理論理論理論理論

2.1 系統硬件概述系統硬件概述系統硬件概述系統硬件概述

本電路是由 AT89S51單晶片為控制核心,具有低功耗;A/D 轉換電路由

ADC0838提供,可將溼、溫感測到的電壓值轉成數位值給 8051,再由 8051將

數位值顯示在 LCD上,同時判別是否在合適的範圍內,並以 LED當作指示燈提

醒使用者。

另外按鍵作為設定並調整目前時間之用。下表則是本專題選用之元件:

表表表表 2.1 元件使用表及編號元件使用表及編號元件使用表及編號元件使用表及編號

編號 規格 數量

C1 470uF/16V電解電

容 1

C2 100uF/16V電解電

容 1

C4,C3 104陶瓷電容 2

C6,C5 30PF陶瓷電容 2

C7 10uF/25V電解電容 1

D1 溫度 LED(紅) 1

D2 溼度 LED(紅) 1

D3 溫度 LED(綠) 1

D4 溼度 LED(綠) 1

D5 溫度 LED(藍) 1

D6 溼度 LED(藍) 1

J1 濕度 SENSOR 1

SW1,J2 POWER 2

J3 溫度 SENSOR 1

Q1 A1015電晶體 PNP 1

R1,R2,R4,R5 300電阻 4

R3 1K電阻 1

R6 10K電阻 1

R7 10K可調電阻 1

SW2 UP 按鍵 1

SW3 DOWN 按鍵 1

S1 SET 按鍵 1

3

U1 78M05 1

U2 ADC0838 1

U3 DS1302 1

U4 LCM 1

U5 80C51 1

Y1 32.768KHZ 1

Y2 12MHZ 1

2.2 類比類比類比類比/數位轉換器數位轉換器數位轉換器數位轉換器 ADC0838

2.21 A/D轉換器轉換器轉換器轉換器

雖然微電腦可以將各種數位資料做快速而精確的處理,但是人類在日常生活

中所遇到的各種物理量(例如濕度、亮度、重量)都是類比的,因此欲令微電腦處

理類比信號,必須先將類比信號轉換成數位信號才送進微電腦。

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

converter)。

A/D轉換器的功能是將輸入之類比信號轉換成數位信號輸出。圖2.2為

ADC0838腳位圖。

圖圖圖圖 2.1 ADC0838腳位圖腳位圖腳位圖腳位圖

4

圖圖圖圖 2.2 ADC0838時序圖時序圖時序圖時序圖

2.22 ADC0838組合語言組合語言組合語言組合語言

; 起動ADC0838

ATOD:

MOV R1,#5 ;選ADC0838類比通道,串列輸入

MOV R2,CHANL ;ADC通道參數,通道0(03H)

SETB ADC_CS ;ADC控制初值

CLR ADC_DI ;ADC控制初值

CLR ADC_CLK ;ADC控制初值

CLR ADC_CS ;ADC控制初值

SET_MUX_CODE:

MOV A,R2

ADC083X_LOOP1:

RRC A ;串列輸入ADC

MOV ADC_DI,C

SETB ADC_CLK ; CLK 上升邊緣,資料可寫入

5

NOP

CLR ADC_CLK ; CLK 回復為 Low

DJNZ R1,ADC083X_LOOP1 ;共5次

SAMPLE_DATA:

MOV R2,#8 ;ADC轉換值共8 BIT

ADC083X_LOOP2:

SETB ADC_CLK ; CLK 上升邊緣,資料可讀出

NOP

CLR ADC_CLK ; CLK 下降邊緣

MOV C,ADC_DO ;資料讀出

RLC A ;轉入A

DJNZ R2,ADC083X_LOOP2 ;共8次

MOV A2D,A ;存入ADC類比轉數位值

RET

2.23 ADC0838基基基基本設計本設計本設計本設計

ADC0838為 20腳 8位元漸進式 CMOS的類比數位轉換器。濕度感測器的

訊號輸入端與其 CH2相接,溫度感測器訊號輸入端與 CH3相接,同時連接 1K

電阻。14腳、16腳、17腳和 18腳分別與 AT89S51的 P2.3、P2.2、P2.1、P2.0

接。9腳和 10腳為接地端,19腳和 20腳為電源端。

上述如圖 2.3所示:

6

U4

ADC0838

161514

1817

13

19

12

123456789

20

10 11

CLKSARSDOUT

CSDIN

SE

V+

VREF

CH0CH1CH2CH3CH4CH5CH6CH7COM

VCC

DGND AGND

J3

溫溫SENSOR

1

2

CH1

CH2

+5V

P2.0

P2.3

J2

濕溫SENSOR

1

2

CH1

CH2

R1

1K

+5V

P2.1P2.2

圖圖圖圖 2.3 A/D轉換器與溫濕度感測器連接電路圖轉換器與溫濕度感測器連接電路圖轉換器與溫濕度感測器連接電路圖轉換器與溫濕度感測器連接電路圖

2.3 AT89S51單晶片單晶片單晶片單晶片

2.31 MCS-51單晶片單晶片單晶片單晶片

1. 何謂單晶片微電腦何謂單晶片微電腦何謂單晶片微電腦何謂單晶片微電腦

所謂單晶片微電腦(Single Chip Microcomputer),簡單的說就是:本

身除了具備中央處理單元的功能外,將記憶體單元、輸入/輸出單元組

合在同一顆晶片內,只須一些支援電路就能獨立作業。

2. MCS-51單晶片特性介紹單晶片特性介紹單晶片特性介紹單晶片特性介紹

MCS-51為八位元微電腦,內有4K 位元組(Byte)唯讀記憶體(ROM)

及128位元組(Byte)隨機存取記憶體(RAM),外部RAM 和ROM 則

可個別擴充到64K 位元組,提供5 個中斷源並可執行雙層中斷優先規

劃功能,四組並列式平行I/O埠(32 位元),一個全雙工串列埠,並能

位元定址及執行布林(Boolean)運算。MCS-51系列晶片特性整理如表

所示。

7

表表表表2.2 MCS-51微處理器的晶片種類微處理器的晶片種類微處理器的晶片種類微處理器的晶片種類

3. MCS-51單晶片腳位說明單晶片腳位說明單晶片腳位說明單晶片腳位說明

腳位說明如表2.3所示:

表表表表2.3 MCS-51腳位說明腳位說明腳位說明腳位說明

8

4. MCS-51單晶片接腳單晶片接腳單晶片接腳單晶片接腳

如圖2.4所示:

圖圖圖圖2.4 8051接腳圖接腳圖接腳圖接腳圖

2.32單晶片主控制模塊的設計單晶片主控制模塊的設計單晶片主控制模塊的設計單晶片主控制模塊的設計

AT89S51單晶片為 40腳雙列直插晶片,有四組 I/O 腳 P0、P1、P2、P3,

MCS-51單晶片共有 4組 8位的 I/O 口(P0、P1、P2、P3),每一條 I/O線都能

獨立地作輸出或輸入。單晶片的最小系統如圖所示,18腳和 19腳接振盪電路,

第 9腳為重置輸入端,接上電容,電阻及開關後為上電重置電路,20腳為接地

端,40腳為電源端,如圖所示:

9

P0.6

P2.3

R910K

+5V

P1.3

P0.3

P1.0

P0.1

P3.3

P3.0

Y1

12MHZ

P0.5

P3.7

+C410uF P2.5

P0.5

P0.0

P3.1

P1.1

P3.5

P2.0

P3.6

P0.5

P2.1

P1.4

P3.4

P0.5

U4

8051

31

19

18

9

12131415

12345678

3938373635343332

2122232425262728

171629301110

20

40

EA/VPP

XTAL1

XTAL2

RESET

P3.2_INT0P3.3_INT1P3.4_T0P3.5_T1

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

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

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

P3.7_RDP3.6_WR

PSENALE/PROG

P3.1_TXDP3.0_RXD

GND

VCC

P1.2

P0.2

C2

30PF

P1.7

P0.4

P1.5

P2.4

+5V

P2.6P2.7

P0.7

C3

30PF

P1.6

P3.2 P2.2

圖圖圖圖 2.5 AT89S51電路圖電路圖電路圖電路圖

2.4 時鐘晶片時鐘晶片時鐘晶片時鐘晶片 DS1302

2.41 DS1302功能與應用功能與應用功能與應用功能與應用

DS1302內含有一個即時時鐘/日曆和 31位元組靜態 RAM,通過簡單的序列

介面與單晶片進行通信。即時時鐘/日曆電路提供秒、分、時、日、周、月、年

的資訊,每月的天數和閏年的天數可自動調整。時鐘操作可通過 AM/PM 指示決

定採用 24 或 12 小時格式。

DS1302 與單晶片之間能簡單地採用同步串列的方式進行通信,僅需用到三

個部分:(1)RES 重定(2)I/O 資料線(3)SCLK串列時鐘。

DS1302工作時耗能很低,保持資料和時鐘資訊時功率小於 1mW,因此我們

選用他。目前 DS1302廣泛應用於電話、傳真、可擕式儀器以及電池供電的儀器

儀錶等產品領域。

以下是 DS1302的規格:

10

1. 即時時鐘具有能計算 2100 年之前的秒、分、時、日、星期、月、

年的能力,還有閏年調整的能力。

2. 31 8 位元暫存資料存儲 RAM。

3. 串列 I/O 口方式使得接腳數量最少。

4. 寬範圍工作電壓 2.0 5.5V。

5. 工作電流 2.0V時,小於 300nA。

6. 讀/寫時鐘或 RAM 資料時有兩種傳送方式單字節傳送和多位元組

傳送字元組方式。

7. 8 腳 DIP 封裝或可選的 8腳 SOIC封裝根據表面裝配。

8. 簡單 3線介面。

9. 與 TTL 相容 Vcc=5V。

10. 可選工業級溫度範圍-40 +85。

11. 雙電源管用於主電源和備份電源供應。

圖圖圖圖 2.6 DS1302腳位圖腳位圖腳位圖腳位圖

腳位說明:

VCC2:主用電源引腳

X1、X2:DS1302外部晶振引腳

GND:地

RST:復位引腳

I/O:串列資料引腳,資料輸出或者輸入都從這個引腳

SCLK:串列時鐘引腳

11

VCC1:備用電源

2.42 DS1302基本設計基本設計基本設計基本設計

DS1302與單晶片之間連接容易,設計上 2腳與 3腳須連接 32.768KHz震盪

器,1腳和 8腳為電源端,4腳為接地端,7腳、6腳和 5腳分別與 8051的 P2.0、

P2.1和 P2.3連接。如圖 2.6所示:

Y1

32.768KHZ

P2.0

U3

DS1302

23

5

6

7

18 4

X1X2

RST

I/O

SCLK

VCCVCC GND

+5V

P2.1

P2.3

圖圖圖圖 2.7 DS1302電路圖電路圖電路圖電路圖

2.5溫濕度感測器溫濕度感測器溫濕度感測器溫濕度感測器

2.51熱敏電阻熱敏電阻熱敏電阻熱敏電阻

熱敏電阻(英文名稱為 thermistor簡寫為 Th)是由氧化金屬材料所製成的半導

體,有時為了使溫度係數更大,以及感測溫度時電阻的變化較為穩定起見,滲入

一些白金。而且利用滲雜技術的不同和使用不同的半導體材料,可以製造出各種

特定溫度的電阻範圍。

熱敏電阻對溫度的反應,是因為平常溫度低時,半導體內部的電子被原子核

束縛著,無足夠的能量脫離軌道由價帶跳至傳導帶。但溫度升高以後,熱能使得

一些電子獲得外能量,變成自由電子進入傳導帶,因自由電子的增加,使得半導

體的電阻減少,導電性增加,所以熱敏電阻是一種具有負溫度係數特性的元件。

量測溫度的高低,熱敏電阻是最常見且便宜的元件,熱敏電阻分為兩種:正

溫度係數及負溫度係數,而正溫度係數熱敏電阻(Positive Temperature Coefficient

12

Thermistors;簡稱PTC熱敏電阻)為隨著溫度升高,電阻值增加的熱敏電阻,反之,

負溫度係數熱敏電阻(Negative Temperature Coefficient Thermistors;簡稱NTC熱敏

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

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

圖圖圖圖2.8 NTC特性圖特性圖特性圖特性圖

熱敏電阻的典型用法如圖 2.8所示:

圖圖圖圖2.9 熱敏電阻典型用法熱敏電阻典型用法熱敏電阻典型用法熱敏電阻典型用法

本專題採用圖2.8,Vx的計算公式為分壓公式:

THX

XX RR

RV

+×= 5 (2-1)

13

正常變化範圍數值見下表:

表表表表2.4 溫度與溫度與溫度與溫度與電壓變化數值電壓變化數值電壓變化數值電壓變化數值

溫度 電阻值 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

將表2.4描點畫成曲線圖,分別是隨溫度(T)改變電阻值(K)的變化與電壓值

(Vx)的變化:

14

0.6

0.7

0.8

0.9

1

1.1

1.2

1.3

1.4

1.5

15 20 25 30 35 40 45

電阻值電阻值電阻值電阻值(k)

電阻值(k)

圖圖圖圖2.10 溫度溫度溫度溫度(T)變化對應電阻值變化對應電阻值變化對應電阻值變化對應電阻值(K)變化變化變化變化

2

2.2

2.4

2.6

2.8

3

3.2

15 20 25 30 35 40 45

Vx(v)

Vx(v)

圖圖圖圖2.11 溫度溫度溫度溫度(T)變化對應電壓值變化對應電壓值變化對應電壓值變化對應電壓值(Vx)變化變化變化變化

2.52 濕度模組濕度模組濕度模組濕度模組 AHT-11

此種電阻感測元件是在感濕高分子膜上下各蒸鍍上一對齒狀電極,當溼

度改變時,高分子膜吸收水分,使水分改變電極進而使電阻改變。

模組的供給電壓為直流電壓,相對濕度通過電壓輸出進行計算,此模組

具有精度高,可靠性高,一致性好,長期穩定性好,使用方便及價格低廉等

特點,尤其適合對品質、成本要求比較苛刻的企業使用。AHT-11應用領域很

廣,空調,加濕器,除濕機,通迅,大氣環境監測,工業程序控制,農業,

15

測量儀錶等地方。

AHT-11濕度模組規格:

測量範圍:20-90%RH

對應輸出電壓:0.6-2.7V

供電電壓: 3.3-5V DC

使用環境::0-60

測量誤差:≤5%RH

由於濕度與輸出電壓成正比,ADC0838 類比轉數位 IC,將輸出的類比電

壓,轉成 0101…數位格式,IC內部運算結果,公式為類比電壓與 51相乘:

51×XV (2-2)

8051即可從 ADC0838轉換後的數位訊號判斷目前濕度。

舉個例子,例如:現在濕度為 60,假設測量到模組輸出的電壓為 2V,把此

電壓接到 ADC0838的偵測腳位上,代入公式(2-2)。

也就是說2*51=102=01100110(二進制),8051就知道01100110=濕度為60RH。

下表為濕度與電壓正常範圍變化數值:

表表表表 2.5 濕度與電壓變化數值濕度與電壓變化數值濕度與電壓變化數值濕度與電壓變化數值

濕度 輸出電壓 A/D 值 四拾五入

20 0.6 30.6 31

21 0.63 32.13 32

22 0.66 33.66 34

23 0.69 35.19 35

24 0.72 36.72 37

25 0.75 38.25 38

26 0.78 39.78 40

27 0.81 41.31 41

28 0.84 42.84 43

29 0.87 44.37 44

30 0.9 45.9 46

31 0.93 47.43 47

32 0.96 48.96 49

33 0.99 50.49 50

34 1.02 52.02 52

35 1.05 53.55 54

16

36 1.08 55.08 55

37 1.11 56.61 57

38 1.14 58.14 58

39 1.17 59.67 60

40 1.2 61.2 61

41 1.23 62.73 63

42 1.26 64.26 64

43 1.29 65.79 66

44 1.32 67.32 67

45 1.35 68.85 69

46 1.38 70.38 70

47 1.41 71.91 72

48 1.44 73.44 73

49 1.47 74.97 75

50 1.5 76.5 77

51 1.53 78.03 78

52 1.56 79.56 80

53 1.59 81.09 81

54 1.62 82.62 83

55 1.65 84.15 84

56 1.68 85.68 86

57 1.71 87.21 87

58 1.74 88.74 89

59 1.77 90.27 90

60 1.8 91.8 92

61 1.83 93.33 93

62 1.86 94.86 95

63 1.89 96.39 96

64 1.92 97.92 98

65 1.95 99.45 99

66 1.98 100.98 101

67 2.01 102.51 103

68 2.04 104.04 104

69 2.07 105.57 106

70 2.1 107.1 107

71 2.13 108.63 109

72 2.16 110.16 110

17

73 2.19 111.69 112

74 2.22 113.22 113

75 2.25 114.75 115

76 2.28 116.28 116

77 2.31 117.81 118

78 2.34 119.34 119

79 2.37 120.87 121

80 2.4 122.4 122

81 2.43 123.93 124

82 2.46 125.46 125

83 2.49 126.99 127

84 2.52 128.52 129

85 2.55 130.05 130

86 2.58 131.58 132

87 2.61 133.11 133

88 2.64 134.64 135

89 2.67 136.17 136

90 2.7 137.7 138

將表 2.5描點畫成曲線圖,隨濕度(R)改變電壓值(Vx)的變化:

0.5

1

1.5

2

2.5

3

20 30 40 50 60 70 80 90 100

Vx(v)

Vx(v)

圖圖圖圖 2.12溫度溫度溫度溫度()變化對應電壓值變化對應電壓值變化對應電壓值變化對應電壓值(Vx)變化變化變化變化

18

2.53 溫濕度感測器基本設計溫濕度感測器基本設計溫濕度感測器基本設計溫濕度感測器基本設計

由 ADC0838第 3、4腳分別連接熱敏電阻與濕度模組的訊號端,熱敏電阻

訊號端須同時連接 1K電阻,另一端則為電源端。

如下圖所示:

P2.0

P2.3

R1

1K

+5V

P2.1P2.2

J2

濕濕SENSOR

1

2

CH1

CH2

+5V

U4

ADC0838

161514

1817

13

19

12

123456789

20

10 11

CLKSARSDOUT

CSDIN

SE

V+

VREF

CH0CH1CH2CH3CH4CH5CH6CH7COM

VCC

DGND AGND

J3

溫濕SENSOR

1

2

CH1

CH2

圖圖圖圖 2.13 溫濕度感測器電路圖溫濕度感測器電路圖溫濕度感測器電路圖溫濕度感測器電路圖

2.6 繪圖型繪圖型繪圖型繪圖型 LCD

2.61 LCD液晶顯示器液晶顯示器液晶顯示器液晶顯示器

LCD為液晶顯示器(Liguid Crystal Display)具備低耗電量、價格低廉等優

點,目前已漸漸取代傳統的顯示裝置,在辦公機械、居家生活等電話設備上均有

使用。為了方便和微電腦連線使用,通常將LCD和驅動電路組合成為模組,因此

又稱為LCM或LCDM(LCD Module)。

LCD可分為兩型,一種是文字型LCD,另一種則是繪圖型LCD。本專題選用

繪圖型的優點是文字較大較易觀察,可自行設定,也可設定圖案,文字型字體小

觀察不易。其缺點是價格較高。

繪圖型LCD 是以點矩陣均勻分佈,顯示幕上每一點均能顯示,而文字型LCD

顯示幕上字元與字元之間預留空間則不能顯示。繪圖形LCD之解析度以行點數

19

(C)× 列點數列(R)表示,如128× 64表示顯示器有128行64列。

繪圖形LCD因使用控制晶片之不同,其顯示器的功能及控制方法略有差異,

而有混合型(以指令規劃為繪畫模式或文字模式顯示)和繪畫型的區別。我們在

此使用編號為LCG-128064之繪圖LCD,其解析度為128× 64,外觀如圖2.14、2.15。

圖圖圖圖 2.14 繪圖型繪圖型繪圖型繪圖型 LCD正面外觀正面外觀正面外觀正面外觀

圖圖圖圖 2.15 繪圖型繪圖型繪圖型繪圖型 LCD背面外觀背面外觀背面外觀背面外觀

2.62 LCD結構與指令結構與指令結構與指令結構與指令

LCG-128064結構方塊圖如圖2.16,驅動由晶片S680107控制,當致能線CSI

作動時左半部64行可以顯示資料,同理CS2作動時,則右半部64行可以顯示資

料。表2.6則是說明暫存器選擇與指令。

20

表表表表2.6 暫存器選擇及動作說明暫存器選擇及動作說明暫存器選擇及動作說明暫存器選擇及動作說明

D/I R/W 動作說明

0 0 寫入指令暫存器

0 1 讀取忙錄旗標及狀態暫存器

1 0 將資料寫入RAM

1 1 將資料從RAM讀出

圖圖圖圖 2.16 LCD內部結構內部結構內部結構內部結構方塊方塊方塊方塊圖圖圖圖

2.63 繪圖型繪圖型繪圖型繪圖型 LCD基本設計基本設計基本設計基本設計

7腳到 14腳共 8腳連接一排阻並與 8051 P0.0到 P0.7腳位相接,因 8051 P0.0

須提升電阻。2腳為電源端,1腳為接地端。19腳須連接一 300Ω電阻與 A1015

電晶體,電晶體集極還須連接一 300Ω電阻。如下圖所示:

21

LCM 128X64

127891011121314 3456151617181920

VS

SV

DD

D0

D1

D2

D3

D4

D5

D6

D7

VO

DI

R/-

WEC

S1

CS

2R

ES

ET

VE

ELE

D_A

LED

_K

R5

300

P0.

3

R4 300

P2.

4

Q1A1015

P1.4

P2.

6

P2.

5

P0.

6

+5V

P2.

7

P2.

2

P0.

2

P0.

5

P0.

1

P3.

3

+5V

P0.

4

P0.

0

R7 可可可可10K

P0.

7

圖圖圖圖 2.17 LCD電路圖電路圖電路圖電路圖

2.64 LCD圖案設計及程式碼轉換圖案設計及程式碼轉換圖案設計及程式碼轉換圖案設計及程式碼轉換

以下是我們利用繪圖軟體製作的簡單圖型,須將檔案存成.BMP(點陣圖檔):

圖圖圖圖 2.18 百分比圖型百分比圖型百分比圖型百分比圖型 圖圖圖圖 2.19 度數圖型度數圖型度數圖型度數圖型

圖圖圖圖 2.20 溫度計圖型溫度計圖型溫度計圖型溫度計圖型 圖圖圖圖 2.21 冒號圖型冒號圖型冒號圖型冒號圖型

圖圖圖圖 2.22 電子鐘字樣電子鐘字樣電子鐘字樣電子鐘字樣 圖圖圖圖 2.23 時間字樣圖型時間字樣圖型時間字樣圖型時間字樣圖型

22

將以上圖型放入 BMP轉機械碼程式,直接轉為組合語言,如下圖所示:

圖圖圖圖 2.24 BMP圖檔轉程式碼圖檔轉程式碼圖檔轉程式碼圖檔轉程式碼

即可得到所要圖型的組合語言程式碼。

23

第第第第三三三三章章章章 8051程式編寫程式編寫程式編寫程式編寫

3.1 流程圖流程圖流程圖流程圖

3.11 程式流程圖程式流程圖程式流程圖程式流程圖

圖圖圖圖3.1 程式流程圖程式流程圖程式流程圖程式流程圖

24

3.12 顯示時鐘程式流程圖顯示時鐘程式流程圖顯示時鐘程式流程圖顯示時鐘程式流程圖

圖圖圖圖3.2 顯示時鐘程式流程圖顯示時鐘程式流程圖顯示時鐘程式流程圖顯示時鐘程式流程圖

3.13 設定時間流程圖設定時間流程圖設定時間流程圖設定時間流程圖

圖圖圖圖3.3 設定時間流程圖設定時間流程圖設定時間流程圖設定時間流程圖

25

第四章第四章第四章第四章 電路實作電路實作電路實作電路實作

4.1 設計想法來源設計想法來源設計想法來源設計想法來源

曾經在微處理機實習課的時候有做過簡單的套件,溫度感測器連接 8051,

將溫度用四顆 LED顯示器來顯示,同時也可以顯示時間,利用簡單的按鈕切換

並設定時間。

圖圖圖圖 4.1 七段顯示氣溫度感測七段顯示氣溫度感測七段顯示氣溫度感測七段顯示氣溫度感測

經過多方面的資料蒐集,加上老師與學長的指導,我們決定改成用繪圖型

LCD面板來顯示溫度及時間,並再連接一個濕度感測模組,製作一個 LCD面板

顯示溫濕度的感測器。

26

4.2 電路設計方塊圖電路設計方塊圖電路設計方塊圖電路設計方塊圖

圖圖圖圖 4.2 電路設計方塊圖電路設計方塊圖電路設計方塊圖電路設計方塊圖

AT89C51 128X64

LCD

按鍵

ADC0838 溼度模組

熱敏電阻

LED

27

4.3 專題電路圖專題電路圖專題電路圖專題電路圖

圖圖圖圖 4.3 電路圖電路圖電路圖電路圖

28

第五章第五章第五章第五章 實驗結果實驗結果實驗結果實驗結果

5.1 實驗結果呈現實驗結果呈現實驗結果呈現實驗結果呈現

圖圖圖圖5.1 專題完成圖專題完成圖專題完成圖專題完成圖 圖圖圖圖5.2 開機畫面開機畫面開機畫面開機畫面

圖圖圖圖5.3 39LED顯示紅燈顯示紅燈顯示紅燈顯示紅燈 圖圖圖圖5.4 31 59%RH LED 顯示綠燈顯示綠燈顯示綠燈顯示綠燈

圖圖圖圖5.5 24顯示藍燈顯示藍燈顯示藍燈顯示藍燈 圖圖圖圖5.6 79%RH顯示紅燈顯示紅燈顯示紅燈顯示紅燈

29

圖圖圖圖5.7 47%RH顯示藍燈顯示藍燈顯示藍燈顯示藍燈 圖圖圖圖5.8 時間顯示時間顯示時間顯示時間顯示

LED燈設定範圍值為:

1. 溫度:

25到38為正常範圍值,亮綠燈;38以上則亮紅燈;25以下

則亮藍燈。

2. 濕度:

50%到70%RH為正常範圍值,亮綠燈;70%RH以上則亮紅燈;50%RH

則亮藍燈。

30

參參參參 考考考考 文文文文 獻獻獻獻

[1]李傳亮,周邊感測器專題製作,電子技術

[2]蔡朝洋,單晶片微電腦8051原理與應用,全華

[3]吳朗,感測與轉換原理元件與應用,全欣資訊圖書

[4]黃連進,Z80組合語言程式設計上冊,下冊,儒林圖書

[5]鄭一鴻,組合語言與程式設計,台灣培育教育

[6]徐偉智,組合語言入門實務,博碩文化

31

附錄附錄附錄附錄一一一一 START: MOV 60H,#2 MOV A,#40H ;Set Y Y 位址 Address >From 0 CALL WRITE_COMMAND1 CALL WRITE_COMMAND2 MOV A,#B8H ;Set Page From 0 CALL WRITE_COMMAND1 CALL WRITE_COMMAND2 MOV A,#C0H ;Set Display Start Line CALL WRITE_COMMAND1 CALL WRITE_COMMAND2 MOV A,#3FH ;Set Display ON CALL WRITE_COMMAND1 CALL WRITE_COMMAND2 MOV R3,#1 MOV 30H,#10001110B ;DS1302寫入致能 MOV 31H,#00000000B CALL WRDS MOV 30H,#10010000B ;DS1302充電致能 MOV 31H,#10100101B CALL WRDS MOV 30H,#10000000B ;DS1302開始時鐘 MOV 31H,#00000000B CALL WRDS CALL DELAY1S ;延時 JB P3.7,TEHU ;時鐘/溫溼度 切換鍵 JMP CLOCK TEHU: CALL SHOT ;顯示溼度 LCD主畫面 ;=============================================== ;====================溫溼度主程式=============== ;=============================================== L1: JB P3.7,L11 ;時鐘/溫溼度 切換鍵 JMP CLOCK L11: CALL TEMPDISPLAY CALL DELAY CALL JUDGE JMP L1 ;=============================================== ;================顯示溼度 LCD主畫面副程式======== ;=============================================== SHOT: CALL FULL_ON MOV 5FH,#01001000B ;設定 Y位址 Address 起始點

32

MOV DPTR,#SHOW_TEMP ;LCD顯示 溫度計圖型 MOV 5EH,#1 ;CS1顯示 MOV 5DH,#36 ;顯示 36個 Y 位址 MOV 5CH,#0 ;設頁數:0->8頁 MOV 5BH,#8 ;所以此字是 36X64個像素 MOV 5AH,#0 ;反白選擇 不反白 CALL SHOWC MOV 5FH,#01000000B ;設定 Y位址 Address 起始點 MOV DPTR,#SHOW_TU ;LCD顯示 "溫度:" 字型 MOV 5EH,#2 ;CS2顯示 MOV 5DH,#32 ;顯示 32個 Y 位址 MOV 5CH,#0 ;設頁數:0->2頁 MOV 5BH,#2 ;所以此字是 32X16個像素 MOV 5AH,#0 ;反白選擇 不反白 CALL SHOWC MOV 5FH,#01101110B ;設定 Y位址 Address 起始點 MOV DPTR,#SHOW_CC ;LCD顯示 "度 C" 字型 MOV 5EH,#2 ;CS2顯示 MOV 5DH,#16 ;顯示 16個 Y 位址 MOV 5CH,#0 ;設頁數:0->2頁 MOV 5BH,#2 ;所以此字是 16X16個像素 MOV 5AH,#0 ;反白選擇 不反白 CALL SHOWC MOV 5FH,#01000000B ;設定 Y位址 Address 起始點 MOV DPTR,#SHOW_RHU ;LCD顯示 "溼度:" 字型 MOV 5EH,#2 ;CS2顯示 MOV 5DH,#32 ;顯示 32個 Y 位址 MOV 5CH,#4 ;設頁數:4->6頁 MOV 5BH,#6 ;所以此字是 32X16個像素 MOV 5AH,#0 ;反白選擇 不反白 CALL SHOWC MOV 5FH,#01101110B ;設定 Y位址 Address 起始點 MOV DPTR,#SHOW_OO ;LCD顯示 "百分比" 字型 MOV 5EH,#2 ;CS2顯示 MOV 5DH,#16 ;顯示 16個 Y 位址 MOV 5CH,#4 ;設頁數:4->6頁 MOV 5BH,#6 ;所以此字是 16X16個像素 MOV 5AH,#0 ;反白選擇 不反白 CALL SHOWC RET TEMPDISPLAY: MOV CHANL,#17H ;第四通道 ACALL ATOD ;呼叫副程式,致能 ADC0804這顆 IC,並把數值讀進來 P2腳 MOV 52H,A2D MOV R3,#0 ;令字形及溫度值的指標為 0 TOOP1: CLR C ;設 C為 0 ACALL READTEMP ;讀溫度資料表,查表法

33

INC R3 ;把字形及溫度值的指標加 1 MOV A,52H ;把量測到的溫度數值放進去 A SUBB A,R1 ;R1是 18度到 40度查表法查到的數值,A 是量測到的 A/D 數值,A 減去 R1 JNC TOOP1 ;A減去 R1(從 18度到 40度),一直減到 R1(查表)比 A(量測)大 <=====C被借位變成 1 ;C被借位變成 1,往下做 ;此時溫度已找到 DEC R3 MOV 5FH,#01100001B ;設定 Y位址 Address 起始點 MOV 5EH,#2 ;CS2顯示 CALL INITDIS ;設定值讀入 MOV A,R3 MOV B,#10 DIV AB ;取出溫度十位數 CALL DISPLAY ;依數字來找出字型 MOV 5FH,#01101000B ;設定 Y位址 Address 起始點 MOV 5EH,#2 ;CS2顯示 CALL INITDIS ;設定值讀入 MOV A,R3 MOV B,#10 DIV AB MOV A,B ;取出溫度個位數 CALL DISPLAY ;依數字來找出字型 MOV CHANL,#0BH ;第四通道 ACALL ATOD ;呼叫副程式,致能 ADC0804這顆 IC,並把數值讀進來 P2腳 MOV 53H,A2D MOV R3,#00H ;令字形及溫度值的指標為 0 HOOP2: CLR C ;設 C為 0 ACALL READHUM ;讀溫度資料表,查表法 INC R3 ;把字形及溫度值的指標加 1 MOV A,53H ;把量測到的溫度數值放進去 A SUBB A,R1 ;R1是 18度到 40度查表法查到的數值,A是量測到的 A/D數值,A 減去 R1 JNC HOOP2 ;A減去 R1(從 18度到 40度),一直減到 R1(查表)比 A(量測)大 <=====C被借位變成 1 MOV R5,#6 ;C被借位變成 1,往下做 ;此時溫度已找到 DEC R3 ;多加了兩次要減回來 DEC R3 MOV A,R3 ADD A,#30 ;加 30 因為溼度是從 30度開始查表 MOV R3,A MOV 5FH,#01100001B ;設定 Y位址 Address 起始點 MOV 5EH,#2 ;CS2顯示 CALL INITDIS2 ;設定值讀入 MOV A,R3 MOV B,#10 DIV AB ;取出溼度十位數 CALL DISPLAY ;依數字來找出字型

34

MOV 5FH,#01101000B ;設定 Y位址 Address 起始點 MOV 5EH,#2 ;CS2顯示 CALL INITDIS2 ;設定值讀入 MOV A,R3 MOV B,#10 DIV AB MOV A,B ;取出溼度個位數 CALL DISPLAY ;依數字來找出字型 RET ; ==================== ; == A/D轉換副程式(溫) == ; ==================== ; 起動 ADC0804 ATOD: MOV R1,#5 ;選 ADC0838類比通道,串列輸入 MOV R2,CHANL ;ADC通道參數,通道 0(03H) SETB ADC_CS ;ADC控制初值 CLR ADC_DI ;ADC控制初值 CLR ADC_CLK ;ADC控制初值 CLR ADC_CS ;ADC控制初值 SET_MUX_CODE: MOV A,R2 ADC083X_LOOP1: RRC A ;串列輸入 ADC MOV ADC_DI,C SETB ADC_CLK ; CLK 上升邊緣,資料可寫入 NOP CLR ADC_CLK ; CLK 回復為 Low DJNZ R1,ADC083X_LOOP1 ;共 5次 SAMPLE_DATA: MOV R2,#8 ;ADC轉換值共 8 BIT ADC083X_LOOP2: SETB ADC_CLK ; CLK 上升邊緣,資料可讀出 NOP CLR ADC_CLK ; CLK 下降邊緣 MOV C,ADC_DO ;資料讀出 RLC A ;轉入 A DJNZ R2,ADC083X_LOOP2 ;共 8次 MOV A2D,A ;存入 ADC類比轉數位值 RET ; ==================== ; =讀溫度資料副程式 == ; ==================== READTEMP: MOV DPTR,#TABLE MOV A,R3 MOVC A,@A+DPTR MOV R1,A RET ; ==================== ; =讀濕度資料副程式 == ; ==================== READHUM: MOV DPTR,#TABLE2 MOV A,R3 MOVC A,@A+DPTR

35

MOV R1,A RET ;=============================================== ;====================時鐘主程式=============== ;=============================================== CLOCK: CALL INIT ;顯示 LCD時鐘 LOOP: JNB P3.7,LOA ;時鐘/溫溼度 切換鍵 JMP TEHU ;跳到 TEHU LOA: MOV 40H,#10000011B ;讀取分 CALL READTIME ;DS1302讀出 MOV 4EH,A ;比對值(分) MOV B,A XRL A,51H ;判斷分值有無變化,舊 A->51H,51H再比對新的 A, JZ LO0 ;相等 則 A=0跳 LO0,不相等往下行 MOV 51H,B ; CALL TIMEDISPLAY ;呼叫顯示時間副程式,每隔一分鐘顯示一次時間 LJMP LO00 LO0: MOV 51H,B LO00: JB P3.4,LO2 ;是否按下設定時間鍵,否則跳 LO2,是則往下 JNB P3.4,$ ;等待放開按鍵 LJMP SETIME ;跳到 SETIME執行 LO2: DJNZ R3,LLBACK ;R3減一若=0往下,不等於 0跳 LLBACK MOV R3,#1 ;R3<=1 MOV 40H,#10000001B ;讀取秒 CALL READTIME ;DS1302讀出 MOV B,A XRL A,50H ;判斷秒值有無變化,舊 A->50H,50H再比對新的 A, JZ LBACK ;相等 則 A=0跳 LBACK,不相等往下行 MOV 50H,B MOV 5FH,#01001110B ;每隔一秒鐘鬧鐘顯示一次: MOV DPTR,#SHOW_DOT ;查點的圖型表 MOV 5EH,#2 ;CS2顯示 MOV 5DH,#7 ;顯示 7個 Y 位址 MOV 5CH,#3 ;設頁數:3->5頁 所以此字是 7X16個像素 MOV 5BH,#5 MOV 5AH,#0 ;反白選擇 不反白 CALL SHOWC ;呼叫顯示副程式 MOV R3,#254 CALL JUDGE LLBACK: MOV R6,#100 CALL DELAYM LJMP LOOP

36

LBACK: MOV 50H,B MOV 5FH,#01001110B ;每隔一秒鐘鬧鐘顯示一次 NOT: MOV DPTR,#SHOW_NOT ;查 NOT點的圖型表 MOV 5EH,#2 ;CS2顯示 MOV 5DH,#7 ;顯示 7個 Y 位址 MOV 5CH,#3 ;設頁數:3->5頁 所以此字是 7X16個像素 MOV 5BH,#5 MOV 5AH,#0 ;反白選擇 不反白 CALL SHOWC ;呼叫顯示副程式 LJMP LOOP DELAYM: MOV B,R6 DL: MOV R7,#6 DJNZ R7,$ DJNZ R6,DL MOV R6,B RET ;===================== ;===目前時間顯示副程式 ;===================== TIMEDISPLAY: MOV 5FH,#01000000B ;設定 Y位址 Address 起始點 MOV 5EH,#2 ;CS2顯示 CALL INITDIS3 ;設定值讀入 MOV 40H,#10000101B ;讀取時 CALL READTIME ;DS1302讀出 MOV 34H,A ;設定時間參考值(時) MOV B,A ;顯示十位 SWAP A ANL A,#00001111B CALL DISPLAY ;依數字來找出字型 MOV 5FH,#01000111B ;設定 Y位址 Address 起始點 MOV 5EH,#2 ;CS2顯示 CALL INITDIS3 ;設定值讀入 MOV A,B ;顯示個位 ANL A,#00001111B CALL DISPLAY ;依數字來找出字型 MOV 5FH,#01010101B ;設定 Y位址 Address 起始點 MOV 5EH,#2 ;CS2顯示 CALL INITDIS3 ;設定值讀入 MOV 40H,#10000011B ;分 CALL READTIME ;DS1302讀出 MOV 33H,A ;設定時間參考值(分) MOV B,A ;顯示十位 SWAP A ANL A,#00001111B CALL DISPLAY ;依數字來找出字型 MOV 5FH,#01011100B ;設定 Y位址 Address 起始點 MOV 5EH,#2 ;CS2顯示 CALL INITDIS3 MOV A,B ;顯示個位 ANL A,#00001111B CALL DISPLAY ;依數字來找出字型 RET INITDIS:

37

MOV 5DH,#7 ;顯示 7個 Y 位址 MOV 5CH,#0 ;設頁數:0->2頁 所以此字是 7X16個像素 MOV 5BH,#2 MOV 5AH,#0 ;反白選擇 不反白 RET INIT: CALL FULL_ON CALL TIMEDISPLAY MOV 5FH,#01000000B ;設定 Y位址 Address 起始點 MOV DPTR,#SHOW_SET ;LCD顯示 時間設定 MOV 5EH,#1 ;CS1顯示 MOV 5DH,#32 ;顯示 32個 Y 位址 MOV 5CH,#0 ;設頁數:0->8頁 MOV 5BH,#8 ;所以此字是 32X64個像素 MOV 5AH,#0 ;反白選擇 不反白 CALL SHOWC MOV 5FH,#01100000B ;設定 Y位址 Address 起始點 MOV DPTR,#SHOW_TE ;LCD顯示 時間設定 MOV 5EH,#1 ;CS1顯示 MOV 5DH,#32 ;顯示 32個 Y 位址 MOV 5CH,#3 ;設頁數:3->5頁 MOV 5BH,#5 ;所以此字是 32X16個像素 MOV 5AH,#0 ;反白選擇 不反白 CALL SHOWC RET INITDIS2: MOV 5DH,#7 ;顯示 7個 Y 位址 MOV 5CH,#4 ;設頁數:4->6頁 MOV 5BH,#6 ;所以此字是 7X16個像素 MOV 5AH,#0 ;反白選擇 不反白 RET INITDIS3: MOV 5DH,#7 ;顯示 7個 Y 位址 MOV 5CH,#3 ;設頁數:3->5頁 MOV 5BH,#5 ;所以此字是 7X16個像素 MOV 5AH,#0 ;反白選擇 不反白 RET ;====================== ;依數字來找出字型====== ;====================== DISPLAY: CJNE A,#0,FO0 ;若 A=0 MOV DPTR,#SHOW_0 ;表示找出對應的字型 CALL SHOWC RET FO0:

38

CJNE A,#1,FO1 ;若 A=1 MOV DPTR,#SHOW_1 ;表示找出對應的字型 CALL SHOWC RET FO1: CJNE A,#2,FO2 ;同上 MOV DPTR,#SHOW_2 CALL SHOWC RET FO2: CJNE A,#3,FO3 ;同上 MOV DPTR,#SHOW_3 CALL SHOWC RET FO3: CJNE A,#4,FO4 ;同上 MOV DPTR,#SHOW_4 CALL SHOWC RET FO4: CJNE A,#5,FO5 ;同上 MOV DPTR,#SHOW_5 CALL SHOWC RET FO5: CJNE A,#6,FO6 ;同上 MOV DPTR,#SHOW_6 CALL SHOWC RET FO6: CJNE A,#7,FO7 ;同上 MOV DPTR,#SHOW_7 CALL SHOWC RET FO7: CJNE A,#8,FO8 ;同上 MOV DPTR,#SHOW_8 CALL SHOWC RET FO8: CJNE A,#9,FO9 ;同上 MOV DPTR,#SHOW_9 CALL SHOWC FO9: RET ;======================= ;設定目前時間副程式===== ;======================= SETIME: MOV 5FH,#01001110B ;每隔一秒鐘顯示一次: MOV DPTR,#SHOW_DOT ;顯示: MOV 5EH,#2 ;CS2顯示 MOV 5DH,#7 ;顯示 7個 Y 位址 MOV 5CH,#3 ;設頁數:3->5頁 MOV 5BH,#5 ;所以此字是 7X16個像素

39

MOV 5AH,#0 CALL SHOWC MOV A,34H ;設定時間參考值(時)BCD轉十進位,DS1302讀出的碼是BCD碼 ANL A,#11110000B ; SWAP A MOV B,#10 MUL AB MOV B,A MOV A,34H ANL A,#00001111B ADD A,B MOV 34H,A ;再次存入 34H MOV A,33H ;設定時間參考值(分)BCD轉十進位,DS1302讀出的碼是BCD碼 ANL A,#11110000B SWAP A MOV B,#10 MUL AB MOV B,A MOV A,33H ANL A,#00001111B ADD A,B MOV 33H,A ;再次存入 33H SETTLOOP: MOV 59H,#1 ;設定顯示(時)要反白 MOV 58H,#0 ;設定顯示(分)不反白 JB P3.5,SETTL1 ;上鍵按下,(時)加 1 JNB P3.5,$ INC 34H MOV A,34H CJNE A,#24,SETTL1 ;加超過 23,(時)變 0 MOV 34H,#0 SETTL1: JB P3.6,SETTL2 ;下鍵按下,(時)減 1 JNB P3.6,$ DEC 34H MOV A,34H CJNE A,#FFH,SETTL2 ;加低過 0,(時)變 23 MOV 34H,#23 SETTL2: JB P3.4,SETTL3 ;若再按下設定時間鍵,開始設(分)跳 SETTL1_0 JNB P3.4,$ JMP SETTL1_0 SETTL3: CALL SETDISPLAY ;呼叫設定時間之顯示副程式 JMP SETTLOOP SETTLOOP2: MOV 59H,#0 ;設定顯示(時)不反白 MOV 58H,#1 ;設定顯示(分)要反白 JB P3.5,SETTL1_0 ;上鍵按下,(分)加 1 JNB P3.5,$ INC 33H MOV A,33H CJNE A,#60,SETTL1_0 ;加超過 59,(分)變 0 MOV 33H,#0 SETTL1_0:

40

JB P3.6,SETTL2_0 ;下鍵按下,(分)減 1 JNB P3.6,$ DEC 33H MOV A,33H CJNE A,#FFH,SETTL2_0 ;加低過 0,(分)變 59 MOV 33H,#59 SETTL2_0: JB P3.4,SETTL3_0 ;若再按下設定時間鍵, 跳 SETTBACK JNB P3.4,$ JMP SETTBACK SETTL3_0: CALL SETDISPLAY ;呼叫設定時間之顯示副程式 JMP SETTLOOP2 SETTBACK: MOV A,34H ;34H、33H轉回 BCD碼,存入 DS1302 MOV B,#10 DIV AB ANL A,#00001111B SWAP A MOV 34H,A MOV A,B ANL A,#00001111B ADD A,34H MOV 34H,A MOV A,33H MOV B,#10 DIV AB ANL A,#00001111B SWAP A MOV 33H,A MOV A,B ANL A,#00001111B ADD A,33H MOV 33H,A CALL WDATO ;存入 DS1302 MOV 59H,#0 ;不反白 MOV 58H,#0 CALL TIMEDISPLAY JMP LOOP ;=========================== ;設定時間之顯示副程式======= ;=========================== SETDISPLAY: MOV 5FH,#01000000B ;設定 Y位址 Address 起始點 MOV 5EH,#2 ;CS2顯示 CALL INITDIS3 MOV 5AH,59H ;反白選擇 MOV A,34H MOV B,#10 DIV AB CALL DISPLAY MOV 5FH,#01000111B ;設定 Y位址 Address 起始點 MOV 5EH,#2 ;CS2顯示 CALL INITDIS3 MOV 5AH,59H ;反白選擇 MOV A,B CALL DISPLAY

41

MOV 5FH,#01010101B ;設定 Y位址 Address 起始點 MOV 5EH,#2 ;CS2顯示 CALL INITDIS3 MOV 5AH,58H ;反白選擇 MOV A,33H MOV B,#10 DIV AB CALL DISPLAY MOV 5FH,#01011100B ;設定 Y位址 Address 起始點 MOV 5EH,#2 ;CS2顯示 CALL INITDIS3 MOV 5AH,58H ;反白選擇 MOV A,B CALL DISPLAY RET ;============================ ;========LED顯示副程式======= ;============================ JUDGE: MOV A,52H CLR C SUBB A,#155 ;155為 38度 C的數位值 JNC TOVER ;當超過時跳 TOVER ,否則程式往下 MOV A,52H CLR C SUBB A,#123 ;123為 25度 C的數位值 JC TDOWN ;當太低時跳 TDOWN ,否則程式往下 SETB P1.5 ;不高出 38度 C 也不低於 25度 C則亮綠燈 CLR P1.6 SETB P1.7 JMP HUT TOVER: CLR P1.5 ;過高亮紅燈 SETB P1.6 SETB P1.7 JMP HUT TDOWN: SETB P1.5 ;過低亮藍燈 SETB P1.6 CLR P1.7 JMP HUT HUT: MOV A,53H CLR C SUBB A,#115 ;115為 70%的數位值 JNC HOVER ;當超過時跳 HOVER ,否則程式往下 MOV A,53H CLR C SUBB A,#84 ;84為 50%的數位值 JC HDOWN ;當太低時跳 HDOWN ,否則程式往下

42

SETB P3.0 ;不高出 70% 也不低於 50%則亮綠燈 CLR P3.1 SETB P3.2 JMP JOK HOVER: CLR P3.0 ;過高亮紅燈 SETB P3.1 SETB P3.2 JMP JOK HDOWN: SETB P3.0 ;過低亮藍燈 SETB P3.1 CLR P3.2 JMP JOK JOK: RET TABLE: DB 64,66,68,70,72,74,76,78,80,83,85,87,90,92,95,98,101,103,105 DB 108,110,112,115,118,120,123,125,128,130,133,35,138,140,142,145, DB 148,150,152,155,157,159 TABLE2: DB 52,53,55,56,58,59,61,62,63 DB 65,66,68,70,72,73,75,77,78 DB 80,82,84,85,87,89,91,92,94 DB 96,98,99,101,102,104,105,106 DB 108,109,111,112,113,115,116,117 DB 118,119,120,121,122,123,124,125 DB 126,128,129,131,132,134,135,136,138,139 SHOW_DOT: DB 00H,00H,60H,60H,00H,00H,00H,00H,00H,06H,06H,00H,00H,00H; SHOW_NOT: DB 00H,00H,00H,00H,00H,00H,00H,00H,00H,00H,00H,00H,00H,00H; SHOW_TEMP: DB 00H,00H,00H,00H,00H,00H,00H,F0H,F0H,38H,18H,1CH,0CH,0CH,0CH,0EH,06H,06H,06H,06H,0EH,0CH,0CH,0CH,1CH,18H,38H,F0H,F0H,00H,00H,00H; DB 00H,00H,00H,00H,00H,00H,00H,00H,00H,00H,00H,FFH,FFH,0CH,0CH,0CH,0CH,00H,00H,00H,00H,FCH,FCH,FCH,00H,00H,00H,00H,00H,00H,00H,FFH; DB FFH,00H,00H,00H,00H,00H,00H,00H,00H,00H,00H,00H,00H,00H,00H,FFH,FFH,63H,63H,63H,63H,00H,00H,00H,00H,FFH,FFH,FFH,00H,00H,00H,00H; DB 00H,00H,00H,FFH,FFH,00H,00H,00H,00H,00H,00H,00H,00H,00H,00H,00H,00H,00H,00H,FFH,FFH,0CH,0CH,0CH,0CH,00H,00H,00H,00H,FFH,FFH,FFH; DB 00H,00H,00H,00H,00H,00H,00H,FFH,FFH,00H,00H,00H,00H,00H,00H,00H,00H,00H,00H,00H,00H

43

,80H,80H,FFH,FFH,00H,00H,00H,00H,00H,00H,00H; DB 00H,FFH,FFH,FFH,00H,00H,00H,00H,00H,00H,00H,FFH,FFH,80H,80H,00H,00H,00H,00H,00H,E0H,F8H,FCH,3EH,0FH,07H,07H,07H,03H,00H,00H,00H; DB 00H,80H,C0H,E0H,E0H,FFH,FFH,FFH,E0H,C0H,80H,00H,00H,00H,00H,03H,03H,03H,07H,0FH,3EH,FCH,F8H,E0H,1FH,FFH,FFH,C0H,80H,00H,00H,00H; DB 00H,00H,00H,00H,02H,0FH,3FH,7FH,7FH,7FH,7FH,7FH,3FH,3FH,0FH,03H,00H,00H,00H,00H,00H,00H,00H,80H,C0H,FFH,FFH,1FH,00H,00H,01H,03H; DB 07H,0FH,0EH,1EH,1CH,3CH,38H,78H,70H,70H,70H,70H,70H,70H,70H,70H,70H,70H,70H,70H,38H,38H,3CH,1CH,1EH,0EH,0FH,07H,03H,01H,00H,00H; SHOW_SET: DB 00H,00H,00H,00H,60H,F0H,B0H,B0H,F0H,60H,E0H,F0H,70H,70H,F0H,E0H,E0H,F0H,F0H,90H,90H,10H,40H,60H,F0H,F0H,F0H,00H,00H,00H,00H,00H; DB 00H,00H,00H,00H,07H,0FH,09H,09H,0FH,07H,07H,0FH,0EH,0EH,0FH,07H,04H,0DH,09H,08H,0FH,07H,00H,00H,0FH,0FH,0FH,00H,00H,00H,00H,00H; DB 00H,00H,00H,00H,00H,00H,00H,00H,20H,38H,78H,54H,74H,7CH,FCH,FEH,FEH,FEH,38H,18H,18H,00H,00H,00H,00H,00H,00H,00H,00H,00H,00H,00H; DB 00H,00H,00H,00H,00H,00H,00H,00H,00H,00H,01H,0FH,0FH,1FH,3FH,2BH,2FH,2FH,3BH,38H,30H,00H,00H,00H,00H,00H,00H,00H,00H,00H,00H,00H; DB 00H,00H,00H,00H,00H,00H,00H,40H,40H,40H,42H,42H,42H,52H,FAH,FEH,46H,46H,62H,60H,40H,00H,00H,00H,00H,00H,00H,00H,00H,00H,00H,00H; DB 00H,00H,00H,00H,00H,00H,00H,00H,00H,00H,00H,00H,08H,1CH,1FH,0FH,00H,00H,00H,00H,00H,00H,00H,00H,00H,00H,00H,00H,00H,00H,00H,00H; DB 00H,00H,00H,00H,00H,00H,00H,40H,F0H,FCH,FFH,F7H,F7H,F4H,F6H,FFH,EFH,EFH,FEH,FAH,28H,08H,00H,00H,00H,00H,00H,00H,00H,00H,00H,00H; DB 00H,00H,00H,00H,00H,00H,00H,00H,04H,07H,07H,03H,03H,07H,06H,07H,07H,07H,06H,06H,04H,00H,00H,00H,00H,00H,00H,00H,00H,00H,00H,00H; SHOW_RHU: DB 00H,00H,00H,48H,90H,00H,A8H,58H,A8H,08H,A8H,58H,A8H,00H,00H,F0H,50H,50H,F0H,58H,50H,F0H,50H,50H,00H,00H,00H,30H,30H,00H,00H,00H; DB 00H,00H,00H,04H,1EH,00H,15H,15H,15H,1FH,15H,15H,11H,00H,18H,07H,10H,14H,15H,0DH,0DH,15H,14H,10H,00H,00H,00H,0CH,0CH,00H,00H,00H; SHOW_TU: DB 00H,00H,00H,48H,90H,00H,F8H,88H,A8H,98H,A8H,F8H,00H,00H,00H,F0H,50H,50H,F0H,58H,50H,F0H,50H,50H,00H,00H,00H,30H,30H,00H,00H,00H; DB 00H,00H,00H,04H,1EH,10H,1EH,12H,1EH,12H,1EH,12H,1EH,00H,18H,07H,10H,14H,15H,0DH,0DH,15H,14H,10H,00H,00H,00H,0CH,0CH,00H,00H,00H; SHOW_TE: DB 00H,00H,00H,F0H,90H,F0H,40H,50H,50H,78H,D0H,50H,40H,00H,F8H,A8H,A8H,F8H,80H,80H,F8H,A8H,A8H,F8H,00H,00H,00H,30H,30H,00H,00H,00H;

44

DB 00H,00H,00H,0FH,04H,0FH,00H,05H,09H,11H,1FH,01H,01H,00H,1FH,00H,00H,0FH,0AH,0AH,0FH,00H,10H,1FH,00H,00H,00H,0CH,0CH,00H,00H,00H; SHOW_0: DB 00H,E0H,10H,10H,10H,E0H,00H,00H,07H,08H,08H,08H,07H,00H; SHOW_1: DB 00H,00H,20H,F0H,00H,00H,00H,00H,00H,08H,0FH,08H,00H,00H; SHOW_2: DB 00H,20H,10H,10H,10H,E0H,00H,00H,08H,0CH,0AH,09H,0CH,00H; SHOW_3: DB 00H,20H,90H,90H,60H,00H,00H,00H,08H,08H,08H,07H,00H,00H; SHOW_4: DB 00H,00H,80H,60H,F0H,00H,00H,00H,03H,02H,02H,0FH,02H,00H; SHOW_5: DB 00H,40H,70H,90H,10H,00H,00H,00H,08H,08H,08H,07H,00H,00H; SHOW_6: DB 00H,C0H,20H,90H,90H,00H,00H,00H,07H,09H,08H,08H,07H,00H; SHOW_7: DB 00H,20H,10H,10H,90H,70H,00H,00H,00H,00H,0EH,01H,00H,00H; SHOW_8: DB 00H,60H,90H,90H,60H,00H,00H,00H,06H,09H,08H,09H,06H,00H SHOW_9: DB 00H,E0H,10H,10H,10H,E0H,00H,00H,00H,09H,09H,05H,03H,00H; SHOW_DOT0: DB 00H,00H,60H,60H,00H,00H,00H,00H,00H,06H,06H,00H,00H,00H; SHOW_OO: DB 00H,00H,00H,E0H,90H,70H,A0H,60H,10H,00H,00H,00H,00H,00H,00H,00H,00H,00H,00H,00H,08H,06H,01H,0EH,09H,07H,00H,00H,00H,00H,00H,00H; SHOW_CC: DB 00H,00H,00H,E0H,90H,70H,C0H,20H,10H,10H,20H,70H,00H,00H,00H,00H,00H,00H,00H,00H,00H,00H,03H,04H,08H,08H,08H,04H,00H,00H,00H,00H; END