微機原理課程設計創新題報告藍牙_第1頁
微機原理課程設計創新題報告藍牙_第2頁
微機原理課程設計創新題報告藍牙_第3頁
微機原理課程設計創新題報告藍牙_第4頁
微機原理課程設計創新題報告藍牙_第5頁
已閱讀5頁,還剩28頁未讀 繼續免費閱讀

下載本文檔

版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領

文檔簡介

1、微機原理設計報告創新型實驗設計報告題目基于藍牙通信的無線控制系統學院自動化學院專業電氣工程及其自動化成員陳旭3012203270吳海成3012203292指導教師劉迎澍摘要隨著現代互聯網技術的發展,物聯網和智能家居概念開始逐步發展。智能家居是以住宅為平臺,利用綜合布線技術、網絡通信技術、自動控制等技術將生活有關的設施集成,構建高效的住宅設施與家庭日程管理系統,提升家居安全性、便利性,并能實現環保節能的居住環境。藍牙技術是一種尖端的開放式無限通訊標準,藍牙無線技術使用全球通用的頻帶(2.4GHz)藍牙成本低,體積小,比802.11協議更具有移動性,并且一般的手持平臺(手機,PC機,Pad)均具有

2、藍牙功能。本系統是典型的藍牙無線通信控制系統,包括手持設備指令的發送、處理系統的接收、處理、和功能的具現化。本文基于市場常見的藍牙通訊模塊(HC-06)和8086微機實驗平臺結合,利用現有的資源實現簡單的基于藍牙通信的無線控制系統的搭建。關鍵詞:藍牙;8086微機平臺;串口通信目錄第一章緒論1.1 課程介紹1.2 題目簡介第12二章硬件結構2.1 硬件組成2.2 芯片簡介8255芯片2.2.2 8253芯片2.2.3 8251芯片2.2.4 12864液晶顯示模塊2.3藍牙接收模塊第三章軟件結構3.1 程序子模塊組成3.1.1 概況3.1.2 模塊組成3.2 程序運行詳細流程主程序流程圖中斷子

3、程序流程圖3.2.3 3.2.4 3.2.5 3.2.6 第四章實驗總結4.1 實驗現象4.2 實驗感想4.3 實驗分工附錄程序清單第一章緒論1.1 課程介紹微型計算機原理及接口技術是電氣工程及其自動化專業的重要基礎課程,具有很強的實踐性。天津大學在開展微機實踐教學改革的過程中開辟了學生創新型題目,這類題目在教材知識的基礎上,要求學生綜合運用多學科知識,結合自學,通過團隊合作來共同完成,以提升同學們的自學能力、團隊精神、創新意識和動手能力,為把學生培養為卓越工程師打下良好基礎。1.2 題目簡介本題目是設計一個基于藍牙通信的手機對PC機的控制系統,通過將手機發送的信息編碼,在PC機的程序中解碼,

4、可以實現手機發送指令,PC機執行相應功能的目的。我們利用微機開發試驗箱共設計了四種功能:數碼管顯示輸入數字、電機運動與停止、LCD屏顯示英文與數字、LCD屏顯示漢字報文。運行程序后,通過輸入命令字可進入相應的功能中,然后根據功能可輸入數字、英文、漢字的編碼,即可實現相應的顯示或動作。本題目的設計特色主要用兩點。一、通過手機終端的智能控制是家居智能化的一個方向,目的是通過手機等終端發送指令,實現對電器設備的控制。本題目實現了手機控制PC機做出響應動作,而藍牙的有效范圍為10米,因此可以實現對一個房間內電器的控制,并且可以隨時連接。二、藍牙信號的接收。由于實驗箱沒有可接收藍牙信號裝置,因此我們接入

5、了一個藍牙接收模塊,并設計了模塊底板,將信號以串行信號發出,再通過實驗箱上的串口芯片接收,自己設計相應的通信協議和傳輸速率。第二章硬件結構2.1 硬件組成本課題的硬件由PC機、微型計算機實驗系統、藍牙接收模塊構成。控制信號輸入部分由手機通過藍牙發出信號,藍牙接收模塊接收,并通過8251芯片將串行信號轉換成并行數據傳給PC機。被控部分由實驗箱上的LCD屏,數碼管,直流電手機藍牙微機實驗系統PC機圖2-1 硬件組成原理示意圖圖2-2 實物連接圖2.2 芯片簡介 8255芯片一、簡介:8255是可編程并行1/0接口芯片,有3個8位并行1/0口.具有3個通道3種工作方式的可編程并行接口芯片(40引腳)

6、。其各口功能可由軟件選擇,使用靈活,通用性強。8255可作為單片機與多種外設連接時的中間接口電路。8255作為主機與外設的連接芯片,必須提供與主機相連的3個總線接口,即數據線、地址線、控制線接口。同時必須具有與外設連接的接口 A、B、C口。由于8255可編程,所以必須具有邏輯控制部分,因而 8255內部結構分為3個部分:與CPU連接部分、與外設連接部分、控制部分。二、與CPU連接部分根據定義,8255能并行傳送8位數據,所以其數據線為8根DOD7。由于8255具有3個通道A、B、C,所以只要兩根地址線就能尋址A、B、C 口及控制寄存器,故地址線為兩根A0A1。此外CPU要對8255進行讀、寫與

7、片選操作,所以控制線為片選、復位、讀、寫信號。各信號的引腳編號如下:(1)數據總線DB:編號為DOD7,用于8255與CPU傳送8位數據。(2)地址總線AB:編號為A0A1,用于選擇A、B、C口與控制寄存器。(3)控制總線CB:片選信號、復位信號RST、寫信號、讀信號。當CPU要對8255進行讀、寫操作對,必須先向8255發片選信號選中8255芯片,然后發讀信號或寫信號對8255進行讀或寫數據的操作。三、與外設接口部分根據定義,8255有3個通道A、B、C與外設連接,每個通道又有8根線與外設連接,所以8255可以用24根線與外設連接,若進行開關量控制,則 8255可同時控制24路開關。各通道的

