畢業(yè)論文---單片機(jī)串口與電腦通訊_第1頁
已閱讀1頁,還剩17頁未讀 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡介

1、<p><b>  數(shù)理與信息工程學(xué)院</b></p><p><b>  課 程 設(shè) 計(jì)</b></p><p>  題 目: 單片機(jī)串行與電腦通訊 </p><p>  專 業(yè): 計(jì)算機(jī)科學(xué)與技術(shù)(專升本) </p><p> 

2、 班 級: 計(jì)算機(jī)056 </p><p>  姓 名: 學(xué)號: </p><p>  實(shí)驗(yàn)地點(diǎn):數(shù)理與信息工程學(xué)院 電子系統(tǒng)設(shè)計(jì)室</p><p>  指導(dǎo)老師: </p>&l

3、t;p>  成 績: </p><p><b>  目 錄</b></p><p>  第1節(jié) 引 言1</p><p>  1.1 單片機(jī)串行口與PC機(jī)通信概述1</p><p>  1.2 系統(tǒng)主要功能1</p><

4、;p>  第2節(jié) 單片機(jī)串行口與PC機(jī)通訊硬件設(shè)計(jì)2</p><p>  2.1 系統(tǒng)的硬件構(gòu)成2</p><p>  2.2 設(shè)計(jì)說明2</p><p>  2.3 系統(tǒng)電路圖3</p><p>  2.4 8031單片機(jī)及其引腳說明5</p><p>  2.5 顯示接口8279的功能及其引腳說明

5、5</p><p>  2.6 數(shù)據(jù)格式和數(shù)據(jù)的協(xié)議6</p><p>  第3節(jié) 系統(tǒng)軟件設(shè)計(jì)7</p><p>  3.1 系統(tǒng)主程序框架圖7</p><p>  3.2 系統(tǒng)主要程序8</p><p>  第3節(jié) 結(jié)束語14</p><p><b>  參考文獻(xiàn)15

6、</b></p><p>  單片機(jī)串行口與PC機(jī)通訊</p><p>  數(shù)理與信息工程學(xué)院 05計(jì)算機(jī)專升本 王偉偉</p><p>  指導(dǎo)教師:余水寶 </p><p><b>  第1節(jié) 引 言</b></p><p>  單片機(jī)應(yīng)用中,串口通信是不可缺少的部分。

7、如何編寫有效的串口通信程序?qū)Τ绦虻慕Y(jié)構(gòu)、可靠性都有很大的影響。串口控制程序一般分為查詢和中斷兩者方式。查詢方式適用于簡單的應(yīng)用,簡單可靠,但是缺點(diǎn)是需要占用處理器資源,在發(fā)送或者接收數(shù)據(jù)的時(shí)候不能做其它的事情,處理器利用率低。中斷方式下,在發(fā)送或者接受數(shù)據(jù)的時(shí)候處理器還可以做其它的工作,效率較高。</p><p>  1.1 單片機(jī)串行口與PC機(jī)通訊概述</p><p>  目前,計(jì)算機(jī)

8、控制系統(tǒng)已逐步從單機(jī)控制發(fā)展成為多機(jī)控制并出現(xiàn)了以計(jì)算機(jī)技術(shù)為核心,與數(shù)據(jù)通訊技術(shù)相結(jié)合的集檢測、控制和管理為一體的計(jì)算機(jī)網(wǎng)絡(luò),即集中分布式測控系統(tǒng)。其中單片機(jī)作為從機(jī),負(fù)責(zé)現(xiàn)場控制和實(shí)時(shí)數(shù)據(jù)的采集;PC機(jī)作為主機(jī),負(fù)責(zé)對各從機(jī)發(fā)來的數(shù)據(jù)進(jìn)行分析、處理,并向各從機(jī)發(fā)布命令,以實(shí)現(xiàn)對工業(yè)現(xiàn)場的集中監(jiān)控與管理。由于主從機(jī)需不斷進(jìn)行信息交流,因此通信成為分布式測控系統(tǒng)重要而基本的功能。</p><p>  基本原理PC

