紅外測距系統(tǒng)設(shè)計(jì)光電系統(tǒng)設(shè)計(jì)_第1頁
紅外測距系統(tǒng)設(shè)計(jì)光電系統(tǒng)設(shè)計(jì)_第2頁
紅外測距系統(tǒng)設(shè)計(jì)光電系統(tǒng)設(shè)計(jì)_第3頁
紅外測距系統(tǒng)設(shè)計(jì)光電系統(tǒng)設(shè)計(jì)_第4頁
紅外測距系統(tǒng)設(shè)計(jì)光電系統(tǒng)設(shè)計(jì)_第5頁
已閱讀5頁,還剩31頁未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡介

論文題目

課程名稱

學(xué)生

學(xué)號論文題目

課程名稱

學(xué)生

學(xué)號所在學(xué)院所在班級指導(dǎo)教師紅外光電測距系統(tǒng)設(shè)計(jì)光電系統(tǒng)設(shè)計(jì)谷幸東、郭曉龍、何志毅、胡健輝201211911309、10、11、12理學(xué)院電科1123班湯照目錄TOC\o"1-5"\h\z\o"CurrentDocument"第一章緒論 1\o"CurrentDocument"紅外線概述 1\o"CurrentDocument"1.2紅外傳感器的分類 1\o"CurrentDocument"1.3紅外傳感器的應(yīng)用 2\o"CurrentDocument"AT89C52單片機(jī)概述 3MCP3001簡介6第二章紅外測距的工作原理與基本結(jié)構(gòu)82.1紅外測距傳感器簡介8\o"CurrentDocument"2.2紅外線測距的工作原理 82.4紅外測距傳感器接線10\o"CurrentDocument"紅外測距系統(tǒng)的基本結(jié)構(gòu) 10第三章紅外測距的硬件設(shè)計(jì)11\o"CurrentDocument"紅外測距的實(shí)現(xiàn)構(gòu)想 11系統(tǒng)硬件結(jié)構(gòu)電路圖12各硬件電路設(shè)計(jì)12復(fù)位電路 12時(shí)鐘電路 13A/D轉(zhuǎn)換電路 14LCD顯示電路 14第四章紅外測距的軟件設(shè)計(jì)15系統(tǒng)軟件結(jié)構(gòu)框圖15軟件程序設(shè)計(jì)16源代碼16第五章仿真測試26系統(tǒng)的軟件的調(diào)試仿真26第六章PCB圖及元器件清單28PCB圖28元器件清單28第七章課程設(shè)計(jì)任務(wù)分工及個(gè)人心得體會29任務(wù)分工29設(shè)計(jì)心得體會29第一章緒論紅外線概述紅外輻射俗稱紅外線,又稱紅外光,它是一種人眼看不見的光線。但實(shí)際上它和其他任何光線一樣,也是一種客觀存在的物質(zhì)。任何物體,只要它的濕度高于絕對零度,就有紅外線向周圍空間輻射。它的波長介于可見光和微波之間。紅外輻射的物理本質(zhì)是熱輻射。物體的溫度越高,輻射出來的紅外線越多,紅外輻射的能量就越強(qiáng)。研究發(fā)現(xiàn),太譜各種單色光的熱效應(yīng)從紫色光到紅色光是逐漸增大的,而且最大的熱效應(yīng)出現(xiàn)在紅外輻射的頻率圍,因此人們又將紅外輻射稱為熱輻射或熱射線。目前紅外發(fā)射器件(紅外發(fā)光二極管)發(fā)出的是峰值波長0.88uM~0.94uM之間的近紅外光,紅外接收器件(光敏二極管、光敏三極管)的受光峰值波長為0.88uM~0.94uM之間,恰好與紅外發(fā)光二極管的光峰值波長相匹配。紅外線在通過云霧等充滿懸浮離子的物質(zhì)時(shí)不易發(fā)生散射,有較強(qiáng)的穿透能力,還具有抗干擾能力強(qiáng)、易于產(chǎn)生、對環(huán)境影響小、不會干擾臨近的無線電設(shè)備的特點(diǎn),因而被廣泛應(yīng)用。紅外傳感器的分類常見紅外傳感器可分為熱傳感器和光子傳感器。1)熱傳感器熱傳感器是利用入射紅外輻射引起傳感器的溫度變化,進(jìn)而使有關(guān)物理參數(shù)發(fā)生相應(yīng)的變化,通過測量有關(guān)物理參數(shù)的變化來確定紅外傳感器所吸收的紅外輻射。熱探測器的主要優(yōu)點(diǎn)是相應(yīng)波段寬,可以在室溫下工作,使用簡單。但是,熱傳感器相應(yīng)時(shí)間較長,靈敏度較低,一般用于低頻調(diào)制的場合。熱傳感器主要類型有:熱敏傳感器型,熱電偶型,高萊氣動(dòng)型和熱釋放電型四種。2)光子傳感器光子傳感器是利用某些半導(dǎo)體材料在入射光的照射下,產(chǎn)生光子效應(yīng),使材料電學(xué)性質(zhì)發(fā)生變化。通過測量電學(xué)性質(zhì)的變化,可以知道紅外輻射的強(qiáng)弱。利用光子效應(yīng)所制成的紅外傳感器。統(tǒng)稱光子傳感器。光子傳感器的主要特點(diǎn)靈敏度高,響應(yīng)速度快,具有較高的響應(yīng)頻率。但其一般須在低溫下工作,探測波段較窄。按照光子傳感器的工作原理,一般可分為光電和外光電傳感器兩種,后者又分為光電導(dǎo)傳感器、光生伏特傳感器和光磁電傳感器等三種。紅外傳感器的應(yīng)用紅外技術(shù)是最近幾十年中發(fā)展起來的一門新興技術(shù)。它已在科技、國防和工農(nóng)業(yè)生產(chǎn)等領(lǐng)域獲得廣泛的應(yīng)用。紅外傳感器的應(yīng)用主要體現(xiàn)在以下幾個(gè)方面:紅外輻射計(jì):用于輻射和光譜輻射測量。1)搜索和跟蹤系統(tǒng):用于搜索和跟蹤紅外目標(biāo),確定其空間位置并對其運(yùn)動(dòng)進(jìn)行跟蹤。2)熱成像系統(tǒng):能形成整個(gè)目標(biāo)的紅外輻射分布圖像。紅外測距系統(tǒng):實(shí)現(xiàn)物體間距離的測量。通訊系統(tǒng):紅外線通信作為無線通信的一種方式?;旌舷到y(tǒng):是指以上各類系統(tǒng)中的兩個(gè)或多個(gè)的組合。AT89C52單片機(jī)概述AT89C52是美國Atmel公司生產(chǎn)的低電壓、高性能CMOS8位單片機(jī),片含8KB的可反復(fù)檫寫的程序存儲器和12B的隨機(jī)存取數(shù)據(jù)存儲器(RAM),器件采用Atmel公司的高密度、非易失性存儲技術(shù)生產(chǎn),兼容標(biāo)準(zhǔn)MCS-51指令系統(tǒng),片配置通用8位中央處理器(CPU)和Flash存儲單元,功能強(qiáng)大的AT89C52單片機(jī)可靈活應(yīng)用于各種控制領(lǐng)域。AT89C52單片機(jī)屬于AT89C51單片機(jī)的增強(qiáng)型,與Intel公司的80C52在引腳排列、硬件組成、工作特點(diǎn)和指令系統(tǒng)等方面兼容。其主要工作特性是:?片程序存儲器含8KB的Flash程序存儲器,可擦寫壽命為1000次;?片數(shù)據(jù)存儲器含256字節(jié)的RAM;?具有32根可編程I/O口線;具有3個(gè)可編程定時(shí)器;中斷系統(tǒng)是具有8個(gè)中斷源、6個(gè)中斷矢量、2個(gè)級優(yōu)先權(quán)的中斷結(jié)構(gòu);?串行口是具有一個(gè)全雙工的可編程串行通信口;?具有一個(gè)數(shù)據(jù)指針DPTR;低功耗工作模式有空閑模式和掉電模式;具有可編程的3級程序鎖定位;AT89C52工作電源電壓為5(1+0.2)V,且典型值為5V;AT89C52最高工作頻率為24MHzAT89C52的各引腳功能:?P0口:P0口是一組8位漏極開路型雙向I/O口,也即地址/數(shù)據(jù)總線復(fù)用口。作為輸出口用時(shí),每位能吸收電流的方式驅(qū)動(dòng)8個(gè)TTL邏輯門電路,對端口P0寫“1”時(shí),可作為高阻抗輸入端用。在訪問外部數(shù)據(jù)存儲器或程序存儲器時(shí),這組口線分時(shí)轉(zhuǎn)換地址(低8位)和數(shù)據(jù)總線復(fù)用,在訪問期間激活部上拉電阻。在Flash編程時(shí),P0口接收指令字節(jié),而在程序校驗(yàn)時(shí),輸出指令字節(jié),校驗(yàn)時(shí),要求外接上拉電阻。?P1口:P1是一個(gè)帶部上拉電阻的8位雙向I/O口,P1的輸岀緩沖級可驅(qū)動(dòng)(吸收或輸岀電流)4個(gè)TTL邏輯門電路。對端口寫“1”,通過部的上拉電阻把端口拉到高電平,此時(shí)可作輸入口。作輸入口使用時(shí),因?yàn)椴看嬖谏侠娮?,某個(gè)引腳被外部信號拉低時(shí)會輸岀一個(gè)電流(IIL)。與AT89C51不同之處是,P1.0和P1.1還可分別作為定時(shí)/計(jì)數(shù)器2的外部計(jì)數(shù)輸入(P1.0/T2)和輸入(P1.1/T2EX),Flash編程和程序校驗(yàn)期間,P1接收低8位地址。?P2口:P2是一個(gè)帶有部上拉電阻的8位雙向I/O口,P2的輸岀緩沖級可驅(qū)動(dòng)(吸收或輸岀電流)4個(gè)TTL邏輯門電路。對端口P2寫“1”,通過部的上拉電阻把端口拉到高電平,此時(shí)可作輸入口,作輸入口使用時(shí),因?yàn)椴看嬖谏侠娮?,某個(gè)引腳被外部信號拉低時(shí)會輸岀一個(gè)電流(IIL)。在訪問外部程序存儲器或16位地址的外部數(shù)據(jù)存儲器(例如執(zhí)行MOVXDPTR指令)時(shí),P2口送岀高8位地址數(shù)據(jù)。在訪問8位地址的外部數(shù)據(jù)存儲器(如執(zhí)行MOVXRI指令)時(shí),P2口輸岀P2鎖存器的容。Flash編程或校驗(yàn)時(shí),P2亦接收高位地址和一些控制信號。?P3口:P3口是一組帶有部上拉電阻的8位雙向I/O口°P3口輸岀緩沖級可驅(qū)動(dòng)(吸收或輸岀電流)4個(gè)TTL邏輯門電路。對P3口寫入“1”時(shí),它們被部上拉電阻拉高并可作為輸入端口。此時(shí),被外部拉低的P3口將用上拉電阻輸岀電流(IIL)°P3口除了作為一般的I/O口線外,更重要的用途是它的第二功能,P3口還接收一些用于Flash閃速存儲器編程和程序校驗(yàn)的控制信號。?RST:復(fù)位輸入。當(dāng)振蕩器工作時(shí),RST引腳岀現(xiàn)兩個(gè)機(jī)器周期以上高電平將使單片機(jī)復(fù)位。?ALE/PROG:當(dāng)訪問外部程序存儲器或數(shù)據(jù)存儲器時(shí),ALE(地址鎖存允許)輸岀脈沖用于鎖存地址的低8位字節(jié)。一般情況下,ALE仍以時(shí)鐘振蕩頻率的1/6輸岀固定的脈沖信號,因此它可對外輸岀時(shí)鐘或用于定時(shí)目的。要注意的是:每當(dāng)訪問外部數(shù)據(jù)存儲器時(shí)將跳過—個(gè)ALE脈沖。對Flash存儲器編程期間,該引腳還用于輸入編程脈沖(PROG)。如有必要,可通過對特殊功能寄存器(SFR)區(qū)中的8EH單元的DO位置位,可禁止ALE操作。該位置位后,只有一條MOVX和MOVC指令才能將ALE激活。此外,該引腳會被微弱拉高,單片機(jī)執(zhí)行外部程序時(shí),應(yīng)設(shè)置ALE禁止位無效。?PSEN:程序儲存允許(PSEN)輸岀是外部程序存儲器的讀選通信號,當(dāng)AT89C52由外部程序存儲器取指令(或數(shù)據(jù))時(shí),每個(gè)機(jī)器周期兩次PSEN有效,即輸岀兩個(gè)脈沖。在此期間,當(dāng)訪問外部數(shù)據(jù)存儲器,將跳過兩次PSEN信號。?EA/VPP:外部訪問允許。欲使CPU僅訪問外部程序存儲器(地址為OOOOH-FFFFH),EA端必須保持低電平(接地)。需注意的是:如果加密位LB1被編程,復(fù)位時(shí)部會鎖存EA端狀態(tài)。如EA端為高電平(接Vcc端),CPU則執(zhí)行部程序存儲器中的指令。Flash存儲器編程時(shí),該引腳加上+12V的編程允許電源Vpp,當(dāng)然這必須是該器件是使用12V編程電壓Vpp。XTAL1:振蕩器反相放大器的及部時(shí)鐘發(fā)生器的輸入端。XTAL2:振蕩器反相放大器的輸岀端。MCP3001簡介Miclodip的MCP3001是款具有片上采樣和保持電路的10位逐次逼近型A/D轉(zhuǎn)換器(ADC),該器件提供個(gè)偽差分輸入通道。指定差分非線性和積分非線性的最大值為±1LSB:它使用符合SPl協(xié)議的簡單串行

