360 度旋轉台 - ir.hust.edu.twir.hust.edu.tw/bitstream/310993100/5550/1/360+度旋轉台.pdf ·...
TRANSCRIPT
修平科技大學機械工程學系
實務專題論文
360度旋轉台
指導教授: 張浮明
班 級: 機械四丙
組 長: 黃宥騰 BA101147
組 員: 洪峻博 BA101162
張益齊 BA101159
方偉亘 BA101105
中華民國一○五年七月二十五日
I
摘要
本專題製作主要是利用 360度的旋轉功能來展示一樣物品,一般的展場就是
需要利用這種 360度旋轉展示台來呈現這樣的效果,本次的製作主要是利用電路
圖來讓整個展示機構可以做出 360度的旋轉,以便達到展示的效果。
II
致謝
這次專題我們經歷了一整個學期的時間利用下課後或假日的時間,來慢慢的
一點一滴完成這項成品,在這其中,我們遇到了很多的問題與困難,也接受了很
多人的幫忙與指點,尤其謝謝在校外服務學習時去慈濟作志工作資源回收,看到
志工阿姨叔叔們一個一個踩鋁罐塑膠罐,很累很辛苦,也才靈機一想想到要製作
這個專題來省時省力,其中也要謝謝同學家提供家裡工廠讓我們可以做專題時有
足夠的工具來製作,也謝謝同學的爸爸指導我們這些設計圖上,甚至是專題製作
中所遇到的種種問題,也一一幫我們提供問題解決問題,也要謝謝專題指導老師,
時時提醒我們製作專題論文上該注意的事項和專題成品上的小細節以及許多糾
正錯誤的地方,還有很多人幫助我們的人,特別感謝他們,沒有大家的幫忙可能
就無法有今天成果的出現了。
III
目錄
摘要··················································I
致謝·················································II
目錄················································III
第一章 緒論
1-1 前言 ···········································1
1-2 研究動機········································1
1-3 研究目的········································1
1-4 時間進度管制····································2
1-5 工作分配········································3
第二章 設計原理
2-1馬達···············································4
2-1.1電動機的基本構造·································4
2-1.2直流電動機的工作原理與特性·······················5
2-1.3扭矩與功率·······································5
2-2牛頓定律(Newton's Law) ····························6
2-3磁場之產生·········································7
2-4磁電路(Magnetic Circuit) ··························8
2-5直流電動機基本原理·································9
IV
2-6驅動慣性場合馬達的計算····························12
2-7繼電器············································14
第三章 單晶片
3-1單晶片概述········································16
3-1.1單晶片 89C51的特性······························17
3-2單晶片 89C51的接腳圖······························19
3-3程式編寫流程······································20
3-4穩壓電路··········································21
3-5動作流程說明······································22
3-6線路圖············································23
第四章 製作方法
4-1材料表············································24
4-2零件圖············································25
參考文獻·············································27
附註(一) ············································28
附註(二) ············································30
1
第一章 緒論
1-1 前言
圓周運動為自然界基本的運動模式之一,舉凡大自宇宙中星體的運轉、小自
原子內電子的運動、車輛的轉彎運動、遊樂場中摩天輪系統的旋轉運動,皆是以
圓周運動的方式進行。
藉由物體的重力作用或以電動馬達的精確操控,帶動物體做旋轉運動。隨著時代
的演變,現今製造產業對於產品之需求以功能取向的設計方式也漸漸改變,為了
能在競爭激烈的消費市場中獲得消費者青昧,獨特的外型、美觀及節能的設計成
為主流。
1-2 研究動機
主要設計是針對精品的物品展售的轉盤與 CCD 的轉盤及自動化設備
轉盤,有感目前的生產線或者 CCD 都非重量型物件,一般均搭配電子控
制、機件及機構的應用及其他零件器材的輔助,使機器能夠自動化進行
運作。
1-3 研究目的
在科學不斷發達的 21世紀,各項新的科技產品使人们的生活更加舒適與便
利。想利用所學研製一台多功能且兼具節能減碳環保意識旋轉台。故此次專題製
作以節約能源與自動化為設計主軸與在學校所學加以融入,希望能學習到如何尋
找拍檔,如何在團隊間溝通整合,對自動化控制的應用、機構學的設計及動力傳
動實際體驗。創造美好的生活環境和品質,是我們所努力的目標。
2
1-4 時間進度管制
本專題研究內容共分為資料收集及研究、設計與測試、算例規劃、實例計算、
模型設計與製作、實驗與測試、實驗與計算數值之整理分析與比較、結案報告撰
寫與製作等 8項,各工作項目時程進度如下圖所示。
月 次
工作項目
第
1
月
第
2
月
第
3
月
第
4
月
第
5
月
第
6
月
第
7
月
第
8
月
第
9
月
第
10
月
第
11
月
第
11
月
備
註
1.資料收集及研究
2.設計與測試
3.算例規劃
4.實例計算
5.模型、
設計與製作
6.實驗與測試
7.實驗與計算數值之
整理、分析與比較
8.結案報告撰寫與製
作
預定進度累計百分比 10% 15% 20% 30% 40% 50% 60% 70% 80% 85% 95% 100%
預定進度 實際進度 計畫進度管制圖
3
1-5 工作分配
學 號 姓 名 負 責 項 目
1 BA101147 黃宥騰 規劃及製訂題目召集人
2 BA101159 張益齊 材料、零組件採購
3 BA101105 方偉亘 文書報告整理撰寫
4 BA101162 洪峻博 機構加工組裝
組員工作分配表
4
第二章 設計原理
2-1 馬達
2-1.1 電動機的基本構造 :
電動機一般又稱馬達(Motor),能將電能轉換為機械能,以驅動機械作旋轉、
振動或直線運動,被廣泛運用於自動控制與機電整合領域。電動機的種類很多,
對於基本結構來說,組成主要由定子(Stator)和轉子(Rotor)所構成。如下
圖一
圖一 直流馬達構成要素
5
2-1.2 直流電動機的工作原理與特性:
直流馬達(direct current, DC motor)可以說是最早發明能將電力轉換為機
械功率的電動機,它可追溯到 Michael Faraday 所發明的碟型馬達。法拉第
(Faraday)的原始設計其後經由迅速的改良,到了 1880年代已成為主要的電力機
械能轉換裝置,但之後由於交流電的發展,而發明了感應馬達與同步馬達,直流
馬達的重要性亦隨之降低。直到約 1960年,由於 SCR的發明、磁鐵材料、碳刷、
絕緣材料的改良,以及變速控制的需求日益增加,再加上工業自動化的發展,直
流馬達驅動系統再次得到了發展的契機,到了 1980年直流伺服驅動系統成為自
動化工業與精密加工的關鍵技術。
2-1.3扭矩與功率
電動機之主要功能即在於能夠在電能(electrical power)與機械能
(mechanical power)之間藉由電磁轉換而進行能量轉換,馬達將電能轉換為機械
能,而發電機則將機械能轉換為電能,要瞭解電動機的工作原理首先要瞭解扭矩
與功率。
6
2-2 牛頓定律(Newton's Law)
表一 牛頓定律
7
2-3 磁場之產生:
在變壓器、馬達與發電機的運作過程中,能量常由一種型式轉換為
另一種型式,這種轉換過程的基本機制即在於電磁場
(electro-mechanical field)。因此要瞭解電動機的工作原理即要明瞭
磁場產生的方式,磁場的產生可歸納為下列幾種方式: 一根載有電流
的導體會在其週圍將形成磁場 磁鐵會在其週圍形成磁場
電場的變化在適當的情況下將造成感應的磁場,反之亦然,因而在
電磁的交互作用中達到能量轉換的目的。一個變化的磁場在其切割的線
圈上將產生感應電壓,這是變壓器的基本工作原理。一根載有電流的導
線如置於磁場中,則將感應一力施於其上,這是馬達運轉的基本原理。
一根在磁場中移動的導線則將在導線上產生感應電壓,這是發電機運轉
的基本原理。因此藉由電場與磁場的交互作用,電能與機械能可以互相
轉換,以下將說明其相關的物理定律。
圖二 一個線圈環繞的鐵心
8
2-4 磁電路(Magnetic Circuit):
等效電路如下圖三磁路(b)所示,磁動勢的極性可由右手定則決定
如下圖四,決定磁動勢(mmf)在磁路中之極性所示。
圖三 (a)電路(electric circuit) (b)磁路(magnetic circuit)
圖四 決定磁動勢(mmf)在磁路中之極性
9
2-5 直流電動機基本原理
圖五 直流馬達的基本工作原理說明
直流馬達的基本工作原理說明 (a)直流馬達的剖面圖包含定子磁鐵、轉子線
圈、換向器(commutator)與碳刷(carbon brush)(b)氣隙磁通 (air-gap flux)
密度的圓周空間分佈圖 (c)碳刷間之電壓
馬達本身分為直流馬達和交流馬達兩種,但是不管哪一種馬達,流經驅動線圈的
電流是經常不斷的變化著。也就是說,流動著斷續的電流。因此,重該含義判斷
的話,也就是說在直流馬達的驅動線上,流動著交替電流。總之,若僅是連續的
直流電流,馬達就不會產生作
用。由於電源的不同對馬達的驅動原理當然有影響,而造成了 DC馬達和 AC馬達
的要因。關於利用到電磁能量的方面,必有採用依照其
運動型態的分類法。一般說到馬達便聯想到旋轉型,但是除了旋轉型之外,還有
直線型(線性型)。而且,直線型是旋轉型轉變而來的,
所以其原理在基本上和旋轉型相同。另外,還有特例的振動型(振動馬達)。
10
一般所謂馬達,大部份是指旋轉型。由於最近機械構造之進步,直線驅動馬
達已經隨需要而設計了。
若根據轉子構造將小型馬達分類的話,則可分為內轉子型,外轉子型,圓盤型三
種。馬達係將作用於轉子和定子之間的磁能轉換成旋轉力,為從磁能得到旋轉力
起見,所以須要有旋轉構造之轉子。因此,旋轉馬達需要支撐轉子之軸承。
對軸承構造而言,大致可分為滾動軸承和滑動軸承兩種。當施加電壓給馬達
時,理應有某些的電流流動,但是在這種情形之下,根據馬達所能承受之電能,
相對的,產生了機械能。可是,一般我們稱電能所作的功為功率。這麼一來,電
壓和電流便產生了直接的關係。
因此,馬達上所外加的電壓和電流便用功率來表示。假設功率為 P(W),電壓為
E(V)且電流為 I(A),則功率 P用 P(W)=E(V)ù I(A)的關係式來表示。又功率 P(W)
也可用
P(W)=I(A)ù R(ê )
或 P(W)=E(V)/Rb (ê ),來表示之。
功率的單位以瓦特(W)表示。
若論馬達,一定會使用到扭力(torque)這句術語,這和馬達輸出功率有直接
的關係,且扭力越大(若是相同轉速的馬達速),其輸
出功率也越大。扭力雖然日文叫作旋轉力,但是此種扭力相當於直線運動之力。
又把力 T的單位是用 gf.cm(kgf.m)表示。如果採用 SI單位係統,則為:牛頓? 米
(N.m)。總而言之,欲使物體旋轉之物理量並不變化。故兩者的關係如下式所示。
1 ( N.m ) = 1 / 9.8 ( kgf.m )
就直流馬達構造要素而言,電樞線圈和場磁線圈是其主體。他們的連接方法
有直繞, 分繞, 複繞等三種,且依照使用目地而分別靈馬達靈活運用。
一般所謂的微小型馬達,是指其輸出功率在 3W以下的馬達。同樣的,一說
11
到輸出在 3W之下,就有非常小的感覺,但在一般的場合也就夠用了。假設馬達
的輸出為 3W時,以轉便得到 300gcm的扭力。又,若是 500轉的話,則可得到
600gcm的扭力。該馬達充份的被使用在 OA, HA 之各種驅動源上。因此一提到小
型馬達,大部份是指功率微小之馬達。就馬達的特徵及其性能而言,將其重點歸
納如下:
一般使用的轉速是從 500(rpm)至 5000(rpm)左右。
軸承構造是無油軸承或是滾珠軸承。
使用的電壓範圍是從 1.5V至 30V左右。
使用電流大多在 1(A)以下。
壽命係因轉速的多少快慢而不同,大概有 1000~2000 小時。
在電路上易於控制。
只要變換電池的極性,即能切換旋轉之方向。
起動扭力大。
12
2-6 驅動慣性場合馬達的計算
圖六 驅動慣性馬達
13
圖七 直流電動機分解圖
14
2-7 繼電器
「繼電器(relay)」也是一種電門,但與一般開關不同,繼電器並非以機械
方式控制,而是一種以電磁力來控制切換方向的電門。繼電器的基本原理如圖八
所示,當線圈通電後,會使中心的軟鐵核心產生磁性,將橫向的擺臂吸下,而臂
的右側則迫使電門接點相接,使兩接點形成通路。
圖八 繼電器原理與代表符號
簡單的說繼電器的動作原理是以小電流去激發線圈產生磁場進而導通接點
而拉動大電流。繼電器在使用上有各種不同的耐壓規格可供選用,使用繼電器的
優點是其有絕對的隔離效果,實際使用時可允許使用兩組不同的電源,例如可使
用直流 24V的電壓去激發線圈,以驅動交流 110V的電壓。
繼電器(Relay)如圖九,也稱電驛,是一種電子控制器件,它具有控制系統
(又稱輸入迴路)和被控制系統(又稱輸出迴路),通常應用於自動控制電路中,
它實際上是用較小的電流去控制較大電流的一種「自動開關」。故在電路中起著
自動調節、安全保護、轉換電路等作用。
15
圖九 繼電器
用激磁導通的原理來控制所欲控制的大電流物件如 : 家電。由於單晶片的
I/O 無法直接推動繼電器,所以配合上使用一個電晶體來加以驅動。使用繼電器
首要考量的就是其接點的推動力,舉例言之,若要推動一個110V/1000W 的負載,
如下圖十其接點至少要能耐壓110V,耐流1000/110=9.1A。
8051
Relay
N.0
N.C
COM
圖十 繼電器的功能
16
第三章 單晶片
電子技術發展迅速,在機械設計的範疇中,「純機械」的設計已經不多了,
從機車、汽車、自動化設備,到飛機、人造衛星,這些產品雖然仍是以「機械」
為主體,但無不大量使用電子與感測元件。對於機械設計者來說,電子與感測元
件帶來了許多便利,使我們的設計領域更加擴大,許多以機械方式很難達成的功
能,運用電子與感測元件都能夠簡單地達到,且相對所需要的成本、空間都比較
小。
3-1 單晶片概述
微電腦硬體結構包含中央處理單元、記憶體單元、輸入單元與輸出單元等四
個主要單元,其結構關係則如下圖十所示。
圖十 單晶片基本架構
輸出輸入單元是用於將操作指令、數位與類比信號輸入單晶片內部程式作適
當處理與運算,得到結果再透過輸出單元去控制外界的電路設備等,或是顯示訊
息提供使用者知到。
中央處理單元
CPU
(運算單元+控制單元)
輸入單元
輸出單元
記憶體單元
17
3-1.1單晶片89C51的特性
8051 是目前市面上很受歡迎使用的單晶片微處理器之一,是由INTEL 公司
所開發出來,普遍地應用在工業界中。由於其使用普及,許多設計半導體晶片的
公司也有製造與8051 相容的單晶片,例如由ATMEL 公司所生產製造的89C51 單
晶片便與INTEL 公司的8051 完全相容,其間最大的不同是89C51 是可以重複燒
錄的,而8051 則不能重複燒錄。其他較著名的有Microchip PIC(16CXX)系列,
台灣國產品則有義隆電子EM78XX 系列、合泰半導體HT-XXXX 系列等等,可說相
當豐富。
以下列出 MSC-51單晶片的基本功能 :
為控制應用所設計的 8 位元 CPU
具有布林代數的運算指令
有 32條(4個 Port)雙向且每條都可以被單獨定址的 I/O
內部有 128Byte 可供儲存資料記憶體 RAM (8052 : 256 Bytes)
內部有兩個 16位元 Timer/Counter (8052 有 3 個)
有全多工傳輸信號 UART (串列埠)
5 個中斷源 , 有兩層優先權順序之中斷結構
內部有 4K位元組的程式記憶體
內部有時脈振盪器線路
程式記憶體可擴充至 64K位元組
資料記憶體可擴充至 64K位元組
18
CPU
時脈
產生器
中斷
控制器
128bytes
RAM
4K bytes
ROM
Timer 1
89C51 為 Intel 公司所推出的 8051系列產品之一,
其內部結構如下圖十一:
圖十一 89C51內部結構圖
Timer 0
UART
INT 0 INT 1
UART Timer 0
Timer 1
T 0
T 1
TXD RXD
匯流排控制器
4 個 8bits I/O ports
P0 P2 P1 P3
RD WR ALE PSEN
Address/Data
19
3-2 單晶片89C51的接腳圖
圖十二 單晶片89C51的接腳圖 圖十三 單晶片89C51
20
3-3程式編寫流程
8051 單晶片應用於控制上時,整體系統的設計包括軟體程式及硬體電路兩
方面。硬體電路設計是依受控系統之不同而異,雖然有時候系統的某些功能可以
採用軟體或硬體來完成,但在考量硬體成本及 8051單晶片運算能力所及程度,
以軟體程式來完成為較佳方法。
對於 8051 單晶片之編譯流程如下:
圖十四 8051單晶片之編譯流程
21
3-4 穩壓電路
由這顆 7805 IC 所組成穩壓電路,來支配本專題 8051控制所使用電源。
7805 這一顆穩壓 IC是很多電子電路的人所常用的一顆 IC,它的功能就是把
輸入 7~15 V的電壓,調整成 5V輸出的電壓,穩壓效果很不錯的零件,只有3支
腳,安裝使用方便,但常常需要加散熱片,因為輸出電流大一點時它會發熱,加
散熱片才能防止它燒燬。
78L05
470uf 100uf
1N4001
VCC
DC9V ~ 12V0.1uf(104)
圖十五 穩壓電路 5V線路
圖十六 穩壓晶片7805實體圖
22
3-5 動作流程說明
8051CPU啟動
正轉停止
逆轉停止
圖十七 動作流程說明
23
3-6 線路圖
P0.0
P0.1
P0.2
P0.3
P0.4
P0.5
P0.6
P0.7
P2.0
P2.1
P2.2
P2.3
P2.4
P2.5
P2.6
P2.7
VCC GND
+5V
2040
+5V
31EA
X1
X2
19
18
STAL
11.0592
9
39
38
37
36
35
34
33
32
21
22
23
24
25
26
27
28
P1.0
P1.1
P1.2
P1.3
P1.4
P1.5
P1.6
P1.7
P3.0
P3.1
P3.2
P3.3
P3.4
P3.5
P3.6
P3.7
RESET
1
2
3
4
5
6
7
8
10
11
12
13
14
15
16
17
RXD
TXD
INT.0
INT.1
T.0
T.1
WR
RD
+5V
89C5130P
30P
10K
+5V
工作指示燈
470
LED
+5V
10K
1K C945
Relay 1
1N4001
470LED
+5V
10K
1K C945
Relay 1
1N4001
470LED
馬達
+12V
+12V
停止點(1)
停止點(2)
+5V
3uf
圖十八 線路圖
24
第四章 製作方法
4-1 材料表
元件 數量 說明 元件 數量 說明
AT89C51 1 單晶片處理器 直流馬達 1 附減速機
7805 1 5V電源穩壓IC 馬達連結器 1
11.0952MHz 1 陶瓷振盪器 繼電器 2 5V
2 5V
3.3u/10V 1 電解電容 鋁圓棒 4
33P 2 陶瓷電容
220U/25V 2 電解電容
100U/10V 1 電解電容
1N4001 2 整流二極體
10U/10V 1 電解電容
C945 3 NPN電晶體
RAS0510 1 5V單刀雙擲繼電器
LED 4 發光二極體
10K 2 碳膜電阻(1/4W 5%)
1K 4 碳膜電阻(1/4W 5%)
470R 4 碳膜電阻(1/4W 5%)
100K 1 碳膜電阻(1/4W 5%)
ldr 3 光敏電阻
端子台 1 8P
洞洞板 1 KT112
40P座 1 89C51用
微動開關 2
鋁板 3 底板
25
4-2 零件圖
1
材質 : 鋁 6061
單位 : mm
數量 : 4
1212
M4 × 2Φ10
139
柱
圖十九 支柱
2
6
22
86
15
M4
材質 : SS41
單位 : mm
數量 : 1
連結器
Φ17
圖二十 連結器
26
150
150
3
材質 : 鋁 6061
單位 : mm
數量 : 1
旋轉盤
圖二十一 旋轉盤
200
200
4
材質 : 鋁 6061
單位 : mm
數量 : 2
旋轉盤固定座
圖二十二 旋轉盤固定座
27
參考文獻
1. 劉煥章、鄧貴生、李安邦 ,「機械設計」 ,
大學圖書出版社。1972
2. 賴耿陽 ,「機械材料選用技術」,
復漢書局股份有限公司。1997
3. 顏鴻森 ,「機構學,」東華書局股份有限公司。1997
4. 陳明熒,「單晶片 8051 實作入門」,
文魁資訊股份有限公司。 2003
5. 劉炳麟、蔡春益,「自動控制」,全華圖書股份有限公司。2002
6. 黃元茂,「機械設計-上」,高立出版社。2000
7. 曹昭陽 譯,「電動馬達與控制」,五南文化事業。2010
8. 劉銘中 林琮烈編著,「MS-51單晶片原理與 I / O 應用 」
儒林圖書公司 ,2001
9. 楊明豐編著,「8051單晶片設計實務」
碁峰資訊股份有限公司。 2001
28
附註( 一 )
圖二十三 製作過程 (一)
圖二十五 製作過程之零件名稱 (二)
29
圖二十四 製作過程 (三)
圖二十六 製作過程 (四)
30
附註 ( 二 )
程式
;******************
; Auto Scan Program ;宣告
;******************
MotorForward reg P2.0 ;Relay 1 MOTOR 正轉
MotorReverse reg P2.1 ;Relay 2 MOTOR 反轉
SunLight reg P0.0 ;LDR 1
SunLocation1 reg P0.1 ;LDR 2
DipSwitch1 reg P1.2 ;SW 1
DipSwitch2 reg P1.3 ;SW 2
LocationSwitch1 reg P1.0 ;停止 SW1
LocationSwitch2 reg P1.1 ;停止 SW2
MotorRunFlag reg 20h.0
ReverseFlag reg 20h.1
DayNightFlag reg 20h.2
BlinkingTimer EQU 30H
TimeDelay EQU 31H
Function EQU 32H
Location EQU 33H
PreLocation EQU 34H
SunPosition EQU 35H
LightSWDelayEQU 36H
Distance EQU 37H
StopDelay EQU 38H
TimeBase EQU -2000 ; Constant 定義參數
Blinking EQU 100 ; Constant 定義參數
;--------------------------------------------
31
ORG 00H ;宣告以下程式由位址 0000H儲存
JMP SystemInitial ;
ORG 0BH ;
JMP Timer0_Int ;跳到標記 Timer_Int 執行 INT0中斷副程式
ORG 30H
SystemInitial: ;啟始設定
CLR IE.7
MOV P0,#FFH ;將立即常數輸出到 PORT0
MOV P1,#FFH ;將立即常數輸出到 PORT1
MOV P2,#00H ;將立即常數輸出到 PORT2
MOV P3,#FFH ;將立即常數輸出到 PORT3
CLR RS1 ;PSW.4 , 00: BANK 0 , 01: BANK 1
CLR RS0 ;PSW.3 10: BANK 2 , 11: BANK 3
CLR MotorRunFlag
MOV SP,#60H
CALL TIMER0_SETTING
SETB IE.7
MOV LightSWDelay,#20
MOV StopDelay,#100 ; 定位原始位置
;************* MAIN *********************
Main_Loop: ; 主程式開始
CALL SensorCheck
CALL DipSwitchCheck
CALL LocationCheck
MOV A,Location
CJNE A,Distance,XXX
CALL MotorStop
JMP Main_Loop
XXX: JC YYY
CALL MotorReverseRun
JMP Main_Loop
YYY:
CALL MotorForwareRun
32
JMP Main_Loop ;跳回主程式
;=========================================
;*******************
LocationInitial: ;啟使定位
;*******************
MOV Location,#08
MOV Distance,#01
CALL MotorMoveToDistance
RET
;*******************
MotorMoveToDistance: ;移轉馬達至定位點
;*******************
$LoopCheck:
CALL LocationCheck
MOV A,Location
CJNE A,Distance,$1
CALL MotorStop
RET
$1: JC $2
CALL MotorReverseRun
JMP $LoopCheck
$2: CALL MotorForwareRun
JMP $LoopCheck
;*******************
SensorCheck: ;讀取定位點
;*******************
JNB SunLight,$1
33
SETB DayNightFlag
$1: MOV SunPosition,#01
JB SunLocation1,$END
MOV SunPosition,#03
JB SunLocation2,$END
MOV SunPosition,#05
RET
$END: MOV Distance,SunPosition
RET
;*******************
DipSwitchCheck:
;*******************
MOV Function,#00
JB DipSwitch1,$1
MOV Function,#01
34
JB DayNightFlag,$00
SETB LightSwitch
RET
$00: CLR LightSwitch
RET
$1: JB DipSwitch2,$2
MOV Function,#02
JB DayNightFlag,$10
SETB LightSwitch
MOV LightSWDelay,#200
RET
$10: MOV A,LightSWDelay
JNZ $11
CLR LightSwitch
RET
$11: SETB LightSwitch
RET
35
$2: JB DipSwitch3,$3
MOV Function,#03
SETB LightSwitch
RET
$3: JB DipSwitch4,$END
MOV Function,#04
CLR LightSwitch
$END: RET
;*******************
LocationCheck: ;位置讀取
;*******************
JB LocationSwitch1,$1
MOV Location,#01
RET
$1: JB LocationSwitch2,$2
MOV Location,#03
36
RET
$2: JB LocationSwitch3,$3
MOV Location,#05
RET
$3: RET
$4: INC Location
$5: RET
;*******************
GOTO_Location1: ;位置 1
;*******************
MOV Distance,#01
CALL MotorMoveToDistance
RET
;*******************
GOTO_Location3: ;位置 2
;*******************
MOV Distance,#03
37
CALL MotorMoveToDistance
RET
;*******************
MotorForwareRun: ;馬達正轉
;*******************
MOV A,StopDelay
JNZ $Stop
JNB ReverseFlag,$XXX
JNB MotorRunFlag,$XXX
CALL MotorStop
JMP MotorForwareRun
$XXX: SETB MotorRunFlag
CLR ReverseFlag
SETB MotorForward
38
CLR MotorReverse
RET
$Stop:
CLR MotorForward
CLR MotorReverse
JMP MotorForwareRun
;*******************
MotorReverseRun: ;馬達反轉
;*******************
MOV A,StopDelay
JNZ $Stop
JB ReverseFlag,$XXX
JNB MotorRunFlag,$XXX
CALL MotorStop
JMP MotorReverseRun
$XXX: SETB MotorRunFlag
39
SETB ReverseFlag
CLR MotorForward
SETB MotorReverse
RET
$Stop:
CLR MotorForward
CLR MotorReverse
JMP MotorReverseRun
;*******************
MotorStop: ;馬達停止
;*******************
CLR MotorRunFlag
MOV StopDelay,#100
CLR MotorForward
CLR MotorReverse
RET
;---------------------------
40
;***********************
TIMER0_SETTING: ;計時器設定
;***********************
MOV A,TMOD
CLR ACC.3 ; GATE CONTROL 0:TR0 / 1:TR0
& INT0 ENABLE
CLR ACC.2 ; 0:TIMER (SYSTEM CLOCK) /
1:COUNTER (T0)
CLR ACC.1 ; 00:8-BIT T/C WITH PRESCALER
01:16-BIT T/C
SETB ACC.0 ; 10:8-BIT AUTO RELOAD T/C
11:8-BIT T/C
MOV TMOD,A
SETB TCON.4 ; 1:TURN ON / 0:TURN OFF
SETB IE.1 ; 1:SET/0:CLEAR TIMER0
INTERRUPT
MOV TH0,#>TimeBase
MOV TL0,#<TimeBase
MOV BlinkingTimer,#Blinking
41
RET
;***********************
Timer0_Int: ;Timer0的中斷服務程式,當Timer0計時到就
會引起中斷,
;*********************** ;而使得這一段程式被執行一次。
PUSH A
PUSH PSW
MOV TH0,#>TimeBase
MOV TL0,#<TimeBase
MOV A,StopDelay
JZ $XXX
DEC StopDelay
$XXX: DJNZ BlinkingTimer,$Timer0_END
MOV BlinkingTimer,#Blinking
CPL BlinkingLed
JNB DayNightFlag,$Timer0_END
MOV A,LightSWDelay
JZ $Timer0_END
42
DEC LightSWDelay
$Timer0_END:
POP PSW
POP A
RETI
;---------------------------------