9、機(jī)與單片機(jī)之間通常采用2種通信方式:并行通信和串行通信。并行通信是指將待發(fā)送數(shù)據(jù)的各位同時(shí)傳送,串行通信則將數(shù)據(jù)一位一位地按順序傳送。并行通信雖然傳輸效率高,由于所需硬件設(shè)備復(fù)雜,不適于長距離通信,所以一般只適用于要求實(shí)時(shí)性強(qiáng),傳送速率較高的控制系統(tǒng)中,實(shí)用面較窄;相比之下,串行通信簡單易實(shí)現(xiàn),傳輸距離較長,所以已被廣泛應(yīng)用于各種工控系統(tǒng)中。串行通信分為同步通信和異步通信2種方式。同步通信是指通過在每個(gè)數(shù)據(jù)塊開始時(shí)的同步字符來實(shí)現(xiàn)收/發(fā)

10、雙方同步的一種數(shù)據(jù)傳輸方法,常用于信息量大,速度要求高的場合;異步通信則規(guī)定了標(biāo)準(zhǔn)的字符數(shù)據(jù)傳輸格式,即每一幀信息由起始位、數(shù)據(jù)位、奇偶校驗(yàn)位和停止位組成。由于有冗余位,所以傳送效率不高,常用于信息量不大,速度較低的場合。在計(jì)算機(jī)測控系統(tǒng)中,由于串行接口的標(biāo)準(zhǔn)化,一般采用異步串行通信方式,以提高其通用性。由于各種接口的機(jī)械和電器特性有所差異,串行通信分為近程通信和遠(yuǎn)程通信。2 接口電路的設(shè)計(jì)2.1 近程通信目前,PC機(jī)是利用異步通訊控制

11、器來實(shí)現(xiàn)串行通訊的,其核心是8250通訊芯片加上一些收發(fā)邏輯電路。接口標(biāo)準(zhǔn)大多是RS232標(biāo)準(zhǔn),其通訊距離小</p><p>  1.2 系統(tǒng)主要功能</p><p>  本實(shí)驗(yàn)實(shí)現(xiàn)以下功能,將從實(shí)驗(yàn)機(jī)鍵盤上鍵入的數(shù)字,字母顯示到PC機(jī)顯示器上,將PC機(jī)鍵盤輸入的字符(0-F)顯示到實(shí)驗(yàn)機(jī)的數(shù)碼管上。</p><p>  第2節(jié) 單片機(jī)串行口與PC機(jī)通訊硬件設(shè)

12、計(jì)</p><p>  2.1 系統(tǒng)的硬件構(gòu)成</p><p>  利用8031單片機(jī)串行口,實(shí)現(xiàn)與PC機(jī)通訊。 CS8279接8700H。 模塊中的十個(gè)短路套都套在8279側(cè)。 </p><p>  8279狀態(tài)口地址為8701H;8279數(shù)據(jù)口地址為8700H</p><p><b>  2.2 設(shè)計(jì)說明</b>

13、</p><p>  1.當(dāng)用GR命令執(zhí)行程序時(shí),實(shí)驗(yàn)機(jī)內(nèi)部會將8031串行口電路切換與PC機(jī)通訊,無須連線。 </p><p>  2.程序執(zhí)行前,進(jìn)入LCA51,加載程序后,才進(jìn)入調(diào)試菜單工具中的對話窗口,然后執(zhí)行GR0,就可實(shí)行單片機(jī)串行口與PC機(jī)通信實(shí)驗(yàn)</p><p>  2.3 系統(tǒng)電路圖</p><p><b>  

14、圖1 系統(tǒng)電路圖</b></p><p>  2.4 8031單片機(jī)及其引腳說明</p><p>  單片機(jī)有許多種類,從生產(chǎn)廠家看,有Intel、Motorola、Epson、NEC、Phlips等公司;按位數(shù)分有四位機(jī)、八位機(jī)、十六位機(jī)----也就是可以同時(shí)對四位、八位或十六位二進(jìn)制碼進(jìn)行運(yùn)算;從用途上又可以分為通用和專用。</p><p>  

15、Intel公司的 MCS-51系列屬于8位機(jī)的系列,性能可能滿足大多數(shù)應(yīng)用的需要。它應(yīng)用廣泛、價(jià)格便宜、技術(shù)成熟,適于初學(xué)者學(xué)習(xí)。 在MCS-51系列中又有許多型號,包括8031、8051、8751等。其中8051的程序已經(jīng)由工廠做在單片機(jī)內(nèi)部(稱做掩膜), 是為批量用戶定制的,對于我們學(xué)習(xí)不適用。8751是在芯片內(nèi)有可擦寫的程序存儲器,這種芯片是為做掩膜前驗(yàn)證電路用的, 也用于一些有特殊要求的場所。8031內(nèi)部沒有程序存儲器,它的程序