接口與器件通信。當(dāng)時(shí)鐘速率為28MHz時(shí),該器件的采樣速率最大可為200ksps。MCP3001器件的匚作電壓圍很寬,為2.7V-5.5V.低電流設(shè)計(jì)允許器件在典型待機(jī)電流僅為5nA和典型工作電流為400uA的條件下工作。該器件以8引腳PDIP、MSOP、TSSOP和150milSOC封裝形式提供。MCP3001的特性:10位分辨率±1LSBDNL(最大值)±1LSBINL(最大值)片上采樣和保持電路SPI串行接口(模式0.0和1.1)?單電源供電的電壓圍:2.7V~5.5V5V時(shí)的采樣速度為200ksps?低功耗CMOS技術(shù)8引腳PDIP、SOIC、MSOP和TSSOP封裝應(yīng)用封裝類型:PDIF、MSQP.SOlC利TSSOPCLKDjutCS^HDNCLKDjutCS^HDN功能框圖:第二章紅外測距的工作原理與基本結(jié)構(gòu)紅外測距傳感器簡介紅外測距傳感是用紅外線為介質(zhì)的測量系統(tǒng),按照功能可分成五類:(1)輻射計(jì),用于輻射和光譜測量;(2)搜索和跟蹤系統(tǒng),用于搜索和跟蹤紅外目標(biāo),確定其空間位置并對它的運(yùn)動(dòng)進(jìn)行跟蹤;(3)熱成像系統(tǒng),可產(chǎn)生整個(gè)目標(biāo)紅外輻射的分布圖像;(4)紅外測距和通信系統(tǒng);(5)混合系統(tǒng),是指以上各類系統(tǒng)中的兩個(gè)或者多個(gè)的組合。按探測機(jī)理可分成為光子探測器和熱探測器。紅外傳感技術(shù)已經(jīng)在現(xiàn)代科技、國防和工農(nóng)業(yè)等領(lǐng)域獲得了廣泛的應(yīng)用。紅外線測距的工作原理紅外測距傳感器利用紅外信號遇到障礙物距離的不同反射的強(qiáng)度也不同的原理,進(jìn)行障礙物遠(yuǎn)近的檢測。紅外測距傳感器具有一對紅外信號發(fā)射與接收二極管,發(fā)射管發(fā)射特定頻率的紅外信號,接收管接收這種頻率的紅外信號,當(dāng)紅外的檢測方向遇到障礙物時(shí),紅外信號反射回來被接收管接收,經(jīng)過處理之后,通過數(shù)字傳感器接口返回到單片機(jī)。利用的是紅外線傳播時(shí)的不擴(kuò)散原理,因?yàn)榧t外線在穿越其它物質(zhì)時(shí)折射率很小,所以長距離的測距儀都會考慮紅外線,而紅外線的傳播是需要時(shí)間的,當(dāng)紅外線從測距儀發(fā)出碰到反射物被反射回來被接受到,再根據(jù)紅外線從發(fā)出到被接受到的時(shí)間及紅外線的傳播速度就可以算出距離,紅外線的工作原理:利用高頻調(diào)制的紅外線在待測距離上往返產(chǎn)生的相位移推算岀光束度越時(shí)間從而根據(jù)D二C4/2得到距離Do紅外傳感器的的測距基本原理為發(fā)光管發(fā)岀紅外光,光敏接收管接收前方物體反射光,據(jù)此判斷前方是否有障礙物。根據(jù)發(fā)射光的強(qiáng)弱可以判斷物體的距離,它的原理是接收管接收的光強(qiáng)隨反射物體的距離而變化的,距離近則反射光強(qiáng),距離遠(yuǎn)則反射光弱。目前,使用較多的一種傳感器-紅外光電開關(guān),它的發(fā)射頻率一般為38kHz左右,探測距離一般比較短,通常被用作近距離障礙目標(biāo)的識別。本系統(tǒng)采用的即為此種傳感器。紅外線測距的特點(diǎn)1) 遠(yuǎn)距離測量,在無反光板和反射率低的情況下能測量較遠(yuǎn)的距離;2) 有同步輸入端,可多個(gè)傳感器同步測量;3) 測量圍廣,響應(yīng)時(shí)間短;4) 外形設(shè)計(jì)緊湊,易于安裝,便于操作;2.4紅外測距傳感器接線本模塊選用的是由日本夏普公司研發(fā)的型號為GP2Y0A21的紅外傳感器。引腳圖如圖所示。此紅外傳感器一共有三個(gè)引腳,其中VCC(電源電壓)為信號接入,接入電源電壓為4.5-5.5V,單片機(jī)5V工作電壓即可;GND為接地引腳,連接地線即可;Vout為模擬電壓輸岀引腳,此引腳輸岀的模擬電壓值為0.4-2.4V,相對應(yīng)的距離圍是80-10cm。此引腳需要接入單片機(jī)處理模塊中的多路A/D轉(zhuǎn)換通道上的任意一路上。根據(jù)紅外傳感器的電壓和相對應(yīng)的距離測量值可知,夏普GP2Y0A21系列的紅外傳感器輸岀曲線是非線性的,且每個(gè)型號的紅外傳感器輸岀曲線都不相同。所以對所使用紅外傳感器的矯正是必須要做的,創(chuàng)建岀一實(shí)測輸岀曲線圖,以便在實(shí)際測量的過程中獲得真實(shí)準(zhǔn)確的測量數(shù)據(jù)。紅外測距系統(tǒng)的基本結(jié)構(gòu)紅外測距系統(tǒng)主要有紅外測距傳感器模塊(包括紅外發(fā)射端和紅外接收端兩部分)、單片機(jī)處理模塊、LCD顯示模塊三大部分組成。如圖所示。第三章紅外測距的硬件設(shè)計(jì)紅外測距的實(shí)現(xiàn)構(gòu)想為了實(shí)現(xiàn)紅外測距,在硬件設(shè)計(jì)中,我們使用紅外測距傳感器,它具有一對紅外信號發(fā)射與接收二極管,發(fā)射管發(fā)射特定頻率的紅外信號,接收管接收這種頻率的紅外信號,當(dāng)紅外的檢測方向遇到障礙物時(shí),紅外信號反射回來被接收管接收,經(jīng)過處理之后,通過數(shù)字傳感器接口經(jīng)過A/D轉(zhuǎn)換電路。將輸入單片機(jī)的模擬電壓信號Vout轉(zhuǎn)換為單片機(jī)可識別的數(shù)字信號,并經(jīng)過電壓距離轉(zhuǎn)換程序,轉(zhuǎn)換岀要測量的距離,最后在通過液晶顯示屏LCD1602顯示岀測量結(jié)果。

