單片機(jī)與PC機(jī)串口通信的設(shè)計(jì)說(shuō)明_第1頁(yè)
單片機(jī)與PC機(jī)串口通信的設(shè)計(jì)說(shuō)明_第2頁(yè)
單片機(jī)與PC機(jī)串口通信的設(shè)計(jì)說(shuō)明_第3頁(yè)
單片機(jī)與PC機(jī)串口通信的設(shè)計(jì)說(shuō)明_第4頁(yè)
單片機(jī)與PC機(jī)串口通信的設(shè)計(jì)說(shuō)明_第5頁(yè)
已閱讀5頁(yè),還剩26頁(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)介

..引言AT89C51是一款高性能的8位單片微型計(jì)算機(jī),它采用了CMOS工藝和ATMEL公司的高密度NVRAMUII<易失性隨機(jī)存儲(chǔ)器>技術(shù),片內(nèi)帶有一個(gè)4KB的FLASHFPROM<可擦除、可編程只讀存儲(chǔ)器>,作為INTEL8051的換代產(chǎn)品,其輸出引腳和指令系統(tǒng)與MCS一51完全兼容。由于AT89C51單片機(jī)具有集成度高、面向控制、系統(tǒng)結(jié)構(gòu)簡(jiǎn)單、價(jià)格便宜等諸多優(yōu)點(diǎn),因而在智能化儀器儀表、數(shù)據(jù)采集、數(shù)據(jù)測(cè)量等方面有著廣泛的應(yīng)用。但是,實(shí)際應(yīng)用中單片機(jī)在數(shù)據(jù)處理能力、人機(jī)交互等方面往往不能滿足要求,因而通常用PC來(lái)彌補(bǔ)單片機(jī)的這些不足。例如,在工程應(yīng)用中,常常由一臺(tái)PC機(jī)和一臺(tái)單片機(jī)構(gòu)成主從式計(jì)算機(jī)測(cè)控系統(tǒng)。在這樣的系統(tǒng)中,以單片機(jī)為核心的智能測(cè)控儀表<從機(jī)>作為現(xiàn)場(chǎng)測(cè)控設(shè)備,完成數(shù)據(jù)的采集、處理和控制各種任務(wù),同時(shí)將數(shù)據(jù)傳給PC機(jī)<主機(jī)>,PC機(jī)將這些數(shù)據(jù)加工處理后,進(jìn)行顯示、打印報(bào)表等,PC機(jī)也可以將各種控制命令傳送給單片機(jī),干預(yù)單片機(jī)系統(tǒng)的運(yùn)行,從而發(fā)揮PC機(jī)的優(yōu)勢(shì)。隨著單片機(jī)和微機(jī)技術(shù)的不斷發(fā)展,特別是網(wǎng)絡(luò)技術(shù)在測(cè)控領(lǐng)域的廣泛應(yīng)用,由PC機(jī)和多臺(tái)單片機(jī)構(gòu)成的多機(jī)網(wǎng)絡(luò)測(cè)控系統(tǒng)已成為單片機(jī)技術(shù)發(fā)展的一個(gè)方向。它結(jié)合了單片機(jī)在實(shí)時(shí)數(shù)據(jù)采集和微機(jī)對(duì)圖形處理、顯示的優(yōu)點(diǎn)。同時(shí),windows環(huán)境下后臺(tái)微機(jī)在數(shù)據(jù)庫(kù)管理上具有明顯的優(yōu)勢(shì)。二者結(jié)合,使得單片機(jī)的應(yīng)用已不僅僅局限于傳統(tǒng)意義上的自動(dòng)監(jiān)測(cè)或控制,而形成了向以網(wǎng)絡(luò)為核心的分布式多點(diǎn)系統(tǒng)發(fā)展的趨勢(shì)。1總體方案設(shè)計(jì)單片機(jī)鍵盤LCD串行通信電平轉(zhuǎn)換接口PC發(fā)聲電路硬件由單片機(jī)89C51、11.059M晶振,30PF電容、22uf/25V電容、10uf/25V電容10K電阻、LCM1601、4×4鍵盤、LM386、蜂鳴器、按鍵、Max232組成。具體可實(shí)現(xiàn)由AT單片機(jī)鍵盤LCD串行通信電平轉(zhuǎn)換接口PC發(fā)聲電路圖1-1系統(tǒng)結(jié)構(gòu)圖LCD:系統(tǒng)顯示界面采用LCM1601,一行16字符的液晶顯示模塊,顯示AT89C51接收或PC發(fā)來(lái)的數(shù)據(jù)。鍵盤:輸入按鍵采用4行4列非編碼矩陣鍵盤,配合液晶界面用于和PC機(jī)通信。發(fā)聲電路:發(fā)聲電路采用LM386作為音頻放大電路,在有按鍵按下的時(shí)候會(huì)發(fā)出相應(yīng)的按鍵音。串行通信電平轉(zhuǎn)換接口:AT89C51與PC間的串行數(shù)據(jù)通信采用的是最簡(jiǎn)單的TxD,RxD,GND三線制連接,從單片機(jī)TX和RX端CMOS電平到PC的標(biāo)準(zhǔn)RS-232電平的轉(zhuǎn)換器件選用Maxim的Max232。2硬件電路設(shè)計(jì)總電路圖見(jiàn)附錄C。2.1單片機(jī)AT89C51AT89C51是一種帶4K字節(jié)閃爍可編程可擦除只讀存儲(chǔ)器〔FPEROM—FalshProgrammableandErasableReadOnlyMemory的低電壓,高性能CMOS8位微處理器,俗稱單片機(jī)。該器件采用ATMEL高密度非易失存儲(chǔ)器制造技術(shù)制造,與工業(yè)標(biāo)準(zhǔn)的MCS-51指令集和輸出管腳相兼容。由于將多功能8位CPU和閃爍存儲(chǔ)器組合在單個(gè)芯片中,ATMEL的AT89C51是一種高效微控制器,為很多嵌入式控制系統(tǒng)提供了一種靈活性高且價(jià)廉的方案。AT89C51的管腳圖如圖2-1所示。圖2-1AT89C51的管腳圖主要特性:..·與MCS-51兼容·4K字節(jié)可編程閃爍存儲(chǔ)器·壽命:1000寫/擦循環(huán)·數(shù)據(jù)保留時(shí)間:10年·全靜態(tài)工作:0Hz-24Hz·三級(jí)程序存儲(chǔ)器鎖定·128*8位內(nèi)部RAM·32可編程I/O線·兩個(gè)16位定時(shí)器/計(jì)數(shù)器·5個(gè)中斷源·可編程串行通道·低功耗的閑置和掉電模式·片內(nèi)振蕩器和時(shí)鐘電路..管腳說(shuō)明:VCC:供電電壓。 GND:接地。P0口:P0口為一個(gè)8位漏級(jí)開(kāi)路雙向I/O口,每腳可吸收8TTL門電流。當(dāng)P1口的管腳第一次寫1時(shí),被定義為高阻輸入。P0能夠用于外部程序數(shù)據(jù)存儲(chǔ)器,它可以被定義為數(shù)據(jù)/地址的第八位。在FIASH編程時(shí),P0口作為原碼輸入口,當(dāng)FIASH進(jìn)行校驗(yàn)時(shí),P0輸出原碼,此時(shí)P0外部必須被拉高。P1口:P1口是一個(gè)內(nèi)部提供上拉電阻的8位雙向I/O口,P1口緩沖器能接收輸出4TTL門電流。P1口管腳寫入1后,被內(nèi)部上拉為高,可用作輸入,P1口被外部下拉為低電平時(shí),將輸出電流,這是由于內(nèi)部上拉的緣故。在FLASH編程和校驗(yàn)時(shí),P1口作為第八位地址接收。P2口:P2口為一個(gè)內(nèi)部上拉電阻的8位雙向I/O口,P2口緩沖器可接收,輸出4個(gè)TTL門電流,當(dāng)P2口被寫"1”時(shí),其管腳被內(nèi)部上拉電阻拉高,且作為輸入。并因此作為輸入時(shí),P2口的管腳被外部拉低,將輸出電流。這是由于內(nèi)部上拉的緣故。P2口當(dāng)用于外部程序存儲(chǔ)器或16位地址外部數(shù)據(jù)存儲(chǔ)器進(jìn)行存取時(shí),P2口輸出地址的高八位。在給出地址"1P3口:P3口管腳是8個(gè)帶內(nèi)部上拉電阻的雙向I/O口,可接收輸出4個(gè)TTL門電流。當(dāng)P3口寫入"1”P3口也可作為AT89C51的一些特殊功能口,如表2-1所示:表2-1P3口的一些特殊功能口口管腳備選功能P3.0RXD〔串行輸入口P3.1TXD〔串行輸出口P3.2/INT0〔外部中斷0P3.3/INT1〔外部中斷1P3.4T0〔記時(shí)器0外部輸入P3.5T1〔記時(shí)器1外部輸入P3.6/WR〔外部數(shù)據(jù)存儲(chǔ)器寫選通P3.7/RD〔外部數(shù)據(jù)存儲(chǔ)器讀選通P3口同時(shí)為閃爍編程和編程校驗(yàn)接收一些控制信號(hào)。RST:復(fù)位輸入。當(dāng)振蕩器復(fù)位器件時(shí),要保持RST腳兩個(gè)機(jī)器周期的高電平時(shí)間。ALE/PROG:當(dāng)訪問(wèn)外部存儲(chǔ)器時(shí),地址鎖存允許的輸出電平用于鎖存地址的地位字節(jié)。在FLASH編程期間,此引腳用于輸入編程脈沖。在平時(shí),ALE端以不變的頻率周期輸出正脈沖信號(hào),此頻率為振蕩器頻率的1/6。因此它可用作對(duì)外部輸出的脈沖或用于定時(shí)目的。然而要注意的是:每當(dāng)用作外部數(shù)據(jù)存儲(chǔ)器時(shí),將跳過(guò)一個(gè)ALE脈沖。如想禁止ALE的輸出可在SFR8EH地址上置0。此時(shí),ALE只有在執(zhí)行MOVX,MOVC指令是ALE才起作用。另外,該引腳被略微拉高。如果微處理器在外部執(zhí)行狀態(tài)ALE禁止,置位無(wú)效。/PSEN:外部程序存儲(chǔ)器的選通信號(hào)。在由外部程序存儲(chǔ)器取指期間,每個(gè)機(jī)器周期兩次/PSEN有效。但在訪問(wèn)外部數(shù)據(jù)存儲(chǔ)器時(shí),這兩次有效的/PSEN信號(hào)將不出現(xiàn)。/EA/VPP:當(dāng)/EA保持低電平時(shí),則在此期間外部程序存儲(chǔ)器〔0000H-FFFFH,不管是否有內(nèi)部程序存儲(chǔ)器。注意加密方式1時(shí),/EA將內(nèi)部鎖定為RESET;當(dāng)/EA端保持高電平時(shí),此間內(nèi)部程序存儲(chǔ)器。在FLASH編程期間,此引腳也用于施加12V編程電源〔VPP。XTAL1:反向振蕩放大器的輸入及內(nèi)部時(shí)鐘工作電路的輸入。XTAL2:來(lái)自反向振蕩器的輸出。AT89C51的時(shí)序:AT89C51的振蕩器輸入分別有引腳19〔XTAL1和引腳18〔XTAL2來(lái)完成。只要將這兩個(gè)引腳接石英晶體和陶瓷電容,如圖圖2-2所示,就可以與CPU內(nèi)部組成完整的振蕩電路。AT89C51的一個(gè)機(jī)器周期含有6個(gè)狀態(tài)周期,而每個(gè)狀態(tài)周期為2個(gè)振蕩周期,因此一個(gè)機(jī)器周期共有12個(gè)振蕩周期,如振蕩器的頻率為12MHZ,一個(gè)振蕩器周期為1/12微秒,而一個(gè)機(jī)器周期為1微秒。CCXTAL11918石英晶體XTAL2AT89C51C圖2-2AT89C51的振蕩電路在本設(shè)計(jì)中石英晶體的頻率為11.0592MHZ,陶瓷電容的取值為30PF。AT89C51的復(fù)位: 單片機(jī)微處理器的復(fù)位都是以外部電路來(lái)執(zhí)行的,在CLOCK工作后,只要在RESET引腳上接上10MS以上的高電平,單片機(jī)微處理器便執(zhí)行狀態(tài)復(fù)位。寄存器的復(fù)位單片機(jī)在RESET為高電平控制下,程序計(jì)數(shù)器〔PC和特殊功能寄存器的復(fù)位如表2-2所示。單片機(jī)的復(fù)位并不影響芯片內(nèi)部RAM狀態(tài),只要RESET引腳保持高電平,單片機(jī)將循環(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ù)位電路簡(jiǎn)單復(fù)位電路中,干擾易串入復(fù)位端,在大多數(shù)情況下不會(huì)造成單片機(jī)的錯(cuò)誤復(fù)位,但會(huì)引起內(nèi)部某些寄存器的錯(cuò)誤復(fù)位,可以在RESET引腳上接上一個(gè)去耦電容。為了保證復(fù)位電路的可靠性,常將RC電路接斯密特電路后再接入單片機(jī)和外圍IC的RESET引腳,如圖2-3所示。圖2-3AT89C51的復(fù)位電路AT89C51的串行口:〔1基本概念數(shù)據(jù)通信的傳輸方式:常用于數(shù)據(jù)通信的傳輸方式有單工、半雙工、全雙工和多工方式。A.單工方式:數(shù)據(jù)僅按一個(gè)固定的方向傳送。因?yàn)檫@種傳輸方式的用途有限,常用于串行口的打印數(shù)據(jù)傳輸與簡(jiǎn)單系統(tǒng)間的數(shù)據(jù)采集。B.雙工方式:數(shù)據(jù)可以實(shí)現(xiàn)雙向傳送,但不能同時(shí)進(jìn)行,實(shí)際的應(yīng)用采用某種協(xié)議實(shí)現(xiàn)收發(fā)開(kāi)關(guān)轉(zhuǎn)換。C.全雙工方式:允許雙方同時(shí)進(jìn)行數(shù)據(jù)雙向傳送,但一般全雙工電路的線路和設(shè)備比較復(fù)雜。D.多工方式:以上三種傳輸方式都是同一線路傳輸一種頻率信號(hào),為了充分的利用線路資源,可通過(guò)使用多路復(fù)用器或多路集線器,采用頻分、時(shí)分、或碼分復(fù)用技術(shù),即可實(shí)現(xiàn)在同一線路上資源共享功能,我們稱之為多工傳輸方式。串行通信的兩種通信形式A.異步通信在這種通信方式中,接收器和發(fā)射器有各自的時(shí)鐘,他們的工作是非同步的,異步通信用一幀來(lái)表示一個(gè)字符,其內(nèi)容如下:一個(gè)起始位,緊接著是若干個(gè)數(shù)據(jù)位,圖是傳輸45H的數(shù)據(jù)格式。B.同步通信同步通信格式中,發(fā)送器和接收器由同一個(gè)時(shí)鐘源控制,為了克服在異步傳輸中,每傳輸一幀字符都必須加上起始位和停止位,占用了傳輸時(shí)間,在要求傳送的數(shù)據(jù)量較大的〔2MCS-51的串行和控制寄存器MCS-51單片機(jī)串行口專用寄存器的SBUF為串行口的收發(fā)緩沖器,它是一個(gè)可尋址的專用寄存器,其中包含了接收器和發(fā)射器寄存器,可以實(shí)現(xiàn)全雙工通信。但這兩個(gè)寄存器具有同一地址〔99H。MCS-51的串行數(shù)據(jù)傳輸很簡(jiǎn)單,只要向緩沖器寫入數(shù)據(jù)就可發(fā)送數(shù)據(jù)。而從接收緩沖器讀出數(shù)據(jù)既可接收數(shù)據(jù)。此外,接收緩沖器前還加上一級(jí)輸入移位寄存器,MCS-51這種結(jié)構(gòu)的目的在于接收數(shù)據(jù)時(shí)避免發(fā)生重疊現(xiàn)象,文獻(xiàn)稱這種結(jié)構(gòu)為雙緩沖結(jié)構(gòu)。而發(fā)送數(shù)據(jù)就不需要這樣設(shè)計(jì),因?yàn)榘l(fā)送時(shí),CPU是主動(dòng)的,不可能出現(xiàn)這種情況。串行通信控制寄存器〔SCON,它是一個(gè)可尋址的專用寄存器,用于串行數(shù)據(jù)通信的控制,單元地址是98H,其結(jié)構(gòu)格式如表2-3所示。表2-3SCON寄存器結(jié)構(gòu)SCOND7D6D5D4D3D2D1D0SM0SM1SM2RENTB8RB8TIRI位地址9FH9EH8DH9CH9BH9AH99H98H下面我們對(duì)SCON控制位功能介紹如表2-4所示。1SM0、SM1:串行口工作方式控制位表2-4SCON控制位功能介紹SM0SM1工作方式功能說(shuō)明00方式0移位寄存器方式〔用于I/O擴(kuò)展01方式18位UART,波特率可變〔T1溢出率/n10方式29位UART,波特率為fosc/64或fosc/3211方式39位UART,波特率可變〔T1溢出率/n2SM2:多機(jī)通信控制位多機(jī)通信是工作方式2和方式3,SM2位主要用于方式2和方式3。接收狀態(tài),當(dāng)串行口工作方式2或3,以及SM2=1時(shí),只有當(dāng)接收到第9位數(shù)據(jù)〔RB8為1時(shí),才把接收的前8位數(shù)據(jù)送入SBUF,且置位RI發(fā)出中斷申請(qǐng),否則會(huì)將收到的數(shù)據(jù)放棄。當(dāng)SM2=0時(shí),只有在接收到有效停止位時(shí)才啟動(dòng)RI,若沒(méi)接收到有效停止位,則RI清"0"。在方式0中SM2應(yīng)該為"0"。REN:允許接收控制位。由軟件置"1”時(shí),允許接收;軟件置"0”時(shí),不許接收。TB8:在方式3和方式3中要發(fā)送的第9位數(shù)據(jù),需要時(shí)用軟件置位和清零。TB8:在方式2和方式3中是接收到的第9位數(shù)據(jù)。在方式1時(shí),如SM2=0,RB8接收到的停止位。在方式0中,不使用RB8。TI:發(fā)送中斷標(biāo)志。由硬件在方式0發(fā)送完第8位時(shí)置"1”,或在其它方式中串行發(fā)送停止位的開(kāi)始時(shí)置"1”。必須由軟件清"0”。RI:接收中斷標(biāo)志。由硬件在方式0串行發(fā)射第8位結(jié)束時(shí)置"1”B:特殊功能寄存器PCONPCON:主要是是CHMOS型單片機(jī)的電源控制而設(shè)置的專用寄存器,單元地址為87H其機(jī)構(gòu)格式如表2-5所示。表2-5特殊功能寄存器PCONPCOND7D6D5D4D3D2D1D0位符號(hào)SMOD———GF1GF0PDIDL在CHMOS型單片機(jī)中,除SMOD位外其它位均為虛設(shè)的,SMOD是串行波特率倍增位,當(dāng)SMOD=1時(shí)串行口波特率加倍,系統(tǒng)復(fù)位默認(rèn)為SMOD=0。這里重述一下中斷允許寄存器IE對(duì)串行口有影響的位ES。ES為串行中斷允許控制位,ES=1允許串行中斷,ES=0,禁止串行中斷。如表2-6所示。表2-6中斷允許寄存器符號(hào)EA——ESET1EX1ETOEX0位地址AFHAEHADHACHABHAAHA8HA8H 〔3串行口工作方式串行口具有4種工作方式,我從應(yīng)用和畢業(yè)設(shè)計(jì)的角度,重點(diǎn)討論方式1發(fā)送。串行口定義為方式1時(shí)傳送1幀數(shù)據(jù)為10位,其中1位起始地址、8位數(shù)據(jù)位〔先低位后高位、1位停止位方式1的波特率可變,波特率=<T1的溢出率>2.2LCM1601LCM1601是一款兼容的液晶顯示模塊,支持5×7點(diǎn)陣和16字×2行符兩種模式,背光亮度和顯示對(duì)比度可調(diào),是一種功能較簡(jiǎn)易、價(jià)格較便宜的液晶顯示器件。它由液晶顯示屏和驅(qū)動(dòng)器兩部分組成,單片機(jī)通過(guò)寫控制字方式訪問(wèn)它的驅(qū)動(dòng)器來(lái)實(shí)現(xiàn)對(duì)顯示屏的控制。 圖2-4所示為L(zhǎng)CM1601封裝圖。圖2-4LCM1601封裝圖 器件封裝為單列DIP16,引腳定義如表2-7所示。表2-7LCM1601引腳說(shuō)明編號(hào)標(biāo)示引腳說(shuō)明1VSS電源地2VDD電源正極3V0液晶顯示偏壓4RS指令/數(shù)據(jù)選擇端〔H/L5R/W讀/寫選擇端6E使能信號(hào)7D08位數(shù)據(jù)總線8D19D210D311D412D513D614D715LED+背光源正極16LED-背光源負(fù)極2.34×4行列式掃描鍵盤 簡(jiǎn)易的行列式鍵盤不需要借助其他的I/O擴(kuò)展芯片,直接占用P1的8條口線,再利用單片機(jī)內(nèi)部的軟件來(lái)配合實(shí)現(xiàn)4×4掃描鍵盤,其特點(diǎn)是簡(jiǎn)單且不增加成本,通常在系統(tǒng)I/O線充裕的情況下采用。2.4音頻功率放大器件LM386LM386的接腳圖如圖2-8所示。LM386是專為低損耗電源所設(shè)計(jì)的功率放大器。它的內(nèi)建增益為20,透過(guò)pin1和pin8腳位間電容的搭配,增益最高可達(dá)200。LM386輸入電壓范圍可由4V~12V,無(wú)作動(dòng)時(shí)僅消耗4mA電流,且失真低。圖2-8接腳圖2.5RS-232電平轉(zhuǎn)換器件Max232MAX232芯片是MAXIM公司生產(chǎn)的,包含兩路接收器和驅(qū)動(dòng)器的IC芯片。MAX232芯片內(nèi)部有一個(gè)電源電壓轉(zhuǎn)換器,可以把輸入的+5V電壓變換為RS-232輸出電平所需的一1O~+10V電壓。所以采用此芯片接口串行通信系統(tǒng)只需單一的+5V電源就可以了。對(duì)于沒(méi)有一12~+12V的場(chǎng)合,其適應(yīng)性更強(qiáng)。加之其價(jià)格適中,硬件接口簡(jiǎn)單,所以被廣泛采用。圖2-9所示為Max232的封裝圖。圖2-9Max232封裝圖引腳說(shuō)明如表2-8所示。表2-8Max232引腳說(shuō)明VCC供電電壓GND地C+、C-外圍電容T1IN第一路TTL/CMOS驅(qū)動(dòng)電平輸入T1OUT第一路RS-232電平輸出R1IN第一路RS-232電平輸入R1OUT第一路TTL/CMOS驅(qū)動(dòng)電平輸出T2IN第二路TTL/CMOS驅(qū)動(dòng)電平輸入T2OUT第二路RS-232電平輸出R2IN第二路RS-232電平輸入R2OUT第二路TTL/CMOS驅(qū)動(dòng)電平輸出3部分器件的原理分析3.1鍵盤掃描的工作原理 簡(jiǎn)易的行列式鍵盤不需要借助其他的I/O擴(kuò)展芯片,直接占用P1的8條口線,再利用單片機(jī)內(nèi)部的軟件來(lái)配合實(shí)現(xiàn)4行4列的掃描鍵盤,其特點(diǎn)是簡(jiǎn)單且不增加成本,通常在系統(tǒng)I/O線充裕的情況下采用。其原理圖如圖3-1所示。圖3-1原理圖 工作原理:I/O口P2.7~P2.1充當(dāng)列選線,P2.3~P2.1充當(dāng)行選線。在鍵盤開(kāi)始掃描的時(shí)候,首先向P2口賦行掃描初值7FH,令第一行〔P2.3為0,從第一行開(kāi)始檢測(cè)。接下來(lái)檢測(cè)第一行的第一列是否鍵按下?沒(méi)有按下,則檢測(cè)第二列,如果4列掃描完畢,沒(méi)有鍵按下,則掃描下一行,如此往復(fù),直至4行4列檢測(cè)完畢。當(dāng)有鍵按下時(shí),相應(yīng)的列選線電平被拉低,首先掃描行選線,確定按鍵的行號(hào),然后掃描列選線,確定列號(hào),則按鍵的編號(hào)即可確定。3.2按鍵發(fā)聲原理要產(chǎn)生音頻脈沖,只要算出某一音頻的周期,然后將此周期除以2,即為半周期的時(shí)間,利用定時(shí)器計(jì)時(shí)這個(gè)半周期時(shí)間,每當(dāng)計(jì)時(shí)到后就將輸出脈沖的I/O反相,然后重復(fù)計(jì)時(shí)此半周期時(shí)間再對(duì)I/O反相,就可在I/O引腳上得到此頻率的脈沖。計(jì)數(shù)脈沖值與頻率的關(guān)系公式如下:N=Fi÷2÷Fr N:計(jì)數(shù)值;Fi:內(nèi)部計(jì)時(shí)一次為1us,故其頻率為1MHZ;Fr:要產(chǎn)生的頻率。其計(jì)數(shù)值的求法如下:T=65536-N=65536-Fi÷2÷Fr表3-1是各按鍵音符的頻率與計(jì)數(shù)值T的對(duì)照表。表3-1各按鍵音符頻率與計(jì)數(shù)值T的對(duì)照表鍵值音符頻率〔HZ簡(jiǎn)譜碼〔T值鍵值音符頻率〔HZ簡(jiǎn)譜碼〔T值0低3M330640218中4FA698648201低4FA349641039中5SO784648982低5SO39264260A中6LA880649683低6LA44064400B中7SI988650304低7SI49464524C高1D0946650585中1D052364580D高2RE1175651106中2RE58764684E高3M1318651577中3M65964777F高4FA1397651784單片機(jī)軟件設(shè)計(jì)軟件的設(shè)計(jì)是我畢業(yè)設(shè)計(jì)的另一個(gè)重要方面。它的好壞直接關(guān)系畢業(yè)設(shè)計(jì)的成功與否。我等軟件是用匯編完成的,需要能熟練的掌握匯編語(yǔ)言,還要熟悉AT89C51單片機(jī)。程序流程圖是編寫軟件的重要前提,它是在圖表上直觀的體現(xiàn)擬設(shè)計(jì)的目的及過(guò)程。也是編譯的重要依據(jù),按照流程圖一步一步編寫程序,單片機(jī)軟件主程序流程圖如圖4-1所示。是是否否是開(kāi)始LCD初始化設(shè)置串口初始化收到數(shù)據(jù)?檢測(cè)按鍵輸入讀入鍵值轉(zhuǎn)換成鍵碼串口發(fā)送鍵碼LCD顯示并發(fā)聲接收數(shù)據(jù)送LCD顯示圖4-1主程序流程圖4.1CM1601軟件 LCD1601是通用的點(diǎn)陣型液晶模塊,分4位和8位數(shù)據(jù)傳輸方式。提供5X7點(diǎn)陣+光標(biāo)和5X10點(diǎn)陣+光標(biāo)的顯示模式。除帶有驅(qū)動(dòng)IC外,還自帶液晶顯示控制IC,其本身就是一個(gè)能夠接受指令,自動(dòng)控制液晶顯示的單片微機(jī)子系統(tǒng)。因此,通過(guò)軟件編程,就可以實(shí)現(xiàn)對(duì)LCM1601的操作。編程時(shí)要求CPU每一次訪問(wèn)都要先對(duì)忙標(biāo)志BF進(jìn)行識(shí)別,當(dāng)BF=0時(shí),即LDC允許CPU訪問(wèn)時(shí),再進(jìn)行下一步的操作。操作程序如下:4.2.1寫指令 ENABLE: MOV P1,#0FFH ;令P1=FFH CLR RS ;RS=0,R/W=1,讀BUSYFLAG地址計(jì)數(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點(diǎn)矩陣CALL ENABLE MOV P1,#08H ;顯示器ON,光標(biāo)ON,閃爍ONCALL ENABLE MOV P1,#06H ;光標(biāo)右移 CALL ENABLEMOV P1,#80H;令光標(biāo)回到第一行第一個(gè)字位置CALL ENABLE4.2串口通信子程序設(shè)計(jì)AT89C51的串行口是全雙工的UART,它可同時(shí)發(fā)送和接收數(shù)據(jù),是使用特殊寄存器內(nèi)的SBUF寄存器及SCON串行控制寄存器,如表4-1所示。表4-1SCON串行控制寄存器 RI:接收中斷標(biāo)志位。在模式0下,當(dāng)?shù)?位結(jié)束時(shí),硬件會(huì)將其設(shè)為1;在其他模式下,在停止位的開(kāi)始時(shí)有硬件設(shè)定,次位必須由軟件清除。 TI:發(fā)送中斷標(biāo)志位。在模式0下,當(dāng)?shù)?位結(jié)束時(shí),硬件會(huì)將其設(shè)為1;在其他模式下,在停止位的開(kāi)始時(shí)由硬件設(shè)定,次位必由軟件清除。 RB8:在模式2或3時(shí),發(fā)送的第9位放入次位。在模式1時(shí),若SM2=0,則RB8為接收到的停止位。模式0時(shí),RB8沒(méi)作用。 TB8:在模式2或3時(shí),發(fā)送時(shí)的第9位數(shù)據(jù)位由軟件控制。 REN:由軟件設(shè)定或清除,以決定是否接收串行輸入數(shù)據(jù),REN=1,接收;REN=0,發(fā)送。 SM2:當(dāng)串行口為模式2或3時(shí),使能多處理器通信的功能。在模式2或3時(shí),如果SM2=1,則當(dāng)接收到第9位數(shù)據(jù)為0時(shí),RI不動(dòng)作。在模式1時(shí),若SM2=1,當(dāng)接收到的停止位不正確時(shí),RI也不動(dòng)作。在模式0時(shí),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作一重點(diǎn)介紹。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個(gè)位分別是1個(gè)起始位、8個(gè)數(shù)據(jù)位和1個(gè)停止位。MODE1發(fā)送數(shù)據(jù)的速度〔稱為波特率是可變的,由TIMER1或TIMER2控制且最好工作在MODE2〔自動(dòng)載入模式,這樣只要設(shè)定TH1一次即可。當(dāng)UART接收〔RXD引腳到一個(gè)字節(jié)的數(shù)據(jù)后,會(huì)使SCON寄存器內(nèi)的RI位設(shè)定為1,CPU只要檢查RI=1就可知道UART已接收到數(shù)據(jù)。若數(shù)據(jù)通過(guò)UART輸出時(shí)〔TXD引腳,在8個(gè)位輸出完畢后,SCON寄存器內(nèi)的TI位會(huì)被設(shè)為1,CPU只要檢查到TI=1就可知道可以再發(fā)送下一個(gè)字節(jié)。 控制波特率的寄存器為PCON,如表4-2所示。說(shuō)明如下: PCON:電源控制寄存器〔POWERCONTROLREGISTER。表4-2電源控制寄存器 SOMD:雙倍波特率位。當(dāng)串行工作于模式1、2或3時(shí),如使用TIMER1做波特率發(fā)生器,且SMOD=1則波特率為雙倍?!罕A粑弧?GF1:一般用途,對(duì)于AT89系列,GF1為通用標(biāo)志位。 GF0:一般用途,對(duì)于AT89系列,GF0為通用標(biāo)志位。 PD:電源下降位,對(duì)于AT89系列,PD為1時(shí)進(jìn)入掉電狀態(tài)。 IDL:IDLE模式位,對(duì)于AT89系列,IDL為1是進(jìn)入空閑工作方式。 注意:PD和IDLE同時(shí)為1時(shí),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的計(jì)數(shù)值SETB TR1 ;啟動(dòng)TIMER1 〔2設(shè)定UART工作方式MOV SCON,#01010000B ;MODE1做接收,REN=1C RI,LOOP2或MOV SCON,#0100000B ;MODE做發(fā)送,REN=0C TI,LOOP2 波特率的計(jì)算:MODE0的波特率=振蕩器頻率÷12振蕩頻率=12MHZ 波特率=1MHZMODE2的波特率=〔2/64×振蕩頻率振蕩頻率=12MHZ SMOD=0 BAUD=187.5KHZ SMOD=1 BAUD=375KHZMODE1和MODE3:利用TIMER工作在MODE2模式〔自動(dòng)載入產(chǎn)生的波特率為〔2/32×[振蕩頻率/〔12×〔256-TH1]常用的各種波特率如表4-2-3所示。表4-3常用的各種波特率波特率〔bit/sFosc<MHZ>SMODTimer1C/T模式自動(dòng)載入480012102F3H240012002F3H120012102F6H1920011.059102FDH960011.059002FDH480011.059002FAH240011.059002F4H120011.059002F8HUART的中斷要求: 其中斷要求有兩種方式:〔1當(dāng)UART的接收器〔RXD接收到一個(gè)字節(jié)的數(shù)據(jù)且將其存入SBUF寄存器后,就會(huì)將RI設(shè)定為1,而對(duì)AT89C51提出中斷要求。〔2當(dāng)UART的發(fā)送器將SBUF寄存器的8個(gè)位數(shù)據(jù)發(fā)送出去后,會(huì)將TI設(shè)定為1。 UART中斷要求設(shè)定的步驟:1.設(shè)定UART中斷起始地址。 ORG 23H JMP UART2.設(shè)定TIMER1工作在MODE2MOV TMOD,#00100000B3.設(shè)定波特率為2400ANL PCON,#01111111BMOV TH1,#0F3H4.啟動(dòng)計(jì)時(shí)器 SETB TRX5.設(shè)定UART工作方式 MOV SCON,#01××0000B3.設(shè)定UART中斷功能 MOV IE,#10010000B4.3鍵盤掃描子程序設(shè)計(jì)鍵盤掃描的步驟: 〔1設(shè)置P1口初始值07FH; 〔2P1口右移,檢測(cè)行; 〔3P1口左移,檢測(cè)列;流程圖如圖4-2所示。鍵盤接口程序如下:MOV R3,#0F7H ;掃描初值<P2.3=0> MOV R1,#00H ;取碼指針初值D3: MOV A,R3 ;載入掃描指針 MOV P2,A ;輸出至P2,開(kāi)始掃描行 MOV A,P2 ;讀入P2CLR C CPL C ;令C=1 MOV R5,#04H ;檢測(cè)列D4: RLC A ;左移一位〔P2.7~P2.4 JNC KEYIN ;檢測(cè)行C=0,表示被按 INC R1 ;沒(méi)按則取碼指針加1 DJNZ R5,D4 ;4列檢測(cè)完畢了?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 ;消除抖動(dòng)D5: MOV R6,#248DJNZ R6,$DJNZ R7,D5D6: MOV A,P2 ;按鈕放開(kāi)否?XRL A,R44.4按鍵發(fā)聲子程序的設(shè)計(jì)按鍵發(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 ;啟動(dòng)TIMER0D1: CALL KEY ;調(diào)用KEY,判斷是否有按下? CLR EA ;中斷屏蔽 F0,D1 ;沒(méi)按則F0=1,沒(méi)按則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取相對(duì)的低位字節(jié)計(jì)數(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,開(kāi)始掃描行 MOV A,P2 ;讀入P2CLR C CPL C ;令C=1 MOV R5,#04H ;檢測(cè)列D4: RLC A ;左移一位〔P2.7~P2.4 JNC KEYIN ;檢測(cè)行C=0,表示被按 INC R1 ;沒(méi)按則取碼指針加1 DJNZ R5,D4 ;4列檢測(cè)完畢了?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è)計(jì)數(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,它可以完成單片機(jī)的電路仿真。圖5-5-1是軟件仿真的結(jié)果。圖5-1-1軟件仿真的結(jié)果5.2硬件焊接硬件的焊接是畢業(yè)設(shè)計(jì)中重要的環(huán)節(jié),用的工具很簡(jiǎn)單:電烙鐵、焊絲和鑷子。因?yàn)槲覀冞x用的是實(shí)驗(yàn)板,所以要用導(dǎo)線把各個(gè)元器件連接起來(lái),這就要有一定的技術(shù)基礎(chǔ),幸好這個(gè)在我們以前的生產(chǎn)實(shí)習(xí)中已經(jīng)掌握。焊接要細(xì)心,還要有耐心。焊接前要對(duì)照電路圖對(duì)元器件有一個(gè)合理的布局,那樣的話就會(huì)使電路簡(jiǎn)潔明朗,而且不易出錯(cuò),即使出錯(cuò)也容易檢查。5.3調(diào)試 調(diào)試的時(shí)候,PC機(jī)可以使用ComTools串口調(diào)試工具,而不必自己編寫程序。ComTools的界面如圖5-3-1所示。圖5-3-1ComTools串口調(diào)試工具操作界面它的主要功能如下:可設(shè)置各種通訊速率、奇偶校驗(yàn)、數(shù)據(jù)位和停止位;可分別設(shè)置ASCII碼<包括中文>或十六進(jìn)制數(shù)據(jù)格式的發(fā)送模式或接收模式;能將接收數(shù)據(jù)保存成文本文件,便于觀察分析;自動(dòng)保存設(shè)置參數(shù),無(wú)需每次重新設(shè)置;可以設(shè)置16條定時(shí)自動(dòng)發(fā)送的數(shù)據(jù),以及每條數(shù)據(jù)發(fā)送后的延時(shí)時(shí)間;可以同時(shí)監(jiān)控2個(gè)串口,利用特制電纜可監(jiān)聽(tīng)2個(gè)串口設(shè)備之間的通訊過(guò)程;發(fā)送數(shù)據(jù)時(shí),可自動(dòng)計(jì)算并添加和校驗(yàn)發(fā)送;DTR自動(dòng)控制是為了方便RS485通訊測(cè)試而添加的功能;方便的查找功能,使你可以輕松搜索接收文本框中的字符;使用快捷鍵可快速調(diào)用最近五次發(fā)送的不同數(shù)據(jù)。5.4結(jié)果通過(guò)軟件仿真,單片機(jī)可以向PC機(jī)發(fā)送數(shù)據(jù),同時(shí)接收PC機(jī)發(fā)來(lái)的數(shù)據(jù),完全實(shí)現(xiàn)了單片機(jī)與PC機(jī)之間點(diǎn)對(duì)點(diǎn)的通信。由于5.12地震的影響,畢設(shè)暫停了一段時(shí)間,加之器材室元器件缺少我所需的器件,硬件電的路焊接也就沒(méi)有完成。6結(jié)語(yǔ)實(shí)驗(yàn)表明,此系統(tǒng)完全實(shí)現(xiàn)了PC機(jī)與單片機(jī)之間點(diǎn)對(duì)點(diǎn)的通信,方法簡(jiǎn)單可靠,基本上在需要用到PC機(jī)與單片機(jī)串行通信的場(chǎng)合均可采用此種方法。隨著近年來(lái)PC在國(guó)內(nèi)應(yīng)用范圍的日益壯大,在工業(yè)控制、數(shù)據(jù)采集等領(lǐng)域越來(lái)越多的采用PC,本文可以算作是一個(gè)有益的嘗試。當(dāng)然在實(shí)際應(yīng)用中還需要考慮一些問(wèn)題,比如進(jìn)行出錯(cuò)處理的問(wèn)題,可以在一個(gè)要發(fā)送的字符串后再發(fā)送一個(gè)校驗(yàn)和,當(dāng)收到返回的校驗(yàn)和與發(fā)送的校驗(yàn)和不一致時(shí)再進(jìn)行重發(fā),再比如所采用的RS232C傳輸距離很短,并且抗干擾能力很差,這時(shí)需要將總線轉(zhuǎn)換成差分傳輸?shù)腞S485/RS422。另外,稍加改進(jìn),就可實(shí)現(xiàn)PC機(jī)與多片51單片機(jī)的串行通信,這時(shí)由于共用一條總線,必須給每個(gè)單片機(jī)分配一個(gè)地址,然后由PC機(jī)對(duì)總線進(jìn)行仲裁,只有獲得總線使用權(quán)的單片機(jī)才能與上位機(jī)進(jìn)行通信,這里不再贅述。總之,本文只是為PC和單片機(jī)串行通信提供了一個(gè)典型的范例,要應(yīng)用到實(shí)際的項(xiàng)目中去,還需要根據(jù)實(shí)際的情況具體考慮,靈活應(yīng)用,最終才能形成一個(gè)可靠的基于PC與單片機(jī)的串行通信系統(tǒng)。參考文獻(xiàn)[1]王福瑞.單片微機(jī)測(cè)控系統(tǒng)設(shè)計(jì)大全[M].北京:北京航空航天大學(xué)出版社,1998.06[2]李華.MCS一51系列單片機(jī)實(shí)用接口技術(shù)[M].北京:北京航空航天大學(xué)出版社,1993.07[3]李朝青.PC機(jī)與單片機(jī)&DSP數(shù)據(jù)通信技術(shù)選編<1>[M].北京:北京航空航天大學(xué)出版社,2003.12[4]劉金伍.單片機(jī)應(yīng)用與實(shí)踐[M].北京:北京航空航天大學(xué)出版社,1995.08[5]劉大茂.智能儀器:?jiǎn)纹瑱C(jī)應(yīng)用系統(tǒng)設(shè)計(jì)[M].北京:機(jī)械工業(yè)出版社,1998.04[6]萬(wàn)福君,潘松峰.單片微機(jī)原理系統(tǒng)設(shè)計(jì)與應(yīng)用[M].XX:中國(guó)科學(xué)技術(shù)大學(xué)出版社,2001.01[7][美]安格斯生.串行端口大全[M].精英科技譯.北京:中國(guó)電力出版社,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系列單片機(jī)串行通信的設(shè)計(jì)摘要:介紹了一種采用Linux操作系統(tǒng)的PC機(jī)通過(guò)串口和MCS-51系列單片機(jī)進(jìn)行通信的設(shè)計(jì)方法,給出了基本的硬件原理和通信程序設(shè)計(jì)的2種方法。實(shí)驗(yàn)證明,這種方案簡(jiǎn)單可靠、價(jià)格低廉,為L(zhǎng)inux在工業(yè)控制等領(lǐng)域中的應(yīng)用提供了一種解決方法。關(guān)鍵詞:Linux;單片機(jī);串行通信;工業(yè)控制單片機(jī)性能穩(wěn)定、價(jià)格低廉、功能強(qiáng)大,在智能儀器、工業(yè)裝備以及日用電子消費(fèi)品中得到了越來(lái)越廣泛的應(yīng)用。在單片機(jī)的輸入輸出控制中,除直接接上小鍵盤和LCD顯示屏等方法外,一般都通過(guò)串口和上位機(jī)PC進(jìn)行通信,而后一種方法由于能實(shí)現(xiàn)遠(yuǎn)程控制,并且能夠利用PC機(jī)強(qiáng)大的數(shù)據(jù)處理功能以及友好的控制界面,顯得尤為重要。在一般的利用PC機(jī)對(duì)單片機(jī)進(jìn)行控制的場(chǎng)合,都是采用Windows作為上位機(jī)的平臺(tái),其優(yōu)點(diǎn)是界面友好,編程和操作都比較容易,缺點(diǎn)是穩(wěn)定性太差,這對(duì)于需要連續(xù)數(shù)天或數(shù)月運(yùn)行的裝置來(lái)說(shuō),尤其不合適。在要求比較苛刻的場(chǎng)合,一般都采用UNIX工作站作為主控平臺(tái),如XX同步輻射加速器的主控平臺(tái)采用的是SUN的Solaris工作站系統(tǒng),然而UNIX工作站昂貴的價(jià)格又大大限制了其使用的范圍。近年來(lái),隨著Linux的迅猛發(fā)展,使其逐漸從少數(shù)人的玩具變成了主流的操作系統(tǒng)。Linux是遵循GPL協(xié)議的免費(fèi)源代碼開(kāi)放軟件,任何人都可以自由的從Internet上取得其源程序,也可在GPL的協(xié)議下修改其源代碼以適應(yīng)特定的應(yīng)用,其運(yùn)行在普通的PC上,性能穩(wěn)定,特別適于做工業(yè)控制,因此實(shí)現(xiàn)Linux和單片機(jī)的串行通信非常有意義,他可以是昂貴的UNIX工作站的一種可選的替代方法。硬件原理

