單片機(jī)課程設(shè)計(jì)-自行車?yán)锍逃?jì)速度計(jì)_第1頁(yè)
單片機(jī)課程設(shè)計(jì)-自行車?yán)锍逃?jì)速度計(jì)_第2頁(yè)
單片機(jī)課程設(shè)計(jì)-自行車?yán)锍逃?jì)速度計(jì)_第3頁(yè)
單片機(jī)課程設(shè)計(jì)-自行車?yán)锍逃?jì)速度計(jì)_第4頁(yè)
單片機(jī)課程設(shè)計(jì)-自行車?yán)锍逃?jì)速度計(jì)_第5頁(yè)
已閱讀5頁(yè),還剩33頁(yè)未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)

文檔簡(jiǎn)介

1、精選優(yōu)質(zhì)文檔-傾情為你奉上單片機(jī)原理及應(yīng)用課程設(shè)計(jì) 題 目 自行車?yán)锍逃?jì)/速度計(jì) 二級(jí)學(xué)院 電子信息與電氣工程學(xué)院班 級(jí) 姓 名 學(xué) 號(hào) 指導(dǎo)教師 設(shè)計(jì)時(shí)間 2010-6-212010-7-2 目錄一、概述1、設(shè)計(jì)目的 12、課題簡(jiǎn)介 1 二、系統(tǒng)設(shè)計(jì) 1、總體設(shè)計(jì)方案 2 2、硬件部分簡(jiǎn)介 3 (A)AT89c51芯片簡(jiǎn)介 3 (B)硬件設(shè)計(jì) 4 3、軟件部分 5 (A)初始化程序6 (B)主程序8 (C)中斷程序9 (D)里程、速度處理程序11 (E)顯示子程序14 (F)延時(shí)子程序16 三、調(diào)試17 1、硬件調(diào)試 17 2、軟件調(diào)試 17 四、操作說(shuō)明19五、參考文獻(xiàn)20六、心得體會(huì)21

2、七、附錄22 1、元器件清單 22 2、整體原理圖 23 3、完整程序 24 4、實(shí)物圖 33 自行車?yán)锍逃?jì)/速度計(jì)的設(shè)計(jì)一、 概述1、 設(shè)計(jì)目的本設(shè)計(jì)采用AT89C51單片機(jī)作控制,利用霍爾元件等器件設(shè)計(jì)一個(gè)可用LED數(shù)碼管顯示當(dāng)前自行車行駛的距離及速度并具有超速報(bào)警功能的自行車?yán)锍?速度表,使其作為自行車的一種輔助工具,讓自行車的功用更強(qiáng)大,給人們帶來(lái)更多的方便。2、 課題簡(jiǎn)介 自行車被發(fā)明及使用到現(xiàn)在已有兩百多年的歷史,在這兩百年間人類在不斷的嘗試與研發(fā)過(guò)程中,自行車發(fā)展的目的也從最早的代步工具轉(zhuǎn)換成休閑娛樂(lè)的用途,隨著生活水平的提高,人們希望自行車的功能更強(qiáng)大,而里程計(jì)/速度計(jì)正滿足了

3、這個(gè)需求?,F(xiàn)在先進(jìn)的里程/速度計(jì)不僅能顯示實(shí)時(shí)的速度和里程,還顯示時(shí)間,甚至具有測(cè)量騎車人的心跳、顯示騎車人熱量消耗等功能。 由于時(shí)間有限,本設(shè)計(jì)完成的功能減為兩個(gè),即測(cè)量并通過(guò)LED數(shù)碼管進(jìn)行動(dòng)態(tài)顯示當(dāng)前的速度和里程,并在超速時(shí)發(fā)出警報(bào)。 要求達(dá)到的各項(xiàng)指標(biāo)及實(shí)現(xiàn)方法如下:1. 利用霍爾傳感器產(chǎn)生里程數(shù)的脈沖信號(hào)。2. 對(duì)脈沖信號(hào)進(jìn)行計(jì)數(shù)。實(shí)現(xiàn):利用單片機(jī)自帶的計(jì)數(shù)器T1對(duì)霍爾傳感器脈沖信號(hào)進(jìn)行計(jì)數(shù)。3. 對(duì)數(shù)據(jù)進(jìn)行處理,要求用LED顯示里程總數(shù)和即時(shí)速度。實(shí)現(xiàn):利用軟件編程,對(duì)數(shù)據(jù)進(jìn)行處理得到需要的數(shù)值。最終實(shí)現(xiàn)目標(biāo):自行車的速度里程表具有里程、速度測(cè)試與顯示功能,采用單片機(jī)作控制,顯示電

4、路可顯示里程及速度。 1二、系統(tǒng)設(shè)計(jì)1、總體設(shè)計(jì)方案 采用AT89C51芯片,用霍爾元件將車輪的轉(zhuǎn)速轉(zhuǎn)換成電脈沖,經(jīng)過(guò)處理后送入單片機(jī)。里程及速度的測(cè)量,是經(jīng)過(guò)AT89C51的定時(shí)/計(jì)數(shù)器測(cè)出總的脈沖數(shù)和每轉(zhuǎn)一圈的時(shí)間,再經(jīng)過(guò)單片機(jī)的計(jì)算得出,計(jì)算結(jié)果通過(guò)LED顯示器顯示出來(lái)。傳感器是獲取自然或生產(chǎn)領(lǐng)域中信息的關(guān)鍵器件,是現(xiàn)代信息系統(tǒng)和各種設(shè)備不可缺少的信息采集工具。磁傳感器是一種將磁學(xué)量信號(hào)轉(zhuǎn)變?yōu)殡娦盘?hào)的器件或裝置。隨著信息產(chǎn)業(yè)、工業(yè)自動(dòng)化、醫(yī)療儀器等的飛速發(fā)展和計(jì)算機(jī)應(yīng)用的普及,需要大量的傳感器將被測(cè)或被控的非電信號(hào)轉(zhuǎn)換成可與計(jì)算機(jī)兼容的電信號(hào)。作為輸入信號(hào),這就給磁傳感器的快速發(fā)展提供了

