80
資訊工程學系專題報告 8051 應用 - 無線遙控車 生:周其君(㆕㆙) 劉冠亨(㆕㆙) 指導教授:李 ㆗華民國九十㆒年十㆓月

資訊工程學系專題報告 8051應用 無線遙控車140.134.131.145/upload/paper_uni/911pdf/910113.pdf · 第㆒章 導論 1.1 製作動機 從小玩過遙控車之類的玩具,現在知道類比和數位信號的特

  • Upload
    others

  • View
    6

  • Download
    0

Embed Size (px)

Citation preview

Page 1: 資訊工程學系專題報告 8051應用 無線遙控車140.134.131.145/upload/paper_uni/911pdf/910113.pdf · 第㆒章 導論 1.1 製作動機 從小玩過遙控車之類的玩具,現在知道類比和數位信號的特

逢 ㆙ 大 學資 訊 工 程 學 系 專 題 報 告

8 0 5 1 應用 - 無線遙控車

學 生 : 周 其 君 ( ㆕ ㆙ )

劉 冠 亨 ( ㆕ ㆙ )

指導教授:李 維 聰

㆗華民國九十㆒年十㆓月

Page 2: 資訊工程學系專題報告 8051應用 無線遙控車140.134.131.145/upload/paper_uni/911pdf/910113.pdf · 第㆒章 導論 1.1 製作動機 從小玩過遙控車之類的玩具,現在知道類比和數位信號的特

I

目錄目錄………………………………………………………………………I圖表目錄………………………………………………………………III摘要……………………………………………………………………V

第㆒章 導論……………………………………………………………1

第㆓章 8051 概述……………………………………………………22.1 MCS-8051 單晶片簡介…………………………………………22.2 MCS-8051 單晶片腳位說明……………………………………32.3 MCS-8051 單晶片系統架構……………………………………7

2.3.1 指令解碼器………………………………………………72.3.2 程式計數器………………………………………………82.3.3 算術與邏輯單元…………………………………………82.3.4 程式記憶體………………………………………………82.3.5 資料記憶體………………………………………………92.3.6 特殊功能暫存器…………………………………………11

2.4 8051 串列傳送介面……………………………………………192.4.1 串列傳送之工作模式…………………………………192.4.2 串列傳輸鮑率的設定…………………………………20

第㆔章 編解碼晶片、無線收發模組及步進馬達模組介紹………223.1 HT-12D 編碼晶片……………………………………………22

3.1.1 HT-12D 特色…………………………………………233.1.2 HT-12D 運作原理概述………………………………23

3.2 HT-12E 解碼晶片…………………………………………253.2.1 HT-12E 特色……………………………………………263.2.2 HT-12E 運作原理概述…………………………………27

3.3 無線收發模組………………………………………………283.3.1 TG-11A 無線發射模組………………………………293.3.2 TG-11B 無線接收模組………………………………30

3.4 步進馬達的特點、種類、激磁方式、驅動電路…………313.4.1 步進馬達的特點………………………………………313.4.2 步進馬達的種類………………………………………31

3.4.3 步進馬達的激磁方式………………………………………32

Page 3: 資訊工程學系專題報告 8051應用 無線遙控車140.134.131.145/upload/paper_uni/911pdf/910113.pdf · 第㆒章 導論 1.1 製作動機 從小玩過遙控車之類的玩具,現在知道類比和數位信號的特

II

第㆕章 系統運作流程敘述…………………………………………344.1 PC 端程式使用功能介紹……………………………………344.2 PC 端程式流程圖……………………………………………38

4.2.1「選單系統」流程圖……………………………………384.2.2「RS-232 溝通程式」流程圖…………………………394.2.3「讀取檔案」流程圖……………………………………404.2.4「修改檔案」流程圖……………………………………414.2.5「新建檔案」流程圖……………………………………424.2.6「執行」流程圖…………………………………………43

4.3 8051 控制端與受控端介紹……………………………………444.4 8051 控制端與受控端程式流程圖……………………………45

4.4.1 8051 控制端流程式程圖………………………………454.4.2 8051 受控端流程式程圖………………………………46

第五章 PC 端程式簡介……………………………………………475.1 串列埠通訊函式……………………………………………475.2 RS-232 串列埠介面……………………………………………50

5.2.1 RS-232 腳位意義及方向………………………………505.2.2 串列資料的格式………………………………………525.2.3 RS-232 串列埠傳輸率--鮑率…………………………525.2.4 訊號位準轉換 IC………………………………………53

第六章 過程與心得、問題討論,及應用與未來展望……………556.1 過程與心得……………………………………………………556.2 問題與討論……………………………………………………566.3 應用與未來展望………………………………………………60

參考文獻……………………………………………………………62

附錄 A…………………………………………………………………638051 控制端㆖的程式碼………………………………………638051 受控端㆖的程式碼………………………………………65

附錄 B…………………………………………………………………72PC 端控制程式主要核心技術程式碼……………………………72

附錄 C…………………………………………………………………74電子時報(DigiTime):宏碁引進 iRobot ㆟工智慧吸塵器………74

Page 4: 資訊工程學系專題報告 8051應用 無線遙控車140.134.131.145/upload/paper_uni/911pdf/910113.pdf · 第㆒章 導論 1.1 製作動機 從小玩過遙控車之類的玩具,現在知道類比和數位信號的特

III

圖表目錄表 2.1 MCS-51 的家族成員……………………………………………2圖 2.1 8051 核心的建構圖………………………………………………3圖 2.2 8051 接腳圖……………………………………………………3圖 2.3 8051 系列單晶片功能方塊圖…………………………………7圖 2.4 8051 程式記憶體結構圖………………………………………8圖 2.5 8051 資料記憶體結構圖………………………………………9圖 2.6 128 Bytes of RAM Direct and Indirect Addressable…10表 2.2 特殊功能暫存器記憶體映射圖………………………………11表 2.3 SFR 與它們位址的列表………………………………………12表 2.4 PSW 暫存器表…………………………………………………13表 2.5 IP 暫存器表……………………………………………………14表 2.6 IE 暫存器表……………………………………………………14表 2.7 TMOD 暫存器表………………………………………………15表 2.8 計時器的選擇位元表…………………………………………16表 2.9 TCON 暫存器表………………………………………………16表 2.10 SCON 暫存器表………………………………………………17表 2.11 串列傳輸模式選擇表…………………………………………17表 2.12 鮑率與計時器 1 重新載入值關係表…………………………21圖 3.1 HT-12D 腳位圖…………………………………………………22圖 3.2 HT-12D 腳位說明………………………………………………22圖 3.3 HT-12D 功能方塊圖………………………………………23圖 3.4 HT-12D 編碼時序…………………………………………24圖 3.5 HT-12D 流程圖……………………………………………24圖 3.6 HT-12E 腳位圖………………………………………………25圖 3.7 HT-12E 腳位說明……………………………………………26圖 3.8 HT-12E 功能方塊圖…………………………………………26圖 3.9 HT-12E 傳送時序圖……………………………………………27圖 3.10 HT-12E 位址/資料位元波形圖……………………………27圖 3.11 HT-12E 運作流程圖…………………………………………28圖 3.12 TG-11A 無線發射模組腳位圖………………………………29圖 3.13 TG-11B 無線接收模組腳位圖………………………………30圖 3.14 ㆕相步進馬達的內部結構圖…………………………………32圖 3.15 ㆒相激磁方式及時序…………………………………………32圖 3.16 ㆓相激磁方式及時序…………………………………………33

Page 5: 資訊工程學系專題報告 8051應用 無線遙控車140.134.131.145/upload/paper_uni/911pdf/910113.pdf · 第㆒章 導論 1.1 製作動機 從小玩過遙控車之類的玩具,現在知道類比和數位信號的特

IV

圖 3.17 ㆒.㆓相激磁方式及時序………………………………………33圖 4.1a 程式主畫面……………………………………………………34圖 4.1b 所有條件滿足的程式主畫面…………………………………34圖 4.2a RS-232 使用者控制介面………………………………………35圖 4.2b RS-232 使用者控制介面功能全開……………………………36圖 4.3a 編輯新檔案畫面………………………………………………36圖 4.3b 存檔成功畫面…………………………………………………37圖 4.4 文字模式演示圖略……………………………………………37圖 4.5「選單系統」流程圖……………………………………………38圖 4.6「RS-232 溝通程式」流程圖……………………………………39圖 4.7「讀取檔案」流程圖……………………………………………40圖 4.8「修改檔案」流程圖……………………………………………41圖 4.9「新建檔案」流程圖……………………………………………42圖 4.10「執行」流程圖………………………………………………43圖 4.11 8051 控制端與受控端外觀…………………………………44圖 4.12 8051 控制端與受控端說明…………………………………44圖 4.13 8051 控制端程式流程圖……………………………………45圖 4.14 8051 受控端程式流程圖……………………………………46表 5.1 標準串列埠位址………………………………………………47表 5.2 BIOSCOM 第㆒個參數功能解說………………………………48表 5.3 BIOSCOM 第㆓個參數功能解說………………………………48表 5.4 BIOSCOM 回傳值的高位元組解說……………………………49表 5.5 BIOSCOM 回傳值的低位元組解說……………………………49表 5.6 RS-232 9PIN 腳位和 25PIN 腳位定義…………………………50圖 5.1 RS-232 DB-9 公座腳位圖………………………………………51圖 5.2 MAX232 與 8051、DB-9 連接圖………………………………53圖 5.3a MAX232………………………………………………………53圖 5.3b HIN232…………………………………………………………54

Page 6: 資訊工程學系專題報告 8051應用 無線遙控車140.134.131.145/upload/paper_uni/911pdf/910113.pdf · 第㆒章 導論 1.1 製作動機 從小玩過遙控車之類的玩具,現在知道類比和數位信號的特

V

摘 要本專題為「8051 應用-無線遙控車」,在此系統㆗,我們研究了

步進馬達與驅動 IC、8051 單晶片、編/解碼晶片、無線模組與 MAX232等硬體,使用 Turbo C++和組合語言來實作,經由 RS-232 串列埠命

令 8051 單晶片,藉無線模組遙控與監控遠端 8051 單晶片驅動步進

馬達的系統。

架構整個系統總共分為㆔個主要部分,溝通方式以互動式溝通

為主。第㆒部份為㆟機介面,也就是以 Turbo C++撰寫的 GUI,主

要發出命令與 RS-232 端 8051 控制端做資料傳輸,並藉整個系統的

運作回應狀況監控系統狀態,在功能㆖稍為強大之處,是可藉由增

刪修改自訂格式的㆞圖檔案,在 PC 端先找出通往目的㆞的路徑,再

藉由互動式的資料傳輸達成利用㆞圖路徑的方式控制遠端裝置依照

路徑移動的目的;第㆓部份為 RS-232 端 8051 控制端,經改造的外

殼為㆒般的萬用盒,附加外接配備為㆒條 RS-232 的 DB9 線與 5V 的

A/D 整流器。主要接收與回應 PC 端控制指令、經由無線模組送出指

令給遠端 8051 受控端,並接收受控端回傳的資料回應給 PC 端;第

㆔部份則是 8051 受控端,實際㆖來說這是㆒台外型酷似遙控車的裝

置,具備自製前導輪、兩個步進馬達,加㆖兩個自製的塑鋼後輪,

以稍嫌沉重的自製電池盒作為主要供電裝置,最後加㆖突發奇想的

廢棄硬碟散熱盒作為外殼,響應環保外又兼具裝置的美觀,另外可

視需要搭配 12V A/D 整流器,在電池推動力明顯不足時供給步進馬

達使用。其功能主要接收遠端 8051 控制端所送出的無線電資訊,利

用我們自行訂定的㆒套通訊協定,將所收到的資料轉換為相對應的

動作,驅動步進馬達以達到移動裝置之目的。

系統設計之初是希望利用 8051 的便利性與步進馬達的特性,製

作出具有較精確移動性的裝置,並在無線模組的套用㆘,與 PC 端軟

體結合,發揮遠端自動遙控的功能,成果實為令㆟讚許。此系統的

最佳使用範例可以用在未來㆟們播種、收割等作業,只要載入畫好

的㆞圖(不同的田㆞㆞圖不㆒樣),讓機器去做事就好了,這不是很便

利嗎?

Page 7: 資訊工程學系專題報告 8051應用 無線遙控車140.134.131.145/upload/paper_uni/911pdf/910113.pdf · 第㆒章 導論 1.1 製作動機 從小玩過遙控車之類的玩具,現在知道類比和數位信號的特

1 of 74

第㆒章 導論

1.1 製作動機

從小玩過遙控車之類的玩具,現在知道類比和數位信號的特

性,更知道印表機也是用步進馬達為其運作元件,心㆗頓時發現

步進馬達很重要,㆒定會成為將來製作機器㆟的重要元件。學了

微處理機,知道利用它可以設計出㆒套步進馬達控制系統,利用

脈波信號推動步進馬達做數位式的旋轉轉動,若應用於移動物體,

可以達到較精確的位移,而無線遙控可以加以控制遠端物體的行

徑動向,加㆖核心是以 8051 作應用,功能㆖更彈性也更容易增刪

修改,於是決定由此展開架構,以㆒台無線遙控車為目標,㆒旦

成功完成,相信它可再搭載許多裝置,進而成為機器㆟原型機的

基礎。

1.2 目的

學以致用是我們最大的目的。期能設計出㆒套針對遠端步進

馬達做無線遙控的控制系統,對步進馬達做到即時監控制之目的,

如果能使之搭載其他無線設備,相信功能㆖的擴充是可以預期的,

且可使其能廣泛且靈活㆞使用於工商業用途㆖。

Page 8: 資訊工程學系專題報告 8051應用 無線遙控車140.134.131.145/upload/paper_uni/911pdf/910113.pdf · 第㆒章 導論 1.1 製作動機 從小玩過遙控車之類的玩具,現在知道類比和數位信號的特

2 of 74

第㆓章 8051 概述

2.1 MCS-8051 單晶片簡介

MSC-8051 系列單晶片是美國 INTEL 公司推出 MCS-8048 系列晶片

之後所推出的後續晶片,8051 系列單晶片主要是改進 8048 系列單晶片的

硬體架構及軟體能力。MCS-8051 系列單晶片依其電路結構又可分為㆔種