16、存儲器接在芯片外面,這樣恰好便于在開發(fā)過程中對程序存儲器進(jìn)行控制,因此選8031學(xué)習(xí)是比較適宜的。其實(shí)這幾種型號的原理完全一樣,學(xué)會8031其它型號也就掌握了</p><p>  圖2 8031引腳配置</p><p>  8031芯片的40條引腳功能為:</p><p>  1、主電源引腳VCC和VSS    VCC——(40腳)接

17、+5V電壓;    VSS——(20腳)接地。2、外接晶體引腳XTAL1和XTAL2    XTAL1(19腳)接外部晶體的一個(gè)引腳。在單片機(jī)內(nèi)部,它是一個(gè)反相放大器的輸入端,這個(gè)放大器構(gòu)成了片內(nèi)振蕩器。當(dāng)采用外部振蕩器時(shí),對HMOS單片機(jī),此引腳應(yīng)接地;對CHMOS單片機(jī),此引腳作為驅(qū)動端。    XTAL2(18腳)接外晶體的另一端。在

18、單片機(jī)內(nèi)部,接至上述振蕩器的反相放大器的輸出端。采用外部振蕩器時(shí),對HMOS單片機(jī),該引腳接外部振蕩器的信號,即把外部振蕩器的信號直接接到內(nèi)部時(shí)鐘發(fā)生器的輸入端;對XHMOS,此引腳應(yīng)懸浮。</p><p>  3、控制或與其它電源復(fù)用引腳RST/VPD、ALE/PROG、PSEN和EA/VPP    ①RST/VPD(9腳)當(dāng)振蕩器運(yùn)行時(shí),在此腳上出現(xiàn)兩個(gè)機(jī)器周期的高電平將使單片

19、機(jī)復(fù)位。推薦在此引腳與VSS引腳之間連接一個(gè)約8.2k的下拉電阻,與VCC引腳之間連接一個(gè)約10μF的電容,以保證可靠地復(fù)位。    VCC掉電期間,此引腳可接上備用電源,以保證內(nèi)部RAM的數(shù)據(jù)不丟失。當(dāng)VCC主電源下掉到低于規(guī)定的電平,而VPD在其規(guī)定的電壓范圍(5±0.5V)內(nèi),VPD就向內(nèi)部RAM提供備用電源。    ②ALE/PROG(30腳):當(dāng)訪問外部

20、存貯器時(shí),ALE(允許地址鎖存)的輸出用于鎖存地址的低位字節(jié)。即使不訪問外部存儲器,ALE端仍以不變的頻率周期性地出現(xiàn)正脈沖信號,此頻率為振蕩器頻率的1/6。因此,它可用作對外輸出的時(shí)鐘,或用于定時(shí)目的。然而要注意的是,每當(dāng)訪問外部數(shù)據(jù)存儲器時(shí),將跳過一個(gè)ALE脈沖。ALE端可以驅(qū)動(吸收或輸出電流)8個(gè)LS型的TTL輸入電路。    對于EPROM單片機(jī)(如8751),在EPROM編程期間,此引腳用于輸

