基于51單片機(jī)紅外抄表系統(tǒng)_第1頁
基于51單片機(jī)紅外抄表系統(tǒng)_第2頁
基于51單片機(jī)紅外抄表系統(tǒng)_第3頁
基于51單片機(jī)紅外抄表系統(tǒng)_第4頁
基于51單片機(jī)紅外抄表系統(tǒng)_第5頁
已閱讀5頁,還剩50頁未讀 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡介

1、精選優(yōu)質(zhì)文檔-傾情為你奉上摘 要近年來,隨著信息技術(shù)的飛速發(fā)展,無線技術(shù)正在向各個(gè)領(lǐng)域滲透,特別是紅外線無線技術(shù),在工業(yè)生產(chǎn)、家用電器、安全保衛(wèi)以及人們的日常生活中得到了廣泛的應(yīng)用。本文詳細(xì)描述了該紅外抄表系統(tǒng)的設(shè)計(jì)方案、硬件電路設(shè)計(jì)和軟件設(shè)計(jì),并利用keil仿真軟件對所開發(fā)的C語言程序進(jìn)行了驗(yàn)證。在本文的第五章討論了系統(tǒng)的發(fā)展趨勢和改進(jìn),為系統(tǒng)的進(jìn)一步開發(fā)奠定了基礎(chǔ)。本系統(tǒng)關(guān)鍵部分主要是紅外通信原理。系統(tǒng)在分析可行性、可靠性的基礎(chǔ)上,參照工程設(shè)計(jì)方法,確定了模塊化設(shè)計(jì)的思路。本系統(tǒng)主要由控制模塊、發(fā)射模塊、接收模塊、顯示模塊4個(gè)模塊組成。38kHz頻率作為數(shù)據(jù)通信的載波,發(fā)射和接收模塊對數(shù)字

2、信號進(jìn)行調(diào)制和解調(diào),通過LCD液晶顯示屏將收到的數(shù)據(jù)顯示出來。該系統(tǒng)還具備掉電保護(hù)和數(shù)據(jù)存儲(chǔ)功能。利用一個(gè)紅外抄表器來完成瑣碎的抄表工作。從而從根本上杜絕“肉眼觀察”所帶來的隨機(jī)誤差,并大大提高了抄表的效率。關(guān)鍵詞:通信;紅外抄表;單片機(jī);調(diào)制;解調(diào)目錄1 緒論1.1課題的背景和意義眾所周知,電表是一種非常重要的計(jì)量儀表,它的計(jì)量準(zhǔn)確與否直接關(guān)系到千家萬戶的利益。為此,國家制訂嚴(yán)格的標(biāo)準(zhǔn),各電表生產(chǎn)廠家在嚴(yán)格遵守國家標(biāo)準(zhǔn)基礎(chǔ)上,實(shí)行更嚴(yán)格的內(nèi)控標(biāo)準(zhǔn)。事實(shí)上,每一臺出廠的合格表,都經(jīng)過了嚴(yán)格的校驗(yàn)及誤差處理,這些誤差處理通常包括硬件和軟件的處理。因而,用戶最終使用的電表其自身的計(jì)量精度是達(dá)到國家

3、標(biāo)準(zhǔn)的。然而,在電表的實(shí)際應(yīng)用過程中,由于人為的操作給其計(jì)量帶來種種的隨機(jī)誤差,尤為突出的便是抄表。目前在我國,抄表工作大多數(shù)還是采用“肉眼觀察”。即抄表人員挨家挨戶上門讀取電能表計(jì)度器示值??上攵?,這種抄表方法效率是多么低下、花費(fèi)人力大、抄表不準(zhǔn)確,而它卻仍在全國占據(jù)主流位置。所以“人眼”抄表帶來了很多不便。目前,我國城鄉(xiāng)居民用戶抄電表、水表和煤氣表的方式基本上都是人工抄表,即由抄表人員每月逐戶查抄水表、電表、煤氣表。這種落后的方式,消耗大量的人力、物力,而且采集數(shù)據(jù)的時(shí)間跨度大、采集數(shù)據(jù)的準(zhǔn)確度低。因此,國家有關(guān)部門規(guī)定以后將逐步以計(jì)算機(jī)為基礎(chǔ)的自動(dòng)抄表系統(tǒng)取代傳統(tǒng)的人工抄表。利用一個(gè)紅

4、外抄表器來完成瑣碎的抄表工作。從而從根本上杜絕“肉眼觀察”所帶來的隨機(jī)誤差,并大大提高了抄表的效率。本設(shè)計(jì)是一個(gè)基于單片機(jī)的紅外抄表系統(tǒng),利用紅外線這種非電信號作為傳輸介質(zhì),來傳送數(shù)據(jù)信息,可以在那些不適合或不方便架設(shè)電纜線及電磁干擾較強(qiáng)的工作環(huán)境下,來實(shí)現(xiàn)電度表的抄表,并通過LCD液晶顯示屏顯示讀數(shù),完成電度表用電量的抄錄工作。1.2課題總體設(shè)計(jì)方案本文主要介紹以AT89S51單片機(jī)為核心控制的紅外抄表系統(tǒng)設(shè)計(jì)。該系統(tǒng)主要由控制模塊、發(fā)射模塊、接收模塊、顯示模塊4個(gè)模塊組成。系統(tǒng)的數(shù)據(jù)由發(fā)射板的3個(gè)按鍵按一定的計(jì)算規(guī)則所得。發(fā)射管發(fā)射的38kHz頻率載波由單片機(jī)編程控制產(chǎn)生。發(fā)射模塊是對發(fā)送

5、的數(shù)字信號進(jìn)行適當(dāng)?shù)恼{(diào)制編碼,后經(jīng)發(fā)射管的轉(zhuǎn)換電路轉(zhuǎn)變?yōu)榧t外光脈沖并發(fā)射到空中;接收模塊對接收到的紅外光脈沖進(jìn)行光電轉(zhuǎn)換、解調(diào)譯碼后恢復(fù)原數(shù)字信號。收到的數(shù)據(jù)通過LCD1602液晶顯示屏顯示出來。 圖1-1 電源、電池供電電路設(shè)計(jì)圖本系統(tǒng)具有掉電保護(hù)功能,以便在停電時(shí)保護(hù)所儲(chǔ)存的數(shù)據(jù)信息。如圖1-1所示為電源、電池供電電路設(shè)計(jì)圖。當(dāng)有外接電源時(shí)VCC電壓高于電池電壓,二級管處于截止?fàn)顟B(tài),電池不給單片機(jī)供電;當(dāng)VCC電壓低于電池電壓時(shí),二極管處于導(dǎo)通狀態(tài),電池給單片機(jī)供電,以保證數(shù)據(jù)不丟失。還具有數(shù)據(jù)存儲(chǔ)功能,可以按整體鍵查看之前所收到的數(shù)據(jù)。如圖1-2所示為系統(tǒng)工作的整體框圖。單片機(jī)發(fā)射模塊發(fā)