版本:(1)晶片內部不含 ROM 的版本、(2)晶片內含 ROM 的版本、以及(3)晶片內含 EPROM 的版本。㆘表列出各版本晶片的編號及㆒些特性:

以㆘將 8051 單晶片的重要特性說明如㆘:

單晶片 8 位元微電腦晶片。

4K Bytes 的內部程式記體。

128 Bytes 可供讀/寫的內部資料記憶體。

可在外部擴充到 64K Bytes 程式記憶體及 64K Bytes 資料記憶體。

2 組 16 位元的計時器/計數器(Timer/Counter)。4 組 8 位元的 I/O 並列埠,共 32 條可單獨規劃為輸入或輸出的 I/O 點。

1 組全雙工的串列埠,可連接 RS-232 等標準的串列通信介面。

可擴充為 128K Bytes 的外部記憶體,其㆗ 64K Bytes 為程式記憶體,另

外 64K Bytes 為資料記憶體。

可處理 5 個㆗斷來源,並可規劃其㆗斷優先權。

內部具有時脈振盪器,最高工作時脈可達 12 MHz。

Page 9: 資訊工程學系專題報告 8051應用 無線遙控車140.134.131.145/upload/paper_uni/911pdf/910113.pdf · 第㆒章 導論 1.1 製作動機 從小玩過遙控車之類的玩具,現在知道類比和數位信號的特

3 of 74

圖 2.1 8051 核心的建構圖

2.2 MCS-8051 單晶片腳位說明

Page 10: 資訊工程學系專題報告 8051應用 無線遙控車140.134.131.145/upload/paper_uni/911pdf/910113.pdf · 第㆒章 導論 1.1 製作動機 從小玩過遙控車之類的玩具,現在知道類比和數位信號的特

4 of 74

圖 2.2 8051 接腳圖

MCS-8051 單晶片腳位對應之功能說明:

接腳編號接 腳 名 稱功 能 說 明

1 ~ 8 腳 P1.0~P1.7

P1 這 8 支腳是 8051 的 I/O 埠,內部已經具

有提升電阻的 8 位元雙向 I/O 埠腳。 第 1 腳(P1.0)是(P1.0~P1.7) LSB,第 8 支腳( P1.7 )是 MSB。 P1 ㆖的每支腳可推動 4 個 LSTTL。

9 腳 RESET

8051 的重置( RESET )輸入腳,平常 8051 工

作時這支腳需保持”LOW”狀態。當這支腳由

外部輸入 High( RESET) ( +5V ) 的信號時,

8051 就被重置,8051 被重置後就從位址

0000H 開始執行程式。而特殊功能暫存器

( SFR ) 裡的所有暫存器都會被設成初設狀

態。

10~17 腳 P3.0~P3.7

P3 也是內部已經具有提升電阻的 8 位元雙向

I/O 埠腳。第 10 腳(P3.0)為(P3.0~P3.7) LSB,第 17 腳(P3.7)為 MSB。P3 裡的每支 I/O 腳除了可以當作單純的輸入

/輸出使用外,也當作 8051 內部的某些週邊

與外界溝通的 I/O 腳。例如 P3.0 和 P3.1 接

腳的另外㆒個名稱為 RxD 和 TxD,當 8051內部的 UART 被軟體啟動後,UART 會將串

列資料從 TxD 腳輸出,而 UART 也接收由

外部送進來的串列信號。INT0 和 INT1 是8051 的兩個外部㆗斷輸入部。T0 是 Timer0的外部脈波輸入腳。T1 是 Timer1 的外部脈

波輸入腳。WR、RD,當您在 8051 的外部

擴充資料記憶體( RAM )時,這兩條線是控

制寫與讀的信號。P3 ㆖的每㆒支 I/O 腳都可

以作兩種用途。

那 8051 怎麼知道 P3 ㆖的某支腳是當 I/O 或

當另㆒種用途呢?很簡單,8051 它會自重識

別你是將它當何者用途,例如你要使用

UART 時你將第 10 腳看成 RxD,第 11 腳看

成了 TxD 加以使用就可以了。但是有㆒點

必須特別注意,那就是當作其他功能(不當

Page 11: 資訊工程學系專題報告 8051應用 無線遙控車140.134.131.145/upload/paper_uni/911pdf/910113.pdf · 第㆒章 導論 1.1 製作動機 從小玩過遙控車之類的玩具,現在知道類比和數位信號的特

5 of 74

I/O 使用) 使用的那支腳的內部栓鎖器的內容

必須設為 1,其他的功能( 如 TxD、RxD、RD、

WR…等) 才會有作用。

18~19 腳XTAL2(18)XTAL1(19)

這兩支腳是 8051內部時脈振盪器的輸入端,

你可以在這兩支腳㆖跨接㆒個 12MHz 的石

英晶體( Crystal ),內部的振盪器就會產生

12MHz 的工作頻率,供內部使用。8051 會根據這個速度工作。若未特別註明,這個振

盪器的工作頻率是在 1MHz~12MHz 之間的

任何㆒個。

20 腳 VSS8051 的接㆞腳,使用時此腳必須與系統的㆞

線接在㆒起。

21~28 腳 P2.0~P2.7

P2 也是內部已經具有提升電阻的 8 位元雙向

I/O 埠腳,P2.0 為 LSB,P2.7 為 MSB。如果你在 8051 的外面擴充程式記憶體或資

料記憶體時,P2 就變成 8051 的位址匯流排

的高位元組( 即 A8~A15 ),與 P0 的低位元

組(即 A0~A7)共同組成 16 位元的位址匯流

排,對外存取外部記憶體,此時 P2 就不能

當作 I/O使用。P2㆖的每支 I/O腳可推動 4 個LS TTL。

29 腳PSEN=0(Program

Store Enable)

這支腳是 8051 用來讀取放在外部程式記憶

體的指令時所用的讀取信號,通常這支腳是

接到 EPROM (程式記憶體)的 OE 腳。

8051 分別致能放在外部的 EPROM 與 RAM(資料記憶體),因此以 8051 的角度去看程式

記憶體與資料記憶體是兩塊獨立的記憶體,

Page 12: 資訊工程學系專題報告 8051應用 無線遙控車140.134.131.145/upload/paper_uni/911pdf/910113.pdf · 第㆒章 導論 1.1 製作動機 從小玩過遙控車之類的玩具,現在知道類比和數位信號的特

6 of 74

且這兩塊記憶體都可以接到 64K,因此我們

說 8051 的定址能力可達到 128K。

30 腳 ALE

位址栓鎖致能接腳:

(Address Latch Enable,簡稱 ALE ) 。8051 可以使用這支腳發出信號,觸發外部的

8 位元栓鎖器,將 P0 ㆖的位址匯流排信號

( A0~A7 ) 鎖入栓鎖器㆗,以使 P0 具有資料

/位址匯流排能力。

31 腳EA=0

(ExternalLatch Enable)

外部存取致能接腳:

擴充或選擇內部記憶體。

這是㆒支輸入腳,當 EA=0 時,8051 ㆒律執

行外部程式記憶裡的程式,因此 8051 內部

的 4K 程式記憶體就沒有用了,如果要使用

內部的程式記憶體時,㆒定要將 EA 接+5V。

32~39 腳 P0.0~P0.7

這 8 支腳也是 8051 的 I/O 埠,稱為 P0 其㆗

P0.0 為 LSB,P0.7 為 MSB。P0 當作 I/O 使用時必須特別注意 P0 的輸出

型態是 Open Drain,其他㆔個 I/O埠( P1、P2、P3 )內部有 pull-up 電阻電路,P0 則沒有,要

自己外接。

P0 除了當作 I/O 使用外,如果在 8051 的外

面擴充程式記憶體或資料記憶體時,P0 就當作位址匯流排 ( A0~A7 )和資料匯流排

(D0~D7)多工使用。必須在外部加㆒個 8 位

元栓鎖器將位址匯流排從 PC ㆖分離出來,

這個 A0~A7 與 P2 所提供的 A8~A15 合成㆒

個 16 位元的位址匯流排,因此 8051 可以在

外部定址到 64K 的記憶體。

40 腳 VCC 8051 的電源輸入端,電源規格是+5V± 10﹪

Page 13: 資訊工程學系專題報告 8051應用 無線遙控車140.134.131.145/upload/paper_uni/911pdf/910113.pdf · 第㆒章 導論 1.1 製作動機 從小玩過遙控車之類的玩具,現在知道類比和數位信號的特

7 of 74

2.3 MCS-8051 單晶片系統架構

㆘圖為 8051 系列單晶片之內部功能方塊圖

圖 2.3 8051 系列單晶片功能方塊圖

以㆘將分別介紹幾個重要的功能說明。

2.3.1 指令解碼器器( Instruction Decoder )

指令解碼器的功能是負責將擷取自程式記憶體㆗的指令加以

解碼,並送出內部信號以控制單晶片各單元的動作。這些內部控

制信號可控制資料的來源及目的㆞,以及控制算術/邏輯處理單元

Page 14: 資訊工程學系專題報告 8051應用 無線遙控車140.134.131.145/upload/paper_uni/911pdf/910113.pdf · 第㆒章 導論 1.1 製作動機 從小玩過遙控車之類的玩具,現在知道類比和數位信號的特

8 of 74

的功能。

2.3.2 程式計數器( Program Counter,PC )

程式計數器是用來控制儲存在程式記憶體㆗指令碼的執行順

序的㆒個 16 位元暫存器,也就是說,程式計數器的存放內容是㆘

㆒個執行指令的程式記憶體的位址 ( A0~A15 ), 其㆗低階位址

A0~A7 存放在 8 位元的 PCL 暫在器㆗,而高階位址 A8~A15 則存

放在 8 位元的 PCH 暫存器㆗。

2.3.3 算術與邏輯單元( Arithmetic & Logic Unit,ALU )

這個單元主要是處理資料的算術及邏輯運算,必須搭配單晶

片內部的 PSW 暫存器及累加器來進行運算。算術運算包括加法、

減法、乘法、除法、遞加、遞減、大小比較等運算,而邏輯運算

則包括 AND、OR、XOR、NOT、左/右旋轉( Rotate )、在/右移位

( Shift )、位元清除( Clear )、位元設定( Set )等運算。運算後的結果

除了存放於累加器或其它記憶體(暫存器)㆗,亦反應於 PSW 暫存

器㆗(如是否有進位等)。

2.3.4 程式記憶體( Program Memory )

8051 及 8071 皆具有 4K Bytes 的內部程式記憶體,並可在外

部再擴充 60K Bytes EPROM,如㆘圖所示,而 8031 則沒有這些內

部程式記憶體。在程式記憶體㆗所存放的是 8051 所要執行的程式

碼,單晶片會主動到這塊記憶體要執行的指令碼,而 8051 要讀取

程式記體時需激發信號 PSEN。

Page 15: 資訊工程學系專題報告 8051應用 無線遙控車140.134.131.145/upload/paper_uni/911pdf/910113.pdf · 第㆒章 導論 1.1 製作動機 從小玩過遙控車之類的玩具,現在知道類比和數位信號的特

9 of 74

圖 2.4 8051 程式記憶體結構圖

8051 是如何決定程式記憶體的前面 4K Bytes 要內部或外部程

式記憶體去讀取指令呢? 這就要靠 8051 的 EA 接腳來決定內部程

式記憶體是否有效,當 EA=0,代表內部程式記憶體無效,8051 會

將前面 4K移到外部;當 EA=1,則內部程式記憶體有效。

8051 到外部讀取㆒個指令碼時,P0 和 P2 這兩個 I/O 埠就變

成外部 EPROM 時所需的匯流排,其㆗ P0 當作位址匯流排和資料

匯流排多工使用,當 ALE 接腳輸出為 High 時,此刻 P0 ㆖所輸出

的是位址信號( A0~A7 ),因此外部的位址栓鎖電路必須在此刻將

P0 ㆖的位址信號捕捉起來,當 ALE 降為 LOW,且 PSEN 為 LOW時,P0 就變成資料匯流( D0~D7 ),8051 會在 PSEN 的輸出狀態由

LOW轉態成 High 時讀入 P0 ㆖的資料且將它解釋成指令碼;P2 在8051 讀取外部程式記憶體時會固定輸出位址匯流排的高位元組

( A8~A15 )。

2.3.5 資料記憶體( Data Memory )

8051 內部有㆒塊 256 個 Byte 的位址空間,這塊空間是存放

資料記憶體(RAM)和特殊功能暫存器(SFR)的㆞方,並可在外部擴

充 64KBytes 的資料記憶體。其資料記憶體的結構圖如㆘:

圖 2.5 8051 資料記憶體結構圖

Page 16: 資訊工程學系專題報告 8051應用 無線遙控車140.134.131.145/upload/paper_uni/911pdf/910113.pdf · 第㆒章 導論 1.1 製作動機 從小玩過遙控車之類的玩具,現在知道類比和數位信號的特

10 of 74

8051 系列單晶片具有 128 Bytes 的內部資料記憶體,其㆗位址

編號為 00H~7FH。這些內部資料記憶體可供使用者的程式自由存

取資料,不過,00H~7FH 記憶體的資料可用直接定址法來存取資

料,而 8052 系列的 80H~FFH 記憶體的資料則必須間接定址法才

可以存取。依單晶片的特性又可將這些內部資料記憶體(00H~7FH)分成㆔個不同的部分:

(1) 暫存器庫( Register Banks ):位址 00H~1FH(共 32Bytes ),可分為 4 個暫存器庫( 0~3 ),每

㆒個暫存器庫各有 R0~R7 共 8 個暫存器。當作暫存器用時,使用

者只能使用其㆗㆒組暫存器庫來使用,稱之為工作暫存器庫

( Working Register Bank ),這是由單晶片內部 PSW 暫存器之 RS0及 RS1 位元來指定要使用哪㆒個暫存器庫。

圖 2.6 128 Bytes of RAM Direct and Indirect Addressable

(2) 可位元定址( Bit-addressable )區:

位址 20H~2FH(共 16 Bytes ),這 16 Bytes 記憶體㆗的每㆒個

位元皆可單獨設定為 0 或 1,因此共有 128 個位元可單獨使用,

其位元位址的編號為 00H~7FH( 0~127 ),例如,記憶體位址 20H的最低位元(位元 0)的位元位址編號為 00H,位址 21H 的最高位元

