• 沒有找到結果。

8051應用-無線遙控車

N/A
N/A
Protected

Academic year: 2021

Share "8051應用-無線遙控車"

Copied!
80
0
0

加載中.... (立即查看全文)

全文

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

(2) 目錄 目錄………………………………………………………………………I 圖表目錄………………………………………………………………III 摘要……………………………………………………………………V 第㆒章 導論……………………………………………………………1 第㆓章 8051 概述……………………………………………………2 2.1 MCS-8051 單晶片簡介…………………………………………2 2.2 MCS-8051 單晶片腳位說明……………………………………3 2.3 MCS-8051 單晶片系統架構……………………………………7 2.3.1 指令解碼器………………………………………………7 2.3.2 程式計數器………………………………………………8 2.3.3 算術與邏輯單元…………………………………………8 2.3.4 程式記憶體………………………………………………8 2.3.5 資料記憶體………………………………………………9 2.3.6 特殊功能暫存器…………………………………………11 2.4 8051 串列傳送介面……………………………………………19 2.4.1 串列傳送之工作模式…………………………………19 2.4.2 串列傳輸鮑率的設定…………………………………20 第㆔章 編解碼晶片、無線收發模組及步進馬達模組介紹………22 3.1 HT-12D 編碼晶片……………………………………………22 3.1.1 HT-12D 特色…………………………………………23 3.1.2 HT-12D 運作原理概述………………………………23 3.2 HT-12E 解碼晶片…………………………………………25 3.2.1 HT-12E 特色……………………………………………26 3.2.2 HT-12E 運作原理概述…………………………………27 3.3 無線收發模組………………………………………………28 3.3.1 TG-11A 無線發射模組………………………………29 3.3.2 TG-11B 無線接收模組………………………………30 3.4 步進馬達的特點、種類、激磁方式、驅動電路…………31 3.4.1 步進馬達的特點………………………………………31 3.4.2 步進馬達的種類………………………………………31 3.4.3 步進馬達的激磁方式………………………………………32 I.

(3) 第㆕章 系統運作流程敘述…………………………………………34 4.1 PC 端程式使用功能介紹……………………………………34 4.2 PC 端程式流程圖……………………………………………38 4.2.1「選單系統」流程圖……………………………………38 4.2.2「RS-232 溝通程式」流程圖…………………………39 4.2.3「讀取檔案」流程圖……………………………………40 4.2.4「修改檔案」流程圖……………………………………41 4.2.5「新建檔案」流程圖……………………………………42 4.2.6「執行」流程圖…………………………………………43 4.3 8051 控制端與受控端介紹……………………………………44 4.4 8051 控制端與受控端程式流程圖……………………………45 4.4.1 8051 控制端流程式程圖………………………………45 4.4.2 8051 受控端流程式程圖………………………………46 第五章 PC 端程式簡介……………………………………………47 5.1 串列埠通訊函式……………………………………………47 5.2 RS-232 串列埠介面……………………………………………50 5.2.1 RS-232 腳位意義及方向………………………………50 5.2.2 串列資料的格式………………………………………52 5.2.3 RS-232 串列埠傳輸率--鮑率…………………………52 5.2.4 訊號位準轉換 IC………………………………………53 第六章 過程與心得、問題討論,及應用與未來展望……………55 6.1 過程與心得……………………………………………………55 6.2 問題與討論……………………………………………………56 6.3 應用與未來展望………………………………………………60 參考文獻……………………………………………………………62 附錄 A…………………………………………………………………63 8051 控制端㆖的程式碼………………………………………63 8051 受控端㆖的程式碼………………………………………65 附錄 B…………………………………………………………………72 PC 端控制程式主要核心技術程式碼……………………………72 附錄 C…………………………………………………………………74 電子時報(DigiTime):宏碁引進 iRobot ㆟工智慧吸塵器………74 II.

(4) 圖表目錄 表 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 III.

(5) 圖 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. IV.

(6) 摘 要 本專題為「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 端軟 體結合,發揮遠端自動遙控的功能,成果實為令㆟讚許。此系統的 最佳使用範例可以用在未來㆟們播種、收割等作業,只要載入畫好 的㆞圖(不同的田㆞㆞圖不㆒樣),讓機器去做事就好了,這不是很便 利嗎?. V.