8、引腳編號如下:(1)A口:編號為PA0PA7,用于8255向外設輸入輸出8位并行數據。(2)B口:編號為PB0PB7,用于8255向外設輸入輸出8位并行數據。(3)C口:編號為PC0PC7,用于8255向外設輸入輸出8位并行數據。當8255工作于應答I/O方式時,C 口用于應答信號的通信。四、控制器8255將3個通道分為兩組。即PA0PA7與PC4PC7組成A組,PB0PB7與PC0PC3組成B組.如圖7. 5所示,相應的控制器也分為A組控制器和B組控制器,各組控制的作用如下:A組控制器:控制A口與上C口的輸入與輸出。B組控制器:控制B口與上C口的輸入與輸出。五、8255A的引腳功能說明825

9、5A采用40引腳的雙列直插式封裝。40個引腳分為與外設連接的引腳和與CPU連接引腳。(1)與外設連接的引腳8255A與外設連接的引腳共有:PA7PA0A端口數據線,雙向三態。PB7PB0B端口數據線,雙向三態。PC7PC0C端口數據線,雙向三態。PB7PB0和PC7PC0引腳能驅動達林頓復合晶體管(在5V時輸出1mA),所以B、C端口一般作為輸出端口。(2)與CPU連接的引腳8255A與CPU連接的引腳,有8根數據引腳D7D0。它們全部是雙向、三態引腳,用來與數據總線相連接;另外,它還有6根輸入控制引腳,用來接收CPU送來的地址和控制信號。這些引腳分別是:RESET輸入復位信號,高電平有效。當

10、RESET有效時,把8255A內部所有寄存器(包括控制寄存器)全部清零,端口A、B、C自動設置為輸入狀態,三個端口的數據線處于髙阻狀態。一旦復位后,若使8255A重新工作必須進行初始化編程。CS片選信號輸入端,低電平有效。當CS =0為低電平時,8255A才被選中,才能對 8255A進行讀寫操作。RD讀命令信號,輸入低電平有效。當RD =0為低電乎時CPU對8255A進行讀操作,讀出或狀態。WR寫命令信號,輸入,低電平有效。WR=0為低電平時,CPU對8255A進行寫操作,把數據或控制字寫入8255A。A1A0端口選擇信號,輸入。A1A0的編碼輸入選擇端口。8255A有四個端口地址,分別為A端

11、口、B端口、C端口和控制寄存器。選擇方法見表8.5。表8.5 8255A端口尋址及基本操作向8255A輸出一寫操作CSRDWRA1A0操作功能01000選擇A端口,對A端口寫操作01001選擇B端口,對B端口寫操作01010選擇C端口,對C端口寫操作01011對控制寄存器寫入控制字向8255A輸出一讀操作CSRDWRA1A0操作功能00100選擇A端口,對A端口讀操作00101選擇B端口,對B端口讀操作00110選擇C端口,對C端口讀操作00111非法操作,數據線處于高阻狀態1XXXX未選中,數據線處于高阻狀態2.2.2 8253芯片一、簡介8253內部有三個計數器,分別稱為計數器0、計數器1

12、和計數器2,他們的機構完全相同。每個計數器的輸入和輸出都決定于設置在控制寄存器中的控制字,互相之間工作完全獨立。每個計數器通過三個引腳和外部聯系,一個為時鐘輸入端CLK,一個為門控信號輸入端GATE,另一個為輸出端OUT。每個計數器內部有一個8位的控制寄存器,還有一個16位的計數初值寄存器CR、一個計數執行部件CE和一個輸出鎖存器OL。執行部件實際上是一個16位的減法計數器,它的起始值就是初值寄存器的值,而初始值寄存器的值是通過程序設置的。輸出鎖存器的值是通過程序設置的。輸出鎖存器OL用來鎖存計數執行部件CE的內容,從而使CPU可以對此進行讀操作。二、工作原理8253具有3個獨立的計數通道,采

13、用減1計數方式。在門控信號有效時,每輸入1個計數脈沖,通道作1次計數操作。當計數脈沖是已知周期的時鐘信號時,計數就成為定時。8253芯片有24條引腳,封裝在雙列直插式陶瓷管殼內。1.數據總線緩沖器數據總線緩沖器與系統總線連接,8位雙向,與CPU交換信息的通道。這是8253與CPU之間的數據接口,它由8位雙向三態緩沖存儲器構成,是CPU與8253之間交換信息的必經之路。圖2-3 8253內部原理圖2.讀/寫控制讀/寫控制分別連接系統的IOR和IOW,由CPU控制著訪問8253的內部通道。接收CPU送入的讀/寫控制信號,并完成對芯片內部各功能部件的控制功能,因此,它實際上是8253芯片內部的控制器

14、。A1A0:端口選擇信號,由CPU輸入。8253內部有3個獨立的通道,加上控制字寄存器,構成8253芯片的4個端口,CPU可對3個通道進行讀/寫操作3對控制字寄存器進行寫操作。這4個端口地址由最低2位地址碼A1和A0來選擇。如表所示。(1) CS片選信號,由CPU輸入,低電平有效,通常由端口地址的高位地址譯碼形成。(2) RD、WR讀/寫控制命令,由CPU輸入,低電平有效。RD有效時,CPU讀取由A1A0所選定的通道內計數器的內容。WR有效時,CPU將計數值寫入各個通道的計數器中,或者是將方式控制字寫入控制字寄存器中。CPU對8253的讀/寫操作。3.計數通道02每個計數通道內含1個16位的初

