2023年全國(guó)碩士研究生考試考研英語(yǔ)一試題真題(含答案詳解+作文范文)_第1頁(yè)
已閱讀1頁(yè),還剩21頁(yè)未讀 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)

文檔簡(jiǎn)介

1、<p><b>  摘 要</b></p><p>  隨著電子技術(shù)的發(fā)展和微處理器技術(shù)的應(yīng)用,帶有單片機(jī)的智能型測(cè)控系統(tǒng)的應(yīng)用越來(lái)越廣泛,多個(gè)單片機(jī)系統(tǒng)之間數(shù)據(jù)傳輸已經(jīng)應(yīng)用于工業(yè)、科研、農(nóng)業(yè)等領(lǐng)域,而單片機(jī)之間的數(shù)據(jù)通信最常用的就是串口通信方式,串口通信可以在使用一根線發(fā)送數(shù)據(jù)的同時(shí)利用另一根線接收數(shù)據(jù),使用簡(jiǎn)單且能實(shí)現(xiàn)遠(yuǎn)距離通信。</p><p>

2、  本文介紹了一種單片機(jī)多機(jī)通信的設(shè)計(jì)方法,主機(jī)與從機(jī)之間通過串口實(shí)現(xiàn)通信,主機(jī)通過按鍵來(lái)選擇要進(jìn)行通信的從機(jī),然后通過數(shù)字矩陣鍵盤控制從機(jī)的數(shù)碼管顯示數(shù)字0-9,同時(shí)該從機(jī)返回自己的地址,實(shí)現(xiàn)全雙工通信。</p><p>  本文介紹的方法簡(jiǎn)單易懂,通過仿真基本上實(shí)現(xiàn)了上述功能,操作簡(jiǎn)單,性能穩(wěn)定,可廣泛應(yīng)用于各種多機(jī)通信系統(tǒng)中。</p><p>  關(guān)鍵詞:?jiǎn)纹瑱C(jī);串口通信;C語(yǔ)言;矩

3、陣鍵盤</p><p><b>  目 錄</b></p><p><b>  1設(shè)計(jì)任務(wù)1</b></p><p><b>  2設(shè)計(jì)方案1</b></p><p><b>  2.1設(shè)計(jì)任務(wù)1</b></p><p> 

4、 2.2串行通信簡(jiǎn)介2</p><p>  3.系統(tǒng)硬件設(shè)計(jì)2</p><p><b>  3.1接口設(shè)計(jì)2</b></p><p>  3..2主機(jī)電路模塊設(shè)計(jì)3</p><p>  3.3從機(jī)電路模塊5</p><p>  3.4矩陣鍵盤電路6</p><p&g

5、t;<b>  4系統(tǒng)軟件設(shè)計(jì)6</b></p><p>  4.1軟件設(shè)計(jì)應(yīng)用環(huán)境6</p><p>  4.2軟件設(shè)計(jì)流程7</p><p>  4.3按鍵程序設(shè)計(jì)8</p><p><b>  4.4串口通信8</b></p><p>  4.5從機(jī)數(shù)碼管顯示

6、程序設(shè)計(jì)10</p><p>  5仿真與性能分析10</p><p>  5.1系統(tǒng)仿真過程10</p><p>  5.2仿真結(jié)果10</p><p><b>  6心得體會(huì)11</b></p><p><b>  參考文獻(xiàn)12</b></p>

7、<p>  附錄1系統(tǒng)原理圖12</p><p>  附錄2程序清單13</p><p><b>  1設(shè)計(jì)任務(wù)</b></p><p>  多機(jī)串行通信的設(shè)計(jì)基本任務(wù)</p><p>  1. 設(shè)計(jì)三個(gè)單片機(jī)實(shí)現(xiàn)主從式串行通信的系統(tǒng),主機(jī)發(fā)送數(shù)據(jù)到從機(jī),并在LED數(shù)碼管上顯示。</p>&l

8、t;p>  2. 可通過接在主機(jī)上的鍵盤輸入數(shù)據(jù),通過主機(jī)發(fā)送到從機(jī)。 </p><p><b>  選做</b></p><p>  3. 通信協(xié)議遵從modbus。</p><p>  4.其他功能(創(chuàng)新部分)</p><p><b>  仿真模塊例</b></p>&

9、lt;p><b>  2設(shè)計(jì)方案</b></p><p><b>  2.1設(shè)計(jì)任務(wù)</b></p><p>  本文在研究傳統(tǒng)的多機(jī)通信系統(tǒng)的基礎(chǔ)上,設(shè)計(jì)了一種基于MCS-51系列單片機(jī)AT89C51的多機(jī)通信系統(tǒng)。打開proteus仿真電路圖,按下軟件下方的“開始”圖標(biāo),啟動(dòng)系統(tǒng),按下“1號(hào)機(jī)”按鍵,主機(jī)與從機(jī)1接通,通過主機(jī)外接的4*

10、4矩陣鍵盤控制從機(jī)1的數(shù)碼管,按下標(biāo)號(hào)為0-9的按鍵時(shí),對(duì)應(yīng)從機(jī)1的數(shù)碼管顯示0-9,按下“2號(hào)機(jī)”按鍵,主機(jī)與從機(jī)2接通,通過主機(jī)外接的4*4矩陣鍵盤控制從機(jī)2的數(shù)碼管,按下標(biāo)號(hào)為0-9的按鍵時(shí),對(duì)應(yīng)從機(jī)2的數(shù)碼管顯示0-9。</p><p><b>  系統(tǒng)分析</b></p><p><b>  2.2串行通信簡(jiǎn)介</b></p>

11、;<p>  串行通信可以分為同步通信和異步通信兩類。</p><p>  同步通信是一種連續(xù)串行傳送數(shù)據(jù)的通信方式,一次通信只傳送一幀信息。這里的信息幀與異步通信中的字符幀不同,通常含有若干個(gè)數(shù)據(jù)字符。它們均由同步字符、數(shù)據(jù)字符和校驗(yàn)字符(CRC)組成。其中同步字符位于幀開頭,用于確認(rèn)數(shù)據(jù)字符的開始。數(shù)據(jù)字符在同步字符之后,個(gè)數(shù)沒有限制,由所需傳輸?shù)臄?shù)據(jù)塊長(zhǎng)度來(lái)決定;校驗(yàn)字符有1到2個(gè),用于接收端

