畢業(yè)論文--電動車里程表監(jiān)控軟件設計_第1頁
已閱讀1頁,還剩46頁未讀, 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

1、<p><b>  本科畢業(yè)論文</b></p><p>  題 目: 電動車里程表監(jiān)控軟件設計</p><p>  院 系: </p><p>  專 業(yè): </p><p>  班 級:

2、 </p><p>  學生姓名: </p><p>  指導教師: </p><p>  論文提交日期:年 月 日</p><p>  論文答辯日期:年 月 日</p><p>  畢業(yè)設計(論文)任務書

3、</p><p><b>  摘 要</b></p><p>  里程表應用廣泛,機械式里程表有其不足之處。本文以設計電動車里程表為目的,提出了電動車里程表的設計方案。設計智能自動化的里程表,利用霍爾效應原理,引入霍爾傳感器,采用脈沖檢測的方法測量行駛速度與里程。并設計了用戶界面,可以實現超速報警及用戶自設定參數值,既可以實現測速也實現了自動化和智能化。通過實驗驗證,

4、此方案可行。</p><p>  本文介紹了電動車里程表的工作原理、結構和以AT89C52單片機為核心的脈沖檢測系統(tǒng)硬件設計及軟件設計的相關內容。設計以AT89C52 單片機為主控芯片,用定時器T2的捕獲功能捕獲脈沖,并測出脈沖的頻率,利用HD7279實現按鍵及顯示的功能,X5045存儲用戶參數,由鍵盤控制里程與速度的切換顯示。</p><p>  軟件設計部分,采用了模塊化的設計,編程選

5、用了匯編語言,程序由采用程序和各功能子程序組成。主要有監(jiān)控系統(tǒng)主程序,頻率測量子程序,人機接口子程序,報警子程序組成,通過使用星研仿真器對程序進行調試。</p><p>  本文側重軟件的實現,硬件部分描述了硬件接口電路框圖及各芯片功能,最后進行了計算機輔助線路設計。此次設計的里程表結構簡單,穩(wěn)定性較好,實用性強,易實現,達到了設計目的。</p><p>  關鍵字:單片機; 測頻;霍爾傳

6、感器;里程表</p><p><b>  Abstract</b></p><p>  Odometer is widely used in our daily life, and mechanical odometer has its disadvantages. For the purpose of designing the electric vehicle o

7、dometer, I put forward the design scheme of electric vehicle odometer in this paper. In order to design the intelligent automatic odometer, according to HALL principle, I use a HALL sensor, measure the speed and mileage

8、by using the pulse testing method, and improve the measuring accuracy of the system. Designing the user interface can achieve the over spee</p><p>  This paper introduces the working principle and structure

9、of the electric vehicle odometer and related content about hardware design and software design of the pulse detection system which uses AT89C52 single-chip computer as the core. The design uses AT89C52 single chip microc

10、omputer as main control chip, uses timer T2 to capture the pulse, and measures the frequency of pulse. The chip HD7279 can achieve the button and display function and the chip X5045 can store user parameters. The switchi

11、ng</p><p>  The part of software design adopts the modular design, uses the assembly language programming. The whole program consists of the using program and each function subroutine, mainly including the m

12、onitoring and controlling program, frequency measuring subroutine, man-machine cut program and alarming subroutine. And the Xing Yan emulator is used to debug the program.</p><p>  This paper emphasizes on t

13、he implementation of the software. The part of hardware design describes the hardware interface circuit diagram and the chip functions. The design of the odometer uses simple structure has good stability and strong pract

14、icability. It is easy to implement and reaches the design purpose.</p><p>  Keyword:microcomputer; Frequency measurement; Hall sensor; odometer</p><p><b>  目錄</b></p><p&g

15、t;<b>  第一章 緒論1</b></p><p><b>  1.1課題背景1</b></p><p>  1.2國內外研究現狀1</p><p>  1.3課題研究意義2</p><p>  1.4本課題研究內容2</p><p>  第二章 整體方案設計

16、4</p><p>  2.1系統(tǒng)設計方案4</p><p>  2.2系統(tǒng)工作原理4</p><p>  2.3系統(tǒng)技術指標5</p><p>  第三章 系統(tǒng)硬件設計6</p><p>  3.1傳感器選型6</p><p>  3.1.1信號轉換電路設計8</p>

17、<p>  3.2人機接口電路設計9</p><p>  3.3存儲電路設計11</p><p>  3.4報警電路設計12</p><p>  第四章 系統(tǒng)軟件設計13</p><p>  4.1主程序設計13</p><p>  4.2中斷程序設計16</p><p>

18、;  4.3鍵處理程序設計19</p><p>  4.3.1設定鍵子程序設計21</p><p>  4.3.2增加鍵子程序設計22</p><p>  4.3.3左移鍵子程序設計22</p><p>  4.3.4確認鍵子程序設計23</p><p>  4.4顯示程序設計24</p>&

19、lt;p>  4.5報警程序設計26</p><p>  第五章 電動車里程表的測試28</p><p>  5.1測試方法28</p><p>  5.2誤差分析28</p><p>  第六章 硬件和軟件調試30</p><p>  6.1硬件調試30</p><p>  

20、6.2軟件調試30</p><p>  6.2.1 調試方法及優(yōu)點30</p><p>  6.2.2 調試出現的問題及解決方法31</p><p>  第七章 設計總結33</p><p><b>  參考文獻34</b></p><p><b>  致 謝36<

21、;/b></p><p>  附錄1主板原理圖I</p><p>  附錄2主板PCB圖I</p><p>  附錄3 主板PCB圖II</p><p>  附錄4 副板PCB圖II</p><p>  附錄5 元件列表III</p><p><b>  第一章 緒論&

22、lt;/b></p><p><b>  1.1課題背景</b></p><p>  里程表的原理很簡單,因為車輪的直徑已知,車輪的圓周長便是恒定不變的。由此可以計算出每走一里路車輪要轉多少圈,這個數也是恒定不變的。因此只要能夠自動把車輪的轉數積累下來,然后除以每一里路對應的轉數就可以得到行駛的里程了[1]。</p><p>  電動車被