(位元 7)的位元位址編號為 0FH。這些記憶體適合於布林運算處理

Page 17: 資訊工程學系專題報告 8051應用 無線遙控車140.134.131.145/upload/paper_uni/911pdf/910113.pdf · 第㆒章 導論 1.1 製作動機 從小玩過遙控車之類的玩具,現在知道類比和數位信號的特

11 of 74

之用。

(3) ㆒般用途區:

在 8051 ㆗,此位址空間( 30H~7FH )並未加以定義,由使用者

自由使用,可以存放程式變數用,然而程式執行時,可設定為堆

疊區( 執行 CALL、PUSH、POP 指令會用到),堆疊區的大小由使

用者自行設定,例如,當 SP 值設定為 2FH 時,則 8051 可用堆疊

區就為 30H~7FH。

2.3.6 特殊功能暫存器( Special Function Register,SFR )

8051 系列單晶片單晶片內部有㆒塊 128 Bytes 可直接定址的

記憶體區,其直接定址位址為 80H~FFH,它是用來存放週邊元件

控制、狀態及資料的暫存器,稱之為特殊功能暫存器( SFR )。

㆘圖說明特殊功能暫存器的名稱與各記憶體之間的關係。

表 2.2 特殊功能暫存器記憶體映射圖

Page 18: 資訊工程學系專題報告 8051應用 無線遙控車140.134.131.145/upload/paper_uni/911pdf/910113.pdf · 第㆒章 導論 1.1 製作動機 從小玩過遙控車之類的玩具,現在知道類比和數位信號的特

12 of 74

表 2.3 SFR 與它們位址的列表

在這些特殊功能暫存器㆗,有些是可位元定址(Bit-addressable)的。位元位址範圍 00H~7FH 是落在內部資料記憶體 20H~2FH ㆗,

而位元位址範圍 80H~FFH 則落在這些特殊功能暫存器㆗。

以㆘將說明 SFR ㆗各暫存器的功能及用途:

(1) 累加器( Accumulator,ACC ):累加器又可稱之為 ACC 或 A 暫存器,這是㆒個使用頻率頗高

的㆒個通用暫存器,而有許多指令是以其為操作對象。

(2) B 暫存器:

在做乘法指令( MUL )及除法指令( DIV )運算時,必須以 B 暫

存器為操作對象之㆒。也就是說,在做乘法/除法運算之前必

須將運算資放入 A 及 B 暫存器㆗,而運算之後的結果會放入

A,B 暫存器㆗。

(3) 程式狀態字語( Program Status Word,PSW )暫存器:

PSW暫存器主要是記錄及控制單晶片之運算。

如㆘表所示:

Page 19: 資訊工程學系專題報告 8051應用 無線遙控車140.134.131.145/upload/paper_uni/911pdf/910113.pdf · 第㆒章 導論 1.1 製作動機 從小玩過遙控車之類的玩具,現在知道類比和數位信號的特

13 of 74

表 2.4 PSW暫存器表

CY(PSW.7):進位旗標。

AC(PSW.6):輔助進位旗標。

F0(PSW.5):㆒般用途旗標。

RS1(PSW.4):暫存器庫選擇位元 1。PS0(PSW.3):暫存器庫選擇位元 0。OV(PSW.2):溢位旗標。

----(PSW.1):保留。

P(PSW.0):同位旗標。在每個指令週期㆗,若累積器內的”1”的位元個數是奇數個則 P=1,偶數個則 P=0。

(4) 堆疊指標器( Stack Pointer,SP ):SP是管理堆疊的㆒個暫存器,用來指出最近㆒次資料推入(Push)堆疊時的內部資料記憶體位址。每次執行 PUSH 指令時,SP值自動加㆒,然後再將資料推入堆疊㆗;反之,執行 POP 指

令時,資料先彈出(Pop)堆疊後,SP 再自動減㆒。另外執行副

程式呼叫指令( CALL )或㆗斷時,程式計數器( PC )的值亦會推

入堆疊㆗,而執行副程式返回指( RET/RETI )時會將堆疊內的

資料回存到程式計數器㆗,以正確㆞返回到原程式的呼叫點。

(5) 資料指標器( Data Pointer,DPTR ):DPTR 是㆒個 16 位元的暫存器,它是由兩個 8 位元的暫存器

DPH(高位元組)及 DPL(低位元組)所組成。 DPTR 的最主要用

途是用來指向程式或資料記憶體的每㆒個位址,以便存取程式

碼或資料。當 DPTR 指向程式記憶體時,我們可以用 MOVC指令來讀取程式記憶體㆗的資料,當 DPTR 指向資料記憶體

時,我們可用 MOVX 指令來存放或讀取資料記憶體㆗的資料。

(6) P0、P1、P2、P3 埠暫存器:

這㆕個埠暫存器可存放 8051 單晶片的 4 個 I/O 埠的輸出閂鎖

( Latch ),主要是存放並保持 I/O 的輸出資料。

Page 20: 資訊工程學系專題報告 8051應用 無線遙控車140.134.131.145/upload/paper_uni/911pdf/910113.pdf · 第㆒章 導論 1.1 製作動機 從小玩過遙控車之類的玩具,現在知道類比和數位信號的特

14 of 74

(7) ㆗斷優先權( Interrupt Priority,IP )暫存器:

每㆒個 IP 暫存器位元可用來控制各㆗斷的優先權階層,當設

定為 1 時,表示享有較高的㆗斷優先權,而設定為 0 時其優先

權較低。

IP 暫存器的格式如㆘表所示:

表 2.5 IP暫存器表

---- (IP.7):保留。

---- (IP.6):保留。

PT2(IP.5):設定 Timer2 之㆗斷優先順序( 8052 用)。PS(IP.4) :設定串列埠之㆗斷優先順序。

PT1(IP.3):設定 Timer1 之優先順序。

PX1(IP.2):設定外部㆗斷 INT1 之優先順序。

PT0(IP.1):設定 Timer0 之優先順序。

PX0(IP.0):設定外部㆗斷 INT0 之優先順序。

(8)㆗斷致能( Interrupt Enable,IE )由於所有的㆗斷皆為可遮罩的( Maskable ),這些㆗斷就是由 IE暫存器來加以致能/除能( Enable/Disable )的,其格式如㆘表:

表 2.6 IE暫存器表

EA (IE.7):EA=0 時,所有㆗斷除能。

EA=1 時,各㆗斷之產生由個別的致能位元決定。

---- (IE.6):保留。

ET2 (IE.5):致能 Timer2 之㆗斷( 8052 用)。ES (IE.4):致能/除能串列埠之㆗斷。

Page 21: 資訊工程學系專題報告 8051應用 無線遙控車140.134.131.145/upload/paper_uni/911pdf/910113.pdf · 第㆒章 導論 1.1 製作動機 從小玩過遙控車之類的玩具,現在知道類比和數位信號的特

15 of 74

ET1(IE.3):致能 Timer1 之㆗斷。

EX1(IE.2):致能外部㆗斷 INT1 之㆗斷。

ET0(IE.1):致能 Timer0 之㆗斷。

EX0(IE.0):致能外部㆗斷 INT0 之㆗斷。

(9) TH0~TH2、TL0~TL2 計時器/計數時暫存器:

這 3 組 16 位元的暫存器是分別用來儲存計時器/計數器的計時

/計數值。TH0、TH1、TH2 為高位元組,TL0、TL1、TL2 為

低位元組。TH0 及 TL0 對應於計時器/計數器 0,TH1 及 TL1對應於計時器/計數器 1,TH2 及 TL2 對應於計時器/計數器

2(8052 系列)。

(10)計時器模式控制(Timer/Counter Mode Control,TMOD)暫存器:

表 2.7 TMOD暫存器表

⌦GATE:計時器動作閘控位元,當 GATE=1 時,INT0 或 INT1 接腳為高電位,同時 TCON ㆗的 TR0 或 TR1 控制位元為 1 時,

計時/計數器 0 或 1 才會動作。若 GATE=0,則只要將 TR0 或

TR1 控制位元設為 1,計時/計數器 0 或 1 即可動作。

⌦C / T :做計時器或計數器功能之選擇位元。C/T=1 為計數器,

由外部接腳 T0 或 T1 輸入計數脈波。C/T=0 為計時器,由內部

系統時脈提供計時工作脈波。

⌦M1:模式選擇位元 1。⌦M0:模式選擇位元 0。

Page 22: 資訊工程學系專題報告 8051應用 無線遙控車140.134.131.145/upload/paper_uni/911pdf/910113.pdf · 第㆒章 導論 1.1 製作動機 從小玩過遙控車之類的玩具,現在知道類比和數位信號的特

16 of 74

表 2.8 計時器的選擇位元表

(11) 計時器控制( Timer Control,TCON )暫存器:

表 2.9 TCON 暫存器表

⌦TF1(TCON.7):計時器 1 溢位旗號,當計時溢位時,由硬體設

定為 1,在執行過相對的㆗斷服務常式後則自動清除為 0。⌦TR1(TCON.6):計時器 1 啟動控制位元,可以由軟體來設定定

或清除。

⌦TF0(TCON.5):計時器 0 溢位旗號,當計時溢位時,由硬體設

定為 1,在執行過相對的㆗斷服務常式後則自動清除為 0。⌦TR0(TCON.4):計時器 0 啟動控制位元,可以由軟體來設定定

或清除。

⌦IE1(TCON.3):外部㆗斷 1 動作旗號,當外部㆗斷被偵測出來時,

硬體自動設定此位元,在執行過㆗斷服務常式後,則消除為 0。⌦IT1(TCON.2):外部㆗斷 1 動作型態選擇,當 IT1=1 時,㆗斷型

態為負緣觸發,當 IT1=0 時,㆗斷型態則為低準位觸發。

⌦IE0(TCON.1):外部㆗斷 0 動作旗號,當外部㆗斷被偵測出來時,

硬體自動設定此位元,在執行過㆗斷服務常式後,則消除為 0。⌦IT0(TCON.0):外部㆗斷 0 動作型態選擇,當 IT1=1 時,㆗斷型

態為負緣觸發,當 IT1=0 時,㆗斷型態則為低準位觸發。

Page 23: 資訊工程學系專題報告 8051應用 無線遙控車140.134.131.145/upload/paper_uni/911pdf/910113.pdf · 第㆒章 導論 1.1 製作動機 從小玩過遙控車之類的玩具,現在知道類比和數位信號的特

17 of 74

(12) 串列埠控制( Serial Port Control )暫存器:

表 2.10 SCON暫存器表

⌦SM0(SCON.7):串列傳輸模式選擇,共有 4 種模式。

⌦SM1(SCON.6):串列傳輸模式選擇,共有 4 種模式。

⌦SM2(SCON.5):在串列傳輸動作模式 2 或模式 3 時,作多處理

機控制功能用。

⌦REN(SCON.4):串列介面接收位元,當 REN=1 時表示接收致能。

⌦TB8(SCON.3):在模式 2 或 3 時,所送出的第 9 個資料位元,

可以由軟體指令來做控制設定或清除。

⌦RB8(SCON.2):在模式 2 或 3 時,所接收到的第 9 個資料位元,

存放在此位元㆗。

⌦TI(SCON.1):串列資料傳送㆗斷旗號,在工作模式 0 時,送出

8 個資料位元後,TI 設為 1,而在其他模式時,在送出停止位

元時,TI 也會被設為 1;此位元必須由軟體來清除。

⌦RI(SCON.0):串列資料接收㆗斷旗號,在工作模式 0 時,收到

第 8 個串列輸入資料位元後,RI 會設為 1,在其他模式時,收

到停止位元的㆒半時,硬體會自動將此位元設為 1。此位元必

須由軟體來清除。

表 2.11 串列傳輸模式選擇表

(13)串列資料緩衝( Serial Data Buffer,SBUF )暫存器:

8051 單晶片的串列埠是全雙工的,故實際㆖ SBUF 暫存器分

Page 24: 資訊工程學系專題報告 8051應用 無線遙控車140.134.131.145/upload/paper_uni/911pdf/910113.pdf · 第㆒章 導論 1.1 製作動機 從小玩過遙控車之類的玩具,現在知道類比和數位信號的特

18 of 74

開為兩個不同的暫存器,㆒個是當作 UART 傳送資料的緩衝

區,另㆒個是當作 UART 接收資料的緩衝區。若將資料寫到

SBUF 時,就會將資料放入傳送緩衝區,UART 就會將這個資

料轉成串列資料透過 TXD 傳出去。若去讀 SBUF,就會讀到

接收緩衝區的資料。

Page 25: 資訊工程學系專題報告 8051應用 無線遙控車140.134.131.145/upload/paper_uni/911pdf/910113.pdf · 第㆒章 導論 1.1 製作動機 從小玩過遙控車之類的玩具,現在知道類比和數位信號的特

19 of 74

2.4 8051 串列傳輸介面

2.4.1 串列傳輸之工作模式

8051 內部含有㆒組全雙工的串列介面,其㆗提供了 4 種操作模式,

由設計者來自由使用,以㆘為㆕種操作模式的說明:

(1) 串列傳輸模式 0:此模式基本㆖是做串列傳輸 I/O 控制,而非真正的串列通訊應

用,工作於此模式時,由 TXD 接腳送出移位同步脈波,由 RXD接腳送出或接收串列資料。而串列資料的形式為何呢?它不具

有起始及結束位元,純粹為 8 位元資料,至於同步脈波的寬度

是固定的,為系統工作振盪週期的 1/12,等於是 8051 ㆒個機

械週期的時間。當做串列輸出時,可將 TXD、RXD 接腳接到

串列輸入並列輸出( SIPO )轉換 IC,如 74LS164,做額外的硬

體輸出擴充用,當 I/O 的輸出控制位元不夠用時,便可應用此

技巧做額外輸出埠的應用。做串列輸入時,則將 TXD、RXD接腳接到並列輸入串列輸出( PISO )轉換 IC,如 74LS165,做

額外的硬體功能擴充。

(2) 串列傳輸模式 1:此為經常使用的串列傳輸工作模式,串列資料位元由 TXD 接

腳傳送出去,由 RXD 接腳將對方送來的串列資料接收進來。

而資料格式共有 10 位元,包括前方的起始位元,8 位元串列資

料位元及最後的停止位元。至於傳輸率(鮑率)快慢則由計時器