(7) 第㆒章 導論 1.1 製作動機 從小玩過遙控車之類的玩具,現在知道類比和數位信號的特 性,更知道印表機也是用步進馬達為其運作元件,心㆗頓時發現 步進馬達很重要,㆒定會成為將來製作機器㆟的重要元件。學了 微處理機,知道利用它可以設計出㆒套步進馬達控制系統,利用 脈波信號推動步進馬達做數位式的旋轉轉動,若應用於移動物體, 可以達到較精確的位移,而無線遙控可以加以控制遠端物體的行 徑動向,加㆖核心是以 8051 作應用,功能㆖更彈性也更容易增刪 修改,於是決定由此展開架構,以㆒台無線遙控車為目標,㆒旦 成功完成,相信它可再搭載許多裝置,進而成為機器㆟原型機的 基礎。. 1.2 目的 學以致用是我們最大的目的。期能設計出㆒套針對遠端步進 馬達做無線遙控的控制系統,對步進馬達做到即時監控制之目的, 如果能使之搭載其他無線設備,相信功能㆖的擴充是可以預期的, 且可使其能廣泛且靈活㆞使用於工商業用途㆖。. 1 of 74.

(8) 第㆓章 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。. 2 of 74.

(9) 圖 2.1 8051 核心的建構圖. 2.2 MCS-8051 單晶片腳位說明. 3 of 74.

(10) 圖 2.2 8051 接腳圖 MCS-8051 單晶片腳位對應之功能說明: 接腳編號接 腳 名 稱功 能 說 明 P1 這 8 支腳是 8051 的 I/O 埠,內部已經具 有提升電阻的 8 位元雙向 I/O 埠腳。 第 1 腳 1 ~8腳 P1.0~P1.7 (P1.0)是(P1.0~P1.7) LSB,第 8 支腳( P1.7 ) 是 MSB。 P1 ㆖的每支腳可推動 4 個 LS TTL。 8051 的重置( RESET )輸入腳,平常 8051 工 作時這支腳需保持”LOW”狀態。當這支腳由 外部輸入 High( RESET) ( +5V ) 的信號時, 9腳 8051 就 被 重 置 , 8051 被重 置後 就 從位 址 RESET 0000H 開始執行程式。而特殊功能暫存器 ( SFR ) 裡的所有暫存器都會被設成初設狀 態。 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 10~17 腳 P3.0~P3.7 的外部脈波輸入腳。T1 是 Timer1 的外部脈 波輸入腳。WR、RD,當您在 8051 的外部 擴充資料記憶體( RAM )時,這兩條線是控 制寫與讀的信號。P3 ㆖的每㆒支 I/O 腳都可 以作兩種用途。 那 8051 怎麼知道 P3 ㆖的某支腳是當 I/O 或 當另㆒種用途呢?很簡單,8051 它會自重識 別你是將它當何者用途,例如你要使用 UART 時你將第 10 腳看成 RxD,第 11 腳看 成了 TxD 加以使用就可以了。但是有㆒點 必須特別注意,那就是當作其他功能(不當 4 of 74.

(11) I/O 使用) 使用的那支腳的內部栓鎖器的內容 必須設為 1,其他的功能( 如 TxD、RxD、RD、 WR…等) 才會有作用。 這兩支腳是 8051 內部時脈振盪器的輸入端, 你可以在這兩支腳㆖跨接㆒個 12MHz 的石 英晶體( Crystal ),內部的振盪器就會產生 12MHz 的工作頻率,供內部使用。8051 會 根據這個速度工作。若未特別註明,這個振 盪器的工作頻率是在 1MHz~12MHz 之間的 任何㆒個。 18~19 腳. XTAL2(18) XTAL1(19). 8051 的接㆞腳,使用時此腳必須與系統的㆞ 線接在㆒起。 P2 也是內部已經具有提升電阻的 8 位元雙向 I/O 埠腳,P2.0 為 LSB,P2.7 為 MSB。 如果你在 8051 的外面擴充程式記憶體或資 料記憶體時,P2 就變成 8051 的位址匯流排 21~28 腳 P2.0~P2.7 的高位元組( 即 A8~A15 ),與 P0 的低位元 組(即 A0~A7)共同組成 16 位元的位址匯流 排,對外存取外部記憶體,此時 P2 就不能 當作 I/O 使用。P2 ㆖的每支 I/O 腳可推動 4 個 LS TTL。 這支腳是 8051 用來讀取放在外部程式記憶 體的指令時所用的讀取信號,通常這支腳是 PSEN=0 接到 EPROM (程式記憶體)的 OE 腳。 29 腳 (Program 8051 分別致能放在外部的 EPROM 與 RAM Store Enable) (資料記憶體),因此以 8051 的角度去看程式 記憶體與資料記憶體是兩塊獨立的記憶體, 20 腳. VSS. 5 of 74.