目前國(guó)內(nèi)使用較多的為MCS-51系列的單片機(jī),因此選用的單片機(jī)實(shí)驗(yàn)對(duì)象為一片AT89C51,圖1是硬件原理圖,由于要實(shí)現(xiàn)符合RS232C的串行通信,還應(yīng)該用一片ICL232CPE<MAX232>作為串行通信的電平轉(zhuǎn)換電路。在實(shí)驗(yàn)過(guò)程中,為了查看通信是否成功,除了讓單片機(jī)對(duì)上位機(jī)回送數(shù)據(jù)外,還在單片機(jī)外圍擴(kuò)展了幾片鎖存器,幾個(gè)LED發(fā)光二極管和幾個(gè)小鍵盤。串行通信是采用最簡(jiǎn)單的TxD,RxD,GND三線制連接,注意TxD和RxD兩邊應(yīng)該交叉連線。上位機(jī)是一臺(tái)普通的PC機(jī),共有2個(gè)串行口COM1,COM2,其運(yùn)行RedHat8.0,實(shí)際上,如果不要求運(yùn)行Gnome或KDE等圖形界面,Linux對(duì)系統(tǒng)硬件的要求相當(dāng)?shù)?。?shí)驗(yàn)證明,此電路簡(jiǎn)單可靠,非常適用于測(cè)試串行通信。2串行通信程序設(shè)計(jì)串行通信程序包括下位機(jī)單片機(jī)和上位機(jī)PC機(jī)的程序。單片機(jī)接收上位機(jī)傳來(lái)的數(shù)據(jù),放到片內(nèi)RAM里面,再將RAM內(nèi)數(shù)據(jù)同時(shí)發(fā)送到外部擴(kuò)展鎖存器和上位機(jī),由此可以判斷通信是否成功。此程序由匯編語(yǔ)言寫成,初始化時(shí)波特率設(shè)置為4800b/s,通信方式為8-N-1。上位機(jī)程序的編寫是關(guān)鍵部分,因?yàn)橐獙?duì)串口硬件設(shè)備進(jìn)行操作,有2種方法,一是利用Linux內(nèi)核自帶的串口驅(qū)動(dòng)程序,另外一種方法就是直接讀寫串口硬件端口,下面分別介紹。2.1利用串口驅(qū)動(dòng)程序的編程方法利用Linux自身的串口驅(qū)動(dòng)程序進(jìn)行編程,實(shí)際上就是調(diào)用驅(qū)動(dòng)程序的一系列函數(shù),完成串口通信參數(shù)的設(shè)置,數(shù)據(jù)的發(fā)送和接收。在這種方法中,Linux給每個(gè)串口都分配一個(gè)文件索引號(hào),有相應(yīng)的文件名稱,實(shí)際上是將硬件設(shè)備看成一種特殊的文件,如COM1,COM2對(duì)應(yīng)的文件分別為/dev/ttyS0,/dev/ttyS1,操作這2個(gè)串口實(shí)際上就是操作這2個(gè)文件,而對(duì)硬件設(shè)備文件的操作與對(duì)普通文件的操作并沒(méi)有什么不同,都可以使用相同的文件I/O調(diào)用函數(shù)<open,write,read,close>,不同之處在于用系統(tǒng)調(diào)用open<>打開(kāi)串口得到相應(yīng)設(shè)備的文件描述符以后,先要對(duì)其進(jìn)行初始化,設(shè)置一些特定的參數(shù),如波特率、數(shù)據(jù)位、輸入輸出方式等,這些參數(shù)存放在structtermios中,函數(shù)tcsetattr<>可以設(shè)置串口的structtermios,tcgetattr<>可以得到串口的structtermios。設(shè)置完通信參數(shù)后就可用read和write對(duì)串口文件進(jìn)行讀寫了。運(yùn)行程序時(shí)要注意用戶是否有對(duì)要操作的串口文件進(jìn)行讀寫的權(quán)力,可以用chmod命令進(jìn)行文件權(quán)限修改。初始化以后就開(kāi)始發(fā)送和接收數(shù)據(jù),先將一個(gè)字符串發(fā)送給單片機(jī),單片機(jī)接收到數(shù)據(jù)后,將數(shù)據(jù)返回給上位機(jī)。但需要注意的是,由于上位機(jī)速度比單片機(jī)快得多,一次不能發(fā)送過(guò)多的數(shù)據(jù),否則極有可能使發(fā)送緩沖區(qū)溢出而丟失數(shù)據(jù),發(fā)送過(guò)后,還需等待一段時(shí)間,使單片機(jī)將數(shù)據(jù)完全發(fā)送到上位機(jī)后,再進(jìn)行讀取。2.2直接讀寫串口硬件端口的方法在使用這個(gè)方法的時(shí)候,必須對(duì)串口通信的硬件原理有一些了解。PC機(jī)的串口是由通用異步收發(fā)器8250UART為核心構(gòu)成的,寄存器基地址分別是0x3f8<COM1>和0x2f8<COM2>,還有其他的一些用于控制的寄存器。有很多寄存器是與Modem相關(guān)的,而在使用三線制進(jìn)行通信時(shí)用不到,只用關(guān)心與通信相關(guān)的寄存器,比起使用為通用功能編寫的串口設(shè)備驅(qū)動(dòng)程序來(lái),直接讀寫相關(guān)寄存器效率更高。初始化后,就可以進(jìn)行數(shù)據(jù)的收發(fā)了,接受數(shù)據(jù)之前必須保證接收數(shù)據(jù)就緒,這可以通過(guò)0x2fd的D0來(lái)判斷,發(fā)送數(shù)據(jù)之前必須保證發(fā)送寄存器為空,這可以通過(guò)0x2fd的D5來(lái)判斷。結(jié)語(yǔ)實(shí)驗(yàn)表明,此系統(tǒng)采用的2種方法都完全實(shí)現(xiàn)了LinuxPC機(jī)與單片機(jī)之間點(diǎn)對(duì)點(diǎn)的通信,方法簡(jiǎn)單

溫馨提示

  • 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ù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫(kù)網(wǎng)僅提供信息存儲(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)論