系統(tǒng)硬件結(jié)構(gòu)電路整個(gè)紅外測距系統(tǒng)由AT89C52芯片、紅外測距傳感器、A/D轉(zhuǎn)換電路與LCD顯示器等構(gòu)成。硬件結(jié)構(gòu)電路圖如圖所示:單片機(jī)AT89C52左端分別接了開關(guān)、時(shí)鐘電路和復(fù)位電路,這是單片機(jī)AT89C52左端分別接了開關(guān)、時(shí)鐘電路和復(fù)位電路,這是T1TilftVCf:PO.D?)]J*TLiUT2EXPI.Lrl?rJJ?FO3Pt)JPI.4rJjFJJ&HZ、P06Fl11TXBB.LnJ.i■ALEP4Jj.roJ:>r4*呼1■■沁Til1&2|JUXJi*ri.DAL*nt-j.jWaKrjQri.?AL^ajj-j./-XTAUPO.iAiOAlGKD單片機(jī)最小的系統(tǒng)。XTAL1和XTAL2串連一個(gè)晶振,并且分別接上一個(gè)20p的電容,兩個(gè)電容另一端都接地,構(gòu)成時(shí)鐘電路。單片機(jī)AT89C52右端P0端同時(shí)接LED的D1-D7端口和排阻,P2.0接CLK,P2.1接DO,P2.2接CS,P2.5接E,P2.6接RW,P2.7接RS。MCP3001的VREF接vcc,IN+接紅外距離傳感器的Vo。各硬件電路設(shè)計(jì)3.3.1復(fù)位電單片機(jī)小系統(tǒng)常采用上電自動(dòng)復(fù)位和手動(dòng)按鍵復(fù)位兩種方式實(shí)現(xiàn)系統(tǒng)的復(fù)位操作。上電復(fù)位要求接通電源后,自動(dòng)實(shí)現(xiàn)復(fù)位操作。手動(dòng)復(fù)位要求在電源接通的條件下,在單片機(jī)運(yùn)行期間,用按鈕開關(guān)操作使單片機(jī)復(fù)位。其結(jié)構(gòu)如下圖。上電自動(dòng)復(fù)位通過電容C3充電來實(shí)現(xiàn)。R1燭」匕…… -;-rEXT>■; R210k -<TEXT>-時(shí)鐘電路單片機(jī)部具有一個(gè)高增益反相放大器,用于構(gòu)成振蕩器。通常在引腳XTALI和XTAL2跨接石英晶體和兩個(gè)補(bǔ)償電容構(gòu)成自激振蕩器,結(jié)構(gòu)圖中X1、C1、C2??梢愿鶕?jù)情況選擇6MHz、12MHz或24MHz等頻率的石英晶體,補(bǔ)償電容通常選擇20pF左右的瓷片電容。 .20pF.<TEXT>C2■12M■ ■■<TEr>| 1.20pF.<TEXT>C2■12M■ ■■<TEr>| 1X11920pF 一3?3?3A/D轉(zhuǎn)換電路3?3?3A/D轉(zhuǎn)換電路A/D轉(zhuǎn)換電路如圖所示3.3.4LCD顯示電路CLKDOVREFCSIN-LCD1口川廣」LCD與單片機(jī)的接口電路如圖所示,單片機(jī)通過P0口向LCD輸送數(shù)據(jù),顯示測得的距離。值得注意的是,P0口要接上拉電阻來保證對LCD的成功驅(qū)動(dòng)。第四章紅外測距的軟件設(shè)計(jì)4.1系統(tǒng)軟件結(jié)構(gòu)框在整個(gè)系統(tǒng)運(yùn)行過程中。當(dāng)紅外系統(tǒng)被啟動(dòng)后,首先,對AT89C52單片機(jī)進(jìn)行初始化。然后,當(dāng)AT89C52單片機(jī)接收到紅外接收電路傳輸?shù)碾妷盒盘柡?,?jīng)A/D轉(zhuǎn)換程序,將片外的模擬信號轉(zhuǎn)換為單片機(jī)可識別的數(shù)字信號,并經(jīng)電壓—距離轉(zhuǎn)換子程序,將變化的電壓轉(zhuǎn)換為距離。最后,在動(dòng)態(tài)掃描LCD顯示器上顯示岀來?!浮姑螅╊玭‘;為距離。最后,在動(dòng)態(tài)掃描LCD顯示器上顯示岀來?!浮姑螅╊玭‘;i屮惟c冷來)單■片機(jī)河町化LC顯示輸岀啊怏虻果軟件程序設(shè)計(jì)紅外測距系統(tǒng)軟件程序主要由主程序、AD轉(zhuǎn)換程序、延時(shí)函數(shù)、LCD顯示程序等等,在紅外測距系統(tǒng)硬件已經(jīng)確定的情況下,程序設(shè)計(jì)步驟為:1) 分析紅外測距系統(tǒng)功能,對已知條件及運(yùn)算控制的要求進(jìn)行掌握,準(zhǔn)確地編寫出能完成規(guī)定任務(wù)的程序。2) 確定所需要函數(shù)及算法,根據(jù)系統(tǒng)設(shè)計(jì)要求及功能特點(diǎn),選擇相應(yīng)的解決方法。3) 設(shè)計(jì)系統(tǒng)工作流程圖,采用直觀的方式清晰地表達(dá)出程序的整體設(shè)計(jì)思想。4) 根據(jù)系統(tǒng)工作流程圖編寫源程序,對主函數(shù)及子函數(shù)的功能進(jìn)行逐一分析,并寫出相應(yīng)的程序。5) 調(diào)試源程序,將編好的程序通過編譯去除語法及功能上的錯(cuò)誤,然后將程序燒入單片機(jī)中以達(dá)到最終要求。源代碼#include<reg51.h>#include<intrins.h>#defineucharunsignedchar#defineuintunsignedint#defineulongunsignedlongsbitRS=P2"0;//LCD命令/數(shù)據(jù)端//LCD讀/寫端//LCD讀/寫端//LCD使能端//MCP3001與AT89S52的管腳接線定義//Busy標(biāo)志//顯示CM"};//顯示代碼//顯示//顯示緩沖區(qū)//短延時(shí)//延時(shí)函數(shù)〃讀MCP3001//1602初始化函數(shù)//LCD忙標(biāo)志判斷函數(shù)//寫數(shù)據(jù)子函數(shù)//寫命令子函數(shù)//距離計(jì)算函數(shù)sbitRW=P2"1;sbitLCDE=P2"2;sbitMCP_CS=P2"3;sbitMCP_D0=P2"4;sbitMCP_CLK=P2"5;uintmeasure;ucharflag;ucharcodedis[]={"MeasureStart"};ucharcodedis1[]={"V=.V,L=ucharcodedis2[]={"0123456789."};ucharcodedis3[]={"OutMeasure!"};uchardis_buf[8];voidL_delay(void);voiddelay_ms(uintn);uintread_MCP(void);voidinit_1602(void);voidbusy(void);voiddat_wrt(uchardat);voidcmd_wrt(ucharcmd);uintdistance(void);voidLCD_Clear(void);uchardat_adj(uintdat1);voidprint(uchar*str);voiddisp(uintdat);uintaverage(void);

