




免費(fèi)預(yù)覽已結(jié)束,剩余30頁可下載查看
下載本文檔
版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
單片機(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 四、操作說明19五、參考文獻(xiàn)20六、心得體會(huì)21七、附錄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)大,給人們帶來更多的方便。2、 課題簡(jiǎn)介 自行車被發(fā)明及使用到現(xiàn)在已有兩百多年的歷史,在這兩百年間人類在不斷的嘗試與研發(fā)過程中,自行車發(fā)展的目的也從最早的代步工具轉(zhuǎn)換成休閑娛樂的用途,隨著生活水平的提高,人們希望自行車的功能更強(qiáng)大,而里程計(jì)/速度計(jì)正滿足了這個(gè)需求?,F(xiàn)在先進(jìn)的里程/速度計(jì)不僅能顯示實(shí)時(shí)的速度和里程,還顯示時(shí)間,甚至具有測(cè)量騎車人的心跳、顯示騎車人熱量消耗等功能。 由于時(shí)間有限,本設(shè)計(jì)完成的功能減為兩個(gè),即測(cè)量并通過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ī)作控制,顯示電路可顯示里程及速度。 1二、系統(tǒng)設(shè)計(jì)1、總體設(shè)計(jì)方案 采用at89c51芯片,用霍爾元件將車輪的轉(zhuǎn)速轉(zhuǎn)換成電脈沖,經(jīng)過處理后送入單片機(jī)。里程及速度的測(cè)量,是經(jīng)過at89c51的定時(shí)/計(jì)數(shù)器測(cè)出總的脈沖數(shù)和每轉(zhuǎn)一圈的時(shí)間,再經(jīng)過單片機(jī)的計(jì)算得出,計(jì)算結(jié)果通過led顯示器顯示出來。傳感器是獲取自然或生產(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ā)展提供了機(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ā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的乘積為里程值。計(jì)數(shù)器t1計(jì)算每轉(zhuǎn)一圈所用的時(shí)間t,就可以計(jì)算出即時(shí)速度v。當(dāng)里程鍵按下時(shí),里程指示燈亮,led切換顯示當(dāng)前里程,與當(dāng)速度鍵按下時(shí),速度指示燈亮,led切換顯示當(dāng)前速度,若自行車超速,系統(tǒng)發(fā)出報(bào)警信號(hào),指示燈閃爍。里程數(shù)據(jù)自動(dòng)記憶,也可用于電動(dòng)自行車、摩托車、汽車等機(jī)動(dòng)車儀表上。設(shè)計(jì)包括硬件、軟件兩部分,硬件電路包括at89c51單片機(jī)的外圍電路以及l(fā)ed顯示電路等,這里對(duì)硬件部分只做簡(jiǎn)單介紹,主要闡述的是軟件部分的設(shè)計(jì),包括數(shù)據(jù)初始化程序的設(shè)計(jì)、主程序的設(shè)計(jì)、處理子程序的設(shè)計(jì)、顯示子程序的設(shè)計(jì);最后針對(duì)仿真過程遇到的問題進(jìn)行了具體說明與分析,對(duì)本次設(shè)計(jì)進(jìn)行總結(jié)。 22、 硬件部分介紹(a)at89c51芯片簡(jiǎn)介 at89c51是一種帶4k字節(jié)閃存可編程可擦除的只讀存儲(chǔ)器即為(fperomflash programmable and erasable read only memory)的低電壓、高性能cmos 8位微處理器,俗稱單片機(jī)。管腳說明: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í),將輸出電流,這是由于內(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(外部數(shù)據(jù)存儲(chǔ)器寫選通) p3.7 /rd(外部數(shù)據(jù)存儲(chǔ)器讀選通) rst:復(fù)位輸入。當(dāng)振蕩器復(fù)位器件時(shí),要保持rst腳兩個(gè)機(jī)器周期的高電平時(shí)間。 ale/prog:當(dāng)訪問外部存儲(chǔ)器時(shí),地址鎖存允許的輸出電平用于鎖存地址的地位字節(jié)。在flash編程期間,此引腳用于輸入編程脈沖。/psen:外部程序存儲(chǔ)器的選通信號(hào)。在由外部程序存儲(chǔ)器取指期間,每個(gè)機(jī)器周期兩次/psen有效。但在訪問外部數(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)牢固、體積小、重量輕、壽命長(zhǎng)、安裝方便、功耗小、頻率高(可達(dá)1mhz)、耐震動(dòng)、不怕灰塵、油污、水汽及煙霧等的污染或腐蝕?;魻柧€性器件的精度高、線性度好;霍爾開關(guān)器件無觸點(diǎn)、無磨損、輸出波形清晰、無抖動(dòng)、無回跳、位置重復(fù)精度高。取用各種補(bǔ)償和保護(hù)措施的霍爾器件工作溫度范圍寬,可達(dá)55150。xtal1和xtal2分別為反向放大器的輸入和輸出。該反向放大器可以配置為片內(nèi)振蕩器。石晶振蕩和陶瓷振蕩均可采用。如采用外部時(shí)鐘源驅(qū)動(dòng)器件,xtal2應(yīng)不接。由于輸入至內(nèi)部時(shí)鐘信號(hào)要通過一個(gè)二分頻觸發(fā)器,因此對(duì)外部時(shí)鐘信號(hào)的脈寬無任何要求,但必須保證脈沖的高低電平要求的寬度。p0口作為輸出口用于顯示歷程狀態(tài)和速度狀態(tài)。由于p0口沒有上拉電阻,因此作為輸出口時(shí)要加上上拉電阻來驅(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燈閃爍。led數(shù)碼管采用四位相連的共陰極數(shù)碼管,片選信號(hào)分別通過三極管接至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)行程序編寫的過程。這樣的設(shè)計(jì)方法,使得系統(tǒng)的整個(gè)功能和各部分的功能趨于明朗化。當(dāng)系統(tǒng)出現(xiàn)問題,就可以根據(jù)功能設(shè)置找出問題的根源,從而更快地解決問題。所以說,在整個(gè)設(shè)計(jì)過程中,軟件設(shè)計(jì)必須與硬件設(shè)計(jì)緊密地結(jié)合在一起。軟件設(shè)計(jì)包括初始化程序、主程序、行車過程中里程和速度計(jì)算子程序、延時(shí)子程序、中斷服務(wù)子程序、顯示子程序等。 系統(tǒng)軟件總體流程圖如圖3.1所示 總體設(shè)計(jì)思路:首先進(jìn)行初始化,選擇車輪周長(zhǎng),p3.0是用于里程和速度切換的,低電平為顯示速度,高電平為顯示里程。根據(jù)p3.0的狀態(tà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)一圈,霍爾傳感器輸出一個(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é)讀出62h: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開始 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 ;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,err ;根據(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 ;重新初始化初始化具體過程:首先對(duì)p1.2口的內(nèi)容進(jìn)行查詢,若p1.2=0,則說明p1.2口接的按鈕被按下,即選擇第一種車輪周長(zhǎng),同時(shí)將周長(zhǎng)存入21h單元內(nèi);若p1.2=1,則第一個(gè)按鈕沒被按下,再對(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則說明沒有選擇車輪直徑,此時(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 ;上電初始化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ù)的方法,來實(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)求是在單片機(jī)芯片內(nèi)部發(fā)生的,因此無須在芯片上設(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ù)器沒溢出轉(zhuǎn)intex0out inc 61h ;溢出進(jìn)位(61h加1) cjne a,61h,intex0out ;計(jì)數(shù)器沒溢出轉(zhuǎn)intex0out inc 62h ;溢出進(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 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 ;6c計(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為高位。每次計(jì)數(shù)一次后,對(duì)里程數(shù)據(jù)進(jìn)行一次存儲(chǔ)操作。當(dāng)車輪每轉(zhuǎn)一圈,通過霍爾元件將脈沖數(shù)輸入單片機(jī)內(nèi),通過計(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 ; 跳到二進(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)換成里程顯示里程值返回圖 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ù)賦值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速度處理程序流程圖 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)亮掃描過程中,每位顯示器的點(diǎn)亮?xí)r間是極為短暫的(約1ms),由于人的視覺暫留現(xiàn)象及發(fā)光二極管的余輝效應(yīng),盡管實(shí)際上各位顯示器并非同時(shí)點(diǎn)亮,但只要掃描的速度足夠快,給人的印象就是一組穩(wěn)定的顯示數(shù)據(jù),不會(huì)有閃爍感。本設(shè)計(jì)p2.0、p2.1、p2.2、p2.3信號(hào)一起組成位選通的位選信號(hào),p0.0p0.7信號(hào)一起組成段碼選通的段選信號(hào),通過軟件編程,先把所要顯示的數(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 p3.7 lcall vvv ;每圈時(shí)間換算為km/h程序 mov a,71h ;將十位數(shù)(bcd碼)值植入a subb a,#04h ;與預(yù)定報(bào)警值比較 jnc waring ;時(shí)速超過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+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,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次 ret 16三、調(diào)試1.硬件調(diào)試硬件調(diào)試時(shí),我們首先檢查了接線,對(duì)照電路原理圖,確保準(zhǔn)確無誤。其次是檢查各個(gè)焊點(diǎn)是否有虛焊的情況,檢查無誤后,接通經(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編譯窗口編譯無誤后即可運(yùn)行,運(yùn)行時(shí)可從peripherals中調(diào)出輸出口p0p3來觀察輸出情況。運(yùn)行時(shí)窗口如圖3.1所示。 圖 3.2 keil運(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ī)則檢查為止。然后在keil中生成hex文件,雙擊at89c51芯片,將完整的程序灌入芯片,單擊左下角的開始箭頭即可開始模擬仿真。在仿真過程中遇到過一些問題,針對(duì)這些問題做了些軟件方面的調(diào)整。 剛開始仿真時(shí),p0口是灰色的,數(shù)碼管沒有點(diǎn)亮。經(jīng)檢查是由于p0口內(nèi)部沒有上拉電阻,因此,必須另外加上,上拉電阻一段接p0口,另一端直接接到電源的正集。接上后數(shù)碼管點(diǎn)亮,但顯示的是亂碼經(jīng)過仔細(xì)的檢查,發(fā)現(xiàn)了程序中的錯(cuò)誤,硬件中選用的是共陰極數(shù)碼管,而程序中錯(cuò)用了共陽極的段碼表,從而造成了應(yīng)該點(diǎn)亮的部分沒亮,而不該點(diǎn)亮的部分反而亮了的錯(cuò)誤情況。 18四、操作說明 本設(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)了一圈,此時(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例說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ì) 歐偉明 編著 電子工業(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ì) 通過兩周的時(shí)間,我們較成功的完成了這次課程設(shè)計(jì)。 剛開始選課題的時(shí)候,對(duì)各個(gè)課題都不了解,難易程度也不太清楚,前面選的幾個(gè)課題有的比較簡(jiǎn)單,有的又和其他的組沖突,所以課題定的比較晚,后來感覺對(duì)這個(gè)方面還是比較感興趣的,而且它的實(shí)際用途也比較大。通過查閱一些資料,我們確定了總體方案。接下來就是采購(gòu)元器件了,因?yàn)橐郧皼]買過,沒什么經(jīng)驗(yàn),買的時(shí)候也沒仔細(xì)看,回來后發(fā)現(xiàn)元器件都比較舊,特別是89c51芯片,引腳都發(fā)黑了,只好去換了一個(gè)。接下來的幾天就是焊接電路了,由于我們選的電路比較復(fù)雜,所以焊接也是一項(xiàng)大工程。開始
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(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ì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 記者編輯考試題及答案
- 入戶宣傳面試題及答案
- java面試題及答案專題之ssh框架
- 健康幼師面試題及答案
- 消防規(guī)程考試題及答案
- 地?zé)崮茉垂┡到y(tǒng)在北方地區(qū)冬季供暖中的應(yīng)用現(xiàn)狀與挑戰(zhàn)報(bào)告
- 聚焦2025:城市公共停車場(chǎng)建設(shè)社會(huì)穩(wěn)定風(fēng)險(xiǎn)評(píng)估與城市歷史文化傳承與發(fā)展報(bào)告
- 2025年中小學(xué)安全教育日
- 2025年企業(yè)消防安全培訓(xùn)課件
- 微生物知識(shí)培訓(xùn)
- 求職心理調(diào)適專家講座
- GB/T 6344-2008軟質(zhì)泡沫聚合材料拉伸強(qiáng)度和斷裂伸長(zhǎng)率的測(cè)定
- GB/T 3532-1995日用瓷器
- 學(xué)術(shù)論文寫作規(guī)范與技巧課件
- 生物高中-基于大數(shù)據(jù)分析的精準(zhǔn)教學(xué)課件
- 工程結(jié)算審計(jì)實(shí)施方案(共8篇)
- 樂東221氣田投產(chǎn)專家驗(yàn)收匯報(bào)
- 信任五環(huán)(用友營(yíng)銷技巧)課件
- 2022年廣東省深圳市中考化學(xué)真題試卷
- 危險(xiǎn)貨物道路運(yùn)輸安全生產(chǎn)管理制度
- GB∕T 8110-2020 熔化極氣體保護(hù)電弧焊用非合金鋼及細(xì)晶粒鋼實(shí)心焊絲
評(píng)論
0/150
提交評(píng)論