15、值寄存器、減1計數器和1個16位的(輸出)鎖存器。8253內部包含3個功能完全相同的通道,每個通道內部設有一個16位計數器,可進行二進制或十進制(BCD碼)計數。采用二進制計數時,寫入的初值范圍為0000H0FFFFH,最大計數值是0000H,代表65536。采用BCD碼計數時,寫入的初值范圍為00009999,最大計數值是0000,代表10000。與此計數器相對應,每個通道內設有一個16位計數值鎖存器。必要時可用來鎖存計數值。當某通道用作計數器時,應將要求計數的次數預置到該通道的計數器中、被計數的事件應以脈沖方式從CLK端輸入,每輸入一個計數脈沖,計數器內容減“1”,待計數值計到“0”,OU

16、T端將有輸出,表示計數次數到。當某個通道用作定時器時,由CLK輸入一定頻率的時鐘脈沖,根據要求定時的時間長短確定所需的計數值。計數器的初值即定時系數應根據要求定時的時間進行如下運算才能得到:定時系數=需要定時的時間/時鐘脈沖周期設置通道:向方式控制字寄存器端口寫入方式選擇控制字,用于確定要設置的通道及工作方式;計數/定時:向通道寫入計數值,啟動計數操作;讀取當前的計數值:向指定通道讀取當前計數器值時,8253將計數器值存入鎖存器,從鎖存器向外提供當前的計數器值,計數器則繼續作計數操作。計數到:當計數器減1為0時,通過引腳OUT向外輸出“到”的脈沖信號。計數初值輸入存放在初值寄存器中,計數開始或

17、重裝入時被復制到計數器中。4.方式選擇控制字8253的初始化編程就是對其工作方式的確定。具體實現就是在8253上電后,由CPU向8253的控制寄存器寫入一個控制字,就可以規定8253的工作方式、計數值的長度以及計數所用的數制等,另外根據要求將計數值寫入8253的相應通道。8253的一個方式控制字只決定一個技術通道的工作模式。三、8253的通道工作方式8253中各通道可有6種可供選擇的工作方式,以完成定時、計數或脈沖發生器等多種功能。8253的各種工作方式如下:1.方式0:計數結束則中斷工作方式0被稱為計數結束中斷方式。當任一通道被定義為工作方式0時, OUT輸出為低電平;若門控信號GATE為高

18、電平,當CPU利用輸出指令向該通道寫入計數值WR#有效時,OUT仍保持低電平,然后計數器開始減“1”計數,直到計數值為“0”,此刻OUT將輸出由低電平向高電平跳變,可用它向CPU發出中斷請求,OUT端輸出的高電平一直維持到下次再寫入計數值為止。在工作方式0情況下,門控信號GATE用來控制減“1”計數操作是否進行。當GATE=1時,允許減“1”計數;GATE=0時,禁止減“1”計數;計數值將保持GATE有效時的數值不變,待GATE重新有效后,減“1”計數繼續進行。顯然,利用工作方式0既可完成計數功能,也可完成定時功能。當用作計數器時,應將要求計數的次數預置到計數器中,將要求計數的事件以脈沖方式從

19、CLK端輸入,由它對計數器進行減“1”計數,直到計數值為0,此刻OUT輸出正跳變,表示計數次數到。當用作定時器時,應把根據要求定時的時間和CLK的周期計算出定時系數,預置到計數器中。從CLK,輸入的應是一定頻率的時鐘脈沖,由它對計數器進行減“1”計數,定時時間從寫入計數值開始,到計數值計到“0”為止,這時OUT輸出正跳變,表示定時時間到。有一點需要說明,任一通道工作在方式0情況下,計數器初值一次有效,經過一次計數或定時后如果需要繼續完成計數或定時功能,必須重新寫入計數器的初值。2.方式1:單脈沖發生器工作方式1被稱作可編程單脈沖發生器。進入這種工作方式, CPU裝入計數值n后OUT輸出高電平,

20、不管此時的GATE輸入是高電平還是低電平,都不開始減“1”計數,必須等到GATE由低電平向高電平跳變形成一個上升沿后,計數過程才會開始。與此同時,OUT輸出由高電平向低電平跳變,形成了輸出單脈沖的前沿,待計數值計到“0”, OUT輸出由低電平向高電平跳變,形成輸出單脈沖的后沿,因此,由方式l所能輸出單脈沖的寬度為CLK周期的n倍。如果在減“1”計數過程中, GATE由高電平跳變為低電乎,這并不影響計數過程,仍繼續計數;但若重新遇到GATE的上升沿,則從初值開始重新計數,其效果會使輸出的單脈沖加寬,如教材圖9-22(b)中的第2個單脈沖。這種工作方式下,計數值也是一次有效,每輸入一次計數值,只產

21、生一個負極性單脈沖。3.方式2:速率波發生器工作方式2被稱作速率波發生器。進入這種工作方式, OUT輸出高電平,裝入計數值n后如果GATE為高電平,則立即開始計數,OUT保持為高電平不變;待計數值減到“1”和“0”之間, OUT將輸出寬度為一個CLK周期的負脈沖,計數值為“0”時,自動重新裝入計數初值n,實現循環計數,OUT將輸出一定頻率的負脈沖序列,其脈沖寬度固定為一個CLK周期,重復周期為CLK周期的n倍。如果在減“1”計數過程中,GATE變為無效(輸入0電平),則暫停減“1”計數,待GATE恢復有效后,從初值n開始重新計數。這樣會改變輸出脈沖的速率。如果在操作過程中要求改變輸出脈沖的速率

22、,CPU可在任何時候,重新寫人新的計數值,它不會影響正在進行的減“1”計數過程,而是從下一個計數操作用期開始按新的計數值改變輸出脈沖的速率。4.方式3:方波發生器工作方式3被稱作方波發生器。任一通道工作在方式3,只在計數值n為偶數,則可輸出重復周期為n、占空比為1:1的方波。進入工作方式3,OUT輸出低電平,裝入計數值后,OUT立即跳變為高電平。如果當GATE為高電平,則立即開始減“1”計數,OUT保持為高電平,若n為偶數,則當計數值減到n/2時,OUT跳變為低電平,一直保持到計數值為“0”,系統才自動重新置入計數值n,實現循環計數。這時OUT端輸出的周期為nCLK周期,占空比為1:1的方波序