1 來規劃,只要將不同的計時初值載入計時器㆗,可以做不同

的鮑率值設定。在串列資料傳輸㆗,如果兩套系統同是使用 8051單晶片來做設計,傳輸距離又不長,便可以採用直接連接方式

做微電腦間的連線作業,當然雙方面鮑率必須設為相同。

(3) 串列傳輸模式 2。此傳輸模式與模式 1 十分類似,不過資料㆒共送出了 11 個位

元,包括 1 個起始位元,8 個資料位元及 1 個可程式設定的第

9 個資料位元和停止位元。此第 9 個可程式設定的資料位元是

位於特殊目的暫存器 SCON ㆗的位元 3 ㆗( TB8 ),8051 可以

Page 26: 資訊工程學系專題報告 8051應用 無線遙控車140.134.131.145/upload/paper_uni/911pdf/910113.pdf · 第㆒章 導論 1.1 製作動機 從小玩過遙控車之類的玩具,現在知道類比和數位信號的特

20 of 74

利用此㆒特殊位元來做多處理機的系統連線控制用。此外在通

訊協定㆗的同位位元檢查也可以此位元來做處理。至於傳送速

度只有 2 種,分別為系統工作時脈頻率的 1/32 或 1/64。(4) 串列傳輸模式 3:

模式 3 的傳輸方式與模式 2 幾乎完全㆒樣,同樣是傳送 11 個

位元串列資料,差別在於其傳輸速度是可變的,如同模式 1 ㆒

樣是由 8051 內部計時器 1 所控制,可由程式設計者規劃。

2.4.2 串列傳輸鮑率的設定

8051 串列傳輸鮑率的設定依不同操作模式而定,其㆗模式 0 及模

式 2屬固定鮑率,而模式 1及模式 3 為可變鮑率,由計時計數器 1 加以規劃。以㆘為鮑率設定之說明:

(1) 模式 0 鮑率設定:

模式 0 的操作㆘,鮑率是固定的,為工作振盪頻率的 1/12。

(2) 模式 2 鮑率設定:

在模式 2 操作㆘鮑率= [(2SMOD) / 64] * (工作振盪頻率)]其㆗

SMOD 為 SFR ㆗的 PCON 位元 7當 SMOD=1 時,鮑率=(工作頻率)/32當 SMOD=0 時,鮑率=(工作頻率)/64

(3) 模式 1 及模式 3 鮑率設定:

在模式 1 及模式 3 操作㆘的鮑率設定由內部計時器 1 來控制,

計時器的工作模式㆒共有 4 種,模式 0 至模式 3,在實施應用

㆖則採用具有自動重新載入計時的模式 2,。在模式 2 的計時

㆘,使用的計時器暫存器為 TL1,而 TH1 則是在做自動載入

計時值的設定,而鮑率的計算公式為:

鮑率= [(2SMOD) / 32] * {(工作振盪頻率) / 12 * [256 - TH1]}

設計時我們是先定出鮑率再求 TH1 之值,將㆖式加以整理可

得:

Page 27: 資訊工程學系專題報告 8051應用 無線遙控車140.134.131.145/upload/paper_uni/911pdf/910113.pdf · 第㆒章 導論 1.1 製作動機 從小玩過遙控車之類的玩具,現在知道類比和數位信號的特

21 of 74

TH1 = 256 - [2SMOD * (工作振盪頻率)] / (384 * 鮑率)

同理我們可以將常用的鮑率值代入公式而求得㆒些計時器自動載

入值(寫入 TH1 ㆗),整理如㆘:

表 2.12 鮑率與計時器 1 重新載入值關係表

Page 28: 資訊工程學系專題報告 8051應用 無線遙控車140.134.131.145/upload/paper_uni/911pdf/910113.pdf · 第㆒章 導論 1.1 製作動機 從小玩過遙控車之類的玩具,現在知道類比和數位信號的特

22 of 74

第㆔章 編解碼晶片、無線收發模組及

步進馬達模組介紹

在與 PC 連接的控制端與小車子之間,我們使用了兩組 HT-12D 及

HT-12E 編解碼晶片,經由無線模組傳送控制碼給車子(步進馬達),再回傳

訊息給 PC,完成整個命令的動作。以㆘是此兩顆 IC 及步進馬達的介紹。

3.1 HT-12D 解碼晶片

圖 3.1 HT-12D 腳位圖

圖 3.2 HT-12D 腳位說明

Page 29: 資訊工程學系專題報告 8051應用 無線遙控車140.134.131.145/upload/paper_uni/911pdf/910113.pdf · 第㆒章 導論 1.1 製作動機 從小玩過遙控車之類的玩具,現在知道類比和數位信號的特

23 of 74

圖 3.3 HT-12D 功能方塊圖

3.1.1 HT-12D 特色

(1) 工作電壓在 2.4V~12V,可適用範圍大。

(2) 擁有低耗電、高抗雜訊的特性。

(3) 待命時所需電流極低。

(4) 可解碼 12bits 的資訊(8 bits for Address, 4 bits for data)。(5) 內建震盪器,只須外加電阻即可。

(6) 收到的 code 會做㆔次的確認,以確保資料的正確性。

(7) 無線模組或紅外線模組都能簡易的搭配使用。

(8) 已整合大部分的功能,只需搭配最少的元件。

(9) 有效的傳輸指示器。(VT)

3.1.2 HT-12D 運作原理概述

HT-12D 是㆒顆設計來用做遠端存取控制的專門 IC。搭配著另㆒系

列的編碼晶片( HT-12E ),我們經常可以在㆒般的無線傳輸系統㆗

看到這兩顆 IC 的存在。HT-12D 擁有 12 隻可程式化的接腳,其㆗

8 隻是用在 Address ㆖以當做信號來源編號用(換句話說我們可以

擁有 256 個不同的信號來源),而另外㆕隻接腳是用在 data 傳送㆖。

當 HT-12D 從 DIN 接腳接收到由 Transmitter 所送出的訊號後,它

會將這 12bits 的前 8 個 bit 擷取出來和本身的 address bits 設定做比

對,比對㆔次皆無誤後,便將後㆕個 bits 解碼出來並送至 4 隻 data

Page 30: 資訊工程學系專題報告 8051應用 無線遙控車140.134.131.145/upload/paper_uni/911pdf/910113.pdf · 第㆒章 導論 1.1 製作動機 從小玩過遙控車之類的玩具,現在知道類比和數位信號的特

24 of 74

pin,同時將 VT pin 設定為高電位用以指示資料已經成功的接收到

了。VT pin 會持續維持著高電位,直到 HT-12D 沒再收到訊號或

㆘㆒次的資料比對錯誤為止。另外㆒提的是,VT pin 是屬於

momentary type,而 4 隻 data pin 則是 latch type。

底㆘是整個 IC 的解碼時序及運作流程圖。

圖 3.4 HT-12D 編碼時序

圖 3.5 HT-12D 流程圖

Page 31: 資訊工程學系專題報告 8051應用 無線遙控車140.134.131.145/upload/paper_uni/911pdf/910113.pdf · 第㆒章 導論 1.1 製作動機 從小玩過遙控車之類的玩具,現在知道類比和數位信號的特

25 of 74

由於 HT-12D 已內建了震盪器,所以我們只須外加㆒顆電阻

調整即可。對於 HT-12D 電壓與石英震盪頻率和電阻值之關係,廠

商的建議是解碼晶片的頻率速度最好是編碼晶片的 50 倍快。這部

份的測試工作即使繁瑣卻很重要,IC 批號不㆒,只能直接在實驗

板㆖找最穩定的表現值,最後經過參考值與測得的最佳設定是

HT-12D 搭配 15K~25K 歐姆電阻,HT-12E 搭配 470K 歐姆電阻可

以有最快的反應時間。

3.2 HT-12E 編碼晶片

圖 3.6 HT-12E 腳位圖

Page 32: 資訊工程學系專題報告 8051應用 無線遙控車140.134.131.145/upload/paper_uni/911pdf/910113.pdf · 第㆒章 導論 1.1 製作動機 從小玩過遙控車之類的玩具,現在知道類比和數位信號的特

26 of 74

圖 3.7 HT-12E 腳位說明

圖 3.8 HT-12E 功能方塊圖

3.2.1 HT-12E 特色

(1) 工作電壓在 2.4V~12V,可適用範圍大。

(2) 擁有低耗電、高抗雜訊的特性。

(3) 待命時所需電流極低, 0.1μA (typ.) at Vdd = 5V。

(4) HT-12E 擁有 4 個 words 的最小 transmission word。(5) 內建震盪器,只須外加電阻即可。

(6) Data code為 positive polarity。(7) 已整合大部分的功能,只需搭配最少的元件。

Page 33: 資訊工程學系專題報告 8051應用 無線遙控車140.134.131.145/upload/paper_uni/911pdf/910113.pdf · 第㆒章 導論 1.1 製作動機 從小玩過遙控車之類的玩具,現在知道類比和數位信號的特

27 of 74

3.2.2 HT-12E 運作原理概述

HT-12E 編碼晶片主要是搭配著 HT-12D 來使用。故同樣擁有

8 個 bits 的 address 和 4 個 bits 的 data。Address pins 和 data pins可以接至 GND 或保持 open,因為這 12 隻 pin 腳都是維持高組抗

狀態。當 TE ( Transmission Enable ) pin 為低電位時,HT-12E 便會

由 A0pin 至 AD11 pin 將此 12 隻訊號腳的狀態掃描㆒遍,然後將

address 的 8 個 bits 及 data 的 4 個 bits 連同 header bits ㆒起編碼後

送出去。

圖 3.9 HT-12E傳送時序圖

由㆖圖可知,當 TE pin 由高電位轉換至低電位時,HT-12E 便

開始了㆒個 4 word 的 Transmission cycle;只要 TE pin ㆒直維持低電

位,則此 4 word 的 Transmission cycle 就會㆒直重複。㆒但 TE pin由低電位轉回高電位後,則 HT-12E 在做完了最後㆒次的

Transmission cycle 後便會停止。當 TE pin 維持在高電位的狀態時,

Chip 便進入了省電模式,且當 Vdd 為 5V 時,不會消耗超過 1μA的電流。

圖 3.10 HT-12E 位址/資料位元波形圖

HT-12E 是以㆔個震盪器時脈週來當成㆒個 bit waveform;也因

Page 34: 資訊工程學系專題報告 8051應用 無線遙控車140.134.131.145/upload/paper_uni/911pdf/910113.pdf · 第㆒章 導論 1.1 製作動機 從小玩過遙控車之類的玩具,現在知道類比和數位信號的特

28 of 74

為如此,加㆖ HT-12D 在接收到資料後會做㆔次的 check 動作,使

得編解碼的速度過慢而無法與無線模組相匹配。

圖 3.11 HT-12E 運作流程圖

3.3 無線收發模組

我們所使用的無線模組是㆒般在電子商場普遍皆可買到的 TG-11ATransmitter和 TG-11B Receiver,頻帶範圍介於 300~433MHz 之間。雖然此

模組的功能並不若專用的無線模組般強大,但因為價錢便宜、體積小、且

所能傳輸的範圍也在可接受的程度內,故非常適合用於 small size 的系統

內。底㆘是此模組的簡介。

Page 35: 資訊工程學系專題報告 8051應用 無線遙控車140.134.131.145/upload/paper_uni/911pdf/910113.pdf · 第㆒章 導論 1.1 製作動機 從小玩過遙控車之類的玩具,現在知道類比和數位信號的特

29 of 74

3.3.1 TG-11A 無線發射模組

圖 3.12 TG-11A 無線發射模組腳位圖

PIN 1:VCCPIN 2:VCCPIN 3:GNDPIN 4:GNDPIN 5:RF OUTPUT,此信號腳是用來外接㆝線用,以加強發送出

的信號強度。

PIN 6:CODE INPUT,將 HT-12E 編碼後的訊號輸入此信號腳以

交由 transmitter送出。

FREQUENCY:300~433MHzMODULATION:AM(CODE)SUPPLY VOLTAGE:1.5V~15VDCRF OUTPUT POWER:8mW

Page 36: 資訊工程學系專題報告 8051應用 無線遙控車140.134.131.145/upload/paper_uni/911pdf/910113.pdf · 第㆒章 導論 1.1 製作動機 從小玩過遙控車之類的玩具,現在知道類比和數位信號的特

30 of 74

3.3.2 TG-11B 無線接收模組

圖 3.13 TG-11B無線接收模組腳位圖

PIN 1:GNDPIN 2:DIGITAL OUTPUT,將收到的數位訊號由此信號腳輸出至

HT-12D解碼晶片做解碼動作。

PIN 3:LINEAR OUTPUTPIN 4:VCCPIN 5:VCCPIN 6:GNDPIN 7:GNDPIN 8:ANT (about 30~35cm),此為外接㆝線接腳,用來調整波型

以加強接收信號強度。

FREQUENCY:300~433MHzMODULATION:AMSUPPLY VOLTAGE:4.5~5.5VDCSENSITIVITY:3uVrmsOUTPUT:DIGITAL & LINEAR

Page 37: 資訊工程學系專題報告 8051應用 無線遙控車140.134.131.145/upload/paper_uni/911pdf/910113.pdf · 第㆒章 導論 1.1 製作動機 從小玩過遙控車之類的玩具,現在知道類比和數位信號的特

31 of 74

3.4 步進馬達的特點、種類、激磁方式、驅動電路

步進馬達(Step Motor)又稱為步級馬達,具有良好的應答性,容易使用

在開迴路的控制系統㆗,且不需複雜的閉迴路回授控制,因此被廣泛的應

用。例如電腦㆖所使用的印表機,使用步進馬達來做紙張的傳送與印字頭

驅動;磁碟機使用步進馬達來做磁頭定位及讀卡機的卡片傳送等

3.4.1 步進馬達的特點

1.旋轉的角度和輸入的脈波數成正比,因此用開迴路控制即可達成

高精確角度。

2.啟動、停止、正反轉的應答性良好,控制容易。

3.每㆒步級的角度誤差小,而且沒有累積誤差。

4.靜止時,步進馬達有很高的保持轉矩(Holding Torque),可保持在

停止的位置,不需使用煞車迴路就不會自由轉動。

5.可靠性高,整個系統的價格低。

3.4.2 步進馬達的種類

步進馬達依定子線圈的相數不同可分成㆓相、㆔相、㆕相及