12、對(duì)接收到的字符序列進(jìn)行正確性的校驗(yàn)。同步通信的缺點(diǎn)是要求發(fā)送時(shí)鐘和接收時(shí)鐘保持嚴(yán)格的同步。</p><p>  異步通信中,在異步通行中有兩個(gè)比較重要的指標(biāo):字符幀格式和波特率。數(shù)據(jù)通常以字符或者字節(jié)為單位組成字符幀傳送。字符幀由發(fā)送端逐幀發(fā)送,通過傳輸線被接收設(shè)備逐幀接收。發(fā)送端和接收端可以由各自的時(shí)鐘來(lái)控制數(shù)據(jù)的發(fā)送和接收,這兩個(gè)時(shí)鐘源彼此獨(dú)立,互不同步。接收端檢測(cè)到傳輸線上發(fā)送過來(lái)的低電平邏輯"0

13、"(即字符幀起始位)時(shí),確定發(fā)送端已開始發(fā)送數(shù)據(jù),每當(dāng)接收端收到字符幀中的停止位時(shí),就知道一幀字符已經(jīng)發(fā)送完畢。</p><p>  串口通信最重要的參數(shù)是波特率、起始位、數(shù)據(jù)位、停止位和奇偶校驗(yàn)。</p><p>  波特率:是一個(gè)衡量通信速度的參數(shù),表示每秒鐘傳送的bit的個(gè)數(shù)。</p><p>  起始位:當(dāng)通信線上沒有數(shù)據(jù)被傳送時(shí)處于邏輯“1”狀態(tài)

14、,當(dāng)發(fā)送設(shè)備要發(fā)送一個(gè)數(shù)據(jù)時(shí),先發(fā)送一個(gè)邏輯“0”信號(hào),這個(gè)低電平就是起始位,起始位通過通信線傳向接收設(shè)備,接收端檢測(cè)到這個(gè)低電平后,就確認(rèn)開始接收數(shù)據(jù)了。起始位的作用是使通信雙方在傳送數(shù)據(jù)前協(xié)調(diào)同步。</p><p>  數(shù)據(jù)位:是衡量通信中實(shí)際數(shù)據(jù)位的參數(shù),當(dāng)計(jì)算機(jī)發(fā)送一個(gè)信息包,實(shí)際的數(shù)據(jù)不會(huì)是8位的,標(biāo)準(zhǔn)的值是5、7或8位,如何設(shè)置取決于要傳送的信息。每個(gè)包是指一個(gè)字節(jié),包括開始/停止位、數(shù)據(jù)位和奇偶校驗(yàn)

15、位,由于實(shí)際數(shù)據(jù)位取決于通信協(xié)議的選取,術(shù)語(yǔ)“包”指任何通信的情況。</p><p>  停止位:用于表示單個(gè)包的最后一位。典型的值為1、1.5和2位,它是一個(gè)數(shù)據(jù)的結(jié)束標(biāo)志,接收端接收到停止位后,通信線路上會(huì)回復(fù)邏輯“1”的狀態(tài),知道下一個(gè)起始位的到來(lái)。</p><p>  奇偶校驗(yàn)位:在串行通信中一種簡(jiǎn)單的檢錯(cuò)方式,有四種方式:偶、奇、高和低。對(duì)于偶和檢驗(yàn)的情況,串口會(huì)設(shè)置檢驗(yàn)位,用一

16、個(gè)值確保傳輸?shù)臄?shù)據(jù)有偶個(gè)或者奇?zhèn)€邏輯高位。高位和低位不真正的檢查數(shù)據(jù),簡(jiǎn)單置位邏輯高或者邏輯低校驗(yàn),這樣使得接收設(shè)備能夠知道一個(gè)位的狀態(tài),有機(jī)會(huì)判斷是否有噪聲干擾了通信或者是否傳輸和接收數(shù)據(jù)是否不同步。</p><p><b>  3.系統(tǒng)硬件設(shè)計(jì)</b></p><p><b>  3.1接口設(shè)計(jì)</b></p><p>

17、;  MCS-51單片機(jī)具有多機(jī)通信功能,利用它可以構(gòu)成分布式系統(tǒng),電路結(jié)構(gòu)如圖3.1所示</p><p><b>  圖3.1電路結(jié)構(gòu)</b></p><p>  本設(shè)計(jì)單片機(jī)之間通過串口進(jìn)行通信,主機(jī)通過按鍵來(lái)選擇要進(jìn)行通信的從機(jī),進(jìn)而通過按鍵控制從機(jī)的數(shù)碼管顯示數(shù)字。 數(shù)碼管與單片機(jī)的連接方式采用并行連接方式。系統(tǒng)設(shè)計(jì)框圖如圖3.2所示:</p>

18、<p>  圖3.2系統(tǒng)設(shè)計(jì)框圖</p><p>  3..2主機(jī)電路模塊設(shè)計(jì)</p><p>  3.2.1 單片機(jī)簡(jiǎn)介</p><p>  AT89C51單片機(jī)內(nèi)部主要由9個(gè)部件組成:1個(gè)8位中央處理器;4KBFlash存儲(chǔ)器;128B的數(shù)據(jù)存儲(chǔ)器;32條I/O口線;2個(gè)定時(shí)器/計(jì)數(shù)器;1個(gè)具有6個(gè)中斷源、4個(gè)優(yōu)先級(jí)的中斷嵌套結(jié)構(gòu);用于多處理機(jī)通信、I

19、/O擴(kuò)展或全雙工UART的串行口;特殊功能寄存器;1個(gè)片內(nèi)振蕩器和時(shí)鐘電路。AT89S51系列單片機(jī)完全繼承了MCS-51的指令系統(tǒng),共有111條指令,按其功能可分為五大類:數(shù)據(jù)傳送類指令、算術(shù)運(yùn)算類指令、邏輯運(yùn)算類指令、控制轉(zhuǎn)移類指令、布爾操作。AT89C51單片機(jī)引腳如圖3.3所示。</p><p>  圖3.3AT89C51單片機(jī)引腳圖</p><p><b>  管腳說(shuō)明

20、:</b></p><p>  P0口:8位、漏極開路的雙向I/O口。P0能夠用于外部程序數(shù)據(jù)存儲(chǔ)器。它可以被定義為數(shù)據(jù)/地址的第八位。P0口在應(yīng)用時(shí)必須外接上拉電阻,作為輸入時(shí),首先應(yīng)將引腳置1。</p><p>  P1口:8位雙向I/O口,內(nèi)部含上拉電阻。作為輸入時(shí),應(yīng)先將引腳置高;若負(fù)載為低電平,則通過內(nèi)部上拉電阻向外輸出電流。</p><p>