(12) 且這兩塊記憶體都可以接到 64K,因此我們 說 8051 的定址能力可達到 128K。 位址栓鎖致能接腳: (Address Latch Enable,簡稱 ALE ) 。 8051 可以使用這支腳發出信號,觸發外部的 30 腳 ALE 8 位元栓鎖器,將 P0 ㆖的位址匯流排信號 ( A0~A7 ) 鎖入栓鎖器㆗,以使 P0 具有資料 /位址匯流排能力。 外部存取致能接腳: 擴充或選擇內部記憶體。 EA=0 這是㆒支輸入腳,當 EA=0 時,8051 ㆒律執 31 腳 (External 行外部程式記憶裡的程式,因此 8051 內部 Latch Enable) 的 4K 程式記憶體就沒有用了,如果要使用 內部的程式記憶體時,㆒定要將 EA 接+5V。 這 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 的外 32~39 腳 P0.0~P0.7 面擴充程式記憶體或資料記憶體時,P0 就 當 作 位 址 匯 流 排 ( A0~A7 ) 和 資 料 匯 流 排 (D0~D7)多工使用。必須在外部加㆒個 8 位 元栓鎖器將位址匯流排從 PC ㆖分離出來, 這個 A0~A7 與 P2 所提供的 A8~A15 合成㆒ 個 16 位元的位址匯流排,因此 8051 可以在 外部定址到 64K 的記憶體。 40 腳. VCC. 8051 的電源輸入端,電源規格是+5V± 10﹪. 6 of 74.

(13) 2.3 MCS-8051 單晶片系統架構 ㆘圖為 8051 系列單晶片之內部功能方塊圖. 圖 2.3 8051 系列單晶片功能方塊圖 以㆘將分別介紹幾個重要的功能說明。. 2.3.1 指令解碼器器( Instruction Decoder ) 指令解碼器的功能是負責將擷取自程式記憶體㆗的指令加以 解碼,並送出內部信號以控制單晶片各單元的動作。這些內部控 制信號可控制資料的來源及目的㆞,以及控制算術/邏輯處理單元 7 of 74.

(14) 的功能。. 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。. 8 of 74.

(15) 圖 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 資料記憶體結構圖. 9 of 74.

(16) 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。這些記憶體適合於布林運算處理 10 of 74.