//LCD清屏函數(shù)//顯示數(shù)據(jù)調(diào)整函數(shù)//字符串顯示函數(shù)//顯示子函數(shù)//算術(shù)平均濾波程序主函數(shù)*主函數(shù)*/**********************************************************main()init_1602();print(dis);//顯示測量開始delay_ms(1000);while(1){measure=distance();disp(measure);//顯示高度delay_ms(100);}}/**************************延時(shí)函數(shù)**************************/**************************延時(shí)函數(shù)**************************voiddelay_ms(uintn)uintj;while(n--)for(j=0;j<125;j++);/***************************短延時(shí)****************************/***************************短延時(shí)****************************voidL_delay(void){uchari;for(i=0;i<5;i++)_nop_();}uintread_MCP(void)/************************讀MCP3001函數(shù)/************************讀MCP3001函數(shù)*************************/////////////////////read_MCP采集的數(shù)據(jù)并轉(zhuǎn)換后的值//////////////////////{uchari;uinttemp=0;MCP_CS=1;L_delay();MCP_CS=0;〃cs置低,開始采樣數(shù)據(jù)for(i=0;i<13;i++)//讀轉(zhuǎn)換的10位數(shù)據(jù){

MCP_CLK=1;temp<<=1;if(MCP_DO==1)temp|=0x01;}MCP_CS=1;//獲取有效轉(zhuǎn)換值temp&=0x03ff;//獲取有效轉(zhuǎn)換值return(temp);/************************LCD忙標(biāo)志判斷函數(shù)*******************/************************LCD忙標(biāo)志判斷函數(shù)*******************voidbusy(void){flag=0x80;voidbusy(void){flag=0x80;while(flag&0x80){P0=0xff;RS=0;RW=1;LCDE=1;flag=P0;//賦初值高位為1禁止//讀寫操作使能位禁止時(shí)等待繼續(xù)檢測//指向地址計(jì)數(shù)器//讀//信號下降沿有效//讀狀態(tài)位元高位為狀態(tài)/************************寫數(shù)據(jù)子函數(shù)************************/************************寫數(shù)據(jù)子函數(shù)************************voiddat_wrt(uchardat){busy();//檢測讀寫操作使能嗎LCDE=0;RS=1;//指向數(shù)據(jù)寄存器RW=0;//寫P0=dat;//寫數(shù)據(jù)LCDE=1;//高電平有效LCDE=0;}/*************************寫命令子函數(shù)************************voidcmd_wrt(ucharcmd){LCDE=0;busy();//檢測讀寫操作使能嗎P0=cmd;//命令RS=0;//指向命令計(jì)數(shù)器RW=0;//寫LCDE=1;//高電平有效/***********************距離計(jì)算函數(shù)***************************/uintdistance(void){uinttemp1;temp1=average();/////////////////////////////////temp1平均數(shù)據(jù)轉(zhuǎn)換的距離//////////////////////////////if((temp1>60)&(temp1<960)) //在正常測量圍?{temp1=13569/(temp1+7)-4; //轉(zhuǎn)換測量數(shù)據(jù)}else{temp1=0x00ff;//超出測量圍,返回錯(cuò)誤標(biāo)志}return(temp1);/************************算術(shù)平均濾波程序**********************/************************算術(shù)平均濾波程序**********************uintaverage(void)uchari;uintav_dat;ulongave=0;for(i=0;i<10;i++)ulongave=0;for(i=0;i<10;i++){ave+=read_MCP();L_delay();}av_dat=(uint)(ave/10);//連續(xù)讀取10個(gè)數(shù)據(jù)值//讀轉(zhuǎn)換數(shù)據(jù)//求平均值return(av_dat);/*************************1602初始化函數(shù)************************/*************************1602初始化函數(shù)************************voidinit_1602(void){cmd_wrt(0x01);//清屏cmd_wrt(0x0c); //開顯示,不顯示游標(biāo),不閃爍cmd_wrt(0x06);//完成一個(gè)字符碼傳送后,光標(biāo)左移,顯示不發(fā)生移位元cmd_wrt(0x38); 〃16x2顯示,5x7點(diǎn)陣,8位數(shù)據(jù)接口/************************設(shè)定顯示位置函數(shù)************************/************************設(shè)定顯示位置函數(shù)************************voidlcd_start(ucharstart)cmd_wrt(start|0x80);