5、機(jī)遇,形成了磁傳感器的產(chǎn)業(yè)。其中最具代表的磁傳感器就是霍爾傳感器,在自動(dòng)檢測(cè)系統(tǒng)中,利用霍爾傳感器測(cè)轉(zhuǎn)數(shù)是一種最基本的測(cè)量工作。單片機(jī)是本次設(shè)計(jì)的核心部件,它是信號(hào)從采集到輸出的橋梁,而且包括計(jì)算、定時(shí)、信息處理等功能當(dāng)輪子每轉(zhuǎn)一圈,通過(guò)開關(guān)型霍爾元件傳感器采集到一個(gè)脈沖信號(hào),并從引腳12即P3.2外部中斷0端輸入,傳感器每獲取一個(gè)脈沖信號(hào)即對(duì)系統(tǒng)提供一次計(jì)數(shù)中斷。每次中斷代表車輪轉(zhuǎn)動(dòng)一圈,中斷數(shù)n輪圈的周長(zhǎng)為L(zhǎng)的乘積為里程值。計(jì)數(shù)器T1計(jì)算每轉(zhuǎn)一圈所用的時(shí)間t,就可以計(jì)算出即時(shí)速度v。當(dāng)里程鍵按下時(shí),里程指示燈亮,LED切換顯示當(dāng)前里程,與當(dāng)速度鍵按下時(shí),速度指示燈亮,LED切換顯示當(dāng)前速度

6、,若自行車超速,系統(tǒng)發(fā)出報(bào)警信號(hào),指示燈閃爍。里程數(shù)據(jù)自動(dòng)記憶,也可用于電動(dòng)自行車、摩托車、汽車等機(jī)動(dòng)車儀表上。設(shè)計(jì)包括硬件、軟件兩部分,硬件電路包括AT89C51單片機(jī)的外圍電路以及LED顯示電路等,這里對(duì)硬件部分只做簡(jiǎn)單介紹,主要闡述的是軟件部分的設(shè)計(jì),包括數(shù)據(jù)初始化程序的設(shè)計(jì)、主程序的設(shè)計(jì)、處理子程序的設(shè)計(jì)、顯示子程序的設(shè)計(jì);最后針對(duì)仿真過(guò)程遇到的問(wèn)題進(jìn)行了具體說(shuō)明與分析,對(duì)本次設(shè)計(jì)進(jìn)行總結(jié)。 22、 硬件部分介紹(A)AT89C51芯片簡(jiǎn)介 AT89C51是一種帶4K字節(jié)閃存可編程可擦除的只讀存儲(chǔ)器即為(FPEROMFlash Programmable and Erasable Rea

7、d Only Memory)的低電壓、高性能CMOS 8位微處理器,俗稱單片機(jī)。管腳說(shuō)明:VCC:供電電壓。 GND:接地。 P0口:P0口為一個(gè)8位漏級(jí)開路雙向I/O口,每腳可吸收8TTL門電流。當(dāng)P1口的管腳第一次寫1時(shí),被定義為高阻輸入。P0能夠用于外部程序數(shù)據(jù)存儲(chǔ)器,它可以被定義為數(shù)據(jù)/地址的第八位。在FIASH編程時(shí),P0 口作為原碼輸入口,當(dāng)FIASH進(jìn)行校驗(yàn)時(shí),P0輸出原碼,此時(shí)P0外部必須被拉高。P1口:P1口是一個(gè)內(nèi)部提供上拉電阻的8位雙向I/O口,P1口緩沖器能接收輸出4TTL門電流。P1口管腳寫入1后,被內(nèi)部上拉為高,可用作輸入,P1口被外部下拉為低電平時(shí),將輸出電流,這

8、是由于內(nèi)部上拉的緣故。在FLASH編程和校驗(yàn)時(shí),P1口作為第八位地址接收。 P2口:P2口為一個(gè)內(nèi)部上拉電阻的8位雙向I/O口,P2口緩沖器可接收,輸出4個(gè)TTL門電流,當(dāng)P2口被寫“1”時(shí),其管腳被內(nèi)部上拉電阻拉高,且作為輸入。 P3口:P3口管腳是8個(gè)帶內(nèi)部上拉電阻的雙向I/O口,可接收輸出4個(gè)TTL門電流。P3口也可作為AT89C51的一些特殊功能口,如下表所示: P3.0 RXD(串行輸入口) P3.1 TXD(串行輸出口) P3.2 /INT0(外部中斷0) P3.3 /INT1(外部中斷1) P3.4 T0(記時(shí)器0外部輸入) P3.5 T1(記時(shí)器1外部輸入) P3.6 /WR(

9、外部數(shù)據(jù)存儲(chǔ)器寫選通) P3.7 /RD(外部數(shù)據(jù)存儲(chǔ)器讀選通) RST:復(fù)位輸入。當(dāng)振蕩器復(fù)位器件時(shí),要保持RST腳兩個(gè)機(jī)器周期的高電平時(shí)間。 ALE/PROG:當(dāng)訪問(wèn)外部存儲(chǔ)器時(shí),地址鎖存允許的輸出電平用于鎖存地址的地位字節(jié)。在FLASH編程期間,此引腳用于輸入編程脈沖。/PSEN:外部程序存儲(chǔ)器的選通信號(hào)。在由外部程序存儲(chǔ)器取指期間,每個(gè)機(jī)器周期兩次/PSEN有效。但在訪問(wèn)外部數(shù)據(jù)存儲(chǔ)器時(shí),這兩次有效的/PSEN信號(hào)將不出現(xiàn)。 3(B)硬件設(shè)計(jì)自行車?yán)锍逃?jì)/速度計(jì)電路原理圖見附錄。本次設(shè)計(jì)信號(hào)的捕獲采用的是霍爾傳感器。 霍爾器件具有許多優(yōu)點(diǎn),它們的結(jié)構(gòu)牢固、體積小、重量輕、壽命

