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

正文內(nèi)容

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

2024-07-24 20:51 本頁面
 

【文章內(nèi)容簡介】 這種性能就可制成超聲波傳感器。為了研究和利用超聲波,人們已經(jīng)設(shè)計(jì)和制成了許多種超聲波發(fā)生器??傮w上講,超聲波發(fā)生器大體可以分為兩大類,一類是用電氣方式產(chǎn)生超聲波,一類是用機(jī)械方式產(chǎn)生超聲波。電氣方式包括壓電型、磁致伸縮型和電動(dòng)型等;機(jī)械方式有加爾統(tǒng)笛、液哨和氣流旋笛等。它們所產(chǎn)生的超聲波的頻率、功率和聲波特性各不相同,因而用途也各不相同。目前較為常用的是壓電式超聲波發(fā)生器。壓電式超聲波發(fā)生器實(shí)際上是利用壓電晶體的諧振來工作的。它有兩個(gè)壓電晶片和一個(gè)共振板。當(dāng)它的兩極外加脈沖信號(hào),其頻率等于壓電晶片的固有振蕩頻率時(shí),壓電晶片將會(huì)發(fā)生共振,并帶動(dòng)共振板振動(dòng),便產(chǎn)生超聲波。反之,如果兩電極間未外加電壓,當(dāng)共振板接收到超聲波時(shí),將壓迫壓電晶片作振動(dòng),將機(jī)械能轉(zhuǎn)換為電信號(hào),這時(shí)它就成為超聲波接收器了。壓電式超聲波發(fā)生器示意圖如圖28所示。 壓電晶片圖28 壓電式超聲波發(fā)生器示意圖 超聲波發(fā)射部分發(fā)射電路主要由反相器74LS04和超聲波發(fā)射傳感器T構(gòu)成。由于在距離較遠(yuǎn)的情況下,超聲波的回波很弱,因而轉(zhuǎn)換為電信號(hào)的幅值也較小,為此要求將信號(hào)放大。單片機(jī)端口輸出的40kHz的方波信號(hào)一路經(jīng)一級(jí)反相器后送到超聲波換能器的一個(gè)電極,另一路經(jīng)兩級(jí)反相器后送到超聲波換能器的另一個(gè)電極,用這種推挽形式將方波信號(hào)加到超聲波換能器的兩端,可以提高超聲波的發(fā)射強(qiáng)度。輸出端采用兩個(gè)反相器并聯(lián),用以提高驅(qū)動(dòng)能力。上位電阻R1O、R11一方面可以提高反向器74LS04輸出高電平的驅(qū)動(dòng)能力,另一方面可以增加超聲波換能器的阻尼效果,縮短其自由振蕩時(shí)間。超聲波發(fā)射部分如圖29所示。 超聲波接收部分超聲波檢測接收電路主要是由集成電路CX20106A組成,這是一款應(yīng)用廣泛的紅外線檢波接收的專用芯片,其具有功能強(qiáng)、性能優(yōu)越、外圍接口簡單、成本低等優(yōu)點(diǎn),常用于電視機(jī)紅外遙控接收器??紤]到紅外遙控常用的載波頻率38kHz與測距的超聲波頻率40kHz(超聲波傳感器的聲壓能級(jí)、靈敏度在40kHz時(shí)最大)較為接近,可以利用它制作超聲波檢測接收電路。適當(dāng)更改電容C4的大小,就可以改變接收電路的靈敏度和抗干擾能力。圖29 超聲波發(fā)送部分電路圖CX20106A內(nèi)部由前置放大器、限幅放大器、帶通濾波器、檢波器、積分器及整形電路構(gòu)成。使用CX20106A 集成電路對(duì)接收探頭受到的信號(hào)進(jìn)行放大、濾波,其總放大增益80db。當(dāng)CX20106A 接收到40KHz的信號(hào)時(shí),會(huì)在第7腳產(chǎn)生一個(gè)低電平下降脈沖,單片機(jī)外部中斷接到這個(gè)信號(hào)并采取相應(yīng)動(dòng)作,使測距結(jié)果在1602液晶上顯示出來。超聲波接收部分如圖210所示。 各部分連接方案本次所用元器件包括STC12C5A60S2單片機(jī),LC D1602液晶顯示模塊,HCSR04超聲波測距模塊和DS18B20溫度傳感器。LCD1602液晶顯示屏采用標(biāo)準(zhǔn)的16腳接口,其連接方式如下:第1腳VSS為電源地;第2腳VDD接5V電源;第3腳V0為液晶顯示器對(duì)比度調(diào)整端,接地;第4腳RS為寄存器選擇引腳,高電平時(shí)選擇數(shù)據(jù)存儲(chǔ)器,低電平時(shí)選擇指令存儲(chǔ)器;第5腳RW為讀寫信號(hào)線,高電平時(shí)進(jìn)行讀操作,低電平時(shí)進(jìn)行寫操作;第6腳E端為使能端,當(dāng)E端由高電平跳變成為低電平時(shí)液晶模塊執(zhí)行命令;第7~14腳D0~D7為8位雙向數(shù)據(jù)線;第15~16腳為背光。圖210 超聲波接收部分電路圖溫度模塊采用DS18B20溫度傳感器。該傳感器提供9位溫度讀數(shù)指示器件溫度,信息經(jīng)過單線接口送入或送出傳感器。DS1820溫度傳感器為單線接口,因此從中央處理器到DS1820僅需連接一條線。超聲波發(fā)射和接收模塊采用HCSR04超聲波測距模塊,該模塊性能穩(wěn)定,測度距離精確。其接線方式如下:第1腳VCC接5V電源;第2腳trig超聲波發(fā)射控制端接單片機(jī)任意I/O口,主要任務(wù)是接收脈沖以控制超聲波發(fā)射器發(fā)出超聲波以及單片機(jī)定時(shí)器開始計(jì)時(shí);第3腳echo超聲波接收控制端接單片機(jī)外部中斷口INT0,當(dāng)接收到外部中斷時(shí)停止計(jì)時(shí)并進(jìn)行數(shù)據(jù)處理;第4腳GND接地。系統(tǒng)的總電路圖如圖210所示。 本章小結(jié)這一章主要對(duì)超聲波測距系統(tǒng)的硬件設(shè)計(jì)進(jìn)行了詳細(xì)的說明。首先是系統(tǒng)的原理,然后是系統(tǒng)各個(gè)模塊的內(nèi)部構(gòu)造、工作特性和使用方法,最后是各個(gè)模塊之間的連接方式。為下一章軟件設(shè)計(jì)提供基礎(chǔ)。圖210 系統(tǒng)總電路圖第3章 超聲波測距軟件設(shè)計(jì) 軟件設(shè)計(jì)方法本次單片機(jī)的軟件采用Keil uVision2軟件進(jìn)行C語言編程。Keil提供了豐富的庫函數(shù)和功能強(qiáng)大的集成開發(fā)調(diào)試工具,可以完成編輯、編譯、連接、調(diào)試、仿真等整個(gè)開發(fā)流程。Keil軟件的優(yōu)點(diǎn)主要有以下幾點(diǎn):首先,Keil C51生成的目標(biāo)代碼效率非常之高,多數(shù)語句生成的匯編代碼很緊湊,容易理解。在開發(fā)大型軟件時(shí)更能體現(xiàn)高級(jí)語言的優(yōu)勢。Keil C51軟件提供豐富的庫函數(shù)和功能強(qiáng)大的集成開發(fā)調(diào)試工具,全Windows界面。操作十分方便。其次,匯編語言是一種面向機(jī)器的低級(jí)的程序設(shè)計(jì)語言。它直接利用機(jī)器提供的指令系統(tǒng)編寫程序,該類程序的可執(zhí)行指令是與機(jī)器語言程序的指令一一對(duì)應(yīng)的。匯編語言由于是面向機(jī)器的程序設(shè)計(jì)語言,與具體的計(jì)算機(jī)硬件有著密切的關(guān)系,因此,可移植性差。但由于匯編指令與機(jī)器語言指令一一對(duì)應(yīng),即一條匯編語言的可執(zhí)行指令對(duì)應(yīng)著一條機(jī)器語言指令,反之亦然。因此,匯編語言可直接利用機(jī)器硬件系統(tǒng)的許多特性,如寄存器、標(biāo)志位以及一些特殊指令等,具有執(zhí)行速度快、占用內(nèi)存少等優(yōu)點(diǎn)。匯編語言的缺點(diǎn)是程序的通用性和可移植性差;程序比較繁瑣,調(diào)試?yán)щy;目標(biāo)程序比較龐大,運(yùn)行速度慢。而C語言是一種編譯型的程序設(shè)計(jì)語言,它兼顧了多種高級(jí)語言的特點(diǎn),并具備匯編語言的功能。C語言有功能豐富的庫函數(shù),運(yùn)算速度快,編譯效率高,有良好的可移植性,而且可以直接實(shí)現(xiàn)對(duì)系統(tǒng)硬件的控制。C語言是一種結(jié)構(gòu)化設(shè)計(jì)語言,支持支持由頂向下結(jié)構(gòu)化程序設(shè)計(jì)技術(shù)。C語言的模塊化程序結(jié)構(gòu)可以使程序模塊實(shí)現(xiàn)共享。在C語言的可讀性方面更容易借鑒前人的開發(fā)經(jīng)驗(yàn),提高程序的開發(fā)水平。C語言應(yīng)用于單片機(jī)編程出了上述特點(diǎn)外,還有以下突出特點(diǎn):編譯器可以自動(dòng)完成變量存儲(chǔ)單元的分配,省去了分配和紀(jì)錄存儲(chǔ)單元的繁瑣;不必對(duì)單片機(jī)和硬件接口的結(jié)構(gòu)有很深入的了解,省去了單片機(jī)漫長的學(xué)習(xí)時(shí)間;具有良好的可移植性,只要將程序略加改動(dòng)就可以將其應(yīng)用與其他類型的單片機(jī),省去了更改單片機(jī)型號(hào)時(shí)重新編寫程序的無奈。因此利用C語言編寫程序可以大大縮短目標(biāo)系統(tǒng)軟件的開發(fā)周期,程序的可讀性明顯增加,便于改進(jìn)、擴(kuò)充、研制規(guī)模更大、性能更完備的系統(tǒng)。對(duì)于本次編程,使用keil生成的hex文件可以用軟件直接轉(zhuǎn)化成機(jī)械碼編入STC12C5A60S2單片機(jī),簡單方便。 軟件系統(tǒng)流程介紹超聲波測距的原理為超聲波發(fā)生器T在某一時(shí)刻發(fā)出一個(gè)超聲波信號(hào),當(dāng)這個(gè)超聲波遇到被測物體后反射回來,就被超聲波接收器R所接收到。這樣只要計(jì)算出從發(fā)出超聲波信號(hào)到接收到返回信號(hào)所用的時(shí)間,就可算出超聲波發(fā)生器與反射物體的距離。在啟動(dòng)發(fā)射電路的同時(shí)啟動(dòng)單片機(jī)內(nèi)部的定時(shí)器T0,利用定時(shí)器的計(jì)數(shù)功能記錄超聲波發(fā)射的時(shí)間和收到反射波的時(shí)間。當(dāng)收到超聲波反射波時(shí),接收電路輸出端產(chǎn)生一個(gè)負(fù)跳變,在INT0端產(chǎn)生一個(gè)中斷請求信號(hào),單片機(jī)響應(yīng)外部中斷請求,執(zhí)行外部中斷服務(wù)子程序,讀取時(shí)間差,計(jì)算距離。主程序首先是對(duì)系統(tǒng)環(huán)境初始化,設(shè)置定時(shí)器T0工作模式為16位定時(shí)計(jì)數(shù)器模式。置位總中斷允許位EA并給顯示端口P0和P1清0。然后調(diào)用超聲波發(fā)生子程序送出一個(gè)超聲波脈沖,為了避免超聲波從發(fā)射器直接傳送到接收器引起的直射波觸發(fā), ms(這也就是超聲波測距儀會(huì)有一個(gè)最小可測距離的原因)后,才打開外部中斷0接收返回的超聲波信號(hào)。由于采用的是22 MHz的晶振,當(dāng)主程序檢測到接收成功的標(biāo)志位后,將計(jì)數(shù)器T0中的數(shù)(即超聲波來回所用的時(shí)間)計(jì)算即可得被測物體與測距儀之間的距離。整個(gè)系統(tǒng)的流程如圖31所示。 液晶顯示模塊顯示模塊主要控制LCD1602液晶顯示屏顯示,設(shè)計(jì)要點(diǎn)是先根據(jù)液晶顯示模塊工作時(shí)序圖設(shè)計(jì)寫指令程序和寫數(shù)據(jù)程序,然后根據(jù)上兩個(gè)程序設(shè)計(jì)初始化程序和顯示程序。開始定時(shí)器、液晶初始化啟動(dòng)T0開中斷啟動(dòng)T0發(fā)40kHz方波延時(shí)避開盲區(qū)開外部中斷0有回波停止T0,T1關(guān)中斷數(shù)據(jù)處理顯示輸出YN圖31 系統(tǒng)工作流程本部分包括延時(shí)若干毫秒程序delay(uchar c),寫入指令程序WriteInstruction(unsigned char dictate),寫入數(shù)據(jù)程序WriteData(unsigned char y),LCD1602初始化程序lcd_init()和顯示程序void show(uchar p,uchar *s,uint low)。其中顯示程序如下:void show(uchar p,uchar *s,uint low){ uint num。 WriteAddress(p)。 //寫入地址p for(num=0。numlow。num++) //寫入數(shù)組s[]作為數(shù)據(jù) { //數(shù)組內(nèi)字符的個(gè)數(shù)為low WriteData(s[num])。 delay(1)。 }} 溫度測量模塊溫度測量模塊主要是控制DS18B20溫度傳感器完成溫度測量,設(shè)計(jì)要點(diǎn)是先設(shè)計(jì)溫度測量模塊讀命令程序和寫命令程序,再根據(jù)以上兩個(gè)程序逐步編寫測溫程序。經(jīng)過單線訪問DS18B20的ROM操作命令包括讀ROM命令33h,符合ROM命令55h,跳過ROM命令CCh,搜索ROM命令F0h和告警搜索ECh。存貯器操作命令包括溫度變換命令44h,讀暫存存儲(chǔ)器命令Beh,寫暫存存儲(chǔ)器命令4Eh,復(fù)制暫存存儲(chǔ)器命令43h,重新調(diào)出E2命令E3h,讀電源命令B4h。本部分包括延時(shí)若干微秒程序delay1(uint z),DS18B20初始化程序DS18B20_Init(),DS18B20讀命令程序read_bey(),DS18B20寫命令程序write_bey(uchar det),讀出溫度程序temperature(),溫度處理程序get_temp()和溫度數(shù)據(jù)轉(zhuǎn)換程序TempConvert(long int tep)。其中溫度處理程序如下: uint get_temp(){ uchar h,l。 DS18B20_Init()。 //初始化溫度傳感器 delay(6)。 write_bey(0xcc)。 //跳過rom write_bey(0xbe)。 //發(fā)讀內(nèi)部9字節(jié)內(nèi)容指令 l=read_bey()。 //讀前兩個(gè)字即溫度 h=read_bey()。 temp1=h。 //溫度數(shù)值轉(zhuǎn)換 temp1=temp18。 temp1=temp1|l。 t_temp=temp1*。 temp1=t_temp*10+。 return temp1。} 超聲波測量模塊(頻率約40kHz的方波),脈沖寬度為12μs左右,同時(shí)把計(jì)數(shù)器T0打開進(jìn)行計(jì)時(shí)。超聲波發(fā)生子程序較簡單,但要求程序運(yùn)行準(zhǔn)確,所以采用匯編語言編程。 超聲波測距儀主程序利用外中斷0檢測返回超聲波信號(hào),一旦接收到返回超聲波信號(hào)(即INT0引腳出現(xiàn)低電平),立即進(jìn)入中斷程序。進(jìn)入中斷后就立即關(guān)閉計(jì)時(shí)器T0停止計(jì)時(shí),并將測距成功標(biāo)志字賦值1。如果當(dāng)計(jì)時(shí)器溢出時(shí)還未檢測到超聲波返回信號(hào),則定時(shí)器T0溢出中斷將外部中斷1關(guān)閉,并將測距成功標(biāo)志字賦值2以表示此次測距不成功。 前方測距電路的輸出端接單片機(jī)INT0端口,中斷優(yōu)先級(jí)最高,左、右測距電路的輸出通過與門IC3A的輸出接單片機(jī)INT1端口,中斷源的識(shí)別由程序查詢來處理,中斷優(yōu)先級(jí)為先右后左。包括運(yùn)行程序void yunxing()和HCSR04數(shù)據(jù)處理程序:void DistanceConvert(long int dat)。其中運(yùn)行程序如下:void yunxing(){ uint j,k。 for(j=0。j10。j++) //測量10次 { Tx=1。 //發(fā)1次脈沖給trip端,則其自 動(dòng)產(chǎn)生8個(gè)40kHz脈沖并發(fā)出超 聲波 NOP()。NOP()。NOP()。NOP()。 Tx=0。 //發(fā)送完畢后等待產(chǎn)生外部中斷 v=*temp1+。 //通過溫度計(jì)算當(dāng)前超聲波速度 distance=v*n/4424。 //計(jì)算距離 zonghe+=distance。 } distance=zonghe/10。 //求測量10次距離的平均值}外部中斷程序如下:void int0() interrupt 0{ n=(TH0*256+TL0)。 //取出定時(shí)器計(jì)時(shí)個(gè)數(shù) TH0=0。 //重置定時(shí)器 TL0=0。} 主程序部分主程序主要控制整體系統(tǒng)的工作流程。主程序如下:void main(){ lcd_init()。 //液晶顯示器初始化 delay(5)。 TMOD=0x19。 //設(shè)定定時(shí)器工作方式 EA=1。 //打開計(jì)時(shí)和各個(gè)中斷 TR0=1。 EX0=1。 IT0=1。 while(1) { tempera
點(diǎn)擊復(fù)制文檔內(nèi)容
范文總結(jié)相關(guān)推薦
文庫吧 www.dybbs8.com
備案圖片鄂ICP備17016276號(hào)-1