




版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領(lǐng)
文檔簡介
..引言AT89C51是一款高性能的8位單片微型計算機,它采用了CMOS工藝和ATMEL公司的高密度NVRAMUII<易失性隨機存儲器>技術(shù),片內(nèi)帶有一個4KB的FLASHFPROM<可擦除、可編程只讀存儲器>,作為INTEL8051的換代產(chǎn)品,其輸出引腳和指令系統(tǒng)與MCS一51完全兼容。由于AT89C51單片機具有集成度高、面向控制、系統(tǒng)結(jié)構(gòu)簡單、價格便宜等諸多優(yōu)點,因而在智能化儀器儀表、數(shù)據(jù)采集、數(shù)據(jù)測量等方面有著廣泛的應(yīng)用。但是,實際應(yīng)用中單片機在數(shù)據(jù)處理能力、人機交互等方面往往不能滿足要求,因而通常用PC來彌補單片機的這些不足。例如,在工程應(yīng)用中,常常由一臺PC機和一臺單片機構(gòu)成主從式計算機測控系統(tǒng)。在這樣的系統(tǒng)中,以單片機為核心的智能測控儀表<從機>作為現(xiàn)場測控設(shè)備,完成數(shù)據(jù)的采集、處理和控制各種任務(wù),同時將數(shù)據(jù)傳給PC機<主機>,PC機將這些數(shù)據(jù)加工處理后,進行顯示、打印報表等,PC機也可以將各種控制命令傳送給單片機,干預(yù)單片機系統(tǒng)的運行,從而發(fā)揮PC機的優(yōu)勢。隨著單片機和微機技術(shù)的不斷發(fā)展,特別是網(wǎng)絡(luò)技術(shù)在測控領(lǐng)域的廣泛應(yīng)用,由PC機和多臺單片機構(gòu)成的多機網(wǎng)絡(luò)測控系統(tǒng)已成為單片機技術(shù)發(fā)展的一個方向。它結(jié)合了單片機在實時數(shù)據(jù)采集和微機對圖形處理、顯示的優(yōu)點。同時,windows環(huán)境下后臺微機在數(shù)據(jù)庫管理上具有明顯的優(yōu)勢。二者結(jié)合,使得單片機的應(yīng)用已不僅僅局限于傳統(tǒng)意義上的自動監(jiān)測或控制,而形成了向以網(wǎng)絡(luò)為核心的分布式多點系統(tǒng)發(fā)展的趨勢。1總體方案設(shè)計單片機鍵盤LCD串行通信電平轉(zhuǎn)換接口PC發(fā)聲電路硬件由單片機89C51、11.059M晶振,30PF電容、22uf/25V電容、10uf/25V電容10K電阻、LCM1601、4×4鍵盤、LM386、蜂鳴器、按鍵、Max232組成。具體可實現(xiàn)由AT單片機鍵盤LCD串行通信電平轉(zhuǎn)換接口PC發(fā)聲電路圖1-1系統(tǒng)結(jié)構(gòu)圖LCD:系統(tǒng)顯示界面采用LCM1601,一行16字符的液晶顯示模塊,顯示AT89C51接收或PC發(fā)來的數(shù)據(jù)。鍵盤:輸入按鍵采用4行4列非編碼矩陣鍵盤,配合液晶界面用于和PC機通信。發(fā)聲電路:發(fā)聲電路采用LM386作為音頻放大電路,在有按鍵按下的時候會發(fā)出相應(yīng)的按鍵音。串行通信電平轉(zhuǎn)換接口:AT89C51與PC間的串行數(shù)據(jù)通信采用的是最簡單的TxD,RxD,GND三線制連接,從單片機TX和RX端CMOS電平到PC的標準RS-232電平的轉(zhuǎn)換器件選用Maxim的Max232。2硬件電路設(shè)計總電路圖見附錄C。2.1單片機AT89C51AT89C51是一種帶4K字節(jié)閃爍可編程可擦除只讀存儲器〔FPEROM—FalshProgrammableandErasableReadOnlyMemory的低電壓,高性能CMOS8位微處理器,俗稱單片機。該器件采用ATMEL高密度非易失存儲器制造技術(shù)制造,與工業(yè)標準的MCS-51指令集和輸出管腳相兼容。由于將多功能8位CPU和閃爍存儲器組合在單個芯片中,ATMEL的AT89C51是一種高效微控制器,為很多嵌入式控制系統(tǒng)提供了一種靈活性高且價廉的方案。AT89C51的管腳圖如圖2-1所示。圖2-1AT89C51的管腳圖主要特性:..·與MCS-51兼容·4K字節(jié)可編程閃爍存儲器·壽命:1000寫/擦循環(huán)·數(shù)據(jù)保留時間:10年·全靜態(tài)工作:0Hz-24Hz·三級程序存儲器鎖定·128*8位內(nèi)部RAM·32可編程I/O線·兩個16位定時器/計數(shù)器·5個中斷源·可編程串行通道·低功耗的閑置和掉電模式·片內(nèi)振蕩器和時鐘電路..管腳說明:VCC:供電電壓。 GND:接地。P0口:P0口為一個8位漏級開路雙向I/O口,每腳可吸收8TTL門電流。當P1口的管腳第一次寫1時,被定義為高阻輸入。P0能夠用于外部程序數(shù)據(jù)存儲器,它可以被定義為數(shù)據(jù)/地址的第八位。在FIASH編程時,P0口作為原碼輸入口,當FIASH進行校驗時,P0輸出原碼,此時P0外部必須被拉高。P1口:P1口是一個內(nèi)部提供上拉電阻的8位雙向I/O口,P1口緩沖器能接收輸出4TTL門電流。P1口管腳寫入1后,被內(nèi)部上拉為高,可用作輸入,P1口被外部下拉為低電平時,將輸出電流,這是由于內(nèi)部上拉的緣故。在FLASH編程和校驗時,P1口作為第八位地址接收。P2口:P2口為一個內(nèi)部上拉電阻的8位雙向I/O口,P2口緩沖器可接收,輸出4個TTL門電流,當P2口被寫"1”時,其管腳被內(nèi)部上拉電阻拉高,且作為輸入。并因此作為輸入時,P2口的管腳被外部拉低,將輸出電流。這是由于內(nèi)部上拉的緣故。P2口當用于外部程序存儲器或16位地址外部數(shù)據(jù)存儲器進行存取時,P2口輸出地址的高八位。在給出地址"1P3口:P3口管腳是8個帶內(nèi)部上拉電阻的雙向I/O口,可接收輸出4個TTL門電流。當P3口寫入"1”P3口也可作為AT89C51的一些特殊功能口,如表2-1所示:表2-1P3口的一些特殊功能口口管腳備選功能P3.0RXD〔串行輸入口P3.1TXD〔串行輸出口P3.2/INT0〔外部中斷0P3.3/INT1〔外部中斷1P3.4T0〔記時器0外部輸入P3.5T1〔記時器1外部輸入P3.6/WR〔外部數(shù)據(jù)存儲器寫選通P3.7/RD〔外部數(shù)據(jù)存儲器讀選通P3口同時為閃爍編程和編程校驗接收一些控制信號。RST:復(fù)位輸入。當振蕩器復(fù)位器件時,要保持RST腳兩個機器周期的高電平時間。ALE/PROG:當訪問外部存儲器時,地址鎖存允許的輸出電平用于鎖存地址的地位字節(jié)。在FLASH編程期間,此引腳用于輸入編程脈沖。在平時,ALE端以不變的頻率周期輸出正脈沖信號,此頻率為振蕩器頻率的1/6。因此它可用作對外部輸出的脈沖或用于定時目的。然而要注意的是:每當用作外部數(shù)據(jù)存儲器時,將跳過一個ALE脈沖。如想禁止ALE的輸出可在SFR8EH地址上置0。此時,ALE只有在執(zhí)行MOVX,MOVC指令是ALE才起作用。另外,該引腳被略微拉高。如果微處理器在外部執(zhí)行狀態(tài)ALE禁止,置位無效。/PSEN:外部程序存儲器的選通信號。在由外部程序存儲器取指期間,每個機器周期兩次/PSEN有效。但在訪問外部數(shù)據(jù)存儲器時,這兩次有效的/PSEN信號將不出現(xiàn)。/EA/VPP:當/EA保持低電平時,則在此期間外部程序存儲器〔0000H-FFFFH,不管是否有內(nèi)部程序存儲器。注意加密方式1時,/EA將內(nèi)部鎖定為RESET;當/EA端保持高電平時,此間內(nèi)部程序存儲器。在FLASH編程期間,此引腳也用于施加12V編程電源〔VPP。XTAL1:反向振蕩放大器的輸入及內(nèi)部時鐘工作電路的輸入。XTAL2:來自反向振蕩器的輸出。AT89C51的時序:AT89C51的振蕩器輸入分別有引腳19〔XTAL1和引腳18〔XTAL2來完成。只要將這兩個引腳接石英晶體和陶瓷電容,如圖圖2-2所示,就可以與CPU內(nèi)部組成完整的振蕩電路。AT89C51的一個機器周期含有6個狀態(tài)周期,而每個狀態(tài)周期為2個振蕩周期,因此一個機器周期共有12個振蕩周期,如振蕩器的頻率為12MHZ,一個振蕩器周期為1/12微秒,而一個機器周期為1微秒。CCXTAL11918石英晶體XTAL2AT89C51C圖2-2AT89C51的振蕩電路在本設(shè)計中石英晶體的頻率為11.0592MHZ,陶瓷電容的取值為30PF。AT89C51的復(fù)位: 單片機微處理器的復(fù)位都是以外部電路來執(zhí)行的,在CLOCK工作后,只要在RESET引腳上接上10MS以上的高電平,單片機微處理器便執(zhí)行狀態(tài)復(fù)位。寄存器的復(fù)位單片機在RESET為高電平控制下,程序計數(shù)器〔PC和特殊功能寄存器的復(fù)位如表2-2所示。單片機的復(fù)位并不影響芯片內(nèi)部RAM狀態(tài),只要RESET引腳保持高電平,單片機將循環(huán)復(fù)位。在復(fù)位有效期內(nèi),ALE,PSEN將輸出高電平。表2-2寄存器復(fù)位后的狀態(tài)寄存器復(fù)位狀態(tài)寄存器復(fù)位狀態(tài)PC0000HTMOD00HACC00HTCON00HB00HTH000HPSW00HTL000HSP07HTH100HDPTR0000HTL100HP0~P3FFHSCON00HIP〔×××00000SBUF〔××××××××IE〔0××00000PCON〔0×××0000二、復(fù)位電路簡單復(fù)位電路中,干擾易串入復(fù)位端,在大多數(shù)情況下不會造成單片機的錯誤復(fù)位,但會引起內(nèi)部某些寄存器的錯誤復(fù)位,可以在RESET引腳上接上一個去耦電容。為了保證復(fù)位電路的可靠性,常將RC電路接斯密特電路后再接入單片機和外圍IC的RESET引腳,如圖2-3所示。圖2-3AT89C51的復(fù)位電路AT89C51的串行口:〔1基本概念數(shù)據(jù)通信的傳輸方式:常用于數(shù)據(jù)通信的傳輸方式有單工、半雙工、全雙工和多工方式。A.單工方式:數(shù)據(jù)僅按一個固定的方向傳送。因為這種傳輸方式的用途有限,常用于串行口的打印數(shù)據(jù)傳輸與簡單系統(tǒng)間的數(shù)據(jù)采集。B.雙工方式:數(shù)據(jù)可以實現(xiàn)雙向傳送,但不能同時進行,實際的應(yīng)用采用某種協(xié)議實現(xiàn)收發(fā)開關(guān)轉(zhuǎn)換。C.全雙工方式:允許雙方同時進行數(shù)據(jù)雙向傳送,但一般全雙工電路的線路和設(shè)備比較復(fù)雜。D.多工方式:以上三種傳輸方式都是同一線路傳輸一種頻率信號,為了充分的利用線路資源,可通過使用多路復(fù)用器或多路集線器,采用頻分、時分、或碼分復(fù)用技術(shù),即可實現(xiàn)在同一線路上資源共享功能,我們稱之為多工傳輸方式。串行通信的兩種通信形式A.異步通信在這種通信方式中,接收器和發(fā)射器有各自的時鐘,他們的工作是非同步的,異步通信用一幀來表示一個字符,其內(nèi)容如下:一個起始位,緊接著是若干個數(shù)據(jù)位,圖是傳輸45H的數(shù)據(jù)格式。B.同步通信同步通信格式中,發(fā)送器和接收器由同一個時鐘源控制,為了克服在異步傳輸中,每傳輸一幀字符都必須加上起始位和停止位,占用了傳輸時間,在要求傳送的數(shù)據(jù)量較大的〔2MCS-51的串行和控制寄存器MCS-51單片機串行口專用寄存器的SBUF為串行口的收發(fā)緩沖器,它是一個可尋址的專用寄存器,其中包含了接收器和發(fā)射器寄存器,可以實現(xiàn)全雙工通信。但這兩個寄存器具有同一地址〔99H。MCS-51的串行數(shù)據(jù)傳輸很簡單,只要向緩沖器寫入數(shù)據(jù)就可發(fā)送數(shù)據(jù)。而從接收緩沖器讀出數(shù)據(jù)既可接收數(shù)據(jù)。此外,接收緩沖器前還加上一級輸入移位寄存器,MCS-51這種結(jié)構(gòu)的目的在于接收數(shù)據(jù)時避免發(fā)生重疊現(xiàn)象,文獻稱這種結(jié)構(gòu)為雙緩沖結(jié)構(gòu)。而發(fā)送數(shù)據(jù)就不需要這樣設(shè)計,因為發(fā)送時,CPU是主動的,不可能出現(xiàn)這種情況。串行通信控制寄存器〔SCON,它是一個可尋址的專用寄存器,用于串行數(shù)據(jù)通信的控制,單元地址是98H,其結(jié)構(gòu)格式如表2-3所示。表2-3SCON寄存器結(jié)構(gòu)SCOND7D6D5D4D3D2D1D0SM0SM1SM2RENTB8RB8TIRI位地址9FH9EH8DH9CH9BH9AH99H98H下面我們對SCON控制位功能介紹如表2-4所示。1SM0、SM1:串行口工作方式控制位表2-4SCON控制位功能介紹SM0SM1工作方式功能說明00方式0移位寄存器方式〔用于I/O擴展01方式18位UART,波特率可變〔T1溢出率/n10方式29位UART,波特率為fosc/64或fosc/3211方式39位UART,波特率可變〔T1溢出率/n2SM2:多機通信控制位多機通信是工作方式2和方式3,SM2位主要用于方式2和方式3。接收狀態(tài),當串行口工作方式2或3,以及SM2=1時,只有當接收到第9位數(shù)據(jù)〔RB8為1時,才把接收的前8位數(shù)據(jù)送入SBUF,且置位RI發(fā)出中斷申請,否則會將收到的數(shù)據(jù)放棄。當SM2=0時,只有在接收到有效停止位時才啟動RI,若沒接收到有效停止位,則RI清"0"。在方式0中SM2應(yīng)該為"0"。REN:允許接收控制位。由軟件置"1”時,允許接收;軟件置"0”時,不許接收。TB8:在方式3和方式3中要發(fā)送的第9位數(shù)據(jù),需要時用軟件置位和清零。TB8:在方式2和方式3中是接收到的第9位數(shù)據(jù)。在方式1時,如SM2=0,RB8接收到的停止位。在方式0中,不使用RB8。TI:發(fā)送中斷標志。由硬件在方式0發(fā)送完第8位時置"1”,或在其它方式中串行發(fā)送停止位的開始時置"1”。必須由軟件清"0”。RI:接收中斷標志。由硬件在方式0串行發(fā)射第8位結(jié)束時置"1”B:特殊功能寄存器PCONPCON:主要是是CHMOS型單片機的電源控制而設(shè)置的專用寄存器,單元地址為87H其機構(gòu)格式如表2-5所示。表2-5特殊功能寄存器PCONPCOND7D6D5D4D3D2D1D0位符號SMOD———GF1GF0PDIDL在CHMOS型單片機中,除SMOD位外其它位均為虛設(shè)的,SMOD是串行波特率倍增位,當SMOD=1時串行口波特率加倍,系統(tǒng)復(fù)位默認為SMOD=0。這里重述一下中斷允許寄存器IE對串行口有影響的位ES。ES為串行中斷允許控制位,ES=1允許串行中斷,ES=0,禁止串行中斷。如表2-6所示。表2-6中斷允許寄存器符號EA——ESET1EX1ETOEX0位地址AFHAEHADHACHABHAAHA8HA8H 〔3串行口工作方式串行口具有4種工作方式,我從應(yīng)用和畢業(yè)設(shè)計的角度,重點討論方式1發(fā)送。串行口定義為方式1時傳送1幀數(shù)據(jù)為10位,其中1位起始地址、8位數(shù)據(jù)位〔先低位后高位、1位停止位方式1的波特率可變,波特率=<T1的溢出率>2.2LCM1601LCM1601是一款兼容的液晶顯示模塊,支持5×7點陣和16字×2行符兩種模式,背光亮度和顯示對比度可調(diào),是一種功能較簡易、價格較便宜的液晶顯示器件。它由液晶顯示屏和驅(qū)動器兩部分組成,單片機通過寫控制字方式訪問它的驅(qū)動器來實現(xiàn)對顯示屏的控制。 圖2-4所示為LCM1601封裝圖。圖2-4LCM1601封裝圖 器件封裝為單列DIP16,引腳定義如表2-7所示。表2-7LCM1601引腳說明編號標示引腳說明1VSS電源地2VDD電源正極3V0液晶顯示偏壓4RS指令/數(shù)據(jù)選擇端〔H/L5R/W讀/寫選擇端6E使能信號7D08位數(shù)據(jù)總線8D19D210D311D412D513D614D715LED+背光源正極16LED-背光源負極2.34×4行列式掃描鍵盤 簡易的行列式鍵盤不需要借助其他的I/O擴展芯片,直接占用P1的8條口線,再利用單片機內(nèi)部的軟件來配合實現(xiàn)4×4掃描鍵盤,其特點是簡單且不增加成本,通常在系統(tǒng)I/O線充裕的情況下采用。2.4音頻功率放大器件LM386LM386的接腳圖如圖2-8所示。LM386是專為低損耗電源所設(shè)計的功率放大器。它的內(nèi)建增益為20,透過pin1和pin8腳位間電容的搭配,增益最高可達200。LM386輸入電壓范圍可由4V~12V,無作動時僅消耗4mA電流,且失真低。圖2-8接腳圖2.5RS-232電平轉(zhuǎn)換器件Max232MAX232芯片是MAXIM公司生產(chǎn)的,包含兩路接收器和驅(qū)動器的IC芯片。MAX232芯片內(nèi)部有一個電源電壓轉(zhuǎn)換器,可以把輸入的+5V電壓變換為RS-232輸出電平所需的一1O~+10V電壓。所以采用此芯片接口串行通信系統(tǒng)只需單一的+5V電源就可以了。對于沒有一12~+12V的場合,其適應(yīng)性更強。加之其價格適中,硬件接口簡單,所以被廣泛采用。圖2-9所示為Max232的封裝圖。圖2-9Max232封裝圖引腳說明如表2-8所示。表2-8Max232引腳說明VCC供電電壓GND地C+、C-外圍電容T1IN第一路TTL/CMOS驅(qū)動電平輸入T1OUT第一路RS-232電平輸出R1IN第一路RS-232電平輸入R1OUT第一路TTL/CMOS驅(qū)動電平輸出T2IN第二路TTL/CMOS驅(qū)動電平輸入T2OUT第二路RS-232電平輸出R2IN第二路RS-232電平輸入R2OUT第二路TTL/CMOS驅(qū)動電平輸出3部分器件的原理分析3.1鍵盤掃描的工作原理 簡易的行列式鍵盤不需要借助其他的I/O擴展芯片,直接占用P1的8條口線,再利用單片機內(nèi)部的軟件來配合實現(xiàn)4行4列的掃描鍵盤,其特點是簡單且不增加成本,通常在系統(tǒng)I/O線充裕的情況下采用。其原理圖如圖3-1所示。圖3-1原理圖 工作原理:I/O口P2.7~P2.1充當列選線,P2.3~P2.1充當行選線。在鍵盤開始掃描的時候,首先向P2口賦行掃描初值7FH,令第一行〔P2.3為0,從第一行開始檢測。接下來檢測第一行的第一列是否鍵按下?沒有按下,則檢測第二列,如果4列掃描完畢,沒有鍵按下,則掃描下一行,如此往復(fù),直至4行4列檢測完畢。當有鍵按下時,相應(yīng)的列選線電平被拉低,首先掃描行選線,確定按鍵的行號,然后掃描列選線,確定列號,則按鍵的編號即可確定。3.2按鍵發(fā)聲原理要產(chǎn)生音頻脈沖,只要算出某一音頻的周期,然后將此周期除以2,即為半周期的時間,利用定時器計時這個半周期時間,每當計時到后就將輸出脈沖的I/O反相,然后重復(fù)計時此半周期時間再對I/O反相,就可在I/O引腳上得到此頻率的脈沖。計數(shù)脈沖值與頻率的關(guān)系公式如下:N=Fi÷2÷Fr N:計數(shù)值;Fi:內(nèi)部計時一次為1us,故其頻率為1MHZ;Fr:要產(chǎn)生的頻率。其計數(shù)值的求法如下:T=65536-N=65536-Fi÷2÷Fr表3-1是各按鍵音符的頻率與計數(shù)值T的對照表。表3-1各按鍵音符頻率與計數(shù)值T的對照表鍵值音符頻率〔HZ簡譜碼〔T值鍵值音符頻率〔HZ簡譜碼〔T值0低3M330640218中4FA698648201低4FA349641039中5SO784648982低5SO39264260A中6LA880649683低6LA44064400B中7SI988650304低7SI49464524C高1D0946650585中1D052364580D高2RE1175651106中2RE58764684E高3M1318651577中3M65964777F高4FA1397651784單片機軟件設(shè)計軟件的設(shè)計是我畢業(yè)設(shè)計的另一個重要方面。它的好壞直接關(guān)系畢業(yè)設(shè)計的成功與否。我等軟件是用匯編完成的,需要能熟練的掌握匯編語言,還要熟悉AT89C51單片機。程序流程圖是編寫軟件的重要前提,它是在圖表上直觀的體現(xiàn)擬設(shè)計的目的及過程。也是編譯的重要依據(jù),按照流程圖一步一步編寫程序,單片機軟件主程序流程圖如圖4-1所示。是是否否是開始LCD初始化設(shè)置串口初始化收到數(shù)據(jù)?檢測按鍵輸入讀入鍵值轉(zhuǎn)換成鍵碼串口發(fā)送鍵碼LCD顯示并發(fā)聲接收數(shù)據(jù)送LCD顯示圖4-1主程序流程圖4.1CM1601軟件 LCD1601是通用的點陣型液晶模塊,分4位和8位數(shù)據(jù)傳輸方式。提供5X7點陣+光標和5X10點陣+光標的顯示模式。除帶有驅(qū)動IC外,還自帶液晶顯示控制IC,其本身就是一個能夠接受指令,自動控制液晶顯示的單片微機子系統(tǒng)。因此,通過軟件編程,就可以實現(xiàn)對LCM1601的操作。編程時要求CPU每一次訪問都要先對忙標志BF進行識別,當BF=0時,即LDC允許CPU訪問時,再進行下一步的操作。操作程序如下:4.2.1寫指令 ENABLE: MOV P1,#0FFH ;令P1=FFH CLR RS ;RS=0,R/W=1,讀BUSYFLAG地址計數(shù)器SETB RWCLR ENOPSETB EP1.7,ENABLE ;BUSYFLAG=0? CLR RS ;RS=0,R/W=0寫入指令組CLR RWCLR ECALL DELAYSETB ERET4.2.2寫數(shù)據(jù)WRITE1: MOV R1,#00H ;顯示TABLE表的值A(chǔ)3: MOV A,R1 ;至TABLE取碼MOVC A,A+DPTR CALL WRITE2 ;顯示至LCDINC R1 CJNE A,#00H,A3 ;是否取到"00H"結(jié)束碼?RETWRITE2: MOV P1,A ;顯示數(shù)據(jù)送至P1 SETB RS ;RS=1,R/W=0寫入數(shù)據(jù)寄存器顯示CLR RWCLR ECALL DELAYSETB ERET4.2.3LCD1601初始化 MOV P1,#01H ;清除屏幕CALL ENABLE MOV P1,#38H ;功能設(shè)定〔8位,2行,5×7點矩陣CALL ENABLE MOV P1,#08H ;顯示器ON,光標ON,閃爍ONCALL ENABLE MOV P1,#06H ;光標右移 CALL ENABLEMOV P1,#80H;令光標回到第一行第一個字位置CALL ENABLE4.2串口通信子程序設(shè)計AT89C51的串行口是全雙工的UART,它可同時發(fā)送和接收數(shù)據(jù),是使用特殊寄存器內(nèi)的SBUF寄存器及SCON串行控制寄存器,如表4-1所示。表4-1SCON串行控制寄存器 RI:接收中斷標志位。在模式0下,當?shù)?位結(jié)束時,硬件會將其設(shè)為1;在其他模式下,在停止位的開始時有硬件設(shè)定,次位必須由軟件清除。 TI:發(fā)送中斷標志位。在模式0下,當?shù)?位結(jié)束時,硬件會將其設(shè)為1;在其他模式下,在停止位的開始時由硬件設(shè)定,次位必由軟件清除。 RB8:在模式2或3時,發(fā)送的第9位放入次位。在模式1時,若SM2=0,則RB8為接收到的停止位。模式0時,RB8沒作用。 TB8:在模式2或3時,發(fā)送時的第9位數(shù)據(jù)位由軟件控制。 REN:由軟件設(shè)定或清除,以決定是否接收串行輸入數(shù)據(jù),REN=1,接收;REN=0,發(fā)送。 SM2:當串行口為模式2或3時,使能多處理器通信的功能。在模式2或3時,如果SM2=1,則當接收到第9位數(shù)據(jù)為0時,RI不動作。在模式1時,若SM2=1,當接收到的停止位不正確時,RI也不動作。在模式0時,SM2必須為0。 SM1:串行口模式選擇。 SM0:串行口模式選擇。 UART共有四種工作方式,MODE0可發(fā)送或接收8位的數(shù)據(jù);MODE1可發(fā)送或接收10的數(shù)據(jù);MODE2K可發(fā)送或接收11的數(shù)據(jù);MODE3與MODE2的功能幾乎完全一樣,不同的是MODE2的發(fā)送速率固定,而MODE3是可變的。現(xiàn)在就本文中用到的MODE1作一重點介紹。MODE1其設(shè)定如下: MOV SCON,#00000000B ;發(fā)送數(shù)據(jù)工作方式 C TI,LOOP ;發(fā)送是否完畢?是則跳至LOOP,并清除TI=0 MOV SCON,#00010000B ;接收數(shù)據(jù)工作方式 C RI,LOOP ;接收是否完畢?是則跳至LOOP,并清除RI=0 MODE0KE可發(fā)送或接收11位的數(shù)據(jù),此10個位分別是1個起始位、8個數(shù)據(jù)位和1個停止位。MODE1發(fā)送數(shù)據(jù)的速度〔稱為波特率是可變的,由TIMER1或TIMER2控制且最好工作在MODE2〔自動載入模式,這樣只要設(shè)定TH1一次即可。當UART接收〔RXD引腳到一個字節(jié)的數(shù)據(jù)后,會使SCON寄存器內(nèi)的RI位設(shè)定為1,CPU只要檢查RI=1就可知道UART已接收到數(shù)據(jù)。若數(shù)據(jù)通過UART輸出時〔TXD引腳,在8個位輸出完畢后,SCON寄存器內(nèi)的TI位會被設(shè)為1,CPU只要檢查到TI=1就可知道可以再發(fā)送下一個字節(jié)。 控制波特率的寄存器為PCON,如表4-2所示。說明如下: PCON:電源控制寄存器〔POWERCONTROLREGISTER。表4-2電源控制寄存器 SOMD:雙倍波特率位。當串行工作于模式1、2或3時,如使用TIMER1做波特率發(fā)生器,且SMOD=1則波特率為雙倍?!罕A粑弧?GF1:一般用途,對于AT89系列,GF1為通用標志位。 GF0:一般用途,對于AT89系列,GF0為通用標志位。 PD:電源下降位,對于AT89系列,PD為1時進入掉電狀態(tài)。 IDL:IDLE模式位,對于AT89系列,IDL為1是進入空閑工作方式。 注意:PD和IDLE同時為1時,PD較優(yōu)先。 其設(shè)定方式如下:設(shè)定波特率:MOV TMOD,#00100000B ;設(shè)定TIMER1的MODE2ANL PCON,#01111110B ;設(shè)SMOD=0或ORL PCON,#10000000B ;設(shè)SMOD=1MOV TH1,#0FDH ;設(shè)定TIMER1的計數(shù)值SETB TR1 ;啟動TIMER1 〔2設(shè)定UART工作方式MOV SCON,#01010000B ;MODE1做接收,REN=1C RI,LOOP2或MOV SCON,#0100000B ;MODE做發(fā)送,REN=0C TI,LOOP2 波特率的計算:MODE0的波特率=振蕩器頻率÷12振蕩頻率=12MHZ 波特率=1MHZMODE2的波特率=〔2/64×振蕩頻率振蕩頻率=12MHZ SMOD=0 BAUD=187.5KHZ SMOD=1 BAUD=375KHZMODE1和MODE3:利用TIMER工作在MODE2模式〔自動載入產(chǎn)生的波特率為〔2/32×[振蕩頻率/〔12×〔256-TH1]常用的各種波特率如表4-2-3所示。表4-3常用的各種波特率波特率〔bit/sFosc<MHZ>SMODTimer1C/T模式自動載入480012102F3H240012002F3H120012102F6H1920011.059102FDH960011.059002FDH480011.059002FAH240011.059002F4H120011.059002F8HUART的中斷要求: 其中斷要求有兩種方式:〔1當UART的接收器〔RXD接收到一個字節(jié)的數(shù)據(jù)且將其存入SBUF寄存器后,就會將RI設(shè)定為1,而對AT89C51提出中斷要求?!?當UART的發(fā)送器將SBUF寄存器的8個位數(shù)據(jù)發(fā)送出去后,會將TI設(shè)定為1。 UART中斷要求設(shè)定的步驟:1.設(shè)定UART中斷起始地址。 ORG 23H JMP UART2.設(shè)定TIMER1工作在MODE2MOV TMOD,#00100000B3.設(shè)定波特率為2400ANL PCON,#01111111BMOV TH1,#0F3H4.啟動計時器 SETB TRX5.設(shè)定UART工作方式 MOV SCON,#01××0000B3.設(shè)定UART中斷功能 MOV IE,#10010000B4.3鍵盤掃描子程序設(shè)計鍵盤掃描的步驟: 〔1設(shè)置P1口初始值07FH; 〔2P1口右移,檢測行; 〔3P1口左移,檢測列;流程圖如圖4-2所示。鍵盤接口程序如下:MOV R3,#0F7H ;掃描初值<P2.3=0> MOV R1,#00H ;取碼指針初值D3: MOV A,R3 ;載入掃描指針 MOV P2,A ;輸出至P2,開始掃描行 MOV A,P2 ;讀入P2CLR C CPL C ;令C=1 MOV R5,#04H ;檢測列D4: RLC A ;左移一位〔P2.7~P2.4 JNC KEYIN ;檢測行C=0,表示被按 INC R1 ;沒按則取碼指針加1 DJNZ R5,D4 ;4列檢測完畢了?MOV A,R3CLR CCPL C ;C=1 RRC A ;掃描下一行,即下一行為0 MOV R3,A ;存回R3掃描指針寄存器圖4-2讀鍵輸入子程序框圖 JC D3 ;C=0表示掃描完畢RETKEYIN: MOV 22H,R1 ;取碼指針存入22H地址 MOV R7,#10 ;消除抖動D5: MOV R6,#248DJNZ R6,$DJNZ R7,D5D6: MOV A,P2 ;按鈕放開否?XRL A,R44.4按鍵發(fā)聲子程序的設(shè)計按鍵發(fā)聲子程序框圖如圖4-3所示。圖4-3按鍵發(fā)聲子程序框圖程序如下:ORG 00H ;主程序其始地址 JMP START ;跳至主程序 ORG 0BH ;TIMER0中斷其始地址 JMP TIM0 ;跳至TIMER0中斷子程序START: MOV TMOD,#00000001B ;設(shè)定TIMER0工作在MODE1 MOV IE,#10000010B ;中斷使能 SETB TR0 ;啟動TIMER0D1: CALL KEY ;調(diào)用KEY,判斷是否有按下? CLR EA ;中斷屏蔽 F0,D1 ;沒按則F0=1,沒按則F0=0 MOV A,22H ;有按則將取碼指針暫存地址的值載入A RL A ;乘2 MOV DPTR,#TABLE ;至TABLE取碼,取T的值MOVC A,A+DPTR; MOV TH0,A ;取到的高位字節(jié)存入TH0 MOV 21H,A ;取到的高位字節(jié)存入〔21H MOV A,22H ;再載入取碼指針 RL A ;乘2 INC A ;加1 MOVC A,A+DPTR;至TABLE取相對的低位字節(jié)計數(shù)值 MOV TL0,A ;取到的高位字節(jié)存入TL0 MOV 20H,A ;取到的高位字節(jié)存入〔20HD2: CALL KEY ;調(diào)用KEY,判斷是否有鍵按下 SETB EA; ;中斷使能 F0,D1 ;有按否? JMP D2; ;有則跳至D2KEY: SETB F0 ;設(shè)F0=1 MOV R3,#0F7H;掃描初值<P2.3=0> MOV R1,#00H ;取碼指針初值D3: MOV A,R3 ;載入掃描指針 MOV P2,A ;輸出至P2,開始掃描行 MOV A,P2 ;讀入P2CLR C CPL C ;令C=1 MOV R5,#04H ;檢測列D4: RLC A ;左移一位〔P2.7~P2.4 JNC KEYIN ;檢測行C=0,表示被按 INC R1 ;沒按則取碼指針加1 DJNZ R5,D4 ;4列檢測完畢了?MOV A,R3CLR CCPL C ;C=1 RRC A ;掃描下一行,即下一行為0 MOV R3,A ;存回R3掃描指針寄存器 JC D3 ;C=0表示掃描完畢RETKEYIN: MOV 22H,R1 ;取碼指針存入22H地址 CLR F0 ;令F0=0RETTIM0: PUSH ACC ;將A的值暫存于堆棧 PUSH PSW ;將PSW的值暫存于堆棧 MOV TL0,20H ;重設(shè)計數(shù)值MOV TH0,21H CPL P3.4 ;將P3.4反相 POP PSW ;至堆棧取回PSW的值 POP ACC ;至堆棧取回A的值RETITABLE: DW 64021,64103,64260,64400DW 64524,64580,64684,64777DW 64820,64898,64968,65030DW 65058,65110,65157,651785軟硬件調(diào)試及結(jié)果5.1軟件仿真軟件仿真使用的是ISIS6Professional,它可以完成單片機的電路仿真。圖5-5-1是軟件仿真的結(jié)果。圖5-1-1軟件仿真的結(jié)果5.2硬件焊接硬件的焊接是畢業(yè)設(shè)計中重要的環(huán)節(jié),用的工具很簡單:電烙鐵、焊絲和鑷子。因為我們選用的是實驗板,所以要用導(dǎo)線把各個元器件連接起來,這就要有一定的技術(shù)基礎(chǔ),幸好這個在我們以前的生產(chǎn)實習(xí)中已經(jīng)掌握。焊接要細心,還要有耐心。焊接前要對照電路圖對元器件有一個合理的布局,那樣的話就會使電路簡潔明朗,而且不易出錯,即使出錯也容易檢查。5.3調(diào)試 調(diào)試的時候,PC機可以使用ComTools串口調(diào)試工具,而不必自己編寫程序。ComTools的界面如圖5-3-1所示。圖5-3-1ComTools串口調(diào)試工具操作界面它的主要功能如下:可設(shè)置各種通訊速率、奇偶校驗、數(shù)據(jù)位和停止位;可分別設(shè)置ASCII碼<包括中文>或十六進制數(shù)據(jù)格式的發(fā)送模式或接收模式;能將接收數(shù)據(jù)保存成文本文件,便于觀察分析;自動保存設(shè)置參數(shù),無需每次重新設(shè)置;可以設(shè)置16條定時自動發(fā)送的數(shù)據(jù),以及每條數(shù)據(jù)發(fā)送后的延時時間;可以同時監(jiān)控2個串口,利用特制電纜可監(jiān)聽2個串口設(shè)備之間的通訊過程;發(fā)送數(shù)據(jù)時,可自動計算并添加和校驗發(fā)送;DTR自動控制是為了方便RS485通訊測試而添加的功能;方便的查找功能,使你可以輕松搜索接收文本框中的字符;使用快捷鍵可快速調(diào)用最近五次發(fā)送的不同數(shù)據(jù)。5.4結(jié)果通過軟件仿真,單片機可以向PC機發(fā)送數(shù)據(jù),同時接收PC機發(fā)來的數(shù)據(jù),完全實現(xiàn)了單片機與PC機之間點對點的通信。由于5.12地震的影響,畢設(shè)暫停了一段時間,加之器材室元器件缺少我所需的器件,硬件電的路焊接也就沒有完成。6結(jié)語實驗表明,此系統(tǒng)完全實現(xiàn)了PC機與單片機之間點對點的通信,方法簡單可靠,基本上在需要用到PC機與單片機串行通信的場合均可采用此種方法。隨著近年來PC在國內(nèi)應(yīng)用范圍的日益壯大,在工業(yè)控制、數(shù)據(jù)采集等領(lǐng)域越來越多的采用PC,本文可以算作是一個有益的嘗試。當然在實際應(yīng)用中還需要考慮一些問題,比如進行出錯處理的問題,可以在一個要發(fā)送的字符串后再發(fā)送一個校驗和,當收到返回的校驗和與發(fā)送的校驗和不一致時再進行重發(fā),再比如所采用的RS232C傳輸距離很短,并且抗干擾能力很差,這時需要將總線轉(zhuǎn)換成差分傳輸?shù)腞S485/RS422。另外,稍加改進,就可實現(xiàn)PC機與多片51單片機的串行通信,這時由于共用一條總線,必須給每個單片機分配一個地址,然后由PC機對總線進行仲裁,只有獲得總線使用權(quán)的單片機才能與上位機進行通信,這里不再贅述。總之,本文只是為PC和單片機串行通信提供了一個典型的范例,要應(yīng)用到實際的項目中去,還需要根據(jù)實際的情況具體考慮,靈活應(yīng)用,最終才能形成一個可靠的基于PC與單片機的串行通信系統(tǒng)。參考文獻[1]王福瑞.單片微機測控系統(tǒng)設(shè)計大全[M].北京:北京航空航天大學(xué)出版社,1998.06[2]李華.MCS一51系列單片機實用接口技術(shù)[M].北京:北京航空航天大學(xué)出版社,1993.07[3]李朝青.PC機與單片機&DSP數(shù)據(jù)通信技術(shù)選編<1>[M].北京:北京航空航天大學(xué)出版社,2003.12[4]劉金伍.單片機應(yīng)用與實踐[M].北京:北京航空航天大學(xué)出版社,1995.08[5]劉大茂.智能儀器:單片機應(yīng)用系統(tǒng)設(shè)計[M].北京:機械工業(yè)出版社,1998.04[6]萬福君,潘松峰.單片微機原理系統(tǒng)設(shè)計與應(yīng)用[M].XX:中國科學(xué)技術(shù)大學(xué)出版社,2001.01[7][美]安格斯生.串行端口大全[M].精英科技譯.北京:中國電力出版社,2001.01附錄A英文資料LinuxPCand51seriesmonolithicintegratedcircuitserialcommunicationdesignAbstract:IntroducedonekindusesLinuxoperatingsystemPCmachinecarriesonthecorrespondencethroughtheserialportandtheMCS-51seriesmonolithicintegratedcircuitthedesignmethod,hasgiventhebasichardwareprincipleandthesignalproceduredesign2methods.Theexperimentprovedthat,thiskindofplansimplereliable,thepriceisinexpensive,wasLinuxindomainandsooninindustrycontrolapplicationshasprovidedonesolution.Keyword:Linux;Monolithicintegratedcircuit;Serialcommunication;Industrycontrol.Themonolithicintegratedcircuitperformancestable,thepriceinexpensive,thefunctionisformidable,intheintelligentinstrument,industryequipmentaswellasintheeverydayuseelectronicconsumableobtainedthemoreandmorewidespreadapplication.Inthemonolithicintegratedcircuitinputoutputcontrol,exceptdirectlyjoinssmallmethodsandsoonoutsidekeyboardandLCDdisplaymonitor,generallyallandonpositionmachinePCcarriesonthecorrespondencethroughtheserialport,butlattermethodbecausecanrealizethelong-distancecontrol,andcanusethePCmachineformidabledataprocessingfunctionaswellasthefriendlycontrolinterface,appearsespeciallyimportantly.CarriesonthecontrolingeneralusePCmachinetothemonolithicintegratedcircuitthesituation,allisusesWindowstotakeonthepositionmachineplatform,itsmeritisthecontactsurfaceisfriendly,theprogrammingandtheoperationquiteisalleasy,theshortcomingisthestabilitytooisbad,thisregardingneedstheinstallmentwhichtheconsecutivenumberdayorseveralmonthsmove,isespeciallyinappropriate.Intherequestquiteharshsituation,allusestheUNIXworkstationtotakethemastercontrolplatformgenerally,iftheHefeisynchronizationradiationacceleratormastercontrolplatformusesistheSUNSolarisworkstationsystem,howevertheUNIXworkstationexpensivepricehaslimiteditsusescopegreatly.Inrecentyears,alongwiththeLinuxswiftandviolentdevelopment,causeditgraduallytoturnthemainstreamoperatingsystemfromsmallnumberofpeople'stoy.LinuxisfollowstheGPLagreementthefreesourcecodeopeningsoftware,anybodyallmayfreeobtainitssourceprogramfromInternet,alsomayreviseitssourcecodeundertheGPLagreementtoadaptthespecificapplication,itsmovementonordinaryPC,theperformanceisstable,issuitablefortomaketheindustrycontrolspecially,thereforerealizesLinuxandthemonolithicintegratedcircuitserialcommunicationhasthesignificanceextremely,hemaybethesubstitutionmethodwhichtheexpensiveUNIXworkstationonekindmayelect.1hardwareprincipleAtpresentthedomesticusemanyistheMCS-51seriesmonolithicintegratedcircuit,thereforeselectsthemonolithicintegratedcircuitexperimentobjectispieceofAT89C51,Figure1isthehardwareschematicdiagram,becausemustrealizeconformstotheRS232Cserialcommunication,butalsoshoulduseonepieceICL232CPE<MAX232>totaketheserialcommunicationthelevelswitchingcircuit.Inexperimentalprocess,inordertoexaminecorrespondswhethersucceeds,besidesletsthemonolithicintegratedcircuitreturntoonpositionmachinedeliversthedata,butalsoexpandedseveralpieceoflatchesinthemonolithicintegratedcircuitperiphery,severalLEDlightemitterdiodeandseveralsmallkeyboards.TheserialcommunicationusesthesimpleTxD,RxD,GNDthree-wiresystemconnection,paysattentiontoTxDandRxDnearbytwoshouldtheoverlappingsegment.OnthepositionmachineisordinaryPCmachine,altogetherhas2serialportCOM1,COM2,itmovesRedHat8.0,infact,ifdoesnotrequesttomovegraphicalinterfacesandsoonGnomeorKDE,Linuxisquitelowtothesystemhardwarerequest.Theexperimentprovedthat,thiselectriccircuitsimplereliable,issuitableextremelyforthetestserialcommunication.2serialcommunicationprogrammingSerialcommunicationprocedureincludinglowerpositionmachinemonolithicintegratedcircuitandonpositionmachinePCmachineprocedure.Themonolithicintegratedcircuitreceivesthedatawhichthepositionmachinetransmits,putstointernalRAMinside,againthedatasimultaneouslytransmitsRAMintoexteriorexpansionlatchandonthepositionmachine,fromthismayjudgecorrespondswhethersucceeds.Thisprocedurewrotebytheassemblylanguage,wheninitializationthebaudrateestablishmentis4800b/s,themailingaddressis8-N-1.Onthepositionmachineprocedurecompilationistheessentialpart,becausemustcarryontheoperationtotheserialporthardwareequipment,some2methods,oneareuseLinuxessencebringingtheserialportdriver,moreoveronemethodisthedirectread-writeserialporthardwareport,belowintroducedseparately.2.1useserialportdriverprogrammingmethodCarriesontheprogrammingusingtheLinuxownserialportdriver,infactistransfersthedriveraseriesoffunctions,completestheserialportcorrespondenceparametertheestablishment,thedatatransmissionandthereceive.Inthismethod,Linuxallassignsadocumentindexnumberforeachserialport,hasthecorrespondingdocumentname,infactisregardsasthehardwareequipmentonekindofspecialdocument,likeCOM1,COM2correspondencedocumentrespectivelybe/dev/ttyS0,/dev/ttyS1,operatesthese2serialportsinfactoperatesthese2documents,butwithdoesnotcertainlyhavetothehardwareequipmentdocumentoperationtotheordinarydocumentoperationwhatdifferently,allmayusesamedocumentI/TheOtransferfunction<open,write,read,close>,thesimilarityliesinwithsystemcallopen<>openstheserialportobtainsafterthecorrespondingequipmentdocumentdescriptionsymbol,firstmusttoitcarryontheinitialization,establishessomespecificparameters,likebaudrate,Thedataposition,theinputoutputwayandsoon,theseparametersdepositinstructtermios,functiontcsetattr<>mayestablishtheserialportstructtermios,tcgetattr<>tobepossibletoobtainserialportstructtermios.Afterestablishedthecorrespondenceparametercarriesonread-writeonavailablereadandwritetotheserialportdocument.Whenoperatingproceduremustpayattentiontotheuserwhetherhastotheserialportdocumentwhichmustoperatecarriesontheread-writeauthority,mayusechmodtoordertocarryonthedocumentjurisdictionrevision.Itinitializationfunctionisasfollows:Theinitializationwilllaterstarttotransmitandtoreceivethedata,firstforastringofcharactertransmissionthemonolithicintegratedcircuit,afterthemonolithicintegratedcircuitreceivesthedata,willgivethedatareturnsthepositionmachine.Butneedstopayattention,becauseonthepositionmachinespeedismuchquickerthanthemonolithicintegratedcircuit,atimecannottransmitexcessivelymanydata,otherwisewillhavethepossibilitytocauseextremelytotransmitthebufferoverflowtolosethedata,thetransmissionfromnowon,butalsowillhavetowaitforperiodoftime,willcausethemonolithicintegratedcircuittotransmitcompletelythedataafteronpositionmachine,thenwillcarryontheread.2.2directread-writeserialporthardwareportmethodIsusingthismethodtime,musthavesomeunderstandingstotheserialportcorrespondencehardwareprinciple.ThePCmachineserialportisbygeneralasynchronoustransceiver8250UART<or16550>isthecoreconstitution,theregisterbaseaddressrespectivelyis0x3f8<COM1>and0x2f8<COM2>,butalsohastheregisterwhichothersomeuseincontrolling.HasverymanyregistersiswiththeModemcorrelation,butcarriesonthecorrespondencewhentheusethree-wiresystemwith,onlyusesthecareandthecorrespondencerelatedregister,comparestheusetocomeforthegeneralfunctioncompilationserialportequipmentdriver,thedirectread-writecorrelationregisterefficiencyishigher.Aftertheinitialization,mightcarryonthedatareceivinganddispatching,acceptedinfrontofthedatahadtoguaranteethereceivedataready,thismightjudgethrough0x2fdD0,transmittedinfrontofthedatamustguaranteetransmissionregisterforspatial,thismightjudgethrough0x2fdD5,thecodewasasfollows:3conclusionsTheexperimentindicated,thissystemuses2methodsallcompletelyhaverealizedbetweenLinuxPCmachineandthemonolithicintegratedcircuitthepoint-to-pointcorrespondence,themethodsimplereliable,basicallyinneedtousePCmachineandthemonolithicintegratedcircuitserialcommunicationsituationmayusethismethod.AlongwithrecentyearsLinuxinthedomesticapplicationscopedailystrength,indomainsandsoonindustrycontrol,dataacquisitionalsowillcertainlymoreandmoremanyuseLinux,thisarticletobepossibletocalculatedidisabeneficialattempt.Certainlyinthepracticalapplicationalsoneedstoconsidersomequestions,forinstancecarryonmakeamistaketheprocessingquestion,mayagaintransmitaverificationafterthestringofcharacterwhichmusttransmitand,whenreceivesthereturnstheverificationandwiththetransmissionverificationandinconsistentagaincarriesonthereproduction,againforinstanceusestheRS232Ctransmittingrangeisveryshort,andantijammingabilityisverybad,bynowneededtotransformthemainlinethedifferencetransmissionRS485/RS422。Moreover,improvesslightly,mayrealizePCmachinewiththemulti-piece51monolithicintegratedcircuitserialcommunications,becausebynowusedincommonamainline,hadtogiveeachmonolithicintegratedcircuittoassignanaddress,thencarriedonthearbitrationbyPCmachinetothemainline,onlythenobtainedthemainlinerightofusethemonolithicintegratedcircuittobeabletocarryonthecorrespondencewithonpositionmachine,herenolongergaveunnecessarydetail.Inbrief,thisarticleonlywasLinuxPCandthemonolithicintegratedcircuitserialcommunicationhasprovidedatypicalmodel,hadtoapplyintheactualproject,butalsoneededaccordingtotheactualsituationconcreteconsideration,thenimbleapplication,finallytobeabletoformonereliablybasedontheLinuxplatformsystem.附錄B中文翻譯LinuxPC和51系列單片機串行通信的設(shè)計摘要:介紹了一種采用Linux操作系統(tǒng)的PC機通過串口和MCS-51系列單片機進行通信的設(shè)計方法,給出了基本的硬件原理和通信程序設(shè)計的2種方法。實驗證明,這種方案簡單可靠、價格低廉,為Linux在工業(yè)控制等領(lǐng)域中的應(yīng)用提供了一種解決方法。關(guān)鍵詞:Linux;單片機;串行通信;工業(yè)控制單片機性能穩(wěn)定、價格低廉、功能強大,在智能儀器、工業(yè)裝備以及日用電子消費品中得到了越來越廣泛的應(yīng)用。在單片機的輸入輸出控制中,除直接接上小鍵盤和LCD顯示屏等方法外,一般都通過串口和上位機PC進行通信,而后一種方法由于能實現(xiàn)遠程控制,并且能夠利用PC機強大的數(shù)據(jù)處理功能以及友好的控制界面,顯得尤為重要。在一般的利用PC機對單片機進行控制的場合,都是采用Windows作為上位機的平臺,其優(yōu)點是界面友好,編程和操作都比較容易,缺點是穩(wěn)定性太差,這對于需要連續(xù)數(shù)天或數(shù)月運行的裝置來說,尤其不合適。在要求比較苛刻的場合,一般都采用UNIX工作站作為主控平臺,如XX同步輻射加速器的主控平臺采用的是SUN的Solaris工作站系統(tǒng),然而UNIX工作站昂貴的價格又大大限制了其使用的范圍。近年來,隨著Linux的迅猛發(fā)展,使其逐漸從少數(shù)人的玩具變成了主流的操作系統(tǒng)。Linux是遵循GPL協(xié)議的免費源代碼開放軟件,任何人都可以自由的從Internet上取得其源程序,也可在GPL的協(xié)議下修改其源代碼以適應(yīng)特定的應(yīng)用,其運行在普通的PC上,性能穩(wěn)定,特別適于做工業(yè)控制,因此實現(xiàn)Linux和單片機的串行通信非常有意義,他可以是昂貴的UNIX工作站的一種可選的替代方法。硬件原理
目前國內(nèi)使用較多的為MCS-51系列的單片機,因此選用的單片機實驗對象為一片AT89C51,圖1是硬件原理圖,由于要實現(xiàn)符合RS232C的串行通信,還應(yīng)該用一片ICL232CPE<MAX232>作為串行通信的電平轉(zhuǎn)換電路。在實驗過程中,為了查看通信是否成功,除了讓單片機對上位機回送數(shù)據(jù)外,還在單片機外圍擴展了幾片鎖存器,幾個LED發(fā)光二極管和幾個小鍵盤。串行通信是采用最簡單的TxD,RxD,GND三線制連接,注意TxD和RxD兩邊應(yīng)該交叉連線。上位機是一臺普通的PC機,共有2個串行口COM1,COM2,其運行RedHat8.0,實際上,如果不要求運行Gnome或KDE等圖形界面,Linux對系統(tǒng)硬件的要求相當?shù)?。實驗證明,此電路簡單可靠,非常適用于測試串行通信。2串行通信程序設(shè)計串行通信程序包括下位機單片機和上位機PC機的程序。單片機接收上位機傳來的數(shù)據(jù),放到片內(nèi)RAM里面,再將RAM內(nèi)數(shù)據(jù)同時發(fā)送到外部擴展鎖存器和上位機,由此可以判斷通信是否成功。此程序由匯編語言寫成,初始化時波特率設(shè)置為4800b/s,通信方式為8-N-1。上位機程序的編寫是關(guān)鍵部分,因為要對串口硬件設(shè)備進行操作,有2種方法,一是利用Linux內(nèi)核自帶的串口驅(qū)動程序,另外一種方法就是直接讀寫串口硬件端口,下面分別介紹。2.1利用串口驅(qū)動程序的編程方法利用Linux自身的串口驅(qū)動程序進行編程,實際上就是調(diào)用驅(qū)動程序的一系列函數(shù),完成串口通信參數(shù)的設(shè)置,數(shù)據(jù)的發(fā)送和接收。在這種方法中,Linux給每個串口都分配一個文件索引號,有相應(yīng)的文件名稱,實際上是將硬件設(shè)備看成一種特殊的文件,如COM1,COM2對應(yīng)的文件分別為/dev/ttyS0,/dev/ttyS1,操作這2個串口實際上就是操作這2個文件,而對硬件設(shè)備文件的操作與對普通文件的操作并沒有什么不同,都可以使用相同的文件I/O調(diào)用函數(shù)<open,write,read,close>,不同之處在于用系統(tǒng)調(diào)用open<>打開串口得到相應(yīng)設(shè)備的文件描述符以后,先要對其進行初始化,設(shè)置一些特定的參數(shù),如波特率、數(shù)據(jù)位、輸入輸出方式等,這些參數(shù)存放在structtermios中,函數(shù)tcsetattr<>可以設(shè)置串口的structtermios,tcgetattr<>可以得到串口的structtermios。設(shè)置完通信參數(shù)后就可用read和write對串口文件進行讀寫了。運行程序時要注意用戶是否有對要操作的串口文件進行讀寫的權(quán)力,可以用chmod命令進行文件權(quán)限修改。初始化以后就開始發(fā)送和接收數(shù)據(jù),先將一個字符串發(fā)送給單片機,單片機接收到數(shù)據(jù)后,將數(shù)據(jù)返回給上位機。但需要注意的是,由于上位機速度比單片機快得多,一次不能發(fā)送過多的數(shù)據(jù),否則極有可能使發(fā)送緩沖區(qū)溢出而丟失數(shù)據(jù),發(fā)送過后,還需等待一段時間,使單片機將數(shù)據(jù)完全發(fā)送到上位機后,再進行讀取。2.2直接讀寫串口硬件端口的方法在使用這個方法的時候,必須對串口通信的硬件原理有一些了解。PC機的串口是由通用異步收發(fā)器8250UART為核心構(gòu)成的,寄存器基地址分別是0x3f8<COM1>和0x2f8<COM2>,還有其他的一些用于控制的寄存器。有很多寄存器是與Modem相關(guān)的,而在使用三線制進行通信時用不到,只用關(guān)心與通信相關(guān)的寄存器,比起使用為通用功能編寫的串口設(shè)備驅(qū)動程序來,直接讀寫相關(guān)寄存器效率更高。初始化后,就可以進行數(shù)據(jù)的收發(fā)了,接受數(shù)據(jù)之前必須保證接收數(shù)據(jù)就緒,這可以通過0x2fd的D0來判斷,發(fā)送數(shù)據(jù)之前必須保證發(fā)送寄存器為空,這可以通過0x2fd的D5來判斷。結(jié)語實驗表明,此系統(tǒng)采用的2種方法都完全實現(xiàn)了LinuxPC機與單片機之間點對點的通信,方法簡單
溫馨提示
- 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. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 電子商務(wù)平臺與社交電商模式創(chuàng)新考核試卷
- 皇帝蕉種植與養(yǎng)護考核試卷
- 游樂設(shè)施施工安全管理規(guī)范實施考核試卷
- 油氣儲運安全與環(huán)保措施考核試卷
- 玻璃儀器在投影儀與幻燈機制造中的應(yīng)用考核試卷
- 新能源汽車電控系統(tǒng)軟件架構(gòu)設(shè)計考核試卷
- 2025標準員工與公司間的借款協(xié)議合同
- 花樣游泳課件
- 2025商業(yè)辦公房屋轉(zhuǎn)讓合同協(xié)議書范本
- 2025北京市實習(xí)學(xué)生勞動合同協(xié)議書
- DB37-T 3466-2018人民防空工程防護(化)設(shè)備維護保養(yǎng)規(guī)程
- (完整版)建筑構(gòu)造課件
- 新浙教版七年級上冊初中科學(xué) 第2節(jié) 質(zhì)量的測量 教學(xué)課件
- 《巖石力學(xué)(含實驗)》課程教學(xué)大綱
- 中華人民共和國招標投標法(PPT)
- 中國銀行保函業(yè)務(wù)培訓(xùn)(共71頁).ppt
- 廣東公共就業(yè)服務(wù)標準化手冊
- 全國油料高產(chǎn)創(chuàng)建測產(chǎn)驗收辦法
- 牛頓拉夫遜迭代法極坐標潮流計算C語言程序
- 統(tǒng)編版四年級道德與法治下冊第8課《這些東西哪里來》精美課件(含視頻)
- 2022年配網(wǎng)設(shè)計考試題庫(核心題版)
評論
0/150
提交評論