10、長(zhǎng)、安裝方便、功耗小、頻率高(可達(dá)1MHz)、耐震動(dòng)、不怕灰塵、油污、水汽及煙霧等的污染或腐蝕?;魻柧€性器件的精度高、線性度好;霍爾開關(guān)器件無(wú)觸點(diǎn)、無(wú)磨損、輸出波形清晰、無(wú)抖動(dòng)、無(wú)回跳、位置重復(fù)精度高。取用各種補(bǔ)償和保護(hù)措施的霍爾器件工作溫度范圍寬,可達(dá)55150。XTAL1和XTAL2分別為反向放大器的輸入和輸出。該反向放大器可以配置為片內(nèi)振蕩器。石晶振蕩和陶瓷振蕩均可采用。如采用外部時(shí)鐘源驅(qū)動(dòng)器件,XTAL2應(yīng)不接。由于輸入至內(nèi)部時(shí)鐘信號(hào)要通過(guò)一個(gè)二分頻觸發(fā)器,因此對(duì)外部時(shí)鐘信號(hào)的脈寬無(wú)任何要求,但必須保證脈沖的高低電平要求的寬度。P0口作為輸出口用于顯示歷程狀態(tài)和速度狀態(tài)。由于P0口沒(méi)有

11、上拉電阻,因此作為輸出口時(shí)要加上上拉電阻來(lái)驅(qū)動(dòng)LED數(shù)碼管的點(diǎn)亮。接于引腳10即P3.2、RXD的開關(guān)用于控制改變顯示的方式,當(dāng)開關(guān)閉合時(shí),顯示速度;開關(guān)打開時(shí)顯示里程。第12腳即外部中斷0用于對(duì)輪子圈數(shù)的計(jì)數(shù)輸入,輪子每轉(zhuǎn)一圈,霍爾傳感器輸出一個(gè)低電平脈沖。第十三腳即外部中斷1用于控制定時(shí)器T1的啟停,當(dāng)輸入為0時(shí)關(guān)閉定時(shí)器。此控制信號(hào)是將輪子圈數(shù)的計(jì)數(shù)脈沖經(jīng)二分頻后形成,這樣,每次定時(shí)器T1的開啟時(shí)間剛好為轉(zhuǎn)一圈的時(shí)間,根據(jù)輪子的周長(zhǎng)就可以計(jì)算出自行車的速度。P1.4口和P1.5口用于EEPROM存儲(chǔ)器24C01的存取控制。11腳輸出用于超速時(shí)的報(bào)警,此時(shí)蜂鳴器發(fā)出聲音,同時(shí)LED燈閃爍。

12、LED數(shù)碼管采用四位相連的共陰極數(shù)碼管,片選信號(hào)分別通過(guò)三極管接至21-24管腳即P2.0-P2.4口,從而實(shí)現(xiàn)里程和速度的動(dòng)態(tài)顯示。自行車的速度里程表的硬件電路設(shè)計(jì)是基礎(chǔ)部分,它包括信號(hào)的捕獲、放大、整形,單片機(jī)的計(jì)算處理,數(shù)碼管的實(shí)時(shí)顯示和單片機(jī)外圍基本電路的設(shè)計(jì),兩大主要器件就是傳感器和單片機(jī)。 43、 軟件部分 模塊化結(jié)構(gòu)設(shè)計(jì)即是根據(jù)要求和硬件設(shè)計(jì)的結(jié)構(gòu),將整個(gè)系統(tǒng)的功能分成許多小的功能模塊,再根據(jù)這些小的功能模塊進(jìn)行程序編寫的過(guò)程。這樣的設(shè)計(jì)方法,使得系統(tǒng)的整個(gè)功能和各部分的功能趨于明朗化。當(dāng)系統(tǒng)出現(xiàn)問(wèn)題,就可以根據(jù)功能設(shè)置找出問(wèn)題的根源,從而更快地解決問(wèn)題。所以說(shuō),在整個(gè)設(shè)計(jì)過(guò)程中

13、,軟件設(shè)計(jì)必須與硬件設(shè)計(jì)緊密地結(jié)合在一起。軟件設(shè)計(jì)包括初始化程序、主程序、行車過(guò)程中里程和速度計(jì)算子程序、延時(shí)子程序、中斷服務(wù)子程序、顯示子程序等。 系統(tǒng)軟件總體流程圖如圖3.1所示 總體設(shè)計(jì)思路:首先進(jìn)行初始化,選擇車輪周長(zhǎng),P3.0是用于里程和速度切換的,低電平為顯示速度,高電平為顯示里程。根據(jù)P3.0的狀態(tài)來(lái)決定顯示內(nèi)容,P3.0=1時(shí),轉(zhuǎn)到計(jì)算速度子程序并進(jìn)行顯示;P3.0=0時(shí),轉(zhuǎn)到計(jì)算里程子程序并進(jìn)行顯示。P1.0和P1.1口分別用于顯示里程狀態(tài)和速度狀態(tài)。P1.2、P1.3、P1.6和P1.7口分別用于設(shè)置輪圈的大小,低電平有效。中斷0用于對(duì)輪子圈數(shù)的計(jì)數(shù)輸入,輪子每轉(zhuǎn)一圈,霍爾

