【《基于單片機(jī)的測(cè)距導(dǎo)盲杖系統(tǒng)設(shè)計(jì)與仿真分析》13000字(論文)】_第1頁(yè)
【《基于單片機(jī)的測(cè)距導(dǎo)盲杖系統(tǒng)設(shè)計(jì)與仿真分析》13000字(論文)】_第2頁(yè)
【《基于單片機(jī)的測(cè)距導(dǎo)盲杖系統(tǒng)設(shè)計(jì)與仿真分析》13000字(論文)】_第3頁(yè)
【《基于單片機(jī)的測(cè)距導(dǎo)盲杖系統(tǒng)設(shè)計(jì)與仿真分析》13000字(論文)】_第4頁(yè)
【《基于單片機(jī)的測(cè)距導(dǎo)盲杖系統(tǒng)設(shè)計(jì)與仿真分析》13000字(論文)】_第5頁(yè)
已閱讀5頁(yè),還剩44頁(yè)未讀, 繼續(xù)免費(fèi)閱讀

付費(fèi)下載

下載本文檔

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

文檔簡(jiǎn)介

┊┊┊┊┊┊┊┊┊┊┊┊┊裝┊┊┊┊┊訂┊┊┊┊┊線┊┊┊┊┊┊┊┊┊┊┊┊┊基于單片機(jī)的測(cè)距導(dǎo)盲杖系統(tǒng)設(shè)計(jì)與仿真研究摘要我國(guó)是世界上視障人士最多的國(guó)家,但我國(guó)視障人士的輔助用品的市場(chǎng)卻剛剛起步,而智能導(dǎo)盲杖的發(fā)展還處于初始階段。本文采用超聲波測(cè)距的方法,感知使用者周圍情況,并通過(guò)單片機(jī)進(jìn)行判斷,發(fā)出警報(bào)提示。幫助使用者更方便、也更放心地走出家門,擁抱世界。本設(shè)計(jì)是以AT89C51單片機(jī)作為主要控制器,通過(guò)用超聲波傳感器對(duì)障礙物距離進(jìn)行探測(cè),同時(shí)使用單片機(jī)程序進(jìn)行距離判斷,讓使用者及時(shí)規(guī)避障礙和危險(xiǎn)。本設(shè)計(jì)包括超聲波測(cè)距、感光、蜂鳴器警報(bào)三個(gè)模塊。本設(shè)計(jì)使用SRF04超聲波傳感器檢測(cè)使用者與障礙物之間的距離,將收集到的數(shù)據(jù)放入51單片機(jī)中,通過(guò)程序?qū)⑹占臄?shù)據(jù)進(jìn)行處理并加以計(jì)算。系統(tǒng)經(jīng)過(guò)與設(shè)定值的比較判斷,檢測(cè)距離的遠(yuǎn)近。當(dāng)小于近距離、過(guò)近距離的閾值時(shí),蜂鳴器發(fā)出不同頻率的警報(bào),讓使用者知道距離的變化,提前規(guī)避風(fēng)險(xiǎn);同時(shí)單片機(jī)在LCD1602液晶顯示屏上輸出,顯示當(dāng)前距離。當(dāng)周圍環(huán)境光變暗時(shí),系統(tǒng)會(huì)自動(dòng)點(diǎn)亮LED燈組,使來(lái)往車輛與行人提前獲得示警避讓使用者。當(dāng)使用者出現(xiàn)突發(fā)狀況時(shí),長(zhǎng)摁SOS報(bào)警按鈕,發(fā)出急促地蜂鳴器警報(bào)。本系統(tǒng)的設(shè)計(jì)中還包含有延時(shí)函數(shù)以及復(fù)位電路,用來(lái)提高數(shù)據(jù)的準(zhǔn)確度以及穩(wěn)定性。本設(shè)計(jì)的創(chuàng)新點(diǎn)在于系統(tǒng)的LED燈組警示功能,一個(gè)受環(huán)境光影響,一個(gè)受距離影響。這使得警報(bào)功能不再為單方面對(duì)視障人士的警報(bào),而是對(duì)視障人士和行人雙向的警報(bào);使得路人更容易的注意并主動(dòng)避讓使用者。關(guān)鍵:AT89C51;SRF04超聲波測(cè)距;LCD1602液晶顯示屏;感光;目錄TOC\o"1-3"\h\u摘要 。圖4.6超聲波傳感器流程超聲波模塊啟動(dòng)后,將Trig引腳置1,使傳感器發(fā)射超聲波,延時(shí)一段時(shí)間后,將Trig引腳置0。voidStartModule() //啟動(dòng)模塊{Trig=1;//啟動(dòng)一次模塊 _nop_();_nop_();_nop_();_nop_(); _nop_();_nop_();_nop_();_nop_(); _nop_();_nop_();_nop_();_nop_(); _nop_();_nop_();_nop_();_nop_(); _nop_();_nop_();_nop_();_nop_(); _nop_();_nop_();_nop_();_nop_(); Trig=0;}4.3.3光感元件與ADC0832函數(shù)(感光警示)該函數(shù)部分,定義了與ADC0832三個(gè)功能端參數(shù)以及參數(shù)I的局部變量供我們使用,通過(guò)0832的時(shí)序圖進(jìn)行參數(shù)設(shè)置,選擇光感元件的數(shù)據(jù)輸入端口為CH1。因?yàn)楣飧性械亩丝谝_未與單片機(jī)相連,所以函數(shù)暫未定義光感元件的各個(gè)引腳參數(shù)。當(dāng)0832的函數(shù)得出光感元件檢測(cè)到的環(huán)境光參數(shù)后,將其賦予主函數(shù)中預(yù)先定義的V中。通過(guò)對(duì)V的值進(jìn)行函數(shù)中公式的運(yùn)算,將參數(shù)值轉(zhuǎn)化為環(huán)境光光亮程度。并將其輸出到LCD液晶顯示屏當(dāng)中,并通過(guò)光亮值的比較選擇是否點(diǎn)亮LED黃燈燈組。圖4.7感光警示流程ADC元件根據(jù)時(shí)序進(jìn)行選擇數(shù)據(jù)輸入端口,輸入端口為CH1。unsignedcharadc_Conv(){uchar i;unsignedcharad_result1=0;adc_cs=0;//片選使能adc_di=1;_nop_();adc_clk=1;//第一個(gè)時(shí)鐘脈沖_nop_();adc_clk=0;//選擇通道DI輸入10選擇單通道,通道0adc_di=1;//第二個(gè)脈沖輸入1,單端輸入_nop_();adc_clk=1;_nop_();adc_clk=0;adc_di=0;//第三個(gè)脈沖輸入0,單端通道0_nop_();adc_clk=1;_nop_();adc_clk=0;adc_di=1;//數(shù)據(jù)拉高,接受數(shù)據(jù)for(i=0;i<8;i++){adc_clk=1;_nop_();adc_clk=0;if(adc_do==1) ad_result1|=0x80>>i;}adc_cs=1;adc_clk=1;adc_di=1;return(ad_result1);}4.3.4聲光警報(bào)流程聲光警報(bào)函數(shù)將經(jīng)單片機(jī)系統(tǒng)處理過(guò)的特定參數(shù)與預(yù)先設(shè)定好的閾值范圍進(jìn)行比較,并對(duì)實(shí)際情況進(jìn)行報(bào)警。其中不同的閾值范圍帶有不同的報(bào)警參數(shù)。圖4.8聲光警報(bào)流程距離計(jì)算函數(shù)如下:voidConut(void){ time=TH0*256+TL0; TH0=0; TH0=0;//S=(time*1.7)/100; s=(time/58.0/100.0)*1000;//計(jì)算單位CM}