21、入編程脈沖(PROG)。    ③PSEN(</p><p> ?、蹺A/VPP(引腳):當(dāng)EA端保持高電平時(shí),訪問內(nèi)部程序存儲器,但在PC(程序計(jì)數(shù)器)值超過0FFFH(對851/8751/80C51)或1FFFH(對8052)時(shí),將自動轉(zhuǎn)向執(zhí)行外部程序存儲器內(nèi)的程序。當(dāng)EA保持低電平時(shí),則只訪問外部程序存儲器,不管是否有內(nèi)部程序存儲器。對于常用的8031來說,無內(nèi)部程序存儲器,

22、所以EA腳必須常接地,這樣才能只選擇外部程序存儲器。    對于EPROM型的單片機(jī)(如8751),在EPROM編程期間,此引腳也用于施加21V的編程電源(VPP)。4、輸入/輸出(I/O)引腳P0、P1、P2、P3(共32根)    ①P0口(39腳至32腳):是雙向8位三態(tài)I/O口,在外接存儲器時(shí),與地址總線的低8位及數(shù)據(jù)總線復(fù)用,能以吸收電流的方式驅(qū)動8個(gè)LS型的T

23、TL負(fù)載。    ②P1口(1腳至8腳):是準(zhǔn)雙向8位I/O口。由于這種接口輸出沒有高阻狀態(tài),輸入也不能鎖存,故不是真正的雙向I/O口。P1口能驅(qū)動(吸收或輸出電流)4個(gè)LS型的TTL負(fù)載。對8052、8032,P1.0引腳的第二功能為T2定時(shí)/計(jì)數(shù)器的外部輸入,P1.1引腳的第二功能為T2EX捕捉</p><p>  圖3 系統(tǒng)主程序流程圖</p><p&g

24、t;  2.5 顯示接口8279的功能及其引腳說明</p><p>  可編程鍵盤/顯示接口8279可編程鍵盤/顯示接口8279的引腳功能</p><p>  8279采用單一+5V電源供電,40腳封裝。</p><p>  DB0~DB7:雙向數(shù)據(jù)總線,用來傳送8279與CPU之間的數(shù)據(jù)和命令。</p><p>  CLK:時(shí)鐘輸入線,用以

25、產(chǎn)生內(nèi)部定時(shí)的時(shí)鐘脈沖。</p><p>  RESET:復(fù)位輸入線,8279復(fù)位后被置為字符顯示左端輸入,二鍵閉鎖的觸點(diǎn)回彈型式,程序時(shí)鐘前置分頻器被置為31,RESET信號為高電平有效。</p><p>  CS:片選輸入線,低電平有效,單片機(jī)在CS端為低時(shí)可以對8279讀/寫操作。</p><p>  A0:緩沖器低位地址,當(dāng)A0為高電平時(shí),表示數(shù)據(jù)總線上為命

26、令或狀態(tài), 當(dāng)為低電平時(shí),表示數(shù)據(jù)總線上為命令或狀態(tài),當(dāng)為低電平時(shí),表示數(shù)據(jù)總線上為數(shù)據(jù)。</p><p>  RD:讀信號輸入線,低電平有效,將緩沖器讀出,數(shù)據(jù)送往外部總線。</p><p>  WR:寫信號輸入線,低電平有效,將緩立器讀出, 將數(shù)據(jù)從外部數(shù)據(jù)總線寫入8279的緩沖器。</p><p>  RL2-- 1 40 --VCC </p>

27、<p>  RL3-- 2 39 --RL 1 </p><p>  CLK-- 3 38 --RL 0 </p><p>  IRQ-- 4 37 --CNTL/STB </p><p>  RL4-- 5 36 --SHIFT </p><p>  RL5-- 6 35 --SL 3 </p><p> 

28、 RL6-- 7 34 --SL 2 </p><p>  RL7-- 8 33 --SL 1 </p><p>  RESRT-- 9 32 --SL 0 </p><p>  RD-- 10 31 --OUT B0 </p><p>  WR-- 11 30 --OUT B1 </p><p>  DB0-- 12

29、 29 --OUT B2 </p><p>  DB1-- 13 28 --OUT B3 </p><p>  DB2-- 14 27 --OUT A0 </p><p>  DB3-- 15 26 --OUT A1 </p><p>  DB4-- 16 25 --OUT A2 </p><p>  DB5-- 17

30、 24 --OUT A3 </p><p>  DB6-- 18 23 --BD </p><p>  DB7-- 19 22 --CS </p><p>  VSS-- 20 21 --A0 </p><p>  IRQ:中斷請求輸出線,高電平有效,在鍵盤工作方式下,當(dāng)FIFO/傳感器RAM中有數(shù)據(jù)時(shí),此中斷線變?yōu)楦唠娖剑贔IFO/傳感器

31、RAM每次讀出時(shí),中斷線就下降為低電平,若在RAM中還有信息,則此線重又變?yōu)楦唠娖?。在傳感器工作方式中?每當(dāng)探測到傳感器信號變化時(shí),中斷線就變?yōu)楦唠娖健?lt;/p><p>  SL0~SL3:掃描線,用來掃描按鍵開關(guān),傳感器陣列和顯示數(shù)字, 這些可被編程或被譯碼。</p><p>  RL0~RL7:回送線,經(jīng)過按鍵或傳感器開關(guān)與掃描線聯(lián)接, 這些回送線內(nèi)部設(shè)置有上拉電路,使之保持為高電平