14、傳感器輸出一個(gè)低電平脈沖。將根據(jù)里程寄存器中的內(nèi)容計(jì)算和判斷出行駛里程數(shù)。中斷1用于控制定時(shí)器T1的啟/停,當(dāng)輸入為0時(shí)關(guān)閉定時(shí)器。此控制信號(hào)是將輪子圈數(shù)的計(jì)數(shù)經(jīng)二分頻后形成。這樣,每次定時(shí)器T1的開啟時(shí)間剛好為轉(zhuǎn)一圈的時(shí)間,根據(jù)輪子的周長(zhǎng)就可以計(jì)算出自行車的速度。初始化P3.0=1?計(jì)算里程顯示里程計(jì)算速度顯示速度N開始Y 圖 3.1 系統(tǒng)整體流程圖 5主要內(nèi)存單元及用處:50H:EEPROM器件尋址字節(jié)存放單元51H:EEPROM傳送字節(jié)數(shù)存放單元30H:EEPROM發(fā)送數(shù)據(jù)緩沖單元40H:EEPROM讀出數(shù)據(jù)存放單元0A0H:EEPROM尋址字節(jié)寫入0A1H:EEPROM尋址字節(jié)讀出62

15、H:DPTR計(jì)數(shù)擴(kuò)展高8位6CH:定時(shí)器T1計(jì)數(shù)擴(kuò)展高8位6DH:定時(shí)器T1計(jì)數(shù)擴(kuò)展高816位60H、61H、62H:里程計(jì)數(shù)單元68H、69H、6AH、6BH:存放自行車每圈時(shí)間數(shù)70H、71H、72H、73H:顯示BCD碼數(shù)據(jù)存放用11H-15H:存放被除數(shù)16H19H:存放除數(shù)(A)初始化程序初始化程序主要完成以下工作:將T1設(shè)為外部控制定時(shí)器方式;外部中斷0及外部中斷1設(shè)為邊沿觸發(fā)方式;將部分內(nèi)存單元清0;設(shè)置輪子周長(zhǎng);開中斷及定時(shí)器;將EEPROM中的數(shù)據(jù)調(diào)入內(nèi)存。CLEARMEN:MOV TMOD,#90H ;T1為16位外部控制定時(shí)器 MOV SP,#75H ;堆棧從75H開始

16、SETB PX0 ;外部中斷0優(yōu)先級(jí)為1 SETB IT0 ;外部中斷0用邊沿觸發(fā) SETB IT1 ;外部中斷1用邊沿觸發(fā) CLR A ;清A MOV 20H,A ;清內(nèi)存中特定單元 MOV 6CH,A ;清內(nèi)存中特定單元 MOV 6DH,A ;清內(nèi)存中特定單元 MOV 70H,A ;清內(nèi)存中特定單元 MOV 71H,A ;清內(nèi)存中特定單元 MOV 72H,A ;清內(nèi)存中特定單元 MOV 73H,A ;清內(nèi)存中特定單元 MOV 60H,A ;清內(nèi)存中特定單元 MOV 61H,A ;清內(nèi)存中特定單元 6 MOV 62H,A ;清內(nèi)存中特定單元 MOV 63H,A ;清內(nèi)存中特定單元 DEC A

17、 ;A為0FFH MOV 68H,A ;內(nèi)存置數(shù)據(jù)0FFH MOV 69H,A ;內(nèi)存置數(shù)據(jù)0FFH MOV 6AH,A ;內(nèi)存置數(shù)據(jù)0FFH MOV 6BH,A ;內(nèi)存置數(shù)據(jù)0FFH MOV P1,A ;P1口置1CLEAR1: JB P1.2,KEY1 ;根據(jù)P1.2設(shè)置狀態(tài) MOV 21H,#0FH LJMP CLEAR2 ;轉(zhuǎn)CLEAR2KEY1: JB P1.3,KEY2 ;根據(jù)P1.3設(shè)置狀態(tài) MOV 21H,#12H LJMP CLEAR2KEY2: JB P1.6,KEY3 ;根據(jù)P1.6設(shè)置狀態(tài) MOV 21H,#14H LJMP CLEAR2KEY3: JB P1.7,ER

18、R ;根據(jù)P1.7設(shè)置狀態(tài) MOV 21H,#19HCLEAR2: SETB TR1 ;開定時(shí)器T1 SETB EA ;開中斷允許 SETB EX0 ;開外中斷0 SETB ET1 ;開定時(shí)中斷T1 SETB P3.1 ;關(guān)報(bào)警器 LCALL VIICREAD ;將EEPROM中原里程數(shù)據(jù)調(diào)入內(nèi)存 RETERR: CPL P3.1 ;未設(shè)置車輪周長(zhǎng),開始報(bào)警 LCALL DL5S ;延時(shí)5S LJMP CLEAR1 ;重新初始化初始化具體過(guò)程:首先對(duì)P1.2口的內(nèi)容進(jìn)行查詢,若P1.2=0,則說(shuō)明P1.2口接的按鈕被按下,即選擇第一種車輪周長(zhǎng),同時(shí)將周長(zhǎng)存入21H單元內(nèi);若P1.2=1,則第一