21、  P2口:8位雙向I/O口,內(nèi)部含上拉電阻。作為輸入時(shí),應(yīng)先將引腳置高;若負(fù)載為低電平,則通過內(nèi)部上拉電阻向外輸出電流。</p><p>  P3口:8位雙向I/O口,內(nèi)部含上拉電阻。作為輸入時(shí),應(yīng)先將引腳置高;若負(fù)載為低電平,則通過內(nèi)部上拉電阻向外輸出電流。P3口除了通用I/O口功能外,還有第二功能。P3口的第二功能定義如表3.4所示。</p><p>  表3.4 P3口第二功能定義

22、</p><p>  RST:復(fù)位輸入,低電平有效。</p><p>  ALE/PROG:地址鎖存允許信號(hào)輸出。在正常操作狀態(tài)下,該引腳端口輸出恒定頻率的脈沖。其頻率為晶振頻率的1/6,可用作外部定時(shí)或其他觸發(fā)信號(hào)。如果需要,可通過SFR的第0位置禁止ALE操作,但ALE的禁止位不影響對(duì)外部存儲(chǔ)器的訪問。</p><p> ?。浩獬绦虼鎯?chǔ)器選通信號(hào),低電平有效。

23、當(dāng)AT89S51執(zhí)行來(lái)自外部程序存儲(chǔ)器的指令代碼時(shí),PSEN/每個(gè)機(jī)器周期兩次有效。在訪問外部數(shù)據(jù)存儲(chǔ)器時(shí),PSEN/無(wú)效。</p><p> ?。浩獬绦虼鎯?chǔ)器訪問允許信號(hào),低電平有效。</p><p>  XTAL1:外接晶振。在單片機(jī)內(nèi)部是反相放大器的輸入及端。</p><p>  XTAL2:外接晶振。在單片機(jī)內(nèi)部是反相放大器的輸出端,輸入到內(nèi)部時(shí)鐘發(fā)生器。

24、</p><p>  3.2.2 主機(jī)控制電路</p><p>  該部分電路設(shè)計(jì)如圖3.5所示。單片機(jī)的時(shí)鐘的頻率直接影響著單片機(jī)的速度和系統(tǒng)的穩(wěn)定性。AT89S51片內(nèi)由一個(gè)反相放大器構(gòu)成振蕩器,可以通過XTAL1和XTAL2產(chǎn)生時(shí)鐘。常用的單片機(jī)產(chǎn)生時(shí)鐘的方法有兩種:內(nèi)部時(shí)鐘方式和外部時(shí)鐘方式。本設(shè)計(jì)選用外部時(shí)鐘方式,單片機(jī)內(nèi)部XTAL1引腳為高增益反向放大器的輸入端,XTAL2為輸

25、出端,在這2個(gè)引腳之間接石英晶振和電容,就可以構(gòu)成一個(gè)穩(wěn)定的自激振蕩器。本設(shè)計(jì)選用的11.05926MHz的晶振。</p><p>  復(fù)位是單片機(jī)的初始化操作,復(fù)位信號(hào)是高電平有效,復(fù)位操作有上電自動(dòng)復(fù)位、按鍵電平復(fù)位、外部脈沖復(fù)位和自動(dòng)復(fù)位四種方式。在本設(shè)計(jì)中復(fù)位電路采用按鍵電平方式,使RST引腳經(jīng)過10u電解電容與VCC電源接通,同時(shí)經(jīng)過電阻與地連接而實(shí)現(xiàn),按下按鍵時(shí),RST引腳置高,實(shí)現(xiàn)復(fù)位功能。<

26、/p><p>  單片機(jī)的P1口控制矩陣鍵盤電路,P0口控制數(shù)碼管段碼,P3.4 P3.5分別控制兩個(gè)數(shù)碼管的位選。</p><p>  圖3.5主機(jī)控制電路</p><p><b>  3.3從機(jī)電路模塊</b></p><p>  本設(shè)計(jì)共設(shè)置2路從機(jī),2路從機(jī)的電路設(shè)計(jì)和實(shí)現(xiàn)的功能是一樣的,所以這里只介紹其中一路從機(jī)的

27、電路設(shè)計(jì)。</p><p>  從機(jī)電路如圖3.6所示。P0口控制數(shù)碼管顯示。半導(dǎo)體數(shù)碼管的每個(gè)線段都是一個(gè)發(fā)光二極管(Light Emitting Diode,簡(jiǎn)稱LED),因而也把它叫做LED數(shù)碼管或LED七段顯示器。半導(dǎo)體數(shù)碼管不僅具有工作電壓低、體積小、壽命長(zhǎng)、可靠性高等優(yōu)點(diǎn),而且響應(yīng)時(shí)間短(一般不超過0.1us),亮度也比較高。LED數(shù)碼管由八只發(fā)光二極管組成,編號(hào)是a、b、c、d、e、f、g、h,分別

28、和同名管腳相連,當(dāng)發(fā)光二極管導(dǎo)通時(shí)發(fā)光。每個(gè)二極管就是一個(gè)筆劃,若干個(gè)二極管發(fā)光時(shí),就構(gòu)成一個(gè)顯示字符。若將單片機(jī)的I/O口與數(shù)碼管的a-g和h相連,高電平(對(duì)應(yīng)共陰極數(shù)碼管)或低電平(對(duì)應(yīng)共陽(yáng)極數(shù)碼管)的位對(duì)應(yīng)的發(fā)光二極管就會(huì)亮,這樣,I/O口輸出不同的代碼就可以控制數(shù)碼管顯示不同的字符。由于本設(shè)計(jì)只用了一個(gè)數(shù)碼管顯示數(shù)字0-9,所以直接將數(shù)碼管的8個(gè)段碼引腳連接至單片機(jī)的引腳上,利用單片機(jī)的引腳輸出要顯示的數(shù)字的代碼,P2.0 P2

29、.1控制數(shù)碼段位選。</p><p><b>  圖3.6從機(jī)電路</b></p><p><b>  3.4矩陣鍵盤電路</b></p><p>  矩陣鍵盤電路如圖3.7所示。單片機(jī)的P1口控制矩陣鍵盤。本設(shè)計(jì)采用4*4矩陣鍵盤。矩陣鍵盤的行線接P1.0-P1.3引腳,列線接P1.4-P1.7引腳。將P1.0-P1.3

30、引腳置為高電平,P1.4-P1.7引腳依次置為低電平,當(dāng)按鍵沒有按下時(shí),P1.0-P1.3口各引腳狀態(tài)不變,一旦有按鍵按下,則P1.0-P1.3就會(huì)有引腳變?yōu)榈碗娖?,這樣,通過讀入P1.0-P1.3的狀態(tài)就可得知是哪一個(gè)按鍵按下了,然后單片機(jī)根據(jù)該按鍵代表的功能執(zhí)行相應(yīng)的程序。</p><p>  圖3.7矩陣鍵盤電路</p><p><b>  4系統(tǒng)軟件設(shè)計(jì)</b>