/************************LCD清屏函數(shù)****************************voidLCD_Clear(void){cmd_wrt(0x01);//寫入清屏指令delay_ms(1);/************************顯示數(shù)據(jù)調(diào)整函數(shù)************************uchardat_adj(uintdat1)/////////////////////////////////dat1L/************************LCD清屏函數(shù)****************************voidLCD_Clear(void){cmd_wrt(0x01);//寫入清屏指令delay_ms(1);/************************顯示數(shù)據(jù)調(diào)整函數(shù)************************{uchari=0;uintdate;date=average()/2;dis_buf[0]=(uchar)(dat1/100);dis_buf[1]=(uchar)(dat1%100/10);dis_buf[2]=(uchar)(dat1%100%10);dis_buf[3]=date/100;dis_buf[4]=date%100/10;//////////////////////////////////////////百位//十位//////////////////////////////////////////百位//十位//個(gè)位if(dis_buf[0]==0)i=1;return(i);/**************************字符串顯示函數(shù)**************************/**************************字符串顯示函數(shù)**************************voidprint(uchar*str){while(*str!='\0')//直到字符串結(jié)束{dat_wrt(*str);str++;//指向下一個(gè)字符}}/***************************顯示子函數(shù)****************************voiddisp(uintdat){uchartemp,j;if(dat!=0x00ff){temp=dat_adj(dat);LCD_Clear();lcd_start(0x40);print(dis1);

dat_wrt(dis2[dis_buf[3]]);print(".");for(j=4;j<6;j++)dat_wrt(dis2[dis_buf[j]]);lcd_start(0x4B+temp);for(j=temp;j<3;j++)dat_wrt(dis2[dis_buf[j]]);}else{LCD_Clear();lcd_start(0x42+temp);print(dis3);}}//顯示文字//確定顯示起始位置//寫顯示數(shù)據(jù)//確定顯示起始位置第五章仿真測試//顯示文字//確定顯示起始位置//寫顯示數(shù)據(jù)//確定顯示起始位置5.1系統(tǒng)的軟件的調(diào)試仿真Proteus的ISIS是一款Labcenter出品的電路分析實(shí)物仿真系統(tǒng),可仿真各種電路和IC,并支持單片機(jī),元件庫齊全,使用方便,可以給我們做電路設(shè)計(jì)提供方便快捷的仿真效果,讓我們事半功倍。調(diào)試主要方法和技巧:通常一個(gè)調(diào)試程序應(yīng)該具備至少四種性能:跟蹤、斷點(diǎn)、查看變量、更改數(shù)值。整個(gè)程序是一個(gè)主程序調(diào)用各個(gè)子程序?qū)崿F(xiàn)功能的過程,要使主程序和整個(gè)程序都能平穩(wěn)運(yùn)行,各個(gè)模塊的子程序的正確與平穩(wěn)運(yùn)行必不可少,所以在軟件調(diào)試的最初階段就是把各個(gè)子程序模塊進(jìn)行分別調(diào)試。在硬件電路制作完成并調(diào)試好后,便可將程序編譯好下載到單片機(jī)試運(yùn)行。這里我們使用Proteus軟件進(jìn)行仿真,加載編譯好的.HEX文件到單片機(jī)后,點(diǎn)擊運(yùn)行按鈕即可,仿真電路圖如下:--P13P1.4P1.5P1£P(guān)1.7P1.OJT2P1.1JT2EKAT?:E?游i>:P3L7JRD-Fl阿8P2inX9P22^10P2.d^12P25W13P2昭MP27rt15fl:lOflXODK1畑ffl沁i2赳漁0PO+AHJO+PflWD5Pfl&WBMIttDTPELOfi沁PS1iTMDPS24kifD~KSHWiTF34J1U