32、,只有當(dāng)一個(gè)按閉合時(shí),對應(yīng)的返回線變?yōu)榈碗娖?;無按鍵閉合時(shí),均保持高電平。</p><p>  SHIFT:換位功能,當(dāng)有開關(guān)閉合時(shí)被拉為低電平,沒有按下SHIFT開關(guān)時(shí),SHIFT輸入端保持高電平,在鍵盤掃描方式中,按鍵一閉合,按鍵位置和換位輸入狀態(tài)一起被存貯起來。</p><p>  CNTL/STB:當(dāng)CNTL/STB開關(guān)閉合時(shí)將其拉到低電平,否則始終保持高電平, 對于鍵盤輸入方式,

33、此線用作控制輸入端,當(dāng)鍵被按下時(shí),按鍵位置就和控制輸入狀態(tài)一起被存貯起來,在選通輸入方式中,作選通用,把數(shù)據(jù)存入FIFO RAM中。</p><p>  OUTA3~OUTA0及OUTB3~OUTB0:顯示輸出A口及B口,這兩個(gè)口是16×4切換的數(shù)字顯示。這兩個(gè)端口可被獨(dú)立控制,也可看成一個(gè)8位端口。</p><p>  BD:空格顯示,此輸出端信號用于在數(shù)字轉(zhuǎn)換時(shí)將顯示空格或者

34、用顯示空格命令控制其顯示空格字符。</p><p>  VCC:+5V電源輸入線。</p><p>  VSS:地線輸入線。</p><p>  2.6數(shù)據(jù)格式和數(shù)據(jù)交換的協(xié)議</p><p>  Max232產(chǎn)品是由德州儀器公司(TI)推出的一款兼容RS232標(biāo)準(zhǔn)的芯片。該器件包含2驅(qū)動器、2接收器和一個(gè)電壓發(fā)生器電路提供TIA/EIA-2

35、32-F電平。</p><p>  該器件符合TIA/EIA-232-F標(biāo)準(zhǔn),每一個(gè)接收器將TIA/EIA-232-F電平轉(zhuǎn)換成5-V TTL/CMOS電平。每一個(gè)發(fā)送器將TTL/CMOS電平轉(zhuǎn)換成TIA/EIA-232-F電平。</p><p>  圖4 系統(tǒng)主程序流程圖</p><p>  計(jì)算機(jī)與計(jì)算機(jī)或計(jì)算機(jī)與終端之間的數(shù)據(jù)傳送可以采用串行通訊和并行通訊二

36、種方式。由于串行通訊方式具有使用線路少、成本低,特別是在遠(yuǎn)程傳輸時(shí),避免了多條線路特性的不一致而被廣泛采用。在串行通訊時(shí),要求通訊雙方都采用一個(gè)標(biāo)準(zhǔn)接口,使不同的設(shè)備可以方便地連接起來進(jìn)行通訊。RS-232-C接口(又稱 EIA RS-232-C)是目前最常用的一種串行通訊接口。它是在1970年由美國電子工業(yè)協(xié)會(EIA)聯(lián)合貝爾系統(tǒng)、調(diào)制解調(diào)器廠家及計(jì)算機(jī)終端生產(chǎn)廠家共同制定的用于串行通訊的標(biāo)準(zhǔn)。它的全名是"數(shù)據(jù)終端設(shè)備(D

37、TE)和數(shù)據(jù)通訊設(shè)備(DCE)之間串行二進(jìn)制數(shù)據(jù)交換接口技術(shù)標(biāo)準(zhǔn)"該標(biāo)準(zhǔn)規(guī)定采用一個(gè)25個(gè)腳的DB25連接器,對連接器的每個(gè)引腳的信號內(nèi)容加以規(guī)定,還對各種信號的電平加以規(guī)定。一般只使用3-9條引線。</p><p>  第3節(jié) 系統(tǒng)的軟件設(shè)計(jì)</p><p>  本系統(tǒng)的軟件系統(tǒng)主要可分為主程序、串口收發(fā)程序,讀取鍵盤子程序,顯示字符子程序四大模塊。</p>