19、個(gè)按鈕沒(méi)被按下,再對(duì)P1.3口的內(nèi)容進(jìn)行查詢,內(nèi)容為0則將其周長(zhǎng)值存入21H中,不為0則掃描P1.6,內(nèi)容為0則將其周長(zhǎng)值存入21H中,不為0則掃描P1.7,若P1.7為0則將其周長(zhǎng)值存入21H中,不為0則說(shuō)明沒(méi)有選擇車輪直徑,此時(shí)開始報(bào)警,并調(diào)用延時(shí)子程序。接著再?gòu)腜1.2口掃描,如此循環(huán),直到有鍵按下后停止報(bào)警。 7初始化P1.2=1?NP1.3=1?P1.6=1?P1.7=1?出錯(cuò)提示將車圈周長(zhǎng)調(diào)入21H開中斷,啟動(dòng)定時(shí)器NNNYYYY開報(bào)警器并延時(shí)關(guān)報(bào)警器圖 3.2 初始化程序流程圖(B)主程序主程序根據(jù)P3.0口的開關(guān)狀態(tài)選擇里程速度顯示。START: LCALL CLEARMEN

20、;上電初始化START1: JB P3.0,DISPLAYS ;P3.0=1,顯示里程 LCALL DISPLAYV ;P3.0=0,顯示速度START2: SJMP START1 ;循環(huán) 8初始化開始P3.0=1?調(diào)用里程處理子程序Y調(diào)用速度處理子程序N 圖3.3 主程序流程圖(C)用外部中斷0實(shí)現(xiàn)的里程計(jì)數(shù)程序定時(shí)中斷是為滿足定時(shí)或計(jì)數(shù)的需要而設(shè)置的。在單片機(jī)內(nèi)部有兩個(gè)定時(shí)/計(jì)數(shù)器,以對(duì)其中的計(jì)數(shù)結(jié)構(gòu)進(jìn)行計(jì)數(shù)的方法,來(lái)實(shí)現(xiàn)定時(shí)或計(jì)數(shù)功能。當(dāng)結(jié)構(gòu)發(fā)生計(jì)數(shù)溢出時(shí),即表明定時(shí)時(shí)間或計(jì)數(shù)值已滿,這時(shí)就以計(jì)數(shù)溢出信號(hào)作為中斷請(qǐng)求,去置位一個(gè)溢出標(biāo)志,作為單片機(jī)接受中斷請(qǐng)求的標(biāo)志。這種中斷請(qǐng)求是在單片

21、機(jī)芯片內(nèi)部發(fā)生的,因此無(wú)須在芯片上設(shè)置引入端。定時(shí)/計(jì)數(shù)器控制寄存器TCON是8位寄存器,地址為88H,可以位尋址。其高4位用于定時(shí)/計(jì)數(shù)器中斷控制,低4位借給外部中斷,用做中斷標(biāo)志和觸發(fā)方式選擇位。本設(shè)計(jì)采用定時(shí)中斷,對(duì)自行車的里程和速度進(jìn)行計(jì)數(shù)。INTEX0: PUSH ACC ;累加器堆棧保護(hù) PUSH PSW ;狀態(tài)字堆棧保護(hù) INC 60H ;圈數(shù)加1 CLR A ;清A CJNE A,60H,INTEX0OUT ;計(jì)數(shù)器沒(méi)溢出轉(zhuǎn)INTEX0OUT INC 61H ;溢出進(jìn)位(61H加1) CJNE A,61H,INTEX0OUT ;計(jì)數(shù)器沒(méi)溢出轉(zhuǎn)INTEX0OUT INC 62H

22、;溢出進(jìn)位(62H加1)INTEX0OUT:LCALL VIICWRITE ;里程數(shù)據(jù)存入EEPROM SETB EX1 ;開外部中斷1 POP PSW ;狀態(tài)字恢復(fù) POP ACC ;累加器恢復(fù) 9 RETI ;中斷返回;每轉(zhuǎn)一圈時(shí)間計(jì)數(shù)處理程序,每圈時(shí)間放在68H6BH單元中INTEX1: PUSH ACC ;累加器堆棧保護(hù) PUSH PSW ;狀態(tài)字堆棧保護(hù) CLR EX1 ;關(guān)外部中斷1 JNB 00H,INTEX11 ;溢出標(biāo)志為0轉(zhuǎn)INTEX11 MOV TL1,#0FFH ;溢出時(shí)計(jì)時(shí)單元賦#0FFH(顯示速度為零) MOV TH1,#0FFH MOV 6CH,#0FFH MOV

23、 6DH,#0FFHINTEX11: MOV 68H,TL1 ;將時(shí)間計(jì)數(shù)值移入暫存單元68H-6BH MOV 69H,TH1 MOV 6AH,6CH MOV 6BH,6DH CLR A ;清A MOV TL1,A ;計(jì)數(shù)單元置零 MOV TH1,A MOV 6CH,A MOV 6DH,A CLR 00H ;清溢出標(biāo)志 POP PSW ;狀態(tài)字堆?;謴?fù) POP ACC ;累加器堆棧恢復(fù) RETI ;中斷返回;T1計(jì)數(shù)器中斷服務(wù)程序。(計(jì)數(shù)器T1由外部中斷1輸入控制,當(dāng)為高電平時(shí)計(jì)時(shí)開始)INTT1: PUSH ACC ; 累加器堆棧保護(hù) PUSH PSW ;狀態(tài)字堆棧保護(hù) INC 6CH ;6