23、發(fā)明及使用到現在已有兩百多年的歷史,這兩百年間人類在不斷的嘗試與研發(fā)過程中,將玩具式的木馬車轉換到今日各式新穎休閑運動電動車。我國是電動車大國,隨著人們生活水平的不斷提高,電動車已經不僅僅是運輸、代步的工具,其輔助功能也變得越來越重要。因此,人們希望電動車的娛樂、休閑、鍛煉的功能越來越多,能帶來大家更多的健康與快樂。在這個背景下,電動車里程表作為電動車的一大輔助工具迅速發(fā)展起來,其功能也逐漸從單一的里程顯示發(fā)展到速度、時間顯示,甚至有的

24、還具有測量騎車人的心跳、顯示騎車人熱量消耗等功能,讓人能清楚地知道當前的速度、時間、里程等物理量[2]。 </p><p>  電動車里程表一般由安裝于前車圈鋼條上的感應磁鐵、前叉上的傳感器、單片機及顯示模塊構成。當車圈旋轉時傳感器捕捉到感應磁鐵帶來的信息,通過連接線傳輸至單片機,單片機對此進行處理后計算出時速、里程等信息并顯示。它能夠讓我們比較精確的知道自己的當前速度、騎行時間、單次里程、總里程、平均

25、速度、瞬時速度等。如佛山高明華勁電子公司的電動車里程表MS-601,能動態(tài)顯示行駛里程、騎車時間、實時車速等[3]。</p><p>  1.2國內外研究現狀</p><p>  從保護環(huán)境及經濟條件許可等綜合因素來看,電動車里程表目前乃至未來都有著廣闊的發(fā)展前景。目前市面上電動電動車的速度表和里程表都是機械的,看起來不夠直觀與方便。如果能用LED直接顯示出來里程數或速度值,就可節(jié)省用戶的

26、時間及精力處理電動車行進過程中的突發(fā)事件[4]。國內外現在生產銷售的很多種電動車速度里程表,某些產品的性能與結構功能簡單,只有測速與里程顯示的功能,比較高端的一些產品除了測量速度和里程顯示功能外,還加入了GPS全球定位,單次行車里程,時間,運動時間,平均速度,累計里程,車輪轉數。以后的發(fā)展趨勢可能會加入mp3和短信收發(fā)功能、心率測量、視頻播放,使電動車速度里程表更具有人性化,相信也會受到各個年齡段人的喜歡[5]。隨著電動車的里程表的發(fā)展

27、,它的功能也越來越完善,從以前老式的機械指針表盤,演變成現在利用數碼技術直接利用LED或者LCD顯示,上面清楚的顯示電動車的速度,行駛里程,時間,電池電壓等等,用戶可以隨時了解電動車的行駛現狀,更加便捷。其中的核心部件單片機體積小,智能化,把它做到產品的內部,取代了老式機械零件,縮小產品的體積,增加功能[6]。</p><p>  隨著電子技術的迅速發(fā)展和提高,行車記錄儀也不僅僅是里程表,上面會集成更多的功能,路

28、況攝像監(jiān)測,人體疲勞測試程度,智能提醒車的狀況,而不僅僅是顯示,另外新增的語音提醒更加人性化,進一步的通訊技術,可以與互聯網通信,對接收的信息進行處理,有利于交通管理。</p><p><b>  1.3課題研究意義</b></p><p>  電動車已成為人們日常生活中出行運動必不可少的工具,廣泛用于個人家庭娛樂休閑及比賽等方面,給人們的娛樂運動、出行及生活帶來了極

29、大的改變與快捷。電動車速度里程表電子集成電路的發(fā)展多采用了先進的智能傳感技術,使電動車速度里程表有測量準確、工作時性能穩(wěn)定、容易攜帶等優(yōu)勢,它被廣泛用于多個領域的發(fā)展,比如:測速,里程計算及自動控制。由于電動車的里程表基本組成包含:單片機的自動檢測及控制電路、信號處理電路、顯示電路、報警電路幾部分,因此進行電動車速度里程表的研究是非常必要的,研究電動車速度里程表及擴展其應用鄰域,有著非常現實的意義[7]。</p><

30、p>  1.4本課題研究內容</p><p>  在對電動車里程表已有的研究的基礎上,本課題設計了基于AT89C52單片機的智能里程表硬件系統(tǒng)和軟件系統(tǒng),并對硬件部分和軟件部分進行了測試。設計目標也是在力求結構簡單、易于實現、可行性較強的前提下,盡量完善增加其輔助功能。硬件部分設計了主機電路、人機接口電路、存儲電路、報警電路。軟件部分采用了模塊化程序設計思想,將軟件分為主程序模塊、鍵處理模塊、顯示模塊、數據

31、采集處理模塊和報警模塊。對軟件的模塊化處理使軟件設計結構清晰明了,易于調試與修改,避免了很多錯誤。此外,對設計中存在的問題,出現的現象進行了進一步的分析與改正,完成了設計任務。</p><p>  第二章 整體方案設計</p><p><b>  2.1系統(tǒng)設計方案</b></p><p>  系統(tǒng)硬件由單片機AT89C52、霍爾傳感器及信號轉

32、換電路、X5045、HD7279鍵盤顯示器、報警電路組成。單片機采集霍爾傳感器輸出的脈沖信號,其中信號轉換電路包含信號放大、波形變換和波形整形,對被測信號進行放大的目的是降低對待測信號的幅度要求,波形變換和波形整形電路則用來將放大的信號轉換成可與單片機相連的信號。X5045存儲報警參數,鍵盤顯示器電路根據按鍵不同控制里程表的顯示,最后用6 位的L E D 能直觀的將速度與里程顯示給用戶,并且在速度高于一定的值時可自動向用戶報警,從而達到

33、智能速度里程表設計目的。系統(tǒng)設計方案圖如圖2-1所示,</p><p>  圖2-1 整體方案設計框圖</p><p>  本次設計是以單片機為核心設計的里程表系統(tǒng),僅用了較少的硬件和軟件結合就實現了設計要求,且性能好,穩(wěn)定性強,測速誤差小,還通過軟件編程新增加了一些附加功能,達到了創(chuàng)新的目的。</p><p><b>  2.2系統(tǒng)工作原理</b&

