單片機(jī)與PC機(jī)串口通信的設(shè)計(jì).doc_第1頁
單片機(jī)與PC機(jī)串口通信的設(shè)計(jì).doc_第2頁
單片機(jī)與PC機(jī)串口通信的設(shè)計(jì).doc_第3頁
單片機(jī)與PC機(jī)串口通信的設(shè)計(jì).doc_第4頁
單片機(jī)與PC機(jī)串口通信的設(shè)計(jì).doc_第5頁
已閱讀5頁,還剩32頁未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡介

學(xué)習(xí)資料收集于網(wǎng)絡(luò),僅供參考引言 AT89C51是一款高性能的8位單片微型計(jì)算機(jī),它采用了CMOS工藝和ATMEL公司的高密度NVRAMUII(易失性隨機(jī)存儲器)技術(shù),片內(nèi)帶有一個(gè)4KB的FLASH FPROM(可擦除、可編程只讀存儲器),作為INTEL8051的換代產(chǎn)品,其輸出引腳和指令系統(tǒng)與MCS一51完全兼容。由于AT89C51 單片機(jī)具有集成度高、面向控制、系統(tǒng)結(jié)構(gòu)簡單、價(jià)格便宜等諸多優(yōu)點(diǎn),因而在智能化儀器儀表、數(shù)據(jù)采集、數(shù)據(jù)測量等方面有著廣泛的應(yīng)用。但是,實(shí)際應(yīng)用中單片機(jī)在數(shù)據(jù)處理能力、人機(jī)交互等方面往往不能滿足要求,因而通常用PC來彌補(bǔ)單片機(jī)的這些不足。例如,在工程應(yīng)用中,常常由一臺PC機(jī)和一臺單片機(jī)構(gòu)成主從式計(jì)算機(jī)測控系統(tǒng)。在這樣的系統(tǒng)中,以單片機(jī)為核心的智能測控儀表(從機(jī))作為現(xiàn)場測控設(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)勢。隨著單片機(jī)和微機(jī)技術(shù)的不斷發(fā)展,特別是網(wǎng)絡(luò)技術(shù)在測控領(lǐng)域的廣泛應(yīng)用,由PC機(jī)和多臺單片機(jī)構(gòu)成的多機(jī)網(wǎng)絡(luò)測控系統(tǒng)已成為單片機(jī)技術(shù)發(fā)展的一個(gè)方向。它結(jié)合了單片機(jī)在實(shí)時(shí)數(shù)據(jù)采集和微機(jī)對圖形處理、顯示的優(yōu)點(diǎn)。同時(shí),windows環(huán)境下后臺微機(jī)在數(shù)據(jù)庫管理上具有明顯的優(yōu)勢。二者結(jié)合,使得單片機(jī)的應(yīng)用已不僅僅局限于傳統(tǒng)意義上的自動監(jiān)測或控制,而形成了向以網(wǎng)絡(luò)為核心的分布式多點(diǎn)系統(tǒng)發(fā)展的趨勢。1總體方案設(shè)計(jì)單片機(jī)鍵盤LCD串行通信電平轉(zhuǎn)換接口PC發(fā)聲電路硬件由單片機(jī)89C51、11.059M晶振,30PF電容、22uf/25V電容、10uf/25V電容10K電阻、LCM1601、44鍵盤、LM386、蜂鳴器、按鍵、Max232組成。具體可實(shí)現(xiàn)由AT89C51鍵盤(P1)發(fā)送數(shù)據(jù)(由LCD顯示),PC做接收且屏幕顯示該值;也可由PC鍵盤發(fā)送數(shù)據(jù),由8051接收并顯示至LCD。系統(tǒng)結(jié)構(gòu)如圖1-1所示。圖1-1 系統(tǒng)結(jié)構(gòu)圖LCD:系統(tǒng)顯示界面采用LCM1601,一行16字符的液晶顯示模塊,顯示AT89C51接收或PC發(fā)來的數(shù)據(jù)。鍵盤:輸入按鍵采用4行4列非編碼矩陣鍵盤,配合液晶界面用于和PC機(jī)通信。發(fā)聲電路:發(fā)聲電路采用LM386作為音頻放大電路,在有按鍵按下的時(shí)候會發(fā)出相應(yīng)的按鍵音。串行通信電平轉(zhuǎn)換接口:AT89C51與PC間的串行數(shù)據(jù)通信采用的是最簡單的TxD,RxD,GND三線制連接,從單片機(jī)TX和RX端CMOS電平到PC的標(biāo)準(zhǔn)RS-232電平的轉(zhuǎn)換器件選用Maxim的Max232。2硬件電路設(shè)計(jì)總電路圖見附錄C。2.1 單片機(jī)AT89C51AT89C51是一種帶4K字節(jié)閃爍可編程可擦除只讀存儲器(FPEROMFalsh Programmable and Erasable Read Only Memory)的低電壓,高性能CMOS8位微處理器,俗稱單片機(jī)。該器件采用ATMEL高密度非易失存儲器制造技術(shù)制造,與工業(yè)標(biāo)準(zhǔn)的MCS-51指令集和輸出管腳相兼容。由于將多功能8位CPU和閃爍存儲器組合在單個(gè)芯片中,ATMEL的AT89C51是一種高效微控制器,為很多嵌入式控制系統(tǒng)提供了一種靈活性高且價(jià)廉的方案。AT89C51的管腳圖如圖2-1所示。 圖2-1 AT89C51的管腳圖主要特性:學(xué)習(xí)資料與MCS-51 兼容 4K字節(jié)可編程閃爍存儲器 壽命:1000寫/擦循環(huán)數(shù)據(jù)保留時(shí)間:10年全靜態(tài)工作:0Hz-24Hz三級程序存儲器鎖定128*8位內(nèi)部RAM32可編程I/O線兩個(gè)16位定時(shí)器/計(jì)數(shù)器5個(gè)中斷源可編程串行通道低功耗的閑置和掉電模式片內(nèi)振蕩器和時(shí)鐘電路 管腳說明:VCC:供電電壓。 GND:接地。P0口:P0口為一個(gè)8位漏級開路雙向I/O口,每腳可吸收8TTL門電流。當(dāng)P1口的管腳第一次寫1時(shí),被定義為高阻輸入。P0能夠用于外部程序數(shù)據(jù)存儲器,它可以被定義為數(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)用于外部程序存儲器或16位地址外部數(shù)據(jù)存儲器進(jìn)行存取時(shí),P2口輸出地址的高八位。在給出地址“1”時(shí),它利用內(nèi)部上拉優(yōu)勢,當(dāng)對外部八位地址數(shù)據(jù)存儲器進(jìn)行讀寫時(shí),P2口輸出其特殊功能寄存器的內(nèi)容。P2口在FLASH編程和校驗(yàn)時(shí)接收高八位地址信號和控制信號。P3口:P3口管腳是8個(gè)帶內(nèi)部上拉電阻的雙向I/O口,可接收輸出4個(gè)TTL門電流。當(dāng)P3口寫入“1”后,它們被內(nèi)部上拉為高電平,并用作輸入。作為輸入,由于外部下拉為低電平,P3口將輸出電流(ILL)這是由于上拉的緣故。 P3口也可作為AT89C51的一些特殊功能口,如表2-1所示:表2-1 P3口的一些特殊功能口口管腳 備選功能P3.0 RXD(串行輸入口)P3.1TXD(串行輸出口)P3.2 /INT0(外部中斷0)P3.3 /INT1(外部中斷1)P3.4 T0(記時(shí)器0外部輸入)P3.5T1(記時(shí)器1外部輸入)P3.6 /WR(外部數(shù)據(jù)存儲器寫選通)P3.7/RD(外部數(shù)據(jù)存儲器讀選通)P3口同時(shí)為閃爍編程和編程校驗(yàn)接收一些控制信號。RST:復(fù)位輸入。當(dāng)振蕩器復(fù)位器件時(shí),要保持RST腳兩個(gè)機(jī)器周期的高電平時(shí)間。ALE/PROG:當(dāng)訪問外部存儲器時(shí),地址鎖存允許的輸出電平用于鎖存地址的地位字節(jié)。在FLASH編程期間,此引腳用于輸入編程脈沖。在平時(shí),ALE端以不變的頻率周期輸出正脈沖信號,此頻率為振蕩器頻率的1/6。因此它可用作對外部輸出的脈沖或用于定時(shí)目的。然而要注意的是:每當(dāng)用作外部數(shù)據(jù)存儲器時(shí),將跳過一個(gè)ALE脈沖。如想禁止ALE的輸出可在SFR8EH地址上置0。此時(shí), ALE只有在執(zhí)行MOVX,MOVC指令是ALE才起作用。另外,該引腳被略微拉高。如果微處理器在外部執(zhí)行狀態(tài)ALE禁止,置位無效。/PSEN:外部程序存儲器的選通信號。在由外部程序存儲器取指期間,每個(gè)機(jī)器周期兩次/PSEN有效。但在訪問外部數(shù)據(jù)存儲器時(shí),這兩次有效的/PSEN信號將不出現(xiàn)。/EA/VPP:當(dāng)/EA保持低電平時(shí),則在此期間外部程序存儲器(0000H-FFFFH),不管是否有內(nèi)部程序存儲器。注意加密方式1時(shí),/EA將內(nèi)部鎖定為RESET;當(dāng)/EA端保持高電平時(shí),此間內(nèi)部程序存儲器。在FLASH編程期間,此引腳也用于施加12V編程電源(VPP)。XTAL1:反向振蕩放大器的輸入及內(nèi)部時(shí)鐘工作電路的輸入。XTAL2:來自反向振蕩器的輸出。AT89C51的時(shí)序:AT89C51的振蕩器輸入分別有引腳19(XTAL1)和引腳18(XTAL2)來完成。只要將這兩個(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微秒。CXTAL11918石英晶體XTAL2AT89C51C圖2-2 AT89C51的振蕩電路在本設(shè)計(jì)中石英晶體的頻率為11.0592MHZ,陶瓷電容的取值為30PF。AT89C51的復(fù)位:單片機(jī)微處理器的復(fù)位都是以外部電路來執(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)PC0000HTMOD00HACC00HTCON00HB00HTH000HPSW00HTL000HSP07HTH100HDPTR0000HTL100HP0P3FFHSCON00HIP(00000)SBUF()IE(000000)PCON(00000)二、復(fù)位電路簡單復(fù)位電路中,干擾易串入復(fù)位端,在大多數(shù)情況下不會造成單片機(jī)的錯(cuò)誤復(fù)位,但會引起內(nèi)部某些寄存器的錯(cuò)誤復(fù)位,可以在RESET引腳上接上一個(gè)去耦電容。為了保證復(fù)位電路的可靠性,常將RC電路接斯密特電路后再接入單片機(jī)和外圍IC的RESET引腳,如圖2-3所示。圖2-3 AT89C51的復(fù)位電路AT89C51的串行口:(1)基本概念數(shù)據(jù)通信的傳輸方式:常用于數(shù)據(jù)通信的傳輸方式有單工、半雙工、全雙工和多工方式。A單工方式:數(shù)據(jù)僅按一個(gè)固定的方向傳送。因?yàn)檫@種傳輸方式的用途有限,常用于串行口的打印數(shù)據(jù)傳輸與簡單系統(tǒng)間的數(shù)據(jù)采集。B雙工方式:數(shù)據(jù)可以實(shí)現(xiàn)雙向傳送,但不能同時(shí)進(jìn)行,實(shí)際的應(yīng)用采用某種協(xié)議實(shí)現(xiàn)收發(fā)開關(guān)轉(zhuǎn)換。C全雙工方式:允許雙方同時(shí)進(jìn)行數(shù)據(jù)雙向傳送,但一般全雙工電路的線路和設(shè)備比較復(fù)雜。D多工方式:以上三種傳輸方式都是同一線路傳輸一種頻率信號,為了充分的利用線路資源,可通過使用多路復(fù)用器或多路集線器,采用頻分、時(shí)分、或碼分復(fù)用技術(shù),即可實(shí)現(xiàn)在同一線路上資源共享功能,我們稱之為多工傳輸方式。串行通信的兩種通信形式A. 異步通信 在這種通信方式中,接收器和發(fā)射器有各自的時(shí)鐘,他們的工作是非同步的,異步通信用一幀來表示一個(gè)字符,其內(nèi)容如下:一個(gè)起始位,緊接著是若干個(gè)數(shù)據(jù)位,圖 是傳輸45H的數(shù)據(jù)格式。B.同步通信 同步通信格式中,發(fā)送器和接收器由同一個(gè)時(shí)鐘源控制,為了克服在異步傳輸中,每傳輸一幀字符都必須加上起始位和停止位,占用了傳輸時(shí)間,在要求傳送的數(shù)據(jù)量較大的(2)MCS-51的串行和控制寄存器MCS-51單片機(jī)串行口專用寄存器的SBUF為串行口的收發(fā)緩沖器,它是一個(gè)可尋址的專用寄存器,其中包含了接收器和發(fā)射器寄存器,可以實(shí)現(xiàn)全雙工通信。但這兩個(gè)寄存器具有同一地址(99H)。MCS-51的串行數(shù)據(jù)傳輸很簡單,只要向緩沖器寫入數(shù)據(jù)就可發(fā)送數(shù)據(jù)。而從接收緩沖器讀出數(shù)據(jù)既可接收數(shù)據(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是主動的,不可能出現(xiàn)這種情況。串行通信控制寄存器(SCON),它是一個(gè)可尋址的專用寄存器,用于串行數(shù)據(jù)通信的控制,單元地址是98H,其結(jié)構(gòu)格式如表2-3所示。表2-3 SCON寄存器結(jié)構(gòu)SCOND7D6D5D4D3D2D1D0SM0SM1SM2RENTB8RB8TIRI位地址9FH9EH8DH9CH9BH9AH99H98H下面我們對SCON控制位功能介紹如表2-4所示。1)SM0、SM1:串行口工作方式控制位表2-4 SCON控制位功能介紹SM0SM1工作方式功能說明00方式0移位寄存器方式(用于I/O擴(kuò)展)01方式18位UART,波特率可變(T1溢出率/n)10方式29位UART,波特率為fosc/64或fosc/3211方式39位UART,波特率可變(T1溢出率/ n)2)SM2:多機(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ā)出中斷申請,否則會將收到的數(shù)據(jù)放棄。當(dāng)SM2=0時(shí),只有在接收到有效停止位時(shí)才啟動RI,若沒接收到有效停止位,則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ā)送停止位的開始時(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位符號SMODGF1GF0PDIDL在CHMOS型單片機(jī)中,除SMOD位外其它位均為虛設(shè)的,SMOD是串行波特率倍增位,當(dāng)SMOD=1時(shí)串行口波特率加倍,系統(tǒng)復(fù)位默認(rèn)為SMOD=0。這里重述一下中斷允許寄存器IE對串行口有影響的位ES。ES為串行中斷允許控制位,ES=1允許串行中斷,ES=0,禁止串行中斷。如表2-6所示。表2-6 中斷允許寄存器符號EAESET1EX1ETOEX0位地址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.2 LCM1601LCM1601是一款兼容的液晶顯示模塊,支持57點(diǎn)陣和16字2行符兩種模式,背光亮度和顯示對比度可調(diào),是一種功能較簡易、價(jià)格較便宜的液晶顯示器件。它由液晶顯示屏和驅(qū)動器兩部分組成,單片機(jī)通過寫控制字方式訪問它的驅(qū)動器來實(shí)現(xiàn)對顯示屏的控制。圖2-4所示為LCM1601封裝圖。圖2-4 LCM1601封裝圖器件封裝為單列DIP16,引腳定義如表2-7所示。表2-7 LCM1601引腳說明編號標(biāo)示引腳說明1VSS電源地2VDD電源正極3V0液晶顯示偏壓4RS指令/數(shù)據(jù)選擇端(H/L)5R/W讀/寫選擇端6E使能信號7D08位數(shù)據(jù)總線8D19D210D311D412D513D614D715LED+背光源正極16LED-背光源負(fù)極2.3 44行列式掃描鍵盤簡易的行列式鍵盤不需要借助其他的I/O擴(kuò)展芯片,直接占用P1的8條口線,再利用單片機(jī)內(nèi)部的軟件來配合實(shí)現(xiàn)4 4掃描鍵盤,其特點(diǎn)是簡單且不增加成本,通常在系統(tǒng)I/O線充裕的情況下采用。2.4 音頻功率放大器件LM386LM386的接腳圖如圖2-8所示。LM386是專為低損耗電源所設(shè)計(jì)的功率放大器。它的內(nèi)建增益為20,透過pin 1 和pin8腳位間電容的搭配,增益最高可達(dá)200。LM386輸入電壓范圍可由4V12V,無作動時(shí)僅消耗4mA電流,且失真低。圖2-8 接腳圖2.5 RS-232電平轉(zhuǎn)換器件Max232MAX232芯片是MAXIM 公司生產(chǎn)的,包含兩路接收器和驅(qū)動器的IC芯片。MAX232芯片內(nèi)部有一個(gè)電源電壓轉(zhuǎn)換器,可以把輸入的+5V 電壓變換為RS-232輸出電平所需的一1O+ 10V 電壓。所以采用此芯片接口串行通信系統(tǒng)只需單一的+5V電源就可以了。對于沒有一12+12V 的場合,其適應(yīng)性更強(qiáng)。加之其價(jià)格適中,硬件接口簡單,所以被廣泛采用。圖2-9所示為Max232的封裝圖。圖 2-9 Max232封裝圖引腳說明如表2-8所示。表2-8 Max232引腳說明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擴(kuò)展芯片,直接占用P1的8條口線,再利用單片機(jī)內(nèi)部的軟件來配合實(shí)現(xiàn)4行4列的掃描鍵盤,其特點(diǎn)是簡單且不增加成本,通常在系統(tǒng)I/O線充裕的情況下采用。其原理圖如圖3-1所示。圖3-1原理圖工作原理:I/O口P2.7P2.1充當(dāng)列選線,P2.3P2.1充當(dāng)行選線。在鍵盤開始掃描的時(shí)候,首先向P2口賦行掃描初值7FH,令第一行(P2.3)為0,從第一行開始檢測。接下來檢測第一行的第一列是否鍵按下?沒有按下,則檢測第二列,如果4列掃描完畢,沒有鍵按下,則掃描下一行,如此往復(fù),直至4行4列檢測完畢。當(dāng)有鍵按下時(shí),相應(yīng)的列選線電平被拉低,首先掃描行選線,確定按鍵的行號,然后掃描列選線,確定列號,則按鍵的編號即可確定。3.2 按鍵發(fā)聲原理要產(chǎn)生音頻脈沖,只要算出某一音頻的周期,然后將此周期除以2,即為半周期的時(shí)間,利用定時(shí)器計(jì)時(shí)這個(gè)半周期時(shí)間,每當(dāng)計(jì)時(shí)到后就將輸出脈沖的I/O反相,然后重復(fù)計(jì)時(shí)此半周期時(shí)間再對I/O反相,就可在I/O引腳上得到此頻率的脈沖。計(jì)數(shù)脈沖值與頻率的關(guān)系公式如下:N=Fi2FrN:計(jì)數(shù)值;Fi:內(nèi)部計(jì)時(shí)一次為1us,故其頻率為1MHZ;Fr:要產(chǎn)生的頻率。其計(jì)數(shù)值的求法如下:T=65536-N=65536-Fi2Fr表3-1是各按鍵音符的頻率與計(jì)數(shù)值T的對照表。表3-1 各按鍵音符頻率與計(jì)數(shù)值T的對照表鍵值音符頻率(HZ)簡譜碼(T值)鍵值音符頻率(HZ)簡譜碼(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ì)的成功與否。我等軟件是用匯編完成的,需要能熟練的掌握匯編語言,還要熟悉AT89C51單片機(jī)。程序流程圖是編寫軟件的重要前提,它是在圖表上直觀的體現(xiàn)擬設(shè)計(jì)的目的及過程。也是編譯的重要依據(jù),按照流程圖一步一步編寫程序,單片機(jī)軟件主程序流程圖如圖4-1所示。是否否是開始LCD初始化設(shè)置串口初始化收到數(shù)據(jù)?檢測按鍵輸入讀入鍵值轉(zhuǎn)換成鍵碼串口發(fā)送鍵碼LCD顯示并發(fā)聲接收數(shù)據(jù)送LCD顯示圖4-1主程序流程圖4.1 CM1601軟件子程序設(shè)計(jì)LCD1601是通用的點(diǎn)陣型液晶模塊,分4位和8位數(shù)據(jù)傳輸方式。提供5X7點(diǎn)陣光標(biāo)和5X10點(diǎn)陣光標(biāo)的顯示模式。除帶有驅(qū)動IC外,還自帶液晶顯示控制IC,其本身就是一個(gè)能夠接受指令,自動控制液晶顯示的單片微機(jī)子系統(tǒng)。因此,通過軟件編程,就可以實(shí)現(xiàn)對LCM1601的操作。編程時(shí)要求CPU每一次訪問都要先對忙標(biāo)志BF進(jìn)行識別,當(dāng)BF=0時(shí),即LDC允許CPU訪問時(shí),再進(jìn)行下一步的操作。操作程序如下:4.2.1寫指令 ENABLE: MOVP1,#0FFH;令P1=FFHCLRRS;RS=0,R/W=1,讀BUSY FLAG地址計(jì)數(shù)器SETBRWCLRENOPSETBEJBP1.7,ENABLE;BUSY FLAG=0?CLRRS;RS=0,R/W=0寫入指令組CLRRWCLRECALLDELAYSETBERET4.2.2寫數(shù)據(jù)WRITE1:MOVR1,#00H;顯示TABLE表的值 A3:MOVA,R1;至TABLE取碼MOVCA,A+DPTRCALLWRITE2;顯示至LCDINCR1CJNEA,#00H,A3;是否取到“00H”結(jié)束碼?RETWRITE2:MOVP1,A;顯示數(shù)據(jù)送至P1SETBRS;RS=1,R/W=0寫入數(shù)據(jù)寄存器顯示CLRRWCLRECALLDELAYSETBERET4.2.3 LCD1601初始化MOVP1,#01H;清除屏幕CALLENABLEMOVP1,#38H;功能設(shè)定(8位,2行,57點(diǎn)矩陣)CALLENABLEMOVP1,#08H;顯示器ON,光標(biāo)ON,閃爍ONCALLENABLEMOVP1,#06H;光標(biāo)右移CALLENABLEMOVP1,#80H ;令光標(biāo)回到第一行第一個(gè)字位置CALLENABLE4.2串口通信子程序設(shè)計(jì)AT89C51的串行口是全雙工的UART,它可同時(shí)發(fā)送和接收數(shù)據(jù),是使用特殊寄存器內(nèi)的SBUF寄存器及SCON串行控制寄存器,如表4-1所示。表4-1 SCON串行控制寄存器RI:接收中斷標(biāo)志位。在模式0下,當(dāng)?shù)?位結(jié)束時(shí),硬件會將其設(shè)為1;在其他模式下,在停止位的開始時(shí)有硬件設(shè)定,次位必須由軟件清除。TI:發(fā)送中斷標(biāo)志位。在模式0下,當(dāng)?shù)?位結(jié)束時(shí),硬件會將其設(shè)為1;在其他模式下,在停止位的開始時(shí)由硬件設(shè)定,次位必由軟件清除。RB8:在模式2或3時(shí),發(fā)送的第9位放入次位。在模式1時(shí),若SM2=0,則RB8為接收到的停止位。模式0時(shí),RB8沒作用。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不動作。在模式1時(shí),若SM2=1,當(dāng)接收到的停止位不正確時(shí),RI也不動作。在模式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是可變的?,F(xiàn)在就本文中用到的MODE1作一重點(diǎn)介紹。MODE1其設(shè)定如下:MOVSCON,#00000000B;發(fā)送數(shù)據(jù)工作方式JBCTI,LOOP;發(fā)送是否完畢?是則跳至LOOP,并清除TI=0MOVSCON,#00010000B;接收數(shù)據(jù)工作方式JBCRI,LOOP;接收是否完畢?是則跳至LOOP,并清除RI=0MODE0KE可發(fā)送或接收11位的數(shù)據(jù),此10個(gè)位分別是1個(gè)起始位、8個(gè)數(shù)據(jù)位和1個(gè)停止位。MODE1發(fā)送數(shù)據(jù)的速度(稱為波特率)是可變的,由TIMER1或TIMER2控制且最好工作在MODE2(自動載入模式),這樣只要設(shè)定TH1一次即可。當(dāng)UART接收(RXD引腳)到一個(gè)字節(jié)的數(shù)據(jù)后,會使SCON寄存器內(nèi)的RI位設(shè)定為1,CPU只要檢查RI=1就可知道UART已接收到數(shù)據(jù)。若數(shù)據(jù)通過UART輸出時(shí)(TXD引腳),在8個(gè)位輸出完畢后,SCON寄存器內(nèi)的TI位會被設(shè)為1,CPU只要檢查到TI=1就可知道可以再發(fā)送下一個(gè)字節(jié)。控制波特率的寄存器為PCON,如表4-2所示。說明如下:PCON:電源控制寄存器(POWER CONTROL REGISTER)。表 4-2 電源控制寄存器SOMD:雙倍波特率位。當(dāng)串行工作于模式1、2或3時(shí),如使用TIMER1做波特率發(fā)生器,且SMOD=1則波特率為雙倍。:保留位。GF1:一般用途,對于AT89系列,GF1為通用標(biāo)志位。GF0:一般用途,對于AT89系列,GF0為通用標(biāo)志位。PD:電源下降位,對于AT89系列,PD為1時(shí)進(jìn)入掉電狀態(tài)。IDL:IDLE模式位,對于AT89系列,IDL為1是進(jìn)入空閑工作方式。注意:PD和IDLE同時(shí)為1時(shí),PD較優(yōu)先。其設(shè)定方式如下:(1) 設(shè)定波特率:MOVTMOD,#00100000B;設(shè)定TIMER1的MODE2ANLPCON,#01111110B;設(shè)SMOD=0或ORLPCON,#10000000B;設(shè)SMOD=1MOVTH1,#0FDH;設(shè)定TIMER1的計(jì)數(shù)值SETBTR1;啟動TIMER1(2)設(shè)定UART工作方式MOVSCON,#01010000B;MODE1做接收,REN=1JBCRI,LOOP2或MOVSCON,#0100000B;MODE做發(fā)送,REN=0JBCTI,LOOP2波特率的計(jì)算:(1) MODE0的波特率=振蕩器頻率12振蕩頻率=12MHZ波特率=1MHZ(2) MODE2的波特率=(2/64)振蕩頻率振蕩頻率=12MHZSMOD=0BAUD=187.5KHZSMOD=1BAUD=375KHZ(3) MODE1和MODE3:利用TIMER工作在MODE2模式(自動載入)產(chǎn)生的波特率為(2/32)振蕩頻率/(12(256-TH1)常用的各種波特率如表4-2-3所示。表4-3 常用的各種波特率波特率(bit/s)Fosc(MHZ)SMODTimer1C/T模式自動載入480012102F3H240012002F3H120012102F6H1920011.059102FDH960011.059002FDH480011.059002FAH240011.059002F4H120011.059002F8HUART的中斷要求:其中斷要求有兩種方式:(1)當(dāng)UART的接收器(RXD)接收到一個(gè)字節(jié)的數(shù)據(jù)且將其存入SBUF寄存器后,就會將RI設(shè)定為1,而對AT89C51提出中斷要求。(2)當(dāng)UART的發(fā)送器將SBUF寄存器的8個(gè)位數(shù)據(jù)發(fā)送出去后,會將TI設(shè)定為1。UART中斷要求設(shè)定的步驟:1.設(shè)定UART中斷起始地址。ORG23HJMPUART2.設(shè)定TIMER1工作在MODE2MOVTMOD,#00100000B3.設(shè)定波特率為2400ANLPCON,#01111111BMOVTH1,#0F3H4.啟動計(jì)時(shí)器SETBTRX5.設(shè)定UART工作方式MOVSCON,#010000B3.設(shè)定UART中斷功能MOVIE,#10010000B4.3 鍵盤掃描子程序設(shè)計(jì)鍵盤掃描的步驟:(1)設(shè)置P1口初始值07FH;(2)P1口右移,檢測行;(3)P1口左移,檢測列;流程圖如圖4-2所示。鍵盤接口程序如下: MOVR3,#0F7H;掃描初值(P2.3=0)MOVR1,#00H;取碼指針初值D3:MOVA,R3;載入掃描指針MOVP2,A;輸出至P2,開始掃描行MOVA,P2;讀入P2CLRCCPLC;令C=1MOVR5,#04H;檢測列D4:RLCA;左移一位(P2.7P2.4)JNCKEYIN;檢測行C=0,表示被按INCR1;沒按則取碼指針加1DJNZR5,D4;4列檢測完畢了?MOVA,R3CLRCCPLC;C=1RRCA;掃描下一行,即下一行為0MOVR3,A;存回R3掃描指針寄存器 圖4-2 讀鍵輸入子程序框圖JCD3;C=0表示掃描完畢RETKEYIN:MOV22H,R1;取碼指針存入22H地址MOVR7,#10;消除抖動D5:MOVR6,#248DJNZR6,$DJNZR7,D5D6:MOVA,P2;按鈕放開否?XRLA,R4 4.4 按鍵發(fā)聲子程序的設(shè)計(jì)按鍵發(fā)聲子程序框圖如圖4-3所示。 圖4-3按鍵發(fā)聲子程序框圖程序如下:ORG00H;主程序其始地址JMPSTART;跳至主程序 ORG0BH;TIMER0中斷其始地址JMPTIM0;跳至TIMER0中斷子程序START:MOVTMOD,#00000001B;設(shè)定TIMER0工作在MODE1MOVIE,#10000010B;中斷使能SETBTR0;啟動TIMER0D1:CALLKEY;調(diào)用KEY,判斷是否有按下?CLREA;中斷屏蔽 JBF0,D1;沒按則F0=1,沒按則F0=0MOVA,22H;有按則將取碼指針暫存地址的值載入ARLA;乘2MOVDPTR,#TABLE;至TABLE取碼,取T的值MOVCA,A+DPTR;MOVTH0,A;取到的高位字節(jié)存入TH0MOV21H,A;取到的高位字節(jié)存入(21H)MOVA,22H;再載入取碼指針RLA;乘2INCA;加1MOVCA,A+DPTR;至TABLE取相對的低位字節(jié)計(jì)數(shù)值 MOVTL0,A;取到的高位字節(jié)存入TL0MOV20H,A;取到的高位字節(jié)存入(20H)D2:CALLKEY;調(diào)用KEY,判斷是否有鍵按下SETBEA;中斷使能JBF0,D1;有按否?JMPD2;;有則跳至D2KEY:SETBF0;設(shè)F0=1MOVR3,#0F7H;掃描初值(P2.3=0)MOVR1,#00H;取碼指針初值D3:MOVA,R3;載入掃描指針MOVP2,A;輸出至P2,開始掃描行MOVA,P2;讀入P2CLRCCPLC;令C=1MOVR5,#04H;檢測列D4:RLCA;左移一位(P2.7P2.4)JNCKEYIN;檢測行C=0,表示被按INCR1;沒按則取碼指針加1DJNZR5,D4;4列檢測完畢了?MOVA,R3CLRCCPLC;C=1RRCA;掃描下一行,即下一行為0MOVR3,A;存回R3掃描指針寄存器JCD3;C=0表示掃描完畢RETKEYIN:MOV22H,R1;取碼指針存入22H地址CLRF0;令F0=0RETTIM0:PUSHACC;將A的值暫存于堆棧PUSHPSW;將PSW的值暫存于堆棧MOVTL0,20H;重設(shè)計(jì)數(shù)值MOVTH0,21HCPLP3.4;將P3.4反相POPPSW;至堆棧取回PSW的值POPACC;至堆棧取回A的值RETITABLE:DW64021,64103,64260,64400DW64524,64580,64684,64777DW64820,64898,64968,65030DW65058,65110,65157,651785軟硬件調(diào)試及結(jié)果5.1 軟件仿真軟件仿真使用的是ISIS 6 Professional,它可以完成單片機(jī)的電路仿真。圖5-5-1是軟件仿真的結(jié)果。圖5-1-1 軟件仿真的結(jié)果5.2硬件焊接硬件的焊接是畢業(yè)設(shè)計(jì)中重要的環(huán)節(jié),用的工具很簡單:電烙鐵、焊絲和鑷子。因?yàn)槲覀冞x用的是實(shí)驗(yàn)板,所以要用導(dǎo)線把各個(gè)元器件連接起來,這就要有一定的技術(shù)基礎(chǔ),幸好這個(gè)在我們以前的生產(chǎn)實(shí)習(xí)中已經(jīng)掌握。焊接要細(xì)心,還要有耐心。焊接前要對照電路圖對元器件有一個(gè)合理的布局,那樣的話就會使電路簡潔明朗,而且不易出錯(cuò),即使出錯(cuò)也容易檢查。5.3調(diào)試調(diào)試的時(shí)候,PC機(jī)可以使用ComTools串口調(diào)試工具,而不必自己編寫程序。ComTools的界面如圖5-3-1所示。圖5-3-1 ComTools串口調(diào)試工具操作界面它的主要功能如下:可設(shè)置各種通訊速率、奇偶校驗(yàn)、數(shù)據(jù)位和停止位;可分別設(shè)置ASCII碼(包括中文)或十六進(jìn)制數(shù)據(jù)格式的發(fā)送模式或接收模式;能將接收數(shù)據(jù)保存成文本文件,便于觀察分析;自動保存設(shè)置參數(shù),無需每次重新設(shè)置;可以設(shè)置16條定時(shí)自動發(fā)送的數(shù)據(jù),以及每條數(shù)據(jù)發(fā)送后的延時(shí)時(shí)間;可以同時(shí)監(jiān)控2個(gè)串口,利用特制電纜可監(jiān)聽2個(gè)串口設(shè)備之間的通訊過程;發(fā)送數(shù)據(jù)時(shí),可自動計(jì)算并添加和校驗(yàn)發(fā)送;DTR自動控制是為了方便RS485通訊測試而添加的功能;方便的查找功能,使你可以輕松搜索接收文本框中的字符;使用快捷鍵可快速調(diào)用最近五次發(fā)送的不同數(shù)據(jù)。5.4 結(jié)果通過軟件仿真,單片機(jī)可以向PC機(jī)發(fā)送數(shù)據(jù),同時(shí)接收PC機(jī)發(fā)來的數(shù)據(jù),完全實(shí)現(xiàn)了單片機(jī)與PC機(jī)之間點(diǎn)對點(diǎn)的通信。由于5.12地震的影響,畢設(shè)暫停了一段時(shí)間,加之器材室元器件缺少我所需的器件,硬件電的路焊接也就沒有完成。6結(jié)語實(shí)驗(yàn)表明,此系統(tǒng)完全實(shí)現(xiàn)了PC機(jī)與單片機(jī)之間點(diǎn)對點(diǎn)的通信,方法簡單可靠,基本上在需要用到PC機(jī)與單片機(jī)串行通信的場合均可采用此種方法。隨著近年來PC在國內(nèi)應(yīng)用范圍的日益壯大,在工業(yè)控制、數(shù)據(jù)采集等領(lǐng)域越來越多的采用PC,本文可以算作是一個(gè)有益的嘗試。當(dāng)然在實(shí)際應(yīng)用中還需要考慮一些問題,比如進(jìn)行出錯(cuò)處理的問題,可以在一個(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ī)對總線進(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ī)測控系統(tǒng)設(shè)計(jì)大全M北京:北京航空航天大學(xué)出版社,1998062李華MCS一51系列單片機(jī)實(shí)用接口技術(shù)M北京:北京航空航天大學(xué)出版社,1993073李朝青PC機(jī)與單片機(jī)&DSP數(shù)據(jù)通信技術(shù)選編(1)M北京:北京航空航天大學(xué)出版社,2003124劉金伍單片機(jī)應(yīng)用與實(shí)踐M北京:北京航空航天大學(xué)出版社,1995085劉大茂智能儀器:單片機(jī)應(yīng)用系統(tǒng)設(shè)計(jì)M北京:機(jī)械工業(yè)出版社,1998046萬福君,潘松峰單片微機(jī)原理系統(tǒng)設(shè)計(jì)與應(yīng)用M合肥:中國科學(xué)技術(shù)大學(xué)出版社,2001017美安格斯生串行端口大全M精英科技譯北京:中國電力出版社,200101附錄A 英文資料Linux PC and 51 series monolithic integrated circuit serial communication designAbstract: Introduced one kind uses Linux operating system PC machine carries on the correspondence through the serial port and the MCS-51 series monolithic integrated circuit the design method, has given the basic hardware principle and the signal procedure design 2 methods. The experiment proved that, this kind of plan simple reliable, the price is inexpensive, was Linux in domain and so on in industry control applications has provided one solution.Key word: Linux; Monolithic integrated circuit; Serial communication; Industry control.The monolithic integrated circuit performance stable, the price inexpensive, the function is formidable, in the intelligent instrument, industry equipment as well as in the everyday use electronic consumable obtained the more and more widespread application. In the monolithic integrated circuit input output control, except directly joins small methods and so on outside keyboard and LCD display monitor, generally all and on position machine PC carries on the correspondence through the serial port, but latter method because can realize the long-distance control, and can use the PC machine formidable data processing function as well as the friendly control interface, appears especially importantly. Carries on the control in general use PC machine to the monolithic integrated circuit the situation, all is uses Windows to take on the position machine platform, its merit is the contact surface is friendly, the programming and the operation quite is all easy, the shortcoming is the stability too is bad, this regarding needs the installment which the consecutive number day or several months move, is especially ina

溫馨提示

  • 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)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論