24、C計(jì)時(shí)單元加1 MOV A,6CH ;6C單元內(nèi)容移入A JNZ INTT11 ;不為0,轉(zhuǎn)INTT11 INC 6DH ;進(jìn)位,6DH單元加1 MOV A,6DH ;移入A JNZ INTT11 ;不為0,轉(zhuǎn)INTT11 SETB 00H ;計(jì)時(shí)器溢出,置溢出標(biāo)志位INTT11: POP PSW ;狀態(tài)字堆?;謴?fù) POP ACC ;累加器堆棧恢復(fù) RETI ;中斷返回 10 關(guān)中斷開始現(xiàn)場(chǎng)保護(hù)開中斷中斷處理關(guān)中斷現(xiàn)場(chǎng)恢復(fù)開中斷中斷返回圖 3.4 中斷流程圖(D)里程、速度處理程序里程處理程序外中斷0服務(wù)程序用于對(duì)單片機(jī)P3.2口輸入的圈脈沖進(jìn)行計(jì)數(shù),為十六進(jìn)制計(jì)數(shù)器。60H為低位,62H為高

25、位。每次計(jì)數(shù)一次后,對(duì)里程數(shù)據(jù)進(jìn)行一次存儲(chǔ)操作。當(dāng)車輪每轉(zhuǎn)一圈,通過(guò)霍爾元件將脈沖數(shù)輸入單片機(jī)內(nèi),通過(guò)計(jì)數(shù)器計(jì)出脈沖數(shù),再用乘法子程序算出里程數(shù)。SSS: MOV 19H,#64H ;除數(shù)最高位賦值 MOV 18H,#00H ;除數(shù)賦值 MOV 17H,#00H ; 除數(shù)賦值 MOV 16H,#00H ; 除數(shù)賦值 MOV 11H,#00H ; 被除數(shù)賦值 MOV 12H,#00H ; 被除數(shù)賦值 MOV 13H,62H ; 被除數(shù)賦值 MOV 14H,61H ; 被除數(shù)賦值 MOV 15H,60H ; 被除數(shù)賦值 LCALL DIVST ;調(diào)除法程序 11 LCALL BCDST ; 跳到二

26、進(jìn)制轉(zhuǎn)BCD碼程序 MOV A,25H ;將25H內(nèi)容移入A ANL A,#0FH ; 高四位為0 MOV 70H,A ;移入70H MOV A,25H ; 將25H內(nèi)容移入A SWAP A ;交換高低字節(jié) ANL A,#0FH ; 高四位為0 MOV 71H,A ; 移入71H MOV A,24H ; 將24H內(nèi)容移入A ANL A,#0FH ; 高四位為0 MOV 72H,A ; 移入72H MOV A,24H ; 將24H內(nèi)容移入A SWAP A ; 交換高低字節(jié) ANL A,#0FH ; 高四位為0 MOV 73H,A ; 移入73H RET點(diǎn)亮里程指示燈開始將車圈數(shù)轉(zhuǎn)換成里程顯示里程

27、值返回圖 3.5 里程處理程序流程圖速度處理程序外中斷1服務(wù)程序用于處理輪子轉(zhuǎn)動(dòng)一圈后的計(jì)時(shí)數(shù)據(jù)。當(dāng)標(biāo)志位(00H)為1時(shí),計(jì)數(shù)溢出,放入最大時(shí)間值(為#0FFH);當(dāng)標(biāo)志位為0時(shí),將計(jì)數(shù)單元(TL1、TH1、6CH、6DH)的值放入68H6BH單元。定時(shí)器計(jì)出每轉(zhuǎn)一圈所用的時(shí)間,用自行車車輪的周長(zhǎng)除以時(shí)間就得出自行車的速度。VVV: MOV 18H,68H ;除數(shù)賦值 MOV 17H,69H ;除數(shù)賦值MOV 16H,6AH ;除數(shù)賦值 12MOV 11H,#00H ;被除數(shù)賦值MOV 12H,#00H ;被除數(shù)賦值MOV 13H,#36H ;被除數(shù)賦值MOV 14H,#0EEH ;被除數(shù)賦

28、值MOV 15H,#80H ;被除數(shù)賦值LCALL DIVST ;調(diào)除法程序MOV 14H,#00H ;舍去一位LCALL BCDST ;跳到二進(jìn)制轉(zhuǎn)BCD碼程序MOV A,25H ;以下將速度值放入顯示單元ANL A,#0FH ;高四位為0MOV 70H,A ;放入70H內(nèi)MOV A,25H ;再取數(shù)SWAP A ;高低字節(jié)交換ANL A,#0FH ;高四位為0MOV 71H,A ;放入71H內(nèi)MOV 72H,#00H ;72H為0MOV 73H,#00H ;73H為0RET ;子程序返回開始開速度指示燈計(jì)算速度報(bào)警顯示速度NY返回P3.0=1? P3.0=1?22速?圖 3.6速度處理程序

29、流程圖 13(E)顯示子程序采用動(dòng)態(tài)掃描顯示接口電路,動(dòng)態(tài)顯示接口電路是把所有顯示器的8個(gè)筆劃段a-h同名端連在一起,而每一個(gè)顯示器的公共極COM各自獨(dú)立地受I/O線控制。CPU向字段輸出口送出字型碼時(shí),所有顯示器接收到相同的字型碼,但究竟是哪個(gè)顯示器亮,則取決于COM端。可以采用分時(shí)的方法,輪流控制各個(gè)顯示器的COM端,使各個(gè)顯示器輪流點(diǎn)亮。在輪流點(diǎn)亮掃描過(guò)程中,每位顯示器的點(diǎn)亮?xí)r間是極為短暫的(約1ms),由于人的視覺(jué)暫留現(xiàn)象及發(fā)光二極管的余輝效應(yīng),盡管實(shí)際上各位顯示器并非同時(shí)點(diǎn)亮,但只要掃描的速度足夠快,給人的印象就是一組穩(wěn)定的顯示數(shù)據(jù),不會(huì)有閃爍感。本設(shè)計(jì)P2.0、P2.1、P2.2、