34、gt;</p><p>  該設計能實時地將所測的速度與累計里程數顯示出來,主要是將傳感器輸入到單片機的脈沖信號的頻率(傳感器將不同車速轉變成不同頻率的脈沖信號)實時地測量出來,考慮到信號的衰減、干擾等影響,在信號送入單片機前應對其進行放大整形,然后通過單片機計算出速度和里程,再將所得的數據存儲到串口數據存儲器,并由按鍵選擇LED顯示模塊顯示所測的速度與里程。同時若檢測到電動車超速,系統(tǒng)將發(fā)出報警提示信號,LED

35、指示燈閃爍。</p><p><b>  2.3系統(tǒng)技術指標</b></p><p>  傳感器對電動車的狀態(tài)進行實時檢測,里程表對采樣數據進行處理,然后轉換成標準數據輸出。顯示里程和速度,并設定量程上下限,速度上下限,報警上下限等參數值。里程表設計中增加了看門狗定時器功能,因此系統(tǒng)無需每次開機重新設定參數值。里程表的主要技術指標如下:</p><

36、p>  電源供電:5V直流電壓</p><p>  測速范圍:0~20Km/h</p><p>  輸入信號:脈沖方波信號</p><p>  頻率測量范圍:0~10Hz</p><p>  工作濕度:15%~85%RH</p><p>  工作溫度:0~55℃</p><p>  第三章

37、 系統(tǒng)硬件設計</p><p>  本次的硬件電路設計主要包括以下幾部分:傳感器選型、人機接口電路設計、存儲電路設計、報警電路設計。</p><p><b>  3.1傳感器選型</b></p><p>  里程表的需要通過傳感器檢測信號,經信號轉換電路轉換后送到主機單元進行計算,在這里對傳感器進行簡單的介紹。</p><p

38、>  電動車里程表用傳感器是電動車里程表的重要部件,傳感器的準確性直接影響里程表的里程精度,是里程表日常修理中遇到的最多的問題。它的功能是將轉動的機械信號變成電脈沖信號,傳輸給里程表接口,根據輸入的脈沖數來計算電動車行駛的里程[9]。</p><p>  目前電動車里程表所選配的主流傳感器是霍爾式傳感器,它可以檢測轉速與轉數,而霍爾傳感器尺寸較小,性能穩(wěn)定可靠,工作電路簡單,價格便宜,在里程表設計中使用廣泛

39、?;魻栐窃诎雽w薄片的兩端控制電流,若在薄片的垂直方向上施加一個磁場,垂直于電流和磁場方向上將產生一個電壓,這個電壓稱為霍爾電壓,這一現象就是霍爾效應。根據霍爾效應制造的元件就是霍爾元件。目前里程表用傳感器均為開關型霍爾傳感器。其特性曲線如圖3-1所示。</p><p>  圖3-1開關型霍爾傳感器特性曲線圖</p><p>  開關型霍爾傳感器大小適中 ,性能可靠,價格合適,工作時的

40、電壓范圍較寬,它只需配合一塊小的永久磁鐵就可以做成電動車里程表的傳感器。根據產生的脈沖計算出行車里程[12]。</p><p>  目前,大部分傳感器廠家多使用Honeywell公司生產的SS443A開關型霍爾傳感器。本次畢業(yè)設計就選用此傳感器。其示意圖如圖3-2。特點:</p><p> ?。?)(3. 8~24)VDC供電</p><p>  (2)磁特性溫度補

41、償 </p><p> ?。?)數字電流沉輸出 </p><p>  (4)可消除機械壓力產生的作用</p><p> ?。?)絕對最高電流50mA </p><p>  (6)可定制特殊動功釋放點 圖3-2開關型霍爾傳感

42、器示意圖</p><p> ?。?)工作溫度范圍( - 40~150) ℃ </p><p>  當車輪上的磁條轉動到接近霍爾傳感器的位置時,SS443A將接受到磁感應,此時傳感器輸出一個無抖動的低電平,此低電平使得AT89S52接受到信號,據此計算出里程數、實時速度等。其原理如圖3-3所示</p><p>  圖3-3傳感器測距示意圖</p>

43、;<p>  電動車輪子一般為16寸,周長S大概為1330mm,即約為1.33m。兩次相鄰信號直間的時間間隔為t秒,瞬時速度: </p><p><b>  Vs=S/t </b></p><p>  單位為m/s。此時記為一個單位的距離。用這個測量的實時速度與設定的報警速度上限比較,若大于報警上限,則報警。當脈沖個數為N個,初始里

44、程數為L c時,總里程長度:</p><p>  L n=N*L+L c </p><p>  單位為m,用數字頻率計計數,起動標準轉速發(fā)生裝置,使其帶動傳感器在額定轉速范圍內轉動,讀取不同轉速時標準轉速發(fā)生裝置轉動次數K2與數字頻率計的計數值K1。</p><p>  3.1.1信號轉換電路設計</p><p>  如圖3-4所示,系統(tǒng)的信

45、號處理電路由二級電路構成,第一級是由開關三極管組成的零偏置放大器,采用開關三極管可以保證放大器具有良好的高頻響應。當輸入信號為零或負電壓時,三極管截止,電路輸出高電平;而當輸入信號為正電壓時,三極管導通,此時輸出電壓隨著輸入電壓的上升而下降,這使得速度里程表既可以測量任意方波信號的頻率,也可以測量正弦波信號的頻率。由于放大器的放大功能降低了對待測信號的幅度要求,因此,系統(tǒng)能對任意大于0.5V 的正弦波和脈沖信號進行測量。預處理電路的第二

46、級采用帶施密特觸發(fā)器的反相器DM74LS14 來把放大器生成的單相脈沖轉換成與COMS 電平相兼容的方波信號[9],如圖3-5所示,同時將輸出信號加到單片機的P1.1 口上。</p><p>  利用施密特觸發(fā)器狀態(tài)轉換過程中的正反饋作用,可以把邊沿變化緩慢的周期性信號變換為邊沿很陡的矩形脈沖信號。輸入的信號只要幅度大于VT+,即可在施密特觸發(fā)器的輸出端得到同等頻率的矩形脈沖信號[9],信號轉換電路原理框圖如圖3