6、送接收模塊單片機(jī)顯示模塊數(shù)據(jù)設(shè)置顯示模塊圖1-2 系統(tǒng)框圖2 系統(tǒng)硬件設(shè)計(jì)硬件電路主要由兩個(gè)單片機(jī)控制模塊、發(fā)射模塊、接收模塊、顯示模塊以及一些外圍驅(qū)動(dòng)電路組成。2.1 控制模塊圖2-1 AT89S51實(shí)體圖AT89S51是美國ATMEL公司生產(chǎn)的低功耗、高性能CMOS8位單片機(jī),片內(nèi)含4K的可編程的Flash只讀程序存儲(chǔ)器,器件采用ATMEL公司的高密度、非易失性存儲(chǔ)技術(shù)生產(chǎn),兼容標(biāo)準(zhǔn)8051指令系統(tǒng)及引腳。它集Flash程序存儲(chǔ)器既可在線編程(ISP)也可用傳統(tǒng)方法進(jìn)行編程及通用8位微處理器于單片機(jī)芯片中,ATMEL公司的功能強(qiáng)大,低價(jià)位。AT89S51單片機(jī)可提供許多高性價(jià)比的應(yīng)用場合,

7、可靈活應(yīng)用于各種控制領(lǐng)域。89S51單片機(jī)實(shí)物圖如圖2-1所示。AT89S51提供以下標(biāo)準(zhǔn)功能:4K字節(jié)閃速存儲(chǔ)器,128字節(jié)內(nèi)部RAM,32個(gè)I/O口,看門狗(WDT),兩個(gè)數(shù)據(jù)指針,兩個(gè)16位定時(shí)/計(jì)數(shù)器,一個(gè)5向量兩級中斷結(jié)構(gòu),一個(gè)全雙工串行通信口,片內(nèi)振蕩器及時(shí)鐘電路。同時(shí),AT89S51可降至0Hz的靜態(tài)邏輯操作,并支持兩種軟件可選的節(jié)電工作模式??臻e方式停止CPU的工作,但允許RAM,定時(shí)/計(jì)數(shù)器,串行通信口及中斷系統(tǒng)繼續(xù)工作。掉電方式保存RAM中到內(nèi)容,但振蕩器停止工作并禁止其它所有工作部件直到下一個(gè)硬件復(fù)位。AT89S51在平時(shí)的應(yīng)用時(shí)比較多,同樣對它的最基本電路驅(qū)動(dòng)電路也是比

8、較熟悉的。首先必須有5V的驅(qū)動(dòng)直流電源,現(xiàn)在有現(xiàn)有的5V直流電源模塊,就可以直接應(yīng)用5V直流電源模塊做為驅(qū)動(dòng)單片機(jī)AT89S51的電源。這就是在VCC管腳處接上5V電源。GND接地,同時(shí)EA管腳現(xiàn)在不用下載程序也接上5V電源。其次要給AT89S51一個(gè)時(shí)鐘電路,為了方便計(jì)算時(shí)鐘頻率設(shè)計(jì)了在引腳XTAT1和XTAL2外接12M的晶振構(gòu)成內(nèi)部振蕩方式。再加上2個(gè)30pF的電容就組成了時(shí)鐘電路。最后要有復(fù)位電路,單片機(jī)的復(fù)位是由外部的復(fù)位電路來實(shí)現(xiàn)的。復(fù)位引腳RST通過一個(gè)斯密特觸發(fā)器與復(fù)位電路相連,斯密特觸發(fā)器用來抑制噪聲,斯密特觸發(fā)器的輸出電平由復(fù)位電路采樣一次,然后才能得到內(nèi)部復(fù)位操作所需要的

9、信號。復(fù)位電路用10K電阻,加上一個(gè)10uF的電解電容和一個(gè)復(fù)位按鈕來組成復(fù)位電路。由于AT89S51的存儲(chǔ)器以足夠,這就不需要我再設(shè)計(jì)外部擴(kuò)展存儲(chǔ)器的電路了。具體設(shè)計(jì)的AT89S51的最基本外圍電路就設(shè)計(jì)完成了,如圖2-2所示為最小系統(tǒng)原理圖 。圖2-2 最小系統(tǒng)原理圖2.2 發(fā)射模塊紅外發(fā)射模塊是采用紅外發(fā)光二極管來發(fā)送經(jīng)過調(diào)制的紅外光波。紅外發(fā)射器發(fā)出的紅外光轉(zhuǎn)換成相應(yīng)的電信號,再送前置放大器放大。紅外發(fā)射電路的信號一般采用兩級調(diào)制。在紅外數(shù)據(jù)傳輸?shù)男盘栒{(diào)制方式上,采用脈沖調(diào)制的二進(jìn)制不歸零碼。這種調(diào)制方式比較簡單,編碼、解碼都比較方便,有利于電路簡化。紅外線發(fā)射管在LED封裝行業(yè)中主要

10、有三個(gè)常用的波段,如下850nm、875nm、940nm。根據(jù)波長的特性運(yùn)用的產(chǎn)品也有很大的差異,850nm波長的主要用于紅外線監(jiān)控設(shè)備、875nm主要用于醫(yī)療設(shè)備、940nm波段的主要用于紅外線控制設(shè)備。本系統(tǒng)采用的是紅外的940nm波段。如圖2-3所示為紅外發(fā)射二極管實(shí)物圖。圖2-3發(fā)射二極管實(shí)物圖在紅外發(fā)射模塊設(shè)計(jì)中選擇紅外發(fā)射二極管時(shí),要注意以下幾個(gè)問題:第一,由于紅外發(fā)射二極管的PN結(jié)電容的存在,影響了它的工作頻率,選型時(shí)應(yīng)選擇響應(yīng)時(shí)在10-810-7S的紅外發(fā)射二極管,以適應(yīng)數(shù)據(jù)通信的要求;第二,由于現(xiàn)在大多數(shù)紅外發(fā)射二極管為球面透鏡封裝,紅外發(fā)射二極管的發(fā)射指向角較小,為改善發(fā)射

11、光線的指向特性,使之在較寬的偏移臣離內(nèi)正常工作,應(yīng)采用多管并發(fā)的方法但對本系統(tǒng)綜合考慮還是采用了一個(gè)紅外發(fā)射管。圖2-4發(fā)射管連接圖本系統(tǒng)的紅外發(fā)射模塊連接方式如圖2-4所示,接單片機(jī)的P1.0引腳。兩個(gè)電阻是限流的作用,R121是防止電流過大燒壞三極管,R122是防止電流過大燒壞紅外發(fā)射管D121,三極管起到放大電流的主要作用,使得紅外發(fā)射的更遠(yuǎn),當(dāng)單片機(jī)的P1.0口賦值1時(shí),三極管工作,紅外發(fā)射管工作發(fā)射紅外線,當(dāng)單片機(jī)的P1.0賦值0的時(shí)候三極管不工作,紅外發(fā)射管不工作。如圖2-5所示為發(fā)射管內(nèi)部工作流程圖。圖2-5 發(fā)射管內(nèi)部工作流程圖2.3 接收模塊一體化的紅外接收模塊將數(shù)據(jù)信號的接

12、收、放大、檢波、整形集于一體,并且輸出可以讓單片機(jī)識別的信號,這樣大大簡化了接收電路的復(fù)雜程度和電路的設(shè)計(jì)工作,方便使用。本系統(tǒng)采用紅外一體化的接收頭(HS0038)。如圖2-6所示為接收模塊實(shí)物圖。HS0038黑色環(huán)氧樹脂封裝,不受日光、熒光燈等光源干擾,內(nèi)附磁屏蔽、功耗低、靈敏度高。在用小功率發(fā)射管發(fā)射信號情況下,其接收距離可達(dá)35m。它能與TTL、COMS電路兼容。HS0038為直立側(cè)面收光型。它接收紅外信號頻率為38kHz,周期約為26s,同時(shí)能對信號進(jìn)行放大、檢波、整形,得到TTL 電平的編碼信號。三個(gè)管腳分別是地、5 V 電源、解調(diào)信號輸出端。 圖 2-6 接收模塊實(shí)物圖 圖2-7

13、 接收模塊測試圖表2-1 紅外接收模塊的主要參數(shù)工作電壓4.8-5.3V工作電流1.7-2.7mA接收頻率38kHz峰值波長940nm靜態(tài)輸出高電平輸出低電平0.4V輸出高電平接近工作電壓紅外一體化接收頭的好壞測試可以利用圖2-7所示的電路進(jìn)行,在HS0038的電源端2與信號輸出端3之間接上一只二極管及一只發(fā)光二極管后,再配上規(guī)定的工作電源(為5 V),當(dāng)手拿遙控器對著接收頭按任意鍵時(shí),發(fā)光二極管會(huì)閃爍,說明紅外接收頭和遙控器工作都正常;如果發(fā)光二極管不閃爍發(fā)光,說明紅外接收頭和遙控器至少有一個(gè)損壞。只要確保遙控器工作正常,很容易判斷紅外接收頭的優(yōu)劣。在使用紅外接收模塊時(shí)應(yīng)保證HS0038接收

14、模塊接地良好以防止干擾,由于此模塊抗連續(xù)脈動(dòng)光干擾的特性,在進(jìn)行數(shù)據(jù)通訊時(shí)應(yīng)發(fā)送一個(gè)字節(jié)后停頓大小為一個(gè)字節(jié)所占用的時(shí)寬,以滿足此模塊的脈動(dòng)占空比要求。如果發(fā)送一個(gè)字節(jié)后不作停頓,接收器將會(huì)認(rèn)為是光噪聲,將造成通訊失敗。如圖2-8所示為接收模塊的內(nèi)部結(jié)構(gòu)圖。圖2-8 接收模塊內(nèi)部結(jié)構(gòu)圖本系統(tǒng)在使用接收模塊時(shí)在電源端和地端之間加了個(gè)電容,主要是因?yàn)殡娫床ㄐ斡绊懶盘柕妮斎耄觽€(gè)電容有濾波的效果和提高靈敏度。如圖2-9所示為接收模塊連接原理圖。圖2-9 接收管原理連接圖2.4 顯示模塊液晶顯示模塊具有體積小、功耗低、顯示內(nèi)容豐富等特點(diǎn),液晶顯示的原理是利用液晶的物理特性,通過電壓對其顯示區(qū)域進(jìn)行控