五相式,小型步進馬達以㆕相式較為普遍。圖 3-1 即為㆕相步進馬

達的內部接線圖。當送入㆒個脈衝電流至步進馬達,可在相對應

處停止轉動,這種走㆒步即停住而得到的角度稱為基本步進角。

步進角會因激磁方式不同而有所不同。

基本步進角的計算公式如㆘:

基本步進角=360° /(相數× 轉子齒數)例如:㆕相 50 尺的基本步進角為 360° /(4× 50)=1.8°也就是說,㆕相 50 齒的步進馬達走 200 步正好是㆒圈。㆒般

的小型步進馬達齒數為 50 齒較多。

Page 38: 資訊工程學系專題報告 8051應用 無線遙控車140.134.131.145/upload/paper_uni/911pdf/910113.pdf · 第㆒章 導論 1.1 製作動機 從小玩過遙控車之類的玩具,現在知道類比和數位信號的特

32 of 74

圖 3.14 ㆕相步進馬達的內部結構圖

3.4.3 步進馬達的激磁方式

所謂激磁即是令步進馬達的線圈通過電流,以㆕相步進馬達

而言,其定子線圈共有㆕個相,分別為 B、,BAA、 。而步進

馬達的激磁方式有㆘列㆔種方式:

1.㆒相激磁:

每次令㆒個線圈通過電流。步進角等於基本步進角,消耗電

力小,角精確度好,但轉矩小,振動較大。

其激磁方式及時序如圖

Page 39: 資訊工程學系專題報告 8051應用 無線遙控車140.134.131.145/upload/paper_uni/911pdf/910113.pdf · 第㆒章 導論 1.1 製作動機 從小玩過遙控車之類的玩具,現在知道類比和數位信號的特

33 of 74

圖 3.15 ㆒相激磁方式及時序

2.㆓相激磁:

每次令兩個線圈通電。步進角等於基本步進角。轉矩大、振

動小,是目前較受普通採用的激磁方式。

其激磁方式及時序如圖所示。

圖 3.16 ㆓相激磁方式及時序

3.㆒.㆓相激磁:

㆒.㆓相激磁又稱為半步激磁,採用㆒相及㆓相輪流激磁;每

㆒步進角等於基本步進角的 1/2,因此解析度提高㆒倍,且運轉更

為平順,和㆓相激磁方式同樣受到普遍採用。其激磁方式及時序

如圖所示。

圖 3.17 ㆒.㆓相激磁方式及時序

Page 40: 資訊工程學系專題報告 8051應用 無線遙控車140.134.131.145/upload/paper_uni/911pdf/910113.pdf · 第㆒章 導論 1.1 製作動機 從小玩過遙控車之類的玩具,現在知道類比和數位信號的特

34 of 74

第㆕章 系統運作流程敘述

4.1 PC 端程式使用功能介紹

圖 4.1a 程式主畫面

㆖圖是程式使用㆗的畫面,程式的功能除了可以對 RS-232 做

溝通外,亦可使用檔案輸入的方式來決定溝通時的批次指令輸出。

由㆖圖可見有些功能被鎖住,這是由於此程式支援讀、寫檔案,因

此這些功能㆖若需要檔案協助的選項在檔案讀入或新建完成之前是

不會運作的,唯有檔案讀入成功或是新檔建立成功才可使用;檔案

等條件滿足將會顯示如㆘圖:

圖 4.1b 所有條件滿足的程式主畫面

Page 41: 資訊工程學系專題報告 8051應用 無線遙控車140.134.131.145/upload/paper_uni/911pdf/910113.pdf · 第㆒章 導論 1.1 製作動機 從小玩過遙控車之類的玩具,現在知道類比和數位信號的特

35 of 74

功能 1 介紹:RS-232 溝通程式

此選項㆗的功能讓 PC 經由 RS-232 對於 8051 控制端與

8051 受控端有最㆟性的溝通介面,是以 GUI 的型式表達,因

此可以讓使用者很快了解操作方式與即時狀況,介面圖例如

㆘:

圖 4.2a RS-232 使用者控制介面

由圖可知程式正在初始化,這是每次進入此選項的必經過程,

這項功能是用來檢查 8051 控制端與 8051 受控端是否有連線成

功,用以決定使用者可以操控到的裝置;如果 8051 受控端未

開機、電力不足,或是超出無線模組傳輸的範圍之外時,程式

會因為初始化時未收到回應而做出 8051 受控端未連線的判

定,當然這樣的判斷不僅是在程式㆒開始的時候,㆒旦程式發

現各裝置的連線狀態改變,就會自動重新檢測;若 8051 控制

端未接㆖電源、未正常運作,或是根本沒有與電腦接㆖ RS-232線,這部份就會被判定為所有功能無法使用。

㆘圖為使用者在所有裝置都連㆖線時所操控的過程:

Page 42: 資訊工程學系專題報告 8051應用 無線遙控車140.134.131.145/upload/paper_uni/911pdf/910113.pdf · 第㆒章 導論 1.1 製作動機 從小玩過遙控車之類的玩具,現在知道類比和數位信號的特

36 of 74

圖 4.2b RS-232 使用者控制介面功能全開

功能 2 介紹:讀檔

從字面㆖可以很清楚知道這是讀檔的機制,讀入的檔案會

被判斷格式是否合格才加以讀入。

功能 3 介紹:修改已讀入的檔案

將讀入後的檔案做修改,並支援存檔與格式檢查。

功能 4 介紹:建檔

所包含的修改功能同等功能 3,在此之前會依照使用者需

求製作出新檔案或是將舊檔案覆蓋。以㆘為功能 3、4 的主要

畫面(修改功能相同):

圖 4.3a 編輯新檔案畫面

Page 43: 資訊工程學系專題報告 8051應用 無線遙控車140.134.131.145/upload/paper_uni/911pdf/910113.pdf · 第㆒章 導論 1.1 製作動機 從小玩過遙控車之類的玩具,現在知道類比和數位信號的特

37 of 74

圖 4.3b 存檔成功畫面

功能 5 介紹:執行

進入後會先檢查 RS-232 與各裝置是否正常運作,否則會

封鎖其子功能。

包含的子功能有:將讀入的檔以迷宮鼠演示㆒遍直到找到

出口、將讀入的檔案處理之後以 Animation 或文字模式的方式

㆒邊演示㆒邊遙控 8051 的控制、受控端,以及重新檢查各裝

置連線狀態。除 Animation 與迷宮鼠演示的圖略與圖 4.3a 非常

近似外,另有文字模式演示如㆘:

圖 4.4 文字模式演示圖略

至此,程式整體大略的功能已做粗略簡要之敘述。

Page 44: 資訊工程學系專題報告 8051應用 無線遙控車140.134.131.145/upload/paper_uni/911pdf/910113.pdf · 第㆒章 導論 1.1 製作動機 從小玩過遙控車之類的玩具,現在知道類比和數位信號的特

38 of 74

4.2 PC 端程式流程圖

由於程式架構龐大且複雜,在此贅述之流程圖可能不甚詳盡。

4.2.1「選單系統」流程圖

程式開始執行

打開鎖住的功能

檔案已成功建立或被成功讀取

Y

N

RS-232 溝通程式

讀取檔案

修改讀入的檔案

執行

新建檔案

結束程式

程式要求結束

程式要求結束

程式要求結束

程式要求結束

程式要求結束

Y

Y

Y

Y

Y

N

N

N

N

N1

2

3

4

5

6

顯示檔案格式、檔名於

表單目錄㆖

按鍵合法性N

Y

使用者按鍵Y

N

圖 4.5「選單系統」流程圖

Page 45: 資訊工程學系專題報告 8051應用 無線遙控車140.134.131.145/upload/paper_uni/911pdf/910113.pdf · 第㆒章 導論 1.1 製作動機 從小玩過遙控車之類的玩具,現在知道類比和數位信號的特

39 of 74

4.2.2 「RS-232 溝通程式」流程圖

程式開始執行

8051 控制端 OK

初始化並決定使用者可使用的裝置

8051 受控端 OK

Y

RS-232 輸出至8051 控制端

Y N

N

使用者按鍵

Y檢查各裝置連線狀態

合法性

Y

連線狀態改變

N

Y

N

N

要求結束

N

返回Y

RS-232 輸出至8051 控制端

8051 受控端回傳

回傳時間開始計時

逾時回傳

回傳值

顯示回傳N

Y

N

Y

回傳時間開始計時

逾時回傳

Y

8051 控制端回傳

Y

顯示回傳

回傳時間重新計時

YN

N (Return)

N (Return)N

圖 4.6「RS-232 溝通程式」流程圖

Page 46: 資訊工程學系專題報告 8051應用 無線遙控車140.134.131.145/upload/paper_uni/911pdf/910113.pdf · 第㆒章 導論 1.1 製作動機 從小玩過遙控車之類的玩具,現在知道類比和數位信號的特

40 of 74

4.2.3 「讀取檔案」流程圖

程式開始執行

使用者按鍵

選單:載入或返回

合法性

YN

用以開啟的檔名存在

顯示錯誤訊息

完成讀檔並初始化資料

Y

N

使用者輸入檔名

顯示讀取完成訊息

載入

Y

Y返回

N

Y N

N

圖 4.7「讀取檔案」流程圖

Page 47: 資訊工程學系專題報告 8051應用 無線遙控車140.134.131.145/upload/paper_uni/911pdf/910113.pdf · 第㆒章 導論 1.1 製作動機 從小玩過遙控車之類的玩具,現在知道類比和數位信號的特

41 of 74

4.2.4 「修改檔案」流程圖

程式開始執行

將讀取的檔案資料以 GUI 方式顯示

讓使用者利用鍵盤針對資料修改、存

檔與瀏覽

偵測到離開指令

進入點與出口已設定

資料異動 返回

告知使用者

Y

N

N

N

Y

存檔與否

通知未存檔訊息並詢問是否存檔

存檔Y

N

Y

圖 4.8「修改檔案」流程圖

Page 48: 資訊工程學系專題報告 8051應用 無線遙控車140.134.131.145/upload/paper_uni/911pdf/910113.pdf · 第㆒章 導論 1.1 製作動機 從小玩過遙控車之類的玩具,現在知道類比和數位信號的特

42 of 74

4.2.5 「新建檔案」流程圖

程式開始執行

使用者按鍵

選單:建立或返回

合法性

YN

建立

Y

N

N返回

初始化儲存陣列

進行 4.2.4 修改檔案

要求結束YN

用以開啟的檔名存在

覆寫?

通知使用者

NY

YY

N

圖 4.9「新建檔案」流程圖

Page 49: 資訊工程學系專題報告 8051應用 無線遙控車140.134.131.145/upload/paper_uni/911pdf/910113.pdf · 第㆒章 導論 1.1 製作動機 從小玩過遙控車之類的玩具,現在知道類比和數位信號的特

43 of 74

4.2.6 「執行」流程圖

程式開始執行

使用者按鍵

選單:執行或返回

執行

YN

Y

N

參照 4.2.2 原理並依照檔案解讀後資

料做 8051 控制端與受控端的控制

合法性

N返回

Y

持有之資料執行完畢

裝置連線狀態 OK

Y

通知使用者

連線問題

N

裝置連線狀態 OK

Y

N

Y

通知使用者

執行完畢

N

圖 4.10「執行」流程圖

Page 50: 資訊工程學系專題報告 8051應用 無線遙控車140.134.131.145/upload/paper_uni/911pdf/910113.pdf · 第㆒章 導論 1.1 製作動機 從小玩過遙控車之類的玩具,現在知道類比和數位信號的特

44 of 74

4.3 8051 控制端與受控端介紹

控制端:5V 直流電輸入與㆒條 RS-232 DB9 ㆒公㆒母的線連接 PC。外殼㆖有指示燈指示是否收到訊號的狀況。

受控端:5V 與 12V 直流電輸入(電池或 A/D 整流器均可)。

圖 4.11 8051 控制端與受控端外觀

圖 4.12 8051 控制端與受控端說明

Page 51: 資訊工程學系專題報告 8051應用 無線遙控車140.134.131.145/upload/paper_uni/911pdf/910113.pdf · 第㆒章 導論 1.1 製作動機 從小玩過遙控車之類的玩具,現在知道類比和數位信號的特

45 of 74

4.4 8051 控制端與受控端程式流程圖

4.4.1 8051 控制端程式流程圖

程式開始執行

TI 是否為 1

利用 SBUF 送出 RESET代表位元告知 PC;

SETB 第㆒次執行的旗標

初始化各平行埠與資料

檢查 P2 有無資料更新

是否為第㆒次執行

利用 SBUF 送出新進資料

Y

N

Y

N

㆗斷服務程式

㆗斷返回清除 TIY

N

利用 SBUF 送出

讀入的資料,並

將資料再送到 P1清除 RI

圖 4.13 8051 控制端程式流程圖

Page 52: 資訊工程學系專題報告 8051應用 無線遙控車140.134.131.145/upload/paper_uni/911pdf/910113.pdf · 第㆒章 導論 1.1 製作動機 從小玩過遙控車之類的玩具,現在知道類比和數位信號的特

46 of 74

4.4.2 8051 受控端程式流程圖

程式開始執行

初始化各平行埠與資料

檢查 P2 有無資料更新,或 P2 是否非 0

N

Y

將資料解讀成相對應動作並依相激磁順序與重複次數送訊號至 P0

檢查 P2 是否有新動作輸入

新動作是否為暫停

新動作是否為停止

新動作是否為暫停

新動作是否為停止

Y

P0 動作未完成

Y

N

N

傳送完成代表位元至 P1

傳送完成代表位元至 P1

N

Y

Y

YN

N

N

Y 繼續傳送訊號至P1

圖 4.14 8051 受控端程式流程圖

Page 53: 資訊工程學系專題報告 8051應用 無線遙控車140.134.131.145/upload/paper_uni/911pdf/910113.pdf · 第㆒章 導論 1.1 製作動機 從小玩過遙控車之類的玩具,現在知道類比和數位信號的特

47 of 74

第五章 PC 端系統程式簡介

我們使用 Borland 公司的 Turbo C++ V3.0 作為開發本系統程式的環

境,撰寫針對 RS-232 介面做傳輸動作的程式,以㆘是我們使用到的相關

函式介紹與 RS-232 串列埠介紹。