23、列;若n為奇數,則OUT端輸出周期為nCLK周期,占空比為(n+1)/2)/(n-1)/2)的近似方波序列。如果在操作過程中, GATE變為無效,則暫停減“1”計數過程,直到GATE再次有效,重新從初值n開始減“1”計數。如果要求改變輸出方波的速率,則CPU可在任何時候重新裝入新的計數初值n,并從下一個計數操作周期開始改變輸出方波的速率。5.方式4:軟件觸發方式計數工作方式4被稱作軟件觸發方式。進入工作方式4,OUT輸出高電平。裝入計數值n后,如果GATE為高電平,則立即開始減“1”計數,直到計數值減到“0”為止,OUT輸出寬度為一個CLK周期的負脈沖。由軟件裝入的計數值只有一次有效,如果要繼

24、續操作,必須重新置入計數初值n。如果在操作的過程中,GATE變為無效,則停止減“1”計數,到GATE再次有效時,重新從初值開始減“1”計數。顯然,利用這種工作方式可以完成定時功能,定時時間從裝入計數值n開始,則OUT輸出負脈沖(表示定時時間到),其定時時間=nCLK周期。這種工作方式也可完成計數功能,它要求計數的事件以脈沖的方式從CLK輸入,將計數次數作為計數初值裝入后,由CLK端輸入的計數脈沖進行減“1”計數,直到計數值為“0”,由OUT端輸出負脈沖(表示計數次數到)。當然也可利用OUT向CPU發出中斷請求。因此工作方式4與工作方式0很相似,只是方式0在OUT端輸出正階躍信號、方式4在OUT

25、端輸出負脈沖信號。2.2.3 8251芯片一、8251A的內部結構圖2-4 8251引腳圖二、8251A的工作過程(1)8251A發送數據的過程當發送緩沖器為空時,信號TXRDY有效(或狀態字的D0=1),以示發送器準備好,等待CPU送入數據。CPU將要發送的數據寫入8251A的發送緩沖器;發送的數據進行“并串”轉換;插入起始位、奇/偶位和停止位或同步字符等,數據一位一位從TXD端串行輸出。(2)8251A接收數據的過程在RXD端檢測到起始位或同步字符;開始在RXD線上采集數據;將接收到的數據“串并”轉換,并進行奇偶校驗和檢查錯誤;將采樣到的、經過變換的8位數據由接收緩沖器送入數據總線緩沖器;

26、信號RXRDY有效(或狀態字的D1=1),以示8251A已接收到一個數據,待CPU讀取。三、8251A的初始化在如前面已經強調過的,在使用可編程接口之前必須進行初始化,即在使用8251A進行數據傳輸前,對其進行編程,將相關方式指令字、命令指令字寫入8251A。8251A初始化的具體步驟如圖所示。圖2-5 初始化流程圖四、8251A的控制字和狀態字關于8251A的方式指令字、命令指令字和狀態字,應著重對字中各位符號0、1含義的理解,掌握這些字的應用。(1)方式指令字(控制字)格式方式指令字的格式如圖1-4所示:注方式指令字的B2B1=00,此時8251A工作于同步方式,而字中S2S1的設置不起作

27、用。圖2-6 251A方式指令字格式(2)命令指令字(控制字)格式命令指令字的格式如圖1-5所示:圖2-78251A方式指令字格式(3)狀態字8251A的狀態字格式如圖1-6所示:(i)狀態位RXRDY、TXE、SYNDET和8251A的引腳信號RXRDY、TXE、SYNDET定義相同,電平一致;(ii)狀態位TXRDY與8251A的引腳信號TXRDY定義相同,但條件不一樣。當發送緩沖器為空時,狀態位TXRDY=1;而引腳信號TXRDY為高電平的條件是狀態位TXRDY=1、命令控制字TXEN=1,且輸入低電平。(iii)采用查詢方式利用8251A傳送數據時,可通過對狀態位RXRDY或TXRDY

28、的測試來進行數據的傳送。圖2-88251A的狀態字格式 12864字符型液晶屏一、管腳詳解管腳號管腳名稱電平管腳功能描述1VSS0V電源地2VCC3.0+5V電源正3V0-對比度(亮度)調整4RS(CS)H/LRS=“H”,表示DB7DB0為顯示數據RS=“L”,表示DB7DB0為顯示指令數據5R/W(SID)H/LR/W=“H”,E=“H”,數據被讀到DB7DB0R/W=“L”,E=“HL”, DB7DB0的數據被寫到IR或DR6E(SCLK)H/L使能信號7DB0H/L三態數據線8DB1H/L三態數據線9DB2H/L三態數據線10DB3H/L三態數據線11DB4H/L三態數據線12DB5H

29、/L三態數據線13DB6H/L三態數據線14DB7H/L三態數據線15PSBH/LH:8位或4位并口方式,L:串口方式(見注釋1)16NC-空腳17/RESETH/L復位端,低電平有效(見注釋2)18VOUT-LCD驅動電壓輸出端19AVDD背光源正端(+5V)(見注釋3)20KVSS背光源負端(見注釋3)*注釋1:如在實際應用中僅使用并口通訊模式,可將PSB接固定高電平,也可以將模塊上的J8和“VCC”用焊錫短接。二、控制器接口信號說明(1)RS,R/W的配合選擇決定控制界面的4種模式:RSR/W功能說明LLMPU寫指令到指令暫存器(IR)LH讀出忙標志(BF)及地址記數器(AC)的狀態HL

