

版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領
文檔簡介
1、<p><b> 摘要</b></p><p> 由單片機構成的雙機通信系統采用總線型主從式結構。程設計就是要利用單片機來完成一個系統,實現雙片單片機串行通信。通信的結果實用數碼管進行顯示,數碼管采用查表方式顯示。所謂主從式結構,即在兩個單片機中,一個主機負責通信管理,另一個為從機,從機要負責主機的調度與支配。該設計用AT89C51芯片,并用C語言程序來控制AT89C51,使之
2、能實現兩個單片機之間的通信。通信方式為單工通信,一個為主單片機,作為發(fā)送方,另一個為從單片機,作為接收方。</p><p> 關鍵字:單片機.AT89C51.C語言</p><p><b> 目錄</b></p><p><b> 摘要1</b></p><p><b> 前言
3、3</b></p><p><b> 二 緒論4</b></p><p><b> 2.1單片機4</b></p><p><b> 2.2C語言:4</b></p><p><b> 2.3雙機通信5</b></p>
4、;<p><b> 三.系統分析6</b></p><p> 3.1 基本原理6</p><p> 3.2波特率選擇7</p><p> 3.3通信協議的使用7</p><p><b> 四 、硬件設計7</b></p><p> 4.1單
5、片機串行通信功能10</p><p> 4.2 MAX232芯片12</p><p> 4.3整體電路設計13</p><p><b> 五、軟件設計14</b></p><p> 5.1串行通信軟件實現14</p><p> 5.2程序流程圖14</p>&l
6、t;p><b> 六.聯合調試17</b></p><p><b> 總結18</b></p><p><b> 參考文獻24</b></p><p><b> 前言</b></p><p> 近年來,在自動化控制和只能儀器儀表中,單
7、片機的應用越來越廣泛,由于單片機的運算功能較差,往往需要借助計算機系統,因此單片機和PC機進行遠程通信更具有實際意義,通信的關鍵在于互傳數據信息。51單片機內部的串行口具有通信的功能,該 串口可作為通信接口,利用該串口與PC機的串口通信進行串行通信,將單片機采集的數據進行整理及統計等復雜處理就能滿足實際的應用需要。51單片機的開發(fā)除了硬件支持外,同樣離不開軟件。用匯編語言或C語言等高級語言編寫的源程序必須轉化為機器碼才能被執(zhí)行。目前流行
8、的Keil 8051c編譯器。它提供了集成開發(fā)環(huán)境,包括C編譯器、宏編碼、連接器、庫管理和仿真調制器。</p><p> 利用keil 8051ccuvision編寫的程序可直接調用編譯器編譯,連接后可直接運行。學生結合自己的實際情況,選擇合適的方法來完成51單片機和PC機的串口通 信。二 緒論</p><p><b> 2.1單片機</b></p&
9、gt;<p> 單片機是一種集成在電路芯片,是采用超大規(guī)模集成電路技術把具有數據處理能力的中央處理器CPU隨機存儲器RAM、只讀存儲器ROM、多種I/O口和中斷系統、定時器/計時器等功能(可能還包括顯示驅動電路、脈寬調制電路、模擬多路轉換器、A/D轉換器等電路)集成到一塊硅片上構成的一個小而完善的計算機系統。</p><p> 在我國,單片機已經不是一個陌生的名詞,它的出現是近代計算機技術發(fā)展史
10、上的一個重要里程碑,因為單片機的誕生標志著計算機正式形成了通用計算機系統和嵌入式計算機系統兩大分支。在單片機誕生之前,為了滿足工程對象的嵌入式應用要求,只能將通用計算機進行機械加固、電氣加固后嵌入到對象系統中構成。由于通用計算機的巨大體積和高成本,無法嵌入到大多數對象體系中。單片機則應嵌入式應用而誕生。單片機的單芯片的微小體積和極低的成本,可廣泛的嵌入到玩具、家用電器、機器人、儀器儀表、汽車電子系統、工業(yè)控制單元、辦公自動化設備、金融電
11、子系統、艦船、個人信息終端及通訊產品中,成為現代電子系統中最重要的智能化工具。</p><p> 單片機作為最典型的嵌入式系統,它的成功應用推動了嵌入式系統的發(fā)展。近年來。除了各種類型的工控機,各種以通用微處理器構成的計算機主模板快、以通用處理器為核,片內擴展一些外圍功能電路單元構成的嵌入式微處理器,甚至單片形式的PC及等,都實現了嵌入式應用,成為嵌入式系統的龐大家族。</p><p>
12、 作為典型的嵌入式系統的單片機,在我國大規(guī)模應用已有十余年歷史。在全國高等工科院校中,已普遍開設單片機及相關課程。單片機已成為電子系統中最普遍的應用手段。除了單設課程外,在涉及的許多環(huán)節(jié),如課程設計、畢業(yè)設計、研究生論文課題中,單片機系統都是最廣泛的應用手段。目前,許多單片機教材都Shiite以80C51系列為基礎來講述其原理及應用的。這是因為MCS-51系列單片機奠定了8位單片機的基礎,形成了單片機的經典體系結構。單片機是現代計算機
13、、電子技術的新興領域,無論是單片機本身還是單片機應用系統設計方案都會隨著時代不斷發(fā)生變變化。</p><p><b> 2.2C語言:</b></p><p> C語言是Combined Language(組合語言)的中英混合簡稱。是一種計算機程序設計語言。它既具有高級語言的特點,又具有匯編語言的特點。它可以作為工作系統設計語言,編寫系統應用程序,也可以作為應用程
14、序設計語言,編寫不依賴計算機硬件的應用程序。因此,它的應用范圍廣泛,不僅僅是在軟件開發(fā)上,而且各類科研都需要用到C語言,具體應用比如單片機以及嵌入式系統開發(fā)。</p><p><b> C 語言特點:</b></p><p> 是一種成功的系統描述語言,用C語言開發(fā)的UNIX操作系統就是一個成功的范例;同時C語言又是一種通用的程序設計語言,在國際上廣泛流行。世界上
15、很多著名的計算公司都成功的開發(fā)了不同版本的C語言,很多優(yōu)秀的應用程序也都使用C語言開發(fā)的,它是一種很有發(fā)展前途的高級程序設計語言。1. C是中級語言。它把高級語言的基本結構和語句與低級語言的實用性結合起來。C 語言可以像匯編語言一樣對位、字節(jié)和地址進行操作, 而這三者是計算機最基本的工作單元。2.C是結構式語言。結構式語言的顯著特點是代碼及數據的分隔化,即程序的各個部分除了必要的信息交流外彼此獨立。這種結構化方式可使程序層次清晰,便于使
16、用、維護以及調試。C 語言是以函數形式提供給用戶的,這些函數可方便的調用,并具有多種循環(huán)、條件語句控制程序流向,從而使程序完全結構化。3.C語言功能齊全。具有各種各樣的數據類型,并引入了指針概念,可使程序效率更高。另外C語言也具有強大的圖形功能,支持多種顯示器和驅動器。而且計算功能、邏輯判斷功能也比較強大,可以實現決策目的的游戲。 C語言適用范圍大。適合于多種操作系統,如Windows、DOS、UNIX等等;也適用于多</p>
17、;<p><b> 2.3雙機通信</b></p><p> 兩臺機器的通信方式可分為單工通信、半雙工通信、雙工通信,他們的通信原理及通信方式為:</p><p> 單工通信:是指消息只能單方向傳輸的工作方式。單工通信信道是單向信道,發(fā)送端和接收端的身份是固定的,發(fā)送端只能發(fā)送信息,不能接收信息;接收端只能接收信息,不能發(fā)送信息,數據信號僅從一端傳
18、送到另一端,即信息流是單方向的。通信雙方采用“按——講”(Push To Talk,PTT)單工通信屬于點到點的通信。根據收發(fā)頻率的異同,單工通信可分為同頻通信和異頻通信。</p><p> 半雙工通信:這種通信方式可以實現雙向的通信,但不能在兩個方向上同時進行,必須輪流交替地進行。也就是說,通信信道的每一段都可以是發(fā)送端,也可以是接端。但同一時刻里,信息只能有一個傳輸方向。如日常生活中的例子有步話機通信等。&
19、lt;/p><p> 雙工通信:雙工通信是指在同一時刻信息可以進行雙向傳輸,和打電話一樣,說的同時也能聽,邊說邊聽。這種發(fā)射機和接收機分別在兩個不同的頻率上(兩個頻率差有一定要求)能同時進行工作的雙工機也稱為異頻雙工機。雙工機的特點是使用方便,但線路設計較復雜,價格也較高。</p><p><b> 三.系統分析</b></p><p><
20、;b> 3.1 基本原理</b></p><p> MCS-51系列單片機上有一個通用異步接收/發(fā)送器UART,通過引腳RXD[P3.O]和TXD[P3.1]可與外音B電路進行全雙工的串行異步通信,發(fā)送數據時由TXD端送出,接收時數據由RXD端輸入。本文將具體介紹單片機串口的特點和編程方法,并且在最后給出一個實用的單片機與計算機通過串口通信的程序。1.1串行接口的基本特點</p>
21、<p> MCS-51單片機的串行端口有4種基本工作方式,通過編程設置,可以使其工作在任一方式,以滿足不同場合的需要。其中,方式0主要用于外接移位寄存器,以擴展單片機的I/O電路;工作方式1多用于雙機之間或與外設電路的通信;方式2、3除有方式1的功能外,還可以作多機通信,以構成分布式多微機系統。 </p><p> 串行端口有兩個控制寄存器SCON、PCON,用于設置工作方式、發(fā)送或接收的狀態(tài)、
22、特征位、數據傳送波特率[每秒傳送的位數]以及作為中斷標志等。</p><p> 串行端口有一個數據寄存器SBUF在特殊功能寄存器中的字節(jié)地址為99H,該寄存器為發(fā)送和接收所共用。</p><p> 串行端口的波特率可以用程序來控制。在不同工作方式中,由時鐘振蕩頻率的分頻值或由定時器T1的定時溢出時間確定,使用十分方便靈活。???串口控制寄存器</p><p>
23、 輸入:在(REN)=1時,串行口采樣RXD引腳,當采樣到1至O的跳變時,確認是串行發(fā)送來的一幀數據的開始位0,從而開始接收一幀數據。只有當8位數據接收完,并檢測到高電平停止位后,只有滿足①(R1)=0;②(SM2)=0或接收到的第9位數據為1時,停止位才進入RB8,8位數據才能進入接收寄存器,并由硬件置位中斷標志RI;否則信息丟失。所以在方式1接收時,應先用軟件清零RI和SM2標志。</p><p> 方式2
24、為固定波特率的11位UART方式。它比方式1增加了一位可程控為1或0的第9位數據。</p><p> 輸出:發(fā)送的串行數據由TXD端輸出一幀信息為11位,附加的第9位來自SCON寄存器的TB8位,用軟件置位或復位。它可作為多機通訊中地址/數據信息的標志位,也可以作為數據的奇偶校驗位。當CPU執(zhí)行一條數據寫入SUBF的指令且TI=0時,就啟動發(fā)送器發(fā)送。發(fā)送一幀信息后,置位中斷標志TI。</p>&
25、lt;p> ? 輸入:在(REN)=1時,串行口采樣RXD引腳,當采樣到1至O的跳變時,確認是串行發(fā)送來的一幀數據的開始位0,從而開始接收一幀數據。在接收到附加的第9位數據后,當滿足①(RI):0;②(SM2)=0或接收到的第9位數據為1時,第9位數據才進入RB8,8位數據才能進入接收寄存器,并由硬件置位中斷標志Ri;否則信息丟失。且不置位RI。</p><p> 方式3為波特率可變的11位UART方式
26、。除波特率外,其余與方式2相同。 波特率的選擇??? 如前所述,在串行通訊中,收發(fā)雙方的數據傳送率(波特率)要有一定的約定。在MCS-51串行口的四種工作方式中,方式0和2的波特率是固定的,而方式1和3的波特率是可變的,由定時器T1的溢出率控制。</p><p><b> 1.方式O</b></p><p> 方式0的波特率固定為主振頻率? 的1/12。</
27、p><p><b> 2.方式2</b></p><p> 方式2的波特率由PCON中的選擇位SMOD來決定,可表示為:波特率=2sMoD×fosc/64也就是當SMOD=1時,波特率為1/32×fosc,當SMOD=0時,波特率為1/64×fosc。</p><p><b> 3.方式1和方式3<
28、;/b></p><p> 定時器T1作為波特率發(fā)生器,其公式如下:</p><p> 波特率=2SMOD/32×定時器T1溢出率</p><p> T1溢出率=T1計數率/產生溢出所需的周期數 式中T1計數率取決于它工作在定時器狀態(tài)還是計數器狀態(tài)。當工作于定時器狀態(tài)時,T1計數率為Fosc/2:當工作于計數器狀態(tài)時,T1計數率為外部輸入頻率,
29、此頻率應小于Fosc/24。產生溢出所需周期與定時器T1的工作方式、T1的預置值有關。定時器T1工作于方式O:溢出所需周期數=8192-×</p><p> 定時器T1工作于方式1:溢出所需周期數=65536-X</p><p> 定時器T1工作于方式2:溢出所需周期數=256-X</p><p> 因為方式2為自動重裝入初值的8位定時器/計數器模式
30、,所以用它來做波特率發(fā)生器最恰當。這種方式下,T1的溢出率[次/秒]計算式可以表示為:</p><p> T1溢出率=Fsoc/12[256-X]</p><p><b> 3.2波特率選擇</b></p><p> 波特率(Boud Rate)就是在串口通信中每秒能夠發(fā)送的位數(bits/second)。MCS-51串行端口在四種工作模
31、式下有不同的波特率計算方法。其中,模式0和模式2波特率計算很簡單,請同學們參看教科書;模式1和模式3的波特率選擇相同,故在此僅以工作模式1為例來說明串口通信波特率的選擇。???? 在串行端口工作于模式1,其波特率將由計時/計數器1來產生,通常設置定時器工作于模式2(自動再加模式)。在此模式下波特率計算公式為:?????????波特率=(1+SMOD)*晶振頻率/(384*(256-TH1)) 其中,SMOD——寄存器PCON的第7位,稱
32、為波特率倍增 。TH1——定時器的重載值。???? 在選擇波特率的時候需要考慮兩點:首先,系統需要的通信速率。這要根據系統的運作特點,確定通信的頻率范圍。然后考慮通信時鐘誤差。使用同一晶振頻率在選擇不同的通信速率時通信時鐘誤差會有很大差別。為了通信的穩(wěn)定,我們應該盡量選擇時鐘誤差最小的頻率進行通信。??? 下面舉例說明波特率選擇過程:假設系統要求的通信頻率在20000bit/s以下,晶振頻率為12MHz,設置SMOD=1(即波特率倍增&
33、lt;/p><p> 因此,在通信中,最好選用波特率為1200,2400,4800中的一個。</p><p> 3.3通信協議的使用</p><p> 通信協議是通信設備在通信前的約定。單片機、計算機有了協議這種約定,通信雙方才能明白對方的意圖,以進行下一步動作。假定我們需要在PC機與單片機之間進行通信,在雙方程式設計過程中,有如下約定:</p>&
34、lt;p> 0xA1:單片機讀取P0端口數據,并將讀取數據返回PC機;</p><p> 0xA2:單片機從PC機接收一段控制數據;</p><p> 0xA3:單片機操作成功信息。</p><p> 在系統工作過程中,單片機接收到PC機數據信息后,便查找協議,完成相應的操作。當單片機接收到0xA1時,讀取P0端口數據,并將讀取數據返回PC機;當單片機
35、接收到0xA2時,單片機等待從PC機接收一段控制數據;當PC接收到0xA3時,就表明單片機操作已經成功。</p><p> AT89C51是一種帶4K字節(jié)閃存可編程可擦除只讀存儲器(FPEROM—Flash Programmable and Erasable Read Only Memory)的低電壓、高性能CMOS 8位微處理器,俗稱單片機。AT89C2051是一種帶2K字節(jié)閃存可編程可擦除只讀存儲器的單片機
36、。單片機的可擦除只讀存儲器可以反復擦除1000次。該器件采用ATMEL高密度非易失存儲器制造技術制造,與工業(yè)標準的MCS-51指令集和輸出管腳相兼容。由于將多功能8位CPU和閃爍存儲器組合在單個芯片中,ATMEL的AT89C51是一種高效微控制器,AT89C2051是它的一種精簡版本。AT89C單片機為很多嵌入式控制系統提供了一種靈活性高且價廉的方案。外形及引腳排列如圖所示:</p><p> 管腳說明:VCC
37、:供電電壓。GND:接地。P0口:P0口為一個8位漏級開路雙向I/O口,每腳可吸收8TTL門電流。當P0口的管腳第一次寫1時,被定義為高阻輸入。P0能夠用于外部程序數據存儲器,它可以被定義為數據/地址的第八位。在FIASH編程時,P0 口作為原碼輸入口,當FIASH進行校驗時,P0輸出原碼,此時P0外部必須被拉高。 P1口:P1口是一個內部提供上拉電阻的8位雙向I/O口,P1口緩沖器能接收輸出4TTL門電流。P1口管腳寫入1后,被內部上
38、拉為高,可用作輸入,P1口被外部下拉為低電平時,將輸出電流,這是由于內部上拉的緣故。在FLASH編程和校驗時,P1口作為第八位地址接收。P2口:P2口為一個內部上拉電阻的8位雙向I/O口,P2口緩沖器可接收,輸出4個TTL門電流,當P2口被寫“1”時,其管腳被內部上拉電阻拉高,且作為輸入。并因此作為輸入時,P2口的管腳被外部拉低,將輸出電流。這是由于內部上拉的緣故。P2口當用于外部程序存儲器或16位地址外部數據存儲器進行存取時,P2口輸
39、出地址的高八位。在給出地址“1”時,它利用內部上拉優(yōu)勢,當對外部八位地址數據存儲器進行讀寫時,P2口輸出</p><p> 4.1單片機串行通信功能</p><p> 圖4.1AT89C51</p><p> 計算機與外界的信息交換稱為通信,常用的通信方式有兩種:并行通信和串行通信。51單片機用4個接口與外界進行數據輸入與數據輸出就是并行通信,并行通信的特點是
40、傳輸信號的速度快,但所用的信號線較多,成本高,傳輸的距離較近。串行通信的特點是只用兩條信號線(一條信號線,再加一條地線作為信號回路)即可完成通信,成本低,傳輸的距離較遠。</p><p> 51單片機的串行接口是一個全雙工的接口,它可以作為UART(通用異步接受和發(fā)送器)用,也可以作為同步移位寄存器用。51單片機串行接口的結構如下:</p><p> ?。?)數據緩沖器(SBUF)<
41、;/p><p> 接受或發(fā)送的數據都要先送到SBUF緩存。有兩個,一個緩存,另一個接受,用同一直接地址99H,發(fā)送時用指令將數據送到SBUF即可啟動發(fā)送;接收時用指令將SBUF中接收到的數據取出。</p><p> ?。?)串行控制寄存器(PCON)</p><p> SCON用于串行通信方式的選擇,收發(fā)控制及狀態(tài)指示,各位含義如下:</p><
42、p> SM0,SM1:串行接口工作方式選擇位,這兩位組合成00,01,10,11對應于工作方式0、1、2、3。串行接口工作方式特點見下表</p><p> SM2:多機通信控制位。</p><p> REN:接收允許控制位。軟件置1允許接收;軟件置0禁止接收。</p><p> TB8:方式2或3時,TB8為要發(fā)送的第9位數據,根據需要由軟件置1或清0
43、。</p><p> RB9:在方式2或3時,RB8位接收到的第9位數據,實際為主機發(fā)送的第9位數據TB8,使從機根據這一位來判斷主機發(fā)送的時呼叫地址還是要傳送的數據。</p><p> TI:發(fā)送中斷標志。發(fā)送完一幀數據后由硬件自動置位,并申請中斷。必須要軟件清零后才能繼續(xù)發(fā)送。</p><p> RI:接收中斷標志。接收完一幀數據后由硬件自動置位,并申請中
44、斷。必須要軟件清零后才能繼續(xù)接收。</p><p> ?。?)輸入移位寄存器</p><p> 接收的數據先串行進入輸入移位寄存器,8位數據全移入后,再并行送入接收SBUF中。</p><p><b> ?。?)波特率發(fā)生器</b></p><p> 波特率發(fā)生器用來控制串行通信的數據傳輸速率的,51系列單片機用定時
45、器T1作為波特率發(fā)生器,T1設置在定時方式。波特率時用來表示串行通信數據傳輸快慢程度的物理量,定義為每秒鐘傳送的數據位數。</p><p> ?。?)電源控制寄存器PCON</p><p> 其最高位為SMOD。</p><p><b> (6)波特率計算</b></p><p> 當定時器T1工作在定時方式的時候
46、,定時器T1溢出率=(T1計數率)/(產生溢出所需機器周期)。由于是定時方式,T1計數率= fORC/12。產生溢出所需機器周期數=模M-計數初值X。</p><p> 4.2 MAX232芯片</p><p> 用8051串行接口通信,如果兩臺8051單片機之間的距離很近(不超過1.5m),可以采用直接將兩臺8051單片機的串行接口直接相連,利用其自身的TTL電平(0-5V)直接傳輸
47、數據信息。如果傳輸距離較遠(超過1.5m),由于傳輸線的阻抗與分布電容,會產生電平損耗和波形畸變,以至于檢測不出數據或數據出錯。此時可利用 RS232標準總線接口,將單片機輸出的TTL電平轉換為RS232標準電平(邏輯1為-15—-5V;邏輯0為+5-—+15V)。用RS232可將傳輸距離提高到15m,如果想遠距離傳輸,可以采用RS422或者RS485。</p><p> 電平轉換芯片MAX232是美信公司(M
48、AXIM)生產,專用于進行將TTL電平轉換為RS232電平的芯片,MAX232內部有泵電源,能將+5V電源電壓在芯片內提高到RS232電平所需的+10V或者-10V電平。</p><p> 圖4.2.電平轉換芯片MAX232</p><p><b> 4.3整體電路設計</b></p><p> 最終設計電路如下圖3所示,發(fā)送方的數據由串
49、行口TXD段輸出,經過電平轉換芯片MAX232將TTL電平轉換為RS232電平輸出,經過傳輸線將信號傳送到接收端。接收方也使用MAX232芯片進行電平轉換后,信號到達接收方串行口的接收端。接受方接收后,通過P1口在數碼管上顯示接收的信息。</p><p> 圖4.3.串行通信電路</p><p><b> 五、軟件設計</b></p><p&g
50、t; 通過通信協議進行發(fā)送接收,主機先送AAH給從機,當從機接收到AAH后,向主機回答B(yǎng)BH。主機收到BBH后就把數碼表TAB[16]中的10個數據送給從機,并發(fā)送檢驗和。從機收到16個數據并計算接收到數據的檢驗和,與主機發(fā)送來的檢驗和進行比較,若檢驗和相同則發(fā)送00H給主機;否則發(fā)送FFH給主機,重新接受。從機收到16個正確數據后送到一個數碼管顯示。</p><p> 5.1串行通信軟件實現</p&g
51、t;<p> ?。?)串行口工作于方式1;用定時器1產生9600bit/s的波特率,工作于方式2。</p><p> ?。?)功能:將本機ROM中數碼表TAB[16]中的16個數發(fā)送到從機,并保存在從機內部ROM中,從機收到這16個數據后送到一個數碼管循環(huán)顯示。</p><p> ?。?)通信協議:主機首先發(fā)送連絡信號(AAH),從機接收到之后返回一個連絡信號(BBH)表示從
52、機已準備好接收。</p><p> (4)通信過程使用第九位發(fā)送奇偶校驗位。</p><p> ?。?)從機接收到一個數據后,立即進行奇偶校驗,若數據沒有錯誤,則返回00H,否則返回FFH。</p><p> ?。?)主機發(fā)送一個數據后,等待從機返回數據;若為00H,則繼續(xù)發(fā)送下一個數據,若為FFH,則重新發(fā)送數據。</p><p><
53、;b> 5.2程序流程圖</b></p><p> (1)發(fā)送端程序流程圖</p><p><b> 接收方程序流程圖</b></p><p><b> 六.聯合調試</b></p><p> 在protues上進行仿真實驗。首先使用KeilC將編寫完成的程序編譯生成HE
54、X文件,將HEX文件燒錄到兩片單片機中,進行仿真實驗,結果如下圖所示,可以看到,接收端已將接受到的數據完整的顯示了出來。</p><p><b> 圖6.1.仿真圖</b></p><p><b> 總結</b></p><p> 本次設計是通過兩塊簡單的89C51單片機實現信息的串口通信。設計過程中,從雙機通信背景
55、的了解,到89C51單片機具體功能的了解,與89C51單片機的區(qū)別;從串口通信的原理的熟悉,到掌握具體串口通信在雙機之間的實現;從硬件電路設計到程序編寫;從硬件調試到軟件模擬實現等過程在自己的努力和老師的親切指導下,都是有條不紊地進行。 設計中,收獲不少東西,也遇到了不少的問題。首先,在完成單片機課程學習任務后,對內容的掌握不夠,缺乏靈活運用的能力,對于知識的擴展也存在一定的問題,因此,初面對設計課題,無法系統地進
56、行設計思路的擬定。其次,一個學期的學習,在鞏固和學習硬件知識的同時,用軟件控制協調硬件實現現實功能,通過硬件完成軟件的功能等方面的融會貫通,取得了一定的效果。再者,硬件設計過程中,I/O口的擴展,外部ROM的擴展,對于芯片的選擇,軟件編寫時,對于某些指令的功能,功能模塊的連接,芯片地址選擇等都遇到了很大的障礙,不過在老師幫助和自己查閱資料得到了解決,與此同時,了解了不少的問題。另外,設計中犯一些常識性的錯誤,對設計進程造成了一定的影響。
57、例如,程序調試時,由于粗心錄入程序時,將程序敲錯,比如</p><p> 通過本次課程設計,不僅使理論知識得到了實踐,有效鞏固了知識。同時對于單片機發(fā)展歷史、強大功能、應用領域以及系列知識得到了大概的系統認識,同時也初步了解了一個完整的系統開發(fā)的過程,對于創(chuàng)造思維的培養(yǎng)和開發(fā)能力的鍛煉,本次設計,為此提供了一個很好的平臺。</p><p> 當然,同學之間的相互討論學習,互相提高,老師
58、知識的幫助,經驗的傳授,也是本次設計的一道美麗的風景線,真正起到了拋磚引玉的目的。在此,感謝老師給我們這樣好的學習機會。</p><p><b> 附錄:</b></p><p><b> 主機發(fā)送程序</b></p><p> #include <reg51.h></p><p>
59、; #define uchar unsigned char </p><p> void init();</p><p> void send();</p><p> ucharTAB[16] ={ 0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f,0x77,0x7c,0x39,0x5e,0x79,0x71
60、};</p><p> uchar i,sum;</p><p><b> int j;</b></p><p><b> main()</b></p><p> { init();</p><p><b> send();</b></
61、p><p><b> } </b></p><p> void init(void)</p><p><b> { EA=1;</b></p><p><b> ES=1;</b></p><p> TMOD=0x20;</p>&l
62、t;p><b> TH1=0xfd;</b></p><p><b> TL1=0xfd;</b></p><p> PCON=0x00;</p><p> SCON=0x50;</p><p><b> TR1=1;</b></p><p&
63、gt;<b> } </b></p><p> void send(void)</p><p><b> {do</b></p><p> { SBUF=0xaa;</p><p> while(!TI);</p><p><b> TI=0;</
64、b></p><p> while(!RI);</p><p><b> RI=0;</b></p><p><b> }</b></p><p> while((SBUF^0xbb)!=0);</p><p><b> do</b>&l
65、t;/p><p><b> { sum=0;</b></p><p> for(i=0;i<=15;i++)</p><p> { SBUF=TAB[i];</p><p> sum+=TAB[i];</p><p> while(!TI);</p><p>&
66、lt;b> TI=0;</b></p><p><b> }</b></p><p><b> SBUF=sum;</b></p><p> while(!TI);</p><p><b> TI=0;</b></p><p>
67、; while(!RI);</p><p><b> RI=0;</b></p><p><b> }</b></p><p> while(SBUF!=0);</p><p><b> }</b></p><p><b> 從機接
68、收程序</b></p><p> #include<reg51.h></p><p> #define uchar unsigned char</p><p> #define uint unsigned int</p><p> void delay(int );</p><p>
69、void receive(void) ;</p><p> void init(void);</p><p> uchar i,sum;</p><p><b> int j;</b></p><p> ucharTAB[16] ={ 0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07
70、,0x7f,0x6f,0x77,0x7c,0x39,0x5e,0x79,0x71};</p><p> void main()</p><p><b> { init();</b></p><p> receive();</p><p><b> }</b></p><p
71、> void init(void)</p><p><b> { EA=1;</b></p><p><b> ES=1;</b></p><p> TMOD=0x20;</p><p><b> TH1=0xfd;</b></p><p&g
72、t;<b> TL1=0xfd;</b></p><p> PCON=0x00;</p><p> SCON=0x50;</p><p><b> TR1=1;</b></p><p><b> } </b></p><p> void de
73、lay(int x)</p><p> {int i,j;</p><p> for(i=0;i<x;i++)</p><p> for(j=1;j<=150;j++ );</p><p><b> }</b></p><p> void receive(void)<
74、/p><p> { uchar TABS[16];</p><p><b> do</b></p><p> { while(!RI);RI=0; }</p><p> while((SBUF^0xaa)!=0);</p><p> SBUF=0xbb;</p><p&
75、gt; while(!TI);TI=0;</p><p><b> while(1)</b></p><p><b> { sum=0;</b></p><p> for(i=0;i<=15;i++)</p><p> { while(!RI);RI=0;</p>&l
76、t;p> TABS[i]=SBUF;</p><p> sum+=TABS[i];</p><p><b> }</b></p><p> while(!RI);RI=0;</p><p> if((SBUF^sum)==0)</p><p> { SBUF=0x00;</
77、p><p> while(!TI);</p><p><b> TI=0;</b></p><p><b> break;</b></p><p><b> }</b></p><p><b> else</b></p&
78、gt;<p> { SBUF=0xff;</p><p> while(!TI);</p><p><b> TI=0;</b></p><p><b> }</b></p><p><b> }</b></p><p><
79、b> while(1)</b></p><p> { for(i=0;i<=15;i++)</p><p> { P1=TABS[i];</p><p> delay(500);</p><p><b> }</b></p><p><b> }<
80、;/b></p><p><b> }</b></p><p><b> 參考文獻</b></p><p> [1] 胡偉. 單片機C程序設計及應用實例. 北京:人民郵電出版社,2003</p><p> [2] 韓毅剛.計算機通信技術. 北京市:北京航空航天大學出版社,2007<
81、;/p><p> [3] 李朝青. 單片機與PC機網絡通信技術.北京:北京航空航天大學出版社,2007 </p><p> [4] 郭惠 吳訊著 單片機C語言程序設計.北京:電子工業(yè)出版社,2008 [5] 陳濤著 單片機應用及C51程序設計.北京:機械工業(yè)出版社,2011</p><p> [6] 孫近平 張大鵬著 51系列單片機原理、開發(fā)與應用實例.北
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯系上傳者。文件的所有權益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經權益所有人同意不得將文件中的內容挪作商業(yè)或盈利用途。
- 5. 眾賞文庫僅提供信息存儲空間,僅對用戶上傳內容的表現方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
- 6. 下載文件中如有侵權或不適當內容,請與我們聯系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 單片機單片機課程設計-雙機串行通信e
- 單片機課程設計---雙機之間的串行通信設計
- 單片機課程設計--單片機串行通訊
- 單片機課程設計報告--雙機串行通訊
- 課程設計--單片機雙機通信系統
- 單片機雙機通信系統-課程設計
- 雙機通信系統單片機課程設計
- 單片機雙機通信課程設計報告
- 單片機串口通信課程設計-- pc和單片機的串行雙工通信
- 單片機的雙機串口通信-課程設計
- pc機與單片機串行通信課程設計
- 單片機課程設計--基于單片機的串行通信發(fā)射機設計
- 單片機雙機通信設計
- 單片機課程設計-雙機通信的設計與制作
- 雙單片機串行通信
- 單片機串行通信_485
- 單片機多機通信課程設計
- 單片機多機通信課程設計
- 單片機課程設計--利用rs-232實現單片機與pc間的串行通信
- 單片機秒表單片機課程設計
評論
0/150
提交評論