紅外控制的RS-485通信系統(tǒng)設(shè)計(jì).doc_第1頁(yè)
紅外控制的RS-485通信系統(tǒng)設(shè)計(jì).doc_第2頁(yè)
紅外控制的RS-485通信系統(tǒng)設(shè)計(jì).doc_第3頁(yè)
紅外控制的RS-485通信系統(tǒng)設(shè)計(jì).doc_第4頁(yè)
紅外控制的RS-485通信系統(tǒng)設(shè)計(jì).doc_第5頁(yè)
已閱讀5頁(yè),還剩40頁(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)介

本科畢業(yè)設(shè)計(jì)說(shuō)明書(shū)(論文) 第II頁(yè)共II頁(yè)目 錄第1章 引 言31.1 RS-485通信技術(shù)的發(fā)展31.2 設(shè)計(jì)任務(wù)與方案31.2.1 設(shè)計(jì)任務(wù)31.2.2 系統(tǒng)總體設(shè)計(jì)方案4第2章 系統(tǒng)硬件設(shè)計(jì)52.1 硬件系統(tǒng)的結(jié)構(gòu)52.2 系統(tǒng)部件功能描述52.2.1 AT89C51單片機(jī)52.2.2 單片機(jī)最小應(yīng)用系統(tǒng)72.2.3 紅外接收102.2.4 MAX485接口電路112.3 RS-485串口標(biāo)準(zhǔn)13第3章 系統(tǒng)的軟件設(shè)計(jì)153.1 MCS-51匯編語(yǔ)言簡(jiǎn)介153.2 串行通信原理153.2.1 數(shù)據(jù)通信的基本概念153.2.2 串行通信的過(guò)程163.2.3 串行通信協(xié)議163.3 串行通信程序設(shè)計(jì)173.3.1 串行口的結(jié)構(gòu)和功能173.3.2 選擇串行口工作方式183.3.3 串行口波特率的設(shè)置183.3.4 初始化串口193.3.5 程序的編制193.4 紅外通信原理203.4.1 紅外發(fā)送原理213.4.2 紅外解碼原理223.5 紅外解碼程序設(shè)計(jì)223.5.1 延時(shí)子程序223.5.2 解碼子程序233.6 RS-485程序設(shè)計(jì)流程圖253.6.1 數(shù)據(jù)接收部分253.6.2 命令執(zhí)行部分253.6.3 數(shù)據(jù)發(fā)送部分26第4章 系統(tǒng)的調(diào)試284.1 WAVE6000軟件簡(jiǎn)介284.2 程序調(diào)試284.3 系統(tǒng)硬件的調(diào)試30總 結(jié)31致 謝32參 考 文 獻(xiàn)33附 錄 一34附 錄 二35本科畢業(yè)設(shè)計(jì)說(shuō)明書(shū)(論文) 第45頁(yè)共45頁(yè)第1章 引 言1.1 RS-485通信技術(shù)的發(fā)展單片機(jī)技術(shù)和PC機(jī)技術(shù)在現(xiàn)實(shí)生活中都起著不可取代的作用,而結(jié)合這兩種技術(shù)的應(yīng)用有著極大的發(fā)展前景。單片機(jī)和PC機(jī)串行通信技術(shù)有著其特有的魅力,現(xiàn)已經(jīng)在工業(yè)、農(nóng)業(yè)、科研等各個(gè)領(lǐng)域廣泛地應(yīng)用。它憑著成本低、實(shí)現(xiàn)簡(jiǎn)單等特點(diǎn),在單片機(jī)與PC機(jī)的通信中占著一席之地。如今形成了RS-232總線標(biāo)準(zhǔn)、RS-485總線標(biāo)準(zhǔn)、總線、CAN總線、無(wú)線通信、USB總線等并行發(fā)展的趨勢(shì)。可以預(yù)測(cè)單片機(jī)和PC機(jī)串行通信技術(shù)的應(yīng)用將更為廣泛,并隨著其他新技術(shù)的發(fā)展而發(fā)展。單片機(jī)與微機(jī)之間以RS-232通信最為常見(jiàn),微機(jī)對(duì)外的兩個(gè)串口COM1、COM2都是專門(mén)為RS-232通信而設(shè)置的。雖然RS-232的通信方式方便,但它也有一些缺點(diǎn)。例如,RS-232只能實(shí)現(xiàn)短距離通信,通常只有十余米,要實(shí)現(xiàn)長(zhǎng)距離通信還得依賴于調(diào)制解調(diào)器。另外,RS-232對(duì)地而言是共模傳輸方式,而各種電氣干擾大多也是對(duì)地共模方式,它的抗干擾能力不理想。RS-485通信方式與RS-232相比有很多優(yōu)點(diǎn),首先它的通信距離比RS-232要遠(yuǎn)得多,通常可以做到數(shù)百米甚至千米以上,而且還可以實(shí)現(xiàn)多點(diǎn)通信方式,從而可以建立一個(gè)小范圍內(nèi)的局域網(wǎng),因而更有實(shí)用價(jià)值。RS-485采用差分信號(hào)傳輸方式,它的抗干擾能力比RS-232強(qiáng)的多,即便在信號(hào)電壓比較小的情況下也能獲得穩(wěn)定的傳輸。所以RS-485通信方式比RS-232應(yīng)用要廣泛。近年來(lái),紅外遙控技術(shù)在工業(yè)生產(chǎn)、家用電器、安全保衛(wèi)以及人們的日常生活中的使用越來(lái)越廣泛,特別是在家庭生活中,如電視、空調(diào)的遙控器,智能開(kāi)關(guān),電梯等。利用紅外遙控技術(shù)具有的控制簡(jiǎn)單、實(shí)施方便、傳輸可靠性高的特點(diǎn),將紅外遙控技術(shù)和RS-485通信技術(shù)結(jié)合起來(lái),實(shí)現(xiàn)基于紅外控制的RS-485通信系統(tǒng)。這個(gè)通信系統(tǒng)將更加實(shí)用,也更容易實(shí)現(xiàn)。研究這個(gè)課題對(duì)于了解RS-485通信系統(tǒng)、紅外遙控技術(shù)都會(huì)有幫助。1.2 設(shè)計(jì)任務(wù)與方案1.2.1 設(shè)計(jì)任務(wù) 采用51單片機(jī)作為微處理器,設(shè)計(jì)出紅外控制的RS-485通信系統(tǒng)。要能過(guò)實(shí)現(xiàn)基于紅外控制的,可靠的RS-485串行通信。1.2.2 系統(tǒng)總體設(shè)計(jì)方案本次設(shè)計(jì)采用AT89C51單片機(jī)作為微處理器,51系列單片機(jī)以其優(yōu)良的性價(jià)比,得到了廣泛的應(yīng)用。其特點(diǎn)主要有以下幾點(diǎn):1.可靠性高因?yàn)樾酒前垂I(yè)測(cè)控環(huán)境要求設(shè)計(jì)的,故抗干擾的能力優(yōu)于PC 機(jī)。系統(tǒng)軟件(如:程序指令,常數(shù),表格)固化在ROM 中,不易受病毒破壞。許多信號(hào)的通道均在一個(gè)芯片內(nèi),所以運(yùn)作時(shí)系統(tǒng)穩(wěn)定可靠。2.便于擴(kuò)展片內(nèi)具有計(jì)算機(jī)正常運(yùn)行所必需的部件,片外有很多供擴(kuò)展用的(總線、并行和串行的輸入/輸出)管腳,很容易組成一定規(guī)模的計(jì)算機(jī)應(yīng)用系統(tǒng)。3.控制功能強(qiáng)具有豐富的控制指令。如:條件分支轉(zhuǎn)移指令,I/O 口的邏輯操作指令,位處理指令。4.實(shí)用性好體積小,功耗低,價(jià)格便宜,易于產(chǎn)品化。整個(gè)系統(tǒng)分為兩大部分,第一部分是紅外發(fā)射(紅外遙控器),第二部分是紅外接收電路。本次設(shè)計(jì)所采用的紅外遙控器是現(xiàn)成的,里面的發(fā)射芯片是LC7461。紅外接收電路包括紅外接收和MAX485接口兩部分。當(dāng)紅外遙控器有鍵按下時(shí),紅外接收器接收到來(lái)自遙控發(fā)射器的紅外信號(hào),將收到的紅外遙控信號(hào)轉(zhuǎn)為電信號(hào),經(jīng)放大、調(diào)解、濾波后,經(jīng)紅外接收器將原編碼輸入到AT89C51的外部中斷0的引腳,然后由AT89C51對(duì)接收到的原編碼信號(hào)進(jìn)行判斷、識(shí)別,然后做出相應(yīng)判斷。PC機(jī)通過(guò)MAX485芯片實(shí)現(xiàn)和單片機(jī)的通信,紅外信號(hào)經(jīng)過(guò)解碼以后,按遙控器不同的鍵,在串口調(diào)試助手窗口會(huì)有不同的數(shù)字顯示。第2章 系統(tǒng)硬件設(shè)計(jì)2.1 硬件系統(tǒng)的結(jié)構(gòu)整個(gè)硬件系統(tǒng)是由紅外接收模塊和MAX485接口電路兩大部分組成,紅外接收模塊的作用是將接收的紅外信號(hào)轉(zhuǎn)換為電信號(hào),經(jīng)放大、調(diào)解、濾波后,輸入到AT89C51,然后由AT89C51對(duì)所接收的原編碼信號(hào)進(jìn)行判斷、識(shí)別、然后做出相應(yīng)的處理。MAX485接口電路負(fù)責(zé)傳送數(shù)據(jù)。2.2 系統(tǒng)部件功能描述2.2.1 AT89C51單片機(jī)AT89C51是一種帶4K字節(jié)閃爍可編程可擦除只讀存儲(chǔ)器(FPEROMFalsh Programmable and Erasable Read Only Memory)的低電壓,高性能CMOS 8位微處理器。該器件采用ATMEL高密度非易失存儲(chǔ)器制造技術(shù)制造,與工業(yè)標(biāo)準(zhǔn)的MCS-51指令集和輸出管腳相兼容。由于將多功能8位CPU和閃爍存儲(chǔ)器組合在單個(gè)芯片中,ATMEL的AT89C51是一種高效微控制器,為很多嵌入式控制系統(tǒng)提供了一種靈活性高且價(jià)廉的方案。圖2.1所示為AT89C51的引腳圖,它的主要功能引腳有:1) 電源引腳Vcc和VssVcc(40腳):電源端,為+5V。Vss(20腳):接地端。2) 外接晶體引腳XTAL1和XTAL2XTAL2(18腳):接外部晶體和微調(diào)電容的一端。在89C51片內(nèi)它是振蕩電路反相放大器的輸出端,振蕩電路的頻率就是晶體的固有頻率。若須采用外部時(shí)鐘電路,則該引腳懸空。要檢查89C51的振蕩電路是否正常工作,可用示波器查看XTAL2端是否有脈沖信號(hào)輸出。XTAL1(19腳):接外部晶體和微調(diào)電容的另一端。在片內(nèi),它是振蕩電路反相放大器的輸入端。在采用外部時(shí)鐘時(shí),該引腳輸入外部時(shí)鐘脈沖。3) 控制信號(hào)引腳RST RST(9腳):RST是復(fù)位信號(hào)輸入端,高電平有效。當(dāng)此輸入端保持兩個(gè)機(jī)器周期(24個(gè)時(shí)鐘振蕩周期)的高電平時(shí),該引腳輸入外部時(shí)鐘脈沖。4) 輸入/輸出端口P0、P1、P2和P3P0端口(P0.0P0.7,3932 腳):P0口是一個(gè)漏極開(kāi)路的8位準(zhǔn)雙向I/O端口。作為漏極開(kāi)路的八路輸出端口,每次能驅(qū)動(dòng)8個(gè)LS型TTL負(fù)載。當(dāng)P0口作為輸入口使用時(shí),應(yīng)先向口鎖存器(地址80H)寫(xiě)入全1,此時(shí)P0口的全部引腳懸空,可作為高阻抗輸入。P1端口(P1.0P1.7,18 腳):P1口是一個(gè)帶有內(nèi)部上拉電阻的8位雙向I/O端口。P1的輸出緩沖器可驅(qū)動(dòng)(吸收或輸出電流方式)4個(gè)TTL輸入。對(duì)端口寫(xiě)1時(shí),通過(guò)內(nèi)部的上拉電阻把端口拉到高電位,這時(shí)可用作輸入口。P1作輸入口使用時(shí),因?yàn)橛袃?nèi)部的上拉電阻,那些被外部信號(hào)拉低的引腳會(huì)輸出一個(gè)電流()。P2端口(P2.0P2.7,2128 腳):P2口是一個(gè)帶有內(nèi)部上拉電阻的8位雙向I/O端口。P2的輸出緩沖器可驅(qū)動(dòng)(吸收或輸出電流方式)4個(gè)TTL輸入。對(duì)端口寫(xiě)1時(shí),通過(guò)內(nèi)部的上拉電阻把端口拉到高電位,這時(shí)可用作輸入口。P2作輸入口使用時(shí),因?yàn)橛袃?nèi)部的上拉電阻,那些被外部信號(hào)拉低的引腳會(huì)輸出一個(gè)電流()。P3端口(2128 腳):P3口是一個(gè)帶有內(nèi)部上拉電阻的8位雙向I/O端口。P3口的輸出緩沖器可驅(qū)動(dòng)(吸收或輸出電流方式)4個(gè)TTL輸入。P3口與其它的I/O口有很大區(qū)別,它除作為般準(zhǔn)雙向I/O口外,每個(gè)引腳還具有專門(mén)的功能,見(jiàn)表2.1。圖2.1 AT89C51引腳圖 表2.1 端口引腳功能端口引腳第二功能P3.0 (串行輸入口)P3.1 (串行輸出口)P3.2 (外中斷0)P3.3 (外中斷1)P3.4 (定時(shí)/計(jì)數(shù)器0)P3.5 (定時(shí)/計(jì)數(shù)器1)P3.6 (外部數(shù)據(jù)存儲(chǔ)器寫(xiě)選通)P3.7 (外部數(shù)據(jù)存儲(chǔ)器讀選通)2.2.2 單片機(jī)最小應(yīng)用系統(tǒng)單片機(jī)最小應(yīng)用系統(tǒng)是指僅使用單片機(jī)內(nèi)部資源輔以必需的外圍電路所構(gòu)建的簡(jiǎn)單的應(yīng)用系統(tǒng)。它包括:?jiǎn)纹瑱C(jī)的選擇和單片機(jī)最小應(yīng)用系統(tǒng)的設(shè)計(jì)。通過(guò)單片機(jī)的選擇,最大限度滿足應(yīng)用系統(tǒng)對(duì)硬件資源的要求,本次課程設(shè)計(jì)選用AT89C51單片機(jī)。最小應(yīng)用系統(tǒng)設(shè)計(jì)則是指單片機(jī)最基本的、最常用的外圍電路設(shè)計(jì)。時(shí)鐘電路和復(fù)位電路就可以構(gòu)成一個(gè)最小系統(tǒng)。1) 時(shí)鐘電路 時(shí)鐘電路是單片機(jī)的心臟,它控制著單片機(jī)的工作節(jié)奏。單片機(jī)工作時(shí),是在統(tǒng)一的時(shí)鐘脈沖控制下一拍一拍地進(jìn)行著,這個(gè)脈沖是由時(shí)序電路發(fā)出的。時(shí)鐘信號(hào)可以由兩種方式產(chǎn)生:一種是內(nèi)部方式,利用芯片內(nèi)部的振蕩電路產(chǎn)生時(shí)鐘信號(hào);另一種為外部方式,時(shí)鐘信號(hào)由外部引入。AT89C51單片機(jī)有一個(gè)用于構(gòu)成內(nèi)部振蕩器的反相放大器,引腳XTAL1和XTAL2分別是放大器的輸入、輸出端。外接石英晶體和陶瓷晶體構(gòu)成自激振蕩器。這種方式稱為內(nèi)部時(shí)鐘方式,如圖2.2所示。如果振蕩器已啟振,則在XTAL2引腳上輸出3V左右的正弦波。振蕩器的頻率取決于晶振的頻率。電容C1和C2主要作用是幫助啟振(諧振),其值的大小對(duì)振蕩頻率也有影響。因此常用調(diào)節(jié)C1或C2的容量大小對(duì)頻率進(jìn)行微調(diào),電容容量通常在20pF100pF之間選擇,當(dāng)時(shí)鐘頻率為12MHz時(shí)其典型值為30pF。本次設(shè)計(jì)就是采用內(nèi)部時(shí)鐘方式。圖2.2 內(nèi)部振蕩電路如果從外部時(shí)鐘頻率驅(qū)動(dòng)器件,XTAL2可以不接,而從XTAL1接入,如圖2.3所示。對(duì)外部振蕩器的信號(hào)沒(méi)有特殊的要求,一般為0.512MHz的方波,方波的波形應(yīng)盡量規(guī)范。 圖2.3 外部振蕩電路2) 復(fù)位電路復(fù)位是單片機(jī)的初始化操作。其主要功能是把PC初始化為0000H,使單片機(jī)從0000H單元開(kāi)始執(zhí)行程序。除了進(jìn)入系統(tǒng)的正常初始化之外,當(dāng)由于程序運(yùn)行出錯(cuò)或操作錯(cuò)誤使系統(tǒng)處于死鎖狀態(tài)時(shí),為了擺脫困境,也須按復(fù)位鍵重新啟動(dòng)。除PC之外,復(fù)位操作還對(duì)其他一些寄存器有影響。復(fù)位是由外部復(fù)位電路來(lái)實(shí)現(xiàn)的,可分為上電自動(dòng)復(fù)位和按鍵手動(dòng)復(fù)位兩種方式。a) 上電自動(dòng)復(fù)位上電自動(dòng)復(fù)位電路只需在RST端接一個(gè)電容至Vcc和一個(gè)電阻至Vss即可,如圖2.4所示。上電復(fù)位的工作過(guò)程是在加電時(shí),復(fù)位電路通過(guò)電容加給RST端一個(gè)短暫的高電平信號(hào),此高電平信號(hào)隨著Vcc對(duì)電容的充電過(guò)程而逐漸回落,即RST端的高電平持續(xù)時(shí)間取決于電容的充電時(shí)間。電路中,時(shí)間常數(shù)RC越大,上電時(shí)保持高電平的時(shí)間越長(zhǎng),當(dāng)震蕩頻率為12MHz時(shí),典型值C=10, R=8.2,當(dāng)時(shí)鐘頻率選用6MHz時(shí),C=22, R=1。為了保證系統(tǒng)能夠可靠地復(fù)位,RST端的高電平信號(hào)必須維持足夠長(zhǎng)的時(shí)間。上電時(shí),只要電源Vcc的上升時(shí)間不超過(guò)1ms,就可以實(shí)現(xiàn)自動(dòng)上電復(fù)位,即接通電源就完成了系統(tǒng)的復(fù)位初始化。在圖2.4的上電復(fù)位電路中,當(dāng)Vcc掉電時(shí),必然會(huì)使RST端電壓迅速下降到0V以下,但是,由于內(nèi)部電路的限制作用,這個(gè)負(fù)電壓將不會(huì)對(duì)器件產(chǎn)生損害。另外,在復(fù)位期間,端口引腳處于隨機(jī)狀態(tài),復(fù)位后,系統(tǒng)將端口置為全“l(fā)”態(tài)。本次設(shè)計(jì)就是采用上電自動(dòng)復(fù)位電路。若上電復(fù)位失效,用戶上電后CPU從一個(gè)隨機(jī)狀態(tài)開(kāi)始工作,系統(tǒng)則不能正常工作。上電復(fù)位后,RAM單元數(shù)據(jù)是隨機(jī)的。圖2.4 上電復(fù)位電路b) 手動(dòng)復(fù)位除了上電復(fù)位外,有時(shí)還需要手動(dòng)復(fù)位。所謂手動(dòng)復(fù)位,是指通過(guò)接通一按鈕開(kāi)關(guān),使單片機(jī)進(jìn)入復(fù)位狀態(tài)。其電路圖如圖2.5所示。按一下開(kāi)關(guān)就會(huì)在RST端出現(xiàn)一段時(shí)間的高電平,使單片機(jī)復(fù)位。圖2.5 手動(dòng)復(fù)位電路2.2.3 紅外接收接收電路可以使用紅外接收器,一般不需要任何外接元件就能完成從紅外接收到輸出TTL電平兼容信號(hào)的所有工作,注意選擇接收器件時(shí)要保證接收器件的中心頻率與發(fā)射信號(hào)的中心頻率相匹配。本次設(shè)計(jì)紅外接收芯片采用LT0038。LT0038是塑封一體化紅外線接收器,它是一種集紅外線接收、放大、整形于一體的集成電路,不需要任何外接元件,就能完成從紅外線接收到輸出與TTL電平信號(hào)兼容的所有工作,沒(méi)有紅外遙控信號(hào)時(shí)為高電平,收到紅外信號(hào)時(shí)為低電平,而體積和普通的塑封三極管大小一樣,它適合于各種紅外線遙控和紅外線數(shù)據(jù)傳輸。接收器對(duì)外只有3個(gè)引腳:Vcc、GND和1個(gè)脈沖信號(hào)輸出OUT,與單片機(jī)接口非常方便。脈沖信號(hào)輸出接AT89C51芯片的外部中斷0引腳,數(shù)據(jù)由紅外接收頭接收后,經(jīng)過(guò)單片機(jī)AT89C51進(jìn)行解碼,數(shù)據(jù)由P1口輸出,因?yàn)镻1口通常做通用的I/O口使用,所以在結(jié)構(gòu)上有其自身的特點(diǎn);另外電路的內(nèi)部有上拉電阻,這些電阻與場(chǎng)效應(yīng)管共同組成輸出驅(qū)動(dòng)。為此,P1口作為輸出使用時(shí),已能向外提供推拉電流負(fù)載,而無(wú)需再接上拉電阻。P1口出來(lái)的數(shù)據(jù)經(jīng)電阻分壓后直接接到發(fā)光二極管上,8個(gè)發(fā)光二極管對(duì)應(yīng)8位的數(shù)據(jù)碼,當(dāng)數(shù)據(jù)碼為“1”時(shí)亮,為“0”時(shí)暗,圖2.6所示是一個(gè)紅外遙控器的接收電路。采用這種連接方法,軟件解碼既可以工作于查詢方式,也可以工作于中斷方式。在實(shí)際應(yīng)用中,還可以進(jìn)一步增加抑制干擾電路和提高驅(qū)動(dòng)能力電路,增強(qiáng)系統(tǒng)穩(wěn)定性。例如將遙控器的數(shù)字“1”按下時(shí),則圖2.6中的紅外接收器接收來(lái)自遙控發(fā)射器的紅外信號(hào),將接收的紅外信號(hào)轉(zhuǎn)換為電信號(hào),經(jīng)放大、調(diào)解、濾波后,經(jīng)紅外接收器的第2腳(OUT)將原編碼輸入到AT89C51的12腳(外部中斷0),然后由AT89C51對(duì)所接收的原編碼信號(hào)進(jìn)行判斷、識(shí)別、然后做出相應(yīng)的處理。圖2.6 紅外接收電路2.2.4 MAX485接口電路 MAX485芯片是用于RS-485通信的低功率收發(fā)器,芯片中包含有一個(gè)驅(qū)動(dòng)器和一個(gè)收發(fā)器,它的電氣特性如表2.2所示。表2.2 MAX485芯片的電氣特性通信方式數(shù)據(jù)率/Mbps轉(zhuǎn)換率限制低功耗關(guān)機(jī)接收器/驅(qū)動(dòng)器使能靜態(tài)電流/mA總線上收發(fā)器數(shù)目管腳數(shù)半雙工2.5NONOYES300328 MAX485芯片由八個(gè)引腳組成,圖2.7為其引腳圖,芯片各個(gè)引腳功能如下所示。1)腳(接收器輸出端):若比大200 mV,為高;若比小200 mV,為低。2)腳(接收器輸出使能端):為低時(shí),有效;為高時(shí),成高阻狀態(tài)。3)腳(驅(qū)動(dòng)器輸出使能端):若為高,驅(qū)動(dòng)輸出和有效;若為低,它們成高阻狀態(tài),若驅(qū)動(dòng)器輸出有效,器件作為線驅(qū)動(dòng)器用;若為高阻狀態(tài)時(shí),為低,它們作線接收器用。4)腳 (驅(qū)動(dòng)器輸入):為低,將迫使輸出為低,為高;若為高,將迫使輸出為高,為低。5)腳:接地。6)腳:反相接收器輸入和反相驅(qū)動(dòng)器輸出。7)腳:同相接收器輸入和同相驅(qū)動(dòng)器輸出。8):電源正極4.755.25V。圖2.7 MAX485芯片引腳圖MAX485芯片的引腳的邏輯關(guān)系如表2.3、表2.4所示。表2.3 MAX485發(fā)送邏輯關(guān)系輸入端輸出端X1101X101000X高阻抗高阻抗10X關(guān)閉關(guān)閉表2.4 MAX485接收邏輯關(guān)系輸入端輸出端00100000輸入端開(kāi)路110高阻抗由于PC機(jī)的接口采用的是RS-232串行通信標(biāo)準(zhǔn)接口,所以MAX485芯片不可以直接與PC機(jī)串口相連,需要一個(gè)RS232-485轉(zhuǎn)換器,把RS-232信號(hào)電平轉(zhuǎn)換成RS-485的信號(hào)電平,然后再將RS-485電平轉(zhuǎn)換成TTL電平,并在合適的通信協(xié)議和合理的通信程序支持下,完成PC機(jī)與單片機(jī)的長(zhǎng)距離、抗干擾能力強(qiáng)的串行數(shù)據(jù)通信任務(wù)。MAX485芯片與PC機(jī)和AT89C51的接口電路如圖2.8所示。圖2.8 PC機(jī)與單片機(jī)接口電路2.3 RS-485串口標(biāo)準(zhǔn)單片機(jī)串行口的輸入輸出為T(mén)TL電平,抗干擾性較差,只能在幾米的范圍之內(nèi)傳輸數(shù)據(jù)。為了提高串行通信的可靠性,增強(qiáng)抗干擾性,增加傳輸距離,必須采用標(biāo)準(zhǔn)串行總線接口將串行口的輸入輸出電平進(jìn)行轉(zhuǎn)換。目前流行的標(biāo)準(zhǔn)串行總線接口有RS-232C, RS-422A、RS-485等,它們各有優(yōu)缺點(diǎn)。RS-232C是最早的串行接口標(biāo)準(zhǔn),在短距離(15m),較低波特率串行通信當(dāng)中得到了廣泛應(yīng)用。RS-422A接口是對(duì)RS-232C接口的改進(jìn),它采用平衡傳輸電氣標(biāo)準(zhǔn),輸入/輸出均采用差分驅(qū)動(dòng),因此具有更強(qiáng)的抗干擾能力,傳送速率也大大提高,它向外部的連接器采用9針“D”型插頭。RS-232C和RS-422A雖然應(yīng)用廣泛,但有明顯的不足,主要體現(xiàn)為:接口的信號(hào)電平值較高,易損壞接口的電路芯片;必須經(jīng)過(guò)電平轉(zhuǎn)換電路方能與TTL電路相連;傳輸速率較低;對(duì)噪聲的抗干擾性弱;傳輸距離有限。RS-485以良好的抗干擾性、長(zhǎng)距離傳輸特性和多站能力等優(yōu)點(diǎn)成為用戶首選的串行接口。1) 性能特點(diǎn)a) RS-485的電氣特性:邏輯“1”以兩線間的電壓差為+(26)V表示;邏輯“0”以兩線間的電壓差為-(26)V表示。接口信號(hào)電平比RS-232C降低了,就不易損壞接口電路的芯片,且該電平與TTL電平兼容,可方便與TTL電路連接。 b) RS-485的數(shù)據(jù)最高傳輸速率為10Mbps。 c) RS-485接口是采用平衡驅(qū)動(dòng)器和差分接收器的組合,抗共模干擾能力增強(qiáng),即抗噪聲干擾性好。 d) RS-485接口的最大傳輸距離標(biāo)準(zhǔn)值為4000英尺,實(shí)際上可達(dá)到3000米,另外RS-232C接口在總線上只允許連接1個(gè)收發(fā)器,即單站能力。而RS-485接口在總線上是允許連接多達(dá)128個(gè)收發(fā)器,即具有多站能力。RS-485接口所組成的半雙工網(wǎng)絡(luò)一般只需要兩根連線, RS-485接口均采用屏蔽雙絞線傳輸。RS-485接口連接器采用DB9插頭座。2) 與其他標(biāo)準(zhǔn)接口的對(duì)照表2.5是RS-485與其他標(biāo)準(zhǔn)接口的對(duì)照表。表2.5 標(biāo)準(zhǔn)串行接口的對(duì)照表RS-232CRS-422ARS-485工作方式邏輯“0”電平邏輯“1”電平節(jié)點(diǎn)數(shù)最大傳輸距離最大傳輸速率驅(qū)動(dòng)器加載輸出電壓接收器輸入電阻抗干擾能力單端315V-15-3V1發(fā)1收50英尺20Kb/s5 15V37弱差分26V-6-2V1發(fā)10收400英尺10Mb/s2V4(最?。?qiáng)差分-(26)V+(26)V1發(fā)32收400英尺10Mb/s1.5V12強(qiáng)所以時(shí)至今日,雖然工業(yè)以太網(wǎng)、CAN等現(xiàn)場(chǎng)總線,ZIGBEE等傳感器網(wǎng)絡(luò),USB等接口,IEEE802等無(wú)線網(wǎng)絡(luò)等都提供全面的配置,但是由于RS-485串行通信兼容性好,簡(jiǎn)單易用,成本低,在工業(yè)通信上使用最廣泛的仍然是RS-485串行通信。第3章 系統(tǒng)的軟件設(shè)計(jì)3.1 MCS-51匯編語(yǔ)言簡(jiǎn)介匯編語(yǔ)言是面向機(jī)器的程序設(shè)計(jì)語(yǔ)言。在匯編語(yǔ)合中,用助記符代替操作碼,用地址符號(hào)或標(biāo)號(hào)代替地址碼。這樣用符號(hào)代替機(jī)器語(yǔ)言的二進(jìn)制碼,就把機(jī)器語(yǔ)言變成了匯編語(yǔ)言。于是匯編語(yǔ)言亦稱為符號(hào)語(yǔ)言。使用匯編語(yǔ)言編寫(xiě)的程序,機(jī)器不能直接識(shí)別,要由一種程序?qū)R編語(yǔ)言翻譯成機(jī)器語(yǔ)言,這種起翻譯作用的程序叫匯編程序,匯編程序是系統(tǒng)軟件中語(yǔ)言處理系統(tǒng)軟件。匯編程序把匯編語(yǔ)言翻譯成機(jī)器語(yǔ)言的過(guò)程稱為匯編。匯編語(yǔ)言是一種功能很強(qiáng)的程序設(shè)計(jì)語(yǔ)言,也是利用計(jì)算機(jī)所有硬件特性并能直接控制硬件的語(yǔ)言。匯編語(yǔ)言,作為一門(mén)語(yǔ)言,對(duì)應(yīng)于高級(jí)語(yǔ)言的編譯器,需要一個(gè)“匯編器”來(lái)把匯編語(yǔ)言原文件匯編成機(jī)器可執(zhí)行的代碼。高級(jí)的匯編器如MASM,TASM等等為我們寫(xiě)匯編程序提供了很多類似于高級(jí)語(yǔ)言的特征,比如結(jié)構(gòu)化、抽象等。在這樣的環(huán)境中編寫(xiě)的匯編程序,有很大一部分是面向匯編器的偽指令,已經(jīng)類同于高級(jí)語(yǔ)言。現(xiàn)在的匯編環(huán)境已經(jīng)如此高級(jí),即使全部用匯編語(yǔ)言來(lái)編寫(xiě)windows的應(yīng)用程序也是可行的,但這不是匯編語(yǔ)言的長(zhǎng)處。匯編語(yǔ)言的長(zhǎng)處在于編寫(xiě)高效且需要對(duì)機(jī)器硬件精確控制的程序。3.2 串行通信原理3.2.1 數(shù)據(jù)通信的基本概念在實(shí)際工作中,計(jì)算機(jī)的CPU與外部設(shè)備之間常常要進(jìn)行信息交換,一些計(jì)算機(jī)與其他計(jì)算機(jī)之間也往往要交換信息,所有這些信息交換均可稱為通信?;镜耐ㄐ欧椒ㄓ胁⑿型ㄐ藕痛型ㄐ艃煞N。一組信息(通常是字節(jié))的各位數(shù)據(jù)被同時(shí)傳送的通信方法稱為并行通信。并行通信依靠并行I/O接口實(shí)現(xiàn)。并行通信速度快,但傳輸線根數(shù)多,只適用于近距離(相距數(shù)公尺)的通信。一組信息的各位數(shù)據(jù)被逐位順序傳送的通信方式稱為串行通信。串行通信可通過(guò)串行接口來(lái)實(shí)現(xiàn)。它的突出優(yōu)點(diǎn)是只需一對(duì)傳輸線,這樣就大大降低了傳送成本,特別適合遠(yuǎn)距離通信,其缺點(diǎn)是傳送速度較低。串行通信的傳送方式通常有3種:?jiǎn)蜗颍ɑ騿喂ぃ┡渲?,只允許數(shù)據(jù)向一個(gè)方向傳送;半雙工(或半雙工)配置,允許數(shù)據(jù)向兩個(gè)方向中的任一方向傳送,但每次只能有一個(gè)站點(diǎn)發(fā)送;全雙向(全雙工)配置,允許同時(shí)雙向傳送數(shù)據(jù),因此,全雙工配置是一對(duì)單向配置,它要求兩端的通信設(shè)備都具有完整和獨(dú)立的發(fā)送和接收能力。3.2.2 串行通信的過(guò)程兩個(gè)通信設(shè)備在串行線路上成功地實(shí)現(xiàn)通信必須解決兩個(gè)問(wèn)題:一是串并轉(zhuǎn)換,即如何把要發(fā)送的并行數(shù)據(jù)串行化;二是設(shè)備同步,即同步發(fā)送設(shè)備和接收設(shè)備的工作節(jié)拍,以確保發(fā)送數(shù)據(jù)在接收端被正確讀出。1) 串并轉(zhuǎn)換串行通信是將計(jì)算機(jī)內(nèi)部的并行數(shù)據(jù)轉(zhuǎn)換成串行數(shù)據(jù),將其通過(guò)一根通信線傳送,并將接收的串行數(shù)據(jù)再轉(zhuǎn)換成并行數(shù)據(jù)送到計(jì)算機(jī)中。在計(jì)算機(jī)串行發(fā)送數(shù)據(jù)之前,計(jì)算機(jī)內(nèi)部的并行數(shù)據(jù)被送入移位寄存器,并一位一位地移出,將并行數(shù)據(jù)轉(zhuǎn)換成串行數(shù)據(jù)。在接收數(shù)據(jù)時(shí),來(lái)自通信線路的串行數(shù)據(jù)被送入移位寄存器,滿8位后并行送到計(jì)算機(jī)內(nèi)部。在串行通信控制電路中,串并、并串轉(zhuǎn)換邏輯被集成在串行異步通信控制器芯片中。89C51單片機(jī)的串行口和IBM-PC機(jī)中的8250芯片都可實(shí)現(xiàn)這一功能。2) 設(shè)備同步進(jìn)行串行通信的兩臺(tái)設(shè)備必須同步工作,才能有效的檢測(cè)通信線路上的信號(hào)變化,從而采樣傳送數(shù)據(jù)脈沖。設(shè)備同步對(duì)通信雙方有兩個(gè)共同要求:一是通信雙方必須采用統(tǒng)一的編碼方法;二是通信雙方必須能產(chǎn)生相同的傳送速率。采用統(tǒng)一的編碼方法確定了一個(gè)字符二進(jìn)制表示值的位發(fā)送順序和位串長(zhǎng)度,當(dāng)然還包括統(tǒng)一的邏輯電平規(guī)定,即電平信號(hào)高低與邏輯1和邏輯0的固定對(duì)應(yīng)關(guān)系。通信雙方只有產(chǎn)生相同的傳送速率,才能確保設(shè)備同步,這就要求發(fā)送設(shè)備和接收設(shè)備采用相同頻率的時(shí)鐘。發(fā)送設(shè)備在統(tǒng)一的時(shí)鐘脈沖上發(fā)送數(shù)據(jù),接收設(shè)備才能正確檢測(cè)出與時(shí)鐘脈沖同步的數(shù)據(jù)信息。3.2.3 串行通信協(xié)議通信協(xié)議是對(duì)數(shù)據(jù)傳送方式的規(guī)定,包括數(shù)據(jù)格式定義和數(shù)據(jù)位定義等。通信雙方必須遵守統(tǒng)一的通信協(xié)議。串行通信協(xié)議包括同步協(xié)議和異步協(xié)議兩種,在此只討論異步串行通信協(xié)議和異步串行協(xié)議規(guī)定的字符數(shù)據(jù)的傳送格式。1) 起始位通信線上沒(méi)有數(shù)據(jù)被傳送時(shí)處于邏輯1狀態(tài)。當(dāng)發(fā)送設(shè)備要發(fā)送一個(gè)字符數(shù)據(jù)時(shí),首先發(fā)送一個(gè)邏輯0信號(hào),這個(gè)邏輯低電平就是起始位。起始位通過(guò)通信線傳向接收設(shè)備,接收設(shè)備檢測(cè)到這個(gè)邏輯低電平后,就開(kāi)始準(zhǔn)備接收數(shù)據(jù)位信號(hào)。起始位所起的作用就是設(shè)備同步,通信雙方必須在傳送數(shù)據(jù)位前協(xié)調(diào)同步。2) 數(shù)據(jù)位當(dāng)接收設(shè)備收到起始位后,緊接著就會(huì)收到數(shù)據(jù)位。數(shù)據(jù)位的個(gè)數(shù)可以是5、6、7或8.IBM-PC中經(jīng)常采用7位或8位數(shù)據(jù)傳送,89C51串行口采用8位或9位數(shù)據(jù)傳送。這些數(shù)據(jù)位被接收到移位寄存器中,構(gòu)成傳送數(shù)據(jù)字符。在字符數(shù)據(jù)傳送過(guò)程中,數(shù)據(jù)位從最低有效位開(kāi)始發(fā)送,依次順序在接收設(shè)備中被轉(zhuǎn)換為并行數(shù)據(jù)。3) 奇偶校驗(yàn)位數(shù)據(jù)位發(fā)送完之后,可以發(fā)送奇偶校驗(yàn)位。奇偶校驗(yàn)用于有限差錯(cuò)檢測(cè),通信雙方須約定一致的奇偶校驗(yàn)方式。如果選擇偶校驗(yàn),那么組成數(shù)據(jù)位和奇偶位的邏輯1的個(gè)數(shù)必須是偶數(shù);如果選擇奇校驗(yàn),那么邏輯1的個(gè)數(shù)必須是奇數(shù)。4) 停止位在奇偶校驗(yàn)位位或數(shù)據(jù)位(當(dāng)無(wú)奇偶校驗(yàn)時(shí))之后發(fā)送的是停止位。停止位是一個(gè)字符數(shù)據(jù)的結(jié)束標(biāo)志,可以是1位、1.5位或2位的高電平。接收設(shè)備收到停止位之后,通信線路上便又恢復(fù)邏輯1狀態(tài),直至下一個(gè)字符數(shù)據(jù)的起始位到來(lái)。5) 波特率設(shè)置通信線上傳送的所有位信號(hào)都保持一致的信號(hào)持續(xù)時(shí)間,每一位的信號(hào)持續(xù)時(shí)間都由數(shù)據(jù)傳送速度確定,而傳送速度是以每秒多少個(gè)二進(jìn)制位來(lái)衡量的,這個(gè)速度叫波特率。如果數(shù)據(jù)以每秒300個(gè)二進(jìn)制位在通信線上傳送,那么傳送速度為300波特,通常記為300b/s。3.3 串行通信程序設(shè)計(jì)3.3.1 串行口的結(jié)構(gòu)和功能AT89C51單片機(jī)有一個(gè)全雙工異步串行I/O口,占P3.0(串行數(shù)據(jù)接收端RXD)和P3.1(串行數(shù)據(jù)發(fā)送端TXD)兩個(gè)引腳,是P3口的第二個(gè)功能。該接口不僅能同時(shí)進(jìn)行數(shù)據(jù)的發(fā)送和接收,也可以作為一個(gè)同步移位寄存器使用。串行口的工作過(guò)程可概括為如下。1)用戶通過(guò)串行口的初始化操作規(guī)定串行口的工作方式。2)串行口自動(dòng)完成發(fā)送和接收。a發(fā)送:將待發(fā)送的數(shù)據(jù)由A送入SBUF(以指令“MOV SBUF,A”實(shí)現(xiàn)),在發(fā)送控制器的控制下組成幀結(jié)構(gòu),并自動(dòng)以串行方式發(fā)送到TXD端。在發(fā)送完畢后自動(dòng)將TI置1,向CPU申請(qǐng)中斷。b接收:先用指令(SETB REN)置位接收允許才能開(kāi)始串行接收操作。在接收控制器的控制下,通過(guò)移位寄存器將串行數(shù)據(jù)送入SBUF中。在接收完畢后自動(dòng)將RI置1,向CPU申請(qǐng)中斷。3.3.2 選擇串行口工作方式AT89C51單片機(jī)串行口有四種工作方式,用特殊功能寄存器SCON中的SM0、SM1兩位進(jìn)行設(shè)定,如表3.1所示。表3.1 串行口的工作方式SM0 SM1 工作方式說(shuō)明波特率0 0方式0同步移位寄存器 0 1方式110位異步收發(fā)由定時(shí)器控制 1 0方式211位異步收發(fā)或 1 1方式311位異步收發(fā)由定時(shí)器控制本次設(shè)計(jì)采用串行口工作方式1。方式1真正用于串行發(fā)送或接收,為10位通用異步接口。TXD與RXD分別用于發(fā)送與接收數(shù)據(jù)。收發(fā)一幀數(shù)據(jù)的格式為1位起始位、8位數(shù)據(jù)位(低位在前)、1位停止位,共10位。在接收時(shí),停止位進(jìn)入SCON的RB8,此方式的波特率可調(diào)。3.3.3 串行口波特率的設(shè)置波特率(Baud rate),即數(shù)據(jù)傳送速率,表示每秒傳送二進(jìn)制代碼的位數(shù),它的單位是b/s。波特率對(duì)于CPU與外界的通信是很重要的。假設(shè)數(shù)據(jù)傳送率是120字符/s,而每個(gè)字符格式包括包含10個(gè)代碼位(1個(gè)起始位、1個(gè)終止位、8個(gè)數(shù)據(jù)位)。這時(shí),傳送的波特率為:10b/字符120字符/s=1200b/s每一位代碼的傳送時(shí)間為波特率的倒數(shù)。=1/1200=0.833ms國(guó)際上規(guī)定了一個(gè)標(biāo)準(zhǔn)波特率系列,標(biāo)準(zhǔn)波特率系列為110、300、600、1200、1800、2400、4800、9600和19200。標(biāo)準(zhǔn)波特率也是最常用的波特率,大多數(shù)CRT終端都能夠按1109600b/s范圍中的任何一種波特率工作。大多數(shù)接口的接收波特率和發(fā)送波特率可以分別設(shè)置,而且可通過(guò)編寫(xiě)程序來(lái)指定。由上表可以看出串行通信的波特率取決于串行口的工作方式,其中方式0和方式2的波特率是固定的;而方式1和方式3的波特率是可變的,由定時(shí)器T1的溢出率來(lái)決定。本設(shè)計(jì)選擇串行口工作方式1,波特率由下式確定:波特率=(T1溢出速率)定時(shí)器T1用作波特率發(fā)生器時(shí),通常選用定時(shí)器模式2(自動(dòng)重裝初值定時(shí)器)比較實(shí)用,此時(shí),T1溢出速率為(X為T(mén)H1和TL1定時(shí)計(jì)數(shù)初值):T1溢出速率=波特率=本次設(shè)計(jì)中波特率取4800b/s。3.3.4 初始化串口串行口初始化應(yīng)該包括對(duì)SCON、PCON和T1的初始化,也包括TMOD寄存器初始化(將T1設(shè)置為波特率發(fā)生器)、根據(jù)波特率求解時(shí)間常數(shù),并對(duì)TH1和TL1賦值、啟動(dòng)T1等過(guò)程。已知本次設(shè)計(jì)中,波特率為4800b/s,SMOD=0, =11.059MHz,于是可得出定時(shí)器T1模式2的初始值X:該串行口初始化格式如下:ORG 0000HMOV SCON,#50H ; 設(shè)置串行口工作于方式1MOV TMOD,#20H ; 波特率發(fā)生器T1工作在模式2上MOV PCON,#00H ; 波特率不翻倍 MOV TH1,#0FAH ; 預(yù)置初值(按照波特率4800bps預(yù)置初值)MOV TL1,#0FAH ; 預(yù)置初值(按照波特率4800bps預(yù)置初值)SETB TR1 ; 啟動(dòng)定時(shí)器T13.3.5 程序的編制圖3.1所示為串口通信流程圖。圖3.1 串口通信流程圖以下為串口通信部分程序:WAIT1: JB P3.6,$ ;判斷K1是否按下,如果沒(méi)有按下就等待ACALL DELAY10;延時(shí)10毫秒消觸點(diǎn)抖動(dòng)JB P3.6,WRIT1;去除干擾信號(hào)JNB P3.6,$ ;等待按鍵松開(kāi)MOV A,#0A5H ;將16進(jìn)制的字符A5發(fā)送到串口去MOV SBUF,A ;將A5通過(guò)串口發(fā)送出去WAIT2: JBC TI, WAIT1AJMP WAIT2;10毫秒延時(shí)子程序DELAY10:MOV R4, #20D2: MOV R5, #248 DJNZ R5, $ DJNZ R4, D23.4 紅外通信原理紅外遙控系統(tǒng)一般由發(fā)射系統(tǒng)和接收系統(tǒng)組成。發(fā)射系統(tǒng)由專用芯片產(chǎn)生指令代碼,經(jīng)載波調(diào)制后驅(qū)動(dòng)紅外發(fā)射器件,發(fā)射紅外控制信號(hào)。紅外信號(hào)的指令代碼均為二進(jìn)制碼,編碼調(diào)制由專用芯片完成,編碼的方法有多種,不同芯片的編碼方法和代碼長(zhǎng)度有所不同。指令信號(hào)常用的編碼調(diào)制方法有脈沖寬度調(diào)制和脈沖位置調(diào)制兩種。紅外遙控信號(hào)被紅外接收頭接收后,經(jīng)放大、檢波、整形,得到TTL電平的代碼信號(hào),再送給編碼電路,經(jīng)譯碼并執(zhí)行,實(shí)現(xiàn)遙控功能。3.4.1 紅外發(fā)送原理紅外遙控發(fā)射的整體過(guò)程如圖3.2所示,當(dāng)不同的指令鍵被按下時(shí),指令信號(hào)電路產(chǎn)生不同的脈沖編碼的指令信號(hào),然后經(jīng)調(diào)制電路調(diào)制,變成編碼脈沖調(diào)制信號(hào),再由驅(qū)動(dòng)電路驅(qū)動(dòng)紅外發(fā)射器發(fā)射紅外信號(hào)。圖3.2 紅外發(fā)射流程圖本次設(shè)計(jì)所用的紅外遙控器是現(xiàn)成的,里面的發(fā)射芯片用的是LC7461。當(dāng)發(fā)射器按鍵按下后,即有遙控碼發(fā)出,所按的鍵不同,遙控編碼也不同。這種遙控碼采用脈寬調(diào)制的串行碼,以脈寬為0.565ms、間隔0.56ms、周期為1.125ms的組合表示二進(jìn)制的“0”;以脈寬為0.565ms、間隔1.685ms、周期為2.25ms的組合表示二進(jìn)制的“1”。上述“0”和“1”組成的42位二進(jìn)制碼經(jīng)38KHz的載頻進(jìn)行二次調(diào)制后可提高發(fā)射效率,從而達(dá)到降低電源功耗的目的。LC7461產(chǎn)生的遙控編碼是連續(xù)的42位二進(jìn)制碼組。其中前26位為客戶識(shí)別碼,也可以稱為客戶碼和客戶反碼,能區(qū)別不同的紅外遙控設(shè)備,防止不同機(jī)種遙控碼互相干擾,后16位為8位的數(shù)據(jù)碼和8位的數(shù)據(jù)反碼用于核對(duì)數(shù)據(jù)是否接收準(zhǔn)確。當(dāng)遙控器上任意一個(gè)按鍵按下超過(guò)36ms時(shí),LC7461芯片的振蕩器使芯片激活,將發(fā)射一個(gè)特定的同步碼頭,對(duì)于接收端而言就是一個(gè)9ms的低電平,和一個(gè)4.5ms的高電平,這個(gè)同步碼頭以后可以開(kāi)始接收數(shù)據(jù)。3.4.2 紅外解碼原理脈沖波形進(jìn)入一體化接收頭(這里紅外接收器采用芯片LT0038)以后,因?yàn)榻邮疹^要進(jìn)行解調(diào)、信號(hào)放大和整形,所以要注意在沒(méi)有紅外信號(hào)時(shí),其輸出端為高電平,有信號(hào)時(shí)為低電平,故其輸出信號(hào)正好和發(fā)射端相反。解碼的關(guān)鍵是如何識(shí)別“0”和“1”,“0”、“1”均以0.56ms的低電平開(kāi)始,不同的是高電平的寬度不同,“0”為0.56ms,“1”為1.68ms,所以必須根據(jù)高電平的寬度來(lái)區(qū)別“0”和“1”。如果從0.56ms低電平過(guò)后,開(kāi)始延時(shí),0.56ms以后,若讀到的電平為低,說(shuō)明該位為“0”,反之則為“1”,為了準(zhǔn)確起見(jiàn),延時(shí)必須比0.56ms長(zhǎng)些,但又不能超過(guò)1.12ms,否則如果該位為“0”,讀到的已是下一位的高電平,因此?。?.12ms+0.56ms)/2=0.84ms最為可靠,一般取0.84ms左右即可。3.5 紅外解碼程序設(shè)計(jì)3.5.1 延時(shí)子程序以下為紅外解碼的延時(shí)子程序。YS1: MOV R4,#20 ;延時(shí)子程序1,精確延時(shí)882微秒D1: MOV R5,#20 DJNZ R5,$ DJNZ R4,D1RETYS2: MOV R4,#10 ;延時(shí)子程序2,精確延時(shí)4740微秒D2: MOV R5,#235 DJNZ R5,$ DJNZ R4,D2RETYS3: MOV R4,#2 ;延時(shí)程序3,精確延時(shí)1000微秒D3: MOV R5,#248 DJNZ R5,$ DJNZ R4,D3RET3.5.2 解碼子程序圖3.3為紅外遙控解碼流程圖,以下程序?yàn)榧t外解碼的子程序。圖3.3 紅外遙控流程圖INT: CLR EA ;暫時(shí)關(guān)閉CPU的所有中斷請(qǐng)求 MOV R6,#10SB: ACALL YS1; JB P3.2,EXIT; DJNZ R6, SB;JNB P3.2, $ ; ACALL YS2 ;延時(shí)4.74毫秒避開(kāi)4.5毫秒的結(jié)果碼MOV R7,#26 ;忽略前26位系統(tǒng)識(shí)別碼JJJJA: JNB P3.2,$ ;等待地址碼第一位的高電平信號(hào) LCALL YS1 ;高電平開(kāi)始后用882微秒的時(shí)間尺去判斷信號(hào)此時(shí)的高低電平狀態(tài) MOV C,P3.2 ;將P3.2引腳此時(shí)的電平狀態(tài)0或1存入C中 JNC UUUA ;如果為0就跳轉(zhuǎn)到UUUA LCALL YS3 ;檢測(cè)到高電平1的話延時(shí)1毫秒等待脈沖高電平結(jié)束UUUA: DJNZ R7,JJJJA MOV R1,#1AH ;設(shè)定1AH為起始RAM區(qū) MOV R2,#2 ;接收從1AH到1BH的2個(gè)內(nèi)存,用于存放操作碼和操作反碼PP: MOV R3,#8 ;每組數(shù)據(jù)為8位JJJJ: JNB P3.2,$ ;等待地址碼第一位的高電平信號(hào) LCALL YS1; MOV C,P3.2; JNC UUU ;如果為0就跳轉(zhuǎn)到UUU LCALL YS3 ;檢測(cè)到高電平1的話延時(shí)1毫秒等待脈沖高電平結(jié)束UUU: MOV A,R1 ;將R1中地址的給A RRC A; MOV R1,A; DJNZ R3,JJJJ; INC R1 ;對(duì)R1中的值加1,換下一個(gè)RAM DJNZ R2,PP MOV A,1AH CPL A ;對(duì)1AH取反后和1BH比較 CJNE A,1BH,EXIT;如果不等表示接收數(shù)據(jù)發(fā)生錯(cuò)誤,放棄MOV P1,1AH; CLR P2.5; LCALL YS2 LCALL YS2 LCALL YS2 SETB P2.5 ;蜂鳴器停止EXIT: SETB EA ;允許中斷 RETI ;退出解碼子程序3.6 RS-485程序設(shè)計(jì)流程圖整個(gè)通訊程序分為3 個(gè)部分:數(shù)據(jù)接收部分、命令執(zhí)行部分、數(shù)據(jù)發(fā)送部分。3.6.1 數(shù)據(jù)接收部分?jǐn)?shù)據(jù)接收程序主要接收一幀正確的數(shù)據(jù),數(shù)據(jù)幀錯(cuò)誤的判斷符合以下原則:1) 有一個(gè)字節(jié)偶校驗(yàn)錯(cuò)誤,數(shù)據(jù)幀錯(cuò)誤。2) 數(shù)據(jù)幀格式不正確,數(shù)據(jù)幀錯(cuò)誤。3) 數(shù)據(jù)幀校驗(yàn)碼不正確,數(shù)據(jù)幀錯(cuò)誤。整個(gè)程序是在接收中斷服務(wù)程序中執(zhí)行的。圖 3.4 接收程序流程圖3.6.2 命令執(zhí)行部分這一部分是主程序執(zhí)行部分,是從機(jī)接收一幀正確數(shù)據(jù)后,通過(guò)地址域判斷RS-485 總線中主控器是否呼叫本從機(jī),如果是則所有接收到的從機(jī)都應(yīng)響應(yīng)命令,同時(shí)通過(guò)密碼的方式,可以設(shè)置權(quán)限,密碼和地址是保存在E2PROM 中。在地址和密碼判斷正確的時(shí)候,程序進(jìn)行命令譯碼,對(duì)要求的命令執(zhí)行相應(yīng)的操作,同時(shí)如果要通過(guò)總線發(fā)送數(shù)據(jù),應(yīng)準(zhǔn)備好發(fā)送數(shù)據(jù)緩存器的內(nèi)容,啟動(dòng)發(fā)送程序,發(fā)送完畢時(shí)清除接收事件發(fā)生標(biāo)志。圖 3.5 命令執(zhí)行流程圖3.6.3 數(shù)據(jù)發(fā)送部分本程序的數(shù)據(jù)發(fā)送部分是在主程序中執(zhí)行的。圖 3.6 發(fā)送程序流程圖第4章 系統(tǒng)的調(diào)試4.1 WAVE6000軟件簡(jiǎn)介本次軟件調(diào)試可以采用WAVE6000軟件(keil51也可),WAVE6000是一款功能強(qiáng)大的優(yōu)秀的單片機(jī)程序編輯、調(diào)試、仿真中文Windows軟件。該軟件可以配合硬件進(jìn)行單片機(jī)的硬件仿真,也可以單獨(dú)進(jìn)行單片機(jī)的軟件仿真。利用該軟件進(jìn)行單片機(jī)軟件的編輯調(diào)試和模擬仿真,結(jié)合一臺(tái)寫(xiě)碼器,就可進(jìn)行低投入的單片機(jī)的開(kāi)發(fā)工作。WAVE6000編譯軟件,采用中文界面。用戶源程序大小不受限制,有豐富的窗口顯示方式,能夠多方位、動(dòng)態(tài)地展示程序的執(zhí)行過(guò)程。其項(xiàng)目管理功能強(qiáng)大,可使單片機(jī)程序化大為小,化繁為簡(jiǎn),便于管理。另外,其書(shū)簽、斷點(diǎn)管理功能以及外設(shè)管理功能等為51單片機(jī)的仿真帶來(lái)極大的便利。圖4.1為WAVE6000的調(diào)試軟件界面。圖4.1 wave 調(diào)試軟件界面4.2 程序調(diào)試1)打開(kāi)WAVE編譯軟件,打開(kāi)“文件”菜單,選擇“新建文件”,在出現(xiàn)的文本編輯區(qū),編寫(xiě)相應(yīng)的實(shí)驗(yàn)程序。注意程序編寫(xiě)時(shí),輸入法必須切換成英文模式。2)打開(kāi)“文件”菜單,選擇“新建項(xiàng)目”。依次加入模塊文件,加入包含文件(如果沒(méi)有包含文件,按取消鍵),保存項(xiàng)目。3)打開(kāi)“仿真器”菜單,選擇“仿真器設(shè)置”。對(duì)各個(gè)選項(xiàng)進(jìn)行設(shè)置。4)點(diǎn)擊“項(xiàng)目”菜單選擇“編譯”或點(diǎn)擊快捷鍵“F9”。打開(kāi)“窗口”菜單選擇“信息窗口”觀察程序編譯是否出錯(cuò)。如有出錯(cuò)“X”號(hào)提示,鼠標(biāo)雙擊信息窗口中“”號(hào)行找到對(duì)應(yīng)指令,進(jìn)行修改,直至編譯正確為止。5)單步調(diào)試程序以及全速執(zhí)行程序。觀察分析程序執(zhí)行過(guò)程中各個(gè)窗口數(shù)據(jù)變化,如有錯(cuò)誤,修改程序重新執(zhí)行。程序調(diào)試結(jié)果如圖4-2、4-3所示。 按照上面所示步驟進(jìn)行調(diào)試,圖4.2為紅外遙控解碼程序的調(diào)試結(jié)果,圖4.3為串口通信程序的調(diào)試結(jié)果。圖4.2 紅外遙控解碼程序調(diào)試結(jié)果圖4.3 串口通信程序調(diào)試結(jié)果4.3 系統(tǒng)硬件的調(diào)試將調(diào)試好的程序載入各自對(duì)應(yīng)的芯片中,按下遙控器不同的按鍵,在串口調(diào)試助手頁(yè)面中就會(huì)顯示不同的數(shù)字。圖4.4所示為串口調(diào)試的窗口。圖4.4 串口調(diào)試窗口 總結(jié)在整個(gè)畢業(yè)設(shè)計(jì)過(guò)程中,我對(duì)大學(xué)所學(xué)的知識(shí)有了一個(gè)系統(tǒng)的認(rèn)識(shí)和理解,尤其是對(duì)本課題所用到串行通信系統(tǒng)和紅外控制技術(shù)相關(guān)知識(shí)有了進(jìn)一步的掌握,對(duì)單片機(jī)串口通信編程、紅外解碼以及對(duì)整個(gè)系統(tǒng)的分析和問(wèn)題的解決有了深刻的認(rèn)識(shí)和切身的體會(huì)。正所謂學(xué)以致用,在此實(shí)踐過(guò)程中我增長(zhǎng)了知識(shí)、豐富了經(jīng)驗(yàn),提高了解決實(shí)際問(wèn)題的能力。對(duì)整個(gè)系統(tǒng)的分析與設(shè)計(jì)過(guò)程是對(duì)學(xué)習(xí)的總結(jié)過(guò)程,更是進(jìn)一步學(xué)習(xí)和探索的過(guò)程。在實(shí)際操作中必須嚴(yán)格按照系統(tǒng)的分析、設(shè)計(jì)、系統(tǒng)的實(shí)施、系統(tǒng)的運(yùn)行與調(diào)試的過(guò)程來(lái)進(jìn)行。系統(tǒng)的分析和設(shè)計(jì)是項(xiàng)很重要的工作,同時(shí)也充滿了難度。在設(shè)計(jì)過(guò)程中,要邊學(xué)習(xí),邊實(shí)踐,遇到問(wèn)題就要不斷探索,努力找到問(wèn)題的解決方法。另外也要細(xì)心,堅(jiān)決避免一些低級(jí)的錯(cuò)誤的發(fā)生。在設(shè)計(jì)初期,結(jié)合理論知識(shí),提出不同的設(shè)計(jì)方案,經(jīng)過(guò)對(duì)比,找到一個(gè)最方便最適合的解決方案。設(shè)計(jì)中還要廣泛收集資料,多翻閱一些相關(guān)書(shū)籍,對(duì)所用知識(shí)要做到心中有數(shù)。和指導(dǎo)老師要保持聯(lián)系,遇到自己解決不了的問(wèn)題或者一些疑問(wèn),要及時(shí)向老師

溫馨提示

  • 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)論