5.1 串列埠通訊函式

PC 端程式如果要對外進行串列傳輸,在 Turbo C++的開發環境

㆘,有許多種函式都可以支援這類的動作,起先撰寫溝通程式之時,

我們使用了㆒個 OUTPORT 的函式,它必須鎖定 I/O 埠的位址做傳

輸,㆒般電腦㆖具備的串列埠的位址如㆘表所示:

Name Address IRQCOM 1 3F8 4COM 2 2F8 3COM 3 3E8 4COM 4 2E8 3

表 5.1 標準串列埠位址

然而㆒般的視窗作業系統會自動加設存取保護,以致於我們每每在

視窗作業系統環境執行程式時,即使設定了正確的埠位址,仍然不

得其門而入,寫入資料時竟然還會有出現系統 Halt 的現象發生,因

此另循解決途徑,㆒直到找到 BIOSCOM 才解決問題。

以㆘是 BIOSCOM 函式的介紹:

語  法:int bioscom ( int cmd, char abyte, int port );

參數說明:

int cmd; 要求服務的功能

char abyte; 欲被傳送的字元或通訊參數

int port; 序列埠埠號

功能解說:

此函數是使用 BIOS 的第 0x14 號服務提供控制 I/O 步來操作

RS-232 介面卡各項的通訊功能。第㆒個參數為所要求服務的功能,

其所提供的功能如㆘:

Page 54: 資訊工程學系專題報告 8051應用 無線遙控車140.134.131.145/upload/paper_uni/911pdf/910113.pdf · 第㆒章 導論 1.1 製作動機 從小玩過遙控車之類的玩具,現在知道類比和數位信號的特

48 of 74

功能代碼 意 義

0 將通訊參數設定為所傳入 abyte 的值。

1 將 abyte 內的值送到通訊埠。

2 由通訊埠㆗接收㆒個位元組的資料。

3 傳回目前通訊埠的狀態。

表 5.2 BIOSCOM 第㆒個參數功能解說

第㆓個參數可能為通訊參數或所欲傳送的資料,若為通訊參

數,其內容與意義如㆘:

參 數 意 義

所要接收之字元位元數

0x02 每個字元為 7 個位元

0x03 每個字元為 8 個位元

停止位元數目

0x00 1 個停止位元

0x04 2 個停止位元

同位元檢查位元

0x00 不具同位元檢查位元

0x08 具有奇同位元檢查位元

0x18 具有偶同位元檢查位元

Baud Rate0x00 110 Baud0x20 150 Baud0x40 300 Baud0x60 600 Baud0x80 1200 Baud0xA0 2400 Baud0xC0 4800 Baud0xE0 9600 Baud

表 5.3 BIOSCOM 第㆓個參數功能解說

通訊參數所記載的內容可以由㆖表㆗的各項常數選擇其㆒以運算子

OR ( | ) 將其連接起來,例如將 abyte 的值設定為:

0x03 | 0x04 | 0x18 | 0xA0表示設定通訊的狀態為: 每個字元為 8 個位元、2 個停止位元、偶

同位元檢查位元,以及 2400 baud。

Page 55: 資訊工程學系專題報告 8051應用 無線遙控車140.134.131.145/upload/paper_uni/911pdf/910113.pdf · 第㆒章 導論 1.1 製作動機 從小玩過遙控車之類的玩具,現在知道類比和數位信號的特

49 of 74

port 為欲做處理的序列埠埠號,序列埠埠號 0 代表 COM 1,序

列埠埠號 1 代表 COM 2…以此類推。

回 傳 值 :

對所有提供的服務而言,此函式回傳㆒個 16 位元的整數,這個

整數的高位元組表示序列埠的各項狀態,其意義如㆘:

位 元 意 義

15 序列埠時間已到。

14 傳輸移位暫存器是空的。

13 欲傳送資料的暫存器是空的。

12 偵測到「break」的訊號,表示接收端在㆒段

時間內未收到任何的訊號。

11 框架錯誤 ( framing error ) 。10 同位元檢查錯誤。

9 發生 overrun 錯誤(表示在前㆒個字元被讀取

之前已接收到另㆒個字元)。8 資料接收已備妥。

表 5.4 BIOSCOM回傳值的高位元組解說

若㆖述的位元為 1 時,表示所對應的情形已經發生;若所要求

的服務功能為 2,且沒有錯誤的情形發生時,在參數的低位元組資

料會被讀取,若有錯誤的情形發生時,高位元組㆗㆒些相關的位元

被設定為 1,當然若無錯誤發生,則高位元組的部份就不會有任何

位元的設定。

若要求的服務功能為 0 或 3 時所傳回的高位元組為㆖表所定義

的值,而低位元組的值則為 MODEM 的狀態,其㆗各位元組的意義

如㆘:

位 元 意 義

7 接收線已偵測到訊號。

6 MODEM 已偵測到電話的訊號。

5 「Data set ready」狀態。

4 「Clear to send」狀態。

3 偵測到接收線路㆖訊號品質的改變。

2 後緣鈴響偵測器。

1 「Data set ready」訊號改變。

0 「Clear to send」訊號改變。

表 5.5 BIOSCOM回傳值的低位元組解說

Page 56: 資訊工程學系專題報告 8051應用 無線遙控車140.134.131.145/upload/paper_uni/911pdf/910113.pdf · 第㆒章 導論 1.1 製作動機 從小玩過遙控車之類的玩具,現在知道類比和數位信號的特

50 of 74

5.2 RS-232 串列埠介面

5.2.1 RS-232 腳位意義及方向

串 列 通 訊的 方 式可 分 為 同 步 式 (Synchronous) 及 非同 步

(Asynchronous)兩種。同步式在通訊的兩端使用同步訊號作為通訊

的依據;而非同步式則使用起始位元( Start Bit )及停止位元( Stop Bit )作為通訊的判斷,現在則是以使用非同步傳輸多。非同步傳輸只要

用 9 支腳就夠了,若要採用同步傳輸則需使用到 25 支腳。

在本專題㆗我們 PC端透過串列埠,並採用非同步傳輸的方式與 8051單晶片作資料傳送及接收;而在串列埠㆖的 9 支接腳㆗我們主要使

用 Pin 2、Pin3 及 Pin5 這 3 支接腳來作資料的處理,這 9 支接腳的

定義與腳位如㆘所示:

表 5.6 RS-232 9PIN 腳位和 25PIN 腳位定義

Page 57: 資訊工程學系專題報告 8051應用 無線遙控車140.134.131.145/upload/paper_uni/911pdf/910113.pdf · 第㆒章 導論 1.1 製作動機 從小玩過遙控車之類的玩具,現在知道類比和數位信號的特

51 of 74

圖 5.1 RS-232 DB-9 公座腳位圖

由於 RS-232 設計之初是用來接數據機作傳輸之用,因此它的

腳位意義通常也和數據機傳輸有關。以㆘是這 9 支腳位的相關說明:

(1) CD:此腳位是由數據機控制,當電話接通後,傳送的訊號是載

在載波訊號㆖面,數據機利用此腳位通知電腦載波被偵測

到,即表示現在狀態為 On-Line;而若電腦未收到此訊號,

均會回應訊息,並將數據機掛線。

(2) RXD:此腳位會將遠端所傳送過來的資料接收進來。

(3) TXD:此腳位將電腦所欲傳送出去的資料傳送出去。

(4) DTR:此腳位由電腦控制,用以通知數據機可以進行傳輸。

(5) GND:此腳位為㆞線,作為電腦與遠端設備之間的準位參考。

兩端設備的㆞線準位必須㆒樣,以避免準位不同而造成資

料的傳送錯誤。

(6) DSR:此腳位由數據機控制,用以通知電腦㆒切均準備就緒,

可以傳送資料過來。

(7) RTS:此腳位由電腦控制,用以通知數據機馬㆖傳送資料至電腦;

而當數據機接收到此訊號後,便會將它所收到的資料傳送

給電腦。

(8) CTS:此腳位由數據機控制,用以通知電腦將欲傳送的資料送至

數據機;而當電腦接收到此訊號後,便會將準備送出的資

料送給至數據機。

(9) RI:數據機通知電腦有電話進來,是否接聽電話則由電腦決定。

Page 58: 資訊工程學系專題報告 8051應用 無線遙控車140.134.131.145/upload/paper_uni/911pdf/910113.pdf · 第㆒章 導論 1.1 製作動機 從小玩過遙控車之類的玩具,現在知道類比和數位信號的特

52 of 74

5.2.2 串列資料的格式

我們是採用非同步串列資料傳送,其資料格式如㆘:

(1) 標記:

當串列傳輸線㆖不傳送資料時,它所處的狀態稱為標記狀態,

用以告知對方目前是處於待機閒置的狀態㆘,此信號㆒直保持

在高準位。

(2) 起始位元:

在真正傳送資料位元前,會先送出㆒個低電位的位元,以告知

接收端馬㆖就要送資料出去了,標記㆒直保持在高電位㆘,㆒

旦送出起始位元低電位後,在這轉態的瞬間,接收端與發送端

便取得同步。

(3) 資料位元:

真正傳送的資料在起始位元送出後,便逐㆒將位元㆒個㆒個送

出去(位元 0 最先送出)。資料的長度可以是 5 到 8 個位元,。

(4) 同位位元:

在傳送完每㆒個位元資料後,接著送出同位檢查位元,用來檢

查資料在傳送的過程㆗是否發生錯誤,同位位元檢查可以是奇

同位或偶同位。採用奇同位做同位位元檢查,表示所有資料位

元加㆖同位位元後,“1”的總數要為奇數,反之偶同位則所有

資料位元加㆖同位位元,“1”的總數為偶數個。

(5) 停止位元:

在㆒連串的傳送位元的最後㆒個位元稱為停止位元,用以表示

㆒個位元組的資料已傳送完畢。停止位元可以是 1 個、1.5 個或

2 個,依需要而做選擇。由以㆖可知,在串列傳輸㆗,加入起

始位元及停止位元的主要功能是讓收發兩端可以隨時取得同

步。

5.2.3 RS-232 串列埠傳輸率率--鮑率

鮑率代表著串列資料的傳輸速度,也就是每秒鐘可以傳送幾個

位元的資料,其單位是 BPS( Bit Per Second )。典型的傳輸率有 1200、

Page 59: 資訊工程學系專題報告 8051應用 無線遙控車140.134.131.145/upload/paper_uni/911pdf/910113.pdf · 第㆒章 導論 1.1 製作動機 從小玩過遙控車之類的玩具,現在知道類比和數位信號的特

53 of 74

2400、4800 和 9600BPS,鮑率越高傳送時間越愈短,至於應採用

何種傳輸率來傳送資料呢?只要收發雙方的速度㆒致,便不會有問

題。而在本專題㆗我們所採用的非同步串列傳輸通訊協定為

( 9600,8,N,1 ),即鮑率為 9600BPS,傳送或接收 8 個資料位元,沒

有同位檢查,1 個停止位元,而起始位元會㆒直存在著。

5.2.4 訊號位準轉換 IC

PC 端串列埠與 8051 的串列介面溝通需要㆒個訊號位準轉換

IC,通稱 MAX232,㆒般在坊間最常買得到的則是 HIN232,其實

功能大同小異,對於我們這次的專題需求已經可以滿足了,而值得

注意的是,IC 腳位㆖標示的 IN 或 OUT 常常會讓㆟困惑,因此以

略圖表示其之間的連線方式如㆘:

圖 5.2 MAX232 與 8051、DB-9 連接圖

圖 5.3a MAX232

DB-9(RS-232 Connector)

MAX2328051

(P3.1) TxD

(P3.0) RxD

T1 in T1 out

R1 out R1 in

RxD

TxD12

11 14

13

2

3

11

10

Page 60: 資訊工程學系專題報告 8051應用 無線遙控車140.134.131.145/upload/paper_uni/911pdf/910113.pdf · 第㆒章 導論 1.1 製作動機 從小玩過遙控車之類的玩具,現在知道類比和數位信號的特

54 of 74

圖 5.3b HIN232

Page 61: 資訊工程學系專題報告 8051應用 無線遙控車140.134.131.145/upload/paper_uni/911pdf/910113.pdf · 第㆒章 導論 1.1 製作動機 從小玩過遙控車之類的玩具,現在知道類比和數位信號的特

55 of 74

第六章 過程與心得及應用與展望

6.1 過程與心得

周其君:

在最近的㆒篇報導出來,真的令我們很訝異!我們跟世界接

軌了嗎?宏碁引進 iRobot ㆟工智慧吸塵器!麻省理工學院製作了

近 30 個原型機才㆖市的,沒想到跟我剛開始的理念完全㆒樣!?

專題決定之後,㆒直尚未擬定計劃的我們,經由老師的指導,目

標從原本的純粹以無線模組驅使 8051對步進馬達的控制轉向由 PC端經 RS-232 藉由 8051 無線模組電路遙控遠端 8051 無線模組電路

的步進馬達電路,功能性的擴充明顯增加了彈性,藉由 PC 端發送

指令的方式可以以程式利用檔案,達到自動控制、甚至是㆟工智

慧的目的。

我們做的這個題目,其實是偏硬體為主,因此花了不少時間

去研究硬體,尤其在學以致用的時候,常常會碰到理論在實際的

運用㆖差異很大,其實不難理解,因為我們所定義的理論,是在

環境因素影像極小的條件㆘定義的,然而現實生活㆗,干擾太多,

理論變成㆒種參考,實作反而變成㆒項重要的課題!在專題之㆗,

除了對理論的重視之外,我的想法總是遵循 Try and Error 這個原

理,相信經驗法則會讓我們的專題突破㆒層又㆒層的瓶頸,事實

證明了這是正確的。

感謝老師在㆒開始大力支援我們所有需要的設備,包含標準

5V 整流器、8051 燒錄器與實驗板,以及相關技術指導,更感謝老

師百忙㆗抽空與我們做專題的會議研討;另外要感謝學長的指教,

讓我們跨出專題的第㆒步,並且在後續製作過程將疑慮減至最低。

劉冠亨:

㆒開始定位在 8051 的應用㆖,後來經由老師的建議,引進 PC作為控制端,加強其控制功能。

要實作硬體,有點懼怕。不過我們資工系也有開很多相關課

程,只是沒有電子、電機系的廣泛與深入,就 8051 而言,是可以

勝任的,。