15、制,有電就有顯示,這樣就可以顯示出圖形。本系統(tǒng)發(fā)射板用到的顯示模塊為4位共陽LED數(shù)碼管,采用的是動(dòng)態(tài)掃描方式顯示所需要發(fā)送的數(shù)據(jù)。用數(shù)碼管顯示信息時(shí),由于每個(gè)數(shù)碼管至少需要8個(gè)I/O口,如果需要多個(gè)數(shù)碼管,則需要太多I/O口,而單片機(jī)的I/O口是有限的。所以在實(shí)際應(yīng)用中,一般采用動(dòng)態(tài)顯示的方式來解決此問題。下面對數(shù)碼管進(jìn)行簡單的介紹,數(shù)碼管是一種半導(dǎo)體發(fā)光器件,其基本單元是發(fā)光二極管,數(shù)碼管按段數(shù)分為七段數(shù)碼管和八段數(shù)碼管,八段數(shù)碼管比七段數(shù)碼管多一個(gè)發(fā)光二極管單元(多一個(gè)小數(shù)點(diǎn)顯示);按能顯示多少個(gè)“8”可分為1位、2位、4位等等數(shù)碼管;按發(fā)光二極管單元連接方式分為共陽極數(shù)碼管和共陰極數(shù)碼

16、管。共陽數(shù)碼管是指將所有發(fā)光二極管的陽極接到一起形成公共陽極(COM)的數(shù)碼管。共陽數(shù)碼管在應(yīng)用時(shí)應(yīng)將公共極COM接到+5V,當(dāng)某一字段發(fā)光二極管的陰極為低電平時(shí),相應(yīng)字段就點(diǎn)亮。當(dāng)某一字段的陰極為高電平時(shí),相應(yīng)字段就不亮。共陰數(shù)碼管是指將所有發(fā)光二極管的陰極接到一起形成公共陰極(COM)的數(shù)碼管。共陰數(shù)碼管在應(yīng)用時(shí)應(yīng)將公共極COM接到地線GND上,當(dāng)某一字段發(fā)光二極管的陽極為高電平時(shí),相應(yīng)字段就點(diǎn)亮。當(dāng)某一字段的陽極為低電平時(shí),相應(yīng)字段就不亮。本系統(tǒng)用LCD1602液晶顯示器來顯示收到的數(shù)據(jù)信息。LCD1602可以顯示2行16個(gè)字符,有8位數(shù)據(jù)總線D0-D7和RS、R/W、E三個(gè)控制端口,工

17、作電壓為5V。LCD1602液晶模塊內(nèi)部的字符發(fā)生存儲(chǔ)器(CGROM)已經(jīng)存儲(chǔ)了160個(gè)不同的點(diǎn)陣字符圖形,這些字符有:阿拉伯?dāng)?shù)字、英文字母的大小寫、常用的符號、和日文假名等,每一個(gè)字符都有一個(gè)固定的代碼,比如大寫的英文字母“A”的代碼是B(41H),顯示時(shí)模塊把地址41H中的點(diǎn)陣字符圖形顯示出來,我們就能看到字母“A”。LCD1602內(nèi)部結(jié)構(gòu)由DDRAM、CGROM、IR、DR、BF、AC等大規(guī)模集成電路組成。(1)DDRAM為數(shù)據(jù)顯示用的RAM,用以存放要LCD顯示的數(shù)據(jù),只要將標(biāo)準(zhǔn)的ASC碼放入DDRAM,內(nèi)部控制線路就會(huì)自動(dòng)將數(shù)據(jù)傳送到顯示器上,并顯示出ASC對應(yīng)的字符。(2)CGRO

18、M為字符產(chǎn)生器ROM,可供使用者存儲(chǔ)特殊造型的字符碼,CGROM最多可存放8個(gè)字符。(3)IR為指令寄存器,負(fù)責(zé)存儲(chǔ)MCU要寫個(gè)LCD的指令碼。當(dāng)RS及R/W引腳信號為0且E引腳信號為由1變?yōu)?時(shí),D0D7引腳上的數(shù)據(jù)便會(huì)存入到IR寄存器中。(4)DR為數(shù)據(jù)寄存器,負(fù)責(zé)存儲(chǔ)單片機(jī)要寫到CGRAM或DDROM的數(shù)據(jù)。因此,可將DR視為一個(gè)數(shù)據(jù)緩沖區(qū)。當(dāng)RS及R/W引腳信號為1且E引腳信號為由1變?yōu)?時(shí),讀取數(shù)據(jù)。當(dāng)RS引腳信號為1,R/W引腳信號為0且E引腳信號為由1變?yōu)?時(shí),存入數(shù)據(jù)。圖2-10 LCD液晶顯示原理圖如圖2-10所示為液晶顯示原理圖,8位數(shù)據(jù)總線由單片機(jī)的I/O口P2控制,RS