31、;</p><p>  4.1軟件設(shè)計(jì)應(yīng)用環(huán)境</p><p>  本設(shè)計(jì)軟件的設(shè)計(jì)是在Keil C51的環(huán)境下編譯的。Keil C51是美國(guó)Keil Software公司出品的51系列兼容單片機(jī)C語(yǔ)言軟件開發(fā)系統(tǒng),軟件提供豐富的庫(kù)函數(shù)和功能強(qiáng)大的集成開發(fā)調(diào)試工具,全Windows界面。Keil C51標(biāo)準(zhǔn)C編譯器為8051微控制器的軟件開發(fā)提供了C語(yǔ)言環(huán)境,同時(shí)保留了匯編代碼高效、快速的

32、特點(diǎn)。C51編譯器的功能不斷增強(qiáng),使你可以更加貼近CPU本身,及其它的衍生產(chǎn)品。C51已被完全繼承到μVsion2的集成開發(fā)環(huán)境中,這個(gè)集成開發(fā)環(huán)境包含:編譯器、匯編器、實(shí)時(shí)操作系統(tǒng)、項(xiàng)目管理器、調(diào)試器。μVsion2 IDE可為它們提供單一而靈活的開發(fā)環(huán)境。C51 V7版本是目前最高效、靈活的8051開發(fā)平臺(tái)。它可以支持所有8051的衍生產(chǎn)品,也可以支持所有兼容的仿真器,同時(shí)支持其它第三方開發(fā)工具。因此,C51 V7版本無(wú)疑是8051

33、開發(fā)用戶的最佳選擇。Keil C51編譯器在遵循ANSI標(biāo)準(zhǔn)的同時(shí),為8051微控制器系列特別設(shè)計(jì),語(yǔ)言上的擴(kuò)展能讓用戶使用應(yīng)用中的所有資源。</p><p> ?。?)存儲(chǔ)器和特殊功能寄存器的存取。C51編譯器可以實(shí)現(xiàn)對(duì)8051系列所有資源的操作。SFR的存取由sfr和sbit兩個(gè)關(guān)鍵字來(lái)提供。變量可旋轉(zhuǎn)到任一個(gè)地址空間。用關(guān)鍵字-at-還能把變量放入固定的存儲(chǔ)器。存儲(chǔ)模式?jīng)Q定了變量的存儲(chǔ)類型。</p&g

34、t;<p>  連接定位器支持的代碼區(qū)可達(dá)32個(gè),這就允許用戶在原有64K ROM的8051基礎(chǔ)上擴(kuò)展程序。在V2的編譯器和許多高性能仿真器中,可以支持應(yīng)用程序的調(diào)試。</p><p> ?。?)中斷功能。C51允許用戶使用C語(yǔ)言編寫中斷服務(wù)程序,快速進(jìn)、出代碼和寄存器區(qū)的轉(zhuǎn)換功能使C語(yǔ)言中斷功能更加高效??稍偃牍δ苁怯藐P(guān)鍵字來(lái)定義呃。多任務(wù)、中斷或非中斷的代碼要求必須具備可再入功能。</p&

35、gt;<p>  (3)靈活的指針。C51提供了靈活高效的指針。通用指針用3個(gè)字節(jié)來(lái)存儲(chǔ)存儲(chǔ)器類型及目標(biāo)地址,可以在8051的任意存儲(chǔ)區(qū)內(nèi)存取任何變量。特殊指針在聲明的同時(shí)已制定了存儲(chǔ)器類型,指向某一特定的存儲(chǔ)區(qū)域。由于地址的存儲(chǔ)只需1-2字節(jié),因此,指針存取非常迅速。</p><p><b>  4.2軟件設(shè)計(jì)流程</b></p><p>  系統(tǒng)軟件

36、分為兩個(gè)部分,主機(jī)軟件設(shè)計(jì)和從機(jī)軟件設(shè)計(jì)。主機(jī)軟件設(shè)計(jì)流程圖如圖4.1所示。</p><p>  圖4.1 主機(jī)軟件設(shè)計(jì)流程圖</p><p>  從機(jī)軟件設(shè)計(jì)流程圖如圖4-2所示。</p><p>  圖4.2 從機(jī)軟件設(shè)計(jì)流程圖</p><p><b>  4.3按鍵程序設(shè)計(jì)</b></p><p

37、>  單片機(jī)讀取按鍵值的方法有兩種:查詢方式和中斷方式。查詢方式是利用鍵盤程序不斷查詢是否有按鍵按下,有按下則進(jìn)入相應(yīng)按鍵的子程序進(jìn)行數(shù)據(jù)處理,沒有則一直循環(huán)查詢;中斷方式是將按鍵動(dòng)作與單片機(jī)的中斷系統(tǒng)聯(lián)系起來(lái),有按鍵按下時(shí),就引起單片機(jī)中斷,使系統(tǒng)進(jìn)入中斷處理程序。本設(shè)計(jì)采用查詢方式來(lái)處理讀取按鍵值程序。程序如附錄。</p><p><b>  4.4串口通信</b></p&g

38、t;<p>  AT89S51的串行口是一個(gè)全雙工的異步串行通信口,可以同時(shí)進(jìn)行接收數(shù)據(jù)和發(fā)送數(shù)據(jù),因?yàn)榭趦?nèi)的接受緩沖器和發(fā)送緩沖器在物理上是隔離的,即是完全獨(dú)立的??梢酝ㄟ^訪問特殊功能寄存器SBUF,來(lái)訪問接收緩沖器和發(fā)送緩沖器。接收緩沖器還具有雙緩沖的功能,即它在接收第一個(gè)數(shù)據(jù)字節(jié)后,能接受第二個(gè)數(shù)據(jù)字節(jié),但是,在它完成接收第二個(gè)數(shù)據(jù)字節(jié)之后,若第一個(gè)字節(jié)仍未取走,那么該字節(jié)數(shù)據(jù)將丟失。對(duì)串行口的控制主要包括對(duì)狀態(tài)控制

39、寄存器SCON、控制寄存器PCON、和串行數(shù)據(jù)寄存器SBUF的設(shè)置。</p><p>  1、狀態(tài)控制寄存器SCON:SCON是一個(gè)逐位定義的8位寄存器,由它控制串行通信的方式選擇、接收和發(fā)送,指示串行口的狀態(tài)。寄存器SCON既可字節(jié)尋址也可位尋址,字節(jié)地址為98H,位地址為98H-9FH。其格式如下表4-1所示:</p><p>  表4.3 SCON地址格式</p>&