(17) 之用。 (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 特殊功能暫存器記憶體映射圖. 11 of 74.

(18) 表 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 暫存器主要是記錄及控制單晶片之運算。 如㆘表所示:. 12 of 74.

(19) 表 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 的輸出資料。 13 of 74.

(20) (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):致能/除能串列埠之㆗斷。 14 of 74.

(21) 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。. 15 of 74.

(22) 表 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 時,㆗斷型態則為低準位觸發。 16 of 74.

(23) (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 暫存器分 17 of 74.

(24) 開為兩個不同的暫存器,㆒個是當作 UART 傳送資料的緩衝 區,另㆒個是當作 UART 接收資料的緩衝區。若將資料寫到 SBUF 時,就會將資料放入傳送緩衝區,UART 就會將這個資 料轉成串列資料透過 TXD 傳出去。若去讀 SBUF,就會讀到 接收緩衝區的資料。. 18 of 74.

(25) 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 可以 19 of 74.

(26) 利用此㆒特殊位元來做多處理機的系統連線控制用。此外在通 訊協定㆗的同位位元檢查也可以此位元來做處理。至於傳送速 度只有 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 操作㆘鮑率= [(2. SMOD. ) / 64] * (工作振盪頻率)]其㆗. SMOD 為 SFR ㆗的 PCON 位元 7 當 SMOD=1 時,鮑率=(工作頻率)/32 當 SMOD=0 時,鮑率=(工作頻率)/64 (3) 模式 1 及模式 3 鮑率設定: 在模式 1 及模式 3 操作㆘的鮑率設定由內部計時器 1 來控制, 計時器的工作模式㆒共有 4 種,模式 0 至模式 3,在實施應用 ㆖則採用具有自動重新載入計時的模式 2,。在模式 2 的計時 ㆘,使用的計時器暫存器為 TL1,而 TH1 則是在做自動載入 計時值的設定,而鮑率的計算公式為: 鮑率= [(2. SMOD. ) / 32] * {(工作振盪頻率) / 12 * [256 - TH1]}. 設計時我們是先定出鮑率再求 TH1 之值,將㆖式加以整理可 得: 20 of 74.

(27) TH1 = 256 - [2. SMOD. * (工作振盪頻率)] / (384 * 鮑率). 同理我們可以將常用的鮑率值代入公式而求得㆒些計時器自動載 入值(寫入 TH1 ㆗),整理如㆘:. 表 2.12 鮑率與計時器 1 重新載入值關係表. 21 of 74.

(28) 第㆔章 編解碼晶片、無線收發模組及 步進馬達模組介紹 在與 PC 連接的控制端與小車子之間,我們使用了兩組 HT-12D 及 HT-12E 編解碼晶片,經由無線模組傳送控制碼給車子(步進馬達),再回傳 訊息給 PC,完成整個命令的動作。以㆘是此兩顆 IC 及步進馬達的介紹。. 3.1 HT-12D 解碼晶片. 圖 3.1 HT-12D 腳位圖. 圖 3.2 HT-12D 腳位說明. 22 of 74.

(29) 圖 3.3 HT-12D 功能方塊圖. 3.1.1 HT-12D 特色 (1) (2) (3) (4) (5) (6) (7) (8) (9). 工作電壓在 2.4V~12V,可適用範圍大。 擁有低耗電、高抗雜訊的特性。 待命時所需電流極低。 可解碼 12bits 的資訊(8 bits for Address, 4 bits for data)。 內建震盪器,只須外加電阻即可。 收到的 code 會做㆔次的確認,以確保資料的正確性。 無線模組或紅外線模組都能簡易的搭配使用。 已整合大部分的功能,只需搭配最少的元件。 有效的傳輸指示器。(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 23 of 74.

(30) 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 流程圖 24 of 74.

(31) 由於 HT-12D 已內建了震盪器,所以我們只須外加㆒顆電阻 調整即可。對於 HT-12D 電壓與石英震盪頻率和電阻值之關係,廠 商的建議是解碼晶片的頻率速度最好是編碼晶片的 50 倍快。這部 份的測試工作即使繁瑣卻很重要,IC 批號不㆒,只能直接在實驗 板㆖找最穩定的表現值,最後經過參考值與測得的最佳設定是 HT-12D 搭配 15K~25K 歐姆電阻,HT-12E 搭配 470K 歐姆電阻可 以有最快的反應時間。. 3.2 HT-12E 編碼晶片. 圖 3.6 HT-12E 腳位圖. 25 of 74.

(32) 圖 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) 已整合大部分的功能,只需搭配最少的元件。 26 of 74.

(33) 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;也因 27 of 74.

(34) 為如此,加㆖ HT-12D 在接收到資料後會做㆔次的 check 動作,使 得編解碼的速度過慢而無法與無線模組相匹配。. 圖 3.11 HT-12E 運作流程圖. 3.3 無線收發模組 我們所使用的無線模組是㆒般在電子商場普遍皆可買到的 TG-11A Transmitter 和 TG-11B Receiver,頻帶範圍介於 300~433MHz 之間。雖然此 模組的功能並不若專用的無線模組般強大,但因為價錢便宜、體積小、且 所能傳輸的範圍也在可接受的程度內,故非常適合用於 small size 的系統 內。底㆘是此模組的簡介。. 28 of 74.

(35) 3.3.1 TG-11A 無線發射模組. 圖 3.12 TG-11A 無線發射模組腳位圖 PIN 1:VCC PIN 2:VCC PIN 3:GND PIN 4:GND PIN 5:RF OUTPUT,此信號腳是用來外接㆝線用,以加強發送出 的信號強度。 PIN 6:CODE INPUT,將 HT-12E 編碼後的訊號輸入此信號腳以 交由 transmitter 送出。 FREQUENCY:300~433MHz MODULATION:AM(CODE) SUPPLY VOLTAGE:1.5V~15VDC RF OUTPUT POWER:8mW. 29 of 74.

(36) 3.3.2 TG-11B 無線接收模組. 圖 3.13 TG-11B 無線接收模組腳位圖 PIN 1:GND PIN 2:DIGITAL OUTPUT,將收到的數位訊號由此信號腳輸出至 HT-12D 解碼晶片做解碼動作。 PIN 3:LINEAR OUTPUT PIN 4:VCC PIN 5:VCC PIN 6:GND PIN 7:GND PIN 8:ANT (about 30~35cm),此為外接㆝線接腳,用來調整波型 以加強接收信號強度。 FREQUENCY:300~433MHz MODULATION:AM SUPPLY VOLTAGE:4.5~5.5VDC SENSITIVITY:3uVrms OUTPUT:DIGITAL & LINEAR. 30 of 74.

(37) 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 齒較多。. 31 of 74.

(38) 圖 3.14 ㆕相步進馬達的內部結構圖. 3.4.3 步進馬達的激磁方式 所謂激磁即是令步進馬達的線圈通過電流,以㆕相步進馬達 而言,其定子線圈共有㆕個相,分別為 A、 A ,B 、 B 。而步進 馬達的激磁方式有㆘列㆔種方式: 1.㆒相激磁: 每次令㆒個線圈通過電流。步進角等於基本步進角,消耗電 力小,角精確度好,但轉矩小,振動較大。 其激磁方式及時序如圖. 32 of 74.

(39) 圖 3.15 ㆒相激磁方式及時序 2.㆓相激磁: 每次令兩個線圈通電。步進角等於基本步進角。轉矩大、振 動小,是目前較受普通採用的激磁方式。 其激磁方式及時序如圖所示。. 圖 3.16 ㆓相激磁方式及時序 3.㆒.㆓相激磁: ㆒.㆓相激磁又稱為半步激磁,採用㆒相及㆓相輪流激磁;每 ㆒步進角等於基本步進角的 1/2,因此解析度提高㆒倍,且運轉更 為平順,和㆓相激磁方式同樣受到普遍採用。其激磁方式及時序 如圖所示。. 圖 3.17 ㆒.㆓相激磁方式及時序 33 of 74.

(40) 第㆕章 系統運作流程敘述 4.1 PC 端程式使用功能介紹. 圖 4.1a 程式主畫面 ㆖圖是程式使用㆗的畫面,程式的功能除了可以對 RS-232 做 溝通外,亦可使用檔案輸入的方式來決定溝通時的批次指令輸出。 由㆖圖可見有些功能被鎖住,這是由於此程式支援讀、寫檔案,因 此這些功能㆖若需要檔案協助的選項在檔案讀入或新建完成之前是 不會運作的,唯有檔案讀入成功或是新檔建立成功才可使用;檔案 等條件滿足將會顯示如㆘圖:. 圖 4.1b 所有條件滿足的程式主畫面 34 of 74.

(41) 功能 1 介紹:RS-232 溝通程式 此選項㆗的功能讓 PC 經由 RS-232 對於 8051 控制端與 8051 受控端有最㆟性的溝通介面,是以 GUI 的型式表達,因 此可以讓使用者很快了解操作方式與即時狀況,介面圖例如 ㆘:. 圖 4.2a RS-232 使用者控制介面 由圖可知程式正在初始化,這是每次進入此選項的必經過程, 這項功能是用來檢查 8051 控制端與 8051 受控端是否有連線成 功,用以決定使用者可以操控到的裝置;如果 8051 受控端未 開機、電力不足,或是超出無線模組傳輸的範圍之外時,程式 會因為初始化時未收到回應而做出 8051 受控端未連線的判 定,當然這樣的判斷不僅是在程式㆒開始的時候,㆒旦程式發 現各裝置的連線狀態改變,就會自動重新檢測;若 8051 控制 端未接㆖電源、未正常運作,或是根本沒有與電腦接㆖ RS-232 線,這部份就會被判定為所有功能無法使用。 ㆘圖為使用者在所有裝置都連㆖線時所操控的過程:. 35 of 74.

(42) 圖 4.2b RS-232 使用者控制介面功能全開 功能 2 介紹:讀檔 從字面㆖可以很清楚知道這是讀檔的機制,讀入的檔案會 被判斷格式是否合格才加以讀入。 功能 3 介紹:修改已讀入的檔案 將讀入後的檔案做修改,並支援存檔與格式檢查。 功能 4 介紹:建檔 所包含的修改功能同等功能 3,在此之前會依照使用者需 求製作出新檔案或是將舊檔案覆蓋。以㆘為功能 3、4 的主要 畫面(修改功能相同):. 圖 4.3a 編輯新檔案畫面 36 of 74.

(43) 圖 4.3b 存檔成功畫面 功能 5 介紹:執行 進入後會先檢查 RS-232 與各裝置是否正常運作,否則會 封鎖其子功能。 包含的子功能有:將讀入的檔以迷宮鼠演示㆒遍直到找到 出口、將讀入的檔案處理之後以 Animation 或文字模式的方式 ㆒邊演示㆒邊遙控 8051 的控制、受控端,以及重新檢查各裝 置連線狀態。除 Animation 與迷宮鼠演示的圖略與圖 4.3a 非常 近似外,另有文字模式演示如㆘:. 圖 4.4 文字模式演示圖略 至此,程式整體大略的功能已做粗略簡要之敘述。 37 of 74.

(44) 4.2 PC 端程式流程圖 由於程式架構龐大且複雜,在此贅述之流程圖可能不甚詳盡。. 4.2.1「選單系統」流程圖 程式開始執行. Y. 檔案已成功建立 或被成功讀取 N. 顯示檔案格式、檔名於 表單目錄㆖. N. 打開鎖住的功能. 使用者按鍵. Y N. 按鍵合法性. RS-232 溝通程式. Y 1. 讀取檔案. 2. 修改讀入的檔案. 3. 新建檔案. 4. 執行. 5. N Y. 程式要求結束 N. Y. 程式要求結束 N. Y. 程式要求結束 N. Y. 程式要求結束 N. Y. 程式要求結束. 結束程式 圖 4.5「選單系統」流程圖 38 of 74. 6.

(45) 4.2.2 「RS-232 溝通程式」流程圖 程式開始執行 初始化並決定 使用者可使用的裝置. Y N. 連線狀態改變. 使用者按鍵 N. Y. 檢查各裝置連線狀態 N. 合法性. Y. Y Y. 返回. 逾時回傳 N. 要求結束. 顯示回傳. N. N. 回傳值 N. Y. 8051 控制端 OK 回傳時間開始計時. Y RS-232 輸出至 8051 控制端. Y. 8051 受控端 OK. N. RS-232 輸出至 8051 控制端 Y. 8051 受控端 回傳. 回傳時間開始計時 回傳時間重新計時 顯示回傳. N N (Return) 逾時回傳. Y. Y. N (Return) 8051 控制端 回傳. N. 圖 4.6「RS-232 溝通程式」流程圖 39 of 74.

(46) 4.2.3 「讀取檔案」流程圖 程式開始執行. 選單:載入或返回 N. 使用者按鍵 N 顯示讀取 完成訊息. 使用者輸入檔名. Y 合法性 Y. 顯示錯誤訊息 N. 載入 Y. N. 返回. 用以開啟的檔名 存在 Y Y. 完成讀檔並初始 化資料. N. 圖 4.7「讀取檔案」流程圖. 40 of 74.

(47) 4.2.4 「修改檔案」流程圖 程式開始執行. 將讀取的檔案資料 以 GUI 方式顯示. 讓使用者利用鍵盤 針對資料修改、存 檔與瀏覽. N. 偵測到離開指令 Y 資料異動. N. 返回. Y 進入點與出口 已設定 N 告知使用者. 存檔. Y. Y 通知未存檔 訊息並詢問 是否存檔. 存檔與否. 圖 4.8「修改檔案」流程圖. 41 of 74. N.

(48) 4.2.5 「新建檔案」流程圖 程式開始執行. 選單:建立或返回. 使用者按鍵 N. N. Y 合法性 Y 建立. N. 返回. Y 通知使用者. Y. 用以開啟的檔名 存在. N 覆寫?. N. Y. 初始化儲存陣列 進行 4.2.4 修改檔案 N. 要求結束. 圖 4.9「新建檔案」流程圖. 42 of 74. Y.

(49) 4.2.6 「執行」流程圖 程式開始執行. 選單:執行或返回. 使用者按鍵 N 通知使用者 連線問題. N. Y 合法性 Y 執行. 通知使用者 執行完畢. N. 返回. Y N. 裝置連線狀態 OK Y. 參照 4.2.2 原理並依照檔案解讀後資 料做 8051 控制端與受控端的控制 N. 裝置連線狀態 OK Y Y. 持有之資料執行 完畢. 圖 4.10「執行」流程圖. 43 of 74. N.

(50) 4.3 8051 控制端與受控端介紹 控制端:5V 直流電輸入與㆒條 RS-232 DB9 ㆒公㆒母的線連接 PC。 外殼㆖有指示燈指示是否收到訊號的狀況。 受控端:5V 與 12V 直流電輸入(電池或 A/D 整流器均可)。. 圖 4.11 8051 控制端與受控端外觀. 圖 4.12 8051 控制端與受控端說明. 44 of 74.

(51) 4.4 8051 控制端與受控端程式流程圖 4.4.1 8051 控制端程式流程圖 程式開始執行 初始化各平行埠 與資料. 是否為第㆒次執 行 N N. Y. 利用 SBUF 送出 RESET 代表位元告知 PC; SETB 第㆒次執行的旗標. 檢查 P2 有無資料 更新 Y 利用 SBUF 送出 新進資料 ㆗斷服務程式 TI 是否為 1. Y. 清除 TI. ㆗斷返回. N 利用 SBUF 送出 讀入的資料,並 將資料再送到 P1 清除 RI 圖 4.13 8051 控制端程式流程圖. 45 of 74.

(52) 4.4.2 8051 受控端程式流程圖 程式開始執行. 初始化各平行埠 與資料 N. 檢查 P2 有無資料更 新,或 P2 是否非 0 Y 將資料解讀成相 對應動作並依相 激磁順序與重複 次數送訊號至 P0. 傳送完成代表 位元至 P1. P0 動作未完成. 傳送完成代表 位元至 P1 N. Y Y. 檢查 P2 是否有 新動作輸入. 新動作是否為暫 停 Y. Y. 新動作是否為暫 停 N N 新動作是否為停 止. N. Y. N. 新動作是否為停 止 N 繼續傳送訊號至 P1. 圖 4.14 8051 受控端程式流程圖 46 of 74. Y.

(53) 第五章 PC 端系統程式簡介 我們使用 Borland 公司的 Turbo C++ V3.0 作為開發本系統程式的環 境,撰寫針對 RS-232 介面做傳輸動作的程式,以㆘是我們使用到的相關 函式介紹與 RS-232 串列埠介紹。. 5.1 串列埠通訊函式 PC 端程式如果要對外進行串列傳輸,在 Turbo C++的開發環境 ㆘,有許多種函式都可以支援這類的動作,起先撰寫溝通程式之時, 我們使用了㆒個 OUTPORT 的函式,它必須鎖定 I/O 埠的位址做傳 輸,㆒般電腦㆖具備的串列埠的位址如㆘表所示: Name Address IRQ COM 1 3F8 4 COM 2 2F8 3 COM 3 3E8 4 COM 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 介面卡各項的通訊功能。第㆒個參數為所要求服務的功能, 其所提供的功能如㆘: 47 of 74.

(54) 功能代碼 意 義 將通訊參數設定為所傳入 abyte 的 0 值。 將 abyte 內的值送到通訊埠。 1 由通訊埠㆗接收㆒個位元組的資料。 2 傳回目前通訊埠的狀態。 3 表 5.2 BIOSCOM 第㆒個參數功能解說 第㆓個參數可能為通訊參數或所欲傳送的資料,若為通訊參 數,其內容與意義如㆘: 參 數 意 義 所要接收之字元位元數 0x02 每個字元為 7 個位元 0x03 每個字元為 8 個位元 停止位元數目 0x00 1 個停止位元 0x04 2 個停止位元 同位元檢查位元 0x00 不具同位元檢查位元 0x08 具有奇同位元檢查位元 0x18 具有偶同位元檢查位元 Baud Rate 0x00 110 Baud 0x20 150 Baud 0x40 300 Baud 0x60 600 Baud 0x80 1200 Baud 0xA0 2400 Baud 0xC0 4800 Baud 0xE0 9600 Baud 表 5.3 BIOSCOM 第㆓個參數功能解說 通訊參數所記載的內容可以由㆖表㆗的各項常數選擇其㆒以運算子 OR ( | ) 將其連接起來,例如將 abyte 的值設定為: 0x03 | 0x04 | 0x18 | 0xA0 表示設定通訊的狀態為: 每個字元為 8 個位元、2 個停止位元、偶 同位元檢查位元,以及 2400 baud。 48 of 74.

(55) 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 回傳值的低位元組解說 49 of 74.

(56) 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 腳位定義. 50 of 74.

(57) 圖 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:數據機通知電腦有電話進來,是否接聽電話則由電腦決定。 51 of 74.

(58) 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、 52 of 74.

(59) 2400、4800 和 9600BPS,鮑率越高傳送時間越愈短,至於應採用 何種傳輸率來傳送資料呢?只要收發雙方的速度㆒致,便不會有問 題。而在本專題㆗我們所採用的非同步串列傳輸通訊協定為 ( 9600,8,N,1 ),即鮑率為 9600BPS,傳送或接收 8 個資料位元,沒 有同位檢查,1 個停止位元,而起始位元會㆒直存在著。. 5.2.4 訊號位準轉換 IC PC 端串列埠與 8051 的串列介面溝通需要㆒個訊號位準轉換 IC,通稱 MAX232,㆒般在坊間最常買得到的則是 HIN232,其實 功能大同小異,對於我們這次的專題需求已經可以滿足了,而值得 注意的是,IC 腳位㆖標示的 IN 或 OUT 常常會讓㆟困惑,因此以 略圖表示其之間的連線方式如㆘: DB-9 8051 (RS-232 Connector) MAX232 11 11 14 2 (P3.1) TxD T1 in T1 out RxD 10 12 13 (P3.0) RxD R1 out R1 in TxD 3 圖 5.2 MAX232 與 8051、DB-9 連接圖. 圖 5.3a MAX232 53 of 74.

(60) 圖 5.3b HIN232. 54 of 74.

(61) 第六章 過程與心得及應用與展望 6.1 過程與心得 周其君: 在最近的㆒篇報導出來,真的令我們很訝異!我們跟世界接 軌了嗎?宏碁引進 iRobot ㆟工智慧吸塵器!麻省理工學院製作了 近 30 個原型機才㆖市的,沒想到跟我剛開始的理念完全㆒樣!? 專題決定之後,㆒直尚未擬定計劃的我們,經由老師的指導,目 標從原本的純粹以無線模組驅使 8051 對步進馬達的控制轉向由 PC 端經 RS-232 藉由 8051 無線模組電路遙控遠端 8051 無線模組電路 的步進馬達電路,功能性的擴充明顯增加了彈性,藉由 PC 端發送 指令的方式可以以程式利用檔案,達到自動控制、甚至是㆟工智 慧的目的。 我們做的這個題目,其實是偏硬體為主,因此花了不少時間 去研究硬體,尤其在學以致用的時候,常常會碰到理論在實際的 運用㆖差異很大,其實不難理解,因為我們所定義的理論,是在 環境因素影像極小的條件㆘定義的,然而現實生活㆗,干擾太多, 理論變成㆒種參考,實作反而變成㆒項重要的課題!在專題之㆗, 除了對理論的重視之外,我的想法總是遵循 Try and Error 這個原 理,相信經驗法則會讓我們的專題突破㆒層又㆒層的瓶頸,事實 證明了這是正確的。 感謝老師在㆒開始大力支援我們所有需要的設備,包含標準 5V 整流器、8051 燒錄器與實驗板,以及相關技術指導,更感謝老 師百忙㆗抽空與我們做專題的會議研討;另外要感謝學長的指教, 讓我們跨出專題的第㆒步,並且在後續製作過程將疑慮減至最低。 劉冠亨: ㆒開始定位在 8051 的應用㆖,後來經由老師的建議,引進 PC 作為控制端,加強其控制功能。 要實作硬體,有點懼怕。不過我們資工系也有開很多相關課 程,只是沒有電子、電機系的廣泛與深入,就 8051 而言,是可以 勝任的,。 ㆒開始每個模組都要先在麵包板㆖先測試,可是當所有模組 55 of 74.

(62) 都兜㆖去,負載改變,造成電壓源有很大問題,到最後我們只得 分開設計,把步進馬達的 12v 和 IC 的 5v 分開。 不論是專題的完成、或者是從㆗所得到的學習及收穫,都得 深深感謝在這過程當㆗,給我們許多幫助的前輩們。從頭到尾與 我們討論給我們幫助的鏡坪學長,以及支持我們、並給我們各方 面指導的李維聰老師。. 6.2 問題與討論 在硬體部分,所幸有學長的前車之鑑,避開了許多不需要再 去 Try and Error 才會知道的問題,但從企劃到實作,最常遇到需 要解決卻很麻煩的狀況:. 步進馬達的不正常運作: 訊號線接觸不良、激磁順序不當或工作電壓不足 在最初我們成功的將麵包版實做轉燒成 IC 板後,忽然發現步 進馬達有㆒顆運作很不正常,原以為是馬達所需電壓不足,經過 輪番測試之後才發現馬達壞了…,另外也發現,當訊號線若是接 觸不良或電壓未達步進馬達的工作電壓,都會造成類似壞掉的現 象,唯有檢查㆒切週邊確定無誤,或是將訊號線輸入資料,㆒個 bit ㆒個 bit 去測試時會發生問題,才能斷定步進馬達是壞的,而本組 採用的是後者,只為求完整的狀況。. 無線模組未運作:太多原因 花我們最長時間去測試與實作的無線收發模組,起先因為學 長提醒無線模組很容易買到壞的,坊間實在是有很多不肖業者, 賣出的模組都無法運作;有的是頻率不對,有的是㆓手維修過的, 因此當麵包板實驗時發生即使調整過頻率、也使用正確的電阻, 模組仍無法正常運作的現象時,我們都以為是它壞了,其實不㆒ 定!實際㆖問題有可能出現在理論性的資料!當我們為求資料傳 送的快速,依理論算出可以使用最快速度頻率的電阻給無線模組 用時,殊不知這電阻值其實對應到的頻率是連線㆖的臨界值,只 56 of 74.

參考文獻

相關文件

一、訓練目標:充分了解在自動化 機械領域中應用 Arduino 控制,進 而能自行分析、設計與裝配各種控

3.丙級:包括應用作業系統、安裝軟體與使用電腦週邊設 備、設定繪圖環境、控制圖形螢幕、輸出圖形與 管理圖面等基本工作及繪製單件立體圖、立體剖

本專題研究目的旨在活用 kinect 捕捉人體動作,並設法順暢與 設備連動的方法;同時對 HTML5(少許)與 javascript 進行研究,設

本專題研究目的旨在活用 kinect 捕捉人體動作,並設法順暢與 設備連動的方法;同時對 HTML5(少許)與 javascript 進行研究,設

在直流馬達控制系統中,為了減少流經馬達繞線電流及降低功率消耗等 目的,常常使用脈波寬度調變信號 (PWM)

FPPA 是 Filed Programmable Processor Array 的縮寫,簡 單的說:它就是一個可以平行處理的多核心單晶片微控器。與一般 微控器如 8051、pic,…

[r]

‡ RFID 運作原理是透過一片小型硬體的無線射頻辨識技 術晶片( RFID chips),利用內含的天線來傳送與接