㆒開始每個模組都要先在麵包板㆖先測試,可是當所有模組

Page 62: 資訊工程學系專題報告 8051應用 無線遙控車140.134.131.145/upload/paper_uni/911pdf/910113.pdf · 第㆒章 導論 1.1 製作動機 從小玩過遙控車之類的玩具,現在知道類比和數位信號的特

56 of 74

都兜㆖去,負載改變,造成電壓源有很大問題,到最後我們只得

分開設計,把步進馬達的 12v 和 IC 的 5v 分開。

不論是專題的完成、或者是從㆗所得到的學習及收穫,都得

深深感謝在這過程當㆗,給我們許多幫助的前輩們。從頭到尾與

我們討論給我們幫助的鏡坪學長,以及支持我們、並給我們各方

面指導的李維聰老師。

6.2 問題與討論

在硬體部分,所幸有學長的前車之鑑,避開了許多不需要再

去 Try and Error 才會知道的問題,但從企劃到實作,最常遇到需

要解決卻很麻煩的狀況:

步進馬達的不正常運作:

訊號線接觸不良、激磁順序不當或工作電壓不足

在最初我們成功的將麵包版實做轉燒成 IC 板後,忽然發現步

進馬達有㆒顆運作很不正常,原以為是馬達所需電壓不足,經過

輪番測試之後才發現馬達壞了…,另外也發現,當訊號線若是接

觸不良或電壓未達步進馬達的工作電壓,都會造成類似壞掉的現

象,唯有檢查㆒切週邊確定無誤,或是將訊號線輸入資料,㆒個 bit㆒個 bit 去測試時會發生問題,才能斷定步進馬達是壞的,而本組

採用的是後者,只為求完整的狀況。

無線模組未運作:太多原因

花我們最長時間去測試與實作的無線收發模組,起先因為學

長提醒無線模組很容易買到壞的,坊間實在是有很多不肖業者,

賣出的模組都無法運作;有的是頻率不對,有的是㆓手維修過的,

因此當麵包板實驗時發生即使調整過頻率、也使用正確的電阻,

模組仍無法正常運作的現象時,我們都以為是它壞了,其實不㆒

定!實際㆖問題有可能出現在理論性的資料!當我們為求資料傳

送的快速,依理論算出可以使用最快速度頻率的電阻給無線模組

用時,殊不知這電阻值其實對應到的頻率是連線㆖的臨界值,只

Page 63: 資訊工程學系專題報告 8051應用 無線遙控車140.134.131.145/upload/paper_uni/911pdf/910113.pdf · 第㆒章 導論 1.1 製作動機 從小玩過遙控車之類的玩具,現在知道類比和數位信號的特

57 of 74

要稍微有差,便造成模組無法正常通訊,因此終於知道不可太貪

心,夠用就好;當然,這個大問題不只是如此,更嚴重影響到編、

解碼 IC!因為製造出廠時多少都會有些誤差,所以每家編、解碼

IC 對於基本需求的電阻值對應的頻率可能會不適用,必須使用可

變電阻㆒直測試,這就是硬體麻煩的㆞方。不過很慶幸我們克服

了。

無線模組運作失常:

多半是因為低頻接收模組與高頻發射模組靠得太近

曾經最令我頭痛的㆞方莫過於無線模組的傳輸距離了,因為

根據測試結果發現:㆒個 3xxMHz 的無線接收模組,與㆒個 4xxMHz的無線發射模組放在近距離,即使經過編碼,仍是不可能正常運

作的!!以我的分析來研判,應是 4xxMHz 的發射模組可以產生

出令 3xxMHz 無線接收模組能接收到的雜亂干涉波,導致 3xxMHz無線接收模組無法接收較遠的任何訊息,因為接收端幾乎完全在

解讀雜訊,而忽略掉遠端的訊號。但是,㆒個 3xxMHz 的無線發

射模組和㆒個 4xxMHz 的無線接收模組經過測試後,卻不會發生

這樣的情況,原因可想而知!因為 3xxMHz 發射頻率未達 4xxMHz無線接收模組的要求,即使有干涉波也根本不會造成威脅。我想

到的㆒個解決方法很巧妙,也是克難的方式,就是如果這樣的問

題組合真的避免不了,可以利用 8051 決定高頻發射模組的開關,

高頻發射模組㆒旦傳送完畢馬㆖關掉,以免影響低頻接收模組的

正常運作,當然傳送是否能在另㆒端收到後才關閉這是需要測試

反應時間的,因為我們無法要求另㆒端送出已收到的訊號讓正在

運作高頻發射模組的㆒端知道而做關閉動作,也只能利用延遲,

在㆒段時間後立即關閉模組,來達到目的。

步進馬達㆒動起來,就什麼都不對勁了:

電源電路的設計有誤

根據經驗,如果工作電壓源是電池,我們在電源電路㆖就必

須經過㆒番設計,才能使 IC 所需工作電壓不會因步進馬達動起來

而降低,導致 IC 運作失常;否則最常出現且最為明顯的現象就是

步進馬達動的時候,無線模組的編、解碼 IC 等無法正常運作,幾

Page 64: 資訊工程學系專題報告 8051應用 無線遙控車140.134.131.145/upload/paper_uni/911pdf/910113.pdf · 第㆒章 導論 1.1 製作動機 從小玩過遙控車之類的玩具,現在知道類比和數位信號的特

58 of 74

乎可以算是停止運作;要解決這樣的方法,我們使用電源分開法,

就是 IC 電路的電源使用獨立 5V 供應,而步進馬達所需的 12V 電

源也是另外獨立,唯㆒會造成困擾的是整體結構因為電池的增加

變得相當沉重,導致步進馬達因自製前導輪荷重產生的摩擦力超

出其推動力能力所及,無法正常順暢運轉,我們才另外考慮外接 5V與 12V A/D的整流器,自此之後整體執行效能也因此大為提昇。

經由 RS-232 收到的資料怪怪的:

多半為石英晶體震盪器頻率不對

對於 RS-232 介面與 8051 之間的溝通,為何每次收到的訊號

都不㆒樣、不穩定?起先我們以為這是軟體設定的問題,比方說

通訊協定兩端不同等,但經過㆒番追查發現問題竟出在硬體㆖!

提供 8051 運作的石英晶體震盪器頻率非得要是 11.0952MHz 才可

以正確的利用串列埠與電腦溝通資料,而我們為方便運算資料傳

輸鮑率卻使用 12MHz 的震盪器,以為在做串列埠溝通時選擇較接

近我們算出的鮑率作為通訊協定即可,然而 PC 端的通訊協定嚴格

的限制使用標準鮑率,傳輸才會正確,這些值剛好就是只能用

11.0952MHz 來做運算才有的鮑率,這是我們當初想都沒想過的。

在軟體部分,從 8051 組合語言至 C++,是我覺得最彈性的㆞

方,可以修修改改,不會很吃力,功能可以擴充,動作可以修改,

甚至可以多加㆒些比較㆟性化的服務;我覺得吃力的㆞方是在設

計資料傳輸的協定,也就是 8051 解讀 PC 端資料或是 8051 經無線

模組所解讀的資料必須有㆒個協定,當然這個自由度還頗高的,

只是花了不少時間去研究如何利用編解碼 IC ㆖ 4bits 的資料流與

8bits 的位址碼做資料或指令的傳遞,另外為了寫這個控制程式,

我曾經㆖網路跑去㆘載加拿大的㆒所大學的㆖課教材來研讀,是

跟串列埠傳輸有關的課題,我覺得獲益良多,我在找資料的同時,

也從另㆒方面可以肯定的說,我們學校的資工系老師所教硬體部

分的教材並不比國外教材所有的資料缺乏。整體程式寫㆘來,不

包含組合語言的程式碼,約有 2000 多行,原因只是想把這個重要

的㆟機介面做好,因此用了不少螢幕控制的指令,其實主體核心

Page 65: 資訊工程學系專題報告 8051應用 無線遙控車140.134.131.145/upload/paper_uni/911pdf/910113.pdf · 第㆒章 導論 1.1 製作動機 從小玩過遙控車之類的玩具,現在知道類比和數位信號的特

59 of 74

技術程式只有不到 30 行就可以達到傳輸動作了。而在程式的跨平

台部分的問題是由於開發環境是在 DOS 模式㆘,對傳統記憶體的

使用則由於各作業系統的不同而會有顯示㆖出現亂碼的情形出

現,不過程式仍能正常執行,所以建議程式必須在 Windows 98 ㆘

執行才會穩定。基於這個原因,我㆒直想要嘗試將此程式改寫成

Windows 版本,C++而不是 Basic 的視窗版,我知道 Windows ㆘的

開發環境有良好的 WinSock 物件可使用,但由於視窗設計技術受

限與研究時間的不足,而未能轉移。

Page 66: 資訊工程學系專題報告 8051應用 無線遙控車140.134.131.145/upload/paper_uni/911pdf/910113.pdf · 第㆒章 導論 1.1 製作動機 從小玩過遙控車之類的玩具,現在知道類比和數位信號的特

60 of 74

6.3 應用與未來展望

September 23, 2002 TIME Magazine 有㆒篇文章可讓我們借鏡

Maid To OrderA little robot called Roomba vacuums your house while you lounge by the

pool. Is this the beginning of the end?

BY LEV GROSSMAN

有個名叫羅巴的小機器㆟,會趁著你在泳池邊逍遙時幫你把

家裡灰塵吸乾淨。這個輕巧的家用清潔機器㆟會自己尋找灰塵,

然後自動清理乾淨,整理房子不再是件麻煩事。

這個負責家庭清潔工作的新式機器㆟是麻省理工學院㆟工智

慧研究室孕育出來的,由麻州沙莫維爾的 iRobot 公司製造。美國

航太總署利用<拓荒者號>送㆖火星的探測車,就是運用研究室主

任 Rodney Brooks 所首創的技術設計出來的。

基本㆖,機器㆟就是㆒具有身體外形的電腦,不過 iRobot 公司希望將他們的機器㆟以家電的面貌㆖市。結果發現㆟們對家電

要求比電腦要高。家電必須價格低廉、操作簡便、耐用,沒有㆟

願意花兩千美元買㆒台只有工程博士才會操作、每㆝還得重新開

機兩次的吸塵器。走出象牙塔是個文化衝擊。他們還得研究如何

清潔㆞板,跪在㆞板㆖,研究灰塵聚積、飄散的物理原理。吸塵

器會耗費大量電力,所以他們必須發明㆒種低耗電新式吸塵裝置,

好讓羅巴能靠充電式電池來運作。

十㆓年過去了,歷經了㆔十個原型機之後,羅巴終於誕生了:㆒個重 2.5 公斤、寬㆔十五公分的家用機器㆟,看起來比較像是鱟

而不像㆟類。把開關打開,它就突然有了生命,警覺的程度令㆟

訝異—就好像它有個性㆒樣。羅巴的視力有限,所以它在房間裡

遊走時,有部分是毫無目標的,以逐漸擴大的螺旋形來涵蓋開放

空間,碰到牆壁時就小心翼翼㆞沿著牆壁前進,偶爾碰到立燈或

是椅腳時,它會輕盈㆞後退。它利用㆒套稱為”經驗法則(heuristics)”的簡單規則來導航,羅巴的尋路程式原是 iRobot 公司為清除㆞雷

Page 67: 資訊工程學系專題報告 8051應用 無線遙控車140.134.131.145/upload/paper_uni/911pdf/910113.pdf · 第㆒章 導論 1.1 製作動機 從小玩過遙控車之類的玩具,現在知道類比和數位信號的特

61 of 74

的軍用機器㆟而開發。當羅巴判斷—根據它的經驗法則、房間的

大小、以及它在遊走時碰到障礙物數量—它已經把房間來來回回

吸過好幾次了,就會停㆘來,高興㆞發出嗶嗶聲,然後自己關機。

DigiTimes 11 月 29 日也有台灣市場的報導:(詳見附錄 C)

㆟工智慧科技在消費市場現身。想想 1970 年代末期個㆟電腦

的情況。當時沒有㆟相信會有任何㆟想在自己家裡擺台個㆟電腦,

現在很多工作被電腦取代後,我們無法想像生活裡沒有電腦的話

該怎麼辦。

Page 68: 資訊工程學系專題報告 8051應用 無線遙控車140.134.131.145/upload/paper_uni/911pdf/910113.pdf · 第㆒章 導論 1.1 製作動機 從小玩過遙控車之類的玩具,現在知道類比和數位信號的特

62 of 74

參考文獻

[1] 吳㆒農, 單晶片 8051 實務, 松崗電腦圖書資料股份有限公司, 2002 年 1月㆓版。

[2] 陳龍㆔、許榮庭, PC/8051 無線遙控專題製作, 松崗電腦圖書資料股份

有限公司, 1996 年 5 月初版。

[3] 陳龍㆔, 8051 入門與介面控制, 松崗電腦圖書資料股份有限公司,1996年 6 月。

[4] 蔡明志著, TURBO C/C++完全征服手冊, 碁峰資訊, 1999 年 12 月初版。

[5] Naba Barkakati 原著/蔡明志譯, TURBO C++ Bible, 松崗電腦圖書資料股

份有限公司, 1991 年 6 月初版。

[7] Holtek Semiconductor Inc., HT-12A/HT-12E 212 Series of Encoders,2000 年4 月 11 日。

[8] Holtek Semiconductor Inc., 212 Series of Dncoders,1999 年 7 月 12 日。

[9] Interfacing the Serial/RS232 Port v5.0 (http://www.senet.com.au/~cpeacock)[10] 8051 Timers and Serial Port (University of Texas at Dallas. EE4380 Fall

2001 Class 10. By Pari vallal Kannan)[11] 8051 Serial Communication (Bradley University Nov. 15 2000 by D.R.

Schertz)

Page 69: 資訊工程學系專題報告 8051應用 無線遙控車140.134.131.145/upload/paper_uni/911pdf/910113.pdf · 第㆒章 導論 1.1 製作動機 從小玩過遙控車之類的玩具,現在知道類比和數位信號的特

63 of 74

附錄 A

8051 控制端㆖的程式碼

COUNTER REG 20HTRFLAG REG 21H

ORG 0LJMP STARTORG 23HLJMP SERVICEORG 30H

;@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@START:

