畢業(yè)論文-智能轉速測量系統(tǒng)的軟件設計_第1頁
已閱讀1頁,還剩35頁未讀, 繼續(xù)免費閱讀

下載本文檔

版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領

文檔簡介

1、<p>  本業(yè)科畢設計(論文)</p><p>  題目:智能轉速測量系統(tǒng)的軟件設計</p><p>  院 (系): 光電工程學院 </p><p>  專 業(yè): </p><p>  班 級: </p><p>

2、  學 生: </p><p>  學 號: </p><p>  指導教師: </p><p>  智能轉速測量系統(tǒng)的軟件設計</p><p><b>  摘 要</b></p><

3、;p>  轉速是工程中應用非常廣泛的一個參數,其測量方法較多,隨著單片機對脈沖數字信號的處理能力越來越強大,使得全數字量系統(tǒng)越來越普及,并且使轉速測量系統(tǒng)也可以用全數字化處理。</p><p>  本文在對了解轉速測量理論與掌握單片機原理的基礎上,根據硬件設計,提出系統(tǒng)程序設計方案,構建軟件系統(tǒng),以實現智能轉速測量與顯示的功能。</p><p>  本設計根據基于AT89C51單片機

4、的測速測量電路,設計出轉速測量軟件系統(tǒng),此系統(tǒng)包含系統(tǒng)初始化程序的設計、鍵盤掃描程序的設計、數據接收和處理程序的設計、顯示程序的設計四個模塊。對所設計的軟件系統(tǒng)通過μVision3軟件對其進行程序調試。最后,對構建的系統(tǒng)利用設計的電路進行調試,對測量指標進行了分析、比較并提出改進方案。在設計中測量方法采用M法進行測量,編譯語言采用C語言進行編譯。</p><p>  本課題完成了軟件系統(tǒng)的設計,實現了智能轉速系統(tǒng)

5、的轉速計算、顯示功能,同時實現鍵盤的開始/停止功能,完成了設計的要求。</p><p>  關鍵詞:單片機 轉速測量 軟件設計</p><p>  Intelligent rotational speed measurement system of software design</p><p><b>  Abstract</b></p

6、><p>  Rotational speed is the engineering of a very wide range of parameters, its measurement more, with the SCM digital signal on the pulse of more and more powerful processing capability, making the volume o

7、f all-digital system is becoming increasingly popular, and so rotational speed measurement system can be used to deal with all-digital.</p><p>  In this paper, the understanding of the theory and master rota

8、tional speed measurement based on the principle of SCM, the system program design, to build software systems, compiler, in order to achieve intelligent Rotational speed measurement and display functions. In this pap

9、er, accroding to the tachometric survey system based on the SCM of AT89C51, I designed the software part of it. This system includes four module: the initializer code design, the keyboard scanning code design, the data&l

10、t;/p><p>  The design of software system of this project is completed. The function of calculating and displaying the speed of rotation and the beginning and stoping of keyboard are finished. Finally I achevi

11、e the requirment of design. </p><p>  Key words: SCM tachometric survey Software Design</p><p><b>  目錄</b></p><p><b>  中文摘要I</b></p><p><b

12、>  英文摘要II</b></p><p><b>  1 緒論1</b></p><p>  1.1課題研究目的和意義1</p><p>  1.2轉速測量在國內外研究情況1</p><p>  1.3主要內容和存在的問題2</p><p>  1.3.1研究的主要

13、內容2</p><p>  1.3.2需解決的問題2</p><p>  2 基于單片機的轉速測量方法及原理3</p><p>  2.1單片機測量轉速的方法3</p><p>  2.2轉速測量原理4</p><p>  2.2.1測周期法“T法”4</p><p>  2.2.

14、2測頻法“M法”4</p><p>  2.2.3測頻測周法M/T法5</p><p>  3 智能轉速測量系統(tǒng)的硬件結構7</p><p>  3.1系統(tǒng)的硬件結構7</p><p>  3.2硬件電路中主要部件的介紹9</p><p>  4 智能轉速測量系統(tǒng)的軟件設計11</p>&

15、lt;p>  4.1單片機C51的介紹11</p><p>  4.1.1單片機C語言與匯編語言11</p><p>  4.1.2 C51對標準C語言的擴展12</p><p>  4.2程序設計12</p><p>  4.2.1工作方式及控制字設置12</p><p>  4.2.2變量分配及程序

16、的初始化14</p><p>  4.2.3顯示功能的實現15</p><p>  4.2.4鍵盤的功能的實現與設計17</p><p>  4.3系統(tǒng)流程17</p><p>  5 程序調試及固化18</p><p>  5.1單片機開發(fā)平臺簡介18</p><p>  5.2

17、本系統(tǒng)開發(fā)平臺18</p><p>  5.2.1keil C51軟件集成開發(fā)環(huán)境18</p><p>  5.2.2程序調試18</p><p><b>  6 結論22</b></p><p>  6.1主要研究結論22</p><p>  6.2研究展望23</p>

18、<p><b>  參考文獻24</b></p><p><b>  致 謝26</b></p><p>  附錄 1 電路圖29</p><p>  附錄 2 源程序30</p><p><b>  1 緒論</b></p><p

19、>  1.1課題研究目的和意義</p><p>  隨著超大規(guī)模集成電路技術提高,尤其是單片機應用技術以其功能強大,價格低廉的顯著特點,使全數字化測量轉速系統(tǒng)得以廣泛應用。由于單片機在測量轉速方面具有體積小、性能強、成本低的特點,越來越受到企業(yè)用戶的青睞。轉速是工程中應用非常廣泛的一個參數,其測量方法較多,而模擬量的采集和模擬處理一直是轉速測量的主要方法,這種測量方技術已不能適應現代科技發(fā)展的要求,在測量范