19、腳的高低電平控制數(shù)據(jù)和指令的寫入,R/W腳的高低電平控制數(shù)據(jù)的讀取和寫入。如圖2-11為模擬接線方式圖。LCD液晶屏的第三引腳接了個(gè)滑動(dòng)變阻,目的是對LCD對比度進(jìn)行調(diào)節(jié),使顯示達(dá)到合適的效果。當(dāng)電阻器滑到最靠近電源端時(shí)對比度最弱,當(dāng)滑到最靠近地端時(shí)對比度最高。但對比度過高時(shí)會(huì)產(chǎn)生“鬼影”,因此用一個(gè)滑動(dòng)變阻來調(diào)整對比度。表2-2為LCD1602液晶顯示屏的主要技術(shù)參數(shù)。圖2-12所示為讀操作時(shí)序的控制器接口圖。表2-2 LCD1602的主要技術(shù)參數(shù)顯示容量16×2個(gè)字符芯片工作電壓4.5-5.5V工作電流2.0mA(5.0V)模塊最佳工作電壓5.0V字符尺寸2.95×4.

20、35(W×H)mm表2-3 LCD1602液晶顯示屏接口信號的說明編號符號引腳說明編號符號引腳說明1VSS電源地9D2Data I/O2VDD電源正極10D3Data I/O3VL液晶顯示偏壓信號11D4Data I/O4RS數(shù)據(jù)/命令選擇端12D5Data I/O5R/W讀/寫選擇端13D6Data I/O6E使能信號14D7Data I/O7D0Data I/O15BLA背光源正極8D1Data I/O16BLK背光源負(fù)極圖2-11 模擬接線圖圖2-12 讀操作時(shí)序的控制器接口圖3 系統(tǒng)軟件設(shè)計(jì)程序的編寫就要涉及到程序語言的選擇,下面先看看匯編語言和C語言的特性,再進(jìn)行語言的選擇

21、。(1)C語言:C語言是國內(nèi)外廣泛使用的計(jì)算機(jī)語言,是計(jì)算機(jī)應(yīng)用人員應(yīng)掌握的一種程序設(shè)計(jì)工具。C語言功能豐富,表達(dá)能力強(qiáng),使用靈活方便,應(yīng)用面廣,目標(biāo)程序效率高,可移植性好,既具有高級語言的優(yōu)點(diǎn),又具有低級語言的許多特點(diǎn)。因此,C語言特別適合編寫系統(tǒng)軟件。除了這些特點(diǎn)外,C語言還具有以下優(yōu)越性:在不需要完全了解單片機(jī)系統(tǒng)具體硬件的情況下,也能夠編出符合硬件實(shí)際的專業(yè)水平的程序;以適應(yīng)片上存儲(chǔ)器的大小;中斷服務(wù)程序的現(xiàn)場保護(hù)和恢復(fù),中斷向量表的填寫,是直接與單片機(jī)相關(guān)的,都由C編譯器代辦;提供常用的標(biāo)準(zhǔn)函數(shù)庫,以供用戶直接使用; 頭文件中定義宏、說明復(fù)雜數(shù)據(jù)類型和函數(shù)原型,有利于程序的移植和支持

22、單片機(jī)的系列化產(chǎn)品的開發(fā);有嚴(yán)格的句法檢查,錯(cuò)誤很少,可容易地在高級語言的水平上迅速地被排除掉;可方便地接受多種實(shí)用程序的服務(wù):如片上資源的初始化有專門的實(shí)用程序自動(dòng)生成;再如,有實(shí)時(shí)多任務(wù)操作系統(tǒng)可調(diào)度多道任務(wù),簡化用戶編程,提高運(yùn)行的安全性等等。(2)匯編語言:匯編語言是計(jì)算機(jī)能提供給用戶的最快而又最有效的語言,也是能夠利用計(jì)算機(jī)所有硬件特性并能直接控制硬件的唯一語言,因而在對于程序的空間和時(shí)間要求很高的場合,匯編語言是必不可少的,至于對于很多需要直接控制硬件的應(yīng)用場合,更是非用匯編語言不可。除了這些特性,匯編語言還具有下列特性: 占用的內(nèi)存單元和CPU資源少,能直接對硬件進(jìn)行控制; 程序

23、簡短執(zhí)行速度快; 可直接調(diào)用單片機(jī)的全部資源,并可有效地利用單片機(jī)的專有特性; 能準(zhǔn)確地掌握指令的執(zhí)行時(shí)間,適用于實(shí)時(shí)控制系統(tǒng)。紅外抄表系統(tǒng)的軟件程序設(shè)計(jì)主要由主程序、發(fā)射程序、顯示程序、接收程序組成。通過對以上兩種語言的分析,由于C語言程序有利于實(shí)現(xiàn)較復(fù)雜的算法,同時(shí)該程序也比較復(fù)雜,要控制多個(gè)部件模塊。為了能簡單有條理的編輯程序。兩種語言都有其獨(dú)有的特性,結(jié)合自身的情況,對C語言比匯編語言要熟悉,并且應(yīng)用C的時(shí)間比匯編長,所以我最終選擇了以C語言來編寫系統(tǒng)的程序。初始化子程序數(shù)值按鍵掃描數(shù)碼管顯示是運(yùn)行接收程序LCD顯示后續(xù)處理接收按鍵掃描開始運(yùn)行發(fā)送程序否如圖3-1所示為紅外抄表系統(tǒng)的整

24、體程序流程圖,系統(tǒng)開始工作時(shí)進(jìn)行初始化操作。由按鍵控制數(shù)據(jù)是否發(fā)送。 圖3-1 系統(tǒng)軟件流程圖3.1 38kHz頻率的產(chǎn)生及發(fā)射程序設(shè)計(jì)38kHz頻率可以有效防止日光和燈光的干擾,使得通信距離更遠(yuǎn)?,F(xiàn)討論產(chǎn)生38kHz頻率的兩種方案。方案一:分頻電路產(chǎn)生圖3-2 分頻電路圖如圖3-2所示455kHz晶振經(jīng)12分頻得到38kHz。由455kHz的晶振CRY,反相器74HC04及電阻、電容構(gòu)成的振蕩器產(chǎn)生455kHz的方波信號。經(jīng)脈沖分頻器74LS92,六分頻成為75.83kHz的脈沖信號。再經(jīng)過D觸發(fā)器構(gòu)成的2分頻/整形電路變成38kHz的方波信號。本方案的振蕩器采用了晶振,因晶振頻率十分穩(wěn)定。

25、RC振蕩器的穩(wěn)定性差,往往由于偏差很大而縮短控制距離。方案二:軟件生成38kHz頻率f=38kHz T=1/f 計(jì)算得T26.3us 如圖3-5所示發(fā)射管接在單片機(jī)的P1.0引腳上,所以只要控制單片機(jī)P1.0引腳的高、低電平周期為26.3us。程序如下:for(a=aa;a>0;a-) out=1;i=7;while(i>0)i-;out=0;如下程序首先發(fā)送3.028ms38kHz頻率,再停止發(fā)送2.012ms。這兩個(gè)段是為了讓接收模塊識別防止其他信號的干擾。接著開始發(fā)送數(shù)據(jù),kHz(40)(發(fā)送時(shí)間為1ms)后判斷數(shù)據(jù)的最后一位是“1”還是“0”。如果數(shù)據(jù)是“1”則停止發(fā)送de

26、layms(93),否則停止發(fā)送delayms(65)(1ms)。一個(gè)數(shù)據(jù)為發(fā)送完畢,num=num>>1數(shù)據(jù)位右移一位后判斷發(fā)送。如此循環(huán)8次數(shù)據(jù)就發(fā)送完畢。發(fā)送完畢指令kHz(20),后停止發(fā)送。如圖3-3所示發(fā)射和接收波形圖。 a=2ms b=1ms c=1.5ms圖3-3 發(fā)射接收波形圖khz(116);delayms(125);for(num1=8;num1>0;num1-) khz(40);if(num&0x001)delayms(93);/delay 1.5mselsedelayms(65);/delay 1msnum=num>>1;如圖3-