40、lt;p>  SM0,SM1:串行口工作方式選擇位;</p><p>  SM2:允許方式2、3中的多處理機(jī)通信位;</p><p>  REN:允許串行接收位,置位時(shí),允許串行接收,清除時(shí),禁止串行接收,可用軟件置位/清除;</p><p>  TB8:方式2和方式3中要發(fā)送的第9位數(shù)據(jù),可用軟件置位/清除;</p><p>  RB

41、8:方式3和方式3中接收的第9位數(shù)據(jù)。方式1中接收的是停止位,方式0中不使用這一位。</p><p>  TI:發(fā)送中斷標(biāo)志位,硬件置位,軟件清除。方式0中,在發(fā)送第8位末尾置位,在其他方式時(shí),在發(fā)送停止位開始時(shí)設(shè)置;</p><p>  RI:接收中斷標(biāo)志位。硬件置位,軟件清除。方式0中,在接收第8位末尾置位,在其他方式時(shí),在接收停止位中間設(shè)置。</p><p>

42、  2、控制寄存器PCON:PCON是一個(gè)逐位定義的8位寄存器,目前僅有幾位有定義,其中僅最高位SMOD與串行口控制有關(guān),其他位與掉電方式有關(guān),其格式如表4-2所示。</p><p>  表4.4 PCON地址格式</p><p>  SMOD:串行通信波特率系數(shù)控制位,當(dāng)SMOD=1時(shí),使波特率加倍。寄存器PCON的地址為87H,只能字節(jié)尋址。</p><p>

43、  3、串行數(shù)據(jù)寄存器SBUF:SBUF包含在物理上隔離的兩個(gè)8位寄存器:發(fā)送數(shù)據(jù)寄存器和接受數(shù)據(jù)寄存器,但是它們共用一個(gè)地址99H,其格式如下表4-3所示。</p><p>  表4.5 數(shù)據(jù)寄存器格式</p><p>  串行口控制寄存器SCON中的SM2為方式2或方式3的多機(jī)通信控制位,當(dāng)串行口以方式2或方式3工作時(shí),若SM2程控位為1,此時(shí)只有當(dāng)串行口就收到的第9位數(shù)據(jù)RB8=1時(shí)

44、,才置1中斷標(biāo)志RI,若接收到的RB8=0,則不產(chǎn)生中斷標(biāo)志,應(yīng)用MCS-51串行口的這個(gè)標(biāo)志,便可實(shí)現(xiàn)多機(jī)通信。</p><p>  在一個(gè)多機(jī)系統(tǒng)中有一個(gè)主機(jī)和二個(gè)從機(jī)組成的多機(jī)系統(tǒng),從機(jī)的地址分別為00H,01H,從機(jī)系統(tǒng)由初始化程序?qū)⒋锌诰幊虨榉绞?或方式3接收,即9位異步通信方式,且置“1”SM2和REN,允許串行口中斷。在主機(jī)和某一個(gè)從機(jī)通信之前,先將從機(jī)地址發(fā)送給各個(gè)從機(jī)系統(tǒng)。接著才傳送數(shù)據(jù)或命令

45、,主機(jī)發(fā)出的地址信息的第9位為1,數(shù)據(jù)(包括命令)信息的第9位為0,當(dāng)主機(jī)向各從機(jī)發(fā)送地址時(shí),各從機(jī)的串行口接收到的第9位的信息RB8為1,置“1”RI中斷標(biāo)志位,各從機(jī)80C51響應(yīng)中斷,執(zhí)行中斷服務(wù)程序。在中斷服務(wù)程序中,判斷主機(jī)送來(lái)的地址是否和本機(jī)地址相符合,若為本機(jī)的地址,則清“0”SM2位,準(zhǔn)備接收主機(jī)的數(shù)據(jù)或命令;若地址不相符,則保持SM2=1狀態(tài)。接著主機(jī)發(fā)送數(shù)據(jù),此時(shí)各個(gè)從機(jī)串行口接收到的RB8=0;只有與前面地址相符合

46、的從機(jī)系統(tǒng)(即已清“0”SM2位的從機(jī))才能激活中斷標(biāo)志位RI,從而進(jìn)入中斷服務(wù)程序,在中斷服務(wù)程序中接收主機(jī)的數(shù)據(jù)或執(zhí)行主機(jī)的命令,實(shí)現(xiàn)和主機(jī)的信息傳送;其他的從機(jī)因SM2保持為1,又RB8=0不激活中斷標(biāo)志RI,所接收的數(shù)據(jù)丟失不作處理,從而保證了主機(jī)和從機(jī)間通信的正確性。</p><p>  本次設(shè)計(jì)多機(jī)系統(tǒng)為主從式,由主機(jī)控制多機(jī)之間的通信,從機(jī)和從機(jī)之間的通信只能經(jīng)主機(jī)才能實(shí)現(xiàn)。串口發(fā)送數(shù)據(jù)程序如程序如

47、附錄。</p><p>  4.5從機(jī)數(shù)碼管顯示程序設(shè)計(jì)</p><p>  根據(jù)數(shù)碼管的驅(qū)動(dòng)方式不同,數(shù)碼管送顯方式有兩種:靜態(tài)送顯和動(dòng)態(tài)送顯。靜態(tài)顯示驅(qū)動(dòng):靜態(tài)驅(qū)動(dòng)也稱直流驅(qū)動(dòng),在靜態(tài)顯示驅(qū)動(dòng)方式下,數(shù)碼管的共陰極或共陽(yáng)極共同接地或接電源,每個(gè)數(shù)碼管的段選線與8位的單片機(jī)并口連接。靜態(tài)顯示驅(qū)動(dòng)方式占用的單片機(jī)I/O端口比較多,一般在實(shí)用中不采用。</p><p>

48、;  動(dòng)態(tài)顯示驅(qū)動(dòng):數(shù)碼管動(dòng)態(tài)顯示方式是將所有的段選線并聯(lián)在一起,由一個(gè)8位I/O口來(lái)控制,再利用單片機(jī)的其他I/O口來(lái)作為數(shù)碼管的位選線。當(dāng)單片機(jī)輸出顯示數(shù)字的譯碼時(shí),哪個(gè)數(shù)碼管顯示由單片機(jī)對(duì)位選通電路的控制來(lái)選擇,所以將欲顯示的數(shù)碼管的位選通端選通,該數(shù)碼管就會(huì)顯示,其它數(shù)碼管均不會(huì)亮。通過輪流控制各個(gè)數(shù)碼管的選通端使數(shù)碼管輪流顯示。在顯示過程中,每個(gè)數(shù)碼管的顯示時(shí)間為1-2ms,由于人們的視覺暫留現(xiàn)象及發(fā)光二極管的余暉效應(yīng),只要掃

