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

正文內(nèi)容

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

2025-07-09 23:09 本頁面
 

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