38、<p>  3.1 系統(tǒng)主程序設(shè)計(jì)</p><p>  圖5 系統(tǒng)主程序流程圖</p><p>  圖6 INIT8279子程序框圖</p><p><b>  主要程序</b></p><p>  Z8279 EQU 8701H ;8279 狀態(tài)/命令口地址 </p><

39、p>  D8279 EQU 8700H ;8279 數(shù)據(jù)口地址 </p><p>  LEDMOD EQU 00H ;左邊輸入 八位字符顯示 </p><p>  ;外部譯碼鍵掃描方式,雙鍵互鎖 </p><p>  LEDFEQ EQU 2FH ;掃描速率 </p><p>  LEDCLS E

40、QU 0C1H ;清除顯示 RAM </p><p>  LEDWR0 EQU 80H ;設(shè)定的將要寫入的顯示RAM地址 </p><p>  READKB EQU 40H ;讀 FIFO RAM 地址 0 的命令字 </p><p>  ORG 0000H </p><p>  AJMP START

41、</p><p>  ORG 0040H </p><p><b>  START: </b></p><p>  MOV SP,#60H </p><p>  LCALL INIT8279 ;初始化8279 </p><p>  MOV SCON,#50H ;串口

42、方式 1 </p><p>  MOV TMOD,#20H ;T1 方式 1 </p><p>  MOV TL1,#0FDH ;波特率 9600 的常數(shù) </p><p>  MOV TH1,#0FDH </p><p>  SETB TR1 ;開中斷 </p><

43、;p><b>  SETB ET1 </b></p><p><b>  SETB EA</b></p><p><b>  WAIT: </b></p><p>  JBC RI,DIS_REC ;是否接收到數(shù)據(jù) </p><p>  LCALL GETK

44、EY ;讀鍵盤 </p><p>  CJNE A,#0FFH,WAIT ;是否有鍵輸入 </p><p>  MOV SBUF,B ;串口輸出鍵盤輸入的值 </p><p><b>  NOP </b></p><p>  SS: JBC TI,WAIT ;是

45、否發(fā)送完畢 </p><p><b>  SJMP SS </b></p><p><b>  DIS_REC: </b></p><p>  MOV A,SBUF ;讀串口接收到的數(shù)據(jù) </p><p><b>  CLR C </b></p>

46、;<p>  SUBB A,#30H ;以下判定輸入是否在0-F </p><p><b>  JC ERROR </b></p><p>  SUBB A,#0AH </p><p>  JNC DIS_REC1 </p><p>  ADD A,#0AH </p>&l

47、t;p>  SJMP DIS_REC2 </p><p>  DIS_REC1: </p><p>  SUBB A,#7H </p><p><b>  JC ERROR </b></p><p>  SUBB A,#6H </p><p>  JNC ERROR </p>

48、<p>  ADD A,#10H </p><p>  DIS_REC2: </p><p>  MOV R4,#00H </p><p><b>  MOV R5,A </b></p><p>  LCALL DISLED ;顯示輸入的數(shù)字(0-F) </p><p>

49、;  ERROR: AJMP WAIT </p><p>  INIT8279: ;8279初始化子程序 </p><p>  PUSH DPH ;保存現(xiàn)場 </p><p><b>  PUSH DPL </b></p><p><b>  PUSH ACC

50、</b></p><p>  LCALL DELAY ;延時(shí) </p><p>  MOV DPTR ,#Z8279 </p><p>  MOV A,#LEDMOD ;置8279工作方式 </p><p>  MOVX @DPTR,A </p><p>  MOV A,

51、#LEDFEQ ;置鍵盤掃描速率 </p><p>  MOVX @DPTR,A </p><p>  MOV A,#LEDCLS ;清除 LED 顯示 </p><p>  MOVX @DPTR,A </p><p>  POP ACC ;恢復(fù)現(xiàn)場 </p><

52、p><b>  POP DPL </b></p><p><b>  POP DPH </b></p><p><b>  RET </b></p><p><b>  ;讀取鍵盤子程序 </b></p><p>  ;輸入: 無 ; 輸出: B:

53、讀到的鍵碼 A: 按鍵的標(biāo)志 </p><p>  GETKEY: PUSH DPH ;保存現(xiàn)場 </p><p><b>  PUSH DPL </b></p><p><b>  PUSH PSW </b></p><p>  MOV DPTR,#Z8279 </p>&