MOV P1,#00HMOV P2,#FFHCLR COUNTERCLR TRFLAGCLR R0CLR R1CLR R2MOV TMOD,#20H

MOV TH1,#FDHMOV SCON,#50HMOV IE,#10010000BSETB TR1

$LOOP:CLR R0JNB R2,$RESETMOV A,P2CPL AANL A,#0FHJZ $LOOPCJNE A,R0,$1MOV P1,#00HJMP $LOOP

$RESET:MOV SBUF,#250 ;Tell PC that RESET has been pressed.SETB R2SETB TRFLAGJMP $LOOP

$1:MOV P1,#00HMOV R0,A

$wait:

Page 70: 資訊工程學系專題報告 8051應用 無線遙控車140.134.131.145/upload/paper_uni/911pdf/910113.pdf · 第㆒章 導論 1.1 製作動機 從小玩過遙控車之類的玩具,現在知道類比和數位信號的特

64 of 74

JB TRFLAG,$waitMOV SBUF,ASETB TRFLAG

JMP $LOOP;@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@

ORG 100HSERVICE:

JB TI,TRANSMOV B,SBUFMOV SBUF,BSETB TRFLAGMOV P1,BCLR RIRETI

RSINVALID:RETI

TRANS:CLR TRFLAGCLR TIRETI

END

Page 71: 資訊工程學系專題報告 8051應用 無線遙控車140.134.131.145/upload/paper_uni/911pdf/910113.pdf · 第㆒章 導論 1.1 製作動機 從小玩過遙控車之類的玩具,現在知道類比和數位信號的特

65 of 74

8051 受控端㆖的程式碼

DEMO EQU 20HRESET EQU 21HDEMOFNL EQU 22H

ORG 0LJMP STARTORG 30H

;********************;* 初始化㆒切設定值

;********************START:

MOV P1,#20H ;傳送燈亮起,傳送出 0MOV R7,#50CALL DELAYMOV P0,#00HMOV P1,#80HMOV P2,#FFHMOV R0,#1 ;起始指標位置為 1 並用以紀錄最後停留的指標位置

MOV R1,#0 ;紀錄總相激磁的大小(也就是激磁 Talbe 的大小)MOV R2,#0 ;紀錄 R1 所需再重複的次數(Table 重複次數)MOV R3,#0 ;㆒般暫存用

CLR DEMOCLR RESETCLR DEMOFNL ;DEMO 最後㆒步的指示旗標

;****************************************;* 主程式,接收指令並適當的做出回應與動作

;****************************************OUTPUT:

MOV A,P2ANL A,#0FHJZ OUTPUTCALL MotorJB RESET,STARTJMP OUTPUT

;************************************************;* 依照指令跳至對應的副程式運作,必須使用 CALL 呼叫

;************************************************Motor:$1: CJNE A,#1,$2

MOV DPTR,#Forward

Page 72: 資訊工程學系專題報告 8051應用 無線遙控車140.134.131.145/upload/paper_uni/911pdf/910113.pdf · 第㆒章 導論 1.1 製作動機 從小玩過遙控車之類的玩具,現在知道類比和數位信號的特

66 of 74

MOV R1,#8MOV R2,#80JMP RUN

$2: CJNE A,#2,$3MOV DPTR,#BackwardMOV R1,#8MOV R2,#80JMP RUN

$3: CJNE A,#3,$4MOV DPTR,#LeftMOV R1,#8MOV R2,#64JMP RUN

$4: CJNE A,#4,$5MOV DPTR,#RightMOV R1,#8MOV R2,#64JMP RUN

$5: CJNE A,#5,$6 ;DEMO1SETB DEMOMOV A,#1CALL $1JB RESET,$INTMOV A,#3CALL $3JB RESET,$INTMOV A,#1CALL $1JB RESET,$INTMOV A,#3CALL $3JB RESET,$INTMOV A,#1CALL $1JB RESET,$INTMOV A,#3CALL $3JB RESET,$INTMOV A,#1CALL $1JB RESET,$INT

Page 73: 資訊工程學系專題報告 8051應用 無線遙控車140.134.131.145/upload/paper_uni/911pdf/910113.pdf · 第㆒章 導論 1.1 製作動機 從小玩過遙控車之類的玩具,現在知道類比和數位信號的特

67 of 74

MOV A,#3CALL $3JB RESET,$INTMOV A,#1CALL $1JB RESET,$INTMOV A,#4CALL $4JB RESET,$INTMOV A,#1CALL $1JB RESET,$INTMOV A,#4CALL $4JB RESET,$INTMOV A,#1CALL $1JB RESET,$INTMOV A,#4CALL $4JB RESET,$INTMOV A,#1CALL $1JB RESET,$INTSETB DEMOFNLMOV A,#4CALL $4

$INT:CLR DEMOCLR DEMOFNLRET

$6: CJNE A,#6,$7 ;若 Pause/Continue 在這時被按㆘將不做任何處理

JMP $F

$7: CJNE A,#7,$8 ;若 RESET 被按㆘

SETB RESETJMP $F

$8: CJNE A,#8,$9 ;逆時針旋轉 180 度

MOV DPTR,#LeftMOV R1,#8MOV R2,#128JMP RUN

Page 74: 資訊工程學系專題報告 8051應用 無線遙控車140.134.131.145/upload/paper_uni/911pdf/910113.pdf · 第㆒章 導論 1.1 製作動機 從小玩過遙控車之類的玩具,現在知道類比和數位信號的特

68 of 74

$9: CJNE A,#9,$A ;順時針旋轉 180 度

MOV DPTR,#RightMOV R1,#8MOVR2,#128JMP RUN

$A: CJNE A,#AH,$B ;未定義

$B: CJNE A,#BH,$C ;未定義

$C: CJNE A,#CH,$D ;未定義

$D: CJNE A,#DH,$E ;未定義

$E: CJNE A,#EH,$F ;未定義

$F: CALL TOUT ;若指令未定義則不做任何動作

CALL OVERRET

;**********************************************;* 步進馬達驅動,R0 決定指標值在相激磁表㆗的位置

;* R1 決定總驅動的相激磁數目,R2 決定 R1 重複的次數

;* 行程㆗會檢查暫停/繼續或停止有無被按㆘,行程

;* 從 Motor 跳過來因此最後會以 RET 結束

;**********************************************RUN:

MOV R3,ACALL TOUT

LOOP:MOV A,R1SUBB A,R0JNZ MotorStepMOV R0,#1

MotorStep:MOV A,R0MOVC A,@A+DPTRMOV P0,AMOV A,P2ANL A,#0FHJZ MotorNextCJNE A,#6,$1 ;若 Pause/Continue 被按㆘

CALL TOUTCALL OVERCALL PCCHKJB RESET,$0CALL TOUTJMP MotorNext

Page 75: 資訊工程學系專題報告 8051應用 無線遙控車140.134.131.145/upload/paper_uni/911pdf/910113.pdf · 第㆒章 導論 1.1 製作動機 從小玩過遙控車之類的玩具,現在知道類比和數位信號的特

69 of 74

$1: CJNE A,#7,MotorNextSETB RESETCALL TOUTCALL OVER

$0: RET

MotorNext:CALL DELAYINIINC R0DJNZ R2,LOOPJNB DEMO,$1 ;若正在演示㆗就判斷是否要傳送結束位元

JNB DEMOFNL,$2 ;DEMOFNL 被設定表示已達最後㆒步要傳送結束位元

$1: CALL OVER$2: RET

;**************************************************;* 負責暫停/繼續的工作,當暫停時行程會被限制在此,

;* 並等待再次暫停指令到來才繼續,必須用 CALL 呼叫

;**************************************************PCCHK: ;Pause/Continue 的檢查機制

$waitp:MOV A,P2ANL A,#0FHCJNE A,#7,$wait0SETB RESETCALL TOUTCALL OVERRET

$wait0:CJNE A,#6,$waitp ;等待控制端送出 Continue 的指令(再次 Pause)CALL TOUTCALL OVERMOV A,R3RET

;*****************************************;* 負責回傳結束位元使控制端能繼續㆘㆒指令

;* 必須用 CALL 呼叫

;*****************************************OVER:

MOV P1,#2FHCALL TDELAYMOV P1,#20HCALL TDELAYMOV P1,#80H

Page 76: 資訊工程學系專題報告 8051應用 無線遙控車140.134.131.145/upload/paper_uni/911pdf/910113.pdf · 第㆒章 導論 1.1 製作動機 從小玩過遙控車之類的玩具,現在知道類比和數位信號的特

70 of 74

RET

;*****************************************;* 傳送 A ㆗的資料給控制端,必須使用 CALL 呼叫

;*****************************************TOUT:

ADD A,#20H ;使傳送燈亮起的位元

JNB DEMO,$1ADD A,#10H

$1: MOV P1,ASUBB A,#20H ;將 A ㆗的值恢復原狀

JNB DEMO,$2SUBB A,#10H

$2: CALL TDELAYMOV P1,#20HCALL TDELAYJNB DEMO,$3MOV P1,#90H ;停止傳送,避免影響接收模組,DEMO 指示燈亮

RET$3: MOV P1,#80H ;停止傳送,避免影響接收模組

RET;**********************************************;* 傳送專用延遲,使本㆞端有足夠時間送出回傳值

;* 給控制端,必須使用 CALL 呼叫

;**********************************************TDELAY:

MOV R7,#15JMP DELAY

;************************************************; 步進馬達專用延遲,必須使用 CALL 呼叫

;************************************************DELAYINI:

MOV R7,#4DELAY:

MOV R6,#10D1: MOV R5,#249D2: DJNZ R5,D2

DJNZ R6,D1DJNZ R7,DELAYRET

;************************************************;* Motor Table;************************************************

Page 77: 資訊工程學系專題報告 8051應用 無線遙控車140.134.131.145/upload/paper_uni/911pdf/910113.pdf · 第㆒章 導論 1.1 製作動機 從小玩過遙控車之類的玩具,現在知道類比和數位信號的特

71 of 74

Forward DB 45H,61H,29H,A8H,8AH,92H,16H,54HBackward DB 54H,16H,92H,8AH,A8H,29H,61H,45HLeft DB 55H,11H,99H,88H,AAH,22H,66H,44HRight DB 44H,66H,22H,AAH,88H,99H,11H,55H

END

Page 78: 資訊工程學系專題報告 8051應用 無線遙控車140.134.131.145/upload/paper_uni/911pdf/910113.pdf · 第㆒章 導論 1.1 製作動機 從小玩過遙控車之類的玩具,現在知道類比和數位信號的特

72 of 74

附錄 B

PC 端控制程式主要核心技術程式碼

/************************************************* * simple_test Sub_Program * * RS-232 communication program source code. * * Test program in simple interface. * *************************************************/#include <stdio.h>#include <conio.h>#include <bios.h>

#define SET 0x00#define SEND 0x01#define RECEIVE 0x02#define STATUS 0x03#define SPEED 0xE0#define DATATYPE 0x03#define STOPBIT 0x00#define PARITY 0x00

int PORT_NO = 1 ;

void simple_test(){

int status, quit = 0, modify = 1;char unsigned in, out;

while (!quit){if ( modify == 1 ){

clrscr();printf("Initializing COM port %d...",PORT_NO);bioscom(SET, SPEED|DATATYPE|STOPBIT|PARITY, PORT_NO-1);printf("\nStart communicating...\nIf you want to quit, "

"press ESC key...\n\n");modify = 0;

Page 79: 資訊工程學系專題報告 8051應用 無線遙控車140.134.131.145/upload/paper_uni/911pdf/910113.pdf · 第㆒章 導論 1.1 製作動機 從小玩過遙控車之類的玩具,現在知道類比和數位信號的特

73 of 74

}status = bioscom(STATUS, 0, PORT_NO-1);if (status & 0x0100)

if ((in = bioscom(RECEIVE, 0, PORT_NO-1)) != 0 ){if ( in == 250 ) printf("\nRESET!!\n");else printf("'%c,%d'",in,in);

}if ( kbhit() ){

out = getch();if ( out == 0x1B ) quit = 1;else if ( out == 0 ) {

out = getch();switch ( out ){

case 59: PORT_NO = 1; modify = 1;break;case 60: PORT_NO = 2; modify = 1;break;case 61: PORT_NO = 3; modify = 1;break;case 62: PORT_NO = 4; modify = 1;break;default:break;

}}else{

printf("%c",out);bioscom ( SEND, out, PORT_NO-1);

}}

}}

void main(){

simple_test();}

Page 80: 資訊工程學系專題報告 8051應用 無線遙控車140.134.131.145/upload/paper_uni/911pdf/910113.pdf · 第㆒章 導論 1.1 製作動機 從小玩過遙控車之類的玩具,現在知道類比和數位信號的特

74 of 74

附錄 C電子時報(DigiTime):宏碁引進 iRobot ㆟工智慧吸塵器

(記者胡華勝/台北) 2002/11/29

 ㆟工智慧科技逐漸以低價在消費市場現身,由宏碁美國投資的 iRobot 公司所生產的

㆟工智慧機器㆟倫巴已正式引進台灣,並由管家婆科技透過網路在台灣銷售,售價為

8,888 元,是美國以外全球第㆒個開始銷售的㆞區。

 ㆟工智慧研發,過去主要經營國防、商用等專用市場的 iRobot,推出第㆒款消費性

市場使用的智慧型家庭機器㆟,目前在宏碁引進銷售。這款名為倫巴(Roomba)的㆟

工智慧機器㆟是㆒部吸塵器。

 宏碁策略伙伴關係室資深副總黃少華表示,美國市場在 9 月 20 日推出後,5 週內銷

售達 1 萬多台,接單數目超過預期的 3 倍。選擇網路行銷,主要是美國市場實體及網

路的比重已達 1:1。

 管家婆科技董事長翁素蕙表示,科技如果沒有平價化,則無法量化,除美國外,台

灣是全球最先㆖市的㆞區。

 iRobot 較著名的是美國在㆗東戰爭時的戰術機器㆟、古夫金字塔探戡機器㆟。公司

的創始是由美國麻省理工學院(MIT)㆗獨立出來的,宏碁投了 400 萬美元,佔 12%

股權。

圖說:宏碁引進 iRobot 生產的高科技吸塵器,圖左為宏碁策略伙伴關係室資深副總黃

少華、右為管家婆科技董事長翁素蕙。(攝影/林鼎皓)