P3E/T1LCD1--Lwbltt''…RPt■=TExT=-O-K[<iqfiEF他IN-<^^0Wv|i:-TEJCTj.'第六章PCB圖及元器件清單6.1PCBGP2Y0A02YK元器件清單CommentDescriptc-nD^si^natcrin迪任事103LCDwMCUAT8SC5222pFci.a10uF12MCO助啦加按觀關(guān)KI自耐LI10KR11KR2MCP30D1U14HfL^iDataFaotprinlLibRefQudMilyKBCcrrporienLllh電世蛍1PCBCorrponenLl1PCBCompanentlSTC9OC511PCBCDmpanentl奩片電闿;PCBComfjoneaUlOuFJPC&Co咋jonentj晶扳JPCBtDmpanentl1PCBCcmpanentl按凰開關(guān)1PCBC<?mponfinLl1PCBC^mponentJ邑師豐壞JPCBC^mponentJ色環(huán)電用1PCBC^mparwntJMCP300L1PCECcmponant_l1PCBCcrrponentl1第七章課程設(shè)計(jì)任務(wù)分工及個(gè)人心得體會7.1任務(wù)分工201211911309谷幸東 整體設(shè)計(jì)及論文撰寫201211911310郭曉龍 用Proteus軟件仿真測試201211911311何志毅 PCB線路板設(shè)計(jì)201211911312胡健輝 軟件設(shè)計(jì)(代碼編寫)設(shè)計(jì)心得體會1)谷幸東在為期一周的單片機(jī)課程設(shè)計(jì)中,我在增長知識、提高能力的同時(shí),產(chǎn)生了很深的感觸。從小組部初步定下方案到明確分工,從不斷的運(yùn)行排錯(cuò)到調(diào)試成功,在整個(gè)設(shè)計(jì)過程中,著實(shí)受益匪淺,不僅可以鞏固以前所學(xué)過的知識,而且學(xué)到了很多在書本上所沒有學(xué)到過的東西。在做本次課程設(shè)計(jì)的過程中,我感觸最深的當(dāng)屬查閱大量的設(shè)計(jì)資料了。為了讓我們小組的設(shè)計(jì)更加完善,查閱這方面的設(shè)計(jì)資料是十分必要的,同時(shí)也是必不可少的。在設(shè)計(jì)的過程中難免會遇到各種各樣的問題,但是在這重重困難之中我了解到自己的真

溫馨提示

  • 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

提交評論