54、lt;p>  MOVX A,@DPTR ;讀8279狀態(tài) </p><p>  ANL A,#07H ;屏蔽D7-D3 </p><p>  JNZ GETVAL ;判斷是否有鍵輸入 </p><p>  MOV A,#0H ;置標(biāo)志(無鍵輸入) </p>&l

55、t;p>  SJMP NKBHIT </p><p><b>  GETVAL: </b></p><p>  MOV A,#READKB ;讀 FIFO RAM 命令 </p><p>  MOVX @DPTR,A </p><p>  MOV DPTR,#D8279 </p>&l

56、t;p>  MOVX A,@DPTR ;讀鍵 </p><p>  ANL A,#0FH ;屏蔽 SHIFT 和 CTRL 鍵 </p><p>  MOV DPTR,#KEYCODE ;鍵碼表起始地址 </p><p>  MOVC A,@A+DPTR ;查表 </p><p&

57、gt;  MOV B,A ;置返回鍵值 </p><p>  MOV A,#0FFH ;置標(biāo)志(有鍵輸入) </p><p><b>  NKBHIT: </b></p><p>  POP PSW ;恢復(fù)現(xiàn)場 </p><p><b>

58、;  POP DPL </b></p><p><b>  POP DPH </b></p><p><b>  RET </b></p><p>  ;顯示字符子程序 輸入: R4,位置 R5,值</p><p>  DISLED: PUSH DPH ;保存現(xiàn)場 <

59、/p><p><b>  PUSH DPL </b></p><p><b>  PUSH ACC </b></p><p>  MOV A,#LEDWR0 ;置顯示起始地址 </p><p>  ADD A,R4 ;加位置偏移量 </p><

60、;p>  MOV DPTR,#Z8279 </p><p>  MOVX @DPTR,A ;設(shè)定顯示位置 </p><p>  MOV DPTR,#LEDSEG ;置顯示常數(shù)表起始位置 </p><p><b>  MOV A,R5 </b></p><p>  MOVC A,@A+DP

61、TR ;查表 </p><p>  MOV DPTR,#D8279 </p><p>  MOVX @DPTR,A ;顯示數(shù)據(jù) </p><p>  POP ACC ;恢復(fù)現(xiàn)場 </p><p><b>  POP DPL </b></p><

62、;p><b>  POP DPH </b></p><p><b>  RET </b></p><p>  DELAY: ;延時(shí)子程序 </p><p>  PUSH 0 ;保存現(xiàn)場 </p><p><b>  PUSH

63、 1 </b></p><p>  MOV 0,#0H </p><p>  DELAY1: MOV 1,#0H </p><p><b>  DJNZ 1,$ </b></p><p>  DJNZ 0,DELAY1 </p><p>  POP 1

64、;恢復(fù)現(xiàn)場 </p><p><b>  POP 0 </b></p><p><b>  RET </b></p><p>  ;LED顯示常數(shù)表 </p><p>  LEDSEG: DB 3FH,06H,5BH,4FH,66H,6DH,7DH,07H ;'0,1,2,3,4,5,6,7

65、' </p><p>  DB 7FH,6FH,77H,7CH,39H,5EH,79H,71H ;'8,9,A,B,C,D,E,F' </p><p>  DB 0BFH,086H,0DBH,0CFH,0E6H,0EDH,0FDH,087H ;'0.,1.,2.,3.,4.,5.,6.,7.' </p><p>  DB 0F

66、FH,0EFH,0F7H,0FCH,0B9H,0DEH,0F9H,0F1H ;'8.,9.,A.,B.,C.,D.,E.,F.' </p><p>  DB 6DH,02H,08H,00H,59H,0FH,76H ;'U,-,_, ,I,O,P, ' </p><p><b>  ;鍵盤鍵碼表 </b></p><p

67、>  KEYCODE:DB 30H,31H,32H,33H,34H,35H,36H,37H ;'1,2,Q,W,A,S,+,Z' </p><p>  DB 38H,39H,41H,42H,43H,44H,45H,46H ;'3,4,E,R,D,F,X,C' </p><p>  DB 47H,48H,49H,4AH,4BH,4CH,4DH,4EH ;