27、4所示為38kHz的載波頻率:低電平17us、高電平9us,17+9=26us 比26.3快一點(diǎn)點(diǎn)。高、低電平時(shí)間不是固定值,只要相加等于26us就是發(fā)送38khz的頻率。 圖3-4 計(jì)算得出的載波頻率3.2 數(shù)據(jù)計(jì)算程序本系統(tǒng)用發(fā)射板的三個(gè)按鍵來設(shè)置需要發(fā)送的數(shù)據(jù),三個(gè)按鍵分別是個(gè)、十、百位控制鍵,數(shù)值計(jì)算規(guī)則如下:每按一個(gè)按鍵對應(yīng)位加一。利用軟件編程對各位進(jìn)行相加計(jì)算。每位最大只能按到9,當(dāng)超過9,則返回到0并且蜂鳴器響一聲,如此反復(fù)循環(huán)計(jì)算。如個(gè)、十、百位各按一下,則得數(shù)據(jù)111。計(jì)算規(guī)則十分簡單,如下程序?yàn)榘傥豢刂疲簁ey1為百位控制鍵,首先進(jìn)行按鍵掃描,當(dāng)按鍵引腳為低電平時(shí)說明按鍵沒

28、有按下,繼續(xù)等待;當(dāng)引腳為高電平時(shí)說明按鍵已按下,則蜂鳴器響一聲,百位加一。百位計(jì)算部分程序如下:if(key1=0)delay_ms(10);if(key1=0)while(!key1);bai+;if(bai=10) bai=0;beer=1;delay_ms(100);beer=0;上述為百位計(jì)算程序,同理十位和個(gè)位也是一樣。掃描一遍按鍵后進(jìn)行總和計(jì)算程序,并由數(shù)碼管顯示??偤陀?jì)算公式為:zong=bai*100+shi*10+ge。3.3 顯示模塊程序設(shè)計(jì)3.3.1 數(shù)碼管顯示數(shù)碼管動(dòng)態(tài)顯示程序中,各個(gè)位的延時(shí)時(shí)間長短非常重要,如果延時(shí)時(shí)間長,則會(huì)出現(xiàn)閃爍現(xiàn)象;如果延時(shí)時(shí)間太短,則會(huì)出

29、現(xiàn)顯示暗且有重影。所有數(shù)碼管的段選全部連接在一起,動(dòng)態(tài)顯示是多個(gè)數(shù)碼管,交替顯示,利用人的視覺暫留作用使人看到多個(gè)數(shù)碼管同時(shí)顯示。在編程時(shí),需要輸出段選和位選信號,位選信號選中其中一個(gè)數(shù)碼管,然后輸出段碼,使該數(shù)碼管顯示所需要的內(nèi)容,延時(shí)一段時(shí)間后,再選中另一個(gè)數(shù)碼管,再輸出對應(yīng)的段碼,高速交替。 例如需要顯示數(shù)字“12”時(shí),先輸出位選信號選中第一個(gè)數(shù)碼管,輸出1的段碼延時(shí)一段時(shí)間后選中第二個(gè)數(shù)碼管,輸出2的段碼。把上面的流程以一定的速度循環(huán)執(zhí)行就可以顯示出“12”,由于交替的速度非???,人眼看到的就是連續(xù)的“12”。先顯示百位,延時(shí)一段時(shí)間后顯示十位,最后顯示各位。一直按照設(shè)置時(shí)間循環(huán)顯示。

30、交替顯示,利用人的視覺暫留作用使人看到多個(gè)數(shù)碼管同時(shí)顯示。使得看到連續(xù)的3位數(shù)。部分程序如下:P2=dispcodebai;P0=dispbitcode0;delay_ms(10);P0=dispbitcode3;P2=dispcodeshi;P0=dispbitcode1;delay_ms(10);P0=dispbitcode3;3.3.2 LCD液晶顯示程序液晶顯示屏的分類方法有很多種,通??砂雌滹@示方式分為段式、字符式、點(diǎn)陣式等。除了黑白顯示外,液晶顯示器還有多灰度有彩色顯示等。如果根據(jù)驅(qū)動(dòng)方式來分,可以分為靜態(tài)驅(qū)動(dòng)(Static)、單純矩陣驅(qū)動(dòng)(Simple Matrix)和主動(dòng)矩陣驅(qū)

31、動(dòng)(Active Matrix)三種。(1)線段的顯示點(diǎn)陣圖形式液晶由M×N個(gè)顯示單元組成,假設(shè)LCD顯示屏有64行,每行有128列,每8列對應(yīng)1字節(jié)的8位,即每行由16字節(jié),共16×8=128個(gè)點(diǎn)組成,屏上64×16個(gè)顯示單元與顯示RAM區(qū)1024字節(jié)相對應(yīng),每一字節(jié)的內(nèi)容和顯示屏上相應(yīng)位置的亮暗對應(yīng)。例如屏的第一行的亮暗由RAM區(qū)的000H00FH的16字節(jié)的內(nèi)容決定,當(dāng)(000H)=FFH時(shí),則屏幕的左上角顯示一條短亮線,長度為8個(gè)點(diǎn);當(dāng)(3FFH)=FFH時(shí),則屏幕的右下角顯示一條短亮線;當(dāng)(000H)=FFH,(001H)=00H,(002H)=00H,

32、(00EH)=00H,(00FH)=00H時(shí),則在屏幕的頂部顯示一條由8段亮線和8條暗線組成的虛線。這就是LCD顯示的基本原理。(2)字符的顯示用LCD顯示一個(gè)字符時(shí)比較復(fù)雜,因?yàn)橐粋€(gè)字符由6×8或8×8點(diǎn)陣組成,既要找到和顯示屏幕上某幾個(gè)位置對應(yīng)的顯示RAM區(qū)的8字節(jié),還要使每字節(jié)的不同位為“1”,其它的為“0”,為“1”的點(diǎn)亮,為“0”的不亮。這樣一來就組成某個(gè)字符。但由于內(nèi)帶字符發(fā)生器的控制器來說,可以讓控制器工作在文本方式,根據(jù)在LCD上開始顯示的行列號及每行的列數(shù)找出顯示RAM對應(yīng)的地址,設(shè)立光標(biāo),在此送上該字符對應(yīng)的代碼即可。(3)漢字的顯示漢字的顯示一般采用圖

33、形的方式,事先從微機(jī)中提取要顯示的漢字的點(diǎn)陣碼(一般用字模提取軟件),每個(gè)漢字占32B,分左右兩半,各占16B,左邊為1、3、5右邊為2、4、6根據(jù)在LCD上開始顯示的行列號及每行的列數(shù)可找出顯示RAM對應(yīng)的地址,設(shè)立光標(biāo),送上要顯示的漢字的第一字節(jié),光標(biāo)位置加1,送第二個(gè)字節(jié),換行按列對齊,送第三個(gè)字節(jié)直到32B顯示完就可以LCD上得到一個(gè)完整漢字。如表3-1所示為1602液晶模塊內(nèi)部控制器的控制指令。如圖3-5所示為LCD液晶顯示流程圖。表3-1 1602液晶模塊內(nèi)部控制器指令序號指令RSR/WD7D6D5D4D3D2D1D01清顯示00000000012光標(biāo)返回000000001*3置輸