49、描的速度夠快,給人的印象就是同時(shí)點(diǎn)亮的,而且不會(huì)有閃爍感。</p><p>  本設(shè)計(jì)中需要2位數(shù)碼管顯示,采用動(dòng)態(tài)顯示方式。程序如附錄。</p><p><b>  5仿真與性能分析</b></p><p><b>  5.1系統(tǒng)仿真過程</b></p><p>  首先根據(jù)電路原理圖利用Prot

50、ues軟件畫出仿真圖。打開proteus軟件,將所需要用到的元器件添加到左側(cè)的元器件列表DEVICE中。單擊按鈕“P”,即可彈出元器件庫(kù)對(duì)話框,可以從中選擇元器件。輸入元器件名稱,可以選擇所用元器件,選中后,單擊“OK”即可。選完元器件后,在元器件列表里回顯示出來(lái)。按照電路原理圖將仿真圖畫好,如圖5.1所示。</p><p><b>  圖5.1仿真圖</b></p><

51、p><b>  5.2仿真結(jié)果</b></p><p>  運(yùn)行后,按下主機(jī)1號(hào)鍵,開始主機(jī)與1號(hào)從機(jī)通信。再按下數(shù)字2,從機(jī)數(shù)碼管顯示12。效果如圖5.2,5.3所示。</p><p>  圖5.2主機(jī)數(shù)碼顯示</p><p>  圖5.3從機(jī)數(shù)碼顯示</p><p><b>  6心得體會(huì)</b

52、></p><p>  在本次畢業(yè)設(shè)計(jì),我通過基于典型單片機(jī)AT89C51的設(shè)計(jì)和應(yīng)用,對(duì)于單片機(jī)工作原理、功能有了宏觀的了解,并對(duì)單片機(jī)匯編程序的應(yīng)用有了新的、進(jìn)一步的認(rèn)識(shí)。</p><p>  在本次設(shè)計(jì)的過程中,我發(fā)現(xiàn)很多的問題,給我的感覺就是下手很難,很不順手,看似很簡(jiǎn)單的電路,要?jiǎng)邮职阉o設(shè)計(jì)出來(lái),是很難的一件事,主要原因是我們沒有經(jīng)常動(dòng)手設(shè)計(jì)過電路。另外單片機(jī)系統(tǒng)的知識(shí)似

53、懂非懂,而且很多知識(shí)當(dāng)時(shí)弄明白了,現(xiàn)在要用的時(shí)候又不記得,造成我用了大量的時(shí)間去查閱各種資料和程序命令,因此整個(gè)過程時(shí)間安排不合理。由于設(shè)計(jì)的計(jì)劃沒有安排好,設(shè)計(jì)的時(shí)間極為倉(cāng)促,尤其是在硬件調(diào)試的過程中出現(xiàn)了很大的問題。另外資料的查找也是一大難題,這就要求我們?cè)谝院蟮膶W(xué)習(xí)中,應(yīng)該注意到這一點(diǎn),更重要的是我們要學(xué)會(huì)把從書本中學(xué)到的知識(shí)和實(shí)際的電路聯(lián)系起來(lái),這不論是對(duì)我們以后的就業(yè)還是學(xué)習(xí),都會(huì)起到很大的促進(jìn)和幫助。</p>

54、<p>  本文介紹了一種基于單片機(jī)的多機(jī)通信的設(shè)計(jì)方法,論文首先介紹了多機(jī)通信的應(yīng)用及研究現(xiàn)狀、串口通信的概念,主要是串口通信的方式和重要的數(shù)據(jù)位說(shuō)明,接著提出了利用串口通信實(shí)現(xiàn)多機(jī)通信的可行的設(shè)計(jì)方案,并從硬件電路設(shè)計(jì)和軟件程序設(shè)計(jì)兩個(gè)方面詳細(xì)介紹了整個(gè)設(shè)計(jì)的原理及設(shè)計(jì)過程,最后完成了系統(tǒng)的仿真調(diào)試,可成功運(yùn)行,從而驗(yàn)證了方案的可行性。</p><p>  當(dāng)然,本設(shè)計(jì)還有很多不足之處,功能上還不夠

55、完善,在此基礎(chǔ)上還可以進(jìn)行系統(tǒng)擴(kuò)展,以使整個(gè)設(shè)計(jì)的功能更加完善</p><p><b>  參考文獻(xiàn)</b></p><p>  [1] 謝沅清,解月珍.電子技術(shù)基礎(chǔ).人民郵電出版社,1999.</p><p>  [2] 何立民. 單片機(jī)應(yīng)用技術(shù)選編. 北京航空航天大學(xué)出版社,2006.</p><p>  [3] 譚

56、浩強(qiáng).C程序設(shè)計(jì)(第二版).清華大學(xué)出版社,2001.1.</p><p>  [4] 張毅剛,彭喜源.MCS-51單片機(jī)應(yīng)用設(shè)計(jì).哈爾濱工業(yè)大學(xué)出版社,1997.</p><p>  [5] 胡漢才.單片機(jī)原理及接口技術(shù).清華大學(xué)出版社,1996.</p><p>  [6] 孫江宏等. Protel 99 電路設(shè)計(jì)與應(yīng)用.機(jī)械工業(yè)出版社,2001.2.</

57、p><p>  [7] 黃亮.基于AT89C51單片機(jī)的串口通信程序的設(shè)計(jì).電子制作,2006年07期.</p><p>  [8] 劉錫東,黃麗民.用C語(yǔ)言實(shí)現(xiàn)串口通信技術(shù).山東商業(yè)職業(yè)技術(shù)學(xué)院學(xué)報(bào),2007年02期.</p><p>  [9] 栗小寬,韓東起,李霞.51系列單片機(jī)中模擬串行口的C語(yǔ)言實(shí)現(xiàn).科技咨詢導(dǎo)報(bào),2007年17期. </p>&

58、lt;p>  [10] 禹言春,張麗麗,王賀濤.單片機(jī)的多機(jī)通信.安徽農(nóng)學(xué)通報(bào),2007年09期.</p><p>  [11] 郭天祥.新概念51單片機(jī)C語(yǔ)言教程:入門、提高、開發(fā)、拓展全攻略.北京:電子工業(yè)出版社,2009</p><p>  [12]彭偉.單片機(jī)C語(yǔ)言程序設(shè)計(jì)實(shí)訓(xùn)100例.電子工業(yè)出版社,2011</p><p>  [13]杜洋.愛上單

59、片機(jī).人民郵電出版社,2012</p><p>  [14]于永.51單片機(jī)C語(yǔ)言常用模塊與綜合系統(tǒng)設(shè)計(jì).電子工業(yè)出版社,2012</p><p>  [15]高衛(wèi)東.51單片機(jī)原理與實(shí)踐.北京航空航天大學(xué)出版社,2011</p><p>  [16]潘永雄.新編單片機(jī)原理及應(yīng)用.西安電子科技大學(xué)出版社,20</p><p><b>