5.仿真調(diào)試與實(shí)物模擬5.1系統(tǒng)仿真5.1.1HEX文件的建立我們采用KEIL5軟件來(lái)通過(guò)C語(yǔ)言來(lái)編寫程序,不過(guò)輸出的是.C后綴的文件。因?yàn)槲覀兎抡娌捎玫氖荘ROTEUS,.C后綴的文件不能被PROTEUS軟件所使用,此時(shí)我們需要點(diǎn)擊一些選項(xiàng)來(lái)輸出生成HEX文件。(1)先點(diǎn)擊標(biāo)題欄中的Project,選中OptionsforTarget。如圖5.1圖5.1生成HEX文件1(2)點(diǎn)擊Output,勾選中CreateHEXFile,點(diǎn)擊SelectFolderforObjects選擇輸出HEX文件的文件夾。如下圖5.2圖5.2生成HEX文件2(3)編譯所寫程序點(diǎn)擊編譯下載按鍵,等待程序編譯完成。當(dāng)BuildOutput窗口出現(xiàn)0Error(s),0Warning(s)。則表示程序編譯成功,沒(méi)有錯(cuò)誤。圖5.3編譯下載圖5.4編譯完成5.1.2PROTEUS加載HEX文件PROTEUS通過(guò)雙擊單片機(jī)打開EditComponent界面,并在ProgramFile選項(xiàng)中選擇之前KEIL輸出的HEX文件,點(diǎn)擊OK完成HEX文件的輸入。之后,我們便可以通過(guò)PROTEUS進(jìn)行程序的仿真運(yùn)行,來(lái)驗(yàn)證程序的可行性,查看是否能對(duì)程序做出反應(yīng),完成所希望完成的目標(biāo)。圖5.5加載HEX文件5.1.3PROTEUS與KEIL4遠(yuǎn)程聯(lián)調(diào)(1)將KEIL軟件與PROTEUS軟件經(jīng)過(guò)上述要求設(shè)定好。因?yàn)镵EIL軟件無(wú)法與PROTEUS軟件直接聯(lián)調(diào),所以我們?cè)诰W(wǎng)上下載VDM51.dill插件。將文件移植到KEIL與PROTEUS軟件的根目錄下,并修改KEIL軟件根目錄下的TOOLS.INI文件。右鍵點(diǎn)擊打開方式,選擇TXT打開TOOLS.INI,在文件中添加TDRV10=BIN\VDM51.DLL("PROTEUSVSMMonitor-51Driver")。之后就可以完成聯(lián)調(diào)設(shè)置了圖5.6修改TOOLS.INI文件(2)KEIL軟件選擇打開OptionsforTarget界面,選定debug,點(diǎn)擊Use并下拉選項(xiàng)選擇PROTEUSVSMMonitor-51Driver單擊settings。默認(rèn)參數(shù),單點(diǎn)OK退出。圖5.7選擇PROTEUSVSMMonitor-51Driver圖5.8確定聯(lián)調(diào)參數(shù)(3)選擇PROTEUS的標(biāo)題欄,點(diǎn)擊debug選項(xiàng),下拉選項(xiàng)菜單,勾選EnableRemoteDebugMonitor。返回KEIL軟件界面,選擇debug選項(xiàng)菜單,單擊Start/StopdebugSession便可以進(jìn)行KEIL與PROTEUS軟件遠(yuǎn)程聯(lián)調(diào)。圖5.9PROTEUS軟件設(shè)置圖5.10KEIL軟件設(shè)置圖5.11KEIL聯(lián)調(diào)成功圖5.12PROTEUS聯(lián)調(diào)成功5.1.4仿真結(jié)果演示聯(lián)調(diào)完成之后點(diǎn)擊Run運(yùn)行程序,便可以看到PROTEUS軟件做出反應(yīng)。通過(guò)點(diǎn)擊PROTEUS電路圖傳感器的按鍵中改變輸入單片機(jī)中的環(huán)境參數(shù),觀察單片機(jī)是否符合設(shè)計(jì)要求。以下是仿真結(jié)果的展示:圖5.13是測(cè)量距離大于距離預(yù)警的閾值,周圍環(huán)境光的亮度低于2時(shí),程序點(diǎn)亮LED黃色照明燈組;圖5.14是測(cè)量距離大于距離預(yù)警的閾值,周圍環(huán)境光的亮度高于2時(shí),程序熄滅LED黃色燈組;圖5.15是測(cè)量距離小于1M,環(huán)境光亮度小于2時(shí),程序啟動(dòng)聲光報(bào)警電路,蜂鳴器與LED警示紅燈間歇啟動(dòng),LED黃色照明燈組點(diǎn)亮;圖5.16是測(cè)量距離小于1M,環(huán)境光亮度大于2時(shí),程序啟動(dòng)聲光報(bào)警電路,蜂鳴器與LED警示紅燈間歇啟動(dòng),LED黃色照明燈組熄滅。因?yàn)楫?dāng)測(cè)量距離大于0.5M小于1M時(shí),系統(tǒng)反應(yīng)現(xiàn)象與之前大致一樣,只是蜂鳴器和LED紅色示警燈鳴響與點(diǎn)亮的頻率不一樣,所以暫不展示。其中,液晶顯示屏上半部分顯示的是“測(cè)量距離”的拼音,下半部分左半邊顯示的是距離數(shù)值+單位(CM),右半邊顯示的是“光”的拼音加上光感元件實(shí)時(shí)檢測(cè)的環(huán)境光的亮度。圖5.13距離大于1M,,亮度小于2圖5.14距離大于1M,亮度大于2圖5.15距離小于0.5M,亮度小于2圖5.16距離小于0.5M,亮度大于25.2系統(tǒng)仿真調(diào)試5.2.1程序燒錄我們選用STC-ISP程序來(lái)進(jìn)行單片機(jī)程序的燒錄。首先我們先將單片機(jī)接入電腦的USB端口,然后打開STC-ISP程序,選擇單片機(jī)型號(hào)為STC89C52RC/LE52RC,其余選項(xiàng)均是默認(rèn),其中串口號(hào)是電腦自動(dòng)識(shí)別自動(dòng)填入。在硬件選型中,我們勾選內(nèi)部擴(kuò)展RAM可用選項(xiàng)。隨后點(diǎn)擊打開程序文件,選擇“超聲波測(cè)距.HEX”文件,最后點(diǎn)擊下載。其中單片機(jī)需要在點(diǎn)擊下載之后立刻開啟。圖5.17STC-ISP程序燒錄5.2.2實(shí)物調(diào)試單片機(jī)的燒錄線連接在電腦的USB接口,作為電源線為單片機(jī)提供5V的直流電。圖5.18距離為122CM,光亮度為2按照程序設(shè)定,當(dāng)距離小于1M時(shí)蜂鳴器與LED模塊中D2燈間歇啟動(dòng);當(dāng)距離小于0.5M時(shí),蜂鳴器與D2燈以更快的頻率閃爍。在實(shí)物中光亮度分為0-3一共四個(gè)階段。0階段是光亮度最亮的時(shí)候,1階段比0階段暗一點(diǎn),以此類推。當(dāng)光亮度大于1階段的時(shí)候,說(shuō)明環(huán)境光較暗,將點(diǎn)亮LED模塊中D1燈,以照明周圍。圖5.19測(cè)量距離44CM,光亮度為0(1)如圖5.18所示,將障礙物移動(dòng)到距單片機(jī)122CM處,遮擋周圍光源,達(dá)到2階段。蜂鳴器與D2停止,D1燈亮。(2)如圖5.19所示將障礙物移動(dòng)到距單片機(jī)44CM處,不遮擋周圍光源。蜂鳴器與D2燈間歇啟動(dòng),提醒使用者,D1燈熄滅。結(jié)束語(yǔ)智能超聲波測(cè)距導(dǎo)盲杖程序設(shè)計(jì)主要可以分為測(cè)距程序設(shè)計(jì)、LCD液晶顯示程序設(shè)計(jì)、光亮感應(yīng)程序設(shè)計(jì)、蜂鳴器與LED燈示警程序設(shè)計(jì)三個(gè)部分。其中的蜂鳴器與LED燈示警程序較為簡(jiǎn)單,我們可以通過(guò)IF語(yǔ)句的選擇循環(huán)就能實(shí)現(xiàn)。其中LCD液晶顯示程序曾困擾了我很長(zhǎng)一段時(shí)間,LED液晶顯示的時(shí)序是讓我最為頭疼的。每當(dāng)我使用KEIL軟件編譯下載后的零錯(cuò)誤零警告都讓我信心滿滿,然而PROTEUS軟件仿真后的LCD液晶不顯示卻讓我備受打擊。我通過(guò)向老師同學(xué)的詢問(wèn),和在網(wǎng)上對(duì)LCD1602液晶顯示資料的查找,才慢慢對(duì)1602有所了解,明白過(guò)來(lái)是程序中LCD的時(shí)序問(wèn)題。時(shí)序的錯(cuò)誤,導(dǎo)致LCD液晶顯示屏光寫不讀,所以只能干亮著液晶屏幕啥也不顯示。還有ADC0832的時(shí)序編寫,因?yàn)橐郧皬奈唇佑|過(guò)這些元器件,所以只能一點(diǎn)一點(diǎn)的抱著從網(wǎng)上下載下來(lái)的資料細(xì)細(xì)揣摩,明白幾個(gè)使能端口如何操作,會(huì)發(fā)出什么樣的命令。雖然該設(shè)計(jì)的面向主體是視障人士,但是我覺(jué)的設(shè)計(jì)中的LCD液晶顯示也是有必要的,其是為了更好的了解程序運(yùn)行的的情況,是將模糊的事物將其數(shù)據(jù)化,讓我們和使用者的親屬更直觀的了解該設(shè)計(jì)。同時(shí)也能從液晶顯示中的得到智能超聲波測(cè)距導(dǎo)盲杖的使用情況。我覺(jué)得設(shè)計(jì)中的兩大大亮點(diǎn)是距離聲光示警,和根據(jù)亮度點(diǎn)亮LED燈組。這個(gè)是別的同樣設(shè)計(jì)所沒(méi)有的。我在網(wǎng)上查找許多有關(guān)于測(cè)距導(dǎo)盲杖的設(shè)計(jì),大部分都是注重于使用者方面的示警,比如“蜂鳴器加震動(dòng)示警,藍(lán)牙耳機(jī)語(yǔ)音播報(bào)示警。”而聲光示警側(cè)重的卻是雙向的,一方面提醒使用者注意規(guī)避障礙物;另一方面如果外界聲音嘈雜,當(dāng)行人和車輛距離使用者較遠(yuǎn)的話聽(tīng)不到蜂鳴器示警,通過(guò)紅色的LED燈閃爍來(lái)警示行人注意提前規(guī)避。而根據(jù)亮度點(diǎn)亮LED燈組照明不是為了給視障人士照明,而是主要側(cè)重的是路上行人與車輛的那方面。光線昏暗的時(shí)候點(diǎn)亮LED燈組,一是給行人照明讓來(lái)往的行人注意路況,同時(shí)也是使使用者在光線昏暗的地方比較顯眼,不會(huì)讓人忽視使用者的存在。以防撞到使用者。但是這個(gè)設(shè)計(jì)也有一些缺陷,超聲波測(cè)距導(dǎo)盲杖只能適應(yīng)那些較為寬闊,平坦的道路,而不能適應(yīng)一些狹窄的環(huán)境,比如說(shuō)乘坐交通工具的狀態(tài)。這些環(huán)境較為狹小,人流也較為密集。而且如果要改變超聲波測(cè)距警報(bào)的上下限,目前只能通過(guò)改變程序來(lái)改變,特別麻煩。在剛開始做畢設(shè)的時(shí)候,總覺(jué)得沒(méi)想法沒(méi)思考,沒(méi)有靈感。我總是想做一些別人沒(méi)做過(guò)的東西,或者說(shuō)做一些更加貼近生活的方面更有使用價(jià)值的設(shè)計(jì)。最后,多虧張老師幫我確定了畢設(shè)的思路,我想對(duì)被人們忽視的群體做出一些幫助來(lái),將一些已經(jīng)有了的東西應(yīng)用在另一個(gè)方面。通過(guò)這次畢業(yè)設(shè)計(jì),我明白之前的學(xué)習(xí)還是有所欠缺,以前總是眼高手低,半桶水晃蕩。通過(guò)著漫長(zhǎng)的幾個(gè)月研究學(xué)習(xí),終于完成了智能超聲波測(cè)距導(dǎo)盲杖系統(tǒng)的設(shè)計(jì)。在這個(gè)階段我收獲頗豐,同時(shí)也明白了成功不是一朝一夕的速成,而是一份份資料的閱讀、揣摩、一頁(yè)頁(yè)筆記的記錄、一張張草稿整合以及無(wú)數(shù)次上機(jī)實(shí)驗(yàn)的結(jié)果。我們對(duì)視障人士的關(guān)懷道路道阻且長(zhǎng),對(duì)生活中靈感的出現(xiàn)與實(shí)現(xiàn)任重而道遠(yuǎn),精彩的大學(xué)生活還未結(jié)束,還有兩年的時(shí)間供我在美好的校園里學(xué)習(xí)。我將以更加飽滿的熱情投入到學(xué)習(xí)之中,盡己所能為生活的好的方面做出自己那一份貢獻(xiàn)。參考文獻(xiàn)儲(chǔ)著華,陳香玉,王京全,劉粉.智能盲人導(dǎo)航眼鏡的設(shè)計(jì)[J].福建電腦.2021,37(2).戴曰章,吳志勇.基于AT89C51單片機(jī)的超聲波測(cè)距系統(tǒng)設(shè)計(jì)[D].濰坊學(xué)院信息與控制工程系,2005杜新柯.超聲波測(cè)距在智能導(dǎo)盲系統(tǒng)中的應(yīng)用[D].南京理工大學(xué),2012雷建龍.基于單片機(jī)的超聲波液位測(cè)量?jī)x[J].儀表技術(shù)與傳感器,2004,(6)彭翠云等.汽車倒車系統(tǒng)中超聲波測(cè)距模塊的設(shè)計(jì)[J].壓電與聲光,2003童峰,許天增.一種移動(dòng)機(jī)器人超聲波導(dǎo)航系統(tǒng)[J].機(jī)器人,2002,(1).付承彪,田安紅,于龍,等.基于超聲波測(cè)距的煤礦井下皮帶檢測(cè)系統(tǒng)設(shè)計(jì)[J].實(shí)驗(yàn)室研究與探索,2019,(3).64-67.蘇琳.基于HC-SR04的超聲波測(cè)距器的設(shè)計(jì)[J].科技信息,2012,(9).周建國(guó),彭志雄.基于單片機(jī)的超聲波測(cè)距系統(tǒng)設(shè)計(jì)[J].山東工業(yè)技術(shù),2016,(6).232-232.賀哲榮.MCS-51系列單片機(jī)實(shí)用編程88例[M].中國(guó)電力出版社,2011雷文禮,任新成,邵婷婷.基于單片機(jī)的超聲波測(cè)距系統(tǒng)的設(shè)計(jì)與實(shí)現(xiàn)[J].現(xiàn)代電子技術(shù),2015,(15).12-1于志贛,劉國(guó)平,張旭斌.液顯LCD1602模塊的應(yīng)用[J].機(jī)電技術(shù),2009,(3).21-23湯傳國(guó).基于單片機(jī)的超聲波倒車?yán)走_(dá)設(shè)計(jì)[J].汽車實(shí)用技術(shù),2018,(21).211-213.羅紫陽(yáng),陳鵬.基于單片機(jī)控制的超聲波測(cè)距系統(tǒng)設(shè)計(jì)與實(shí)現(xiàn)[J].數(shù)字通信世界,2019,(6).91.梁明亮,韋成杰.單片機(jī)對(duì)串行A/D轉(zhuǎn)換器ADC0832的C51編程[J].鄭州鐵路職業(yè)技術(shù)學(xué)院學(xué)報(bào),2009,(1).

