版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
1、<p><b> 本科畢業(yè)論文</b></p><p> 題 目: 電動(dòng)車?yán)锍瘫肀O(jiān)控軟件設(shè)計(jì)</p><p> 院 系: </p><p> 專 業(yè): </p><p> 班 級(jí):
2、 </p><p> 學(xué)生姓名: </p><p> 指導(dǎo)教師: </p><p> 論文提交日期:年 月 日</p><p> 論文答辯日期:年 月 日</p><p> 畢業(yè)設(shè)計(jì)(論文)任務(wù)書
3、</p><p><b> 摘 要</b></p><p> 里程表應(yīng)用廣泛,機(jī)械式里程表有其不足之處。本文以設(shè)計(jì)電動(dòng)車?yán)锍瘫頌槟康?,提出了電?dòng)車?yán)锍瘫淼脑O(shè)計(jì)方案。設(shè)計(jì)智能自動(dòng)化的里程表,利用霍爾效應(yīng)原理,引入霍爾傳感器,采用脈沖檢測(cè)的方法測(cè)量行駛速度與里程。并設(shè)計(jì)了用戶界面,可以實(shí)現(xiàn)超速報(bào)警及用戶自設(shè)定參數(shù)值,既可以實(shí)現(xiàn)測(cè)速也實(shí)現(xiàn)了自動(dòng)化和智能化。通過(guò)實(shí)驗(yàn)驗(yàn)證,
4、此方案可行。</p><p> 本文介紹了電動(dòng)車?yán)锍瘫淼墓ぷ髟?、結(jié)構(gòu)和以AT89C52單片機(jī)為核心的脈沖檢測(cè)系統(tǒng)硬件設(shè)計(jì)及軟件設(shè)計(jì)的相關(guān)內(nèi)容。設(shè)計(jì)以AT89C52 單片機(jī)為主控芯片,用定時(shí)器T2的捕獲功能捕獲脈沖,并測(cè)出脈沖的頻率,利用HD7279實(shí)現(xiàn)按鍵及顯示的功能,X5045存儲(chǔ)用戶參數(shù),由鍵盤控制里程與速度的切換顯示。</p><p> 軟件設(shè)計(jì)部分,采用了模塊化的設(shè)計(jì),編程選
5、用了匯編語(yǔ)言,程序由采用程序和各功能子程序組成。主要有監(jiān)控系統(tǒng)主程序,頻率測(cè)量子程序,人機(jī)接口子程序,報(bào)警子程序組成,通過(guò)使用星研仿真器對(duì)程序進(jìn)行調(diào)試。</p><p> 本文側(cè)重軟件的實(shí)現(xiàn),硬件部分描述了硬件接口電路框圖及各芯片功能,最后進(jìn)行了計(jì)算機(jī)輔助線路設(shè)計(jì)。此次設(shè)計(jì)的里程表結(jié)構(gòu)簡(jiǎn)單,穩(wěn)定性較好,實(shí)用性強(qiáng),易實(shí)現(xiàn),達(dá)到了設(shè)計(jì)目的。</p><p> 關(guān)鍵字:?jiǎn)纹瑱C(jī); 測(cè)頻;霍爾傳
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國(guó)內(nèi)外研究現(xiàn)狀1</p><p> 1.3課題研究意義2</p><p> 1.4本課題研究?jī)?nèi)容2</p><p> 第二章 整體方案設(shè)計(jì)
16、4</p><p> 2.1系統(tǒng)設(shè)計(jì)方案4</p><p> 2.2系統(tǒng)工作原理4</p><p> 2.3系統(tǒng)技術(shù)指標(biāo)5</p><p> 第三章 系統(tǒng)硬件設(shè)計(jì)6</p><p> 3.1傳感器選型6</p><p> 3.1.1信號(hào)轉(zhuǎn)換電路設(shè)計(jì)8</p>
17、<p> 3.2人機(jī)接口電路設(shè)計(jì)9</p><p> 3.3存儲(chǔ)電路設(shè)計(jì)11</p><p> 3.4報(bào)警電路設(shè)計(jì)12</p><p> 第四章 系統(tǒng)軟件設(shè)計(jì)13</p><p> 4.1主程序設(shè)計(jì)13</p><p> 4.2中斷程序設(shè)計(jì)16</p><p>
18、; 4.3鍵處理程序設(shè)計(jì)19</p><p> 4.3.1設(shè)定鍵子程序設(shè)計(jì)21</p><p> 4.3.2增加鍵子程序設(shè)計(jì)22</p><p> 4.3.3左移鍵子程序設(shè)計(jì)22</p><p> 4.3.4確認(rèn)鍵子程序設(shè)計(jì)23</p><p> 4.4顯示程序設(shè)計(jì)24</p>&
19、lt;p> 4.5報(bào)警程序設(shè)計(jì)26</p><p> 第五章 電動(dòng)車?yán)锍瘫淼臏y(cè)試28</p><p> 5.1測(cè)試方法28</p><p> 5.2誤差分析28</p><p> 第六章 硬件和軟件調(diào)試30</p><p> 6.1硬件調(diào)試30</p><p>
20、6.2軟件調(diào)試30</p><p> 6.2.1 調(diào)試方法及優(yōu)點(diǎn)30</p><p> 6.2.2 調(diào)試出現(xiàn)的問(wèn)題及解決方法31</p><p> 第七章 設(shè)計(jì)總結(jié)33</p><p><b> 參考文獻(xiàn)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> 里程表的原理很簡(jiǎn)單,因?yàn)檐囕喌闹睆揭阎?,車輪的圓周長(zhǎng)便是恒定不變的。由此可以計(jì)算出每走一里路車輪要轉(zhuǎn)多少圈,這個(gè)數(shù)也是恒定不變的。因此只要能夠自動(dòng)把車輪的轉(zhuǎn)數(shù)積累下來(lái),然后除以每一里路對(duì)應(yīng)的轉(zhuǎn)數(shù)就可以得到行駛的里程了[1]。</p><p> 電動(dòng)車被
23、發(fā)明及使用到現(xiàn)在已有兩百多年的歷史,這兩百年間人類在不斷的嘗試與研發(fā)過(guò)程中,將玩具式的木馬車轉(zhuǎn)換到今日各式新穎休閑運(yùn)動(dòng)電動(dòng)車。我國(guó)是電動(dòng)車大國(guó),隨著人們生活水平的不斷提高,電動(dòng)車已經(jīng)不僅僅是運(yùn)輸、代步的工具,其輔助功能也變得越來(lái)越重要。因此,人們希望電動(dòng)車的娛樂(lè)、休閑、鍛煉的功能越來(lái)越多,能帶來(lái)大家更多的健康與快樂(lè)。在這個(gè)背景下,電動(dòng)車?yán)锍瘫碜鳛殡妱?dòng)車的一大輔助工具迅速發(fā)展起來(lái),其功能也逐漸從單一的里程顯示發(fā)展到速度、時(shí)間顯示,甚至有的
24、還具有測(cè)量騎車人的心跳、顯示騎車人熱量消耗等功能,讓人能清楚地知道當(dāng)前的速度、時(shí)間、里程等物理量[2]。 </p><p> 電動(dòng)車?yán)锍瘫硪话阌砂惭b于前車圈鋼條上的感應(yīng)磁鐵、前叉上的傳感器、單片機(jī)及顯示模塊構(gòu)成。當(dāng)車圈旋轉(zhuǎn)時(shí)傳感器捕捉到感應(yīng)磁鐵帶來(lái)的信息,通過(guò)連接線傳輸至單片機(jī),單片機(jī)對(duì)此進(jìn)行處理后計(jì)算出時(shí)速、里程等信息并顯示。它能夠讓我們比較精確的知道自己的當(dāng)前速度、騎行時(shí)間、單次里程、總里程、平均
25、速度、瞬時(shí)速度等。如佛山高明華勁電子公司的電動(dòng)車?yán)锍瘫鞰S-601,能動(dòng)態(tài)顯示行駛里程、騎車時(shí)間、實(shí)時(shí)車速等[3]。</p><p> 1.2國(guó)內(nèi)外研究現(xiàn)狀</p><p> 從保護(hù)環(huán)境及經(jīng)濟(jì)條件許可等綜合因素來(lái)看,電動(dòng)車?yán)锍瘫砟壳澳酥廖磥?lái)都有著廣闊的發(fā)展前景。目前市面上電動(dòng)電動(dòng)車的速度表和里程表都是機(jī)械的,看起來(lái)不夠直觀與方便。如果能用LED直接顯示出來(lái)里程數(shù)或速度值,就可節(jié)省用戶的
26、時(shí)間及精力處理電動(dòng)車行進(jìn)過(guò)程中的突發(fā)事件[4]。國(guó)內(nèi)外現(xiàn)在生產(chǎn)銷售的很多種電動(dòng)車速度里程表,某些產(chǎn)品的性能與結(jié)構(gòu)功能簡(jiǎn)單,只有測(cè)速與里程顯示的功能,比較高端的一些產(chǎn)品除了測(cè)量速度和里程顯示功能外,還加入了GPS全球定位,單次行車?yán)锍?,時(shí)間,運(yùn)動(dòng)時(shí)間,平均速度,累計(jì)里程,車輪轉(zhuǎn)數(shù)。以后的發(fā)展趨勢(shì)可能會(huì)加入mp3和短信收發(fā)功能、心率測(cè)量、視頻播放,使電動(dòng)車速度里程表更具有人性化,相信也會(huì)受到各個(gè)年齡段人的喜歡[5]。隨著電動(dòng)車的里程表的發(fā)展
27、,它的功能也越來(lái)越完善,從以前老式的機(jī)械指針表盤,演變成現(xiàn)在利用數(shù)碼技術(shù)直接利用LED或者LCD顯示,上面清楚的顯示電動(dòng)車的速度,行駛里程,時(shí)間,電池電壓等等,用戶可以隨時(shí)了解電動(dòng)車的行駛現(xiàn)狀,更加便捷。其中的核心部件單片機(jī)體積小,智能化,把它做到產(chǎn)品的內(nèi)部,取代了老式機(jī)械零件,縮小產(chǎn)品的體積,增加功能[6]。</p><p> 隨著電子技術(shù)的迅速發(fā)展和提高,行車記錄儀也不僅僅是里程表,上面會(huì)集成更多的功能,路
28、況攝像監(jiān)測(cè),人體疲勞測(cè)試程度,智能提醒車的狀況,而不僅僅是顯示,另外新增的語(yǔ)音提醒更加人性化,進(jìn)一步的通訊技術(shù),可以與互聯(lián)網(wǎng)通信,對(duì)接收的信息進(jìn)行處理,有利于交通管理。</p><p><b> 1.3課題研究意義</b></p><p> 電動(dòng)車已成為人們?nèi)粘I钪谐鲂羞\(yùn)動(dòng)必不可少的工具,廣泛用于個(gè)人家庭娛樂(lè)休閑及比賽等方面,給人們的娛樂(lè)運(yùn)動(dòng)、出行及生活帶來(lái)了極
29、大的改變與快捷。電動(dòng)車速度里程表電子集成電路的發(fā)展多采用了先進(jìn)的智能傳感技術(shù),使電動(dòng)車速度里程表有測(cè)量準(zhǔn)確、工作時(shí)性能穩(wěn)定、容易攜帶等優(yōu)勢(shì),它被廣泛用于多個(gè)領(lǐng)域的發(fā)展,比如:測(cè)速,里程計(jì)算及自動(dòng)控制。由于電動(dòng)車的里程表基本組成包含:?jiǎn)纹瑱C(jī)的自動(dòng)檢測(cè)及控制電路、信號(hào)處理電路、顯示電路、報(bào)警電路幾部分,因此進(jìn)行電動(dòng)車速度里程表的研究是非常必要的,研究電動(dòng)車速度里程表及擴(kuò)展其應(yīng)用鄰域,有著非?,F(xiàn)實(shí)的意義[7]。</p><
30、p> 1.4本課題研究?jī)?nèi)容</p><p> 在對(duì)電動(dòng)車?yán)锍瘫硪延械难芯康幕A(chǔ)上,本課題設(shè)計(jì)了基于AT89C52單片機(jī)的智能里程表硬件系統(tǒng)和軟件系統(tǒng),并對(duì)硬件部分和軟件部分進(jìn)行了測(cè)試。設(shè)計(jì)目標(biāo)也是在力求結(jié)構(gòu)簡(jiǎn)單、易于實(shí)現(xiàn)、可行性較強(qiáng)的前提下,盡量完善增加其輔助功能。硬件部分設(shè)計(jì)了主機(jī)電路、人機(jī)接口電路、存儲(chǔ)電路、報(bào)警電路。軟件部分采用了模塊化程序設(shè)計(jì)思想,將軟件分為主程序模塊、鍵處理模塊、顯示模塊、數(shù)據(jù)
31、采集處理模塊和報(bào)警模塊。對(duì)軟件的模塊化處理使軟件設(shè)計(jì)結(jié)構(gòu)清晰明了,易于調(diào)試與修改,避免了很多錯(cuò)誤。此外,對(duì)設(shè)計(jì)中存在的問(wèn)題,出現(xiàn)的現(xiàn)象進(jìn)行了進(jìn)一步的分析與改正,完成了設(shè)計(jì)任務(wù)。</p><p> 第二章 整體方案設(shè)計(jì)</p><p><b> 2.1系統(tǒng)設(shè)計(jì)方案</b></p><p> 系統(tǒng)硬件由單片機(jī)AT89C52、霍爾傳感器及信號(hào)轉(zhuǎn)
32、換電路、X5045、HD7279鍵盤顯示器、報(bào)警電路組成。單片機(jī)采集霍爾傳感器輸出的脈沖信號(hào),其中信號(hào)轉(zhuǎn)換電路包含信號(hào)放大、波形變換和波形整形,對(duì)被測(cè)信號(hào)進(jìn)行放大的目的是降低對(duì)待測(cè)信號(hào)的幅度要求,波形變換和波形整形電路則用來(lái)將放大的信號(hào)轉(zhuǎn)換成可與單片機(jī)相連的信號(hào)。X5045存儲(chǔ)報(bào)警參數(shù),鍵盤顯示器電路根據(jù)按鍵不同控制里程表的顯示,最后用6 位的L E D 能直觀的將速度與里程顯示給用戶,并且在速度高于一定的值時(shí)可自動(dòng)向用戶報(bào)警,從而達(dá)到
33、智能速度里程表設(shè)計(jì)目的。系統(tǒng)設(shè)計(jì)方案圖如圖2-1所示,</p><p> 圖2-1 整體方案設(shè)計(jì)框圖</p><p> 本次設(shè)計(jì)是以單片機(jī)為核心設(shè)計(jì)的里程表系統(tǒng),僅用了較少的硬件和軟件結(jié)合就實(shí)現(xiàn)了設(shè)計(jì)要求,且性能好,穩(wěn)定性強(qiáng),測(cè)速誤差小,還通過(guò)軟件編程新增加了一些附加功能,達(dá)到了創(chuàng)新的目的。</p><p><b> 2.2系統(tǒng)工作原理</b&
34、gt;</p><p> 該設(shè)計(jì)能實(shí)時(shí)地將所測(cè)的速度與累計(jì)里程數(shù)顯示出來(lái),主要是將傳感器輸入到單片機(jī)的脈沖信號(hào)的頻率(傳感器將不同車速轉(zhuǎn)變成不同頻率的脈沖信號(hào))實(shí)時(shí)地測(cè)量出來(lái),考慮到信號(hào)的衰減、干擾等影響,在信號(hào)送入單片機(jī)前應(yīng)對(duì)其進(jìn)行放大整形,然后通過(guò)單片機(jī)計(jì)算出速度和里程,再將所得的數(shù)據(jù)存儲(chǔ)到串口數(shù)據(jù)存儲(chǔ)器,并由按鍵選擇LED顯示模塊顯示所測(cè)的速度與里程。同時(shí)若檢測(cè)到電動(dòng)車超速,系統(tǒng)將發(fā)出報(bào)警提示信號(hào),LED
35、指示燈閃爍。</p><p><b> 2.3系統(tǒng)技術(shù)指標(biāo)</b></p><p> 傳感器對(duì)電動(dòng)車的狀態(tài)進(jìn)行實(shí)時(shí)檢測(cè),里程表對(duì)采樣數(shù)據(jù)進(jìn)行處理,然后轉(zhuǎn)換成標(biāo)準(zhǔn)數(shù)據(jù)輸出。顯示里程和速度,并設(shè)定量程上下限,速度上下限,報(bào)警上下限等參數(shù)值。里程表設(shè)計(jì)中增加了看門狗定時(shí)器功能,因此系統(tǒng)無(wú)需每次開機(jī)重新設(shè)定參數(shù)值。里程表的主要技術(shù)指標(biāo)如下:</p><
36、p> 電源供電:5V直流電壓</p><p> 測(cè)速范圍:0~20Km/h</p><p> 輸入信號(hào):脈沖方波信號(hào)</p><p> 頻率測(cè)量范圍:0~10Hz</p><p> 工作濕度:15%~85%RH</p><p> 工作溫度:0~55℃</p><p> 第三章
37、 系統(tǒng)硬件設(shè)計(jì)</p><p> 本次的硬件電路設(shè)計(jì)主要包括以下幾部分:傳感器選型、人機(jī)接口電路設(shè)計(jì)、存儲(chǔ)電路設(shè)計(jì)、報(bào)警電路設(shè)計(jì)。</p><p><b> 3.1傳感器選型</b></p><p> 里程表的需要通過(guò)傳感器檢測(cè)信號(hào),經(jīng)信號(hào)轉(zhuǎn)換電路轉(zhuǎn)換后送到主機(jī)單元進(jìn)行計(jì)算,在這里對(duì)傳感器進(jìn)行簡(jiǎn)單的介紹。</p><p
38、> 電動(dòng)車?yán)锍瘫碛脗鞲衅魇请妱?dòng)車?yán)锍瘫淼闹匾考?,傳感器的?zhǔn)確性直接影響里程表的里程精度,是里程表日常修理中遇到的最多的問(wèn)題。它的功能是將轉(zhuǎn)動(dòng)的機(jī)械信號(hào)變成電脈沖信號(hào),傳輸給里程表接口,根據(jù)輸入的脈沖數(shù)來(lái)計(jì)算電動(dòng)車行駛的里程[9]。</p><p> 目前電動(dòng)車?yán)锍瘫硭x配的主流傳感器是霍爾式傳感器,它可以檢測(cè)轉(zhuǎn)速與轉(zhuǎn)數(shù),而霍爾傳感器尺寸較小,性能穩(wěn)定可靠,工作電路簡(jiǎn)單,價(jià)格便宜,在里程表設(shè)計(jì)中使用廣泛
39、。霍爾元件是在半導(dǎo)體薄片的兩端控制電流,若在薄片的垂直方向上施加一個(gè)磁場(chǎng),垂直于電流和磁場(chǎng)方向上將產(chǎn)生一個(gè)電壓,這個(gè)電壓稱為霍爾電壓,這一現(xiàn)象就是霍爾效應(yīng)。根據(jù)霍爾效應(yīng)制造的元件就是霍爾元件。目前里程表用傳感器均為開關(guān)型霍爾傳感器。其特性曲線如圖3-1所示。</p><p> 圖3-1開關(guān)型霍爾傳感器特性曲線圖</p><p> 開關(guān)型霍爾傳感器大小適中 ,性能可靠,價(jià)格合適,工作時(shí)的
40、電壓范圍較寬,它只需配合一塊小的永久磁鐵就可以做成電動(dòng)車?yán)锍瘫淼膫鞲衅鳌8鶕?jù)產(chǎn)生的脈沖計(jì)算出行車?yán)锍蘙12]。</p><p> 目前,大部分傳感器廠家多使用Honeywell公司生產(chǎn)的SS443A開關(guān)型霍爾傳感器。本次畢業(yè)設(shè)計(jì)就選用此傳感器。其示意圖如圖3-2。特點(diǎn):</p><p> ?。?)(3. 8~24)VDC供電</p><p> ?。?)磁特性溫度補(bǔ)
41、償 </p><p> (3)數(shù)字電流沉輸出 </p><p> ?。?)可消除機(jī)械壓力產(chǎn)生的作用</p><p> (5)絕對(duì)最高電流50mA </p><p> ?。?)可定制特殊動(dòng)功釋放點(diǎn) 圖3-2開關(guān)型霍爾傳感
42、器示意圖</p><p> ?。?)工作溫度范圍( - 40~150) ℃ </p><p> 當(dāng)車輪上的磁條轉(zhuǎn)動(dòng)到接近霍爾傳感器的位置時(shí),SS443A將接受到磁感應(yīng),此時(shí)傳感器輸出一個(gè)無(wú)抖動(dòng)的低電平,此低電平使得AT89S52接受到信號(hào),據(jù)此計(jì)算出里程數(shù)、實(shí)時(shí)速度等。其原理如圖3-3所示</p><p> 圖3-3傳感器測(cè)距示意圖</p>
43、;<p> 電動(dòng)車輪子一般為16寸,周長(zhǎng)S大概為1330mm,即約為1.33m。兩次相鄰信號(hào)直間的時(shí)間間隔為t秒,瞬時(shí)速度: </p><p><b> Vs=S/t </b></p><p> 單位為m/s。此時(shí)記為一個(gè)單位的距離。用這個(gè)測(cè)量的實(shí)時(shí)速度與設(shè)定的報(bào)警速度上限比較,若大于報(bào)警上限,則報(bào)警。當(dāng)脈沖個(gè)數(shù)為N個(gè),初始里
44、程數(shù)為L(zhǎng) c時(shí),總里程長(zhǎng)度:</p><p> L n=N*L+L c </p><p> 單位為m,用數(shù)字頻率計(jì)計(jì)數(shù),起動(dòng)標(biāo)準(zhǔn)轉(zhuǎn)速發(fā)生裝置,使其帶動(dòng)傳感器在額定轉(zhuǎn)速范圍內(nèi)轉(zhuǎn)動(dòng),讀取不同轉(zhuǎn)速時(shí)標(biāo)準(zhǔn)轉(zhuǎn)速發(fā)生裝置轉(zhuǎn)動(dòng)次數(shù)K2與數(shù)字頻率計(jì)的計(jì)數(shù)值K1。</p><p> 3.1.1信號(hào)轉(zhuǎn)換電路設(shè)計(jì)</p><p> 如圖3-4所示,系統(tǒng)的信
45、號(hào)處理電路由二級(jí)電路構(gòu)成,第一級(jí)是由開關(guān)三極管組成的零偏置放大器,采用開關(guān)三極管可以保證放大器具有良好的高頻響應(yīng)。當(dāng)輸入信號(hào)為零或負(fù)電壓時(shí),三極管截止,電路輸出高電平;而當(dāng)輸入信號(hào)為正電壓時(shí),三極管導(dǎo)通,此時(shí)輸出電壓隨著輸入電壓的上升而下降,這使得速度里程表既可以測(cè)量任意方波信號(hào)的頻率,也可以測(cè)量正弦波信號(hào)的頻率。由于放大器的放大功能降低了對(duì)待測(cè)信號(hào)的幅度要求,因此,系統(tǒng)能對(duì)任意大于0.5V 的正弦波和脈沖信號(hào)進(jìn)行測(cè)量。預(yù)處理電路的第二
46、級(jí)采用帶施密特觸發(fā)器的反相器DM74LS14 來(lái)把放大器生成的單相脈沖轉(zhuǎn)換成與COMS 電平相兼容的方波信號(hào)[9],如圖3-5所示,同時(shí)將輸出信號(hào)加到單片機(jī)的P1.1 口上。</p><p> 利用施密特觸發(fā)器狀態(tài)轉(zhuǎn)換過(guò)程中的正反饋?zhàn)饔?,可以把邊沿變化緩慢的周期性信?hào)變換為邊沿很陡的矩形脈沖信號(hào)。輸入的信號(hào)只要幅度大于VT+,即可在施密特觸發(fā)器的輸出端得到同等頻率的矩形脈沖信號(hào)[9],信號(hào)轉(zhuǎn)換電路原理框圖如圖3
47、-6所示。</p><p> 圖3-4 信號(hào)轉(zhuǎn)換電路圖 圖3-5 信號(hào)轉(zhuǎn)換示意圖</p><p> 圖3-6 信號(hào)轉(zhuǎn)換電路原理框圖</p><p> 3.2人機(jī)接口電路設(shè)計(jì)</p><p> 在本系統(tǒng)中我們采用五個(gè)按鍵和八個(gè)LED顯示數(shù)碼管,選用的是鍵盤顯示器的專用智能控制芯片HD7
48、279。</p><p> HD7279是管理鍵盤和LED顯示器的專用智能控制芯片,該芯片采用串行接口方式,可同時(shí)驅(qū)動(dòng)8位共陰極LED數(shù)碼管或64位獨(dú)立LED發(fā)光二極管,同時(shí)能對(duì)多達(dá)8×8的鍵盤矩陣進(jìn)行監(jiān)控,具有自動(dòng)消除鍵抖動(dòng)并識(shí)別按鍵代碼的功能。從而可以提高CPU的工作效率,同時(shí)其串行接口方式又可簡(jiǎn)化CPU接口電路的設(shè)計(jì)[10]。</p><p> HD7279的主要特點(diǎn):
49、</p><p> (1)CPU間采用串行接口方式,僅占用4根端口線;</p><p> (2)內(nèi)部含有譯碼器,可直接接受BCD碼或16進(jìn)制碼,同時(shí)具有2種譯碼方式,實(shí)現(xiàn)LED數(shù)碼管位尋址和段尋址,消隱和閃爍屬性等多種控制指令,編程靈活;</p><p> (3)循環(huán)左移和循環(huán)右移指令;</p><p> (4)內(nèi)部含有驅(qū)動(dòng)器,無(wú)需外
50、圍元件可直接驅(qū)動(dòng)LED;</p><p> (5)具有級(jí)聯(lián)功能,可方便的實(shí)現(xiàn)多于8位顯示或多于64鍵的鍵盤接口;</p><p> (6)具有自動(dòng)消除抖動(dòng)并識(shí)別按鍵的功能。</p><p> HD7279 與 AT89C52 僅需4條口線,其中CS為片選信號(hào)。當(dāng)AT89C52訪問(wèn)HD7279時(shí),應(yīng)將片選端置為低電平。DATA為串行數(shù)據(jù)/輸出端,當(dāng)不向HD727
51、9發(fā)送數(shù)據(jù)時(shí),DATA為輸入端;當(dāng)HD7279輸出鍵盤代碼時(shí),DATA為輸出端。CLK為數(shù)據(jù)串行傳送的同步時(shí)鐘輸入端,時(shí)鐘的上升沿表示數(shù)據(jù)有效。KEY為按鍵信號(hào)輸出端,在無(wú)鍵按下時(shí)為高電平;而有鍵按下時(shí)此引腳變?yōu)榈碗娖讲⑶乙恢北3值芥I釋放為止。</p><p> RC引腳用于連接HD7279的外接振蕩元件,其典型值為R=1.5KΩ,C=15Pf。</p><p> RESET為復(fù)位端。
52、該端由低電平變成高電平并且保持25ms即復(fù)位結(jié)束。通常,該端接+5V即可。</p><p> 實(shí)際應(yīng)用電路中,8只下拉電阻和8只鍵盤連接位選線DIG1~DIG7的8只位選電阻的阻值應(yīng)遵從一定比例關(guān)系,下拉電阻應(yīng)大于位選電阻的5倍而小于其50倍,典型值是10倍。在本系統(tǒng)中,我們選用了100K的下拉電阻和10K的位選電阻。AT89C52和HD7279連接圖如圖3-7所示,</p><p>
53、 圖3-7 HD7279與AT89C52接口電路</p><p> AT89C52與HD7279引角的連接和相關(guān)的地址分配如下:</p><p> CS:片選,低電平有效,與P1.4相連;</p><p> CLK:串行時(shí)鐘輸入端,與P1.5相連;</p><p> DATA:串行數(shù)據(jù)輸入/輸出端,與P1.6相連;</p>
54、;<p> KEY:按鍵有效信號(hào)端,與P1.7相連。</p><p> 在本次設(shè)計(jì)中利用7279實(shí)現(xiàn)鍵盤和顯示器的人機(jī)交互。鍵盤和顯示器由HD7279管理,實(shí)現(xiàn)5個(gè)按鍵的功能:設(shè)置鍵 清零鍵、增鍵、左移鍵、確認(rèn)鍵。以及顯示器的顯示功能:由LED數(shù)碼管組成,前4位顯示提示號(hào),后4位顯示具體測(cè)量值。</p><p> LED顯示如圖3-8所示:</p><
55、;p> 圖3-8 LED顯示圖</p><p><b> 3.3存儲(chǔ)電路設(shè)計(jì)</b></p><p> X5045作為單片機(jī)系統(tǒng)電路的一個(gè)輔助芯片,它將復(fù)位、電壓檢測(cè) 、看門狗定時(shí)器和快鎖存保護(hù)的串行 PROM功能集合在一個(gè)芯片內(nèi);采用SPI總線串行外設(shè)接口方式,降低了系統(tǒng)成本并減少了對(duì)電路板空間的要求,提高了系統(tǒng)的可靠性;適合于需要現(xiàn)場(chǎng)修改數(shù)據(jù)的場(chǎng)合,廣
56、泛應(yīng)用與儀器儀表和工業(yè)自動(dòng)控制等領(lǐng)域[13]。</p><p> X5045有4種功能:上電復(fù)位、低電平檢測(cè)、看門狗定時(shí)器和SPI串行 PROM。</p><p> (1)上電復(fù)位:當(dāng)器件通電并超過(guò)VCC門限電壓時(shí),X5045內(nèi)部的復(fù)位電路將會(huì)提供一個(gè)約為200ms的復(fù)位脈沖讓微處理器能正常復(fù)位。</p><p> (2)低電壓檢測(cè):工作過(guò)程中X5045監(jiān)測(cè)電
57、源電壓下降并且在電源電壓跌落到VCC門限電壓以下時(shí),產(chǎn)生復(fù)位脈沖并保持有效直到電源電壓1V以下。如果電源電壓在降落到門限電壓后上升,復(fù)位信號(hào)消失,微處理器可以繼續(xù)工作。</p><p> ?。?)看門狗定時(shí)器:看門狗定時(shí)器對(duì)微處理器提供了一個(gè)因外界干擾而引起程序陷入死循環(huán)或“跑飛”狀態(tài)的保護(hù)功能。</p><p> (4)串行 PROM存儲(chǔ)器:X5045的存儲(chǔ)器部分是具有塊鎖保護(hù)CMOS
58、 4KB串行 PROM。它被組織成8位的結(jié)構(gòu),由一個(gè)四線構(gòu)成的SPI總線方式進(jìn)行操作,一次最多可寫16B。</p><p> 在本次設(shè)計(jì)中主要利用X5045串行 PROM存儲(chǔ)測(cè)和報(bào)警上限值,和通過(guò)具看門狗定時(shí)器功能保證AT89C52出現(xiàn)死循環(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ào)警電路設(shè)計(jì)</b></p><p> 報(bào)警電路硬件部分主要由蜂鳴器和發(fā)光二極管組成,當(dāng)超過(guò)設(shè)定的報(bào)警上限時(shí)(根據(jù)相關(guān)法規(guī)電動(dòng)車最高時(shí)速不得超過(guò)20Km/h),發(fā)出信號(hào)使得發(fā)光二極管發(fā)光,蜂鳴器工作,發(fā)出蜂鳴聲。當(dāng)?shù)陀趫?bào)警上限時(shí),燈熄滅,蜂鳴器停止發(fā)聲。蜂鳴器電路連接圖如圖3-8所示。</p&g
60、t;<p> 圖3-8 蜂鳴器報(bào)警電路連接圖</p><p> 第四章 系統(tǒng)軟件設(shè)計(jì)</p><p> 我認(rèn)為軟件是整個(gè)畢業(yè)設(shè)計(jì)的最核心部分,一切的硬件設(shè)計(jì)都是通過(guò)軟件來(lái)實(shí)現(xiàn)的,軟件的成功與否是關(guān)系到整個(gè)系統(tǒng)的最后運(yùn)行,單片機(jī)所具有的智能功能要由軟件來(lái)完成,因此要實(shí)現(xiàn)單片機(jī)的智能化,是離不開軟件的。因此,我把軟件設(shè)計(jì)作為我的工作重點(diǎn)。這里通過(guò)程序框圖來(lái)介紹本人的軟件設(shè)計(jì)
61、思想。</p><p> 本次畢業(yè)設(shè)計(jì)軟件部分主要包括:主程序設(shè)計(jì)、中斷程序設(shè)計(jì)、鍵處理程序設(shè)計(jì)、顯示程序設(shè)計(jì)、報(bào)警程序設(shè)計(jì)。</p><p><b> 4.1主程序設(shè)計(jì)</b></p><p> 程序設(shè)計(jì)采用模塊化設(shè)計(jì),主程序僅完成對(duì)電路中各個(gè)接口芯片的初始化及定時(shí)器初始化、中斷向量初始化以及中斷處理,然后進(jìn)入休眠狀態(tài)。</p&g
62、t;<p> 主程序流程圖如4-1所示</p><p> 圖4-1 主程序流程圖</p><p> 主程序流程圖如4-1所示,完成初始化功能,然后進(jìn)入休眠狀態(tài),由溢出中斷喚醒后,在執(zhí)行完T2的中斷程序后,會(huì)重新進(jìn)入休眠狀態(tài),可減少功耗和提高抗干擾能力。</p><p> (1) 內(nèi)存變量初始化是對(duì)內(nèi)存變量單元中從20H~FFH的RAM地址進(jìn)行清
63、零處理,因?yàn)樵趥沃噶钪卸x了大量變量,若不對(duì)內(nèi)存變量清零將會(huì)使程序執(zhí)行不穩(wěn)定,顯示器上也會(huì)出現(xiàn)亂碼。定時(shí)器T2初始化是因?yàn)樵O(shè)置了T2為捕獲方式 ,實(shí)時(shí)監(jiān)測(cè)P1.1管腳輸入的方波信號(hào)。</p><p> (2) X5045初始化主要是對(duì)其狀態(tài)寄存器進(jìn)行設(shè)置,本次設(shè)計(jì)中X5045的所有單元地址均可進(jìn)行寫入操作,看門狗定時(shí)器的喂狗周期設(shè)置為200ms,寫入狀態(tài)寄存器常數(shù)STTAUS-REG=20,所以寫入的命令字為2
64、0H。</p><p> (3) HD7279的初始化是對(duì)I/O進(jìn)行高低電平的初始化,同時(shí)向HD7279發(fā)送復(fù)位指令(A4H),所有的顯示、設(shè)置的字符、閃爍等屬性也將被一起清除。</p><p> (4) 判斷定時(shí)器T2溢出中斷的標(biāo)志位TF_FIG是否為1,當(dāng)為1時(shí),表示是溢出中斷,才會(huì)從休眠中喚醒AT89C52,如果沒(méi)有判斷,T2的溢出和沿中斷都會(huì)喚醒休眠,這樣是為了保持時(shí)序的準(zhǔn)確,
65、不會(huì)混亂,。</p><p> (5) 判斷SYS_STA是否為0,以及更新采樣值是為了可以實(shí)時(shí)顯示采樣值,提高系統(tǒng)的實(shí)時(shí)性,如果少了判斷及更新,顯示需要經(jīng)過(guò)設(shè)置鍵的一輪過(guò)程才會(huì)更新,不會(huì)實(shí)時(shí)顯示出采樣值。</p><p> (6) 鍵處理模塊主要是對(duì)按鍵進(jìn)行處理,對(duì)是否有按鍵進(jìn)行判斷,若有按鍵則根據(jù)鍵值進(jìn)行相應(yīng)的處理,否則返回。包括在對(duì)鍵值進(jìn)行確定后就可使用按鍵對(duì)各參數(shù)進(jìn)行修改。&l
66、t;/p><p> (7) 顯示及閃爍模塊主要是對(duì)當(dāng)前測(cè)量值或各個(gè)設(shè)定狀態(tài)值進(jìn)行顯示,對(duì)LED顯示器進(jìn)行管理,夠有效的對(duì)設(shè)定參數(shù),采樣數(shù)據(jù)進(jìn)行顯示,可改參數(shù)位呈現(xiàn)閃爍狀態(tài),數(shù)據(jù)顯示一目了然,可以對(duì)被控對(duì)象有直觀的了解。從而使使用者的操作更加方便、簡(jiǎn)潔。</p><p> (8) 報(bào)警:提取采樣值,與X5045內(nèi)報(bào)警上下限進(jìn)行比較,如超出范圍調(diào)用報(bào)警程序,拉低蜂鳴器,否則返回。</p&
67、gt;<p> (9) 看門狗定時(shí)器進(jìn)行“喂狗”處理,方法很簡(jiǎn)單,通過(guò)對(duì)其片選端CS進(jìn)行置低再置高操作既可,以防止一種因外界干擾而引起程序陷入死循環(huán)或“跑飛”的狀態(tài),起到一個(gè)保護(hù)的功能。</p><p> 相關(guān)的主要變量和常量及地址分配偽指令表,一般安排在主程序開始時(shí)采用偽指令方式說(shuō)明,設(shè)計(jì)中的變量和常量用表格分類說(shuō)明,如表4-1,4-2, 4-3所示。</p><p>
68、 表4-1 片內(nèi)RAM主要變量分配偽指令表</p><p> 表4-2 HD7279地址分配偽指令</p><p> 表4-3 X5045主要變量分配偽指令表</p><p><b> 4.2中斷程序設(shè)計(jì)</b></p><p> 此次設(shè)計(jì)要采樣脈沖信號(hào),因此選用了16位的定時(shí)器T2,利用它的捕獲方式捕獲
69、脈沖測(cè)出頻率。在程序設(shè)計(jì)時(shí),發(fā)現(xiàn)測(cè)頻時(shí),定時(shí)器T2與T0中斷程序互相干擾,嘗試設(shè)置T0中斷優(yōu)先級(jí),仍然干擾。然后在**指導(dǎo)下,直接從主程序中刪除定時(shí)器T0的初始化程序以及T0的中斷服務(wù)程序,只留T2的初始化及中斷采樣程序。將鍵處理模塊、顯示模塊的程序放在主程序的休眠程序中,由定時(shí)器T2的溢出中斷喚醒休眠。然后設(shè)置了標(biāo)志位TF_FIG判斷是溢出中斷還是沿中斷,選擇是否喚醒休眠。</p><p> 編寫T2采樣程序
70、,考慮到數(shù)據(jù)的范圍,采用了三字節(jié)浮點(diǎn)數(shù)表示法表示數(shù)據(jù),將數(shù)據(jù)轉(zhuǎn)化為浮點(diǎn)數(shù),調(diào)用了浮點(diǎn)數(shù)的規(guī)格化、加減及乘除子程序處理數(shù)據(jù)。調(diào)試程序后,發(fā)現(xiàn)系統(tǒng)可以測(cè)出脈沖的頻率,但數(shù)據(jù)顯示并不穩(wěn)定,經(jīng)過(guò)老師提示,在T2采樣程序中加入堆棧指針,用來(lái)保護(hù)采樣數(shù)據(jù)。加入堆棧后,系統(tǒng)可以準(zhǔn)確測(cè)出脈沖頻率,并且數(shù)據(jù)顯示穩(wěn)定。</p><p> 編寫里程、速度計(jì)算程序,再次校對(duì)了各個(gè)地址變量的地址分配,00H~1FH為工作區(qū)寄存器,20H
71、~2FH為位尋址區(qū),30H~7FH是通用RAM區(qū),將各個(gè)地址變量分配在通用RAM區(qū),防止地址定義混亂。經(jīng)過(guò)多次修改與調(diào)試,程序調(diào)試成功,可以準(zhǔn)確測(cè)出電動(dòng)車當(dāng)前行駛里程與速度,并能穩(wěn)定顯示。</p><p> 以下介紹定時(shí)器T2捕獲方式工作原理及測(cè)頻原理圖。</p><p> T2捕獲方式測(cè)頻原理示意圖,如圖4-2所示,</p><p> 圖4-2測(cè)頻原理示意圖
72、</p><p> T2捕獲方式工作原理:在捕捉方式中,沿中斷和溢出中斷的觸發(fā)方式由T2的控制位EXEN2來(lái)選擇。當(dāng)EXEN2=0時(shí),T2是一個(gè)16位定時(shí)器,計(jì)數(shù)溢出時(shí),溢出標(biāo)志位TF2置位,同時(shí)激活中斷。當(dāng)EXEN2=1時(shí),T2完成相同的操作,而且當(dāng)T2EX引腳外部輸入信號(hào)發(fā)生“1”至“0”負(fù)跳變時(shí), TH2和TL2中的值被捕獲到寄存器RCAP2H和RCAP2L中。另外,T2EX引腳信號(hào)的負(fù)跳變使得T2CON
73、中的EXF2置位,與TF2相仿,EXF2也會(huì)激活中斷[10]。定時(shí)器T2的捕獲方式如圖4-3所示,</p><p> 圖4-3定時(shí)器T2的捕獲方式</p><p> 本設(shè)計(jì)采用 T2定時(shí)中斷測(cè)頻,中斷源包括溢出中斷和沿中斷。溢出中斷判斷是否來(lái)過(guò)沿中斷,計(jì)算溢出次數(shù);沿中斷則是響應(yīng)后,捕獲此時(shí)T2中的TH2,TL2存到RCAP2H,RCAP2L 兩個(gè)寄存器中。</p>&l
74、t;p> 中斷程序種用到了二個(gè)標(biāo)志位分別是:FF_FIG和TF_FIG.</p><p> ?。?)FF_FIG:設(shè)FF_FIG=1,初始化中將FF_FIG置1,表示從沒(méi)來(lái)過(guò)沿中斷,當(dāng)?shù)谝粋€(gè)沿來(lái)時(shí),將FF_FIG置零,此時(shí)將計(jì)算中需要用到的變量初始化,然后中斷返回。</p><p> ?。?)TF_FIG: 為溢出標(biāo)志位,當(dāng)溢出中斷時(shí),將其清零,使休眠只有在溢出時(shí)才會(huì)被喚醒,防止時(shí)
75、序發(fā)生混亂。</p><p> 圖4-4 T2中斷程序流程圖</p><p> T2中斷程序流程圖如圖4-4所示,進(jìn)入中斷程序時(shí),首先,根據(jù)的EXF2,TF2的值判斷是溢出中斷還是沿中斷,當(dāng)TF2的值為1時(shí),是溢出中斷,執(zhí)行溢出子程序。再判斷FF_FIG值,F(xiàn)F_FIG=0時(shí),表示來(lái)過(guò)沿中斷,執(zhí)行程序,溢出次數(shù)加1返回;FF_FIG=1表示沒(méi)來(lái)沿中斷,返回。然后判斷EXF2值,EXF2
76、=1時(shí),表示是沿中斷,執(zhí)行沿中斷子程序,若FF_FIG=1,則是第一次沿,捕獲TH2,TL2,后返回;若FF_FIG=0,則是第二次沿,捕獲后,壓入堆棧,進(jìn)行數(shù)據(jù)處理,彈出返回。 </p><p> 兩次響應(yīng)后,由頻率的計(jì)算公式:</p><p> T=65536*F_CYC2+F_H2; (式4.1)</p>
77、<p> f=1/T。 (式4.2)</p><p> 其中F_CYC2表示溢出中斷次數(shù),F(xiàn)_H2表示兩次捕獲值之差,T表示一個(gè)周期的寬度,f表示1秒鐘的頻率數(shù)。</p><p> S=3600* f* L (Km/h)
78、 (式4.3)</p><p> V= 3600*f * S (式 4.4)</p><p> 其中S表示里程,V表示當(dāng)前行駛速度,L表示電動(dòng)車車輪周長(zhǎng)。</p><p> 再由式4.3、4.4計(jì)算出電動(dòng)車當(dāng)前行駛速度與里程值。</p><
79、p> 4.3鍵處理程序設(shè)計(jì)</p><p> 鍵處理程序主要用來(lái)管理鍵盤,判斷并讀取鍵值,和主機(jī)芯片共同管理按鍵。此次設(shè)計(jì)的5個(gè)按鍵包括:設(shè)定鍵、清零鍵、增加鍵、左移鍵和確定鍵。</p><p> 鍵處理程序中用到了三個(gè)變量標(biāo)志位:KEY_OK、KB_FIG和KEY_IN。</p><p> ?。?)KEY_OK:表示按鍵按下的標(biāo)志位。當(dāng)KEY_OK=1
80、時(shí),無(wú)鍵按下,鍵處理程序結(jié)束;當(dāng)KEY_OK=0時(shí),證明有鍵按下,鍵處理程序繼續(xù)執(zhí)行。AT89C52的P1.7與HD7279的KEY按鍵信號(hào)輸出端相連。</p><p> ?。?)KB_FIG:表示按鍵處理標(biāo)志位,判斷按鍵是否處理過(guò),因?yàn)橛羞@個(gè)變量可以避免當(dāng)同一鍵被一直按下時(shí)進(jìn)行多次處理。當(dāng)KB_FIG=1時(shí),鍵已經(jīng)處理過(guò),因此不再處理,鍵處理程序結(jié)束;當(dāng)KB_FIG=0時(shí),鍵未被處理過(guò),鍵處理程序繼續(xù)執(zhí)行。&l
81、t;/p><p> ?。?)KEY_IN::表示按鍵的鍵值,每次讀到的鍵值放入KEY_IN中,再通過(guò)比較判斷具體是哪個(gè)鍵按下,因?yàn)橛羞@個(gè)變量使程序的可讀性加強(qiáng)。</p><p> 按鍵程序設(shè)計(jì)分配在每個(gè)時(shí)間片內(nèi)完成一次,間隔50ms,通過(guò)設(shè)置按鍵標(biāo)志位,保證按一次鍵響應(yīng)一次,按鍵模塊流程如圖4-5所示。</p><p> 圖4-5鍵處理程序流程圖</p>
82、<p> 進(jìn)入鍵處理程序時(shí),首先,根據(jù)KEY_OK的值判斷有無(wú)按鍵,若KEY_OK=1,說(shuō)明無(wú)鍵按下,鍵處理程序結(jié)束;若KEY_OK=0,說(shuō)明有鍵按下,鍵處理程序繼續(xù)執(zhí)行。再根據(jù)KB_FIG的值判斷此按鍵是否處理過(guò),若KB_FIG=1,說(shuō)明按鍵已經(jīng)處理過(guò),因此不再處理,鍵處理程序結(jié)束;若KB_FIG=0,說(shuō)明鍵未被處理過(guò),鍵處理程序繼續(xù)執(zhí)行,進(jìn)行鍵值的判斷,當(dāng)讀取完鍵值后,進(jìn)入對(duì)應(yīng)的鍵程序,執(zhí)行相應(yīng)的鍵功能。當(dāng)執(zhí)行完鍵處
83、理程序后,將KEY_OK,KB_FIG清零,否則,將不會(huì)再進(jìn)入鍵處理模塊。</p><p> 本次設(shè)計(jì)的5個(gè)按鍵分別是:設(shè)定鍵(20H)、清零鍵(18H)、增加鍵(10H)、左移鍵(08H)、確認(rèn)鍵(00H)。對(duì)應(yīng)的鍵碼和功能如表4-4所示。</p><p> 表4-4 按鍵功能及鍵碼表</p><p> 4.3.1設(shè)定鍵子程序設(shè)計(jì)</p>&
84、lt;p> 設(shè)定鍵的程序流程如圖4-6所示。</p><p> 圖4-6設(shè)定鍵子程序流程圖</p><p> 設(shè)定鍵標(biāo)志位“STATE”初始值賦為“0”,每按下一次設(shè)定鍵時(shí),“STATE”中的值當(dāng)自加一次,當(dāng)“STATE”為“3”時(shí)重新被賦值為“0”。當(dāng)“STATE”為“0”時(shí)對(duì)應(yīng)顯示當(dāng)前里程值,而“STATE”為“1”時(shí)對(duì)應(yīng)顯示當(dāng)前速度值,當(dāng)“STATE”中值為“2”時(shí)對(duì)應(yīng)報(bào)
85、警上限參數(shù),參數(shù)值從X5045中讀取。減小、增加、左移、閃爍功能,只有在設(shè)置參數(shù)時(shí)才啟用。</p><p> 4.3.2增加鍵子程序設(shè)計(jì)</p><p> 增加鍵的程序流程如圖4-7所示</p><p> 圖4-7增加鍵子程序流程圖</p><p> 字位閃爍時(shí),按下增加鍵,數(shù)字將會(huì)自動(dòng)加1,當(dāng)數(shù)字加到9時(shí),再按一次增加鍵數(shù)字會(huì)變成0
86、。同樣,增加鍵可以改的數(shù)據(jù)有里程參數(shù)和時(shí)間,其它的實(shí)時(shí)采樣值是不允許改的。在進(jìn)入增鍵程序之前也要對(duì)SET_STA進(jìn)行判斷。</p><p> 4.3.3左移鍵子程序設(shè)計(jì)</p><p> 左移鍵用于修改閃爍的位置,左移鍵的程序流程如圖4-8所示。</p><p> 圖4-8左移鍵子程序流程圖</p><p> 左移功能是在按下左移鍵時(shí)
87、,閃爍位會(huì)對(duì)應(yīng)的左移一位,相應(yīng)的參數(shù)也就可以修改。本次設(shè)計(jì)中的閃爍位只有四位,從右數(shù)第一位到第四位,因此,當(dāng)閃爍位移動(dòng)到第四位時(shí),再按一下左移鍵,閃爍位會(huì)回到右數(shù)第一位進(jìn)行閃爍,如此形成循環(huán)。</p><p> 4.3.4確認(rèn)鍵子程序設(shè)計(jì)</p><p> 確認(rèn)鍵的流程圖如4-9所示。</p><p> 圖4-9確認(rèn)鍵子程序流程圖</p><
88、;p> 確認(rèn)鍵將主機(jī)芯片與存儲(chǔ)芯片聯(lián)系起來(lái),用戶參數(shù)經(jīng)過(guò)修改后,按下確認(rèn)鍵,參數(shù)將會(huì)保存在對(duì)應(yīng)的存儲(chǔ)單元中。當(dāng)按下確認(rèn)鍵時(shí),程序會(huì)判斷先SET_STA值,若為0、1則不進(jìn)行鍵處理,若為其它值則執(zhí)行確認(rèn)鍵的功能。確認(rèn)鍵主要將報(bào)警的上限值存入X5045中,因?yàn)閄5045有掉電保護(hù)功能,將會(huì)保留存儲(chǔ)的數(shù)據(jù),因此,當(dāng)儀表再次上電時(shí),設(shè)定的參數(shù)不用再次設(shè)定,可以直接使用。在設(shè)定完當(dāng)前參數(shù)時(shí),再按一下確認(rèn)鍵,顯示器將切換到下一個(gè)設(shè)定參數(shù),操
89、作簡(jiǎn)單易行。</p><p><b> 4.4顯示程序設(shè)計(jì)</b></p><p> 顯示模塊中,所有LED都采用HD7279的方式0進(jìn)行譯碼,而每個(gè)LED的BCD碼在單片機(jī)中都有一個(gè)固定的存儲(chǔ)單元,為顯示緩沖區(qū)DR0--DR7,譯碼方式選擇好以后,便開始調(diào)用HD7279程序,將DR0--DR7中的數(shù)值顯示。顯示時(shí)第一到第四個(gè)LED顯示的是電動(dòng)車行駛里程與速度值,
90、第五個(gè)到第八個(gè)顯示的是當(dāng)前狀態(tài)提示符。</p><p><b> 具體的表示符號(hào)為:</b></p><p> 1.LP--表示瞬時(shí)里程采樣 2.PP--表示里程累積 3.LH--表示速度值 </p><p> 4.EH--表示報(bào)警上限 </p><p> 圖4-10顯示程序流程圖</p&g
91、t;<p> 顯示程序流程圖如圖4-10所示,顯示程序主要將主機(jī)芯片AT89C52與HD7279聯(lián)系起來(lái),用來(lái)顯示采樣值,修改設(shè)定參數(shù)顯示。在顯示采樣值時(shí),除設(shè)定鍵以外,其余鍵均不動(dòng)作、同時(shí)不執(zhí)行閃爍命令,只有在顯示設(shè)定參數(shù)時(shí),才執(zhí)行其它命令。顯示模塊中包括對(duì)LED發(fā)送命令字及閃爍處理,在設(shè)定報(bào)警上限參數(shù)值時(shí),需要對(duì)LED的3個(gè)可修改位(LED3,LED2,LED1)進(jìn)行閃爍處理,結(jié)合左移鍵、確認(rèn)鍵實(shí)現(xiàn)對(duì)X5045的讀和
92、寫。</p><p> 閃爍程序流程圖如圖4-11所示,</p><p> 圖4-11閃爍程序流程圖</p><p><b> 4.5報(bào)警程序設(shè)計(jì)</b></p><p> 采樣程序結(jié)束后,將采樣值轉(zhuǎn)換成BCD碼按位存儲(chǔ)到地址單元中,然后在X5045中找到存儲(chǔ)報(bào)警上限參數(shù)的的地址單元,按位讀取,由于存入X5045
93、中的參數(shù)值也是以BCD碼的形式存儲(chǔ)的,所以可以將報(bào)警上限值與采樣的BCD碼值直接從低位到高位依次相減,然后判斷進(jìn)位位是否為一,若為1,說(shuō)明電動(dòng)車當(dāng)前行駛速度值大于報(bào)警上限值,超速,則對(duì)應(yīng)的上限標(biāo)志位FLAG置1,發(fā)光二極管亮。若進(jìn)位位為0,表示電動(dòng)車當(dāng)前行駛速度小于報(bào)警上限,未超速[17]。</p><p> 程序流程圖如圖4-12所示,</p><p> 圖4-12報(bào)警程序流程圖&l
94、t;/p><p> 第五章 電動(dòng)車?yán)锍瘫淼臏y(cè)試</p><p><b> 5.1測(cè)試方法</b></p><p> 測(cè)試中我們主要通過(guò)顯示和按鍵兩種模式測(cè)試電動(dòng)車的各項(xiàng)功能。在實(shí)際檢測(cè)中,采用信號(hào)發(fā)生器來(lái)模擬霍爾傳感器的脈沖輸出,信號(hào)發(fā)生器輸出接單片機(jī)的脈沖輸入口P1.1。通過(guò)模擬過(guò)程測(cè)出脈沖頻率,并計(jì)算累計(jì)出當(dāng)前行駛里程和速度。車輪的周長(zhǎng)為
95、L米,單片機(jī)每接收到一個(gè)脈沖信號(hào)就代表車輪轉(zhuǎn)動(dòng)一周,系統(tǒng)會(huì)自動(dòng)將當(dāng)前的里程進(jìn)行累加。</p><p> 設(shè)定輪圈的周長(zhǎng)為L(zhǎng)米,在電動(dòng)車車輪上安裝了n個(gè)永久磁鐵,分計(jì)算后的里程值最大誤差約為L(zhǎng)/n。經(jīng)分析計(jì)算,此次設(shè)計(jì)中取了n=1。</p><p><b> 5.2誤差分析</b></p><p> 分析系統(tǒng)可知,通過(guò)測(cè)脈沖頻率計(jì)算行駛里程
96、和速度,計(jì)算及程序運(yùn)行過(guò)程中產(chǎn)生誤差較小。實(shí)驗(yàn)測(cè)試時(shí),采用信號(hào)發(fā)生器模擬脈沖輸入,信號(hào)發(fā)生器本身存在誤差。分析時(shí),沒(méi)有考慮到器械誤差,后來(lái)誤把產(chǎn)生的誤差當(dāng)作系統(tǒng)誤差分析,后在老師指導(dǎo)下,考慮到下降沿捕獲過(guò)程中產(chǎn)生的誤差,這個(gè)誤差才是整個(gè)系統(tǒng)的最大誤差。</p><p> 如圖5-1所示,由于溢出周期同一個(gè)鐘表一樣,每65536us溢出一次,溢出率=1/65536*106=15Hz,但此時(shí)可能從沒(méi)有來(lái)過(guò)脈沖,也沒(méi)
97、有下降沿到來(lái),因此會(huì)產(chǎn)生一個(gè)誤差。</p><p> 圖5-1 溢出周期示意圖</p><p> 晶振頻率為12MHz時(shí),一個(gè)機(jī)器周期Tcy為1us,在一個(gè)溢出周期內(nèi),對(duì)兩次的捕獲結(jié)果作差,最大可能產(chǎn)生2Tcy的誤差。由于相關(guān)的法律法規(guī)規(guī)定電動(dòng)車最高速度不能超過(guò)20Km/h,故速度測(cè)量范圍20Km/h,而與此對(duì)應(yīng)的脈沖頻率f約為4Hz,周期T約為0.25s=250000us。</
98、p><p> 計(jì)算系統(tǒng)相對(duì)誤差u為:</p><p> u=±2/250000 *100% =± 0.0008%</p><p> 由計(jì)算結(jié)果可知誤差數(shù)據(jù)較小,在儀表精度要求范圍內(nèi),滿足設(shè)計(jì)要求。</p><p> 第六章 硬件和軟件調(diào)試</p><p><b> 6.1硬件調(diào)試&l
99、t;/b></p><p> 將萬(wàn)用表跳到歐姆檔(短路測(cè)試),對(duì)照電路原理圖依次測(cè)量各個(gè)觸點(diǎn)是否正常通電導(dǎo)通(如萬(wàn)用表發(fā)出“嘀嘀”聲,說(shuō)明電路正常)。按照電路原理圖將各個(gè)元器件焊接在印刷電路板上,檢查各焊點(diǎn)有無(wú)虛焊、短接等情況,保證焊接質(zhì)量較好。接電源,按鍵顯示正常,用萬(wàn)用表檢驗(yàn)輸出數(shù)據(jù)真實(shí)性,基本吻合。</p><p><b> 6.2軟件調(diào)試</b>&l
100、t;/p><p> 6.2.1 調(diào)試方法及優(yōu)點(diǎn)</p><p> 此次設(shè)計(jì)采用了模塊化思想編寫程序,調(diào)試程序也是分塊調(diào)試,首先將編寫好的模塊程序利用星研單片機(jī)仿真技術(shù)進(jìn)行調(diào)試,檢查語(yǔ)法錯(cuò)誤,在確定無(wú)語(yǔ)法錯(cuò)誤后,將仿真頭和硬件電路相接,在線調(diào)試該模塊,檢查邏輯錯(cuò)誤,若程序能實(shí)現(xiàn)所需的功能后,用SUPERPR2000編程器將.hex文件寫入芯片中,然后將芯片與實(shí)驗(yàn)設(shè)備連接,調(diào)試程序看是否能顯示
101、預(yù)設(shè)值,該模塊調(diào)試通過(guò)后,繼續(xù)進(jìn)行下一模塊的添加,重復(fù)上述步驟。</p><p> 采用模塊化調(diào)試程序的優(yōu)點(diǎn):使調(diào)試更具目標(biāo)性,降低盲目性,且提高了調(diào)試速率。在調(diào)試通過(guò)在模塊基礎(chǔ)上添加另一模塊程序,繼續(xù)調(diào)試,避免了整體程序一起調(diào)試出現(xiàn)的問(wèn)題。</p><p> 軟件調(diào)試主要是利用星研軟件,用星研仿真器調(diào)試過(guò)程中遇到的問(wèn)題及注意事項(xiàng):</p><p> ?。?)注
102、意程序中英輸入的區(qū)別(仿真器僅僅識(shí)別英文輸入字體)。</p><p> ?。?)程序中的偽指令之間不能相互占用地址或空間。</p><p> ?。?)仿真器的設(shè)置與操作一定要嚴(yán)格遵循仿真器說(shuō)明書,并了解仿真頭的規(guī)格。</p><p> (4)應(yīng)仔細(xì)檢查子程序中是否有死循環(huán)。</p><p> ?。?)注意仿真器具有自我保護(hù)功能(即X5045
103、的復(fù)位功能對(duì)仿真頭沒(méi)有作用,仿真器具有自我保護(hù)功能)。</p><p> (6)安裝仿真軟件時(shí),應(yīng)該安裝Kiel文件到安裝盤符,否則無(wú)法運(yùn)行仿真軟件。</p><p> ?。?)通過(guò)仿真器調(diào)試的程序,并不代表最后的程序,一定要考慮X5045的復(fù)位程序是否存在。</p><p> (8)程序調(diào)試應(yīng)該先單步運(yùn)行,然后單步連續(xù)運(yùn)行、最后到全速運(yùn)行,應(yīng)該遵循循序漸進(jìn)的規(guī)
104、律。</p><p> 6.2.2 調(diào)試出現(xiàn)的問(wèn)題及解決方法</p><p> (1)語(yǔ)法錯(cuò)誤:編寫程序的初期階段由于經(jīng)驗(yàn)不足,經(jīng)KEIL軟件進(jìn)行調(diào)試總會(huì)發(fā)現(xiàn)一些語(yǔ)法錯(cuò)誤。如:</p><p> 錯(cuò)誤1:CJNE LEFT,#00H,SJ 改正: MOV A,LEFT CJNE A,#00H,SJ</p><p> 錯(cuò)誤2
105、:CJNE A,#00H,KEY_LEFT 原因 KEY_LEFT程序距離太遠(yuǎn),超出范圍。</p><p> 錯(cuò)誤3:未定義KEY_OK 改正:在偽指令中定義 KEY_OK BIT 10H</p><p> 諸如此類錯(cuò)誤還有很多,在此就不一一列舉了,但是隨著程序編寫,更加熟練,此類錯(cuò)誤漸漸減少,后期主要解決的是邏輯錯(cuò)誤。</p><p>
106、; (2)邏輯錯(cuò)誤:確定編寫完成的程序無(wú)語(yǔ)法錯(cuò)誤后,將程序用SUPERPR2000編程器將.HEX文件寫入芯片中,然后將芯片與實(shí)驗(yàn)設(shè)備連接,調(diào)試程序看是否能顯示預(yù)設(shè)值。調(diào)試時(shí),發(fā)現(xiàn)的問(wèn)題主要有:</p><p><b> 一、鍵處理方面</b></p><p> (1)在編寫設(shè)定鍵時(shí),將程序?qū)懭胄酒?,發(fā)現(xiàn)不能切換按鍵</p><p>
107、 原因:1、處理按鍵后,未將處理按鍵標(biāo)志位置1,以表示按鍵已處理。</p><p> 2、改變?cè)O(shè)定鍵的狀態(tài)(SET_STA)時(shí),未將改變后的值存入SET_STA.</p><p> (2)上電后,發(fā)現(xiàn)LED不顯示</p><p> 原因:程序運(yùn)行陷入死循環(huán)。</p><p> (3)閃爍位置不對(duì),與要改變位不符</p>
108、<p> 原因:編增增減時(shí)四位與后四位顛倒</p><p> (4)增減循環(huán)時(shí),按-,E,H,L,P,0-9的順序循環(huán)。</p><p> 原因:后四位的顯示方式都是按照方式0的譯碼顯示的。恰好LED的顯示9以后顯示的時(shí)-,E,H,L,P,所以控制LED的循環(huán)方式時(shí)應(yīng)先減1,再判斷顯示字是否與00H相等。</p><p> (5)按鍵與所讀鍵值不符
109、</p><p> 原因:HD7279子程序中讀取按鍵代碼子程序RECE多移了一位。</p><p> 二、X5045的讀寫</p><p> (1)X5045讀寫進(jìn)不去</p><p> 原因:1、輸入的字符命令如 WRER 前應(yīng)加 #</p><p> 2、子程序從X5045中讀出8位數(shù)據(jù)和向X5045中
110、寫入8位數(shù)據(jù)子程序INBYTE,OUTBYTE時(shí)序不對(duì)。</p><p> 3、將數(shù)據(jù)寫入指定的E²PROM地址開始的單元子程序漏掉一條OUTBYTE指令。</p><p> (2)報(bào)警上下限、量程上下限顯示三個(gè)小數(shù)點(diǎn)</p><p> 原因:偽指令將SI與SCK定義錯(cuò)誤。</p><p> (3) X5045能讀出數(shù),但是
溫馨提示
- 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 眾賞文庫(kù)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 電動(dòng)車?yán)锍瘫肀O(jiān)控軟件設(shè)計(jì)
- 自行車?yán)锍瘫碓O(shè)計(jì)【畢業(yè)論文】
- 畢業(yè)論文--自行車?yán)锍瘫淼脑O(shè)計(jì)
- 基于89c51單片機(jī)的電動(dòng)車?yán)锍瘫懋厴I(yè)設(shè)計(jì)
- 基于89c51單片機(jī)的電動(dòng)車?yán)锍瘫懋厴I(yè)設(shè)計(jì)
- 自行車?yán)锍瘫碓O(shè)計(jì)【畢業(yè)論文+文獻(xiàn)綜述+開題報(bào)告】
- 畢業(yè)設(shè)計(jì)--計(jì)程車?yán)锍瘫硐到y(tǒng)設(shè)計(jì)
- 畢業(yè)論文——電子式里程表
- 電動(dòng)車?yán)锍趟俣葴y(cè)量系統(tǒng)的設(shè)計(jì)
- 里程表畢業(yè)設(shè)計(jì)論文
- 畢業(yè)論文--單片機(jī)速度里程表設(shè)計(jì)
- 自行車?yán)锍瘫淼脑O(shè)計(jì)【文獻(xiàn)綜述】
- 自行車?yán)锍瘫淼脑O(shè)計(jì)【開題報(bào)告】
- 基于單片機(jī)的多功能自行車?yán)锍瘫淼脑O(shè)計(jì)_畢業(yè)設(shè)計(jì)論文
- 畢業(yè)論文基于單片機(jī)的電子車速里程表的設(shè)計(jì)
- 里程表專題
- 自行車?yán)锍趟俣扔?jì)的設(shè)計(jì)畢業(yè)論文
評(píng)論
0/150
提交評(píng)論