47、-6所示。</p><p>  圖3-4 信號轉換電路圖 圖3-5 信號轉換示意圖</p><p>  圖3-6 信號轉換電路原理框圖</p><p>  3.2人機接口電路設計</p><p>  在本系統(tǒng)中我們采用五個按鍵和八個LED顯示數碼管,選用的是鍵盤顯示器的專用智能控制芯片HD7

48、279。</p><p>  HD7279是管理鍵盤和LED顯示器的專用智能控制芯片,該芯片采用串行接口方式,可同時驅動8位共陰極LED數碼管或64位獨立LED發(fā)光二極管,同時能對多達8×8的鍵盤矩陣進行監(jiān)控,具有自動消除鍵抖動并識別按鍵代碼的功能。從而可以提高CPU的工作效率,同時其串行接口方式又可簡化CPU接口電路的設計[10]。</p><p>  HD7279的主要特點:

49、</p><p>  (1)CPU間采用串行接口方式,僅占用4根端口線;</p><p>  (2)內部含有譯碼器,可直接接受BCD碼或16進制碼,同時具有2種譯碼方式,實現LED數碼管位尋址和段尋址,消隱和閃爍屬性等多種控制指令,編程靈活;</p><p>  (3)循環(huán)左移和循環(huán)右移指令;</p><p>  (4)內部含有驅動器,無需外

50、圍元件可直接驅動LED;</p><p>  (5)具有級聯功能,可方便的實現多于8位顯示或多于64鍵的鍵盤接口;</p><p>  (6)具有自動消除抖動并識別按鍵的功能。</p><p>  HD7279 與 AT89C52 僅需4條口線,其中CS為片選信號。當AT89C52訪問HD7279時,應將片選端置為低電平。DATA為串行數據/輸出端,當不向HD727

51、9發(fā)送數據時,DATA為輸入端;當HD7279輸出鍵盤代碼時,DATA為輸出端。CLK為數據串行傳送的同步時鐘輸入端,時鐘的上升沿表示數據有效。KEY為按鍵信號輸出端,在無鍵按下時為高電平;而有鍵按下時此引腳變?yōu)榈碗娖讲⑶乙恢北3值芥I釋放為止。</p><p>  RC引腳用于連接HD7279的外接振蕩元件,其典型值為R=1.5KΩ,C=15Pf。</p><p>  RESET為復位端。

52、該端由低電平變成高電平并且保持25ms即復位結束。通常,該端接+5V即可。</p><p>  實際應用電路中,8只下拉電阻和8只鍵盤連接位選線DIG1~DIG7的8只位選電阻的阻值應遵從一定比例關系,下拉電阻應大于位選電阻的5倍而小于其50倍,典型值是10倍。在本系統(tǒng)中,我們選用了100K的下拉電阻和10K的位選電阻。AT89C52和HD7279連接圖如圖3-7所示,</p><p> 

53、 圖3-7 HD7279與AT89C52接口電路</p><p>  AT89C52與HD7279引角的連接和相關的地址分配如下:</p><p>  CS:片選,低電平有效,與P1.4相連;</p><p>  CLK:串行時鐘輸入端,與P1.5相連;</p><p>  DATA:串行數據輸入/輸出端,與P1.6相連;</p>

54、;<p>  KEY:按鍵有效信號端,與P1.7相連。</p><p>  在本次設計中利用7279實現鍵盤和顯示器的人機交互。鍵盤和顯示器由HD7279管理,實現5個按鍵的功能:設置鍵 清零鍵、增鍵、左移鍵、確認鍵。以及顯示器的顯示功能:由LED數碼管組成,前4位顯示提示號,后4位顯示具體測量值。</p><p>  LED顯示如圖3-8所示:</p><

55、;p>  圖3-8 LED顯示圖</p><p><b>  3.3存儲電路設計</b></p><p>  X5045作為單片機系統(tǒng)電路的一個輔助芯片,它將復位、電壓檢測 、看門狗定時器和快鎖存保護的串行 PROM功能集合在一個芯片內;采用SPI總線串行外設接口方式,降低了系統(tǒng)成本并減少了對電路板空間的要求,提高了系統(tǒng)的可靠性;適合于需要現場修改數據的場合,廣

56、泛應用與儀器儀表和工業(yè)自動控制等領域[13]。</p><p>  X5045有4種功能:上電復位、低電平檢測、看門狗定時器和SPI串行 PROM。</p><p> ?。?)上電復位:當器件通電并超過VCC門限電壓時,X5045內部的復位電路將會提供一個約為200ms的復位脈沖讓微處理器能正常復位。</p><p> ?。?)低電壓檢測:工作過程中X5045監(jiān)測電

57、源電壓下降并且在電源電壓跌落到VCC門限電壓以下時,產生復位脈沖并保持有效直到電源電壓1V以下。如果電源電壓在降落到門限電壓后上升,復位信號消失,微處理器可以繼續(xù)工作。</p><p> ?。?)看門狗定時器:看門狗定時器對微處理器提供了一個因外界干擾而引起程序陷入死循環(huán)或“跑飛”狀態(tài)的保護功能。</p><p> ?。?)串行 PROM存儲器:X5045的存儲器部分是具有塊鎖保護CMOS

58、 4KB串行 PROM。它被組織成8位的結構,由一個四線構成的SPI總線方式進行操作,一次最多可寫16B。</p><p>  在本次設計中主要利用X5045串行 PROM存儲測和報警上限值,和通過具看門狗定時器功能保證AT89C52出現死循環(huán)或“跑飛”狀態(tài)的情況下能回到正常狀態(tài)下繼續(xù)工作[13]。AT89C52與X5045 之間的接線圖如圖3-7所示。</p><p>  圖3-7 AT

59、89C52與X5045的接線圖</p><p><b>  3.4報警電路設計</b></p><p>  報警電路硬件部分主要由蜂鳴器和發(fā)光二極管組成,當超過設定的報警上限時(根據相關法規(guī)電動車最高時速不得超過20Km/h),發(fā)出信號使得發(fā)光二極管發(fā)光,蜂鳴器工作,發(fā)出蜂鳴聲。當低于報警上限時,燈熄滅,蜂鳴器停止發(fā)聲。蜂鳴器電路連接圖如圖3-8所示。</p&g