20、圍和測量精度上,已不能滿足大多數系統(tǒng)的使用。隨著大規(guī)模及超大規(guī)模集成電路技術的發(fā)展,數字系統(tǒng)測量得到普遍應用,特別是單片機對脈沖數字信號的強大處理能力,使得全數字量系統(tǒng)越來越普及,其轉速測量系統(tǒng)也可以用全數字化處理。在測量范圍和測量精度方面都有極大的提高。</p><p>  常用的檢測方法有機械式,光電式,霍爾式,頻閃法,高壓油管應變法等,本課題主要是針對智能轉速測量系統(tǒng)的軟件系統(tǒng)的設計。運用51系列單片機設計

21、一種全數字化測速系統(tǒng),從提高測量精度的角度出發(fā),分析討論其產生誤差的可能原因。同時從實際硬件電路出發(fā),分析電路的工作原理,根據仿真情況提出修改方案和解決辦法。</p><p>  本課題以單片機為核心,設計的全數字化測量轉速系統(tǒng),在工業(yè)控制和民用電器中都有較高使用價值。一方面它可以應用于工業(yè)控制中的某一部分,如數控車床的電機轉速檢測和控制、水泵流量控制以及需要利用轉速檢測來進行控制的許多場合,如車輛的里程表、車速

22、表等。另一方面由于該轉速測量系統(tǒng)采用全數字結構,因而可以很方便的和工業(yè)控制機進行連接,實行遠程管理和控制,進一步提高現代化水平。并且,幾乎不需做很大改變就能直接作為單獨的產品使用??傊?,轉速測量系統(tǒng)的研究是一件非常有意義的課題[1]。 </p><p>  1.2轉速測量在國內外研究情況</p><p>  轉速是能源設備與動力機械性能測試中的一個重要的特性參量,因為動力機械的許多特性參數

23、是根據它們與轉速的函數關系來確定的,例如壓縮機的排氣量、軸功率、內燃機的輸出功率等等,而且動力機械的振動、管道氣流脈動、各種工作零件的磨損狀態(tài)等都與轉速密切相關。</p><p>  轉速測量的方法很多,測量儀表的型式也多種多樣,其使用條件和測量精度也各不相同。根據轉速測量的工作方式可分為兩大類:接觸式轉速測量儀表與非接觸式轉速測量儀表。前者在使用時必須與被測轉軸直接接觸,如離心式轉速表、磁性轉速表與測速發(fā)電機等

24、;后者在使用時不需要與被測轉軸接觸,如光電式轉速表、電子數字式轉速表、閃光測速儀等。測量發(fā)動機轉速的傳統(tǒng)方法是使用光</p><p>  電式轉速表測量。用這種方法測量時,既要在發(fā)動機轉動軸上粘貼光標紙,又要求測量人員把轉速表與光標紙的距離控制在很近的范圍,測量十分不方便。隨著科學技術的迅速發(fā)展,轉速測量儀表已步入現代化、電子化的行列。過去曾經使用過的接觸式測量儀表, 如離心式轉速表、磁性轉速表、微型發(fā)電機轉速表

25、及鐘表是定時轉速表,均已先后受到冷落;而利用已知頻率的閃光與被測軸轉速同步的方法來測速的閃光測速儀,雖屬非接觸式儀表,目前仍有應用,但也退居次要地位。代之而起的是非接觸式的電子與數字化的測速儀表。這類轉速儀表大多具有體積小、重量輕、讀數準確、使用方便等優(yōu)點,容易實現電腦熒屏顯示和打印輸出,能夠連續(xù)的反映轉速變化,既能測定發(fā)動機穩(wěn)定情況下的平均轉速,也能夠用來在足夠小的時間間隔這一特定條件下測定發(fā)動機的瞬時轉速。</p>&

26、lt;p>  轉速測量的應用系統(tǒng)在工業(yè)生產、科技教育、民用電器等各領域的應用極為廣泛,往往成為某一產品或控制系統(tǒng)的核心部分,其各種參數在不同的應用中有其側重,但轉速測量系統(tǒng)作為普遍的應用在國民經濟發(fā)展中,有重要的意義[2]。</p><p>  1.3主要內容和存在的問題</p><p>  1.3.1研究的主要內容</p><p>  1.詳細分析轉速的測量

27、理論,對轉速的周期測量法“T”法、頻率測量法“M”法以及周期頻率“M/T”測量法,三種具體測量方法的轉速計算、各自的測量精度和誤差進行闡述。定性地比較三種方法所針對的轉速特征,分析高、中、低轉速情況下各自的適用狀況,從而,在保持一定的測量精度情況下,應用“M”法,說明轉速測量原理[3]。</p><p>  2.根據單片機硬件系統(tǒng)的設計,構建軟件系統(tǒng),分別對硬件系統(tǒng)的配置予以估計,使其能夠對轉速進行測量。同時分析

28、接口電路,顯示轉速。</p><p>  3.對單片機定時/計數器進行設置,設計和說明定時/計數器在“M”法測量中的作用和使用方法,討論測量精度的問題。</p><p>  4.根據系統(tǒng)要求設置各控制字,用A51匯編語言編制程序,包括主程序流程,顯示中斷程序流程。并用軟件的方法對計數和定時進行同步,力求在不增加硬件的條件下,使同步達到滿意的效果。</p><p> 

29、 5.利用Keil51軟件的μVision3集成環(huán)境對系統(tǒng)對工作軟件進行編譯、調試和仿真。</p><p>  1.3.2需解決的問題</p><p>  1.單片機在系統(tǒng)運行過程中,中斷設置問題;</p><p>  2.轉速測量及LED顯示的實現;</p><p>  3.鍵盤功能的實現;</p><p><

30、b>  4.軟件的調試。</b></p><p>  2 基于單片機的轉速測量方法及原理</p><p>  2.1單片機測量轉速的方法</p><p>  轉速是工程中應用非常廣泛的一個參數,早期模擬量的模擬處理一直是作為轉速測量的主要方法,這種測量方法在測量范圍和測量精度上,已不能適應現代科技發(fā)展的要求。而隨著大規(guī)模及超大規(guī)模集成電路技術的發(fā)

31、展,數字測量系統(tǒng)得到普遍應用,利用單片機對脈沖數字信號的強大處理能力,應用全數字化的結構,使數字測量系統(tǒng)的越來越普及。在測量范圍和測量精度方面都有極大的提高。下面對測量系統(tǒng)進行探討。</p><p>  一般轉速測量系統(tǒng)有以下幾個部分構成,轉速測量框圖如圖2.1所示。</p><p>  圖2.1 轉速測量框圖</p><p><b>  1.轉速信號拾取