34、入模式00000001I/DS4顯示開/關(guān)控制0000001DCB5光標(biāo)或字符移位000001S/CR/L*6置功能00001DLNF*7置字符發(fā)生存貯器地址0001字符發(fā)生存貯器地址8置數(shù)據(jù)存貯器地址001顯示數(shù)據(jù)存貯器地址9讀忙標(biāo)志或地址01BF計(jì)數(shù)器地址10寫數(shù)到CGRAM或DDRAM)10要寫的數(shù)據(jù)內(nèi)容11從CGRAM或DDRAM讀數(shù)11讀出的數(shù)據(jù)內(nèi)容1602液晶模塊的讀寫操作、屏幕和光標(biāo)的操作都是通過指令編程來實(shí)現(xiàn)的。(說明:1為高電平、0為低電平)指令1:清顯示,指令碼01H,光標(biāo)復(fù)位到地址00H位置指令2:光標(biāo)復(fù)位,光標(biāo)返回到地址00H指令3:光標(biāo)和顯示模式設(shè)置指令4:顯示開關(guān)控

35、制指令5:光標(biāo)或顯示移位指令6:功能設(shè)置命令指令7:字符發(fā)生器RAM地址設(shè)置指令8:DDRAM地址設(shè)置指令9:讀忙信號和光標(biāo)地址指令10:寫數(shù)據(jù)指令11:讀數(shù)據(jù)開始LCD初始化延時(shí)設(shè)第一行顯示位置顯示第一行內(nèi)容設(shè)第二行并顯示位置顯示第二行內(nèi)容圖3-5 液晶顯示流程圖液晶顯示模塊是一個(gè)慢顯示器件,所以在執(zhí)行每條指令之前一定要確認(rèn)模塊的忙標(biāo)志為低電平,表示不忙,否則此指令失效。要顯示字符時(shí)要先輸入顯示字符地址,也就是告訴模塊在哪里顯示字符,圖3-6為LCD1602液晶屏的內(nèi)部顯示地址。圖3-6 LCD1602液晶屏內(nèi)部顯示地址例如第二行第一個(gè)字符的地址是40H,那么是否直接寫入40H就可以將光標(biāo)定

36、位在第二行第一個(gè)字符的位置呢?這樣不行,因?yàn)閷懭腼@示地址時(shí)要求最高位D7恒定為高電平1所以實(shí)際寫入的數(shù)據(jù)應(yīng)該是B(40H)+B(80H)=B(C0H)。在對液晶模塊的初始化中要先設(shè)置其顯示模式,在液晶模塊顯示字符時(shí)光標(biāo)是自動(dòng)右移的,無需人工干預(yù)。每次輸入指令前都要判斷液晶模塊是否處于忙的狀態(tài)。LCD1602液晶模塊內(nèi)部的字符發(fā)生存儲(chǔ)器(CGROM)已經(jīng)存儲(chǔ)了160個(gè)不同的點(diǎn)陣字符圖形,這些字符有:阿拉伯?dāng)?shù)字、英文字母的大小寫、常用的符號、和日文假名等,每一個(gè)字符都有一個(gè)固定的代碼,比如大寫的英文字母“A”的代碼是B(41H),顯示時(shí)模塊把地址41H中的點(diǎn)陣字符圖形顯示出來,我們就能看到字母“A

37、”。部分程序如下:void adr_write(unsigned char adr) delay(20);e=0; rs=0; rw=0; e=1; lcd_data=adr; e=0; 使用時(shí)都要進(jìn)行初始化操作,如兩行顯示、清顯示、是否需光標(biāo),從哪里開始顯示等等。部分程序如下:adr_write(0x38); /兩行顯示,5*7模式adr_write(0x01);/清顯示adr_write(0x0c); /整體顯示打開,不顯示光標(biāo)adr_write(0x06);adr_write(0x80);/從第一行的第一個(gè)位置開始顯示 開機(jī)時(shí),首先從坐標(biāo)的(0,0)開始顯示"Please Po

38、wer On!",(1,0)顯示為空。接著按照同樣顯示定位顯示"Has Boot!"和"Think You!"。最后顯示收到的數(shù)據(jù),第一行顯示"DianDuShuZhi:"加數(shù)值,第二行顯示為空。void display_init()str_write("Please Power On!");str_write(" ");void display_on()str_write("Has Boot! ");str_write("Think You! "

39、;);void dis_play()str_write("DianDuShuZhi:");當(dāng)按整體鍵時(shí),顯示之前所存儲(chǔ)的數(shù)據(jù)。由于本設(shè)計(jì)顯示屏比較小,所以只設(shè)置顯示4個(gè)讀數(shù)。第一行顯示兩個(gè)數(shù),第二行顯示兩個(gè)數(shù),顯示方式為:第一行: DS1:+數(shù)值 DS2:+數(shù)值第二行: DS3:+數(shù)值 DS4:+數(shù)值部分程序如下:str_write("DS1:");ddr_write(tablenum1/100);ddr_write(tablenum1/10%10);ddr_write(tablenum1%10);str_write("DS2:");

40、ddr_write(tablenum2/100);ddr_write(tablenum2/10%10);ddr_write(tablenum2%10);3.4 接收模塊程序設(shè)計(jì)紅外接收頭在接收數(shù)據(jù)時(shí)首先要對脈沖信號進(jìn)行識別,判斷是不是所要的那個(gè)信號。系統(tǒng)采用外部中斷方式來進(jìn)行數(shù)據(jù)的識別和解碼。當(dāng)收到一個(gè)紅外信號時(shí),立即對其他紅外信號進(jìn)行屏蔽并對此信號進(jìn)行識別。部分識別程序如下:void sieasdf() interrupt 0EX0=0; for(a=5;a>0;a-)delayms(35);/延時(shí)0.5ms 判斷5次 5*0.52.5ms進(jìn)行5次判斷,如圖3-7所示:發(fā)射模塊發(fā)射了3

41、ms38kHz頻率,接收模塊進(jìn)行了2.5ms時(shí)間的判斷。如是正確信號即執(zhí)行解碼程序,否則跳出解碼程序。解碼部分程序如下: if(fleg)delayms(72);/延時(shí)1ms 判斷是不是高電平了if(in)delayms(115);/延時(shí)讓它超過2ms; 2.5+1+1.623=5.123ms 圖3-7 波形識別for(a=10;a>0;a-)while(!in);delayms(86);/延時(shí)1.188ms 判斷IO高低num=num>>1;if(in)delayms(31);/延時(shí)0.6ms mun=num; 解碼完畢如不是正確信號,則跳出。跳出程序:if(in)fleg

42、=0;4 電路板的制作4.1 原理圖的繪制本次設(shè)計(jì)的紅外通信系統(tǒng)的原理是通過查閱大量的資料,在圖書館以及網(wǎng)上查找資料所得到的,經(jīng)過綜合的分析其可行性,經(jīng)濟(jì)性等方面要求前提下做出的電路原理圖。而在有可靠的電路原理圖之后,我需要再做的就是將電路原理圖變成一個(gè)硬件,使其實(shí)現(xiàn)預(yù)定的功能。如果使用的是萬能板,則不需要繪制電路圖,只要根據(jù)原理圖的元器件在萬能板上擺放好,用導(dǎo)線將其焊接起來即可。但是在使用萬能板時(shí)有許多的不便之處,比如說在焊接的過程中需要跳線,而板子本身也不夠美觀,好看。所以為了獲得更好的效果,我們一般都使用腐蝕板,這樣我們就首先的步驟就是在protel 99SE中繪制電路原理圖。在本設(shè)計(jì)的