60、t;<p>  圖3-8 蜂鳴器報警電路連接圖</p><p>  第四章 系統(tǒng)軟件設計</p><p>  我認為軟件是整個畢業(yè)設計的最核心部分,一切的硬件設計都是通過軟件來實現的,軟件的成功與否是關系到整個系統(tǒng)的最后運行,單片機所具有的智能功能要由軟件來完成,因此要實現單片機的智能化,是離不開軟件的。因此,我把軟件設計作為我的工作重點。這里通過程序框圖來介紹本人的軟件設計

61、思想。</p><p>  本次畢業(yè)設計軟件部分主要包括:主程序設計、中斷程序設計、鍵處理程序設計、顯示程序設計、報警程序設計。</p><p><b>  4.1主程序設計</b></p><p>  程序設計采用模塊化設計,主程序僅完成對電路中各個接口芯片的初始化及定時器初始化、中斷向量初始化以及中斷處理,然后進入休眠狀態(tài)。</p&g

62、t;<p>  主程序流程圖如4-1所示</p><p>  圖4-1 主程序流程圖</p><p>  主程序流程圖如4-1所示,完成初始化功能,然后進入休眠狀態(tài),由溢出中斷喚醒后,在執(zhí)行完T2的中斷程序后,會重新進入休眠狀態(tài),可減少功耗和提高抗干擾能力。</p><p>  (1) 內存變量初始化是對內存變量單元中從20H~FFH的RAM地址進行清

63、零處理,因為在偽指令中定義了大量變量,若不對內存變量清零將會使程序執(zhí)行不穩(wěn)定,顯示器上也會出現亂碼。定時器T2初始化是因為設置了T2為捕獲方式 ,實時監(jiān)測P1.1管腳輸入的方波信號。</p><p>  (2) X5045初始化主要是對其狀態(tài)寄存器進行設置,本次設計中X5045的所有單元地址均可進行寫入操作,看門狗定時器的喂狗周期設置為200ms,寫入狀態(tài)寄存器常數STTAUS-REG=20,所以寫入的命令字為2

64、0H。</p><p>  (3) HD7279的初始化是對I/O進行高低電平的初始化,同時向HD7279發(fā)送復位指令(A4H),所有的顯示、設置的字符、閃爍等屬性也將被一起清除。</p><p>  (4) 判斷定時器T2溢出中斷的標志位TF_FIG是否為1,當為1時,表示是溢出中斷,才會從休眠中喚醒AT89C52,如果沒有判斷,T2的溢出和沿中斷都會喚醒休眠,這樣是為了保持時序的準確,

65、不會混亂,。</p><p>  (5) 判斷SYS_STA是否為0,以及更新采樣值是為了可以實時顯示采樣值,提高系統(tǒng)的實時性,如果少了判斷及更新,顯示需要經過設置鍵的一輪過程才會更新,不會實時顯示出采樣值。</p><p>  (6) 鍵處理模塊主要是對按鍵進行處理,對是否有按鍵進行判斷,若有按鍵則根據鍵值進行相應的處理,否則返回。包括在對鍵值進行確定后就可使用按鍵對各參數進行修改。&l

66、t;/p><p>  (7) 顯示及閃爍模塊主要是對當前測量值或各個設定狀態(tài)值進行顯示,對LED顯示器進行管理,夠有效的對設定參數,采樣數據進行顯示,可改參數位呈現閃爍狀態(tài),數據顯示一目了然,可以對被控對象有直觀的了解。從而使使用者的操作更加方便、簡潔。</p><p>  (8) 報警:提取采樣值,與X5045內報警上下限進行比較,如超出范圍調用報警程序,拉低蜂鳴器,否則返回。</p&

67、gt;<p>  (9) 看門狗定時器進行“喂狗”處理,方法很簡單,通過對其片選端CS進行置低再置高操作既可,以防止一種因外界干擾而引起程序陷入死循環(huán)或“跑飛”的狀態(tài),起到一個保護的功能。</p><p>  相關的主要變量和常量及地址分配偽指令表,一般安排在主程序開始時采用偽指令方式說明,設計中的變量和常量用表格分類說明,如表4-1,4-2, 4-3所示。</p><p>

68、  表4-1 片內RAM主要變量分配偽指令表</p><p>  表4-2 HD7279地址分配偽指令</p><p>  表4-3 X5045主要變量分配偽指令表</p><p><b>  4.2中斷程序設計</b></p><p>  此次設計要采樣脈沖信號,因此選用了16位的定時器T2,利用它的捕獲方式捕獲

69、脈沖測出頻率。在程序設計時,發(fā)現測頻時,定時器T2與T0中斷程序互相干擾,嘗試設置T0中斷優(yōu)先級,仍然干擾。然后在**指導下,直接從主程序中刪除定時器T0的初始化程序以及T0的中斷服務程序,只留T2的初始化及中斷采樣程序。將鍵處理模塊、顯示模塊的程序放在主程序的休眠程序中,由定時器T2的溢出中斷喚醒休眠。然后設置了標志位TF_FIG判斷是溢出中斷還是沿中斷,選擇是否喚醒休眠。</p><p>  編寫T2采樣程序

70、,考慮到數據的范圍,采用了三字節(jié)浮點數表示法表示數據,將數據轉化為浮點數,調用了浮點數的規(guī)格化、加減及乘除子程序處理數據。調試程序后,發(fā)現系統(tǒng)可以測出脈沖的頻率,但數據顯示并不穩(wěn)定,經過老師提示,在T2采樣程序中加入堆棧指針,用來保護采樣數據。加入堆棧后,系統(tǒng)可以準確測出脈沖頻率,并且數據顯示穩(wěn)定。</p><p>  編寫里程、速度計算程序,再次校對了各個地址變量的地址分配,00H~1FH為工作區(qū)寄存器,20H

71、~2FH為位尋址區(qū),30H~7FH是通用RAM區(qū),將各個地址變量分配在通用RAM區(qū),防止地址定義混亂。經過多次修改與調試,程序調試成功,可以準確測出電動車當前行駛里程與速度,并能穩(wěn)定顯示。</p><p>  以下介紹定時器T2捕獲方式工作原理及測頻原理圖。</p><p>  T2捕獲方式測頻原理示意圖,如圖4-2所示,</p><p>  圖4-2測頻原理示意圖