32、</b></p><p>  轉速信號拾取是整個系統(tǒng)的前端通道,目的是將外界的非電參量,通過一定方式轉換成電量,這一環(huán)節(jié)可以通過敏感元件、傳感器或測量儀表等來實現。</p><p><b>  2.整形和倍頻</b></p><p>  前向通道中,將傳感器輸出的信號轉換成計算機輸入要求的信號。</p><p&g

33、t;<b>  3.單片機</b></p><p>  單片機是整個測量系統(tǒng)的主要部分,擔負對前端脈沖信號的處理、計算、以及信號的同步,計時等任務,其次,將測量的數據經計算后,將得到的轉速值傳送到顯示接口中,用數碼管顯示數值。在本系統(tǒng)中考慮到計數的范圍、使用的定時/計數器的個數及I/O口線,選用AT89C51單片機。</p><p><b>  4.驅動和顯

34、示</b></p><p>  由于LED數碼管具有亮度高、可靠性好等特點,工業(yè)測控系統(tǒng)中常用LED數碼管作為顯示輸出。本系統(tǒng)也采用數碼管作顯示。</p><p><b>  2.2轉速測量原理</b></p><p>  2.2.1測周期法“T法”</p><p>  轉速可以用兩脈沖產生的間隔寬度TP來決

35、定。用以采集數據的碼盤,可以是單孔或多孔,對于單孔碼盤測量兩次脈沖間的時間,就可測出轉述數據,TP也可以用時鐘脈沖數來表示。對于多孔碼盤,其測量的時間只是每轉的1/N,N為碼盤孔數。如圖2.2“T”法脈寬測量所示。</p><p>  TP通過定時器測得。定時器對時基脈沖(頻率為fc)進行計數定時,在TP內計數值若為m2,則 </p><p>  計算公式為:

36、 n=60/PTp (2.1)</p><p><b>  即:</b></p><p>  n=60fc/Pm2 (2.2)</p><p>  P-為轉軸轉一周脈沖發(fā)生器產生的脈沖數;<

37、/p><p>  fc-為硬件產生的基準時鐘脈沖頻率:單位(Hz);</p><p>  n-轉速單位:(轉/分);</p><p><b>  m2-時基脈沖。</b></p><p>  輸入脈沖 </p><p><b

38、>  時基脈沖</b></p><p>  圖2.2 “T”法脈寬測量</p><p>  由 “T”法脈寬測量可知“T”法測量精度的誤差主要有兩個方面,一是兩脈沖的上升沿觸發(fā)時間不一致而產生的;二是計數和定時起始和關閉不一致而產生的。因此要求脈沖的上升沿(或下降沿)陡峭和計數和定時嚴格同步。測周法在低轉速時精度較高,但隨著轉速的增加,精度變差,有小于一個脈沖的誤差存在[

39、5]。</p><p>  2.2.2測頻法“M法”</p><p>  在一定測量時間T內,測量脈沖發(fā)生器(替代輸入脈沖)產生的脈沖數m1來測量轉速,如圖2.3“M”法測量轉速脈沖所示,設在時間T內,轉軸轉過的弧度數為Xτ,則轉速n可由下式表示:</p><p>  n=60Xτ/2πT (2.3)</

40、p><p>  轉軸轉過的弧度數Xτ可用下式所示</p><p>  Xτ=2πm1/p (2.4) </p><p>  圖2.3 “M”法測量轉速脈沖</p><p>  將(2-4)式代入(2-3)式得</p><p>  轉速n的表達式為: </p&g

41、t;<p>  n=60m1/TP (2.5)</p><p>  n-轉速單位:(轉/分);</p><p>  T-定時時間單位:(秒)。</p><p>  在該方法中,測量精度是由于定時時間T和脈沖不能保證嚴格同步,以及在T內能否正好測量外部脈沖的完整的周期,可能產生的1個脈沖的量化誤

42、差。因此,為了提高測量精度,T要有足夠長的時間。定時時間可根據測量對象情況預先設置。設置的時間過長,可以提高精度,但在轉速較快的情況下,所計的脈沖數增大(碼盤孔數已定情況下),限制了轉速測量的量程。而設置的時間過短,測量精度會受到一定的影響[6]。</p><p>  2.2.3測頻測周法M/T法</p><p>  所謂測頻測周法,即是綜合了“T”法和“M”法分別對高、低轉速具有的不同精

43、度,利用各自的優(yōu)點而產生的方法,精度位于兩者之間,如圖2.4“M/T”法定時/計數測量所示。</p><p>  “M/T”法采用三個定時/計數器,同時對輸入脈沖、高頻脈沖(由振蕩器產生)、及預設的定時時間進行定時和計數,m1反映轉角,m2反映測速的準確時間,通過計算可得轉速值n。該法在高速及低速時都具有相對較高的精度。測速時間Td由脈沖發(fā)生器脈沖來同步,即Td等于m1個脈沖周期。由圖可見,從a點開始,計數器對m

44、1和m2計數,到達b點,預定的測速時間時,計算機發(fā)出停止計數的指令,因為TC不一定正好等于整數個脈沖發(fā)生器脈沖周期,所以,計數器仍對高頻脈沖繼續(xù)計數,到達c點時,脈沖發(fā)生器脈沖的上升沿使計數器停止,這樣,m2就代表了m1個脈沖周期的時間[7]。</p><p>  “M/T”法綜合了“T”和“M”兩種方法,轉速計算如下:</p><p>  設高頻脈沖的頻率為fC,脈沖發(fā)生器每轉發(fā)出P個脈

45、沖,由式(2.2)和(2.5)可得M/T法轉速計算公式為:</p><p>  n=60fcm1/pm2 (2.6)</p><p>  n-轉速值。單位:(轉/分);</p><p>  fc-晶體震蕩頻率:單位(Hz);</p><p>  m1-輸入脈沖數,反映轉角;&l