68、'5,6,T,Y,G,H,V,B' </p><p><b>  END </b></p><p><b>  結(jié) 束 語</b></p><p>  經(jīng)過一段時(shí)間的收集資料,我的應(yīng)用設(shè)計(jì)終于完成,看著自己的成果,有說不出的感觸。通過這段時(shí)間的努力,對我這學(xué)期的學(xué)習(xí)有了系統(tǒng)的總結(jié),對我自己感興趣的知識也有了

69、一些進(jìn)步。</p><p>  本設(shè)計(jì)就是采用MCS-51系列單片機(jī),利用8031單片機(jī)串行口,實(shí)現(xiàn)與PC機(jī)通訊。本設(shè)計(jì)中包括了單片機(jī)通訊的編制,串行通訊的硬環(huán)境,數(shù)據(jù)格式的協(xié)議,數(shù)據(jù)交換的協(xié)議等多方面的知識,在這個(gè)單片機(jī)串行口與PC機(jī)通訊設(shè)計(jì)中,我主要是說明它的原理和應(yīng)用,然后用一個(gè)相對簡單的實(shí)驗(yàn)來實(shí)現(xiàn)這個(gè)功能。通過這次設(shè)計(jì)使我對這一學(xué)期所學(xué)的知識更加的系統(tǒng)化、深層次化。通過這次設(shè)計(jì)學(xué)會了分析問題、處理問題的方

70、法,可以說達(dá)到了舉一反三的目的。為以后工作、學(xué)習(xí)都打下了比較堅(jiān)實(shí)的基礎(chǔ)。</p><p>  這次實(shí)習(xí)設(shè)計(jì)與以往的差異很大,這樣的應(yīng)用設(shè)計(jì)是我第一次做,一開始覺得無從下手,找了好多資料,發(fā)現(xiàn)其實(shí)自己的思想被定固在書本理論上了,個(gè)人的潛能也沒有開發(fā)出來。由于時(shí)間比較倉促,并且理論知識掌握的不是很扎實(shí),在這第一篇設(shè)計(jì)中我只是更多的去說明和實(shí)現(xiàn)了一個(gè)功能,而沒能創(chuàng)新擴(kuò)展它。而在這次應(yīng)用設(shè)計(jì)中,我明白了作為一個(gè)實(shí)用設(shè)計(jì)系

71、統(tǒng),我們應(yīng)該從設(shè)計(jì)者的角度去分析、思考、解決問題的,以實(shí)現(xiàn)一個(gè)實(shí)際的產(chǎn)品為目的而進(jìn)行具體設(shè)計(jì)的。</p><p>  總之,我們在設(shè)計(jì)過程中學(xué)到了許多。作為現(xiàn)代的大學(xué)生,如果僅停留在以往的層次上,是遠(yuǎn)遠(yuǎn)跟不上時(shí)代的步伐,也無法使自己立足在競爭如此激烈的社會里,通過此實(shí)驗(yàn),讓我看到了自己的水平和差距,雖然我們有很多不足,但是在我們的努力下,彌補(bǔ)了我們的缺憾。此次學(xué)習(xí)使我受益匪淺。從中學(xué)到很多以前沒有接觸到的錯誤,及

72、其解決辦法和某些程序的設(shè)計(jì)方法。增加了自己在編程方面的功底。.同時(shí)我非常感謝我們的xx老師對我們的幫助和悉心的指導(dǎo)。</p><p><b>  參考文獻(xiàn)</b></p><p>  [1] 張鑫,《單片機(jī)原理及應(yīng)用》。 電子工業(yè)出版社,2005</p><p>  [2] 席先覺,《MCS-51單片機(jī)實(shí)用子程序集》。高等教育出版社,1992.

73、8</p><p>  [3] 張振榮,《MCS-51單片機(jī)原理及實(shí)用技術(shù)》。 人民郵電出版社,2000</p><p>  [4] 周航慈,饒運(yùn)濤,《單片機(jī)程序設(shè)計(jì)基礎(chǔ)》。 北京航空航天大學(xué)出版社,1997.5</p><p>  [5] 李朝青,《PC機(jī)與單片機(jī) & DSP數(shù)據(jù)通信技術(shù)選編》。北京航空航天大學(xué)出版社,2003</p><

溫馨提示

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

評論

0/150

提交評論