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

正文內容

基于at89s52單片機的光電開關測速系統(tǒng)設計畢業(yè)論文(編輯修改稿)

2025-07-19 01:10 本頁面
 

【文章內容簡介】 前計算機的系統(tǒng)軟件主要是用匯編語言編寫的,對于單片機應用系統(tǒng)來說更是如此。由于匯編語言程序的可讀性和可移植性都較差,采用匯編語言編寫單片機應用程序的周期長,而且調試和排錯也比較困難。C語言具有很好的可移植性和硬件控制能力,表達和運算能力也較強。它具有以下特點:1. 語言簡潔,使用方便靈活。2. 可移植性好。3. 表達能力強。4. 表達方式靈活。5. 可進行架構化程序設計。6. 可以直接操作計算機硬件。7. 生成的目標代碼質量高。為了提高編制計算機系統(tǒng)和應用程序的效率,改善程序的可讀性和可移植性,在此采用高級語言編程[16]。 程序設計流程圖本系統(tǒng)用計數(shù)程序采集信號脈沖,用定時器產生中斷,對數(shù)碼管刷新和緩沖區(qū)數(shù)據(jù)進行更新,輔以數(shù)碼管進行顯示。;。開始初始化計數(shù)器T1計數(shù)脈沖按公式:轉速=60*脈沖數(shù)/(齒輪數(shù)*T)計算數(shù)據(jù)Flag_clac=1?數(shù)據(jù)緩沖區(qū) N Y 更新數(shù)據(jù) 脈沖計數(shù)程序流程圖程序說明:將定時器設置為方式1,對外部脈沖進行計數(shù),并判斷Flag_clac的值。當Flag_calc=1時,將脈沖的數(shù)值由十六進制轉換成十進制,按轉速轉換公式轉換后,載入數(shù)據(jù)緩沖區(qū)。初始化定時10ms?T=500?Flag_clac=1數(shù)據(jù)緩沖區(qū)顯示時間計數(shù)清零T=0產生定時中斷開始時間計數(shù)T++ 更新數(shù)據(jù) N Y N Y 定時顯示程序流程圖程序說明:定時器設置為方式1,定時10ms。當定時達到10ms時,產生中斷,對數(shù)碼管進行刷新,顯示轉速,并使時間計數(shù)標志T加1。當時間計數(shù)標志T=500時,使Flag_calc置1,取出計數(shù)器在此時間內計算的脈沖數(shù),通過轉速計算程序計算得出轉速值后,存入數(shù)據(jù)緩沖區(qū),供數(shù)碼管顯示使用。 原程序代碼 采用MCS—52C語言編寫源程序:include define uchar unsigned chardefine uint unsigned intdefine ulong unsigned longdefine LED_DAT P1sbit pin_SpeedSenser = P3^5。 //光電傳感器信號接在T1上define TIME_CYLC 500//12M晶振,定時器10ms 中斷一次 我們5秒計算一次轉速 // define PLUS_PER 10 //碼盤的齒數(shù) ,這里假定碼盤上有10個齒,即傳感器檢測到10個脈沖,認為1圈unsigned char code table[]= {0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f}。uchar data Disbuf[4]。// 顯示緩沖區(qū)uint Tcounter = 0。 //時間計數(shù)器bit Flag_Fresh = 0。 // 刷新標志bit Flag_clac = 0。 //計算轉速標志//在數(shù)碼管上顯示一個四位數(shù)void DisplayFresh()。//計算轉速,并把結果放入數(shù)碼管緩沖區(qū)void ClacSpeed()。//初始化定時器T0void init_timer0()。//初始化定時器T1void init_timer1()。//延時函數(shù)void Delay(uint ms)。void it_timer0() interrupt 1 /* interrupt address is 0x000b */{TF0 = 0。 //d定時器 T0用于數(shù)碼管的動態(tài)刷新 //TH0 = 0xC0。 /* init values */TL0 = 0x00。Flag_Fresh = 1。Tcounter++。if(TcounterTIME_CYLC){ Flag_clac = 1。//周期到,該重新計算轉速了}}void main(void){Disbuf[0] = 0。 //開機時,初始化為0000Disbuf[1] = 0。Disbuf[2] = 0。Disbuf[3] = 0。 init_timer0()。init_timer1()。while(1){ DisplayFresh()。 // 定時刷新數(shù)碼管顯示 if(Flag_clac) { Flag_clac = 0。 ClacSpeed()。 //計算轉速,并把結果放入數(shù)碼管緩沖區(qū) Tcounter = 0。//周期定時 清零 TH1=TL1 = 0x00。//脈沖計數(shù)清零 }}}//在數(shù)碼管上顯示一個四位數(shù)void DisplayFresh(){P2=P2amp。0x7f。LED_DAT = table[Disbuf[0]]。Delay(1)。P2=P2|0xf0。P2=P2amp。0xbf。 LED_DAT = table[Disbuf[1]]。Delay(1)。 P2=P2|0xf0。 P2=P2amp。0xdf。 LED_DAT = table[Disbuf[2]]。Delay(1)。 P2=P2|0xf0。 P2=P2amp。0xef。LED_DAT = table[Disbuf[3]]。Delay(1)。 P2=P2|0xf0。}//計算轉速,并把結果放入數(shù)碼管緩沖區(qū)void ClacSpeed(){uint speed 。uint PlusCounter。PlusCounter = TH1*256 + TL1。speed = 60*PlusCounter/(PLUS_PER*5)。//據(jù)公式計數(shù)轉速 Disbuf[0] = (speed/1000)%10。Disbuf[1] = (speed/100)%10。Disbuf[2] = (speed/10)%10。Disbuf[3] = speed%10。}//初始化定時器T0void init_timer0(){TMOD amp。= 0xf0。 //定時10毫秒 /* Timer 0 mode 1 with software gate */TMOD |= 0x01。 /* GATE0=0。 C/T0=0。 M10=0。 M00=1。 */TH0 = 0xC0。 /* init values */TL0 = 0x00。ET0=1。 /* enable timer0 interrupt */EA=1。 /* enable interrupts */TR0=1。 /* timer0 run */}//延時函數(shù)void Delay(uint ms){uchar i。while(ms) for(i=0。i100。i++)。}//初始化定時器T1void init_timer1(){TMOD amp。= 0x0F。 /* Counter 1 mode 1 with software gate */TMOD |= 0x50。 /* GATE0=0。 C/T0=1。 M10=0。 M00=1。 */TH1 = 0x00。 /* init values */TL1 = 0x00。ET1=1。 /* enable timer1 interrupt */EA=1。 /* enable interrupts */TR1=1。 /* timer1 run */}第5章 系統(tǒng)仿真與電路實現(xiàn) 系統(tǒng)仿真系統(tǒng)結合Keil ,通過Proteus來仿真。 程序編譯與以往的80C51單片機不同,AT89S52具有在線調試和下載功能,它由支持AT89S52的開發(fā)工具包Keil 。也就是說,在用戶系統(tǒng)保留AT89S52的情況下,通過開發(fā)系統(tǒng)與AT89S52的串行接口通信,直接對用戶系統(tǒng)進行調試,并在調試完成后將調試好的程序下載到AT89S52中。Keil :編譯、下載、調試和模擬,分別由Keil 、在線串行下載器、調試器和模擬器來實現(xiàn)。Keil ,編譯C語言源程序,并生成16進制文件和列表文件。調試器采用Windows系統(tǒng),允許用戶使用AT89S52的UART串行接口在芯片上調試代碼執(zhí)行。在典型調試對話中,調試器提供對片內所有外圍設備的訪問、單步和設置斷點的代碼執(zhí)行控制方式。模擬器采用Windows系統(tǒng),能完全模擬AT89S52的所有功能。模擬器使用簡單,結合了許多標準調試特征,包括多斷點、單步以及代碼執(zhí)行跟蹤等能力[17]。同樣偉福仿真器是國內較好的仿真器之一,它能夠仿真的CPU品種多、功能強。通過更換仿真頭POD,可以對不同的CPU進行仿真??煞抡?1系列,196系列,PIC系列,飛利蒲公司的55LPC76DALLAS320,華邦438等51增強型CPU。由于偉福編譯過程沒有Keil ,能對程序進行直接編譯,省去了建立和設置工程等步驟,使用方便、快捷。所以本設計以Keil ,運用偉福來編譯程序。 電路仿真仿真部分運用Proteus仿真軟件來實現(xiàn),Proteus 軟件是一款強大的單片機仿真軟件,它除了具有和其他工具一樣的原理編輯、印制電路板(PCB)自動或人工布線及電路仿真外,最大的特色是其電路仿真是交互的、可視化的。對于單片機學習和開發(fā)幫助極大。Proteus ISIS 是英國Lab center 公司開發(fā)的電路分析與實物仿真軟件。它運行于Windows操作系統(tǒng)上,可以仿真、分析(SPICE)各種模擬器件和數(shù)字集成電路,包括單片機[18]。通過Proteus可以繪制硬件原理圖,并設置元件參數(shù);為單片機及其程序以及外部接口電路的仿真提供可能,驗證設計的可行性與合理性;還可以為連接實際的硬件電路做好準備;如有必要時,可以利用它來設計電路板。如下圖所示,圖中用方波發(fā)生器模擬光電開關產生脈沖(約1s產生一個脈沖),由單片機控制T1進行計數(shù),同時定時器T0每10ms產生中斷對數(shù)碼管進行刷新,當中斷500次(即5s)后,對計數(shù)脈沖進行計算處理,得出轉速,并用數(shù)碼管顯示。仿真結果為4r/min,符合設計要求,可按此仿真電路指導實際硬件電路的搭建。 系統(tǒng)仿真圖 電路實現(xiàn)通過葉片在對射式傳感器間轉動,得到光電開關產生脈沖信號,再經過脈沖信號處理電路,輸入單片機的T1外部脈沖計數(shù)口(),由單片機處理得出轉速后,連接4連數(shù)碼管顯示轉速。 實物連接圖 實際測量結果結 論本設計采用光電開關測速法,利用對射式光電開關采集轉速信號,通過信號處理電路得到適合的脈沖后,輸入單片機進行處理、計算,得出實際的轉速值,輔以數(shù)碼管顯示。此系統(tǒng)實現(xiàn)了設計的要求:(1)光電開關與電機轉換平臺簡單適用(2)采集電路能實時采集轉速信息(3)單片機處理系統(tǒng)運算快速簡單,程序可讀性強,條理分明,能形成獨立模塊以便于其他類似系統(tǒng)的計算(4)數(shù)碼管為主體的人機界面能準確顯示速度值存在的問題:(1)系統(tǒng)選擇位數(shù)最多的定時/計數(shù)器工作方式1(為16位),但仍有其局限性。此計數(shù)器的最大計數(shù)脈沖數(shù)為63336(216),若每秒鐘計算一次,則當1秒內外部脈沖的輸入數(shù)超過65536個時,計數(shù)器會溢出,從而產生中斷,使得測出的轉速值小于實際的轉速值。根據(jù)轉速計算方法(若轉盤齒數(shù)為10),Vmax=65536*60s/(10*1)=39321r/min,所以本系統(tǒng)不能測量范圍不能超過此值。(2)通過T1計數(shù)時,單片機每讀取一個脈沖至少需要3個機器周期的時間來完成。本系統(tǒng)采用的晶振為12MHz,所以一個機器周期Tcy=12/f=1us。若要使單片機準確讀取外部脈沖,則脈沖的輸入周期不能超過3us。如此可計算(轉盤齒數(shù)為10),系統(tǒng)能測量的轉速需低于:Vmax=60s/(3us*10)=6000000r/m
點擊復制文檔內容
范文總結相關推薦
文庫吧 www.dybbs8.com
備案圖片鄂ICP備17016276號-1