46、t;/p><p><b>  m2-時基脈沖數。</b></p><p>  圖2.4 “M/T”法定時/計數測量</p><p>  通過誤差和精度分析可知,M法適合于高速測量,當轉速越低,產生的誤差會越大。T法適合于低速測量,轉速增高,誤差增大。M/T這種轉速測量方法的相對誤差與轉速n無關,只與晶體振蕩產生的脈沖有關,故可適合各種轉速下的測量。

47、保證其測量精度的途徑是增大定時時間T,或提高時基脈沖的頻率fc。因此,在實際操作時往往采用一種稱變M/T的測量方法,即所謂變M/T法,在M/T法的基礎上,讓測量時間Tc始終等于轉速輸入脈沖信號的周期之和。并根據第一次的所測轉速及時調整預測時間Tc,兼顧高低轉速時的測量精度?;贛法測量速度,電路和程序均較為簡單,且可以在一定的條件下滿足精度的要求,所以本設計中采用M法進行測量,誤差和精度的具體分析過程在此不做復述[8]。</p&g

48、t;<p>  3 智能轉速測量系統(tǒng)的硬件結構</p><p>  3.1系統(tǒng)的硬件結構</p><p>  本轉速測量系統(tǒng)有以下幾個部分構成,如圖3.1轉速測量系統(tǒng)方框圖所示。</p><p>  圖3.1 轉速測量系統(tǒng)方框圖</p><p>  本系統(tǒng)的硬件主要由光電傳感器、信號處理電路、單片機AT89C51、鍵盤、LED

49、顯示等組成。如圖3.1,當測速齒盤轉動時,將會產生正弦脈沖電信號,然后把信號送入放大電路、整形及三極管整形電路進行處理,將正弦波信號轉化為TTL電平輸出到單片機進行轉速計數,最后通過數碼管顯示其數值。硬件電路圖如圖附件1所示[9]。</p><p>  1.轉速信號拾取的結構</p><p>  本設計中采集信號部分是通過光電傳感器來實現,利用測速圓盤將光信號轉變成單片機能夠處理的電信號。

50、測速圓盤位于紅外線發(fā)光二極管(規(guī)格HG11)和紅外線接收三級管(規(guī)格3DU5C)之間,采用+5V電壓供電,選用合適的電阻值來配合該其工作。紅外線發(fā)光二極管發(fā)出的光信號通過測速圓盤的孔,到達紅外線接收三級管表面,它將接收到的光信號轉變成電信號輸出。通過改變測速圓盤的旋轉速度來控制輸出電信號的頻率值,并將其輸出。如圖3.2轉速傳感器電路圖所示。</p><p>  圖3.2 轉速傳感器電路圖</p>&

51、lt;p><b>  2.顯示部分的結構</b></p><p>  本系統(tǒng)采用四位LED共陽極型數碼管作為顯示部分, AT89C51單片機的I/O口輸出特性是有較大的灌入電流能力,但只有很弱的“吐”電流的能力,因此本系統(tǒng)中選用共陽極數碼管。P2口的P2.0~P2.7口作為數碼管的段驅動,中間通過緩沖器74LS245進行數據緩沖。74LS245是8路3態(tài)雙向緩沖驅動,也叫做總線驅動門電

52、路或線驅動,主要使用在數據的雙向緩沖,常見51的數據接口電路,使用一片245作為數據緩沖電路,增強驅動能力。P0口的P0.0~P0.3口通過反向驅動器74LS04構成位驅動。將所有位的段選線相應地并聯(lián)在一起,由一個8位I/O控制,形成段選線的多路復用。而各位的共陽極分別由相應的I/O線控制,實現各位的分時選通。由于各位的段選線并聯(lián),段選碼的輸出對各位都是相同的。因此,同一個時刻,某一位的顯示與該位的位選線選通狀態(tài)有關,若要各位LED能夠

53、顯示出與本位相應的顯示字符,就必須采用掃描顯示方式[10]。</p><p>  3.單片機與PC機數據的傳輸</p><p>  基于單片機的測控系統(tǒng)在獲取傳感器的數據后,還需要將所得數據傳送到PC上。因此,本系統(tǒng)在設計時,做了一些考慮,在硬件設計時增加了串行通信口,采用MAX232電平轉換芯片,將PC機串行口的RS-232電平與AT89C51單片機使用的TTL電平進行轉換,實現了單片機

54、和PC機之間的數據傳送。如圖3.3 MAX232引腳圖所示、3.4AT89C51管腳圖所示[11]。</p><p>  圖3.3 MAX232引腳圖 圖3.4 AT89C51管腳圖</p><p><b>  4.鍵盤功能的實現</b></p><p>  本設計使用的鍵盤主要為完成一個功能—

55、轉速測量的啟動/停止;我們將開關直接與AT89C51單片機的P1.0接口相連,通過讀I/O口,判定各I/O線的電平狀態(tài),即可識別出按下的按鍵。操作員通過鍵盤可以輸入數據或指令,實現簡單的人機通信[12]。</p><p><b>  5.復位功能的實現</b></p><p>  單片機除本身需要復位以外,外部擴展的I/O接口電路等也需要復位。因此,為了控制的方便,本

56、設計中采用人工按鈕復位的方式。AT89C51單片機的RST端通過10kΩ電阻接地,10μ電容直接和一個接有按鍵的200Ω電阻并聯(lián)接入電源端,上電按鈕復位電路。當開關未按下時,由于電容的濾波作用,干擾信號不會進入到單片機中,起到抗干擾的作用;當按下開關一定時間就能使RST引腳端變?yōu)楦唠娖?,從而使單片機復位[13]。</p><p>  3.2 硬件電路中主要部件的介紹</p><p>  a