30、MPU寫入數據到數據暫存器(DR)HHMPU從數據暫存器(DR)中讀出數據(2)E信號E狀態執行動作結果高低I/O緩沖DR配合/W進行寫數據或指令高DRI/O緩沖配合R進行讀數據或指令低/低高無動作 忙標志:BF BF標志提供內部工作情況.BF=1表示模塊在進行內部操作,此時模塊不接受外部指令和數據.BF=0時,模塊為準備狀態,隨時可接受外部指令和數據. 利用STATUS RD 指令,可以將BF讀到DB7總線,從而檢驗模塊之工作狀態. 字型產生ROM(CGROM)字型產生ROM(CGROM)提供8192個此觸發器是用于模塊屏幕顯示開和關的控制。DFF=1為開顯示(DISPLAY ON),DDR

31、AM 的內容就顯示在屏幕上,DFF=0為關顯示(DISPLAY OFF)。DFF 的狀態是指令DISPLAY ON/OFF和RST信號控制的。顯示數據RAM(DDRAM)模塊內部顯示數據RAM提供642個位元組的空間,最多可控制4行16字(64個字)的中文字型顯示,當寫入顯示數據RAM時,可分別顯示CGROM與CGRAM的字型;此模塊可顯示三種字型,分別是半角英數字型(16*8)、CGRAM字型及CGROM的中文字型,三種字型的選擇,由在DDRAM中寫入的編碼選擇,在0000H0006H的編碼中(其代碼分別是0000、0002、0004、0006共4個)將選擇CGRAM的自定義字型,02H7F

32、H的編碼中將選擇半角英數字的字型,至于A1以上的編碼將自動的結合下一個位元組,組成兩個位元組的編碼形成中文字型的編碼BIG5(A140D75F),GB(A1A0-F7FFH)。 字型產生RAM(CGRAM)字型產生RAM提供圖象定義(造字)功能, 可以提供四組1616點的自定義圖象空間,使用者可以將內部字型沒有提供的圖象字型自行定義到CGRAM中,便可和CGROM中的定義一樣地通過DDRAM顯示在屏幕中。 地址計數器AC地址計數器是用來貯存DDRAM/CGRAM之一的地址,它可由設定指令暫存器來改變,之后只要讀取或是寫入DDRAM/CGRAM的值時,地址計數器的值就會自動加一,當RS為“0”時

33、而R/W為“1”時,地址計數器的值會被讀取到DB6DB0中。光標/閃爍控制電路此模塊提供硬體光標及閃爍控制電路,由地址計數器的值來指定DDRAM中的光標或閃爍位置。3、指令說明模塊控制芯片提供兩套控制命令,基本指令和擴充指令如下:指令表1:(RE=0:基本指令)指 令 碼功 能令RSR/WD7D6D5D4D3D2D1D0 清除顯示0000000001將DDRAM填滿20H,并且設定DDRAM的地址計數器(AC)到00H地址歸位000000001X設定DDRAM的地址計數器(AC)到00H,并且將游標移到開頭原點位置;這個指令不改變DDRAM 的內容/home設定顯示狀態開/關0000001DC

34、BD=1: 整體顯示 ONC=1: 游標ON B=1:游標位置反白允許進入點設定00000001I/DS指定在數據的讀取與寫入時,設定游標的移動方向及指定顯示的移位I/D=1;AC自增,若光標顯示允許,則光標自動右移1位I/D=0;AC自減,SH=1;移動顯示打開,若I/D=1;整屏左移一位,0右移一位游標或顯示移位控制000001S/CR/LXX設定游標的移動與顯示的移位控制位;這個指令不改變DDRAM 的內容功能設定00001DLXREXXDL=0/1:4/8位數據RE=1: 擴充指令操作RE=0: 基本指令操作設定CGRAM地址0001AC5AC4AC3AC2AC1AC0設定CGRAM

35、地址設定DDRAM地址0010AC5AC4AC3AC2AC1AC0設定DDRAM 地址(顯示位址)第一行:80H87H第二行:90H97H讀取忙標志和地址01BFAC6AC5AC4AC3AC2AC1AC0讀取忙標志(BF)可以確認內部動作是否完成,同時可以讀出地址計數器(AC)的值寫數據到RAM10數據將數據D7D0寫入到內部的RAM (DDRAM/CGRAM/IRAM/GRAM)讀出RAM的值11數據從內部RAM讀取數據D7D0(DDRAM/CGRAM/IRAM/GRAM)指令表2:(RE=1:擴充指令)指令指 令 碼功 能RSR/WD7D6D5D4D3D2D1D0 待命模式00000000

36、01進入待命模式,執行其他指令都棵終止待命模式卷動地址開關開啟000000001SRSR=1:允許輸入垂直卷動地址SR=0:允許輸入IRAM和CGRAM地址 反白 選擇00000001R1R0選擇2行中的任一行作反白顯示,并可決定反白與否。初始值R1R000,第一次設定為反白顯示,再次設定變回正常 睡眠 模式0000001SLXXSL=0:進入睡眠模式SL=1:脫離睡眠模式 擴充 功能 設定00001CLXREG0CL=0/1:4/8位數據RE=1: 擴充指令操作RE=0: 基本指令操作G=1/0:繪圖開關設定繪圖RAM地址0010AC60AC50AC4AC3AC3AC2AC2AC1AC1AC

37、0AC0設定繪圖RAM先設定垂直(列)地址AC6AC5AC0再設定水平(行)地址AC3AC2AC1AC0將以上16位地址連續寫入即可備注;當IC1在接受指令前,微處理器必須先確認其內部處于非忙碌狀態,即讀取BF標志時,BF需為零,方可接受新的指令;如果在送出一個指令前并不檢查BF標志,那么在前一個指令和這個指令中間必須延長一段較長的時間,即是等待前一個指令確實執行完成。2.2 藍牙收發模塊2.2.1 概述BLK-MD-BC04-B藍牙模塊是深圳市博陸科電子科技有限公司專為智能無線數據傳輸而打造,采用英國 CSR 公司 BlueCore4-Ext 芯片,遵循V2.1+EDR藍牙規范。本模塊支持

