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

正文內容

基于單片機的超聲波液位測量系統(tǒng)本科生畢業(yè)設計論文-資料下載頁

2025-06-27 19:50本頁面
  

【正文】 符號和引腳 共陰極 共陽極 數(shù)碼管類型 數(shù)碼管顯示器有兩種工作方式,即靜態(tài)顯示方式和動態(tài)掃描顯示方式。為節(jié)省端口及降低功耗,本系統(tǒng)采用動態(tài)掃描顯示方式。動態(tài)掃描顯示方式需要解決多位LED數(shù)碼管的“段控”和“位控”問題,本電路的通過P0口實現(xiàn):而每一位的公共端,即LED數(shù)碼管的“位控”,則由P2口控制。這種連接方式由于多位字段線連在一起,因此,要想顯示不同的內容,必然要采取輪流顯示的方式,即在某一瞬間,只讓其中的某一位的字位線處于選通狀態(tài),其它各位的字位線處于斷開狀態(tài),同時字段線上輸出這一位相應要顯示字符的字段碼。在這一瞬時,只有這一位在顯示,其他幾位則暗。在本系統(tǒng)中,字位線的選通與否是通過NPN8050三極管的導通與截止來控制,即三極管處于“開頭”狀態(tài)。 報警電路設計為了在某些緊急狀態(tài)或反常狀態(tài)下,能使操作人員不致忽視,以便及時處理,往往需要有某種更能引起人們注意提起警覺的報警信號產生,這種報警信號通常有三種類型:閃光報警、鳴音報警、語音報警,本系統(tǒng)采用簡單易行的壓電式蜂鳴器報警電路。,報警設備選用壓電式蜂鳴器,它約需要10mA的驅動電流,只需在其兩條引線上加3一15V的直流電壓,即可產生3KHz左右的蜂鳴聲音,圖中蜂鳴器的一端接在高電平+5V,,當需要報警時,程序對其端口清零即可,聲音的長短可用延時程序控制實現(xiàn)。 報警電路第4章 系統(tǒng)軟件的設計超聲波測距儀的軟件設計主要有主程序、超聲波發(fā)生程序、超聲波接收中斷程序及顯示子程序組成。我們知道C語言程序有利于實現(xiàn)較復雜的算法,匯編語言程序則具有較高的效率且容易精細計算程序運行的時間,而超聲波測距儀的程序需要有較復雜的計算(計算距離時),所以控制程序可采用C語言編程。 超聲波測距儀的算法設計超聲波測距的原理為超聲波發(fā)生器T在某一時刻發(fā)出一個超聲波信號,當這個超聲波遇到被測物體后反射回來,就被超聲波接收器R所接收到。這樣只要計算出從發(fā)出超聲波信號到接收到返回信號所用的時間,就可算出超聲波發(fā)生器與反射物體的距離。距離的計算公式為: (41)其中,d為被測物與測距儀的距離,s為聲波的來回的路程,c為聲速,t為聲波來回所用的時間。在啟動發(fā)射電路的同時啟動單片機內部的定時器T0,利用定時器的計數(shù)功能記錄超聲波發(fā)射的時間和收到反射波的時間。當收到超聲波反射波時,接收電路輸出端產生一個負跳變,在INT0或INT1端產生一個中斷請求信號,單片機響應外部中斷請求,執(zhí)行外部中斷服務子程序,讀取時間差,計算距離。 主程序流程圖C語言是一種結構化的程序設計語言,它的特點就是可以盡量減少你對硬件進行操作,具有很強的結構性、功能性和可移植性,常常被用來作為單片機系統(tǒng)的編程語言。但是用于單片機的C語言和標準C語言區(qū)別很大。如何結合單片機的系統(tǒng)資源,用C語言開發(fā)符合實際工程需要的單片機系統(tǒng),對編程者來說具有十分重要的意義。用C編寫程序比匯編更符合人們的思考習慣,開發(fā)者可以擺脫與硬件無必要的接觸,更專心的考慮功能和算法而不是考慮一些細節(jié)問題,這樣就減少了開發(fā)和調試的時間。C語言具有良好的程序結構,適用于模塊化程序設計,因此采用C語言設計單片機應用系統(tǒng)程序時,首先要盡可能地采用結構化的程序設計方法,將功能模塊化,由不同的模塊完成不同的功能,這樣可使整個應用系統(tǒng)程序結構清晰,易于調試和維護。不同的功能模塊,分別指定相應的入口參數(shù)和出口參數(shù),對于一些要重復調用的程序一般把其編成函數(shù),這樣可以減少程序代碼的長度,又便于整個程序的管理,還可增強可讀性和移植性。應用C語言的優(yōu)越性: (1)不懂得單片機的指令集,也能夠編寫完美的單片機程序;(2)無須懂得單片機的具體硬件,也能夠編出符合硬件實際的專業(yè)水平的程序;(3)不同函數(shù)的數(shù)據(jù)實行覆蓋,有效利用片上有限的RAM空間;(4)程序具有堅固性: 數(shù)據(jù)被破壞是導致程序運行異常的重要因素。C語言對數(shù)據(jù)進行了許多專業(yè)性的處理,避免了運行中間非異步的破壞;(5)C語言提供復雜的數(shù)據(jù)類型 (數(shù)組、結構、聯(lián)合、枚舉、指針等),極大地增強了程序處理能力和靈活性;(6)中斷服務程序的現(xiàn)場保護和恢復,中斷向量表的填寫,是直接與單片機相關的,都由C編譯器代辦;(7)提供常用的標準函數(shù)庫,以供用戶直接使用;(8)頭文件中定義宏、說明復雜數(shù)據(jù)類型和函數(shù)原型,有利于程序的移植和支持單片機的系列化產品的開發(fā);(9)有嚴格的句法檢查,錯誤很少,可容易地在高級語言的水平上很快被排除。定時控制部件起著控制器作用,由定時控制邏輯、指令寄存器(IR)和振蕩器(OSC)等電路組成。指令寄存器(IR)用于存放從程序存儲器中取出的指令碼,定時控制邏輯用于對IR中指令碼譯碼,并在OSC配合下產生指令的時序脈沖,以完成相應指令的執(zhí)行[18]。定時控制部件起著控制器作用,由定時控制邏輯、指令寄存器(IR)和振蕩器(OSC)等電路組成。指令寄存器(IR)用于存放從程序存儲器中取出的指令碼,定時控制邏輯用于對IR中指令碼譯碼,并在OSC配合下產生指令的時序脈沖,以完成相應指令的執(zhí)行。 OSC是控制器的心臟,能為控制器提供時鐘脈沖。引腳XTAL1為反向放大管Q4的輸入端,XTAL2為Q2的輸出端。只要在引腳XTAL1與XTAL2上外接定時反饋回路,OSC振蕩器產生矩形時鐘脈沖序列,其頻率是單片機的重要性能指標之一。時鐘頻率越高,單片機控制器的控制節(jié)拍就越快,運算速度也就越快。而且也決定著系統(tǒng)時鐘和定時器時鐘與頻率。計算機中的中斷是指CPU暫停原程序執(zhí)行轉而為外部設備服務,并在服務完后回到原程序執(zhí)行的過程。中斷系統(tǒng)是指能夠處理上述中斷過程所需要的那部分電路。 CIP51 包含一個擴展的中斷系統(tǒng),支持20 個中斷源,每個中斷源有兩個優(yōu)先級。中斷源在片內外設與外部輸入引腳之間的分配隨器件的不同而變化。每個中斷源可以在一個SFR 中有一個或多個中斷標志。當一個外設或外部源滿足有效的中斷條件時,相應的中斷標志被置為邏輯‘1’。 如果中斷被允許,在中斷標志被置位時將產生中斷。一旦當前指令執(zhí)行完,CPU 產生一個LCALL到一個預定地址,開始執(zhí)行中斷服務程序(ISR)。每個ISR 必須以RETI 指令結束,使程序回到中斷前執(zhí)行完的那條指令的下一條指令。如果中斷未被允許,中斷標志將被硬件忽略,程序繼續(xù)正常執(zhí)行。中斷標志置1 與否不受中斷允許/禁止狀態(tài)的影響。 每個中斷源都可以用一個SFR (IEEIE2)中的相關中斷允許位允許或禁止,但是必須首先置‘1’EA 位()以保證每個單獨的中斷允許位有效。不管每個中斷允許位的設置如何,清‘0’EA 位將禁止所有中斷。 注:任何清除EA 位的指令后面應立即跟隨一條具有2 或多字節(jié)操作碼的指令。例如: // 在‘C’語言程序中: EA = 0 。 // 清除EA 位 EA = 0 。 // … 跟隨一條2 字接操作碼的指令 // 在匯編語言程序中: CLR EA 。 清除EA 位 CLR EA 。 … 跟隨一條2 字接操作碼的指令 如果在“CLR EA”操作碼(或任何清除EA 位的指令)的執(zhí)行期間產生了一個中斷,并且該指令的后面是一條單周期指令,則中斷可能被響應。但是在中斷服務程序中讀EA 位時將返回‘0’值。當“CLR EA”操作碼后面是一條多周期指令時,則中斷不會被響應。 某些中斷標志在CPU 進入ISR 時被自動清除。但大多數(shù)中斷標志不是由硬件清除的,必須在 ISR 返回前用軟件清除。如果一個中斷標志在CPU 執(zhí)行完中斷返回(RETI)指令后仍然保持置位狀態(tài),則會立即產生一個新的中斷請求,CPU 將在執(zhí)行完下一條指令后重新進入該ISR。 (1) MCU 中斷源和中斷向量 MCU 支持20 個中斷源。軟件可以通過將任何一個中斷標志設置為邏輯‘1’來模擬一個中斷。如果中斷標志被允許,系統(tǒng)將產生一個中斷請求,CPU 將轉向與該中斷標志對應的ISR 地址。 中斷源、對應的向量地址、優(yōu)先級和控制位一覽表。(2) 外部中斷 兩個外部中斷源(/INT0和/INT1)可被配置為低電平觸發(fā)或下降沿觸發(fā)輸入,由 IT0( IT1()的設置決定。IE0()和 IE1()分別為外部中斷/INT0 和/INT1的中斷標志。如果/INT0 或/INT1 外部中斷被配置為邊沿觸發(fā),CPU 在轉向 ISR 時將自動清除相應的中斷標志。當被配置為電平觸發(fā)時,中斷標志將跟隨外部中斷輸入引腳的狀態(tài),外部中斷源必須一直保持輸入有效直到中斷請求被響應。在 ISR返回前必須使該中斷請求無效,否則將產生另一個中斷請求。中斷優(yōu)先級 每個中斷源都可以被獨立地編程為兩個優(yōu)先級中的一個:低優(yōu)先級或高優(yōu)先級。一個低優(yōu)先級的中斷服務程序可以被高優(yōu)先級的中斷所中斷,但高優(yōu)先級的中斷不能被中斷。每個中斷在 SFR(IPEIP2)中都有一個配置其優(yōu)先級的中斷優(yōu)先級設置位,缺省值為低優(yōu)先級。如果兩個中斷同時發(fā)生,具有高優(yōu)先級的中斷先得到服務。如果這兩個中斷的優(yōu)先級相同,則由固定的優(yōu)先級順序決定哪一個先得到服務 。 中斷響應時間 中斷響應時間取決于中斷發(fā)生時 CPU的狀態(tài)。 中斷系統(tǒng)在每個系統(tǒng)時鐘周期對中斷標志采樣并對優(yōu)先級譯碼。最快的響應時間為 5個系統(tǒng)時鐘周期:一個周期用于檢測中斷,4個周期完成對 ISR的長調用(LCALL) 。如果中斷標志有效時 CPU 正在執(zhí)行 RETI 指令,則需要再執(zhí)行一條指令才能進入中斷服務程序。因此,最長的中斷響應時間(沒有其它中斷正被服務或新中斷具有較高優(yōu)先級)發(fā)生在 CPU 正在執(zhí)行 RETI指令,而下一條指令是 DIV 的情況。在這種情況下,響應時間為 18 個系統(tǒng)時鐘周期:一個時鐘周期用于檢測中斷,5 個周期執(zhí)行RETI,8個周期執(zhí)行DIV 指令,4個周期完成對 ISR的長調用(LCALL) 。如果CPU正在執(zhí)行一個具有相同或更高優(yōu)先級的中斷的 ISR,則新中斷要等到當前ISR 執(zhí)行完(包括 RETI和下一條指令)才能得到服務。 系統(tǒng)軟件設計框圖根據(jù)以上所述系統(tǒng)硬件設計和所完成功能,系統(tǒng)軟件需要實現(xiàn)以下功能:在系統(tǒng)硬件中,己經完成了超聲波發(fā)射驅動電路、回波檢測電路的設計。在系統(tǒng)軟件中,要完成發(fā)射脈沖信號、采集回波信號。為了得到發(fā)射信號與接收回波間的時間差,要讀出此刻計數(shù)器的計數(shù)值,然后存儲在RAM中,而且每次發(fā)射周期的開始,需要對計數(shù)器清零。RAM中存儲的計數(shù)值并不能作為距離值直接顯示輸出,因為計數(shù)值為十六進制數(shù),先要將十六進制數(shù)轉換為十進制數(shù),然后根據(jù)計數(shù)值與實際距離的轉換公式計算出距離值。軟件分為兩部分,主程序和中斷服務程序。, 所示。主程序完成初始化工作。 開始程序初始化定時中斷子程序收到回波結束是否外部中斷子程序 主程序流程圖定時中斷服務子程序完成超聲波的發(fā)射和接收,外部中斷服務子程序主要完成時間值的讀取、距離計算、結果的輸出等工作。, 外部中斷入口關外部中斷讀取時間值計算距離輸出結果開外部中斷結束發(fā)射完否否是發(fā)射超聲波定時器初始化停止發(fā)射定時中斷入口結束 圖 定時服務子程序 外部中斷服務子程序 單片機的C程序設計1 編譯環(huán)境使用C 語言肯定要使用到C 編譯器,以便把寫好的C 程序編譯為機器碼,這樣單片機才能執(zhí)行編寫好的程序。KEIL uVISION3 是眾多單片機應用開發(fā)軟件中優(yōu)秀的軟件之一,它支持眾多不同公司的MCS51 架構的芯片,它集編輯,編譯,仿真等于一體,同時還支持,PLM,匯編和C 語言的程序設計,它的界面和常用的微軟VC++的界面相似,界面友好,易學易用,在調試程序,軟件仿真方面也有很強大的功能。因此很多開發(fā)51 應用的工程師或普通的單片機愛好者,都對它十分喜歡。2 C程序//超聲波液位計程序清單://晶振=12MHz//MCU=AT89C51////Trig = P1^0//Echo = P3^2include //包括一個51標準內核的頭文件define uchar unsigned char //定義一下方便使用define uint unsigned intdefine ulong unsigned long//***********************************************sfr CLK_DIV = 0x97。 //為AT單片機定義,系統(tǒng)時鐘分頻 //為AT單片機的IO口設置地址定義sfr P0M1 = 0X93。sfr P0M0 = 0X94。sfr P1M1 = 0X91。sfr P1M0 = 0X92。sfr P2M1 = 0X95。sfr P2M0 = 0X96。//***********************************************sbit Trig = P1^0。 //產生脈沖引腳sbit Echo = P3^2。 //回波引腳sbit test = P1^1。 //測試用引腳uchar code SEG7[10]={0xC0,0xF9,0xA4,0xB0,0x99,0x92,0x82,0xF8,0x80,0x90}。//數(shù)碼管09uint distance[4]。
點擊復制文檔內容
數(shù)學相關推薦
文庫吧 www.dybbs8.com
備案圖鄂ICP備17016276號-1