57、.AT89C51:隨著智能儀表的發(fā)展,用單片機構成的多路數據采集系統(tǒng)已經普及,該系統(tǒng)它不僅采集數據而且還能對采集到的模擬信號進行數據處理。AT89C51是一款低功耗高性能的CMOS 8-bits微處理器,它具有4KB的可編程或擦除的閃存(EPROM)。該器件使用ATMEL公司的高密度非易失性存儲器制造技術,并且與工業(yè)標準MCS-51TM的指令系統(tǒng)和管腳配置兼容。片內閃存的存在使程序存儲器能夠在系統(tǒng)中或者使用專門的程序燒錄器來重新寫入[2

58、0]。</p><p>  這一器件將通用的8bitsCPU和閃存結合起來,集成在一個芯片上,使該芯片成為不少控制系統(tǒng)的高度靈活和經濟的解決方案。</p><p>  AT89C51是ATMEL公司生產的一款51單片機,它有如下的特點:</p><p>  (1)與MCS-51TM系列產品兼容;</p><p>  (2)4K片內可編寫程序存

59、儲器(FLASH),可以被重寫1000次;</p><p>  (3)存儲數據保存時間為10年;</p><p>  (4)寬工作電壓范圍為:VCC2.7V~6V;</p><p>  (5)工作主時鐘頻率在0HZ~24MHZ之間;</p><p>  (6)128×8bits內部RAM;</p><p> 

60、 (7)程序存儲器具有3級加密保護;</p><p>  (8)32條可編程的I/O引腳;</p><p>  (9)2個16bits可編程定時器/計數器;</p><p>  (10)6個中斷源;</p><p>  (11)可編程全雙工串行通信;</p><p>  (12)低功耗空閑狀態(tài)和低功耗停機狀態(tài);<

61、/p><p>  b. MAX232:RS-232(ANSI/EIA-232標準)是IBM-PC及其兼容機上的串行連接標準??捎糜谠S多用途,比如連接鼠標、打印機或者Modem,同時也可以接工業(yè)儀器儀表。用于驅動和連線的改進,實際應用中RS-232的傳輸長度或者速度常常超過標準的值。RS-232只限于PC串口和設備間點對點的通信。RS-232串口通信最遠距離是50英尺。</p><p>  計算

62、機的串口采用的是RS-232電平,是12V的電壓,而我們單片機系統(tǒng)則采用的是TTL電平,是0~+5V的電壓。因此需要將TTL電平轉換成RS-232電平。在我們的硬件圖里使用互換器MAX232來進行TTL電平和RS-232電平的轉換。+5V電平RS-232傳送/發(fā)送模塊,包含TTL/CMOS到RS-232電平的轉換以及RS-232到TTL/CMOS電平的轉換器各2個。</p><p>  MAX232的引腳說明為:

63、</p><p><b>  VCC:供電電壓;</b></p><p><b>  GND:地;</b></p><p>  C+、C-:外圍電容;</p><p>  T1IN:第一路TTL/CMOS驅動電平輸入;</p><p>  T1OUT:第一路RS-232電平輸

64、出;</p><p>  R1IN:第一路電平輸入;</p><p>  R1OUT:第一路TTL/COMS驅動電平輸出;</p><p>  T2IN:第二路TTL/CMOS驅動電平輸入;</p><p>  T2OUT:第二路RS-232電平的輸出;</p><p>  R2IN:第二路RS-232電平輸入;<

65、;/p><p>  R2OUT:第二路TTL/COMS驅動電平輸出。</p><p>  MAX232的主要性能參數如下:</p><p> ?、俟ぷ麟妷海簡坞娫?5V;</p><p>  ②雙通道接收和發(fā)送;</p><p> ?、叟c所有EIA/TIA-232E以及V.28協(xié)議兼容;</p><p&

66、gt; ?、苋龖B(tài)門接收和發(fā)送。</p><p>  4 智能轉速測量系統(tǒng)的軟件設計</p><p>  4.1單片機C51的介紹</p><p>  4.1.1單片機C語言與匯編語言</p><p>  在單片機的開發(fā)應用中,逐漸引入了高級語言,C語言就是其中的一種。對用慣了匯編語言的人來說,高級語言的可控行不好,不如匯編語言那樣能夠隨心所

67、欲。但是使用匯編語言會遇到很多問題,首先它的可讀性和可維護性不強,特別是當呈現沒有很好的標注時,其次就是代碼的可重用性也比較低。使用C語言就可以很好的解決這些問題[18]。</p><p>  C語言具有良好的模塊化,容易閱讀和維護等優(yōu)點。由于模塊化,用C語言編寫的程序有很好的可移植性,功能化代碼能夠很方便地從一個工程移植到另一個工程,從而減少開發(fā)時間。</p><p>  用C語言編寫程

68、序比用匯編編寫程序更符合人們的思考習慣,開發(fā)者可以更專心地考慮算法而不是考慮一些細節(jié)問題,這樣就減少了開發(fā)和調試時間。使用像C這樣的語言,編寫者不必十分熟悉處理器的運算過程。很多處理器支持C編譯器,這意味著對新的處理器也能很快上手,而不必知道處理器的具體內部結構,這使得用C語言編寫的程序比匯編程序有更好的可移植性。</p><p>  C語言的特點就是可以使編寫者盡量少地對硬件進行操作,它是功能性和結構性很強的語

69、言。</p><p>  對大多數51系列單片機,使用C語言這樣的高級語言與使用匯編語言相比具有如下優(yōu)點:</p><p>  (1)不需要了解處理器的指令集,也不必了解存儲器結構;</p><p>  (2)寄存器分配和尋址方式由編譯器進行管理,編程時不需要考慮存儲器的 尋址和數據類型等細節(jié);</p><p>  (3)指定操作的變量選

70、擇組合提高了程序的可讀性;</p><p>  (4)可使用與人的思維更相近的關鍵字和操作函數;</p><p>  (5)與使用匯編語言編程相比,程序的開發(fā)和調試時間大大縮短;</p><p>  (6)C語言中的庫文件提供許多標準的方程,例如:格式化輸出、數據轉換和浮點運算等;</p><p>  (7)通過C語言可實現模塊編程技術,從而

71、可將已編制好的程序加入到新程序中;</p><p>  (8)C語言可移植性好且非常普及,C語言編譯器幾乎適用于所有的目標系統(tǒng),已完成的軟件項目可以很容易地轉換到其它的處理器或環(huán)境中。</p><p>  所以在本畢業(yè)設計數據采集系統(tǒng)的軟件設計中我選用單片機C語言來進行程序代碼的編寫。</p><p>  4.1.2 C51對標準C語言的擴展</p>