38、UART,USB,SPI,PCM,SPDIF 等接口,并支持SPP藍牙串口協議,具有成本低、體積小、功耗低、收發靈敏性高等優點,只需配備少許的外圍元件就能實現其強大功能。2.2.2 特點藍牙 V2.1+EDR 藍牙 Class 2內置 PCB 射頻天線內置 8Mbit Flash 支持 SPI 編程接口支持 UART,USB,SPI,PCM 等接口3.3V 電源通過 REACH、ROHS 認證2.2.3 應用領域該模塊主要用于短距離的數據無線傳輸領域。可以方便的和 PC 機的藍牙設備相連,也可以兩個模塊之間的數據互通。避免繁瑣的線纜連接,能直接替代串口線。藍牙無線數據傳輸;工業遙控、遙測; P

39、OS系統,無線鍵盤、鼠標;交通,井下定位、報警;自動化數據采集系統;無線數據傳輸;銀行系統;無線數據采集;樓宇自動化、安防、機房設備無線監控、門禁系統;智能家居、工業控制;汽車檢測設備;電視臺的互動節目表決設備;政府路燈節能設備無線 LED 顯示屏系統2.2.4 功能框圖圖2-8 藍牙模塊功能框圖2.2.5 應用電路圖圖2-9 應用電路圖2.2.6 主從設置及其他配置狀態指示 LED:PIO(1)用于指示藍牙模塊所處狀態,LED 燈閃爍方式與藍牙模塊狀態對應見下表:模式LED 顯示模塊狀態從模式均勻快速閃爍(200ms-on,200ms-off)等待配對長亮建立連接第三章軟件結構3.1 程序子

40、模塊組成3.1.1 設計思路1、基本功能通過輸入命令字可進入相應的功能中:= 1 * GB2、數碼管顯示輸入數字= 2 * GB2、電機運動與停止= 3 * GB2、LCD屏顯示英文與數字= 4 * GB2、LCD屏顯示漢字報文。在各個功能可輸入數字、英文、漢字的編碼,即可實現相應的顯示或動作。2、設計過程在本創新課程設計中根據復雜程序設計思想模塊化程序設計,首先分析和確定程序設計的總體目標;然后將總體目標劃分為若干模塊,具體的對每個功舵的實現進行設計。裎序設計的思路按以下順序進行:分析與確定程序總體設計目標.藍牙接收部分的選擇.藍牙接收電路的設計、焊接與調試.定義毎個模塊的具體任務編寫源程序

41、并進行調試。程序調試過程中現將各個模塊進行調試,然后和進行整體調試。完成實艙報告。程序模塊組成主程序主程序首先是對各個芯片及外設的初始化,然后根據串口中斷中收到的數據判斷命令字,根據命令字進入相應的程序塊中執行相應動作。主程序實際是一個死循環,當進入主程序后判斷命令字,只有輸入正確命令字才進入相應的程序塊中。再程序塊中執行相應功能時,如果再有命令字輸入就會再次跳到命令字判斷程序。顯示實現子程序對LCD的操作主要有兩個方面:(1)在使用之前要先對其進行初始化。這次實驗均是對各文字顯示,因此只涉及對基本顯示的命令設置,包括開顯示和游標復位。在寫入命令字時根據操作要求將對應控制為置位、復位。(2)寫

42、顯示操作。在對LCD初始化之后,就能寫要顯示的數據了,數據是通過串口接收到的。寫入數據時先使能液晶屏,再將D/I位置位表示寫入為數據,然后將讀寫位復位,字符型數據可直接寫入數據口,在寫入漢字時要將數據第八位寫1,并連續寫入兩個數據才能顯示出一個漢字。串口復位及初始化子程序串口復位及初始化主要是根據8251芯片工作方式控制字及命令控制字對8251寫入控制字。由于初始化編程必須在系統復位以后,因此需要首先進行復位操作。8251的復位操作是將8251的命令控制字響應位寫1實現的。系統復位后,就可以對8251進行工作方式的設置,通過寫入工作方式控制字,將工作方式設置為1停止位、無校驗位、波特率因子為1

43、6,最后使能串口發送和接收即可完成初始化編程。串口接收子程序在串口接收程序中,首先重新寫入控制字,允許接收,以使波特率誤差校正。然后不斷的讀狀態控制寄存器,檢測是否接收完成。接收完成后即可讀出數據寄存器中的數據,并在PC機屏幕顯示R以表示接收完成。各功能程序塊1、數碼管顯示數碼管顯示比較容易,就是將接收到的字符碼轉換為十進制數,然后查找數碼管碼表得到編碼,進行顯示即可。如果接收到新的命令字,返回程序命令判斷部分。2、電機動作當接收到電機動作指令時,進入電機動作程序塊,將電機控制端置位,電機即可運轉。在此期間對于非命令字,不予理睬,如果接收到新的命令字,返回程序命令判斷部分。3、LCD屏顯示英文

44、及數字這個是利用了LCD屏最基本的顯示字符功能,通過手機控制端發送英文及數字,藍牙協議將轉化為編碼形式發出,PC機接收到編碼后,寫入LCD翻譯顯示即可實現在LCD上顯示英文及數字的功能。4、LCD屏顯示報文ASCII碼表只是對字符的編碼,對于漢字并沒有編碼,因此就要根據漢字碼表進行翻譯顯示。在接收到數據后要對數據進行簡單處理,首先將接收數據第八位寫1,變成漢字表,然后要將兩個連續接收的數據依次寫入LCD屏才能實現漢字顯示。通過此功能可實現顯示短信、報文翻譯顯示的功能。3.2 程序運行流程圖主程序流程圖開始初始化8253,設置CNT0初值為0DH初始化8255,IO口設置為輸出初始化LCD,功能

