freepeople性欧美熟妇, 色戒完整版无删减158分钟hd, 无码精品国产vα在线观看DVD, 丰满少妇伦精品无码专区在线观看,艾栗栗与纹身男宾馆3p50分钟,国产AV片在线观看,黑人与美女高潮,18岁女RAPPERDISSSUBS,国产手机在机看影片

正文內(nèi)容

畢業(yè)論文-基于89c52單片機(jī)的超聲波測(cè)距系統(tǒng)的設(shè)計(jì)與實(shí)現(xiàn)(編輯修改稿)

2025-07-09 23:09 本頁(yè)面
 

【文章內(nèi)容簡(jiǎn)介】 2 軟件流程圖 超聲波模塊驅(qū)動(dòng)程序 發(fā)射接收程序 本系統(tǒng)超聲波測(cè)距傳感器采用的是 US100超聲波測(cè)距模塊,并且利用其 電平 測(cè)量模式,其工作原理圖在第二章圖 。 其模塊的驅(qū)動(dòng)程序是由發(fā)射程序和接收程序兩部分,另外加上一個(gè)防溢出中斷程序構(gòu)成 。 發(fā)射程序是 通過(guò) 給 單片機(jī) 的 (即與 US100的 TX引腳 相連接)大約 10us的高電平 ,程序中完成 10us的時(shí)間并沒(méi)有 采 用定時(shí)器,而是采用延時(shí)程序完成,程序中的函數(shù)名為delay_10us()。經(jīng)過(guò)示波器測(cè)量,此段延時(shí)的時(shí)間大約為 。然后給持續(xù)一段約 100us的低電平,這樣便完成了發(fā)射程序,之后便可以進(jìn)行 接收程序。 接收程序是用單片機(jī)檢測(cè) (即與 US100的 RX引腳相連接)的電平變化。 根據(jù)US100工作原理圖可知,首先保證 ,即此時(shí) US100還沒(méi)有接收到超聲波信號(hào),當(dāng) ,打開(kāi) T0定時(shí)器,進(jìn)行時(shí)間間隔記時(shí),此時(shí) TH0和TL0初值都為 0。再等待 ,此時(shí)表示 超聲波信號(hào)接收完畢,關(guān)閉定時(shí)器 T0,讀出 TH0和 TL0的值 分別給變量 time_high和 time_low,即完成此部分程序功能。 發(fā)射接收程序的代碼如下所示 。 sent=1。 delay_10us()。 sent=0。 delay_100us()。/////發(fā)射 完畢 TH0=0。 TL0=0。 while(receive==1)。 while(receive==0)。 TR0=1。 ET0=1。 //定時(shí)器開(kāi)始工作 while(receive==1amp。amp。flag_error==0)。 time_high=TH0。 time_low=TL0。 /////接收完畢 防溢出中斷程序 防溢出中斷程序?qū)嵸|(zhì)是利用了定時(shí)器 T0的溢出中斷 [7]。 分析以上的接收程序可知, 在, 定時(shí)器 T0開(kāi)始工作, TH0、 TL0從 0開(kāi)始增加,但是止到 由高電平變到低電平,即出現(xiàn)下降沿時(shí),定時(shí)器 T0才停止計(jì)數(shù)。那么如果在 前,定時(shí)器 T0的 TH0和 TL0計(jì)數(shù)發(fā)生溢出,即會(huì)發(fā)生測(cè)量錯(cuò)誤,屬于系統(tǒng)的無(wú)效狀態(tài)。為了避免這個(gè)無(wú)效狀態(tài),本系統(tǒng)設(shè)定了此 防溢出中斷程序,一旦發(fā)生溢出情況,則程序進(jìn)入定時(shí)器 T0的中斷程序 ,設(shè)置 錯(cuò)誤標(biāo)志位 flag_error=1,表示此次測(cè)量無(wú)效。 另外本超聲波測(cè)距系統(tǒng)的最大測(cè)距范圍限定在 400cm,那么當(dāng)發(fā)生溢出時(shí),定時(shí)器 TO的計(jì)數(shù)值為 65536。系統(tǒng)中單片機(jī)采用 ,對(duì)應(yīng)機(jī)器周期約為 ,那么 65536次計(jì)數(shù)即表示超聲波發(fā)射接收時(shí)間間隔為 59578us,聲速取 340m/s,則測(cè)量距離約為 1013cm,以超出本系統(tǒng)設(shè)定的測(cè)距范圍,并且超出傳感器的測(cè)量范圍。所以 上述給出了發(fā)生溢出一定是系統(tǒng)無(wú)效的證明。 防溢出中斷程序的代碼如下所示 。 void zd_TIME0() interrupt 1 //T0 中斷用來(lái)計(jì)數(shù)器溢出 ,超過(guò)測(cè)距范圍 { 13 TF0=0。 flag_error=1。 //中斷溢出標(biāo)志 } 測(cè)距算法 測(cè)距的基本算法是采用 ,由于采用的 US100超聲波測(cè)距模塊具有溫度補(bǔ)償電路,可以自動(dòng)校準(zhǔn)由溫度引起的聲速變化,所以程序中聲速可以取為常量 340m/s,那么 測(cè)距公式可以化為公式: 170LT??。在 T0的高 8為計(jì)數(shù)寄存器 TH0賦值給 time_high, TL0的低八位賦值給 time_low,程序中定義一個(gè)無(wú)符號(hào)長(zhǎng)整型的變量 time_data來(lái)裝載測(cè)距時(shí)間間隔 T,那么只需將 time_high左移 4位,再加上 time_low,就可以得到 time_data的值了。 系統(tǒng)要求的測(cè)距精度是達(dá)到 1cm,但是為了進(jìn)一步提高測(cè)距精度,本系統(tǒng)軟件在測(cè)距計(jì)算中計(jì)算到了毫米 mm位。具體為程序中設(shè)定了 一個(gè)有 4個(gè)元素的 字符型 數(shù)組 display[4],這四個(gè)元素分別代表 display[3]、 display[2]、 display[1] 、 display[0]分別代表米位、分米位、厘米位、毫米位,其中這 4個(gè)位均參與計(jì)算,但是最后的毫米位作四舍五入處理,不予顯示。這樣符合本系統(tǒng)的設(shè)計(jì)要求,也進(jìn)一步提高本系統(tǒng)的測(cè)距精度。 并且在程序此處部分嚴(yán)格檢測(cè)數(shù)據(jù)大小,防止測(cè)距超出傳感器范圍或者測(cè)距范圍太近( L小于 3cm),一旦發(fā)現(xiàn)錯(cuò)誤數(shù)據(jù),便設(shè)置錯(cuò)誤標(biāo)志位 flag_error=1,表示此次測(cè)量無(wú)效。此段程序的代碼如下 。 time_data=time_high*256+time_low。//測(cè)距時(shí)間計(jì)算 time_high=0。 time_low=0。 flag_error=0。 distance_data=0。 if(time_data=26471)//防止超出測(cè)距范圍 { time_data= (time_data*17)/100。//得到測(cè)距距離 distance_data=time_data。 if(distance_data=4000amp。amp。distance_data=30)//限定測(cè)距范圍 { display[0]=distance_data%10。 //顯示轉(zhuǎn)換 display[1]=(distance_data/10)%10。 display[2]=(distance_data/100)%10。 display[3]=(distance_data/1000)%10。 if(display[0]=5) //四舍五入程序 { if(display[1]==9) { if(display[2]==9) { display[3]=display[3]+1。 display[2]=0。 display[1]=0。 } else 14 { display[2]=display[2]+1。 display[1]=0。 } } else display[1]=display[1]+1。 } display[1]=display[1]+39。039。//轉(zhuǎn)換成字符碼 display[2]=display[2]+39。039。 display[3]=display[3]+39。039。 液晶模塊驅(qū)動(dòng)程序 在本系統(tǒng)的軟件設(shè)計(jì)中,把液晶模塊的驅(qū)動(dòng)程序作為一個(gè)獨(dú)立的 C文件組織在程序中,驅(qū)動(dòng)程序 [8]的外部接口包括為幾個(gè)調(diào)用控制函數(shù)如 : 液晶顯示器的數(shù)據(jù)顯示前,都要進(jìn)行清屏操作,其調(diào)用函數(shù)為 LcdWriteCmd(0x01 , 1 )。液晶屏上的數(shù)據(jù)顯示分為字符串顯示和字符顯示,前者通常使用函數(shù) void PutStr(char x , char y , char* str),后者通常調(diào)用函 void PutChar(char x , char y , char value)。 這里 給出本系統(tǒng)液晶屏的指示狀態(tài)和數(shù)據(jù)顯示方法。首先當(dāng)液晶顯示器出現(xiàn)上行下行全白時(shí)表示系統(tǒng)正在開(kāi)機(jī)啟動(dòng);當(dāng)液晶顯示器出現(xiàn)上行 now,loading和下行 waitting...表示正在啟動(dòng)超聲波模塊;當(dāng)液晶顯示器出現(xiàn)上行 the distance is: 和下行 xxx cm表示系統(tǒng)處于正常測(cè)距狀態(tài);當(dāng)液晶顯示器出現(xiàn)上行 stop measuring和下行 xxx cm表示系統(tǒng)處于暫停測(cè)量狀態(tài);當(dāng)液晶顯示器出現(xiàn)上 行 there is error和下行 check distance時(shí)表示測(cè)量距離超出本系統(tǒng)設(shè)計(jì)的范圍。 系統(tǒng)暫停中斷程序 系統(tǒng)暫停中斷程序即是應(yīng)用外部中斷 INT0[9]來(lái)實(shí)現(xiàn)系統(tǒng)測(cè)量暫停功能,在外部中斷 0引腳 K1。當(dāng)按鍵短按時(shí),進(jìn)入外部中斷 0的中斷程序,在中斷程序中顯示前一時(shí)刻的測(cè)距數(shù)據(jù),并再次檢測(cè)按鍵 K1;當(dāng)發(fā)現(xiàn) K1長(zhǎng)按時(shí),則從中斷程序中返回之前的工作循環(huán)。其代碼如所示 。 void zd_INT0() interrupt 0 //T0 中斷用來(lái)計(jì)數(shù)器溢出 ,超過(guò)測(cè)距范圍 {EA=0。 IE0=0。 LcdWriteCmd(0x01 , 1 )。//清屏幕 PutStr(0,0,stop measuring)。//顯示 PutChar(4,1,display[3])。 PutChar(5,1,display[2])。 PutChar(6,1,display[1])。 PutChar(7,1,39。 39。)。 PutChar(8,1,39。c39。)。 PutChar(9,1,39。m39。)。 delay_100ms()。 delay_100ms()。 delay_100ms()。 delay_100ms()。 delay_100ms()。 while(1) 15 { if(key_stop==0)//再次按下則返回 { delay_100ms()。 delay_100ms()。 delay_100ms()。 delay_100ms()。 if(key_stop==0) break。}} EA=1。 } 5 系統(tǒng)調(diào)試 系統(tǒng)調(diào)試概述 本章中主要記錄和講述本超聲波測(cè)距系統(tǒng)在調(diào)試過(guò)程中 錯(cuò)誤的改正 和 功能的改進(jìn) 。本章將分 兩個(gè)部分進(jìn)行敘述,分別為系統(tǒng)硬件調(diào)試和和系統(tǒng)軟件調(diào)試 。兩者調(diào)試的基本思想和出發(fā)點(diǎn)包含四個(gè)方面的內(nèi)容,他們分別是超聲波系統(tǒng)的測(cè)距正確性、測(cè)距精確性、系統(tǒng)穩(wěn)定性、使用方便性。 這里給出本系統(tǒng)的實(shí)物圖,如下圖 51 所示。 圖 51 系統(tǒng)實(shí)物圖 硬件調(diào)試 本超聲波測(cè)距系統(tǒng)的硬件電路中,除了電源模塊為模擬電路單元,其他模塊如單片機(jī)模塊、液晶顯示器模塊等均為數(shù)字單元,正因如此系統(tǒng)中大部分的數(shù)字單元,使得本系統(tǒng)工作 16 穩(wěn)定性很高,也使得本系統(tǒng)的硬件調(diào)試相對(duì)較簡(jiǎn)單。 模擬單元電源模塊的調(diào)試:經(jīng)過(guò)測(cè)量,得到本超聲波測(cè) 距系統(tǒng)正常測(cè)距時(shí)穩(wěn)壓芯片輸入直流電流為 ,系統(tǒng)額定輸入電壓為 9V,那么得到系統(tǒng)功耗為 。 為系統(tǒng)提供 9V 電壓的是南孚 9V堿性干電池 ,該電池在 21 攝氏度下,恒流放電至 的 情況下,電池容量大概為 400mAh 到 600mAh,即可保證本系統(tǒng)持續(xù)工作 1 個(gè)小時(shí)左右。數(shù)字單元的調(diào)試:數(shù)字單元本身具有很好的穩(wěn)定性,主要檢測(cè)各個(gè)引腳是否連接正確,各個(gè)引腳電平信號(hào)是否正確。 軟件調(diào)試 本系統(tǒng)的軟件調(diào)試工具為 Keil C,軟件調(diào)試的任務(wù)是使得本系統(tǒng)反應(yīng)出正確的和精確的被測(cè)距離 ,以及按鍵正確控制系 統(tǒng)狀態(tài)切換 。 在本系統(tǒng)的制作中,出現(xiàn)錯(cuò)誤測(cè)距時(shí),會(huì)從 程序 距離 計(jì)算部分,液晶顯示部分找問(wèn)題。比如系統(tǒng)在調(diào)試過(guò)程中曾經(jīng)在距離數(shù)據(jù)顯示位本應(yīng)該顯示“ 0” “ 9”的數(shù)字,結(jié)果錯(cuò)誤顯示“:”,調(diào)試發(fā)現(xiàn)為毫米位四舍五入程序出現(xiàn) bug,修正程序后錯(cuò)誤顯示“:”的現(xiàn)象解決。程序中也進(jìn)行了顯示優(yōu)化,采用相應(yīng)程序使得高位 0 清空處理,使得測(cè)量者方便觀察數(shù)據(jù)。 本系統(tǒng)中工作狀態(tài)切換按鍵 K1 曾出現(xiàn)按鍵失效狀態(tài),具體表現(xiàn)在:短按 K1 進(jìn)入中斷程序后,系統(tǒng)暫停工作,但再次按 K1,無(wú)論是短按還是長(zhǎng)按都不會(huì)退出中斷程序,返回工作狀態(tài)。最后在程 序測(cè)試中發(fā)現(xiàn),適當(dāng)延長(zhǎng)按鍵去抖延時(shí)就解決了此問(wèn)題。 6 總結(jié) 基于前 面 章 節(jié) 的論述, 將 在 本章 中 將指出本系統(tǒng)現(xiàn)存的不足,也進(jìn)一步提出對(duì)本系統(tǒng) 改進(jìn) 的構(gòu)想。具體 論述 從器件選擇,硬件電路、軟件設(shè)計(jì)這三個(gè) 角度 展開(kāi),具體分析如下。 本系統(tǒng)現(xiàn)存的不足之處主要表現(xiàn)在 兩個(gè)方面,即 功耗 過(guò)大和程序執(zhí)行效率 [10]較低。首先本系統(tǒng)現(xiàn)在工作狀態(tài)額定功率約為 450mw,作為一個(gè)利用干電池供電的手持?jǐn)y便設(shè)備,如果能夠?qū)⑵涔慕档偷?100mw 以下,這樣可以極大的提高干電池供電時(shí)間。這里分析本系統(tǒng)功耗過(guò)大的原因?yàn)槭遣捎玫?16*2 1602ZFA字符型液晶顯示器 工作 功率較大,為了降低功耗可以嘗試 屏幕較小,且 工作電壓電流較小的液晶顯示器 。 其次程序效率低的原因表現(xiàn)在程序中大量引入延時(shí)程序,并且測(cè)量周期較長(zhǎng)。改善方案可以從以下兩點(diǎn)著手:( 1)將程序的顯示部分和測(cè)距部分分開(kāi),這樣可以有效的縮短測(cè)距周期。然后采另外用定時(shí)中斷定時(shí)去刷新液晶屏幕數(shù)據(jù)。( 2)可以采用功能模塊較多的單片機(jī),比如具有 PWM功能、輸入捕捉功能等??梢岳?PWM功能去完成超聲波發(fā)射驅(qū)動(dòng),利用輸入捕捉功能去完成時(shí)間測(cè)量 ,這樣可以極大的提高程序效率,同時(shí)提高測(cè)距的精度。 最后提出對(duì)本系統(tǒng) 的一點(diǎn)構(gòu)想,即在超聲波發(fā)射接收模塊的中間加入一支激光管。在系統(tǒng)開(kāi)啟后,激光管可以發(fā)出激光束指向被測(cè)物體,那么則可用可視光路指示看不見(jiàn)的超聲波傳播路徑,讓測(cè)量者能夠更加清楚的觀測(cè)本超聲波測(cè)距儀與被測(cè)物體是否在一條直線上,避免一些人為的錯(cuò)誤。 參考文獻(xiàn) [1] 李群芳,肖看 .《單片機(jī)原理、接口及應(yīng)用》 .北京 .清華大學(xué)出版社 .2021年 [2] 沈紅衛(wèi) .《基于單片機(jī)的智能系統(tǒng)設(shè)計(jì)與實(shí)現(xiàn)》 .北京 .電子工業(yè)出版社 .2021年 [3] 劉海成 .《單片機(jī)及應(yīng)用系統(tǒng)設(shè)計(jì)原理與實(shí)踐》 .北京
點(diǎn)擊復(fù)制文檔內(nèi)容
畢業(yè)設(shè)計(jì)相關(guān)推薦
文庫(kù)吧 www.dybbs8.com
備案圖片鄂ICP備17016276號(hào)-1