72、<p>  1.在51系列單片機中使用的C語言與標準C語言還有一些不同,或者說C51對標準C語言有一些擴展。</p><p>  C51語言的特色主要體現在以下幾個方面:</p><p>  (1)C51雖然繼承了標準C語言的絕大部分的特性,而且基本語法相同,但是本身又在特定的硬件結構上有所擴展,如關鍵字sbit、data、idata、pdata、xdata、code等。<

73、/p><p>  (2)應用C51更要注重對系統(tǒng)資源的理解,因為單片機的系統(tǒng)資源相對PC機來說很貧乏,對于RAM、ROM中的每一字節(jié)都要充分利用??梢酝ㄟ^看編譯生成的.m51文件來了解自己程序中資源的利用情況。</p><p>  (3)程序上應用的各種算法要精簡,不要對系統(tǒng)構成過重的負擔。盡量少用浮點運算,可以用unsigned無符號型數據的就不要用有符號型數據,盡量避免多字節(jié)的乘除運算,多

74、使用移位運算等。</p><p>  2.C51相對于標準C語言的擴展直接針對51系列CPU硬件,大致有以下幾個方面:</p><p><b>  (1)數據類型</b></p><p>  C51具有標準C語言所具有的標準數據類型,除此之外,為了更加有效地利用8051的結構,還加入了以下特殊的數據類型。</p><p>

75、;<b>  (2)存儲區(qū)</b></p><p>  C51編譯器支持8051及其擴展系列,并提供對8051所有存儲區(qū)的訪問。存儲區(qū)可分為內部數據存儲區(qū)、外部數據存儲區(qū)以及程序存儲區(qū)。8051CPU內部的數據存儲區(qū)是可讀寫的,8051派生系列最多可有256字節(jié)的內部數據存儲區(qū),其中低128字節(jié)可直接尋址,高128字節(jié)(從0x80到0xFF)只能間接尋址,從20H開始的16字節(jié)可位尋址。內部

76、數據區(qū)又可分為3個不同的存儲類型:data、idata、bdata。外部數據區(qū)也是可讀寫的。但是訪問起來比較慢,因為外部數據區(qū)是通過數據指針加載地址來間接訪問的。 </p><p>  (3)特殊功能寄存器(SFR)</p><p>  51單片機提供128字節(jié)的SFR尋址區(qū),地址為80H~FFH。51單片機中除了程序計數器PC和4組通用寄存器組之外,其它所有的寄存器均為SFR,并位于片內

77、特殊寄存器區(qū)。</p><p><b>  4.2程序設計</b></p><p>  根據硬件電路設計,進行程序設計,在程序設計之前,首先要確定定時器的工作方式,方式控制字,確定串行口的工作模式等,下面分別討論。</p><p>  4.2.1工作方式及控制字設置</p><p>  1.定時/計數器T0</p&

78、gt;<p>  本系統(tǒng)設計中,T0被用于計數,我們當然希望計數量越大越好,這樣,可以獲得較大的測量范圍,因此,T0選定為工作方式1(16位的計數方式),設計中,沒有使用外部控制端,僅用指令置位/清零TR0來進行計數的啟動/停止,這樣,電路較為簡單,但精度會受到一定的影響,但在本設計中,認為采用這種方式,精度可達到要求,因此,T0采用自由計數的方式,不用預置初值。</p><p>  2.定時/計數

79、器T1</p><p>  定時器T1每10ms中斷一次,用以進行數碼管顯示和每一秒讀取一次計數器T0中的數值。這里選用T1的工作狀態(tài)為1。要使T1設定正確的定時時間,首先要計算其初值,定時時間為:</p><p>  t=(216-T1的初值)×晶振周期×12 (4.1) </p><p><b> 

80、 定時時間10ms:</b></p><p>  10ms=(216-T1的初值)×1/12*10-6×12</p><p>  則: T1的初值=216-104</p><p>  因此,TH1=D8, TH1=F0;</p><p>  確定了定時/計數器T1的定時時間以后,就要計算定

81、時初值,本系統(tǒng)用了12M的晶振,恰好是一個機器周期為1μs,因此,1ms定時時間意味著只要計數1000次即可,由于定時/計數器T1是向上計數,因此,要化為16進制,并分別送入T1的高8位和低8位。這里,采用的keil匯編軟件有較強的預處理功能,能夠處理較復雜的運算,因此,計數程序中可寫為:PlusCounter = TH0*256 + TL0。</p><p>  這里用PlusCounter作為轉化為10進制數

82、值的數值存儲器,TH0和TL0分別是二進制計數值的高8位和低8位。</p><p>  由于AT89C51單片機在中斷時,會附加延時3-8個周期,在滿足一定條件的情形下,驗證這個數值是否正確,可以在進入仿真調試時通過觀察Keil提供的有關變量看到,如果不正確,可以根據實際情況略作調整,保證定時時間盡量準確。</p><p>  3.定時/計數器的方式控制字</p><p

83、>  定時/計數器的方式控制字TMOD,其地址為89H,復位值00H,不可位尋址。其8位控制。如圖4.1工作模式寄存器TMOD的位定義所示。</p><p>  T1 T0</p><p>  圖4.1 工作模式寄存器TMOD的位定義圖</p><p><b>  說明:</b&

84、gt;</p><p>  GATE:門控位。由GATE、軟件控制位TR0/1和INT0/1共同決定定時/計數器0/1的打開或關閉。當GATE=0,只要用指令置TR0/1=1即可啟動定時/計數器0/1工作。GATE=1,只有INT0/1引腳為高電平且用指令置TR0/1=1時,才能啟動定時/計數器0/1的工作。</p><p>  C/T:定時器/計數器選擇位。C/T=1,工作于計數器方式;