45、設定,開顯示存儲原中斷向量,填寫中斷向量表開放中斷請求,打開中斷調用8251初始化子程序,初始化8251是DATA_R是否等于2跳轉至數碼管顯示程序塊否0是DATA_R是否等于3跳轉至電機動作程序塊是否0跳轉至LCD顯示英文、數字程序塊DATA_R是否等于4否0是DATA_R是否等于5跳轉至LCD顯示報文程序塊否0等待中斷中斷子程序流程圖開始關中斷調用串口數據讀入函數,將接收的數據存入DATA_R變量SW寫入8發出中斷結束指令結束開中斷復位8251子程序流程圖開始向8251控制寄存器寫入數據并延時保護現場向8251數據寄存器寫入數據并延時寫入控制命令字,內部復位恢復現場結束初始化8251子程序

46、流程圖開始調用8251復位子程序并延時保護現場寫入工作方式字,1停止位,無校驗,波特率因子為16延時寫入控制命令字,允許發送接收延時恢復現場結束串口發送子程序流程圖開始檢測TXRED位,等待發送緩沖器空,寫入待發送數據允許發送RTS輸出低電平,復位出錯檢驗位允許發送檢測TXE位,等待發送完畢延時結束串口接收數據子程序流程圖開始允許發送讀入狀態字,檢測RXRED位,等待接收就緒讀入數據將數據存入變量DATA_R中在PC屏幕顯示數據,并顯示R表示接收正確結束LCD控制位相關子程序流程圖LCD液晶屏EN位置位子程序開始保護現場將8255的PC2口置位恢復現場結束3.2.5.2 LCD液晶屏EN位復位

47、子程序開始保護現場將8255的PC2口復位恢復現場結束 LCD液晶屏RW位置位子程序開始保護現場將8255的PC1口置位恢復現場結束3.2.5.2 LCD液晶屏RW位復位子程序開始結束恢復現場將8255的PC1口復位保護現場 LCD液晶屏DI位置位子程序開始結束恢復現場將8255的PC0口置位保護現場3.2.5.2 LCD液晶屏DI位復位子程序開始保護現場將8255的PC0口復位恢復現場結束LCD屏顯示子程序流程圖開始保護現場調用EN置位子程序,使能LCD調用DI置位子程序,寫入數據調用RW復位子程序,對LCD寫操作通過8255的PA口,輸出數據調用EN復位子程序,復位EN位結束恢復現場數碼管

48、顯示程序塊流程圖開始等待中斷接收串口數據是DATA_R是否小于0AH返回命令判斷程序否0DATA_R減30H,得到字符對應的十進制數0BX指向數碼管編碼首地址這個數字是否大于0FH否是將H的編碼存入AL查表得到編碼顯示顯示電機動作程序塊流程圖開始8255電機控制口輸出置位等待中斷接收串口數據0是DATA_R是否小于0AH8255電機控制口輸出復位否返回命令判斷程序0LCD顯示英文、數字程序塊流程圖開始等待中斷接收串口數據是DATA_R是否小于0AH清屏,游標復位否0返回命令判斷程序否這個數字是否等于0FH是將數據寫入LCD清屏,游標復位數碼管顯示報文程序塊流程圖清屏,游標復位將數據寫入LCD這

49、個數字是否等于0FH0DATA_R是否小于0AH清屏,游標復位等待中斷接收串口數據開始是返回命令判斷程序第四章實驗總結4.1 實驗現象1開始實驗打開手機藍牙,與串口藍牙芯片連接,準備通信。2通過手機藍牙向串口發送控制指令,選擇功能菜單。3進入功能菜單選擇功能,控制電機/數碼管/LCD屏顯示。4在功能中選擇控制菜單退出功能,(電機停轉/數碼管清零/LCD清屏)5電機的轉動控制6數碼管顯示數據,超限報警。7LCD附帶功能,顯示藍牙串口通信內容與清屏。4.2 實驗感想能夠完成這個實驗,首先需要感謝大家的精誠合作和不懈的努力,以及劉老師提供的資料和支持。本實驗是獨立依靠自己所學的知識,查找資料,最后通

50、過反復實驗和調試完成的獨立開發設計。在實驗的過程中,既得到了知識經驗方面的積累,又對個人的長期發展和性格形成上起到了積極的作用,所以總的來說,這是一次很不錯的實踐活動,是一個團結協作不畏困難的創新過程。通過這次試驗,在學習經驗積累方面,我們通過原來積累的知識,按照一貫的開發流程能夠在一開始就完成整個程序的架構和獨立子程序的編寫,這都得益于平時課堂和實驗中積累。其次,在實驗中,我們也遇到了一些重要的沒有預料到的問題。比如說,軟件編寫過程中脫離硬件。對8250和8251的通訊原理和編程邏輯的混淆對我們的實驗造成了很大困擾。在選擇同步通信,異步通信猶豫不定,耗時將近半天才得以發現和解決,極大干擾了設

51、計思路和實驗進程。第三,當解決完8251異步通信的問題后,我們又被模塊波特率調制的問題攔在路前。因為之前沒有做過串行通信的底層開發,所以在串行異步的收發波特率以及數據幀格式方面花了很大的功夫,一個個的排除可能的問題,從數據幀位,停止位,校驗位到時序,在這個過程中,我們基本上考察了串行異步通信的方方面面,查閱了各種資料,由于藍牙通信波特率固定為9600,在調試過程中不斷出現亂碼。首先我們使用PC模擬串口與8251通信。經過一個下午的,亂碼,時序混亂和程序崩潰最終能夠完成穩定地8251與PC通信。之后我們在藍牙芯片的使用上又出現了問題,上電的藍牙芯片對通信沒有任何反應。最后我們通過電腦串口調試助手