60、;  附錄1系統(tǒng)原理圖</b></p><p><b>  附錄2程序清單</b></p><p><b>  主機(jī)程序:</b></p><p>  #include<reg52.h></p><p>  #define uchar unsigned char</p&

61、gt;<p>  #define uint unsigned int</p><p>  sbit LED1=P3^4;</p><p>  sbit LED2=P3^5;</p><p>  sbit MCU1=P2^2;</p><p>  sbit MCU2=P2^3;</p><p>  ucha

62、r tab[]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f,0x77,0x7c};</p><p>  uchar keyscan(void);</p><p>  void delayms(uchar t);</p><p>  void init_serial(void);</p><

63、p>  void SBUFSend(uchar key);</p><p>  void senddat(uchar addr,uchar dat);</p><p>  void display(uchar addr,uchar dat);</p><p>  uchar keyscan()</p><p><b>  {&

64、lt;/b></p><p>  uchar temp,key;</p><p><b>  P1=0xfe;</b></p><p><b>  temp=P1;</b></p><p>  temp=temp&0xf0;</p><p>  if(temp!

65、=0xf0)</p><p><b>  {</b></p><p>  delayms(10);</p><p>  if(temp!=0xf0)</p><p><b>  {</b></p><p><b>  temp=P1;</b></p

66、><p>  switch(temp)</p><p><b>  {</b></p><p>  case 0xee:key=0;break;</p><p>  case 0xde:key=1;break;</p><p>  case 0xbe:key=2;break;</p>&

67、lt;p>  case 0x7e:key=3;break;</p><p><b>  }</b></p><p>  while(temp!=0xf0)</p><p><b>  {</b></p><p><b>  temp=P1;</b></p>

68、<p>  temp=temp&0xf0;</p><p><b>  }</b></p><p><b>  }</b></p><p><b>  }</b></p><p><b>  P1=0xfd;</b></p>

69、<p><b>  temp=P1;</b></p><p>  temp=temp&0xf0;</p><p>  if(temp!=0xf0)</p><p><b>  {</b></p><p>  delayms(10);</p><p>  i

70、f(temp!=0xf0)</p><p><b>  {</b></p><p><b>  temp=P1;</b></p><p>  switch(temp)</p><p><b>  {</b></p><p>  case 0xed:key

71、=4;break;</p><p>  case 0xdd:key=5;break;</p><p>  case 0xbd:key=6;break;</p><p>  case 0x7d:key=7;break;</p><p><b>  }</b></p><p>  while(temp

72、!=0xf0)</p><p><b>  {</b></p><p><b>  temp=P1;</b></p><p>  temp=temp&0xf0;</p><p><b>  }</b></p><p><b>  }&l

73、t;/b></p><p><b>  }</b></p><p><b>  P1=0xfb;</b></p><p><b>  temp=P1;</b></p><p>  temp=temp&0xf0;</p><p>  if(t

74、emp!=0xf0)</p><p><b>  {</b></p><p>  delayms(10);</p><p>  if(temp!=0xf0)</p><p><b>  {</b></p><p><b>  temp=P1;</b>&l

75、t;/p><p>  switch(temp)</p><p><b>  {</b></p><p>  case 0xeb:key=8;break;</p><p>  case 0xdb:key=9;break;</p><p>  case 0xbb:key=10;break;</p&g

76、t;<p>  case 0x7b:key=11;break;</p><p><b>  }</b></p><p>  while(temp!=0xf0)</p><p><b>  {</b></p><p><b>  temp=P1;</b></p

77、><p>  temp=temp&0xf0;</p><p><b>  }</b></p><p><b>  }</b></p><p><b>  }</b></p><p><b>  P1=0xf7;</b></

78、p><p><b>  temp=P1;</b></p><p>  temp=temp&0xf0;</p><p>  if(temp!=0xf0)</p><p><b>  {</b></p><p>  delayms(10);</p><p&

79、gt;  if(temp!=0xf0)</p><p><b>  {</b></p><p><b>  temp=P1;</b></p><p>  switch(temp)</p><p><b>  {</b></p><p>  case 0x

80、e7:key=12;break;</p><p>  case 0xd7:key=13;break;</p><p>  case 0xb7:key=14;break;</p><p>  case 0x77:key=15;break;</p><p><b>  }</b></p><p>  

81、while(temp!=0xf0)</p><p><b>  {</b></p><p><b>  temp=P1;</b></p><p>  temp=temp&0xf0;</p><p><b>  }</b></p><p><

82、b>  }</b></p><p><b>  }</b></p><p>  return key;</p><p><b>  }</b></p><p>  void delayms(uchar t)</p><p><b>  {

83、</b></p><p>  uchar i,j;</p><p>  for(i=0;i<t;i++)</p><p>  for(j=0;j<110;j++);</p><p><b>  }</b></p><p>  void init_serial(void)&

84、lt;/p><p><b>  {</b></p><p>  TMOD=0X20;</p><p><b>  TH1=0XFA;</b></p><p><b>  TL1=0XFA;</b></p><p>  PCON=0X80;</p>

85、<p>  SCON=0X50;</p><p><b>  TR1=1;</b></p><p><b>  ES=1;</b></p><p><b>  EA=1;</b></p><p><b>  }</b></p>

86、<p>  void SBUFSend(uchar key)</p><p><b>  {</b></p><p><b>  SBUF=key;</b></p><p>  while(TI==0);</p><p><b>  TI=0;</b></p&g

87、t;<p><b>  }</b></p><p>  void senddat(uchar addr,uchar dat)</p><p><b>  {</b></p><p><b>  TB8=1;</b></p><p>  SBUFSend(add

88、r);</p><p><b>  TB8=0;</b></p><p>  SBUFSend(dat);</p><p><b>  }</b></p><p>  void display(uchar addr,uchar dat)</p><p><b> 