85、C/T=0工作于定時器方式。</p><p>  M1M0:定時/計數工作模式選擇位。M1M0=00,13位計數;M1M0=01,16位計數;M1M0=10,自動再裝入8位計數;M1M0=11,工作于模式3狀態(tài)。</p><p>  根據前面的描述,可以確定TMOD的控制字應為00010101B。</p><p><b>  程序如下:</b>

86、</p><p>  void init_timer0() // T0、T1分別定義</p><p><b>  {</b></p><p>  TMOD= 0xF1;</p><p><b>  }</b></p><p>  void init_timer1

87、()</p><p><b>  {</b></p><p>  TMOD = 0x50;</p><p><b>  }</b></p><p>  將控制字分別送入TMOD。</p><p>  4.定時/計數控制寄存器TCON</p><p> 

88、 TCON地址88H,可進行位尋址,復位值00H。如圖4.2控制寄存器TCON的位定義圖所示。</p><p>  圖4.2 控制寄存器TCON的位定義圖</p><p>  TF0、TF1分別為定時器T0和計數器T1的溢出標志位,TR0和TR1在正常情況下,都沒有溢出標志,只有當計數值或定時值超過65536時,才能有溢出中斷請求,這兩位是由硬件置位和硬件清零,不需另行設置??稍赥0和T1

89、的溢出中斷服務程序中,以供使用。</p><p>  TR1、TR0分別用于開啟T1和T0的開關位,其中TR1由系統(tǒng)開啟時,直接置位,打開T1,開始定時,經運行判斷后,打開TR0。</p><p>  4.2.2變量分配及程序的初始化</p><p>  在程序開始之前,首先進行變量的分配,程序的初始化,根據硬件電路的要求,將各硬件電路置于其規(guī)定的狀態(tài);根據需要,對

90、定時器、計數器、串行口等設置工作狀態(tài),預置初值等。以下是程序定義變量及進行初始化的程序行。</p><p>  uint Tcounter = 0; //時間計數器</p><p>  bit Flag_Fresh = 0; //刷新標志</p><p>  bit Flag_clac = 0; //計算轉速標志</p><p> 

91、 bit Flag_Err = 0; //超量程標志</p><p>  Disbuf[0] = 0; //開機時,初始化為0000</p><p>  Disbuf[1] = 0;</p><p>  Disbuf[2] = 0;</p><p>  Disbuf[3] = 0;</p><p> 

92、 init_timer0(); //T0、T1分別初始化</p><p>  init_timer1();</p><p>  4.2.3顯示功能的實現</p><p>  定時計數器T1每10ms中斷一次,用以進行數碼管顯示和每1秒讀取一次計數器T0中的數值。</p><p><b>  秒信號的產生</b>

93、;</p><p><b>  中斷產生后:</b></p><p>  #define TIME_CYLC 100</p><p>  Tcounter++; </p><p>  if(Tcounter>TIME_CYLC)</p><p>  { Flag_clac = 1; <

94、/p><p><b>  }</b></p><p>  判斷Tcounetr是否到達100了,如果到達100,則說明1秒時間已到,程序將關閉T0計數器,然后對T0中已計得的數據進行處理,然后再去進行顯示,否則直接轉去顯示。這部份的程序流程圖如圖4.3秒信號子程序流程圖所示。</p><p>  圖4.3 秒信號子程序流程圖</p>

95、<p><b>  2.數碼管的顯示</b></p><p>  數碼管顯示采用動態(tài)方式,即通過延遲程序使數碼管分時點亮,依次循環(huán)。由于數碼管共有4位,延遲5ms,因此,每20ms即可輪流點亮每個數碼管一次,利用人的視覺暫留現象,可以穩(wěn)定地顯示各位數碼管的值。</p><p>  如圖4.4數碼管顯示流程圖所示,從圖中可以看出,程序中利用了一個延時函數,在函

96、數中由計數器自加來實現延時的(自加速度由晶振頻率決定),當計數值到5000時,計數值清零,點亮下一個數碼管,從而使第一至第四位數碼管按設定逐個點亮。下面以顯示182為例,即速度為182R/min加以說明。當數碼管顯示182時,意味著第4位數碼管顯示2,第三位顯示8,第二位顯示1,第四位顯示0。</p><p>  圖4.4 數碼管顯示流程圖</p><p>  程序如下: 當轉速為182時

97、,即</p><p>  Disbuf[0] = 0;</p><p>  Disbuf[1] = 1;</p><p>  Disbuf[2] = 8;</p><p>  Disbuf[3] = 2;</p><p><b>  送入顯示緩沖區(qū)</b></p><p>

98、  P2 |= 0xF0; //初始化,關閉所有位選開關</p><p>  LED_SEG0 = 0; //選通第一位數碼管</p><p>  LED_DAT = table[Disbuf[0]];//查位碼表,將其由P0輸出</p><p>  Delay(5) //延時5m

99、s,等待下一位顯示</p><p><b>  ……</b></p><p>  以此規(guī)律進行顯示,直至四位全部顯示完畢,等待下一次循環(huán)。</p><p>  4.2.4鍵盤的功能的實現與設計</p><p>  本課題的硬件設計中使用了2個按鍵,功能分別是實現轉速測量的啟動/停止和復位。啟動停止可通過P1.0接口進行控