52、和藍牙通信,保存數據,然后進行分析,找出藍牙通信協議的規律,再對8251接收進行設置,才完成了PC機和手機的通信。在這個過程中,我們互相激勵并且集思廣益,發揮了團隊合作的重要優勢,互相協調最后解決了問題。在個人發展方面的收獲相比而言更是珍貴,但又是一言難盡的。每個人的分工不同,感觸肯定也不同,但是總的來說,耐心,細心,團隊合作,堅持不懈,不畏困難都是不可或缺的。在緊張的學習中大家還能抽出時間一起為同一個項目努力,讓每一個成員都倍感欣慰。4.3 實驗分工吳海成:藍牙模塊調試,線路連接,程序控制部分編寫,流程圖設計,實驗報告書寫。陳旭:資料搜集,8251芯片通信程序編寫,命令執行部分程序編寫,實驗

53、報告書寫。附錄程序清單;=;文件名:CONTROL_BLUTH;版本號:V2.6;作者:WHC, CX;=NAME CONTROL_BLUTHSTACKS SEGMENT STACK STACK ;定義堆棧段STA DW 1000 DUP(?) ;定義1000個字節的連續存儲區TOP EQU LENGTH STASTACKS ENDSDATA SEGMENT ;定義數據段CON_8255 EQU 0293HPORTA EQU 0290HPORTB EQU 0291H PORTC EQU 0292H ;8255地址CON_8253 EQU 0283H ;8253地址 Y0譯碼CNT0 EQU 0

54、280HCNT1 EQU 0281H CON_8251 EQU 0289H ;8251地址 Y1譯碼DATA_8251 EQU 0288HDATA_R DB 2DATA_T DB ?SW DB 0NUM DB 3FH,06H,5BH,4FH,66H,6DH,7DH,07H,7FH,6FH,77H,7CH,39H,5EH,79H,71HINT_SEG DW ? ;用于存儲中斷向量段基址的變量INT_OFF DW ? ;用于存儲中斷向量偏移量的變量DATA ENDSCODE SEGMENT ASSUME CS:CODE,DS:DATA,SS:STACKSSTART: MOV AX, DATA MO

55、V DS, AX MOV AX, STACKS MOV SS, AX MOV SP, TOP ;寫入:初始化8253,并設置計數初值 MOV DX, CON_8253 MOV AL, 36H ;00 11 011 0B,CNT0方式3,讀寫16位,二進制計數 OUT DX, AL MOV DX, CNT0 ;寫入CNT0計數初值 MOV AX, 000DH ;00D0H OUT DX, AL MOV AL, 00H OUT DX, AL ;寫入:配置8255 MOV DX, CON_8255 MOV AL, 80H ;10000000B OUT DX, AL ;設置8255,都為輸出 ;LCD

56、功能設定 CALL SET_E CALL RESET_DI CALL RESET_RW MOV DX, PORTA MOV AL, 00110000B OUT DX, AL CALL RESET_E ;LCD開顯示 CALL SET_E CALL RESET_DI CALL RESET_RW MOV DX,PORTA MOV AL,00001111B OUT DX,AL CALL RESET_E ;存儲中斷向量 MOV AL, 0BH ;中斷號 MOV AH, 35H INT 21H ;取中斷向量 MOV INT_SEG, ES MOV INT_OFF, BX ;保存向量地址 CLI ;填寫中

57、斷向量表 PUSH DS MOV AX, SEG INT_PROG MOV DS, AX ;中斷程序段基址送入DS MOV DX, OFFSET INT_PROG ;中斷程序偏移量送入DX MOV AL, 0BH ;中斷號 MOV AH, 25H ;置該中斷向量 INT 21H POP DS ;保護原中斷屏蔽字 IN AL, 21H AND AL, 0F7H ;開放中斷請求 OUT 21H,AL STI ;開中斷 CALL INIT_8251CONTROL: CMP BYTE PTR DATA_R, 02H JZ SHUMA ;2號功能數碼管 CMP BYTE PTR DATA_R, 03H

58、JZ MOTOR ;3號功能電機 CMP BYTE PTR DATA_R, 04H JZ LCD_D ;4號功能LCD顯示字符 CMP BYTE PTR DATA_R, 05H JZ LCD_W ;5號功能LCD顯示漢字BB: CMP SW,0 JZ BB MOV SW, 0 ;等待中斷,HLT指令不知為何沒有作用 JMP CONTROL ;主程序 ;= ;*SHUMA: BB1: CMP SW,0 JZ BB1 MOV SW, 0 CMP DATA_R, 0AH ;判斷是否為命令字 JB CONTROL SUB DATA_R, 30H MOV DX, PORTB CMP DATA_R, 0F

59、H ;小于0F執行循環數字部分 JNA BELOW ;大于0F執行H MOV AL, 76H OUT DX, AL JMP SHUMA ;在0f內顯示數字BELOW: MOV AL, DATA_R MOV BX, OFFSET NUM XLAT ;查表得到顯示編碼 OUT DX, AL JMP SHUMA ;= ;*MOTOR: MOV DX, PORTB MOV AL, 80H OUT DX, ALBB2: CMP SW,0 JZ BB2 MOV SW, 0 CMP DATA_R, 0AH JNB MOTOR MOV DX, PORTB MOV AL, 00H ;有命令字,關電機 OUT D

60、X, AL JMP CONTROL ;= ;*LCD_D: BB3: CMP SW,0 JZ BB3 MOV SW, 0 CMP DATA_R, 0AH ;判斷是否為命令字 JB EXIT3 CMP DATA_R, 0FH JNZ DISPLAY1 ;判斷是否為清屏命令;收到清屏命令的清屏處理 CALL SET_E CALL RESET_DI CALL RESET_RW MOV DX,PORTA MOV AL,00000001B OUT DX,AL CALL RESET_E ;此處清屏 CALL DELAY CALL SET_E CALL RESET_DI CALL RESET_RW MOV

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯系上傳者。文件的所有權益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
  • 4. 未經權益所有人同意不得將文件中的內容挪作商業或盈利用途。
  • 5. 人人文庫網僅提供信息存儲空間,僅對用戶上傳內容的表現方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
  • 6. 下載文件中如有侵權或不適當內容,請與我們聯系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論