43、電路圖中的元器件,在protel 99SE的標(biāo)準(zhǔn)元件庫里基本上都有,但是四位七段的共陽數(shù)碼管在標(biāo)準(zhǔn)庫里沒有找到,所以在繪制電路圖時(shí)就需要自己畫一個(gè)數(shù)碼管,同時(shí)也要做一個(gè)它的封裝圖,還有用到的LCD1602是在庫中沒有找到元件和封裝,這也同樣需要我測量該元件的管腳和找出它的原件參數(shù),做出它的原件圖和封裝庫。做好了這個(gè)基本上就可以了畫出完整的電路原理圖了。首先我們先要在元器件庫中調(diào)入各個(gè)元器件,將各個(gè)模塊的元器件放在一起,然后用線將其連接起來其可完成原理圖的基本繪制。4.2 PCB圖的生成由前面一節(jié)我提到在protel 99SE里繪制的原理圖,如果要生成制作電路板所用的PCB圖的話,首先要確認(rèn)我們

44、前面畫的電路原理圖的正確性,確定每個(gè)元器件的連線都連接上,所以在生成PCB之前我們要對每個(gè)元器件進(jìn)行封裝,封裝庫沒有的元器件要自己做一個(gè),比如前面講到的四位七段數(shù)碼管的封裝。在對每個(gè)元器件封裝的同時(shí)定義每個(gè)元器件的編號,編號要一一對應(yīng),不能有重復(fù)。電阻:AXIAL0.3AXIAL0.7 其中0.40.7指電阻的長度,一般用AXIAL0.4瓷片電容:RAD0.1RAD0.3 其中0.10.3指電容大小,一般用RAD0.1電解電容:RB.1/.2RB.4/.8 其中.1/.2.4/.8指電容大小。一般<100uF用RB.1/.2,100uF470uF用RB.2/.4,>470uF用RB

45、.3/.6二極管:DIODE0.4DIODE0.7 其中0.40.7指二極管長短,一般用DIODE0.4 集成塊:DIP8DIP40, 其中840指有多少腳,8腳的就是DIP8貼片電阻 石英晶體振蕩器 :XTAL1 單排多針插座:SIP 雙列直插元件:DIP 然后是進(jìn)行元器件的電氣檢測,檢測沒有錯(cuò)誤的話會(huì)顯示沒有錯(cuò)誤,如果錯(cuò)誤,連線沒有連上等等都會(huì)在原理圖中只指示出來。然后就是生成網(wǎng)絡(luò)報(bào)表,顯示所有的元器件的封裝號,編號等。只要沒有出現(xiàn)錯(cuò)誤就可以生成PCB圖。生成PCB后需要對其進(jìn)行布線,設(shè)計(jì)焊盤的大小,導(dǎo)線的粗細(xì),各個(gè)元器件實(shí)際放的位置,布線是一件很麻煩的事情,要盡量沒有交叉,不限還要美觀等

46、等,這個(gè)工作長的話需要兩三天到一個(gè)星期的時(shí)間,熟悉的話半天一天就可以完成。像我以前沒有接觸太多,所以布線起來比較困難,需要較多時(shí)間,但從中也學(xué)到了不少東西。4.3 電路板到印制和焊接考慮到本系統(tǒng)所用元器件較少,大部分功能都是通過軟件編程來實(shí)現(xiàn),同時(shí)也出于對畢業(yè)設(shè)計(jì)成本的考慮,因此所用到的板子是自己手工制作的PCB板。在電路板的制作中,首先要進(jìn)行線路的排布。利用PROTEL 軟件模擬實(shí)際電路板的線路走向,盡量避免線路出現(xiàn)交叉短路,電源線路盡量安排在電路板的最外圈。PCB板刻錄完成之后,開始進(jìn)行焊接工作。焊接完后進(jìn)行電路板檢查,將原線路圖與實(shí)際焊接的電路板進(jìn)行對比,由于線路不多,所以用萬用表的歐姆

47、檔或是短路聲響指示功能來做焊點(diǎn)的檢測,如此可以避免焊接時(shí)漏焊、虛焊和配線錯(cuò)誤的問題,同時(shí)保證了所制作出來的線路與原設(shè)計(jì)線路的一致性。5 系統(tǒng)調(diào)試5.1 硬件調(diào)試本設(shè)計(jì)硬件部分主要為顯示模塊、發(fā)射和接收模塊。硬件電路功能檢測主要針對以下這幾部分進(jìn)行測試。對于顯示電路,由于使用的是四位數(shù)碼管顯示,首先要確定數(shù)碼管的共陰還是共陽極。因此先用萬用表檢測是什么極性。然后再先固定下,檢查顯示電路能否正常顯示。最后再焊接上去。對于接收模塊,在HS0038的電源端與信號輸出端之間接上一只二極管及一只發(fā)光二極管后,再配上規(guī)定的工作電源(5V),當(dāng)手拿遙控器對著接收頭按任意鍵時(shí),發(fā)光二極管會(huì)閃爍,說明紅外接收頭和

48、遙控器工作都正常;如果發(fā)光二極管不閃爍發(fā)光,說明紅外接收頭和遙控器至少有一個(gè)損壞。只要確保遙控器工作正常,很容易判斷紅外接收頭的優(yōu)劣。排除邏輯故障:這類故障往往由于設(shè)計(jì)和加工制板過程中工藝性錯(cuò)誤所造成的。主要包括錯(cuò)線、開路、短路。排除的方法是首先將加工的印制板認(rèn)真對照原理圖,看兩者是否一致。應(yīng)特別注意電源系統(tǒng)檢查,以防止電源短路和極性錯(cuò)誤。必要時(shí)利用數(shù)字萬用表的短路測試功能,可以縮短排錯(cuò)時(shí)間。排除元件失效:造成這類錯(cuò)誤的原因有兩個(gè):一個(gè)是元器件買來時(shí)就已壞了;另一個(gè)是由于安裝錯(cuò)誤,造成器件燒壞??梢圆扇z查元器件與設(shè)計(jì)要求的型號、規(guī)格和安裝是否一致。在保證安裝無誤后,用替換方法排除錯(cuò)誤。排除電

49、源故障:在通電前,一定要檢查電源電壓的極性,否則很容易造成集成塊損壞。加電后檢查各插件上引腳的電位,一般先檢查VCC與GND之間電位。5.2 軟件調(diào)試軟件的設(shè)計(jì)與調(diào)試實(shí)行分模塊實(shí)現(xiàn)方法。本設(shè)計(jì)軟件調(diào)試中的分模塊包括顯示模塊、發(fā)射和接收模塊。各個(gè)獨(dú)立模塊功能調(diào)試成功后,將這些模塊程序通過主程序合并在一起,最后再對合并后的總程序進(jìn)行調(diào)試。各軟件模塊首先要通過PC和仿真器進(jìn)行軟件調(diào)試,當(dāng)仿真效果符合要求后,再燒寫進(jìn)單片機(jī)看能否在實(shí)際電路板上正常工作。編程語言的軟件設(shè)計(jì)采用C語言編寫。LED顯示問題:本設(shè)計(jì)的最終方案是采用LED顯示屏實(shí)現(xiàn)顯示功能,最初數(shù)碼管顯示不正常,出現(xiàn)閃爍現(xiàn)象。通過調(diào)試發(fā)現(xiàn)這是由