100、制,當按鍵按下時,按鍵端口接地,I/O接口P1.0輸入低電平,程序可表示為P1^0=0,通過此條件便可實現開關功能;復位鍵則不需要軟件支持。在按鍵過程中會有按鍵抖動,因此我們一般通過軟件延遲程序將按鍵命令延遲5-10ms再執(zhí)行,便可減少抖動造成的誤差。程序如下:</p><p><b>  if(!P1^0)</b></p><p>  { Delay(10);

101、 //防按鍵抖動</p><p><b>  if(!P1^0)</b></p><p><b>  { ……}</b></p><p><b>  }</b></p><p><b>  4.3系統(tǒng)流程</b></p><p> 

102、 本系統(tǒng)的主程序參考圖如圖4.5主程序流程圖所示,在完成初始化工作以后,即循環(huán)等待,每1s時間到之后,T1中斷程序將會讀取T0中的計數值,并將其放入約定的存儲單元中,并且判斷是否有鍵按下,當P1.0被按下時,主程序即轉入計算,第一步判斷是否有鍵按下,第二步將16進制數的結果轉化為BCD碼,第三步,將BCD碼轉化并送入顯示緩沖區(qū)。</p><p><b>  N</b></p>

103、<p><b>  Y</b></p><p>  圖4.5 主程序流程圖</p><p>  5 程序調試及固化</p><p>  單片機應用系統(tǒng)的程序必須有調試好的應用程序,系統(tǒng)才能運行。通常,單片機的開發(fā)工具至少需要仿真機和編程器兩種,前者用以調試程序,后者用于將調試完成后的程序代碼寫入單片機芯片中。</p>

104、<p>  5.1單片機開發(fā)平臺簡介</p><p>  單片機開發(fā)工具的作用有這樣一些:</p><p>  (1)有較齊全的開發(fā)軟件工具,如配置有匯編語言,用戶可用匯編語言編制應用軟件。開發(fā)工具能自動生成目標文件;配有反匯編軟件,能將目標程序轉換為匯編語言程序文本;有豐富的子程序庫可供用戶調用。</p><p>  (2)有全速跟蹤調試、運行的能力開發(fā)

105、裝置占用單片機硬件資源少。并具有單步運行、設斷點運行、狀態(tài)查詢等功能。</p><p>  (3)能進行系統(tǒng)硬件電路的診斷與檢查;為了方便??旎浖{試,還應配置軟件轉儲、程序文本打印、能將程序固化到單片機芯片或系統(tǒng)FLASH ROM芯片中。</p><p>  5.2本系統(tǒng)開發(fā)平臺</p><p>  5.2.1keil C51軟件集成開發(fā)環(huán)境</p>

106、<p>  隨著單片機開發(fā)技術的不斷發(fā)展,單片機的開發(fā)軟件也在不斷發(fā)展,Keil軟件是目前流行的用于開發(fā)51系列單片機的軟件。該軟件提供了包括C編譯器、宏匯編、鏈接器、庫管理和一個功能強大的仿真調試器等在內的完整開發(fā)方案,通過一個集成開發(fā)環(huán)境(μVision)將這些部分組合在一起。運行Keil軟件需要Pentium或以上的CPU,16MB或更多RAM、20MB以上空閑的硬盤空間、Win98、NT、Win2000、WinXP

107、等操作系統(tǒng)。</p><p><b>  5.2.2程序調試</b></p><p><b>  1.源文件建立</b></p><p>  使用菜單file/new在項目窗口右側打開一個文本編輯界面,可在其中寫入指令或將已編輯完成的程序調入,保存。本程序保存為*. C。如圖5.1程序的保存界面所示。</p>

108、<p>  圖5.1 程序的保存界面</p><p><b>  2.建立工程文件</b></p><p>  點菜單Project/New Project出現對話框,給工程命名為test保存,在彈出的對話框選擇CPU的型號,選擇Atmel公司的89C51,確定回到主界面,在工程窗口文件頁中右擊Target1/Source Group1,如圖5.2程序的加

109、載界面所示,左擊Add Files to Group ‘source Group 1’后會出現選擇文件的對話框,選擇文件,點擊Add。</p><p>  圖5.2 程序的加載界面</p><p><b>  3.編譯連接</b></p><p>  選擇菜單Project/Build target進行連接,此時編譯過程的信息將出現在編譯窗口中

110、,出現的語法錯誤會有提示,根據提示,修改源程序,直到編譯通過。</p><p>  圖5.3 系統(tǒng)程序編譯界面</p><p><b>  4.進入調試</b></p><p>  編譯通過后的源程序,只表示沒有語法錯誤,但是否能夠存在邏輯或其他錯誤,還需要進行仿真才行。在調試之前應先修改晶振的頻率,打開菜單Project/options fo

111、r Target‘Target 1’會現一個對話框,在Target修改晶振頻率。修改完成后,打開菜單Debeg/Start/Stop Session對軟件模擬調試。如圖5.4調試界面所示。在調試中,可以采用單步運行對程序進行檢查,修改錯誤,并通過各參數窗口,觀察數值是否與設定值相同。</p><p>  在調試中,可以采用單步運行對程序進行檢查,修改錯誤,并通過各參數</p><p> 

112、 窗口,觀察數值是否與設定值相同。</p><p><b>  圖5.4 調試界面</b></p><p>  調試還可以使用設置斷點的方式,在定時器T1的中斷服務程序的起點處設了一個斷點,記錄下運行時間為16.78123900(s),如圖5.5斷點設置界面(1)所示,再次運行并停止后,可看到,時間為16.7712100(s),如圖5.6斷點設置界面(2)所示,計算可

113、知,中斷時間為10.029(ms),可以根據這一結果,對定時常數略作修改,使得定時時間最接近于10(ms)。</p><p>  圖5.5 斷點設置界面(1)</p><p>  反復修改,直到所有功能完全正確,即可產生.hex文件,該文件可用編程器燒錄到單片機芯片中。注:如果要生成.hex文件,需將Project/options for Target‘Target 1’/Output中

114、Create HEX Fi對話框選中。如圖5.7生成.hex</p><p><b>  文件所示。</b></p><p>  圖5.6斷點設置界面(2)</p><p>  圖5.7 生成.hex文件選擇界面</p><p><b>  6 結論</b></p><p>

115、;<b>  6.1主要研究結論</b></p><p>  本文根據智能轉速測量系統(tǒng)的硬件設計和要求,設計出相應軟件系統(tǒng)。文中首先對單片機用于轉速測量的理論、原理進行了簡單的分析、比較,并對基于AT89C51單片機的轉速測量電路做了簡單的介紹,詳細闡述了軟件的設計,編譯程序,最終實現轉速測量、顯示的功能,再通過調試使程序通過編程器寫入芯片。本設計的具體研究成果如下:</p>

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
  • 4. 未經權益所有人同意不得將文件中的內容挪作商業(yè)或盈利用途。
  • 5. 眾賞文庫僅提供信息存儲空間,僅對用戶上傳內容的表現方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
  • 6. 下載文件中如有侵權或不適當內容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論