72、</p><p>  T2捕獲方式工作原理:在捕捉方式中,沿中斷和溢出中斷的觸發(fā)方式由T2的控制位EXEN2來選擇。當EXEN2=0時,T2是一個16位定時器,計數溢出時,溢出標志位TF2置位,同時激活中斷。當EXEN2=1時,T2完成相同的操作,而且當T2EX引腳外部輸入信號發(fā)生“1”至“0”負跳變時, TH2和TL2中的值被捕獲到寄存器RCAP2H和RCAP2L中。另外,T2EX引腳信號的負跳變使得T2CON

73、中的EXF2置位,與TF2相仿,EXF2也會激活中斷[10]。定時器T2的捕獲方式如圖4-3所示,</p><p>  圖4-3定時器T2的捕獲方式</p><p>  本設計采用 T2定時中斷測頻,中斷源包括溢出中斷和沿中斷。溢出中斷判斷是否來過沿中斷,計算溢出次數;沿中斷則是響應后,捕獲此時T2中的TH2,TL2存到RCAP2H,RCAP2L 兩個寄存器中。</p>&l

74、t;p>  中斷程序種用到了二個標志位分別是:FF_FIG和TF_FIG.</p><p>  (1)FF_FIG:設FF_FIG=1,初始化中將FF_FIG置1,表示從沒來過沿中斷,當第一個沿來時,將FF_FIG置零,此時將計算中需要用到的變量初始化,然后中斷返回。</p><p> ?。?)TF_FIG: 為溢出標志位,當溢出中斷時,將其清零,使休眠只有在溢出時才會被喚醒,防止時

75、序發(fā)生混亂。</p><p>  圖4-4 T2中斷程序流程圖</p><p>  T2中斷程序流程圖如圖4-4所示,進入中斷程序時,首先,根據的EXF2,TF2的值判斷是溢出中斷還是沿中斷,當TF2的值為1時,是溢出中斷,執(zhí)行溢出子程序。再判斷FF_FIG值,FF_FIG=0時,表示來過沿中斷,執(zhí)行程序,溢出次數加1返回;FF_FIG=1表示沒來沿中斷,返回。然后判斷EXF2值,EXF2

76、=1時,表示是沿中斷,執(zhí)行沿中斷子程序,若FF_FIG=1,則是第一次沿,捕獲TH2,TL2,后返回;若FF_FIG=0,則是第二次沿,捕獲后,壓入堆棧,進行數據處理,彈出返回。 </p><p>  兩次響應后,由頻率的計算公式:</p><p>  T=65536*F_CYC2+F_H2; (式4.1)</p>

77、<p>  f=1/T。 (式4.2)</p><p>  其中F_CYC2表示溢出中斷次數,F_H2表示兩次捕獲值之差,T表示一個周期的寬度,f表示1秒鐘的頻率數。</p><p>  S=3600* f* L (Km/h)

78、 (式4.3)</p><p>  V= 3600*f * S (式 4.4)</p><p>  其中S表示里程,V表示當前行駛速度,L表示電動車車輪周長。</p><p>  再由式4.3、4.4計算出電動車當前行駛速度與里程值。</p><

79、p>  4.3鍵處理程序設計</p><p>  鍵處理程序主要用來管理鍵盤,判斷并讀取鍵值,和主機芯片共同管理按鍵。此次設計的5個按鍵包括:設定鍵、清零鍵、增加鍵、左移鍵和確定鍵。</p><p>  鍵處理程序中用到了三個變量標志位:KEY_OK、KB_FIG和KEY_IN。</p><p> ?。?)KEY_OK:表示按鍵按下的標志位。當KEY_OK=1

80、時,無鍵按下,鍵處理程序結束;當KEY_OK=0時,證明有鍵按下,鍵處理程序繼續(xù)執(zhí)行。AT89C52的P1.7與HD7279的KEY按鍵信號輸出端相連。</p><p> ?。?)KB_FIG:表示按鍵處理標志位,判斷按鍵是否處理過,因為有這個變量可以避免當同一鍵被一直按下時進行多次處理。當KB_FIG=1時,鍵已經處理過,因此不再處理,鍵處理程序結束;當KB_FIG=0時,鍵未被處理過,鍵處理程序繼續(xù)執(zhí)行。&l

81、t;/p><p> ?。?)KEY_IN::表示按鍵的鍵值,每次讀到的鍵值放入KEY_IN中,再通過比較判斷具體是哪個鍵按下,因為有這個變量使程序的可讀性加強。</p><p>  按鍵程序設計分配在每個時間片內完成一次,間隔50ms,通過設置按鍵標志位,保證按一次鍵響應一次,按鍵模塊流程如圖4-5所示。</p><p>  圖4-5鍵處理程序流程圖</p>

82、<p>  進入鍵處理程序時,首先,根據KEY_OK的值判斷有無按鍵,若KEY_OK=1,說明無鍵按下,鍵處理程序結束;若KEY_OK=0,說明有鍵按下,鍵處理程序繼續(xù)執(zhí)行。再根據KB_FIG的值判斷此按鍵是否處理過,若KB_FIG=1,說明按鍵已經處理過,因此不再處理,鍵處理程序結束;若KB_FIG=0,說明鍵未被處理過,鍵處理程序繼續(xù)執(zhí)行,進行鍵值的判斷,當讀取完鍵值后,進入對應的鍵程序,執(zhí)行相應的鍵功能。當執(zhí)行完鍵處

83、理程序后,將KEY_OK,KB_FIG清零,否則,將不會再進入鍵處理模塊。</p><p>  本次設計的5個按鍵分別是:設定鍵(20H)、清零鍵(18H)、增加鍵(10H)、左移鍵(08H)、確認鍵(00H)。對應的鍵碼和功能如表4-4所示。</p><p>  表4-4 按鍵功能及鍵碼表</p><p>  4.3.1設定鍵子程序設計</p>&