89、 {</b></p><p>  P0=tab[addr];</p><p><b>  LED1=0;</b></p><p><b>  LED2=1;</b></p><p>  delayms(1);</p><p><b>  P0=0x00;

90、</b></p><p>  P0=tab[dat];</p><p><b>  LED1=1;</b></p><p><b>  LED2=0;</b></p><p>  delayms(1);</p><p><b>  P0=0X00;<

91、;/b></p><p><b>  }</b></p><p>  void main()</p><p><b>  {</b></p><p>  char addr,dat;</p><p>  init_serial();</p><p&g

92、t;  dat=keyscan();</p><p><b>  while(1){</b></p><p>  if(MCU1==0)</p><p><b>  {</b></p><p><b>  addr=1;</b></p><p>  da

93、t=keyscan();</p><p>  senddat(1,dat);</p><p>  display(1,dat);</p><p><b>  }</b></p><p>  if(MCU2==0)</p><p><b>  {</b></p>

94、;<p><b>  addr=2;</b></p><p>  dat=keyscan();</p><p>  senddat(2,dat);</p><p>  display(2,dat); </p><p><b>  }</b></p><p>&

95、lt;b>  } </b></p><p><b>  }</b></p><p>  void serial_int() interrupt 4</p><p><b>  {</b></p><p><b>  if(RI==1)</b></p&g

96、t;<p><b>  {</b></p><p><b>  RI=0;</b></p><p><b>  } </b></p><p>  else TI=0; </p><p><b>  } </b></p>

97、;<p><b>  從機(jī)1程序:</b></p><p>  #include <reg52.h></p><p>  #define uchar unsigned char</p><p>  sbit LED1=P2^0;</p><p>  sbit LED2=P2^1;</p&g

98、t;<p>  uchar DispCode[10]={0x3f,0x06,0x5b,0x4f,0x66, 0x6d,0x7d,0x07,0x7f,0x6f};</p><p>  //---------------------------------</p><p>  void SerialInit()</p><p><b>  {&l

99、t;/b></p><p>  SCON=0xf0; //方式3 允許接收,SM2=1</p><p>  PCON=0x00; //串口波特率不加倍</p><p>  TMOD=0x20; //定時(shí)器1,方式2</p><p>  TH1=0xfd; //波特率為9600 </p><p><

100、b>  TL1=0xfd;</b></p><p>  TR1=1; //啟動(dòng)定時(shí)器</p><p><b>  ES=1;</b></p><p><b>  EA=1;</b></p><p><b>  }</b></p><

101、;p>  //-------------------------------</p><p>  void SBUFSend(uchar Ch)</p><p><b>  {</b></p><p><b>  SBUF=Ch;</b></p><p>  while(TI==0)</

102、p><p><b>  {</b></p><p><b>  }</b></p><p><b>  TI=0;</b></p><p><b>  }</b></p><p>  //------------------------

103、--------</p><p>  void main()</p><p><b>  {</b></p><p>  SerialInit();</p><p><b>  while(1)</b></p><p><b>  {</b></p

104、><p><b>  }</b></p><p><b>  }</b></p><p>  //--------------------------------</p><p>  void SerialServer() interrupt 4</p><p><b>

105、;  {</b></p><p><b>  uchar Ch;</b></p><p><b>  if(RI==1)</b></p><p>  {uchar i;</p><p><b>  RI=0;</b></p><p><

106、;b>  Ch=SBUF;</b></p><p>  if(RB8==1) </p><p><b>  {</b></p><p><b>  if(Ch==1)</b></p><p><b>  {</b></p><p>&l

107、t;b>  SM2=0; </b></p><p>  SBUFSend(1);</p><p><b>  LED1=0;</b></p><p><b>  LED2=1;</b></p><p>  for(i=500;i>0;i--)</p>&l

108、t;p>  P0=DispCode[Ch];</p><p><b>  }</b></p><p><b>  else </b></p><p><b>  {</b></p><p><b>  SM2=1;</b></p>&l

109、t;p><b>  }</b></p><p><b>  }</b></p><p>  if(RB8==0)</p><p>  { P0=0x00;</p><p><b>  LED1=1;</b></p><p><b>  

110、LED2=0;</b></p><p>  for(i=500;i>0;i--)</p><p>  P0=DispCode[Ch];</p><p><b>  SM2=1;</b></p><p><b>  }</b></p><p><b&

111、gt;  }</b></p><p><b>  }</b></p><p><b>  從機(jī)2程序:</b></p><p>  #include <reg52.h></p><p>  #define uchar unsigned char</p><

112、p>  sbit LED1=P2^0;</p><p>  sbit LED2=P2^1;</p><p>  uchar DispCode[10]={0x3f,0x06,0x5b,0x4f,0x66, 0x6d,0x7d,0x07,0x7f,0x6f};</p><p>  //---------------------------------</p&

113、gt;<p>  void SerialInit()</p><p><b>  {</b></p><p>  SCON=0xf0; //方式3 允許接收,SM2=1</p><p>  PCON=0x00; //串口波特率不加倍</p><p>  TMOD=0x20; //定時(shí)器1,方式2<

114、;/p><p>  TH1=0xfd; //波特率為9600 </p><p><b>  TL1=0xfd;</b></p><p>  TR1=1; //啟動(dòng)定時(shí)器</p><p><b>  ES=1;</b></p><p><b>  EA=1;

115、</b></p><p><b>  }</b></p><p>  //-------------------------------</p><p>  void SBUFSend(uchar Ch)</p><p><b>  {</b></p><p>&

116、lt;b>  SBUF=Ch;</b></p><p>  while(TI==0)</p><p><b>  {</b></p><p><b>  }</b></p><p><b>  TI=0;</b></p><p><

117、;b>  }</b></p><p>  //--------------------------------</p><p>  void main()</p><p><b>  {</b></p><p>  SerialInit();</p><p><b> 

118、 while(1)</b></p><p><b>  {</b></p><p><b>  }</b></p><p><b>  }</b></p><p>  //--------------------------------</p><

119、;p>  void SerialServer() interrupt 4</p><p><b>  {</b></p><p><b>  uchar Ch;</b></p><p><b>  if(RI==1)</b></p><p>  {uchar i;<

120、;/p><p><b>  RI=0;</b></p><p><b>  Ch=SBUF;</b></p><p>  if(RB8==1) </p><p><b>  {</b></p><p><b>  if(Ch==2)</b&g

121、t;</p><p><b>  {</b></p><p><b>  SM2=0; </b></p><p>  SBUFSend(2);</p><p><b>  LED1=0;</b></p><p><b>  LED2=1;&l

122、t;/b></p><p>  for(i=500;i>0;i--)</p><p>  P0=DispCode[Ch];</p><p><b>  }</b></p><p><b>  else </b></p><p><b>  {<

123、/b></p><p><b>  SM2=1;</b></p><p><b>  }</b></p><p><b>  }</b></p><p>  if(RB8==0)</p><p>  { P0=0x00;</p>&

124、lt;p><b>  LED1=1;</b></p><p><b>  LED2=0;</b></p><p>  for(i=500;i>0;i--)</p><p>  P0=DispCode[Ch];</p><p><b>  SM2=1;</b><

溫馨提示

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

評(píng)論

0/150

提交評(píng)論