附錄附錄A(主要函數(shù))#include<reg51.h>#include<intrins.h>#include<adc.h>#defineucharunsignedchar#defineuintunsignedintsbitEcho=P2^4;//超聲波接收端引腳 sbitTrig=P2^3;//超聲波控制端引腳 sbitSpeaker=P1^4;//報(bào)警器引腳sbitrs=P2^0; //LCD_RSsbitrw=P2^1; //LCD_RWsbite=P2^2; //LCD_Esbitled_y=P1^5;uinttime=0;uintdistance_data;uintdistance_alarm=50;unsignedints=0;//長(zhǎng)度unsignedintguang=0;//光亮度unsignedints_h=1000,s_l=500;//警報(bào)上限s_h,警報(bào)下限s_lintv;//ADC0832輸出賦值bitflag=0;uchardisdat[4]={0,0,0,0,};uchardisset[4]={0,0,0,0,};voiddelay(uintz)//延時(shí)子程序{uintx,y;for(x=z;x>0;x--)for(y=110;y>0;y--);}voidwrite_com(ucharcom)//定義一個(gè)帶參數(shù)的寫命令子程序{rs=0;P0=com;//把voidwrite_com(ucharcom)中的com中的數(shù)據(jù)給P0口delay(5);e=1;delay(5);e=0;delay(5);}voidwrite_shu(ucharshu)//定義一個(gè)帶參數(shù)的先命令子程序{rs=1;P0=shu;//把voidwrite_shu(ucharshu)中的com中的數(shù)據(jù)給P0口delay(5);e=1;delay(5);e=0;delay(5);}voidwrite_1602(ucharadd,uchardat){write_com(0x80+0x40+add);write_shu(dat);}voidzifuchuan(uchar*ch)//寫入字符串{while(*ch!=0)write_shu(*ch++);delay(20);}voidinit()//定義一個(gè)初始化子程序(初始化lcd屏幕){e=0;rw=0;write_com(0x38);//調(diào)用writecom子程序并把0x38賦給P0口,顯示模式打開delay(2);write_com(0x0c);write_com(0x06);write_com(0x80);write_com(0x01);zifuchuan("CeLiangJuLi");}voidStartModule();voidt0();voidConut(void);voidStartModule() //啟動(dòng)模塊{Trig=1;//啟動(dòng)一次模塊 _nop_();_nop_();_nop_();_nop_(); _nop_();_nop_();_nop_();_nop_(); _nop_();_nop_();_nop_();_nop_(); _nop_();_nop_();_nop_();_nop_(); _nop_();_nop_();_nop_();_nop_(); _nop_();_nop_();_nop_();_nop_(); Trig=0;}/****************主函數(shù)*************/voidmain(void){ delay(400);//啟動(dòng)時(shí)等待,等待lcd進(jìn)入工作狀態(tài) init();//lcd初始化 adc_init();TMOD=0x01; //設(shè)T0為方式1,GATE=1 TH0=0; TL0=0; ET0=1; //允許T0中斷 EA=1; //開啟總中斷 while(1) { v=adc_Conv(); StartModule(); while(!Echo); //當(dāng)RX為零時(shí)等待 TR0=1; //開啟定時(shí)器 while(Echo); //當(dāng)RX為定時(shí)并等待 TR0=0; //關(guān)閉定時(shí)器 Conut(); if(s<s_h) { Speaker=0; delay(60); Speaker=1; delay(100); if(s<s_l) { Speaker=1; delay(10); Speaker=0; delay(100); } } else { Speaker=1; } delay(5); if(guang<2) { led_y=1; } else { led_y=0; } }}/**********************************************/voidzd0()interrupt1 //T0中斷用來(lái)計(jì)數(shù)器溢出,超出測(cè)距范圍{ flag=1; //中斷溢出標(biāo)志}/******************計(jì)算顯示模塊*****************************/voidConut(void){ time=TH0*256+TL0; TH0=0; TH0=0;//S=(time*1.7)/100; s=(time/58.0/100.0)*1000;//計(jì)算單位CM guang=v*15/255;//計(jì)算光亮 disdat[0]=s/1000%10; disdat[1]=s/100%10; disdat[2]=s/10%10; write_1602(1,disdat[0]+0x30); write_1602(2,disdat[1]+0x30); write_1602(3,disdat[2]+0x30); write_1602(4,'C'); write_1602(5,'M'); disset[0]=guang/10%10; disset[1]=guang/1%10; write_1602(8,'G'); write_1602(9,'u'); write_1602(10,'a'); write_1602(11,'n'); write_1602(12,'g'); write_1602(13,':'); write_1602(14,disset[0]+0x30); write_1602(15,disset[1]+0x30);}/************ADC0832模塊*****************/voidadc_init(){adc_cs=1;adc_clk=0;adc_di=1;}unsignedcharadc_Conv(){uchar i;unsignedcharad_result1=0;adc_cs=0;//片選使能adc_di=1;_nop_();adc_clk=1;//第一個(gè)時(shí)鐘脈沖_nop_();adc_clk=0;//選擇通道DI輸入10選擇單通道,通道0adc_di=1;//第二個(gè)脈沖輸入1,單端輸入_nop_();adc_clk=1;_nop_();adc_clk=0;adc_di=0;//第三個(gè)脈沖輸入0,單端通道0_nop_();adc_clk=1;_nop_();adc_clk=0;adc_di=1;//數(shù)據(jù)拉高,接受數(shù)據(jù)for(i=0;i<8;i++){adc_clk=1;_nop_();adc_clk=0;if(adc_do==1) ad_result1|=0x80>>i;}adc_cs=1;adc_clk=1;adc_di=1;return(ad_result1);}附錄B(adc.h頭文件)#ifndef_adc_h_#define_adc_h_#include<reg51.h>sbitadc_cs=P3^5;sbitadc_clk=P3^1;sbitadc_di=P3^0;sbitadc_do=P3^0;voidadc_init();unsignedcharadc_Conv();#endif附錄C(聯(lián)調(diào)翻譯程序);StandardSFRSymbolsACCDATA0E0HBDATA0F0HSPDATA81HDPLDATA82HDPHDATA83HNAME?C_STARTUP?C_C51STARTUPSEGMENTCODE?STACKSEGMENTIDATARSEG?STACKDS1EXTRNCODE(?C_START)PUBLIC?C_STARTUPCSEGAT0?C_STARTUP:LJMPSTARTUP1RSEG?C_C51STARTUPSTARTUP1:IFIDATALEN<>0MOVR0,#IDATALEN-1CLRAIDATALOOP:MOV@R0,ADJNZR0,IDATALOOPENDIFIFXDATALEN<>0MOVDPTR,#XDATASTARTMOVR7,#LOW(XDATALEN)IF(LOW(XDATALEN

溫馨提示

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