基于51單片機(jī)的自行車測速系統(tǒng)設(shè)計(jì).doc
《基于51單片機(jī)的自行車測速系統(tǒng)設(shè)計(jì).doc》由會員分享,可在線閱讀,更多相關(guān)《基于51單片機(jī)的自行車測速系統(tǒng)設(shè)計(jì).doc(25頁珍藏版)》請?jiān)谘b配圖網(wǎng)上搜索。
摘 要 隨著居民生活水平的不斷提高,人們對于生活質(zhì)量的要求也日益增加,尤其是對健身的要求。自行車不再僅僅是普通的運(yùn)輸、代步的工具,而是成為人們娛樂、休閑、鍛煉的首選。自行車的速度里程表能夠滿足人們最基本的需求,讓人們能清楚地知道當(dāng)前的速度、里程等物理量。而對于自行車運(yùn)動員來說,最為關(guān)心的莫過于一段時(shí)間內(nèi)的訓(xùn)練效果。因?yàn)榻叹氁鶕?jù)一段時(shí)間內(nèi)運(yùn)動員的訓(xùn)練效果進(jìn)行評估,從而進(jìn)行適當(dāng)?shù)恼{(diào)整已使運(yùn)動員達(dá)到最佳的狀態(tài)。因此愛好自行車運(yùn)動的人十分學(xué)要一款能測速的裝置,以知道自己的運(yùn)動情況。并根據(jù)外界條件,如溫度,風(fēng)速等進(jìn)行適當(dāng)?shù)恼{(diào)節(jié),已達(dá)到最佳運(yùn)動的效果。 關(guān)鍵詞:單片機(jī)、LED顯示、里程/速度、霍爾元件 第一章系統(tǒng)總方案分析與設(shè)計(jì) 1.1 課題主要任務(wù)及內(nèi)容 本課題主要任務(wù)是利用霍爾元件、單片機(jī)等部件設(shè)計(jì)一個(gè)可用LED數(shù)碼管實(shí)時(shí)顯示里程和速度的自行車的速度里程表。本文主要介紹了自行車的速度里程表的設(shè)計(jì)思想、電路原理、方案論證以及元件的選擇等內(nèi)容,整體上分為硬件部分設(shè)計(jì)和軟件部分設(shè)計(jì)。 本文首先扼要對該課題的任務(wù)進(jìn)行方案論證,包括硬件方案和軟件方案的設(shè)計(jì);繼而具體介紹了自行車的速度里程表的硬件設(shè)計(jì),包括傳感器的選擇、單片機(jī)的選擇、顯示電路的設(shè)計(jì);然后闡述了該自行車的速度里程表的軟件設(shè)計(jì),包括數(shù)據(jù)處理子程序的設(shè)計(jì)、顯示子程序的設(shè)計(jì);最后對本次設(shè)計(jì)進(jìn)行了系統(tǒng)的總結(jié)。 具體的硬件電路包括AT89C52單片機(jī)、霍爾元件以及LED顯示電路等。 軟件設(shè)計(jì)包括:中斷子程序設(shè)計(jì),里程計(jì)算子程序設(shè)計(jì),顯示子程序設(shè)計(jì)。軟件采用匯編語言編寫,軟件設(shè)計(jì)的思想主要是自頂向下,模塊化設(shè)計(jì),各個(gè)子模塊逐一設(shè)計(jì)。 1.2 任務(wù)分析與實(shí)現(xiàn) 本設(shè)計(jì)的任務(wù)是:以通用AT89C52單片機(jī)為處理核心,用傳感器將車輪的轉(zhuǎn)數(shù)轉(zhuǎn)換為電脈沖,進(jìn)行處理后送入單片機(jī)。里程及速度的測量,是經(jīng)過AT89C52的定時(shí)/計(jì)數(shù)器測出總的脈沖數(shù)和每轉(zhuǎn)一圈的時(shí)間,再經(jīng)過單片機(jī)的計(jì)算得出,其結(jié)果通過LED顯示器顯示出來。 本系統(tǒng)總體思路如下:假定輪圈的周長為L,在輪圈上安裝m個(gè)永久磁鐵,則測得的里程值最大誤差為L/m。經(jīng)綜合分析,本設(shè)計(jì)中取m=1。當(dāng)輪子每轉(zhuǎn)一圈,通過開關(guān)型霍爾元件傳感器采集到一個(gè)脈沖信號,并從引腳P3.2中斷0端輸入,傳感器每獲取一個(gè)脈沖信號即對系統(tǒng)提供一次計(jì)數(shù)中斷。每次中斷代表車輪轉(zhuǎn)動一圈,中斷數(shù)n和周長L的乘積為里程值。計(jì)數(shù)器T1計(jì)算每轉(zhuǎn)一圈所用的時(shí)間t,就可以計(jì)算出即時(shí)速度v。當(dāng)里程鍵按下時(shí),里程指示燈亮,LED切換顯示當(dāng)前里程;當(dāng)速度鍵按下時(shí),速度指示燈亮,LED切換顯示當(dāng)前速度。 要求達(dá)到的各項(xiàng)指標(biāo)及實(shí)現(xiàn)方法如下: 1. 利用霍爾傳感器產(chǎn)生里程數(shù)的脈沖信號。 2. 對脈沖信號進(jìn)行計(jì)數(shù)。 實(shí)現(xiàn):利用單片機(jī)自帶的計(jì)數(shù)器T1對霍爾傳感器脈沖信號進(jìn)行計(jì)數(shù)。 3. 對數(shù)據(jù)進(jìn)行處理,要求用LED顯示里程總數(shù)和即時(shí)速度。 實(shí)現(xiàn):利用軟件編程,對數(shù)據(jù)進(jìn)行處理得到需要的數(shù)值。 最終實(shí)現(xiàn)目標(biāo):自行車的速度里程表具有里程、速度測試與顯示功能,采用單片機(jī)作控制,顯示電路可顯示里程及速度。 第二章系統(tǒng)主要單元模塊和速度算法概述 2.1 傳感器選型 方案一、光電傳感器。 光電傳感器是應(yīng)用非常廣泛的一種器件,各種各樣的形式,如透射式、反射式等,基本原理就是當(dāng)發(fā)射管光照射到接收管時(shí),接收管導(dǎo)通,反之關(guān)斷。以透射式為例,如圖2-1所示,當(dāng)不透光的物體擋住發(fā)射與接收之間的間隙時(shí),開關(guān)管關(guān)斷,否則打開。為此可以制作一個(gè)遮光葉片如圖2-2所示,安裝在轉(zhuǎn)軸上,當(dāng)扇葉經(jīng)過時(shí),產(chǎn)生脈沖信號。當(dāng)葉片數(shù)較多時(shí),旋轉(zhuǎn)一周可以獲得多個(gè)脈沖信號。 圖2-1 光電傳感器的原理圖 圖2-2 遮光葉片 將光敏電阻安裝在自行車前又的一側(cè),在同等高度的另一側(cè)安上一個(gè)高亮度的發(fā)光二極管。在同等高度的輻條上貼上一圈黑色材料,并在黑色材料上打上等間距的小孔,這樣當(dāng)小孔經(jīng)過光敏電阻時(shí),光敏電阻根據(jù)光電流的變化發(fā)出脈沖, 從而測量里程。 方案二、光電編碼器 光電編碼器的工作原理與光電傳感器一樣,不過它已將光電傳感器、電子電路、碼盤等做成一個(gè)整體,只要用連軸器將光電傳感器的軸與轉(zhuǎn)軸相連,就能獲得多種輸出信號。它廣泛應(yīng)用于數(shù)控機(jī)床、回轉(zhuǎn)臺、伺服傳動、機(jī)器人、雷達(dá)、軍事目標(biāo)測定等需要檢測角度的裝置和設(shè)備中。 將旋轉(zhuǎn)編碼器安裝在車軸上,這樣每當(dāng)車輪轉(zhuǎn)過一定的距離編碼器就會發(fā)出一個(gè)脈沖。利用脈沖數(shù)對里程進(jìn)行測量。 方案三、霍爾傳感器 霍爾傳感器是對磁敏感的傳感元件,常用于開關(guān)信號采集的有CS3020、CS3040、A04E等,這種傳感器是一個(gè)3端器件,外形與三極管相似,只要接上電源、地,即可工作,輸出通常是集電極開路(OC)門輸出,工作電壓范圍寬,使用非常方便。 圖2-3 霍爾元件和磁鋼實(shí)際圖 使用霍爾傳感器獲得脈沖信號,其機(jī)械結(jié)構(gòu)也可以做得較為簡單,只要在轉(zhuǎn)軸的圓周上粘上一粒磁鋼,讓霍爾開關(guān)靠近磁鋼,就有信號輸出,轉(zhuǎn)軸旋轉(zhuǎn)時(shí),就會不斷地產(chǎn)生脈沖信號輸出。如果在圓周上粘上多粒磁鋼,可以實(shí)現(xiàn)旋轉(zhuǎn)一周,獲得多個(gè)脈沖輸出, 單片機(jī)根據(jù)脈沖數(shù)來計(jì)算里程?;魻栐痛配撊鐖D2-3所示。在粘磁鋼時(shí)要注意,霍爾傳感器對磁場方向敏感,粘之前可以先手動接近一下傳感器,如果沒有信號輸出,可以換一個(gè)方向再試。這種傳感器不怕灰塵、油污,在工業(yè)現(xiàn)場應(yīng)用廣泛。 光敏電阻對光特別敏感,當(dāng)白天行駛時(shí),外界光敏電阻對光特別敏感,當(dāng)白天行駛時(shí),外界光源導(dǎo)致光敏電阻發(fā)出錯(cuò)誤信號;光敏電阻對環(huán)境的要求相當(dāng)高,如果光敏電阻或發(fā)光二極管被泥沙或灰塵所覆蓋,光敏電阻就不能再進(jìn)行測量;在霧天和雨天光敏電阻的測量的效果也不好。而編碼器必須安裝在車軸上,這樣安裝就會給用戶帶來很多不便?;魻栐皇芴鞖獾挠绊懀幢惚荒嗌郴蚧覊m覆蓋對測量也不會有任何影響。由霍爾元件加整形電路構(gòu)成的霍爾開關(guān)系統(tǒng),具有輸出響應(yīng)快,數(shù)字脈沖性能好,安裝方便,性能可靠,不受光線、泥水等因素影響,價(jià)格便宜的優(yōu)點(diǎn)。所以本設(shè)計(jì)采用方案三霍爾傳感器。 2.2 單片機(jī)選型 本設(shè)計(jì)用89C52單片機(jī)設(shè)計(jì)自行車?yán)锍?速度計(jì)。AT89C52是51系列單片機(jī)的一個(gè)型號,它是ATMEL公司生產(chǎn)的。 一個(gè)低電壓,高性能CMOS 8位單片機(jī),片內(nèi)含8k bytes的可反復(fù)擦寫的Flash只讀程序存儲器和256 bytes的隨機(jī)存取數(shù)據(jù)存儲器(RAM),器件采用ATMEL公司的高密度、非易失性存儲技術(shù)生產(chǎn),兼容標(biāo)準(zhǔn)MCS-51指令系統(tǒng),片內(nèi)置通用8位中央處理器和Flash存儲單元,功能強(qiáng)大的AT89C52單片機(jī)可為您提供許多較復(fù)雜系統(tǒng)控制應(yīng)用場合。 AT89C52有40個(gè)引腳,32個(gè)外部雙向輸入/輸出(I/O)端口,同時(shí)內(nèi)含2個(gè)外中斷口,3個(gè)16位可編程定時(shí)計(jì)數(shù)器,2個(gè)全雙工串行通信口,2個(gè)讀寫口線,AT89C52可以按照常規(guī)方法進(jìn)行編程,但不可以在線編程(S系列的才支持在線編程)。其將通用的微處理器和Flash存儲器結(jié)合在一起,特別是可反復(fù)擦寫的Flash存儲器可有效地降低開發(fā)成本 2.3 顯示模塊選型 單片機(jī)系統(tǒng)中常用的顯示器有:發(fā)光二極管LED顯示器、液晶LCD顯示器等。在這里由于單片機(jī)測速系統(tǒng)比較簡單,所以只考慮LED顯示器和LCD顯示器。LED顯示器工作方式有兩種靜態(tài)顯示方式和動態(tài)顯示方式。 方案一 LED靜態(tài)顯示器:靜態(tài)顯示的特點(diǎn)是每個(gè)數(shù)碼管的段選必須接一個(gè)8位數(shù)據(jù)線來保持顯示字形碼。當(dāng)送入一次字形碼后,顯示字形可一直保持,直到送入新字形碼為止。這種方法的優(yōu)點(diǎn)是占用CPU時(shí)間少,顯示便于監(jiān)測和控制。缺點(diǎn)是硬件電路比較復(fù)雜,成本較高。LED動態(tài)顯示器:動態(tài)顯示的特點(diǎn)是將所有位數(shù)碼管的段選線并聯(lián)在一起,由位選線控制是哪一位數(shù)碼管有效。這樣一來,就沒有必要每一位數(shù)碼管配一個(gè)鎖存器,從而大大地簡化了硬件電路。選亮數(shù)碼管采用動態(tài)掃描顯示。所謂動態(tài)掃描顯示即輪流向各位數(shù)碼管送出字形碼和相應(yīng)的位選,利用發(fā)光管的余輝和人眼視覺暫留作用,使人的感覺好像各位數(shù)碼管同時(shí)都在顯示,給人的印象就是一組穩(wěn)定的顯示數(shù)據(jù),不會有閃爍感。動態(tài)顯示的亮度比靜態(tài)顯示要差一些,所以在選擇限流電阻時(shí)應(yīng)略小于靜態(tài)顯示電路中的。 方案二 用液晶顯示器LCD顯示信息。 LCD顯示器工作原理就是利用液晶的物理特性;通電時(shí)排列變得有序,使光線容易通過;不通電時(shí)排列混亂,阻止光線通過,說簡單點(diǎn)就是讓液晶如閘門般地阻隔或讓光線穿透。 LCD的好處有:與CRT顯示器相比,LCD的優(yōu)點(diǎn)主要包括零輻射、低功耗、散熱小、體積小、圖像還原精確、字符顯示銳利等。 LED背光源技術(shù)能夠大幅度提升電視畫面的對比度和色彩表現(xiàn)力,同時(shí)具有節(jié)能環(huán)保等諸多優(yōu)點(diǎn),勢必成為未來電子顯示技術(shù)的發(fā)展趨勢。LED技術(shù)具有非常明顯的三大優(yōu)勢。第一,它顯示的色彩更加豐富,色彩數(shù)量可超過目前傳統(tǒng)CCFL冷陰極熒光管背光燈的1倍以上;第二,LED背光源亮度可以隨著畫面亮度進(jìn)行主動調(diào)節(jié),可節(jié)能30%以上;第三,LED背光源不含鉛和汞等有毒有害物質(zhì),是真正的綠色環(huán)保光源。本課題選用LED動態(tài)顯示器。 2.4 算法概述 假定輪圈的周長為L,在輪圈上安裝m個(gè)永久磁鐵,則測得的里程值最大誤差為L/m。經(jīng)綜合分析,本設(shè)計(jì)中取m=1。當(dāng)輪子每轉(zhuǎn)一圈,通過開關(guān)型霍爾元件傳感器采集到一個(gè)脈沖信號,并從引腳P3.2中斷0端輸入,傳感器每獲取一個(gè)脈沖信號即對系統(tǒng)提供一次計(jì)數(shù)中斷。每次中斷代表車輪轉(zhuǎn)動一圈,中斷數(shù)n和周長L的乘積為里程值。計(jì)數(shù)器T1計(jì)算每轉(zhuǎn)一圈所用的時(shí)間t,就可以計(jì)算出即時(shí)速度v。 第三章系統(tǒng)硬件設(shè)計(jì) 3.1 單片機(jī)主控電路 3.1.1 單片機(jī)概述 單片機(jī)就是在一塊半導(dǎo)體硅片上集成了微處理器(CPU),存儲器(RAM,ROM,EPROM)和各種輸入、輸出接口(定時(shí)器 /計(jì)數(shù)器,并行I/O口,串行口,A/D轉(zhuǎn)換器以及脈寬調(diào)制器PWM等),這樣一塊集成電路芯片具有一臺計(jì)算機(jī)的屬性,因而被稱為單片微型計(jì)算機(jī),簡稱單片機(jī)。 單片機(jī)是本次設(shè)計(jì)的核心部件,它是信號從采集到輸出的橋梁,而且包括計(jì)算、定時(shí)、信息處理等功能。目前,單片機(jī)被廣泛的應(yīng)用于測控系統(tǒng)、工業(yè)自動化、智能儀表、集成智能傳感器、機(jī)電一體化產(chǎn)品、家用電器領(lǐng)域、辦公自動化領(lǐng)域、汽車電子與航空航天器電子系統(tǒng)以及單片機(jī)的多機(jī)系統(tǒng)等領(lǐng)域。在設(shè)計(jì)中選用的是AT89C52單片機(jī)。 單片機(jī)由于將CPU、內(nèi)存和一些必要的接口集成到一個(gè)芯片上,并且面向控制功能將結(jié)構(gòu)作了一定的優(yōu)化,所以它有一般芯片不具有的特點(diǎn): 1. 體積小、重量輕; 2. 電源單一、功耗低; 3. 功能強(qiáng)、價(jià)格低; 4. 全部集成在一塊芯片上,布線短、合理; 本設(shè)計(jì)用89C52單片機(jī)設(shè)計(jì)自行車?yán)锍?速度計(jì)。AT89C52是51系列單片機(jī)的一個(gè)型號,它是ATMEL公司生產(chǎn)的。 一個(gè)低電壓,高性能CMOS 8位單片機(jī),片內(nèi)含8k bytes的可反復(fù)擦寫的Flash只讀程序存儲器和256 bytes的隨機(jī)存取數(shù)據(jù)存儲器(RAM),器件采用ATMEL公司的高密度、非易失性存儲技術(shù)生產(chǎn),兼容標(biāo)準(zhǔn)MCS-51指令系統(tǒng),片內(nèi)置通用8位中央處理器和Flash存儲單元,功能強(qiáng)大的AT89C52單片機(jī)可為您提供許多較復(fù)雜系統(tǒng)控制應(yīng)用場合。 (背景色) AT89C52有40個(gè)引腳,32個(gè)外部雙向輸入/輸出(I/O)端口,同時(shí)內(nèi)含2個(gè)外中斷口,3個(gè)16位可編程定時(shí)計(jì)數(shù)器,2個(gè)全雙工串行通信口,2個(gè)讀寫口線,AT89C52可以按照常規(guī)方法進(jìn)行編程,但不可以在線編程(S系列的才支持在線編程)。其將通用的微處理器和Flash存儲器結(jié)合在一起,特別是可反復(fù)擦寫的Flash存儲器可有效地降低開發(fā)成本。 AT89C52有PDIP、PQFP/TQFP及PLCC等三種封裝形式,以適應(yīng)不同產(chǎn)品的需求。 本設(shè)計(jì)選用AT89C52單片機(jī),AT89C52是一種低功耗、高性能CMOS 8位微控制器。使用Atmel公司高密度非易失性存儲器技術(shù)制造,可與工業(yè)AT89C51產(chǎn)品指令和引腳完全兼容。 AT89C52是一個(gè)低電壓,高性能CMOS 8位單片機(jī),片內(nèi)含8k bytes的可反復(fù)擦寫的Flash只讀程序存儲器和256 bytes的隨機(jī)存取數(shù)據(jù)存儲器(RAM),器件采用ATMEL公司的高密度、非易失性存儲技術(shù)生產(chǎn),兼容標(biāo)準(zhǔn)MCS-51指令系統(tǒng),片內(nèi)置通用8位中央處理器和Flash存儲單元,AT89C52單片機(jī)在電子行業(yè)中有著廣泛的應(yīng)用。 主要功能特性 1、兼容MCS51指令系統(tǒng) 2、8k可反復(fù)擦寫(大于1000次)Flash ROM; 3、32個(gè)雙向I/O口; 4、256x8bit內(nèi)部RAM; 5、3個(gè)16位可編程定時(shí)/計(jì)數(shù)器; 6、時(shí)鐘頻率0-24MHz; 7、2個(gè)串行中斷,可編程UART串行通道; 8、2個(gè)外部中斷源,共5個(gè)中斷源; 9、2個(gè)讀寫中斷口線,3級加密位; 10、低功耗空閑和掉電模式,軟件設(shè)置睡眠和喚醒功能; 11、有PDIP、PQFP、TQFP及PLCC等幾種封裝形式,以適應(yīng)不同產(chǎn)品的需求。 單片機(jī)內(nèi)部結(jié)構(gòu)示意圖如圖3-1所示。 定時(shí)/計(jì)數(shù)器 中斷系統(tǒng) CPU 存儲器 并行I/O口 串口I/O口 TXD TXD RXD T INT P0-P3 圖3-1 3.1.2 單片機(jī)的引腳功能介紹 AT89C52是美國ATMEL公司生產(chǎn)的低電壓,高性能CMOS 8位單片機(jī),片內(nèi)含8K Bytes的可反復(fù)擦寫的只讀程序存儲器(EPROM)和256 字節(jié)的隨機(jī)存取數(shù)據(jù)存儲器(RAM),器件采用ATMEL公司的高密度、非易失性存儲技術(shù)生產(chǎn),與標(biāo)準(zhǔn)MCS-51指令系統(tǒng)及8052產(chǎn)品引腳兼容,片內(nèi)置通用8位中央處理器(CPU)和Flash存儲單元,功能強(qiáng)大,AT89C52單片機(jī)適合于許多較為復(fù)雜控制場合應(yīng)用。 圖3-2 AT89C52引腳圖 AT89C52提供以下標(biāo)準(zhǔn)功能:8K字節(jié)Flash閃速存儲器,256字節(jié)內(nèi)部RAM,32個(gè)I/O口線,3個(gè)16位定時(shí)/計(jì)數(shù)器,5個(gè)中斷源,一個(gè)全雙工串行通信口,片內(nèi)具有振蕩器及時(shí)鐘電路。AT89C52管腳圖如圖2.3所示。 AT89C2051芯片的20個(gè)引腳功能為: 1. Vcc:電源電壓。 2. P1口:P1口是一8位雙向I/O口。P1.0和P1.1要求外部上拉電阻。P1.0和P1.1還分別作為片內(nèi)精密模擬比較器的同相輸入(AIN0)和反相輸入(AIN1)。P1口輸出緩沖器可吸收20mA電流并能直接驅(qū)動LED顯示。當(dāng)P1口引腳寫入“1”時(shí),其可用作輸入端。當(dāng)引腳P1.2~P1.7用作輸入并被外部拉低時(shí),它們將因內(nèi)部的上拉電阻而流出電流(IIL)。 P1口還在閃速編程和程序校驗(yàn)期間接收代碼數(shù)據(jù)。 3. P3口:P3口的P3.0~P3.5、P3.7是帶有內(nèi)部上拉電阻的七個(gè)雙向I/0引腳。P3.6用于固定輸入片內(nèi)比較器的輸出信號并且它作為一通用I/O引腳而不可訪問。P3口緩沖器可吸收20mA電流。用作輸入時(shí),被外部拉低P3口引腳將用上拉電阻而流出電流(IIL)。 P3口還用于實(shí)現(xiàn)AT89C2051的各種功能,如下表3-3所示。P3口還接收一些用于閃速存儲器編程和程序校驗(yàn)的控制信號。 4. RST:復(fù)位輸入。RST一旦變成高電平,所有的I/O引腳就復(fù)位到“1”。當(dāng)振蕩器正在運(yùn)行時(shí),持續(xù)給出RST引腳兩個(gè)機(jī)器周期的高電平便可完成復(fù)位。每一個(gè)機(jī)器周期需12個(gè)振蕩器或時(shí)鐘周期。 5. XTAL1:作為振蕩器反相放大器的輸入和內(nèi)部時(shí)鐘發(fā)生器的輸入。 6. XTAL2:作為振蕩器反相放大器的輸出。 表3-3 P3口的功能 P3口引腳 功能 P3.0 P3.1 P3.2 P3.3 P3.4 P3.5 RXD(串行輸入端口) TXD(串行輸出端口) INT0(外中斷0) INT1(外中斷1) TO(定時(shí)器0外部輸入) T1(定時(shí)器1外部輸入) 3.1.3 單片機(jī)中斷系統(tǒng)介紹 中斷是指當(dāng)計(jì)算機(jī)執(zhí)行正常程序時(shí),系統(tǒng)中出現(xiàn)某些急需處理的事件,CPU暫時(shí)中止當(dāng)前的程序,轉(zhuǎn)去執(zhí)行服務(wù)程序,以對發(fā)生的更緊迫的事件進(jìn)行處理,待處理結(jié)束后,CPU自動返回原來的程序執(zhí)行AT89C52系列單片機(jī)的系統(tǒng)有5個(gè)中斷源,2個(gè)優(yōu)先級,可實(shí)現(xiàn)二級中斷服務(wù)嵌套。由片內(nèi)特殊功能寄存器中的中斷允許寄存器IE控制CPU是否響應(yīng)中斷請求;由中斷優(yōu)先級寄存器IP安排各優(yōu)中斷源的優(yōu)先級;同一優(yōu)先級內(nèi)各終端同時(shí)提出中斷請求時(shí),由內(nèi)部的查詢邏輯確定其響應(yīng)次序。 采用的外部中斷方式包括外部中斷0和外部中斷1,它們的中斷請求信號分別由單片機(jī)引腳/P3.2和/P3.3輸入。 外部中斷請求有兩種信號方式:電平觸發(fā)方式和脈沖觸發(fā)方式。電平觸發(fā)方式的中斷請求是低電平有效。只要在和引腳上出現(xiàn)有效低電平時(shí),就激活外部中斷方式。脈沖觸發(fā)方式的中斷請求則是脈沖的負(fù)跳變有效。在這種方式下,在兩個(gè)相鄰機(jī)器周期內(nèi),和 引腳電平發(fā)生變化,即在第一個(gè)機(jī)器周期內(nèi)為高電平,第二個(gè)機(jī)器周期內(nèi)為低電平,就激活外部中斷。由此可見,在脈沖方式下,中斷請求信號的高電平和低電平狀態(tài)都應(yīng)至少維持一個(gè)機(jī)器周期,以使CPU采樣到電平狀態(tài)的變化,本次設(shè)計(jì)所采用的觸發(fā)方式為脈沖觸發(fā)方式。 3.1.4 單片機(jī)定時(shí)器/計(jì)數(shù)器功能介紹 AT89C52單片機(jī)定時(shí)器/計(jì)數(shù)器的工作由兩個(gè)特殊功能寄存器控制。TMOD用于設(shè)置其工作方式;TCON用于控制其啟動和中斷請求。 1.工作方式寄存器TMOD 工作方式寄存器TMOD用于設(shè)置定時(shí)/計(jì)數(shù)器的工作方式。 GATE:門控制。GATE=0時(shí),只要用軟件使TCON中的TR0或TR1為1,就可以啟動定時(shí)/計(jì)數(shù)器工作;GATE=1時(shí),要用軟件TR0或TR1為1,同時(shí)外部中斷引腳或也為高電平時(shí),才能啟動定時(shí)/計(jì)數(shù)器工作。 C/:定時(shí)/計(jì)數(shù)模式選擇位。C/=0為定時(shí)模式;C/=1時(shí)為計(jì)數(shù)模式。 M1M2:工作方式設(shè)置位。定時(shí)/計(jì)數(shù)器有4種工作方式,由M1M2進(jìn)行設(shè)置。 本次設(shè)計(jì)TMOD為90H,即選通定時(shí)/計(jì)數(shù)器為1、定時(shí)功能、工作方式1.工作方式為16位定時(shí)/計(jì)數(shù)器。 2.控制寄存器TCON TF1(TCON.7)定時(shí)/計(jì)數(shù)器T1溢出中斷請求標(biāo)志位。定時(shí)/計(jì)數(shù)器T1計(jì)數(shù)溢出時(shí)由硬件自動置TF1為1。CPU響應(yīng)中斷后TF1由硬件自動清零。T1工作時(shí),CPU可隨時(shí)查詢TF的狀態(tài)。所以,TF1可用作查詢測試的標(biāo)志。TF1也可以用軟件置1或清零,同硬件置1或清零的效果一樣。 TR1(TCON.6)定時(shí)/計(jì)數(shù)器T1運(yùn)行控制位。TR1置1時(shí),定時(shí)/計(jì)數(shù)器T1開始工作;TR1置0時(shí),定時(shí)/計(jì)數(shù)器T1停止工作。TR1由軟件置1或清0。 TF0(TCON.5)定時(shí)/計(jì)數(shù)器T0溢出中斷請求標(biāo)志位。 TR0(TCON.4)定時(shí)/計(jì)數(shù)器T0運(yùn)行控制位。 3.2 霍爾傳感器的測溫原理 在信號脈沖發(fā)生源上,本系統(tǒng)采用的是開關(guān)型霍爾傳感器。 以磁場作為媒介,利用霍爾傳感器可以檢測多種物理量,如位移、振動、轉(zhuǎn)速、加速度、流量、電流、電功率等。它不僅可以實(shí)現(xiàn)非接觸測量,并且采用永久磁鐵產(chǎn)生磁場,不需附加能源。另外霍爾傳感器尺寸小、價(jià)格便宜、應(yīng)用電路簡單、性能可靠,因而獲得極為廣泛的應(yīng)用。除了直接利用霍爾傳感器外,還利用它開發(fā)出各種派生的傳感器。 金屬或半導(dǎo)體薄片的兩個(gè)端面通以控制電流Ic,并在薄片的垂直方向上施加磁感應(yīng)強(qiáng)度為B的磁場,則在垂直于電流和磁場的方向上將產(chǎn)生電勢Uh,稱為霍爾電勢或霍爾電壓(如圖l所示)?;魻栯妱軺h=KhIcB(其中Kh為霍爾元件靈敏度,它與所用的材料及幾何尺寸有關(guān))。這種現(xiàn)象稱為霍爾效應(yīng),而用這種效應(yīng)制成的元件稱為霍爾元件。由于霍爾元件輸出的電壓信號較小,并且有一定溫度誤差,目前已較少直接使用霍爾元件作傳感器?;魻杺鞲衅髟韴D如圖3-4所示。 圖3-4 霍爾傳感器磁場效應(yīng) 本系統(tǒng)采用開關(guān)型霍爾傳感器A04E。開關(guān)型霍爾傳感器是一種集成傳感器,它內(nèi)部含有霍爾元件、放大器、穩(wěn)壓電源、帶一定滯后特性的比較器及集電極開路輸出部分等,如圖3-5所示。 圖3-5 開關(guān)型霍爾傳感器內(nèi)部結(jié)構(gòu)圖 開關(guān)型霍爾傳感器的工作特性如圖3-6 所示。 圖3-6 開關(guān)型霍爾傳感器工作特性 當(dāng)外加的磁感應(yīng)強(qiáng)度超過動作點(diǎn)Bop時(shí),傳感器輸出低電平,但磁感應(yīng)強(qiáng)度降到動作點(diǎn)Bop以下時(shí),傳感器輸出電平不變,一直要降到釋放點(diǎn)BRE時(shí),傳感器才由低電平躍變?yōu)楦唠娖?。Bop與Bre之間的滯后(或稱為回差)使開關(guān)動作更為可靠。 圖3-7 霍爾傳感器檢測轉(zhuǎn)速示意圖 霍爾傳感器檢測轉(zhuǎn)速示意圖3-7如下。在非磁材料的圓盤邊上粘貼一塊磁鋼,霍爾傳感器固定在圓盤外緣附近。圓盤每轉(zhuǎn)動一圈霍爾傳感器便輸出一個(gè)脈沖。通過單片機(jī)測量產(chǎn)生脈沖的頻率,就可以得出圓盤的轉(zhuǎn)速。同樣道理,根據(jù)圓盤(車輪)的轉(zhuǎn)速,再結(jié)合圓盤的周長就是計(jì)算出物體的位移。如果要增加測量位移精度,可以在圓盤(車輪)上多增加幾個(gè)磁鋼。 由于傳感器內(nèi)部為集電極開路輸出,所以需外接一個(gè)上拉電阻,其阻值與電源電壓大小有關(guān),一般取1~2k,如圖3-8所示。 圖3-8 傳感器輸出電路 3.3 存儲器電路 AT24C02是美國ATMEL公司的低功耗CMOS串行EEPROM,它是內(nèi)含2568位存儲空間,具有工作電壓寬(2.5~5.5V)、擦寫次數(shù)多(大于10000次)、寫入速度快(小于10ms)等特點(diǎn)。 AT24C02的1、2、3腳是三條地址線,用于確定芯片的硬件地址。在AT89C2051試驗(yàn)開發(fā)板上它們都接地,第8腳和第4腳分別為正、負(fù)電源。第5腳SDA為串行數(shù)據(jù)輸入/輸出,數(shù)據(jù)通過這條雙向I2C總線串行傳送,在AT89C2051試驗(yàn)開發(fā)板上和單片機(jī)的P3.5連接。第6腳SCL為串行時(shí)鐘輸入線,在AT89C2051試驗(yàn)開發(fā)板上和單片機(jī)的P3.6連接。SDA和SCL都需要和正電源間各接一個(gè)5.1K的電阻上拉。第7腳需要接地。 AT24C02中帶有片內(nèi)地址寄存器。每寫入或讀出一個(gè)數(shù)據(jù)字節(jié)后,該地址寄存器自動加1,以實(shí)現(xiàn)對下一個(gè)存儲單元的讀寫。所有字節(jié)均以單一操作方式讀取。為降低總的寫入時(shí)間,一次操作可寫入多達(dá)8個(gè)字節(jié)的數(shù)據(jù)。 AT24C02是CMOS2048位串行E2PROM,在內(nèi)部的組織成2568位。AT24C02的特點(diǎn)是具有允許在簡單的二線總線上工作的串行接口和軟件協(xié)議。在本設(shè)計(jì)中用芯片AT24C02的SDA端與單片機(jī)的P3.7口相連,SCL端與單片機(jī)的P3.5口相連。因?yàn)樵谶@個(gè)I2C總線上只有一個(gè)器件,所以把AT24C02的地址設(shè)為000,即把A0、A2、A3都接地。單片機(jī)計(jì)算出來的里程數(shù)據(jù)通過SDA、SCL向AT24C02輸送數(shù)據(jù)。單片機(jī)首先向AT24C02發(fā)送寫信號,當(dāng)確認(rèn)后從單片機(jī)內(nèi)部的數(shù)據(jù)儲存單元提取數(shù)據(jù)然后向AT24C02的內(nèi)部地址傳送數(shù)據(jù)。當(dāng)顯示里程時(shí),單片機(jī)首先向AT24C02發(fā)送讀信號,然后確認(rèn)后,單片機(jī)從AT24C02內(nèi)部的地址向單片機(jī)的讀出單元字節(jié)讀出數(shù)據(jù),供顯示所用。與單片機(jī)的接口如圖3-9所示。 圖3-9 AT24CO2與單片機(jī)的接口電路 3.4 74LS74芯片 本次設(shè)計(jì)中的采用驅(qū)動數(shù)碼管的芯片為74LS244,74LS244為三態(tài)輸出的八位緩沖器和線驅(qū)動器,若單片機(jī)輸出口直接接顯示部分電路,則電流太小,會導(dǎo)致顯示部分不能正常工作。所以在單片機(jī)輸出口先接入驅(qū)動芯片74LS244,增大電流,使LED能夠正常工作。其邏輯圖如圖3-10所示,可以看出74LS244由2組組成、每組由四路輸入、輸出構(gòu)成。每組有一個(gè)控制端高或低電平?jīng)Q定該組數(shù)據(jù)被接通還是斷開。 圖3-10 74LS244邏輯圖 74LS74是D觸發(fā)器的一種,它是一個(gè)具有記憶功能的二進(jìn)制信息存儲器件,是構(gòu)成多種時(shí)序電路的最基本邏輯單元。觸發(fā)器具有兩個(gè)穩(wěn)定狀態(tài),即“0”和“1”,在一定的外界信號作用下,可以從一個(gè)穩(wěn)定狀態(tài)翻轉(zhuǎn)到另一個(gè)穩(wěn)定狀態(tài)。由于其狀態(tài)的更新發(fā)生在CP脈沖的邊沿故又稱之為上升沿觸發(fā)的邊沿觸發(fā)器,D觸發(fā)器的狀態(tài)只取決于時(shí)針到來前D端的狀態(tài)。引腳圖如圖3-11所示。 圖3-11 74LS74引腳圖 在本題目中74LS74芯片起分頻的作用。當(dāng)車輪每轉(zhuǎn)一圈,霍爾傳感器輸出一個(gè)低電平脈沖,通過74LS74進(jìn)行二分頻后,定時(shí)器T1的開啟時(shí)間為車輪轉(zhuǎn)1圈的時(shí)間,這樣就可以算出自行車的速度。分頻前后對比圖如圖3-12所示。 t t 0 0 v v 霍爾輸出圈脈沖 二分頻后的波形 圖3-12 分頻前后對比圖 由圖可見,二分頻后的波形的高或地電平的時(shí)間正好是霍爾傳感器開關(guān)的一個(gè)周期,霍爾傳感器輸出脈沖到,即P3.2口接收到對圈數(shù)計(jì)數(shù)的脈沖。經(jīng)74LS74二分頻后的信號輸入到,內(nèi)部定時(shí)計(jì)數(shù)器測得每轉(zhuǎn)一圈所用的時(shí)間,通過計(jì)算即可得里程值和即時(shí)速度。 3.5 時(shí)鐘電路的設(shè)計(jì) 時(shí)鐘是單片機(jī)的心臟,單片機(jī)各功能部件的運(yùn)行都是以時(shí)鐘頻率為基準(zhǔn),有條不紊地一拍一拍地工作。因此,時(shí)鐘頻率直接影響單片機(jī)的速度,時(shí)鐘電路的質(zhì)量也直接影響單片機(jī)系統(tǒng)的穩(wěn)定性。AT89C52片內(nèi)由一個(gè)反相放大器構(gòu)成振蕩器,可以由它產(chǎn)生時(shí)鐘。常用的時(shí)鐘電路有兩種方式,一種是內(nèi)部時(shí)鐘方式,另一種為外部時(shí)鐘方式。本設(shè)計(jì)采用前者。 單片機(jī)內(nèi)部有一個(gè)用于構(gòu)成振蕩器的高增益反相放大器,該高增益反相放大器的輸入為芯片引腳XTAL1,輸出端為引腳XTAL2。這兩個(gè)引腳跨接石英晶體振蕩器和電容,就構(gòu)成一個(gè)穩(wěn)定的自激振蕩器。單片機(jī)內(nèi)部時(shí)鐘方式的振蕩電路如圖3-13所示。 圖3-13單片機(jī)片內(nèi)振蕩電路 電路中的電容C1和C2常選擇為30PF左右。對外接電容的值雖然沒有嚴(yán)格的要求,但電容的大小會影響振蕩器的高低、振蕩器的穩(wěn)定性、起振的快速性和溫度的穩(wěn)定性。而外接晶體的振蕩頻率的大小,主要取決于單片機(jī)的工作頻率范圍,每一種單片機(jī)都有自己的最大工作頻率,外接的晶體振蕩頻率不大于單片機(jī)的最大工作頻率即可。此外,如果單片機(jī)有串行通信,則應(yīng)該選擇振蕩頻率除以串行通信頻率可以除盡的晶體。本設(shè)計(jì)晶振采用12MHz,故計(jì)數(shù)周期為1us。 3.6 復(fù)位電路的設(shè)計(jì) AT89C52單片機(jī)的復(fù)位輸入引腳RET為AT89C52提供了初始化的手段。有了它可以使程序從指定處開始執(zhí)行,即從程序存儲器中的0000H地址單元開始執(zhí)行程序。在89C52的時(shí)鐘電路工作后,只要在RET引腳上出現(xiàn)兩個(gè)機(jī)器周期以上的高電平時(shí),單片機(jī)內(nèi)部則初始復(fù)位。只要RET保持高電平,則89C52循環(huán)復(fù)位。只有當(dāng)RET由高電平變成低電平以后,89C52才從0000H地址開始執(zhí)行程序。 本系統(tǒng)的復(fù)位電路是采用按鍵復(fù)位的電路,如圖3-14所示,是常用復(fù)位電路之一。單片機(jī)復(fù)位通過按動按鈕產(chǎn)生高電平復(fù)位稱手動復(fù)位。上電時(shí),剛接通電源,電容C相當(dāng)于瞬間短路,+5V立即加到RET/VPD端,該高電平使89C52全機(jī)自動復(fù)位,這就是上電復(fù)位;若運(yùn)行過程中需要程序從頭執(zhí)行,只需按動按鈕即可。按下按鈕,則直接把+5V加到了RET/VPD端從而復(fù)位稱為手動復(fù)位。復(fù)位后,P0到P3并行I/O口全為高電平,其它寄存器全部清零,只有SBUF寄存器狀態(tài)不確定。 圖3-14 按鍵復(fù)位電路 工作原理:通電瞬間,RC電路充電,RST引腳出現(xiàn)高電平,只要RST端保持24ms以上高電平,就能使單片機(jī)有效地復(fù)位。 3.7 顯示電路的設(shè)計(jì) 本設(shè)計(jì)中采用LED數(shù)碼管顯示。在單片機(jī)系統(tǒng)中,通常用LED數(shù)碼顯示器來顯示各種數(shù)字或符號。由于它具有顯示清晰、亮度高、使用電壓低、壽命長的特點(diǎn),因此使用非常廣泛。八段LED顯示器由8個(gè)發(fā)光二極管組成。其中7個(gè)發(fā)光二極管構(gòu)成字型“8”的各個(gè)筆畫段,另一個(gè)小數(shù)點(diǎn)為dp發(fā)光二極管。LED顯示器有兩種不同的形式:一種是發(fā)光二極管的陽極都連在一起的,稱之為共陽極LED顯示器;另一種是發(fā)光二極管的陰極都連在一起的,稱之為共陰極LED顯示器。如圖3-15所示。本次設(shè)計(jì)采用共陰極接法。 LED顯示方式有動態(tài)顯示和靜態(tài)顯示兩種方式。本系統(tǒng)采用動態(tài)掃描顯示接口電路,動態(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ù),不會有閃爍感。 圖3-15 七(八)段LED顯示器 本設(shè)計(jì)P2.0、P2.1、P2.2、P2.3信號一起組成位選通的位選信號,P0.0~P0.7信號一起組成段碼選通的段選信號,通過軟件編程,先把所要顯示的數(shù)據(jù)放入存儲單元,然后把數(shù)據(jù)送入段選通對應(yīng)的地址,再選通某一個(gè)LED,逐步完成四個(gè)LED的顯示。 第四章 系統(tǒng)軟件設(shè)計(jì) 4.1 概述 在硬件設(shè)計(jì)完畢之后,接下來就是設(shè)計(jì)中最核心和最為主要的軟件部分設(shè)計(jì)。所謂軟件設(shè)計(jì)就是把軟件需求變換成軟件的具體設(shè)計(jì)方案(即模塊結(jié)構(gòu))的過程。模塊化結(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ì)包括中斷子程序、里程調(diào)用子程序、LED顯示子程序等幾大部分。由于要實(shí)現(xiàn)很多功能,所以采用模塊化設(shè)計(jì),下面就其主要部分分別加以分析。 4.2 總體程序設(shè)計(jì) 在主程序模塊中,需要完成對各接口芯片的初始化、自行車?yán)锍毯退俣鹊某跏蓟⒅袛嘞蛄康脑O(shè)計(jì)以及開中斷、循環(huán)等待等工作。另外,在主程序模塊中還需要設(shè)置啟動/清除標(biāo)志寄存器、里程寄存器、速度寄存器,并對它們進(jìn)行初始化。然后主程序?qū)⒏鶕?jù)各標(biāo)志寄存器的內(nèi)容,分別完成啟動、清除、計(jì)程和計(jì)速等不同的操作。 P1.0和P1.1口分別用于顯示里程狀態(tài)和速度狀態(tài)。P1.2、P1.3、P1.6和P1.7口分別用于設(shè)置輪圈的大小,低電平有效。P3.0是用于里程和速度切換的,低電平為顯示速度,高電平為顯示里程。中斷0是對輪子圈數(shù)的計(jì)數(shù)輸入,輪子每轉(zhuǎn)一圈,霍爾傳感器輸出一個(gè)低電平脈沖。將根據(jù)里程寄存器中的內(nèi)容計(jì)算和判斷出行駛里程數(shù)。中斷1用于控制定時(shí)器T1的啟/停,當(dāng)輸入為0時(shí)關(guān)閉定時(shí)器。此控制信號是將輪子圈數(shù)的計(jì)數(shù)經(jīng)二分頻后形成。這樣,每次定時(shí)器T1的開啟時(shí)間剛好為轉(zhuǎn)一圈的時(shí)間,根據(jù)輪子的周長就可以計(jì)算出自行車的速度。其程序流程如圖4-1所示。 開始 初始化 P1.2=1? N P1.3=1? P1.6=1? P1.7=1? 出錯(cuò)提示 將車圈周長調(diào)入21H 開中斷,啟動定時(shí)器 P3.0=1? 調(diào)用里程處理子程序 調(diào)用速度處理子程序 N N N Y Y Y Y N Y 圖4-1 主程序流程圖 系統(tǒng)程序設(shè)計(jì)如下: $INCLUDE (REG52.INC) DISPBUFEQU59H ;顯示緩沖區(qū)從5AH開始 SecCounEQU58H SpCounEQU56H;速度計(jì)時(shí)器單元57H和58H,高位在前(57H單 元中) CountEQU55H;顯示時(shí)的計(jì)數(shù)器 SpCalcbit00h;要求計(jì)算速度的標(biāo)志,該位為1則主程序進(jìn)行 速度計(jì)算,然后清該位 HiddenEQU16;消隱碼 ORG0000H AJMPSTART ORG1BH JMPTIMER1;定時(shí)中斷1入口 ORG30H START:MOVSP,#5FH;設(shè)置堆棧 MOVP1,#0FFH MOVP0,#0FFH MOVP2,#0FF H;初始化,所有顯示器、LED滅 MOVTMOD,#00010101B;定時(shí)器T1工作于方式1,定時(shí)器0工作方式1, 計(jì)數(shù)器 MOVTH1,#HIGH(65536-3686) MOVTL1,#LOW(65536-3686) SETBTR1 SETBET1;開定時(shí)器1中斷 SETBEA LOOP:JNBSpCalc,LOOP;如果未要求計(jì)算,轉(zhuǎn)本身循環(huán) ;標(biāo)號: MULD 功能:雙字節(jié)二進(jìn)制無符號數(shù)乘法 ;入口條件:被乘數(shù)在R2、R3中,乘數(shù)在R6、R7中。 ;出口信息:乘積在R2、R3、R4、R5中。 ;影響資源:PSW、A、B、R2~R7 堆棧需求: 2字節(jié) MOVR2,SpCoun MOVR3,SpCoun+1 MOVR6,#0 MOVR7,#5;測得的數(shù)值是每秒計(jì)數(shù)值,轉(zhuǎn)為分(每一轉(zhuǎn)測 12次,故乘5而非60) CALLMULD SEND:MOVSBUF,R2 SLP1:JBCTI,SN1;是否送完? AJMPSLP1 SN1:MOVSBUF,R3 SLP2:JBCTI,SN2 AJMPSLP2 SN2:MOVSBUF,R4 SLP3:JBCTI,SN3 AJMPSLP3 SN3:MOVSBUF,R5 SLP4:JBCTI,SN4 AJMPSLP4 SN4: ;標(biāo)號: HB2 功能:雙字節(jié)十六進(jìn)制整數(shù)轉(zhuǎn)換成雙字節(jié)BCD碼整數(shù) ;入口條件:待轉(zhuǎn)換的雙字節(jié)十六進(jìn)制整數(shù)在R6、R7中。 ;出口信息:轉(zhuǎn)換后的三字節(jié)BCD碼整數(shù)在R3、R4、R5中。 ;影響資源:PSW、A、R2~R7 堆棧需求: 2字節(jié) MOVA,R4 MOVR6,A MOVA,R5 MOVR7,A;將乘得的結(jié)果送R6R7準(zhǔn)備轉(zhuǎn)換,這里結(jié)果不可能超過2 字節(jié) CALLHB2 MOVDISPBUF,R3;最高位 MOVA,R4; ANLA,#0F0H;去掉低4位 SWAPA;將高4位切換到低4位 MOVDISPBUF+1,A MOVA,R4 ANLA,#0FH MOVDISPBUF+2,A MOVA,R5 ANLA,#0F0H SWAPA MOVDISPBUF+3,A MOVA,R5 ANLA,#0FH MOVDISPBUF+4,A CLRSpCalc;清計(jì)算標(biāo)志 JMPLOOP 4.3 中斷子程序設(shè)計(jì) 定時(shí)中斷是為滿足定時(shí)或計(jì)數(shù)的需要而設(shè)置的。在單片機(jī)內(nèi)部有兩個(gè)定時(shí)/計(jì)數(shù)器,以對其中的計(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ù)溢出信號作為中斷請求,去置位一個(gè)溢出標(biāo)志,作為單片機(jī)接受中斷請求的標(biāo)志。這種中斷請求是在單片機(jī)芯片內(nèi)部發(fā)生的,因此無須在芯片上設(shè)置引入端。 定時(shí)/計(jì)數(shù)器控制寄存器TCON是8位寄存器,地址為88H,可以位尋址。其高4位用于定時(shí)/計(jì)數(shù)器中斷控制,低4位借給外部中斷,用做中斷標(biāo)志和觸發(fā)方式選擇位。本設(shè)計(jì)采用定時(shí)中斷,對自行車的里程和速度進(jìn)行計(jì)數(shù)。中斷子程序流程圖如圖4-2所示。 關(guān)中斷 開始 現(xiàn)場保護(hù) 開中斷 中斷處理 關(guān)中斷 現(xiàn)場恢復(fù) 開中斷 中斷返回 圖4-2中斷子程序流程圖 4.4 里程計(jì)算子程序 外部中斷0服務(wù)程序用于對單片機(jī)P3.2口輸入的圈數(shù)脈沖進(jìn)行計(jì)數(shù),為十六進(jìn)制計(jì)數(shù)器。60H為低位,62H為高位。每次計(jì)數(shù)一次后,對里程數(shù)據(jù)進(jìn)行一次存儲操作。當(dāng)車輪每轉(zhuǎn)一圈,通過霍爾元件將脈沖數(shù)輸入單片機(jī)內(nèi),通過計(jì)數(shù)器計(jì)出脈沖數(shù),再用乘法子程序算出里程數(shù)。里程處理子程序流程圖如圖4-3所示。 開始 點(diǎn)亮里程指示 將車圈數(shù)轉(zhuǎn)換成里程 顯示里程值 返回 圖4-3 里程處理子程序流程圖 4.5 顯示子程序的設(shè)計(jì) 采用動態(tài)掃描顯示接口電路,動態(tài)顯示接口電路是把所有顯示器的8個(gè)筆劃段a-h同名端連在一起,而每一個(gè)顯示器的公共極COM各自獨(dú)立地受I/O線控制。CPU向字段輸出口送出字型碼時(shí),所有顯示器接收到相同的字型碼,但究竟是哪個(gè)顯示器亮,則取決于COM端??梢圆捎梅謺r(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ù),不會有閃爍感。 本設(shè)計(jì)P2.0、P2.1、P2.2、P2.3信號一起組成位選通的位選信號,P0.0~P0.7信號一起組成段碼選通的段選信號,通過軟件編程,先把所要顯示的數(shù)據(jù)放入存儲單元,然后把數(shù)據(jù)送入段選通對應(yīng)的地址,再選通某一個(gè)LED,逐步完成四個(gè)LED的顯示。顯示子程序流程圖如圖4-4所示。 開始 顯示單元首址 取顯示數(shù)據(jù) 送段碼到P0口 取段碼表首址 調(diào)用延時(shí) 送位選到P2口 4位顯示結(jié)束 返回 Y N 修改顯示單元地址 求下一位位選碼 圖4-4 顯示子程序流程圖 總結(jié)與展望 本設(shè)計(jì)以AT89C2051為核心,利用單片機(jī)的運(yùn)算和控制功能,并采用系統(tǒng)化LED顯示模塊實(shí)時(shí)顯示所測速度的設(shè)計(jì)方案,以及串口數(shù)據(jù)存儲電路和系統(tǒng)軟件。本設(shè)計(jì)主要分為硬件部分和軟件部分,硬件部分著重考慮硬件電路的簡單性,故盡可能簡化硬件電路,節(jié)省線路板的空間,達(dá)到硬件電路最優(yōu)化設(shè)計(jì)。軟件采用匯編語言編寫,采用模塊化設(shè)計(jì)思想,程序可讀性強(qiáng)。通過實(shí)驗(yàn)驗(yàn)證了系統(tǒng)的可行性,能滿足設(shè)計(jì)要求,達(dá)到設(shè)計(jì)的指標(biāo),實(shí)現(xiàn)對自行車?yán)锍?速度的計(jì)算功能,并用LED顯示, 當(dāng)車輪轉(zhuǎn)動,小磁片滑過霍爾元件時(shí),霍爾元件輸出一脈沖,可根據(jù)車輪周長計(jì)算里程,選擇不同的車輪周長,里程數(shù)的變化有所不同;當(dāng)按下開關(guān),顯示速度時(shí),LED會根據(jù)轉(zhuǎn)速的不同顯示不同的數(shù)字。 論文主要是在參考各種資料和相關(guān)的專業(yè)文獻(xiàn)的基礎(chǔ)上完成的,所參考的專業(yè)文獻(xiàn)在論文中已經(jīng)列單出來,但還有部分來源資料參差不齊不能在論文中詳細(xì)列出,在這里也說明一下。論文的整個(gè)制作過程的確不容易,現(xiàn)在回想一下那段時(shí)日,有艱辛的一面,亦有喜悅的一面,但整個(gè)過程總結(jié)來說還是蠻充實(shí)的,畢竟在整個(gè)設(shè)計(jì)的過程中,自己又對已經(jīng)學(xué)過的專業(yè)課知識梳理了一下,而且對于實(shí)際的應(yīng)用和需求也參考了各個(gè)方面的資料,所以整個(gè)設(shè)計(jì)過程下來,自己整體的專業(yè)知識水平又進(jìn)行了一次升華。- 1.請仔細(xì)閱讀文檔,確保文檔完整性,對于不預(yù)覽、不比對內(nèi)容而直接下載帶來的問題本站不予受理。
- 2.下載的文檔,不會出現(xiàn)我們的網(wǎng)址水印。
- 3、該文檔所得收入(下載+內(nèi)容+預(yù)覽)歸上傳者、原創(chuàng)作者;如果您是本文檔原作者,請點(diǎn)此認(rèn)領(lǐng)!既往收益都?xì)w您。
下載文檔到電腦,查找使用更方便
9.9 積分
下載 |
- 配套講稿:
如PPT文件的首頁顯示word圖標(biāo),表示該P(yáng)PT已包含配套word講稿。雙擊word圖標(biāo)可打開word文檔。
- 特殊限制:
部分文檔作品中含有的國旗、國徽等圖片,僅作為作品整體效果示例展示,禁止商用。設(shè)計(jì)者僅對作品中獨(dú)創(chuàng)性部分享有著作權(quán)。
- 關(guān) 鍵 詞:
- 基于 51 單片機(jī) 自行車 測速 系統(tǒng) 設(shè)計(jì)
鏈接地址:http://www.3dchina-expo.com/p-6629123.html