84、lt;p>  設定鍵的程序流程如圖4-6所示。</p><p>  圖4-6設定鍵子程序流程圖</p><p>  設定鍵標志位“STATE”初始值賦為“0”,每按下一次設定鍵時,“STATE”中的值當自加一次,當“STATE”為“3”時重新被賦值為“0”。當“STATE”為“0”時對應顯示當前里程值,而“STATE”為“1”時對應顯示當前速度值,當“STATE”中值為“2”時對應報

85、警上限參數,參數值從X5045中讀取。減小、增加、左移、閃爍功能,只有在設置參數時才啟用。</p><p>  4.3.2增加鍵子程序設計</p><p>  增加鍵的程序流程如圖4-7所示</p><p>  圖4-7增加鍵子程序流程圖</p><p>  字位閃爍時,按下增加鍵,數字將會自動加1,當數字加到9時,再按一次增加鍵數字會變成0

86、。同樣,增加鍵可以改的數據有里程參數和時間,其它的實時采樣值是不允許改的。在進入增鍵程序之前也要對SET_STA進行判斷。</p><p>  4.3.3左移鍵子程序設計</p><p>  左移鍵用于修改閃爍的位置,左移鍵的程序流程如圖4-8所示。</p><p>  圖4-8左移鍵子程序流程圖</p><p>  左移功能是在按下左移鍵時

87、,閃爍位會對應的左移一位,相應的參數也就可以修改。本次設計中的閃爍位只有四位,從右數第一位到第四位,因此,當閃爍位移動到第四位時,再按一下左移鍵,閃爍位會回到右數第一位進行閃爍,如此形成循環(huán)。</p><p>  4.3.4確認鍵子程序設計</p><p>  確認鍵的流程圖如4-9所示。</p><p>  圖4-9確認鍵子程序流程圖</p><

88、;p>  確認鍵將主機芯片與存儲芯片聯系起來,用戶參數經過修改后,按下確認鍵,參數將會保存在對應的存儲單元中。當按下確認鍵時,程序會判斷先SET_STA值,若為0、1則不進行鍵處理,若為其它值則執(zhí)行確認鍵的功能。確認鍵主要將報警的上限值存入X5045中,因為X5045有掉電保護功能,將會保留存儲的數據,因此,當儀表再次上電時,設定的參數不用再次設定,可以直接使用。在設定完當前參數時,再按一下確認鍵,顯示器將切換到下一個設定參數,操

89、作簡單易行。</p><p><b>  4.4顯示程序設計</b></p><p>  顯示模塊中,所有LED都采用HD7279的方式0進行譯碼,而每個LED的BCD碼在單片機中都有一個固定的存儲單元,為顯示緩沖區(qū)DR0--DR7,譯碼方式選擇好以后,便開始調用HD7279程序,將DR0--DR7中的數值顯示。顯示時第一到第四個LED顯示的是電動車行駛里程與速度值,

90、第五個到第八個顯示的是當前狀態(tài)提示符。</p><p><b>  具體的表示符號為:</b></p><p>  1.LP--表示瞬時里程采樣 2.PP--表示里程累積 3.LH--表示速度值 </p><p>  4.EH--表示報警上限 </p><p>  圖4-10顯示程序流程圖</p&g

91、t;<p>  顯示程序流程圖如圖4-10所示,顯示程序主要將主機芯片AT89C52與HD7279聯系起來,用來顯示采樣值,修改設定參數顯示。在顯示采樣值時,除設定鍵以外,其余鍵均不動作、同時不執(zhí)行閃爍命令,只有在顯示設定參數時,才執(zhí)行其它命令。顯示模塊中包括對LED發(fā)送命令字及閃爍處理,在設定報警上限參數值時,需要對LED的3個可修改位(LED3,LED2,LED1)進行閃爍處理,結合左移鍵、確認鍵實現對X5045的讀和

92、寫。</p><p>  閃爍程序流程圖如圖4-11所示,</p><p>  圖4-11閃爍程序流程圖</p><p><b>  4.5報警程序設計</b></p><p>  采樣程序結束后,將采樣值轉換成BCD碼按位存儲到地址單元中,然后在X5045中找到存儲報警上限參數的的地址單元,按位讀取,由于存入X5045

93、中的參數值也是以BCD碼的形式存儲的,所以可以將報警上限值與采樣的BCD碼值直接從低位到高位依次相減,然后判斷進位位是否為一,若為1,說明電動車當前行駛速度值大于報警上限值,超速,則對應的上限標志位FLAG置1,發(fā)光二極管亮。若進位位為0,表示電動車當前行駛速度小于報警上限,未超速[17]。</p><p>  程序流程圖如圖4-12所示,</p><p>  圖4-12報警程序流程圖&l

94、t;/p><p>  第五章 電動車里程表的測試</p><p><b>  5.1測試方法</b></p><p>  測試中我們主要通過顯示和按鍵兩種模式測試電動車的各項功能。在實際檢測中,采用信號發(fā)生器來模擬霍爾傳感器的脈沖輸出,信號發(fā)生器輸出接單片機的脈沖輸入口P1.1。通過模擬過程測出脈沖頻率,并計算累計出當前行駛里程和速度。車輪的周長為

95、L米,單片機每接收到一個脈沖信號就代表車輪轉動一周,系統(tǒng)會自動將當前的里程進行累加。</p><p>  設定輪圈的周長為L米,在電動車車輪上安裝了n個永久磁鐵,分計算后的里程值最大誤差約為L/n。經分析計算,此次設計中取了n=1。</p><p><b>  5.2誤差分析</b></p><p>  分析系統(tǒng)可知,通過測脈沖頻率計算行駛里程

96、和速度,計算及程序運行過程中產生誤差較小。實驗測試時,采用信號發(fā)生器模擬脈沖輸入,信號發(fā)生器本身存在誤差。分析時,沒有考慮到器械誤差,后來誤把產生的誤差當作系統(tǒng)誤差分析,后在老師指導下,考慮到下降沿捕獲過程中產生的誤差,這個誤差才是整個系統(tǒng)的最大誤差。</p><p>  如圖5-1所示,由于溢出周期同一個鐘表一樣,每65536us溢出一次,溢出率=1/65536*106=15Hz,但此時可能從沒有來過脈沖,也沒

