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

正文內(nèi)容

基于單片機(jī)的超聲波液位控制器設(shè)計(jì)-資料下載頁

2025-06-22 19:43本頁面
  

【正文】 接口需要 22 根線,采用標(biāo)準(zhǔn)的 25 芯插頭。設(shè)計(jì)中實(shí)現(xiàn)了超聲波液位儀的遠(yuǎn)程通訊功能,將單片機(jī)獲得的液位數(shù)據(jù)傳送到上位機(jī),以便于工作人員的監(jiān)控和操作,并可將歷史數(shù)據(jù)存儲在 PC 機(jī)內(nèi),尤其適用于室外測量或惡劣環(huán)境下的測量,由此使得系統(tǒng)的應(yīng)用范圍更廣。本系統(tǒng)采用的是 9 芯的 D 型RS232 連接器串行通訊,通訊距離最遠(yuǎn)可達(dá) 15m。RS232 封裝如圖 所示。 MAX232 需要外界 4 只 電容,或者 1uF 的電解電容。之所以需要電容,是因?yàn)?RS232 電平是工作在大約9V~+9V 之間,需要把將 5V 電壓轉(zhuǎn)換成 RS232電平所需要的+10V 和10V。電路上形象地稱為電荷泵[31]。 設(shè)計(jì)中選用了 9 針的 D 型連接器,如圖 所示,并給出了 9 個引腳的功能。說明: 引腳 1:DCD,方向 I,載波檢測 引腳 2:RXD,方向 I,數(shù)據(jù)輸入 引腳 3:TXD,方向 O,數(shù)據(jù)輸出 引腳 4:DTR,方向 O,數(shù)據(jù)終端就緒 引腳 5:GND,地 引腳 6:DSR,方向 I,數(shù)據(jù)設(shè)備就緒 引腳 7:KTS,方向 O,請求發(fā)送 引腳 8:CTS,方向 I,清除發(fā)送 引腳 9:RI,方向 I,振鈴指示第四章 系統(tǒng)軟件設(shè)計(jì) 軟件總體設(shè)計(jì) 軟件設(shè)計(jì)流程圖 單片機(jī)液位儀的軟件功能是控制超聲波的發(fā)射和接收,對超聲波的傳輸時(shí)間進(jìn)行測量,結(jié)合超聲波的傳播速度,計(jì)算出距離,并把數(shù)字濾波后的結(jié)果顯示出來。要實(shí)現(xiàn)上述功能,軟件包含初始化、參數(shù)讀入、超聲波發(fā)射、超聲波傳輸計(jì)時(shí)、聲速計(jì)算、超聲波傳輸距離計(jì)算、數(shù)字濾波、計(jì)算結(jié)果顯示等功能模塊。軟件總體流程圖,如圖 所示。目前單片機(jī)的主流編程語言有匯編語言和 C 語言兩種。匯編語言的優(yōu)點(diǎn)是程序效率高、代碼短,但存在可讀性可移植性差的缺點(diǎn)。C 語言的優(yōu)點(diǎn)是可讀性好、可移植性好的優(yōu)點(diǎn),但存在代碼效率較低、代碼較長的缺點(diǎn)??紤]超聲波液位測量系統(tǒng)測量速度要求不高,數(shù)據(jù)計(jì)算量大的特點(diǎn),超聲波液位測量系統(tǒng)采用 C 語言編寫。 軟件設(shè)計(jì)運(yùn)用模塊化程序設(shè)計(jì)思想,對不同功能的程序進(jìn)行分別編程,這樣不但使得整個軟件的層次和結(jié)構(gòu)比較清晰,而且有利于軟件的調(diào)試和修改。 按照液位測量儀的需要,超聲波驅(qū)動與數(shù)據(jù)處理模塊主要任務(wù)是用單片機(jī)產(chǎn)生 40kHz 的脈沖,驅(qū)動超聲波探頭器發(fā)射超聲波,同時(shí)采用計(jì)數(shù)器計(jì)時(shí);當(dāng)超聲波接收器接收到回波信號時(shí)停止計(jì)時(shí),由此得出超聲波的傳輸時(shí)間 T,再利用第二章所介紹的公式,可求出待測距離 h,由此算出液體的高度[33]。? 主程序結(jié)構(gòu)流程圖 主程序是單片機(jī)程序的主體,它負(fù)責(zé)調(diào)用系統(tǒng)的子程序,中斷程序等各個功能轉(zhuǎn)換。如圖所示為系統(tǒng)的主程序流程。程序首先完成初始化過程,然后是一個重復(fù)的控制發(fā)射信號,而且每次發(fā)射周期結(jié)束都會判斷在發(fā)射信號后延時(shí)等待的過程中是否發(fā)生了中斷,即回波是否到達(dá)。 由于采用了單片機(jī) 89C51 并考慮整個系統(tǒng)的控制流程,整個系統(tǒng)軟件都由89C51 系列單片機(jī) C 語言實(shí)現(xiàn)。由于距離值的得出及顯示是在中斷子程序中完成的,因此在初始化發(fā)射程序后進(jìn)入中斷響應(yīng)的等待。在中斷響應(yīng)之后,原始數(shù)據(jù)經(jīng)計(jì)數(shù)值與距離值換算子程序,二進(jìn)制與十進(jìn)制轉(zhuǎn)換子程序后顯示輸出。 回波接收流程圖 中斷程序流程圖 中斷服務(wù)程序是響應(yīng)單片機(jī)的外部中斷。在系統(tǒng)硬件中,發(fā)射的 40KHz 脈沖信號遇到障礙物反射后,經(jīng)接收檢測電路產(chǎn)生外中斷信號至單片機(jī)。在中斷服務(wù) 程序中,要從把進(jìn)入中斷服務(wù)程序處的計(jì)數(shù)值讀出并保存在 RAM 中,再對該數(shù)據(jù)進(jìn)行處理,計(jì)算得到相應(yīng)的距離值,并轉(zhuǎn)換為十進(jìn)制,最后顯示輸出。如圖 。 串行口通信流程圖 為了便于數(shù)據(jù)的存儲和管理,需要超聲波液位檢測儀與 PC 機(jī)進(jìn)行通訊,將有關(guān)數(shù)據(jù)存入 PC 機(jī)中,操作人員可以通過這些數(shù)據(jù)清楚地了解當(dāng)前的液位情況。本設(shè)計(jì)將串行口的工作方式定義為方式 1,這時(shí)它是一個 8 位的異步串行通訊口,TXD 為數(shù)據(jù)輸出線,RXD 為數(shù)據(jù)輸入線。由于此時(shí)單片機(jī)比較空閑,所以可以采用查詢方式進(jìn)行通訊。在發(fā)送數(shù)據(jù)之前,先發(fā)一個字節(jié)的請求碼 0FFH,接收到上位機(jī)的應(yīng)答后,向上位機(jī)發(fā)送數(shù)據(jù)的個數(shù),最后發(fā)送數(shù)據(jù)[35]。上位機(jī)接收完數(shù)據(jù)后,要向液位儀發(fā)送一個確認(rèn)碼,如果接收的數(shù)據(jù)個數(shù)不對,則重新發(fā)送;若正確,則終止通訊,如圖 。 DS18B20 流程圖 該程序的主要功能是使用單片機(jī)和溫度傳感器完成對溫度的檢測和補(bǔ)償。通過 89C51 完成對 DS18B20 芯片的控制和數(shù)據(jù)傳輸。由于器件本身有嚴(yán)格的 時(shí)間配合,所以程序控制上比較復(fù)雜。DS18B20 總體流程圖,如圖 所示: 軟件程序調(diào)試 復(fù)位電路程序調(diào)試 void WTD_init() { uchar i。 uchar instr。 cs_feed=0。 // 用來寫 WREN 寫使能 instr=0x06。 for(i=0。i8。i++) { SCK=0。 SI=instramp。0x80。 SCK=1。 instr=1。 }器件 X5045 有一個寫使能鎖存功能,再一次寫操作開始以前這個鎖存必須被設(shè)置。如圖 。WREN 指令設(shè)置該鎖存,而 WRDI 指令將復(fù)位該鎖存。該鎖存在上電復(fù)位或一次有效地字節(jié)、頁或狀態(tài)寄存器的寫操作完成后自動復(fù)位,如果/WP引腳被拉低該鎖存也復(fù)位。當(dāng)發(fā)出一個 WREN 或者 WRDI 指令時(shí),不需要輸出一個字節(jié)的地址或數(shù)據(jù)。cs_feed=1。 _nop_()。 cs_feed=0。 //用來寫狀態(tài)寄存器指令 instr=0x01。 for(i=0。i8。i++) { SCK=0。 SI=instramp。0x80。 SCK=1。instr=1。 } instr=0x10。 //寫狀態(tài)寄存器 for(i=0。i8。i++) { SCK=0。 SI=instramp。0x80。 SCK=1。 instr=1。 } } 在寫數(shù)據(jù)到狀態(tài)寄存器之前,“寫使能”鎖存必須由 WREN 指令設(shè)置。先將/CS 引腳拉低以選通 X5045,然后輸出 WREN 指令之器件,然后再將/CS拉為高,禁止 X5045,這部分操作在函數(shù)寫使能中實(shí)現(xiàn)。之后再次拉低/CS 引腳以選通 X5045,先發(fā)送 WRSR 指令至器件,然后跟隨 8 位數(shù)據(jù),這 8 位數(shù)據(jù)相應(yīng)于狀態(tài)鎖存器的內(nèi)容。該操作有/CS 變高來結(jié)束。如果在 WREN 和 WRSR 兩指令之間不講/CS 拉高,則 WRSR 指令將被忽略[31]。 發(fā)送和接收超聲波程序調(diào)試 開始發(fā)送超聲波 void send_wave( ) { uchar w。 START=0。 //開始發(fā)送脈沖 TR0=1。 for(w=0。w15。w++)//延時(shí)大約 100 us START=1。 //停止發(fā)送 for(w=0。w5。w++)。//延時(shí)等待超聲波探頭器EX0=1。//外部中斷 0 允許 } 89C51 單片機(jī)通過 端口,發(fā)送一連串脈沖,用來控制時(shí)間。啟動定時(shí)器 0,同時(shí)延時(shí) 100us 之后,當(dāng)有接收到超聲波回波的時(shí)候,產(chǎn)生外部中斷信號,由單片機(jī)的端口 外部中斷 0 啟動。 超聲波返回中斷 讀取計(jì)數(shù)器中的值 void plus_count (void ) interrupt 0 using 0 { TR=0。 plus_data=TH0。 plus_data=8。 plus_data|=TL0。
點(diǎn)擊復(fù)制文檔內(nèi)容
物理相關(guān)推薦
文庫吧 www.dybbs8.com
備案圖鄂ICP備17016276號-1