50、于延時(shí)時(shí)間選擇不當(dāng)會(huì)使人眼產(chǎn)生視覺暫留效果,每一次顯示時(shí)都必須加入適當(dāng)?shù)臅r(shí)間延時(shí)。由于一開始所選用的延時(shí)時(shí)間太短,因此出現(xiàn)閃爍現(xiàn)象,在增加顯示延時(shí)之后,數(shù)碼管顯示正常。蜂鳴器異常啟動(dòng)問題:蜂鳴器的啟動(dòng)/關(guān)閉是通過單片機(jī)輸出的控制信號來實(shí)現(xiàn)的,當(dāng)有按鍵按下,單片機(jī)將控制口進(jìn)行賦值,從而啟動(dòng)蜂鳴器發(fā)聲。在最初編寫程序時(shí),鍵盤控制部分按照常例加入了按鍵消抖程序。在實(shí)際調(diào)試中,發(fā)現(xiàn)按鍵出現(xiàn)反應(yīng)不靈敏現(xiàn)象。這是因?yàn)樵阪I盤控制程序中,除了消抖程序外,還加入了按鍵提示音程序(每次按壓鍵盤時(shí),蜂鳴器發(fā)出“嗶”的一聲提示音)。由于在調(diào)用子程序時(shí),實(shí)際上已實(shí)現(xiàn)了一次時(shí)間的延時(shí),因此再加入按鍵消抖程序的延時(shí)后,致使

51、延時(shí)時(shí)間過長而出現(xiàn)按鍵反應(yīng)不靈敏問題。通過調(diào)試發(fā)現(xiàn)子程序本身所產(chǎn)生的延時(shí)已能夠滿足按鍵消抖時(shí)間延遲的要求,因此在鍵盤控制程序中無需再加入專門的按鍵消抖程序。在去除按鍵消抖程序后,按鍵控制靈敏度恢復(fù)正常??偨Y(jié)語畢業(yè)設(shè)計(jì)完成的主要任務(wù)是單片機(jī)控制系統(tǒng)的設(shè)計(jì)、紅外通信的設(shè)計(jì)和顯示模塊的設(shè)計(jì)三大塊內(nèi)容。通過單片機(jī)編程來獲取38kHz頻率的載波,由LED數(shù)碼管顯示需要發(fā)送的數(shù)據(jù),通過紅外通信傳送并由LCD顯示。總結(jié)整個(gè)畢業(yè)設(shè)計(jì)的制作完成過程,心里有頗多體會(huì)和得到以下結(jié)論:(1)對整個(gè)紅外通信系統(tǒng)進(jìn)行了全面的分析,了解了紅外通信的原理。(2)對液晶顯示屏的了解有了很深刻的印象,選用了市場上應(yīng)用的比較廣泛的

52、LCD1602。(3)整個(gè)系統(tǒng)模塊化,每單個(gè)模塊進(jìn)行比較設(shè)計(jì),編程時(shí)也是單個(gè)模塊先進(jìn)行編程,然后各個(gè)模塊整合起來,以實(shí)現(xiàn)這次畢業(yè)設(shè)計(jì)的要求。(4)對各個(gè)模塊所使用的芯片元器件進(jìn)行了較深的了解,知道每個(gè)芯片的功能。(5)繪制原理圖時(shí)還學(xué)會(huì)了使用其他的軟件進(jìn)行電路的仿真,比如EWB。(6)設(shè)計(jì)時(shí)更熟練的使用了protel 99SE軟件,這是一個(gè)很有實(shí)用性的軟件,這對我們以后出去工作有較大的幫助。由于缺乏生產(chǎn)生活中的試驗(yàn),所以本設(shè)計(jì)要應(yīng)用于生產(chǎn)生活還需要進(jìn)行改進(jìn),對單片機(jī)內(nèi)存的擴(kuò)展,可以存更多的程序,或者改用內(nèi)存更大的單片機(jī)。由于是實(shí)物設(shè)計(jì),所以我在設(shè)計(jì)的過程中考慮最多的是實(shí)際制造的問題,因此在設(shè)計(jì)

53、理念上受到了諸多的限制。同時(shí)自身的知識和經(jīng)驗(yàn)儲(chǔ)備不足,無法將自己的設(shè)計(jì)理念完全體現(xiàn)在實(shí)物上。但是正是這些諸多的因素使我懂得了,作為一名設(shè)計(jì)者如何去做設(shè)計(jì),如何來實(shí)現(xiàn)設(shè)計(jì)要求??傮w上講,在這次畢業(yè)設(shè)計(jì)過程里,能將所學(xué)的知識應(yīng)用到實(shí)際中,感受到了設(shè)計(jì)的樂趣。參考文獻(xiàn) 1 胡漢才.單片機(jī)原理及其接口技術(shù)M.北京:清華大學(xué)出版社,1996:4862.2 沈德金.MCS-51系列單片機(jī)接口電路與應(yīng)用程序?qū)嵗齅.北京:北京航空航天大學(xué)出版社,1990:2184.3 祁偉,楊婷.單片機(jī)C51程序設(shè)計(jì)教程與實(shí)驗(yàn)M.北京航空航天出版社,2006.4 凌志浩.儀表原理與設(shè)計(jì)技術(shù)M.5 許曉平,孫曉彥,程傳勝.PC

54、B設(shè)計(jì)標(biāo)準(zhǔn)教程M.北京:北京郵電大學(xué)出版社,2008.6 胡偉,季曉衡.單片機(jī)C程序設(shè)計(jì)與應(yīng)用實(shí)例M.人民郵電出版社,2003.7 程道喜.傳感器的信號處理及接口M.北京:科學(xué)出版社,1989.8 楊將新,李華軍,劉東駿.單片機(jī)程序設(shè)計(jì)及應(yīng)用從基礎(chǔ)到實(shí)踐M.北京:電子工業(yè)出版社, 2001.9 胡漢才.單片機(jī)原理及其接口技術(shù)M.北京:清華大學(xué)出版社,1995,(6):112126.10 蘇長贊.紅外線與超聲波遙控M.北京:人民郵電出版社,1997.11 張玉香.新型遙控接收模塊HS0038J.無線電,1998.致謝本論文是在馬磊娟老師的悉心指導(dǎo)下完成的。老師淵博的專業(yè)知識,嚴(yán)謹(jǐn)?shù)闹螌W(xué)態(tài)度,精益求精的工作作風(fēng),誨人不倦的高尚師德,嚴(yán)以律己、寬以待人的崇高風(fēng)范,樸實(shí)無華、平易近人的人格魅力對我影響深遠(yuǎn)。不僅使我樹立了遠(yuǎn)大的學(xué)術(shù)目標(biāo)、掌握了基本的研究方法,還使我明白了許多待人接物與為人處世的道理。本設(shè)計(jì)從選題到完成,每一步都是在老師的指導(dǎo)下完成的,傾注了老師大量的心血。同時(shí),在此次畢業(yè)設(shè)計(jì)過程中我也學(xué)到了許多了關(guān)于紅外通信方面的知識,實(shí)驗(yàn)技能有了很大的提高。 另外,我還要感謝曹老師的指導(dǎo),在楊老師沒有在實(shí)驗(yàn)室時(shí),都是他給了我們以指導(dǎo),總之,他們在選題、查資料、難題攻關(guān)、時(shí)間安

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲(chǔ)空間,僅對用戶上傳內(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

提交評論