30、P2.3信號(hào)一起組成位選通的位選信號(hào),P0.0P0.7信號(hào)一起組成段碼選通的段選信號(hào),通過(guò)軟件編程,先把所要顯示的數(shù)據(jù)放入存儲(chǔ)單元,然后把數(shù)據(jù)送入段選通對(duì)應(yīng)的地址,再選通某一個(gè)LED,逐步完成四個(gè)LED的顯示。;里程顯示控制程序DISPLAYS:SETB P1.0 ;點(diǎn)亮LED1 CLR P1.1 ;關(guān)閉速度指示燈 SETB P3.7 LCALL SSS ;將圈數(shù)轉(zhuǎn)為公里數(shù) LCALL DISPLAY ;顯示公里數(shù)據(jù) LJMP START1 ;跳回START1;速度顯示程序DISPLAYV:CLR P1.0 ;關(guān)閉LED1(里程指示燈) SETB P1.1 ;點(diǎn)亮LED2(速度指示燈) CLR

31、 P3.7 LCALL VVV ;每圈時(shí)間換算為KM/H程序 MOV A,71H ;將十位數(shù)(BCD碼)值植入A SUBB A,#04H ;與預(yù)定報(bào)警值比較 JNC WARING ;時(shí)速超過(guò)40時(shí)報(bào)警 SETB P3.1 ;關(guān)報(bào)警燈V1: LCALL DISPLAY ;顯亮一次 RET ;子程序返回DISPLAY: MOV R1,#70H ;顯示單元首址 MOV R2,#0FEH ;掃描字PLAY: MOV A,R2 ;掃描字送入A MOV P2,A ;放到端口P2 MOV A,R1 ;取顯示數(shù)據(jù) ANL A,#0FH ;高四位清0 MOV DPTR,#TAB ;取段碼表首址 MOVC A,A

32、+DPTR ;查顯示數(shù)據(jù)對(duì)應(yīng)段碼 14 MOV P0,A ;段碼輸出 LCALL DL1MS ;點(diǎn)亮1MS INC R1 ;指向下一顯示數(shù)據(jù)地址 MOV A,R2 ;取掃描字 JNB ACC.3,ENDOUT ;已掃描到第四位,轉(zhuǎn)ENDOUT退出 RL A ;循環(huán)左移 MOV R2,A ;放回R2 AJMP PLAY ;轉(zhuǎn)PLAY循環(huán)ENDOUT: SETB P2.0 ;關(guān)掃描 SETB P2.1 ;關(guān)掃描 SETB P2.2 ;關(guān)掃描 SETB P2.3 ;關(guān)掃描 RET ;子程序返回;共陰極段碼表TAB: DB 3FH,06H,5BH,4FH,66H,6DH,7DH,07H DB 7FH,

33、6FH,77H,7CH,39H,5EH,79H,71H DB 00H 15開始顯示單元首址取顯示數(shù)據(jù)送段碼到P0口取段碼表首址調(diào)用延時(shí)送位選到P2口4位顯示結(jié)束返回YN修改顯示單元地址求下一位位選碼圖 3.5 顯示程序流程圖(F)延時(shí)子程序;1ms延時(shí)程序 利用循環(huán)實(shí)現(xiàn)延時(shí)DL1MS: MOV R6,#14HDL1: MOV R7,#19HDL2: DJNZ R7,DL2 ;循環(huán)19H次 DJNZ R6,DL1 ;循環(huán)14H次 RET;出錯(cuò)閃爍利用延時(shí)255msDL5S: MOV R5,#0FFH DL3: LCALL DL1MS ;調(diào)用1ms延時(shí) DJNZ R5,DL3 ;循環(huán)255次 RE

34、T 16三、調(diào)試1.硬件調(diào)試硬件調(diào)試時(shí),我們首先檢查了接線,對(duì)照電路原理圖,確保準(zhǔn)確無(wú)誤。其次是檢查各個(gè)焊點(diǎn)是否有虛焊的情況,檢查無(wú)誤后,接通經(jīng)穩(wěn)壓后的5V電源。硬件的修改可在元器件參數(shù)方面調(diào)整,如電阻的阻值等。2.軟件調(diào)試先用KEIL軟件輸入完整的程序,進(jìn)行編譯。首先,新建一個(gè)項(xiàng)目選擇AT89C51,新建一個(gè)文件,將程序輸入,輸完后保存,保存時(shí)需加后綴名.ASM。然后將文件添加到新建的工程下。進(jìn)行檢錯(cuò)和編譯,窗口如圖3.2所示。 圖 3.1 KEIL編譯窗口編譯無(wú)誤后即可運(yùn)行,運(yùn)行時(shí)可從Peripherals中調(diào)出輸出口P0P3來(lái)觀察輸出情況。運(yùn)行時(shí)窗口如圖3.1所示。 圖 3.2 KEIL

