47
自動控制工程學系專題製作 超音波測距器 Ultrasonic Ranging System 指導教授:蘇文彬 生:蘇偗華 周峻逸 中華民國九十五年六月十二日

逢 甲 自動控制工程學系專題製作 ... - fcu.edu.t · 我們所介紹的超音波測距儀,暫時先不把溫度的影響因素給考量進來。 超音波在空氣中的速度是多少?如果是在常溫中,大約是每秒340

  • Upload
    others

  • View
    0

  • Download
    0

Embed Size (px)

Citation preview

  • 逢 甲 大 學

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

    專 題 論 文

    超音波測距器

    Ultrasonic Ranging System

    指導教授:蘇文彬

    學 生:蘇偗華

    周峻逸

    中 華 民 國 九 十 五 年 六 月 十 二 日

  • i

    感謝

    感謝逢甲自動控制工程學系的師長、同學在學業上的指導;特別是專題的

    指導教授蘇文彬老師,給我們充分的空間與支持,在我們遇到瓶頸及問題時,給

    予 我們適時的解答與幫助,使我們受益匪淺。另外要感謝賴啟智老師,他在我

    們遇到問題去請教他時,熱心的幫忙給我們研究的方向,還 讓我們能順利的作出

    這個專題。另外也在此感謝一些8051討論區的版主的大力幫忙,在此感謝曾經

    幫助過我們的人,謝謝你們。

  • ii

    中文摘要

    我們所做這個測距器的基本原理是應用超音波發射器,利用持續不斷發射

    出超音波的裝置,對著物體發射出超音波,撞擊到物體上的超音波有些會反射

    回到原發射點, 經由計算時間差除以二之後,再 乘 以 音 速 便可得知該物體

    跟我們的距離。市面上所售的倒車雷達,即是利用此原理還設計改良,所以我

    們使用超音波來代替雷達波,經過 8051 單晶片的運算,一樣也可以得到不錯

    的效果。

  • iii

    Abstract

    The ultrasound radar system is on the basis of the “Doppler Effect”. In the

    incessant acoustic wave actuator, emitting to object. Some acoustic wave which

    impacted the object would reflect from point of the previous emitter. After calculating,

    we know the velocity of object.

    The ultrasound radar sold on the marketing is expensive, so we use the ultrasonic

    instead of radar wave. By MSC-51 logical operation can get a surefire result.

  • iv

    目錄

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

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

    Abstract……………………………………………………………………………iii

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

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

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

    第一章 緒論…………………………………………………………………………1

    1.1 研究背景與動機……………………………………………………………1

    第二章 理論基礎……………………………………………………………………3

    2.1 超音波原理…………………………………………………………………3

    2.1.1 超音波原理概論 ………………………………………………………3

    2.1.2 超音波的特性……………………………………………………………3

    2.1.3 超音波感測器的接收與產生……………………………………………4

    2.1.4 超音波的應用……………………………………………………………5

    2.2 都普勒原理…………………………………………………………………7

    2.2.1 都普勒效應………………………………………………………………7

    2.2.2 都普勒效應的應用………………………………………………………8

    2.3 8051 單晶片原理簡介………………………………………………………9

    2.3.1 微處理器概述…………………………………………………………9

    2.3.2 89C51 原理簡介………………………………………………………10

    第三章 硬體架構…………………………………………………………………16

    3.1 超音波發射電路 …………………………………………………………16

    3.2 超音波接收電路……………………………………………………………16

    3.3 8051 控制電路……………………………………………………………17

    第四章 軟體架構…………………………………………………………………18

    4.1 89C51 程式發展流程………………………………………………………18

  • v

    4.2 89C51 暫存器與資料記憶體………………………………………………19

    4.3 89C51 計時/計數器………………………………………………………22

    4.4 89C51 中斷服務與中斷設定………………………………………………24

    第五章 實驗結果與討論…………………………………………………………27

    5.1 實驗(一) 有效距離實驗…………………………………………………27

    5.1.1 實驗背景………………………………………………………………27

    5.1.2 實驗結果………………………………………………………………27

    5.2 實驗(二) 待測物角度實驗………………………………………………27

    5.2.1 實驗背景 ………………………………………………………………27

    5.2.2 實驗結果………………………………………………………………28

    第六章 結論與未來展望…………………………………………………………29

    參考資料……………………………………………………………………………30

    附錄一………………………………………………………………………………31

    附錄二………………………………………………………………………………32

  • vi

    圖目錄

    圖一.平板光波測距儀……………………………………………………………1

    圖二.雷射測距槍…………………………………………………………………2

    圖三.雷射測距望遠鏡……………………………………………………………2

    圖四.空氣溫差形成的聲音行進方向扭曲………………………………………7

    圖五.風向對於聲音行進的影響…………………………………………………8

    圖六.聲音波長因為都普勒效應形成的頻率高低差異…………………………8

    圖七.微處理器的組成……………………………………………………………9

    圖八.8051 內部結構……………………………………………………………11

    圖九.8051 腳位圖………………………………………………………………13

    圖十.發射電路圖…………………………………………………………………16

    圖十一.接收電路圖……………………………………………………………17 圖十二.控制電路圖……………………………………………………………17

    圖十三.資料記憶體中及結構圖…………………………………………………21

    圖十四.完整電路洗版圖…………………………………………………………31

  • vii

    表目錄

    表一 .暫存器位置表……………………………………………………………20 表二 .8051 單晶片中斷源,其中斷向量、旗標名稱與該旗標所屬暫存器表…25

    表三 .實驗一結果表……………………………………………………………27

    表四 .實驗二結果表……………………………………………………………28

  • 1

    第一章 緒論

    1.1 研究背景與動機

    在台灣地區,因地峽人多的關係,往往都會與人、車和東西所碰撞。而本專

    題就是在防止這些碰撞所發生,讓在搬運物品前可以使用超音波測距儀來測量空

    間。在倒車時也可以先測量或者裝置在車子的後面,在即將發生碰撞,以鳴音來

    緊告駕駛車輛的主人,便可以避免發生差撞。而在醫學方面,可以裝置在輪椅上

    面以供偵測前方障礙物,來提醒身心障礙朋友,小心路況。

    目前超音波的應用比較熱門的就屬汽車的倒車雷達了,而汽車的倒車雷達就

    是一種超音波測距儀,只是它的構造比以下所介紹的超音波測距儀簡單而已;接下

    來我們就要先來說說一些理論了。

    測距器有分為許多種:有雷射測距器,超音波測距器…等等,而雷射測距器

    又分為許多種:有平板光波測距儀圖一、雷射測距槍圖二、雷射測距望遠鏡圖三…

    等等。

    圖一 平板光波測距儀

  • 2

    圖二 雷射測距槍

    圖三 雷射測距望眼鏡

    但是因為雷達的價格昂貴,在材料上的取得也較不容易,所以本專題運用價

    格低廉的超音波來取代雷達波,代入都普勒效應,再搭配我們在學校所學的8051

    單晶片原理,作出實用而且可以做出一樣效果的超音波測速器。

    為何使用超音波,因為

    (1)由於波長短所以指向性強,能量集中。

    (2)振動數高,可得巨大的加速度。

    (3)大部分的音響功率碰到音響阻抗不同的物質境界面將被反射。

    利用此特性可藉以做物質的探知和距離的測試,等優點。故本組以超音波來製作。

  • 3

    第二章 理論基礎

    2.1 超音波原理

    2.1.1 超音波原理概論

    為什麼會稱它為超音波呢?簡單的說就是音頻超過了人類耳朵所能夠聽到的

    範圍,一般而言是指聲音超過了 20khz 以上時就稱它為超音波;常常有人會誤以為

    超音波就是超音速,其實不然,超音速所指的是超過了聲音的速度,而超音波不管

    其頻率為何,其速度終究還是等於音速。

    而聲音的速度是會受到傳播的介質影響,介質的密度越高則聲音傳播的速度

    越快,我們所要製作的測距儀是在空氣中使用,而空氣的密度又會受到溫度的影響,

    所以如果要求測距儀的精準度要高,則就需要把外在環境的溫度考慮進去,但本次

    我們所介紹的超音波測距儀,暫時先不把溫度的影響因素給考量進來。

    超音波在空氣中的速度是多少?如果是在常溫中,大約是每秒 340 公尺,因此

    我們知道了音速後利用超音波發射器把聲音傳播出去後,再用超音波接收器按收

    反射回來的聲音訊號,然後計算發射後到接收時的時間,就可以得到距離了,也就

    是 R(距離)=T(時間)/(1/V(速度)),但因我們接收到的是超音波的反射波,所以我們

    需把計算出的距離除以 2,這樣才是正確的距離了。

    2.1.2 超音波的特性

    超音波是一種聲波,可是耳朵聽不到,工業用檢測使用高頻率超音波在空氣

  • 4

    中聲波衰減大可以視為不存在。其具有以下特性:

    一. 波長較短及音束指向性好

    一般電視機之電波長達數米,工業用檢測超音波是數毫米,光的波長更短。

    最大的特點是指向性能強,基本上這可以認為是直線進行的。這時音束能

    量在一定方向集中發射;根據這種特性,可以正確的檢測缺陷位置。

    二. 反射特性強

    超音波在彈性介質中傳播時,遇到缺陷獲異常之界面時會有不良的反射,

    得到回波顯示而反射特性正是脈沖反射法檢測之基礎。

    三. 傳播特性佳

    超音波在彈性介質中傳播時,質點振動位移小振動高,因此聲壓聲強均比

    可聞聲波大,傳播距離遠且可檢測範圍大。

    2.1.3 超音波感測器的接收與產生

    由於本測距儀採用了單晶片 IC 作控制,而我們這次所用的 89c51 的功能比

    起 8051 而更為強大,所以就連 40KHz 的訊號都直接由單晶片(P3.3)提供,這樣

    一來電路也可以化簡不少了。而在超音波的接收方面,超音波的信號經超音波接

    收器接收後,經第一級 OPAmp 放大了 10 倍後,再送入第二級的 OPAmp 放大

    100 倍,這樣一來總增益就達到了 1000 倍(30db),測距在 10 米內的範圍 1000 倍

    的電壓增益就足以應付了,訊號經過了放大後再由 1N60 組成的整流電路整流,

  • 5

    再送入電壓比較器。

    2.1.4 超音波的應用

    超音波(Ultra Sonic)是近年來曝光率相當高的名詞,目前市面上可見的超音波

    科技產品包羅萬象,舉家電產業(例如洗衣機、冷氣機、眼鏡清洗機)、金屬製

    品(金屬熔接)、電子業(IC 製造)與生物、醫療領域(超音波檢驗、超音波碎

    石)都能見到這項技術的應用,且其研究領域內涵卻仍然不斷地在創新與發展

    中。超音波是一種人類耳朵無法聽到的頻率的音波。所謂的「音波」可以解釋為

    人的耳朵可以感受到的物理震動(同理「可見光」則可以解釋為人的眼睛可以感

    受到的電磁震動),這種震動經由介質,也就是空氣,傳遞到人的耳朵,震動人

    的耳膜,引發聽覺。這段過程當然無處不在,可是人的聽力卻只能接收每秒兩萬

    次以下的震動。頻率高於此數的震動,不論其能量有多大,人類一蓋充耳不聞,

    所以我們稱此類震動為超音波。超音波有以下幾項重要的特色:

    1.超音波震動純粹為物理震動,且頻率高於人耳可以辨知的範圍,所以不會

    危害人體或影響生活,其震動頻率又不會太高,所以可以引發其他金屬材料與其

    共振,藉此過程進一步將聲波震動轉化為機械動能提供輸出,若對水這樣的液體

    引入超音波震動,則由於液體的黏滯效應,這種高頻振動會在水中產生許多小真

    空泡(直徑大約是幾萬分之一公分),而這些真空泡碎裂時,可以在局部產生相

    當於 1000 大氣壓的壓力。有了這種超強的振動力,還有什麼污垢不能被振掉。

  • 6

    別說是洗衣服了,現在連 IC 晶圓的清潔,都大力仰賴超音波。

    2.由於其波動的特性,所以可以利用大家熟悉的波動力學加以分析。因此只

    要配合二維或三維的波動方程式分析技巧,便可以將應用於探測或量測用途上,

    像是雷達一般。將超音波打入水中,再藉著接收其回波,來探索水中物體之所在,

    這又叫聲納(Sonar)。

    整體來說,超音波的應用範圍,可以歸納為下列幾項:

    1.利用超音波來進行探測:這包括超音波聲納、魚群探勘、海底探勘、超音

    波流速流量計、超音波測距。

    利用超音波於醫療設備:包括超音波熱療、超音波影像掃描、超音波碎石機、超

    音波顯微鏡。

    2.利用超音波於訊號感測上:包括超音波壓力感測、超音波膜厚感測、超音

    波加速度感測、超波震動感測。

    3.利用超音波於工業加工:包括超音波金屬焊接、超音波塑料焊接、超音洗

    淨機、超音波霧化器、超音波加溼器。

    利用超音波於動力驅動:如超音波馬達,這種馬達可能可以做得和鉛筆一般

    粗細,但是卻有和一般電風扇一樣大小的輸出馬力。超音波感測器之用途很廣,

    常長作為定位、探傷等應用

    這些應用是基於超音波固、液體之傳播衰減小 ,穿透力強,對雜質或界面

  • 7

    之反射極為顯著而來。在氣體中約為 104KHz,在氣體中約為 104KHz 超音波之

    感測更可藉著與傳播介質的特性結合,改變物質彈性模量、密度、溫度、流量、

    流速、組成成分等,而作為不同功能的感測器使用。

    2.2 都普勒原理

    2.2.1 都普勒效應

    聲音在不同的溫度下行進的速度不會一樣。攝氏 21 度時大約是每秒 344

    公尺的傳導速度,攝氏 30 度時則是大約每秒 350 公尺。由此,可以想見,在

    靠近地面的溫度和空氣中的溫度差異較大時,會使得原本該朝固定方向輻射出去

    的聲音產生了扭曲。其現象用圖示來說明最容易理解如圖四現象,在春季與夏季

    的深夜和清晨十分特別明顯。由於夏季的白天地表溫度較高,而入夜後空氣溫度

    降低,但是地表散熱慢,形成靠近地面的空氣溫度高而較上層空氣冷的上冷下熱

    溫差。冬季的時候則是因為夜間地表依然處於較低溫狀態,即使天亮了,空氣回

    暖了,靠近地表的空氣卻依然溫度較低,形成上熱下冷的溫差效應。

    圖四 空氣溫差形成的聲音行進方向扭曲

    風向的改變也會使得聲音在空氣中行進時受到扭曲而稍微的改變方向。若是瞬間

    的風速很強大時,甚至會產生上風處聽不見聲音的情況。如果有騎機車載人的經

  • 8

    驗,應該比較容易明白。也就是說,當車速很快的時候,後方乘客的聲音會變得

    比較小聲,聽不清楚。這不只是因為風切聲過大,也是因為這種現象產生的關係

    圖五

    圖五 風向對於聲音行進的影響

    2.2.2 都普勒效應的應用

    而在我們日常生活中經常出現的一種與聲音有關的特殊現象,則是都普勒效

    應。當警車與救護車的鳴聲,在靠近的時候頻率比較高,而之後遠去時聲音聽起

    來比較低,這其實就是說明都普勒效應的最好例子。其他類似的經驗也可以在較

    近距離觀察飛機起降時得到。請看圖示說明就能較容易明白現象產生的原因如

    圖六。這個效應就是因為音源的快速移動而產生移動方向前方的聲波壓縮,被壓

    縮的是聲音的波長。而波長變短了,聲音聽起來也就比較高了,而詳細的數據與

    計算就不在這裡討論了。

    圖六 聲音波長因為都普勒效應形成的頻率高低差異

  • 9

    2.3 8051 單晶片原理簡介

    2.3.1 微處理器概述

    微處理器是一種積體電路 (Circuit, Integrated),於 1971 年發明,是一顆單

    晶片,能夠執行命令。通常包含電腦的控制單元與邏輯運算單位,最新的微處理

    器還包含快取記憶體 (Cache Memory) 。它具備完整的中央處理器 (CPU) 功

    能。一般而言,一個單晶片微處理器是由中央處理單元(Central Processing Unit,

    簡稱 CPU)、記憶體 (Memory,包括 RAM, ROM)、輸出輸入單元 (I/O,

    Input/Output)三個部份組成如圖七。

    圖七 微處理器的組成

    1.CPU 是微處理器的核心,控制整個微處理器的運作,並提供各種算術、邏

    輯運算及邏輯與判斷等各種功能。

    2. 記憶體是用來儲存程式碼與常數、變數及推疊等資料。RAM 是隨機存取

    記憶體(Random Access Memory),用來作為程式設計中的變數;ROM 是唯讀記

    憶體(Read Only Memory),用於儲存程式與程式中需要用到的常數。

  • 10

    3. 輸出輸入單元是用於將操作指令、數位與類比信號輸入至單晶片,經過

    單晶 片內部程式作適當的處理與運算,得到結果再透過輸出單元去控制外界的

    電路、 設備等,或是顯示訊息提供使用者知道。

    2.3.2 89C51 原理簡介

    8051 單晶片(Microcontroller 或 Micro Single Chip)是由 INTEL 公司所設

    計 , 於 1981 年 就 己 製 造 生 產 的 一 系 列 八 位 元 單 晶 片 , 一 般 是 以

    MCS-51(Microcontroller Series)來做一個總稱,不過在業界習慣上仍是稱為

    8051。而它的結構是由 8048 的延伸,歷史悠久用量很大,也就是說 8051 是單

    晶片中的老大哥之一。

    單晶片並非只有 INTEL 所出的 8051,市面上仍有其他廠牌的單晶片像

    Motorolla 的 MC6805、MC68330,Microchip 的 pic16c5x、pic167x,EMC 的

    em78m447 等都是八位元單晶片。

    單晶片並非只有八位元,市面上仍有其他像四位元的單晶片(用於家電產

    品、簡單的玩具),而八位元的單晶片較廣泛用於簡單的測試儀器、簡單的大哥

    大、掌上型電玩、電子字典等產品,十六位元的單晶片則廣泛用於高級家電、高

    級測試儀器及可上網的大哥大產品。另外還有一種叫做 DSP(數位訊號處理)的單

    晶片專門用於需大量處理數字運算的儀器像邏輯分析儀。

    單晶片已大量應用在工業控制與各類電器產品上,常見的有:可程式控制器

  • 11

    防盜器、NC 工具機、機器手臂、電子秤、繪圖機、數位板、滑鼠、無人搬運車、

    傳真機、印表機、自動販賣機、冷氣機、微波爐、單槽洗衣機、電磁爐、汽車自

    動化、電子玩具和鍵盤。單晶片的應用可說是無遠弗界,而且一直在增加中,因

    此對於單晶片的學習,如果能與行業結合,無論是那一種行業,相信都有機會為

    單晶片的應用開展新的領域。

    由於 8051 的發展工具很容易取得,參考用書隨處可得,因此它也被廣泛的使

    用,在專科及近半數的高職教學中單晶片仍是以 8051 為主。近日年來因為被廣

    泛的運用,基本的功能似乎不能滿足需要,因此各 IC 大廠紛紛將它加上各種工業

    上常用的硬體如A/D、D/A、PWM...等功能,而出現功能較為強的 8051 衍生 IC 以

    滿足業界的需求。

    8051 其內部結構如圖八:

    圖八 8051 內部結構

  • 12

    8051 單片具有以下之特性:

    1. 專為控制使用所設計的 8 位元單晶片。

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

    3. 具有 128 位元的 RAM,以及 4K 位元的 ROM。

    4. 具有 4 個 8 位元 I/O 埠。

    5. 具有 2 個 16 位元的計時/計數器。

    6. 具有全雙工的 UART。

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

    8. 具有時脈產生電路。

    9. 具有外部電路擴充 64 位元程式記憶體的能力。

    8051 為 40 支接腳之單晶片,其接腳圖與功能說明如圖九:

  • 13

    圖九 8051 腳位圖

    8051 為 40 支接腳之單晶片,其接腳圖與功能說明如下:

    1.Vcc:+5 電源供應接腳。

    2.GND:接地接腳。

    3. P0.0~P0.7:埠 0,為開洩極(Open Drain)雙向 I/O 埠。在做為外部擴充記憶體時,

    可低八位元位址線(A0~A7 Address Line)與資料匯流排(Data Bus)雙重功能。在做

    為一般 I/O 埠時必須加上如下之外部提升電路。

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

  • 14

    5.P2.0~P2.7:埠 2,為具有內部提升電路的雙向 I/O 埠。在做為外部擴充記憶體

    時,可為高八位元位址線(A8~A15 Address Line)。

    6.P3.0~P3.7:埠 3,為具有內部提升電路的雙向 I/O 埠。此外,埠 3 的每支接腳

    都具有另一特殊功能,其功能如下:

    RXD(P3.0):串列傳輸的接收端。

    TXD(P3.1):串列傳輸的輸出端。

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

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

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

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

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

    (P3.7):外部資料記憶體讀取激發信號(Strobe)。

    7.RST:重置信號(Reset)輸入端。在單晶片工作時,將此腳保持在“Hi”兩個機械

    週期,CPU 將重置。

    8. ALE:位址鎖住致能(Address Latch Enable),在每個機械週期都會出現,可做

    為外部電路的時脈源。

    9. PSEN:程式激發致能(Program Strobe Enable),可輸入外部程式記憶體的讀取信

    號。

  • 15

    10.EA:外部存取致能(External Access Enable),當 EA 接腳為“L0”時,則讀取外部

    程式記憶體執行。

    11.XTAL1:反相振盪放大器的輸入端。

    12.XTAL2:反相振盪放大器的輸出端。

  • 16

    第三章 硬體架構

    3.1 超音波發射電路

    各位可能會覺得奇怪,我們不是採用的是 40KHz 的超音波換能器嗎?為什麼

    會看不到 40KHz 的振盪電路呢?其實,原因很簡單,由於本測距儀採用了單晶片

    IC 作控制,所以就連 40KHz 的訊號都直接由單晶片(P3.3)提供,這樣一來電路也

    可以化簡不少了。

    圖十 發射電路圖

    3.2 超音波接收電路

    超音波的信號經超音波接收器接收後,經第一級 OPAmp 放大了 10 倍後,

    再送入第二級的 OPAmp 放大 100 倍,這樣一來總增益就達到了 1000 倍(30db),

    測距在 10 米內的範圍 1000 倍的電壓增益就足以應付了,訊號經過了放大後再由

    1N60 組成的整流電路整流,再送入電壓比較器(P1.0/AIN1)。

  • 17

    圖十一 接收電路圖

    3.3 8051 控制電路

    下圖十二是本測距儀的心臟 AT892051 及顯示部份的線路,超音波訊號由

    P3.3 送出到發射部,超音波訊號經接收部放大之後,經計算時間差,再將所得的

    距離藉由掃瞄的方式顯示出距離值。

    圖十二 控制電路圖

  • 18

    第四章 軟體架構

    4.1 89C51 程式發展流程

    8051 單晶片應用於控制上時,整體系統的設計包括軟體程式及硬體電路兩

    方面。硬體電路設計是依受控系統之不同而異,雖然有時候系統的某些功能可以

    採用軟體或硬體來完成,但在考量硬體成本及 8051 單晶片運算能力所及程度,

    以軟體程式來完成為較佳方法。

    8051 組合語言程式是由一列一列的敘述(Statement)所組成,而程式的執行則

    須先經 8051 組譯器編譯後,並經燒錄器燒錄至 8051 單晶片中方可執行。而 8051

    組合語言的格式則是由 4 個欄位所構成,其格式如下:

    [Label] [Mnemonic] [Operand] [Comment]

    標記欄 指令欄 運算元欄 註解欄

    1.標記欄(Label)

    標記的功用是用以替代繁複的記憶體位址計算,以方便程式的編寫、分析與

    維護。標記的編寫必須從文 書編輯軟體的第一格開始,標記可以由英文字母、

    阿拉伯數字、問號及底線字元組合而成,長度最多可以達 32 個位元,最後必須

    以冒號來結束。

    2.指令欄(Mnemonic)

    指令可分為兩種,一種是 8051 單片指令,另一種則是編譯程式的虛指令,

  • 19

    用以通知編譯器對程式作某些特定的處理。如果一列指令開頭沒有標記時,則指

    令前必須保留一個以上的空格。

    3.運算元欄(Operand)

    運算元依指令決定需要與否,且其需要長度亦依指令而異。

    4.註解欄(Comment)

    註解欄是以分號起頭的一段說明文字,直到該行結束。可提供程式設計師註

    解說明。

    4.2 89C51 暫存器與資料記憶體

    4.2.1 累加器(Accumulator)

    一般以 A 或 Acc 簡稱,是使用頻率最高的暫存器,許多算數運算、邏輯運

    算及資料搬移等工作,都需要藉由累加器來完成。

    4.2.2 工作暫存器

    在 8051 中共有 8 個 8 位元(Bits)工作暫存器,分別為 0、1、2、3、4、5、

    6 及 7。這些工作暫存器可用以輔助累加器在運算上的不足,如儲存即將被處理

    的資料,或已完成的結果及迴圈數值控制等。

    由於在撰寫較複雜程式尤其是呼叫副程式時,為了避免工作暫存器之內容遭

    到破壞,在 8051 中提供四個暫存器庫,分別為 RB、RB1、RB 及 RB3,每一個

    暫存器庫均有個 8 位元工作暫存器,並可經由工作暫存器 0~7 來存取,但程式

  • 20

    執行中只能選擇四個暫存器庫中的一個暫存器來使用,而其選擇方法則可透過設

    定 RS1 與 RS0 此兩位元來選擇。

    表一 暫存器位置表

    RS1 RS0 暫存器庫 位址

    0 0 RB0 00H~07H

    0 1 RB1 08H~0FH

    1 0 RB2 10H~17H

    1 1 RB3 18H~1FH

    當 8051 選擇使用 RB0 時,程式中存取 R0~R7 暫存器的值,實際上是在存

    取資料記憶體位址 00H~07H 的內容;而使用 RB1 時,程式中存取 R0~R7 暫存

    器的值,實際上是在存取資料記憶體位址 08H~0FH 的內容;而使用 RB2 時,

    程式中存取 R0~R7 暫存器的值,實際上是在存取資料記憶體位址 10H~17H 的

    內容;而使用 RB3 時,程式中存取 R0~R7 暫存器的值,實際上是在存取資料

    記憶體位址 18H~1FH 的內容。所以在複雜程式中,主程式與副程式可分配使用

    不同暫存器庫,即可避免暫存器的值被破壞。

    4.2.3 輸出/輸入埠暫存器

    8051 具有 4 個 8 位元(Bits)的輸出輸入埠,經由這四個輸出輸入埠與外界進

    行資料交換因此在 8051 內部用個暫存器來記錄輸出/輸入接腳的狀態,分別為資

  • 21

    料記憶體 80H、90H、A0H、B0H 等四個位元組(Byte),並一輸出/輸入埠分別命

    名為 P0、P1、P2 及 P3。當軟體程式對輸出輸入埠 P0~3 作輸出/輸入的動作,

    即是對 80H、90H、A0H 及 B0H 等四個位元組作寫入/讀出的動作。

    4.2.4 資料記憶體

    8051 的記憶體可分為兩大部份,一是程式記憶體,即是使用者撰寫軟體程

    式的存放記憶體區塊;另一是資料記憶體,是用以存放程式執行結果所使用的記

    憶體。而在 8051 中暫存器與資料記憶體則是結合在一起,均存放在資料記憶體

    中,及結構如圖十三所示:

    圖十三 資料記憶體中及結構圖

    在位元定址使用上,8051 提供具彈性的使用方法,例如:

    1.將位址 20H 的第 0 Bit 設定為 1,可以寫成下面兩種方式:

    SETP 00H ;位元定址

    SETB 20H.0;第 20H 位元組的第 0 位元

    2.將 P0 的第 3 Bit 清除為 0,可以寫成下面三種方式:

  • 22

    CLR 83H ;位元位址

    CLR 80H.3 ;第 80H 位元組的第 3 位元

    CLR P0.3 ;P0 暫存暫存器的第 3 位元

    3.將 IT0 位元的值反相,可以寫成下面四種方式:

    CPL 88H ;位元位址

    CPL 88H.0 ;第 88 位元組的第 0 位元

    CPL IT0 ;位元名稱

    CPL TCON.0 ;TCON 暫存器的第 0 位元

    4.3 89C51 計時/計數器

    4.3.1 計時/計數器的功能

    在 8051 單晶片的內部有 2 個計時/計數器,可接收外界輸入的驅動信號,而

    能產生一個輸出信號以供讀取外界輸入信號發生的次數。如果這個外界輸入信號

    代表某一事件發生的次數,則計時/計數器即是在作事件的計數;如果這個外界

    輸入信號是一個固定頻率的信號,則計時/計數器則可用以作計算時間的工作。

    因此,8051 單晶片的計時/計數器為一體兩面,完全取決於驅動信號的特質而定。

  • 23

    4.3.2 計時/計數器的驅動與使用

    Timer0 與 Timer1 是 8051 單晶片的兩個 16 位元計時/計數器,其計數值是存

    放於兩個 8 位元暫存器中,Timer0 的計數是由 TH0(High Byte)及 TL0(Low Byte)

    來執行,Timer1 的計數是由 TH1(High Byte)及 TL1(Low Byte)來執行。其位址分

    別位於 SFR 內部記憶體的 8CH、8AH、8DH 及 8BH 中,如第四章之 SFR 記憶

    體圖所示。在程式撰寫上,編輯器允許直接使用暫存器的名稱 TH0、TL0、TH1

    及 TL1,亦可直接使用其暫存器位址,來作直接定址。

    在使用 8051 單晶片計時/計數器前須先設定計時/計數器模式控制暫存器

    (Timer/Counter Mode Control Register,簡稱 TMOD)及計時/計數器控制暫存器

    (Timer/Counter Control Register,簡稱 TCON)兩個暫存器,此二暫存器分別用來

    決定 Timer0 及 Timer1 的工作模式及中斷執行的控制設定。

    4.3.3 TMOD 模式控制暫存器之設定

    Timer 的計時時脈來源有兩種,一種是 8051 單晶片的內部時脈,一種是從

    T0 與 T1 接腳所輸入的外部時脈。在 8051 單晶片接收時脈計時/計數時,會在每

    個機械週期值由 1 變為 0 時,將 Timer 的值累加 1。而 8051 單晶片對時脈來源

    的選擇是由 TMOD 暫存器中的 C/T 位元來決定。當 C/T 設定為 1 時,Timer 使

    用外部時脈;當 C/T 設定為 0 時,Timer 使用內部時脈。

  • 24

    4.4 89C51 中斷服務與中斷設定

    4.4.1 中斷的功能

    8051 單晶片的中斷服務功能,可使中斷服務的需求以中斷的方式通知

    8501CPU,以使 CPU 獨立執行主程式,而提升執行效率。在 8051 單晶片中提供

    5 個中斷源,分別為:

    1.INT0:外部中斷,由 8051 單晶片第 12 接腳輸入。

    2.Timer0:計時/計數器中斷。

    3.INT1:外部中斷,由 8051 單晶片第 13 接腳輸入。

    4.Timer1:計時/計數器中斷。

    5.UART:串列埠中斷。

    上列中斷源在 8051 中都有相對應的旗標,當中斷條件產生時,中斷源就會

    使其相對應的旗標值設定為 1。8051 的 CPU 會在每一個機械週期檢查這些旗標

    的狀態,若系統允許相對的中斷源產生中斷,且該中斷相對應的旗標值亦為 1

    時,則 CPU 會在執行完目前正在執行的指令後,將程式在記憶體中的位址存入

    堆疊中,並產生中斷服務副程式的呼叫,跳到該中斷所對應之中斷向量位址去執

    行,CPU 執行該中斷服務副程式,直到「RETI」指令後才結束中斷副程式,再

    從堆疊中取出先前存入的位址值繼續執行被中斷的程式。

  • 25

    4.4.2 8051 的中斷向量與中斷相關暫存器

    8051 單晶片的 5 個中斷源,其中斷向量、旗標名稱與該旗標所屬暫存器

    如下:

    表二 8051 單晶片中斷源,其中斷向量、旗標名稱與該旗標所屬暫存器表

    中斷源 中斷向量(位址值) 旗標 所屬暫存器

    INT0 0003H IE0 TCON.1

    TIMER0 000BH TF0 TCON.5

    INT1 0013H IE1 TCON.3

    TIMER1 001BH TF1 TCON.7

    UART(TXD) 0023H TI SCON.1

    UART(RXD) 0023H RI SCON.0

    中斷源 INT0 與 INT1 分別位於 8051 單晶片接腳第 12 與 13 支,當此二接腳

    為低電位為 0 時,則 IE0 與 IE1 會設定為 1;而當對應之中斷服務副程式執行完

    畢後,則 8051 會自動清除 IE0 與 IE1 旗標。Timer0 與 Timer1 的中斷產生則如第

    六章所介紹,當計時/計數值產生溢位時,則對應之旗標 TF0 與 TF1 設定為 1;

    而當對應之中斷服務副程式執行完畢後,則 8051 會自動清除 TF0 與 TF1 旗標。

    UART 為串列埠中斷源,當串列埠做為傳送或接收時其對應不同的旗標 TI 與

    RI,其使用方式將在下一章介紹,當其對應旗標設定為 1 後,且中斷致能,則中

  • 26

    斷服務副程式將會執行。當對應之中斷服務副程式執行完畢後,則 8051 會自動

    清除 TI 與 RI 旗標。

    中斷致能暫存器(Interrupter Enable Register,簡稱 IE,可位元定址)用於致能

    中斷的發生,若被致能,則中斷發生後將執行中斷服務副程式,否則即使中斷發

    生亦不會執行中斷服務副程式。

    在 8051 單晶片工作時,並不一定要使用全部的中斷源來產生中斷,因此可

    藉由 IE 來設定致能部分所要用到的中斷源。此外,每一個中斷源在中斷優先暫

    存器(Interrupt Priority Register,簡稱 IP)中都有一個位元來決定該中斷源之中斷

    服務副程式被執行的優先順序,設定為 1 表示為高優先權,清除為 0 則表示為低

    優先權。當一個中斷要求發生時,若中斷是被致能的,則 8051CPU 會執行該中

    斷服務副程式。然而在執行中若有較高優先權的中斷源要求中斷,則 CPU 會先

    暫停目前正在執行的中斷服務副程式,而立即執行這個較高優先權的中斷服務副

    程式。如果相同優先權或優先權較低的中斷源要求中斷,則 CPU 將會不予理會。

    另外,若兩中斷同時發生,則高優先權中斷源優先執行;但若優先權相同時,則

    依 INT0、Timer0、INT1、Timer1、UART 之順序先後執行。

  • 27

    第五章 實驗結果與討論

    5.1 實驗(一) 有效距離實驗

    5.1.1 實驗背景:

    我們分別把待測物體(書本)置於不同的位置來量測,每次以 30 公分為單位往

    後移,一開始的原點為設離發射器 30 公分處,分別向後移動。

    5.1.2 實驗結果:

    表三 實驗一結果表

    測量距離(cm) 30 60 90 120

    顯示數據(cm) 25 57 65 103

    5.2 實驗(二) 有效角度實驗

    5.2.1 實驗背景:

    我們分別以跟地面成不同的角度的書本來進行量測,每次以 15 度為單位向地

    面靠近跟分開,一開始的角度設為跟地面成垂直的 90 度,分別向上跟向下移動。

  • 28

    5.2.2 實驗結果:

    表四 實驗二結果表

    測量角度

    (度)

    30 60 90 120 150

    測量距離

    (cm)

    60 60 60 60 60

    顯示距離

    (cm)

    87 64 57 66 83

  • 29

    第六章 結論與未來展望

    這個專題讓我們進一步的去了解超音波與單晶片 8051 的結合與應用,雖然

    說倒車雷達也是應用超音波測距儀,但是我想我們的超音波測距儀跟倒車雷達的

    超音波測距儀比起來,我們的還是很簡單的階段,而這個專題也讓我們學到該如

    何應用我們原本會的組合語言去寫我們沒接觸過的程式,該如何去設計並且量測

    電路,該如何去完成這一步一步我們該完成的工作,這個專題真的讓我們學到很

    多的東西,當然也有需要更進一步去向上提升的的地方,像是如何克服超音波反

    射回來時的接收,還有反射物體的角度可以在增加等等,這些問題也都可以讓我

    們再往上提升到另一個領域。

    目前我們正對本系統做進一步的改良並且擴增系統的功能,而未來我們希望

    除了測距之外,提高量測距離與精密度之後,可以再加裝蜂鳴器或是警示音之類

    的聲音裝置,並且嘗試安裝,如果可以的話就成為一個簡單而且方便的倒車雷達

    了。

  • 30

    參考資料

    [1]黃立坤 著,超音波頭控系統,逢甲大學/自動控制工程所/90/碩士

    /90FCU05146007

    [2]鄭振東 編譯,超音波工程,全華科技圖書股份有限公司,1999。

    [3]浩司 編譯,感測器的動作分析和 100%利用,建興出版社,1993。

    [4]鍾自立、張正賢 著,8051 實作與燒錄器製作,宏友書局,2000。

    [5]李齊雄、游國幹 著,8051 單晶片微電腦原理與實作,儒林書局,1995。

    [6]蔡朝洋 編譯,單晶片微電腦原理與應用,全華科技圖書股份有限公司,2002

    [7]蔡朝洋 編譯,電子學實驗,全華科技圖書股份有限公司,2000。

    [8]王貳端 著,實務專題製作與報告寫作,華泰書局,1998。

    [9]陳龍三 著,8051 入門與介面控制,松崗書局,1999。

    [10]大鳥實驗室,8051程式討論區

    [11]雷兒電子網,超音波測距討論區

  • 31

    附錄一

    圖十四 完整的電路洗版圖

  • 32

    附錄二

    ;超音波測距儀

    ;x'tal=24MHz

    ;CPU=89C2051

    SYMBOLS

    CLK_OUT REG P3.3 ;超音波信號輸出

    SEN_IN REG P3.6 ;超音波接收檢知

    LED_OUT REG P3.7 ;LED 輸出

    COM_100 REG P3.0 ;百位數控制

    COM_10 REG P3.1 ;十位數控制

    COM_1 REG P3.2 ;個位數控制

    TX REG 20H.0

    OK REG 20H.1

    OVL REG 20H.2

    DSP_100 EQU 30H ;顯示器百位數

    DSP_10 EQU 31H ;顯示器十位數

    DSP_1 EQU 32H ;顯示器個位數

    REG_100 EQU 33H ;計數器百位數

    REG_10 EQU 34H ;計數器十位數

    REG_1 EQU 35H ;計數器個位數

    COUNT EQU 36H

    SCAN EQU 37H

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

    MIN_NUM EQU 5

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

    ORG 0H

  • 33

    JMP START

    ORG 0BH

    JMP T0_INT

    ORG 1BH

    JMP T1_INT

    ORG 30H

    START:

    MOV 30H,#0 ;清除顯示及計數暫存器

    MOV 31H,#0

    MOV 32H,#0

    MOV 33H,#0

    MOV 34H,#0

    MOV 35H,#0

    MOV SCAN,#0

    MOV COUNT,#0

    MOV TMOD,#21H ;TIMER0=MODE1,TIMER1=MODE2

    MOV TH0,#>(65536-16666) ;1/120 秒中斷一次

    MOV TL0,#

  • 34

    CLR TR0 ;TIMER0 停止計數

    MOV IE,#0 ;中斷禁能

    CALL TX_CLK ;發射超音波

    CALL MIN_RING ;最低測距延遲

    MOV IE,#88H ;中斷致能,TIMER1 中斷致能

    MOV TH1,#118

    MOV REG_1,#MIN_NUM ;最低距離加到個位距離計數器

    MOV REG_10,#0 ;十位數距離計數器歸零

    MOV REG_100,#0 ;百位數距離計數器歸零

    SETB TR1 ;TIMER1 開始計數

    JNB OK,$ ;等待測距完成

    CLR TR1 ;TIMER1 停止計數

    CALL REG2DSP ;轉換顯示值

    MOV IE,#82H ;中斷致能,TIMER0 中斷致能

    MOV SCAN,#0 ;顯示掃瞄歸零

    MOV COUNT,#0 ;發射計數器歸零

    SETB TR0 ;TIMER0 再開始計數

    SETB LED_OUT ;熄滅 LED

    JMP MAIN ;跳至 MAIN 重新步驟

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

    TX_CLK:

    MOV R5,#10

    TC_LOOP:

    CLR CLK_OUT

    NOP

    MOV R4,#11

    DJNZ R4,$

  • 35

    SETB CLK_OUT

    NOP

    MOV R4,#10

    DJNZ R4,$

    DJNZ R5,TC_LOOP

    RET

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

    MIN_RING:

    MOV R5,#MIN_NUM

    MR_LOOP:

    MOV R4,#59

    DJNZ R4,$

    DJNZ R5,MR_LOOP

    RET

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

    REG2DSP:

    JNB OVL,R2D_1

    CLR OVL

    MOV DSP_100,#0FH

    MOV DSP_10,#0FH

    MOV DSP_1,#0FH

    JMP R2D_END

    R2D_1:

    MOV A,REG_100

    MOV DSP_100,A

    MOV A,REG_10

    MOV DSP_10,A

  • 36

    MOV A,REG_1

    MOV DSP_1,A

    R2D_END:

    RET

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

    T1_INT:

    INC REG_1

    MOV A,REG_1

    CJNE A,#10,T1_01

    MOV REG_1,#0

    INC REG_10

    CJNE A,#10,T1_01

    MOV REG_10,#0

    INC REG_100

    MOV A,REG_100

    CJNE A,#10,T1_01

    MOV REG_100,#0

    SETB OVL

    SETB OK

    JMP T0_END

    T1_01:

    JNB SEN_IN,T1_END

    SETB OK

    T1_END:

    RETI

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

    T0_INT:

  • 37

    MOV TH0,#>(65536-16666) ;1/120 秒中斷一次

    MOV TL0,#

  • 38

    JMP T0_10

    T0_03:

    MOV A,DSP_1

    SWAP A

    ORL A,#0FH

    MOV P1,A

    CLR COM_1

    T0_10:

    INC SCAN

    MOV A,SCAN

    CJNE A,#3,T0_END

    MOV SCAN,#0

    T0_END

    RETI

    全文完