97、有下降沿到來,因此會產生一個誤差。</p><p>  圖5-1 溢出周期示意圖</p><p>  晶振頻率為12MHz時,一個機器周期Tcy為1us,在一個溢出周期內,對兩次的捕獲結果作差,最大可能產生2Tcy的誤差。由于相關的法律法規(guī)規(guī)定電動車最高速度不能超過20Km/h,故速度測量范圍20Km/h,而與此對應的脈沖頻率f約為4Hz,周期T約為0.25s=250000us。</

98、p><p>  計算系統(tǒng)相對誤差u為:</p><p>  u=±2/250000 *100% =± 0.0008%</p><p>  由計算結果可知誤差數據較小,在儀表精度要求范圍內,滿足設計要求。</p><p>  第六章 硬件和軟件調試</p><p><b>  6.1硬件調試&l

99、t;/b></p><p>  將萬用表跳到歐姆檔(短路測試),對照電路原理圖依次測量各個觸點是否正常通電導通(如萬用表發(fā)出“嘀嘀”聲,說明電路正常)。按照電路原理圖將各個元器件焊接在印刷電路板上,檢查各焊點有無虛焊、短接等情況,保證焊接質量較好。接電源,按鍵顯示正常,用萬用表檢驗輸出數據真實性,基本吻合。</p><p><b>  6.2軟件調試</b>&l

100、t;/p><p>  6.2.1 調試方法及優(yōu)點</p><p>  此次設計采用了模塊化思想編寫程序,調試程序也是分塊調試,首先將編寫好的模塊程序利用星研單片機仿真技術進行調試,檢查語法錯誤,在確定無語法錯誤后,將仿真頭和硬件電路相接,在線調試該模塊,檢查邏輯錯誤,若程序能實現所需的功能后,用SUPERPR2000編程器將.hex文件寫入芯片中,然后將芯片與實驗設備連接,調試程序看是否能顯示

101、預設值,該模塊調試通過后,繼續(xù)進行下一模塊的添加,重復上述步驟。</p><p>  采用模塊化調試程序的優(yōu)點:使調試更具目標性,降低盲目性,且提高了調試速率。在調試通過在模塊基礎上添加另一模塊程序,繼續(xù)調試,避免了整體程序一起調試出現的問題。</p><p>  軟件調試主要是利用星研軟件,用星研仿真器調試過程中遇到的問題及注意事項:</p><p> ?。?)注

102、意程序中英輸入的區(qū)別(仿真器僅僅識別英文輸入字體)。</p><p> ?。?)程序中的偽指令之間不能相互占用地址或空間。</p><p> ?。?)仿真器的設置與操作一定要嚴格遵循仿真器說明書,并了解仿真頭的規(guī)格。</p><p> ?。?)應仔細檢查子程序中是否有死循環(huán)。</p><p> ?。?)注意仿真器具有自我保護功能(即X5045

103、的復位功能對仿真頭沒有作用,仿真器具有自我保護功能)。</p><p> ?。?)安裝仿真軟件時,應該安裝Kiel文件到安裝盤符,否則無法運行仿真軟件。</p><p>  (7)通過仿真器調試的程序,并不代表最后的程序,一定要考慮X5045的復位程序是否存在。</p><p> ?。?)程序調試應該先單步運行,然后單步連續(xù)運行、最后到全速運行,應該遵循循序漸進的規(guī)

104、律。</p><p>  6.2.2 調試出現的問題及解決方法</p><p>  (1)語法錯誤:編寫程序的初期階段由于經驗不足,經KEIL軟件進行調試總會發(fā)現一些語法錯誤。如:</p><p>  錯誤1:CJNE LEFT,#00H,SJ 改正: MOV A,LEFT CJNE A,#00H,SJ</p><p>  錯誤2

105、:CJNE A,#00H,KEY_LEFT 原因 KEY_LEFT程序距離太遠,超出范圍。</p><p>  錯誤3:未定義KEY_OK 改正:在偽指令中定義 KEY_OK BIT 10H</p><p>  諸如此類錯誤還有很多,在此就不一一列舉了,但是隨著程序編寫,更加熟練,此類錯誤漸漸減少,后期主要解決的是邏輯錯誤。</p><p>

106、;  (2)邏輯錯誤:確定編寫完成的程序無語法錯誤后,將程序用SUPERPR2000編程器將.HEX文件寫入芯片中,然后將芯片與實驗設備連接,調試程序看是否能顯示預設值。調試時,發(fā)現的問題主要有:</p><p><b>  一、鍵處理方面</b></p><p>  (1)在編寫設定鍵時,將程序寫入芯片中,發(fā)現不能切換按鍵</p><p> 

107、 原因:1、處理按鍵后,未將處理按鍵標志位置1,以表示按鍵已處理。</p><p>  2、改變設定鍵的狀態(tài)(SET_STA)時,未將改變后的值存入SET_STA.</p><p>  (2)上電后,發(fā)現LED不顯示</p><p>  原因:程序運行陷入死循環(huán)。</p><p>  (3)閃爍位置不對,與要改變位不符</p>

108、<p>  原因:編增增減時四位與后四位顛倒</p><p>  (4)增減循環(huán)時,按-,E,H,L,P,0-9的順序循環(huán)。</p><p>  原因:后四位的顯示方式都是按照方式0的譯碼顯示的。恰好LED的顯示9以后顯示的時-,E,H,L,P,所以控制LED的循環(huán)方式時應先減1,再判斷顯示字是否與00H相等。</p><p>  (5)按鍵與所讀鍵值不符

109、</p><p>  原因:HD7279子程序中讀取按鍵代碼子程序RECE多移了一位。</p><p>  二、X5045的讀寫</p><p>  (1)X5045讀寫進不去</p><p>  原因:1、輸入的字符命令如 WRER 前應加 #</p><p>  2、子程序從X5045中讀出8位數據和向X5045中

110、寫入8位數據子程序INBYTE,OUTBYTE時序不對。</p><p>  3、將數據寫入指定的E²PROM地址開始的單元子程序漏掉一條OUTBYTE指令。</p><p>  (2)報警上下限、量程上下限顯示三個小數點</p><p>  原因:偽指令將SI與SCK定義錯誤。</p><p>  (3) X5045能讀出數,但是

溫馨提示

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

評論

0/150

提交評論