35、運(yùn)行窗口 17接著再使用PROTEUS仿真軟件進(jìn)行仿真。首先新建一個(gè)文件,選擇所需的元件并排列好,根據(jù)電路原理圖進(jìn)行布線。當(dāng)完成原理圖布線后,利用PROTEUS ISIS編輯環(huán)境所提供的電器規(guī)則檢查命令對(duì)設(shè)計(jì)進(jìn)行檢查,并根據(jù)系統(tǒng)提供的錯(cuò)誤檢查報(bào)告修改原理圖。直到通過(guò)電器規(guī)則檢查為止。然后在KEIL中生成HEX文件,雙擊AT89C51芯片,將完整的程序灌入芯片,單擊左下角的開始箭頭即可開始模擬仿真。在仿真過(guò)程中遇到過(guò)一些問(wèn)題,針對(duì)這些問(wèn)題做了些軟件方面的調(diào)整。 剛開始仿真時(shí),P0口是灰色的,數(shù)碼管沒(méi)有點(diǎn)亮。經(jīng)檢查是由于P0口內(nèi)部沒(méi)有上拉電阻,因此,必須另外加上,上拉電阻一段接P0口,另一端直接接

36、到電源的正集。接上后數(shù)碼管點(diǎn)亮,但顯示的是亂碼經(jīng)過(guò)仔細(xì)的檢查,發(fā)現(xiàn)了程序中的錯(cuò)誤,硬件中選用的是共陰極數(shù)碼管,而程序中錯(cuò)用了共陽(yáng)極的段碼表,從而造成了應(yīng)該點(diǎn)亮的部分沒(méi)亮,而不該點(diǎn)亮的部分反而亮了的錯(cuò)誤情況。 18四、操作說(shuō)明 本設(shè)計(jì)為自行車?yán)锍逃?jì)/速度計(jì),實(shí)現(xiàn)了里程速度計(jì)的基本功能。接通電源后,由于未選擇車輪周長(zhǎng),蜂鳴器報(bào)警提示,同時(shí)LED燈D3閃爍,直到有鍵按下。當(dāng)按下P1.2口所接開關(guān)SW2時(shí)選擇車輪周長(zhǎng)1,按下P1.3口所接開關(guān)SW3時(shí)選擇車輪周長(zhǎng)2,按下P1.6口所接開關(guān)SW4時(shí)選擇車輪周長(zhǎng)3,P1.7口所接開關(guān)SW5時(shí)選擇車輪周長(zhǎng)4,選擇周長(zhǎng)后,每按下開關(guān)SW6一次表示車輪轉(zhuǎn)了一圈,

37、此時(shí)數(shù)碼管顯示當(dāng)前的里程值,此時(shí)若按下開關(guān)SW7則數(shù)碼管顯示當(dāng)前的速度值,當(dāng)超速時(shí)蜂鳴器報(bào)警。 19五、參考文獻(xiàn)1單片機(jī)原理及應(yīng)用技術(shù) 范力旻 主編 電子工業(yè)出版社2單片機(jī)原理及其接口技術(shù)(第二版) 胡汗才編著 北京大學(xué)出版社351系列單片機(jī)設(shè)計(jì)實(shí)列 樓然苗 李光飛編著 北航出版社4單片微機(jī)測(cè)控系統(tǒng)設(shè)計(jì)大全 王福瑞編著 北航出版社5例說(shuō)8051 張義和 編著 人民郵電出版社6傳感器應(yīng)用技術(shù)141例松井邦彥, 梁瑞林 編著 科學(xué)出版社,7單片機(jī)設(shè)計(jì)教程 孫惠芹 編著 電子工業(yè)出版社8單片機(jī)及應(yīng)用系統(tǒng)設(shè)計(jì)原理與實(shí)踐 劉海成編著 北京航空航天大學(xué)出版社9單片機(jī)原理與應(yīng)用系統(tǒng)設(shè)計(jì) 歐偉明 編著 電子工

38、業(yè)出版社10單片機(jī)原理與應(yīng)用實(shí)例仿真 李泉溪主編 北京航空航天大學(xué)出版社11單片機(jī)原理與應(yīng)用技術(shù)實(shí)踐盧勝利 編著 機(jī)械工業(yè)出版社12單片機(jī)實(shí)踐應(yīng)用與技術(shù) 馬長(zhǎng)林,陳怡,程利民 編著 清華大學(xué)出版社 20六、心得體會(huì) 通過(guò)兩周的時(shí)間,我們較成功的完成了這次課程設(shè)計(jì)。 剛開始選課題的時(shí)候,對(duì)各個(gè)課題都不了解,難易程度也不太清楚,前面選的幾個(gè)課題有的比較簡(jiǎn)單,有的又和其他的組沖突,所以課題定的比較晚,后來(lái)感覺(jué)對(duì)這個(gè)方面還是比較感興趣的,而且它的實(shí)際用途也比較大。通過(guò)查閱一些資料,我們確定了總體方案。接下來(lái)就是采購(gòu)元器件了,因?yàn)橐郧皼](méi)買過(guò),沒(méi)什么經(jīng)驗(yàn),買的時(shí)候也沒(méi)仔細(xì)看,回來(lái)后發(fā)現(xiàn)元器件都比較舊,特別是89C51芯片,引腳都發(fā)黑了,只好去換了一個(gè)。接下來(lái)的幾天就是焊接電路了,由于我們選的電路比較復(fù)雜,所以焊

溫馨提示

  • 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ù)網(wǎng)僅提供信息存儲(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ì)自己和他人造成任何形式的傷害或損失。

評(píng)論

0/150

提交評(píng)論