基于89c51單片機(jī)的電動(dòng)車?yán)锍瘫懋厴I(yè)設(shè)計(jì)_第1頁(yè)
基于89c51單片機(jī)的電動(dòng)車?yán)锍瘫懋厴I(yè)設(shè)計(jì)_第2頁(yè)
基于89c51單片機(jī)的電動(dòng)車?yán)锍瘫懋厴I(yè)設(shè)計(jì)_第3頁(yè)
基于89c51單片機(jī)的電動(dòng)車?yán)锍瘫懋厴I(yè)設(shè)計(jì)_第4頁(yè)
基于89c51單片機(jī)的電動(dòng)車?yán)锍瘫懋厴I(yè)設(shè)計(jì)_第5頁(yè)
已閱讀5頁(yè),還剩38頁(yè)未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡(jiǎn)介

4電動(dòng)自行車的速度里程表軟件程序設(shè)計(jì)目錄1緒言31.1課題背景31.2課題的主要任務(wù)及內(nèi)容32電動(dòng)電動(dòng)自行車的速度里程表總體方案設(shè)計(jì)..錯(cuò)誤!未定義書簽。2.1任務(wù)分析與實(shí)現(xiàn)錯(cuò)誤!未定義書簽。2.2電動(dòng)自行車的速度里程表硬件方案設(shè)計(jì)42.3電動(dòng)自行車的速度里程表軟件方案設(shè)計(jì)53電動(dòng)電動(dòng)自行車的速度里程表硬件電路設(shè)計(jì)63.1概述63.2傳感器及其測(cè)量系統(tǒng)73.2.1霍爾傳感器的測(cè)量原理73.3單片機(jī)的原理及應(yīng)用錯(cuò)誤!未定義書簽。3.3.1單片機(jī)原理簡(jiǎn)介錯(cuò)誤!未定義書簽。3.3.2單片機(jī)的引腳功能介紹93.3.3單片機(jī)中斷系統(tǒng)介紹113.3.4單片機(jī)定時(shí)/計(jì)數(shù)功能介紹123.4其他器件的介紹錯(cuò)誤!未定義書簽。3.4.1存儲(chǔ)器的介紹錯(cuò)誤!未定義書簽。3.4.274LS74芯片的介紹133.4.374LS244芯片的介紹143.5單片機(jī)外圍電路的設(shè)計(jì)153.5.1時(shí)鐘電路的設(shè)計(jì)153.5.2復(fù)位電路的設(shè)計(jì)153.5.3顯示電路的設(shè)計(jì)163.5.4報(bào)警電路的設(shè)計(jì)174電動(dòng)電動(dòng)自行車的速度里程表軟件程序設(shè)計(jì)174.1概述174.2電動(dòng)自行車的速度里程表總體程序設(shè)計(jì)184.3中斷子程序的設(shè)計(jì)204.4數(shù)據(jù)處理子程序的設(shè)計(jì)204.5顯示子程序的設(shè)計(jì)225系統(tǒng)調(diào)試與分析246結(jié)論與展望276.1結(jié)論276.2展望27致謝28參考文獻(xiàn)錯(cuò)誤!未定義書簽。附錄294電動(dòng)自行車的速度里程表軟件程序設(shè)計(jì)1緒言1.1課題背景電動(dòng)自行車被發(fā)明及使用到現(xiàn)在已有兩百多年的歷史,這兩百年間人類在不斷的嘗試與研發(fā)過程中,將玩具式的木馬車轉(zhuǎn)換到今日各式新穎休閑運(yùn)動(dòng)電動(dòng)自行車,電動(dòng)自行車發(fā)展的目的也從最早的交通代步的工具轉(zhuǎn)換成休閑娛樂運(yùn)動(dòng)的用途。隨著居民生活水平的不斷提高,電動(dòng)自行車不再僅僅是普通的運(yùn)輸、代步的工具,而是成為人們娛樂、休閑、鍛煉的首選。因此,人們希望電動(dòng)自行車的功用更強(qiáng)大,能給人們帶來更多的方便。電動(dòng)自行車?yán)锍趟俣缺碜鳛殡妱?dòng)自行車的一大輔助工具也正是隨著這個(gè)要求而迅速發(fā)展的,其功能也逐漸從單一的里程顯示發(fā)展到速度、時(shí)間顯示,甚至有的還具有測(cè)量騎車人的心跳、顯示騎車人熱量消耗等功能。本設(shè)計(jì)采用了MCS-51系列單片機(jī)設(shè)計(jì)一種體積小、操作簡(jiǎn)單的便攜式電動(dòng)自行車的速度里程表,它能自動(dòng)地顯示當(dāng)前電動(dòng)自行車行走的距離及運(yùn)行的速度。1.2課題的主要任務(wù)及內(nèi)容本課題主要任務(wù)是利用霍爾元件、單片機(jī)等部件設(shè)計(jì)一個(gè)可用LED數(shù)碼管實(shí)時(shí)顯示里程和速度的電動(dòng)自行車的速度里程表。本文主要介紹了電動(dòng)自行車的速度里程表的設(shè)計(jì)思想、電路原理、方案論證以及元件的選擇等內(nèi)容,整體上分為硬件部分設(shè)計(jì)和軟件部分設(shè)計(jì)。本文首先扼要對(duì)該課題的任務(wù)進(jìn)行方案論證,包括硬件方案和軟件方案的設(shè)計(jì);繼而具體介紹了電動(dòng)自行車的速度里程表的硬件設(shè)計(jì),包括傳感器的選擇、單片機(jī)的選擇、顯示電路的設(shè)計(jì);然后闡述了該電動(dòng)自行車的速度里程表的軟件設(shè)計(jì),包括數(shù)據(jù)處理子程序的設(shè)計(jì)、顯示子程序的設(shè)計(jì);最后針對(duì)仿真過程遇到的問題進(jìn)行了具體說明與分析,對(duì)本次設(shè)計(jì)進(jìn)行了系統(tǒng)的總結(jié)。具體的硬件電路包括AT89C52單片機(jī)的外圍電路以及LED顯示電路等。軟件設(shè)計(jì)包括:芯片的初始化程序、定時(shí)中斷采樣子程序、顯示子程序等,軟件采用匯編語言編寫,軟件設(shè)計(jì)的思想主要是自頂向下,模塊化設(shè)計(jì),各個(gè)子模塊逐一設(shè)計(jì)。2電動(dòng)自行車的速度里程表總體方案設(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(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)前速度,若電動(dòng)自行車超速,系統(tǒng)發(fā)出報(bào)警信號(hào),指示燈閃爍。里程數(shù)據(jù)自動(dòng)記憶,也可用于電動(dòng)電動(dòng)自行車、摩托車、汽車等機(jī)動(dòng)車儀表上。2.2電動(dòng)自行車的速度里程表硬件方案設(shè)計(jì)測(cè)速,首先要解決是采樣的問題。使用單片機(jī)進(jìn)行測(cè)速,可以使用簡(jiǎn)單的脈沖計(jì)數(shù)法。只要轉(zhuǎn)軸每旋轉(zhuǎn)一周,產(chǎn)生一個(gè)或固定的多個(gè)脈沖,將脈沖送入單片機(jī)中進(jìn)行計(jì)算,即可獲得轉(zhuǎn)速的信息。常用的測(cè)速元件有霍爾傳感器、光電傳感器和光電編碼器。里程測(cè)量傳感器的選擇也有以下幾種方案:使用光敏電阻對(duì)里程進(jìn)行測(cè)量、利用編碼器對(duì)車輪的圈數(shù)進(jìn)行測(cè)量、利用霍爾傳感器對(duì)里程進(jìn)行測(cè)量、利用干簧管型傳感器測(cè)量里程。4電動(dòng)自行車的速度里程表軟件程序設(shè)計(jì)光敏電阻對(duì)光特別敏感,當(dāng)白天行駛時(shí),外界光源將導(dǎo)致光敏電阻發(fā)出錯(cuò)誤信號(hào);光敏電阻對(duì)環(huán)境的要求相當(dāng)高,如果光敏或發(fā)光二極管被泥沙或灰塵所覆蓋,光敏電阻就不能再進(jìn)行準(zhǔn)確測(cè)量;而編碼器必須安裝在車軸上,安裝較為復(fù)雜;霍爾元件或干簧管不但不受天氣的影響,即使被泥沙或灰塵覆蓋也不會(huì)有影響,而且安裝方便。所以本設(shè)計(jì)采用霍爾元件對(duì)里程與速度進(jìn)行測(cè)量,既簡(jiǎn)單易行,又經(jīng)濟(jì)適用。單片機(jī)由于將CPU、內(nèi)存和一些必要的接口集成到一個(gè)芯片上,并且面向控制功能將結(jié)構(gòu)作了一定的優(yōu)化,所以它有一般芯片不具有的特點(diǎn):1.體積小、重量輕;2.電源單一、功耗低;3.功能強(qiáng)、價(jià)格低;4.全部集成在一塊芯片上,布線短、合理;5.數(shù)據(jù)大部分在單片機(jī)內(nèi)傳送,運(yùn)行速度快、抗干擾能力強(qiáng)、可靠性高。目前,單片機(jī)被廣泛的應(yīng)用于測(cè)控系統(tǒng)、工業(yè)自動(dòng)化、智能儀表、集成智能傳感器、機(jī)電一體化產(chǎn)品、家用電器領(lǐng)域、辦公自動(dòng)化領(lǐng)域、汽車電子與航空航天器電子系統(tǒng)以及單片機(jī)的多機(jī)系統(tǒng)等領(lǐng)域。在設(shè)計(jì)中選用的是AT89C52單片機(jī)。2.3電動(dòng)自行車的速度里程表軟件方案設(shè)計(jì)通過軟件控制單片機(jī)的功能是單片機(jī)的主要特點(diǎn)和優(yōu)點(diǎn),程序的設(shè)計(jì)要考慮合理性和可讀性,遵循模塊化設(shè)計(jì)的原則,采用自頂向下的設(shè)計(jì)方法。模塊化設(shè)計(jì)使程序的可讀性好、修改及完善方便。軟件設(shè)計(jì)包括主程序、行車過程中里程和速度計(jì)算子程序、延時(shí)子程序、中斷服務(wù)子程序、顯示子程序等等。中斷子程序是將傳感器產(chǎn)生的信號(hào)接入外部中斷0,將經(jīng)過74LS74分頻后的信號(hào)接入外部中斷1,利用中斷和定時(shí)器對(duì)分別對(duì)里程進(jìn)行累加、每轉(zhuǎn)一周的時(shí)間進(jìn)行測(cè)量。數(shù)據(jù)處理子程序是將進(jìn)入單片機(jī)的脈沖信號(hào)與實(shí)際要顯示值之間有一定的對(duì)應(yīng)關(guān)系,經(jīng)過軟件編程顯示所需要的值。顯示子程序是將數(shù)據(jù)處理的結(jié)果送顯示器顯示。系統(tǒng)軟件總體流程圖如圖2.3所示。3電動(dòng)自行車的速度里程表硬件電路設(shè)計(jì)3.1概述電動(dòng)自行車的速度里程表的硬件電路設(shè)計(jì)是基礎(chǔ)部分,它包括信號(hào)的捕獲、放大、整形,單片機(jī)的計(jì)算處理,數(shù)碼管的實(shí)時(shí)顯示和單片機(jī)外圍基本電路的設(shè)計(jì),兩大主要器件就是傳感器和單片機(jī)。傳感器是獲取自然或生產(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),4電動(dòng)自行車的速度里程表軟件程序設(shè)計(jì)這就給磁傳感器的快速發(fā)展提供了機(jī)遇,形成了磁傳感器的產(chǎn)業(yè)。其中最具代表的磁傳感器就是霍爾傳感器,在自動(dòng)檢測(cè)系統(tǒng)中,利用霍爾傳感器測(cè)轉(zhuǎn)數(shù)是一種最基本的測(cè)量工作。單片機(jī)是本次設(shè)計(jì)的核心部件,它是信號(hào)從采集到輸出的橋梁,而且包括計(jì)算、定時(shí)、信息處理等功能。3.2傳感器及其測(cè)量系統(tǒng)本次設(shè)計(jì)信號(hào)的捕獲采用的是霍爾傳感器?;魻柶骷哂性S多優(yōu)點(diǎn),它們的結(jié)構(gòu)牢固、體積小、重量輕、壽命長(zhǎng)、安裝方便、功耗小、頻率高(可達(dá)1MHz)、耐震動(dòng)、不怕灰塵、油污、水汽及煙霧等的污染或腐蝕?;魻柧€性器件的精度高、線性度好;霍爾開關(guān)器件無觸點(diǎn)、無磨損、輸出波形清晰、無抖動(dòng)、無回跳、位置重復(fù)精度高。取用各種補(bǔ)償和保護(hù)措施的霍爾器件工作溫度范圍寬,可達(dá)-55℃~150℃。按照霍爾器件的功能可將它們分為:霍爾線性器件和霍爾開關(guān)器件,前者輸出模擬量,后者輸出數(shù)字量。按被檢測(cè)對(duì)象的性質(zhì)可將它們的應(yīng)用分為:直接應(yīng)用和間接應(yīng)用。前者是直接檢測(cè)出受檢測(cè)對(duì)象本身的磁場(chǎng)或磁特性,后者是檢測(cè)受檢對(duì)象上人為設(shè)置的磁場(chǎng),用這個(gè)磁場(chǎng)來作被檢測(cè)的信息的載體。通過它,將許多非電、非磁的物理量例如力、力矩、位置、位移、速度、加速度、角度、角速度、轉(zhuǎn)數(shù)、轉(zhuǎn)速以及工作狀態(tài)發(fā)生變化的時(shí)間等,轉(zhuǎn)變成電量來進(jìn)行檢測(cè)和控制。3.2.1霍爾傳感器的測(cè)量原理霍耳效應(yīng):1879年E.H.霍爾發(fā)現(xiàn),如果對(duì)位于磁場(chǎng)(B)中的導(dǎo)體(d)施加一個(gè)電壓(v),該磁場(chǎng)的方向垂直于所施加電壓的方向,那么則在既與磁場(chǎng)垂直又和所施加電流方向垂直的方向上會(huì)產(chǎn)生另一個(gè)電壓(UH),人們將這個(gè)電壓叫做霍爾電壓,產(chǎn)生這種現(xiàn)象被稱為霍爾效應(yīng)?;魻栃?yīng)從本質(zhì)上講是運(yùn)動(dòng)的帶電粒子在磁場(chǎng)中受洛侖茲力作用而引起的偏轉(zhuǎn)。當(dāng)帶電粒子(電子或空穴)被約束在固體材料中,這種偏轉(zhuǎn)就導(dǎo)致在垂直電流和磁場(chǎng)的方向上產(chǎn)生正負(fù)電荷的積累,從而形成附加的橫向電場(chǎng)。通有電流I的金屬或半導(dǎo)體板置于磁感強(qiáng)度為B的均勻磁場(chǎng)中,磁場(chǎng)的方向和電流方向垂直,在金屬板的第三對(duì)表面間就顯示出橫向電勢(shì)差UH的現(xiàn)象稱為霍耳效應(yīng)。UH就稱為霍耳電勢(shì)差。實(shí)驗(yàn)測(cè)定,霍耳電勢(shì)差的大小,和電流I及磁感強(qiáng)度B成正比,而與板的厚度d成反比。即霍耳電勢(shì)差UH=RHIB/d,霍爾轉(zhuǎn)速傳感器:霍爾轉(zhuǎn)速傳感器的外形圖和與磁場(chǎng)的作用關(guān)系如2圖所示。磁場(chǎng)由磁鋼提供,所以霍爾傳感器和磁鋼需要配對(duì)使用?;魻杺鞲衅鳈z測(cè)轉(zhuǎn)速示意圖如圖3。在非磁材料的圓盤邊上粘貼一塊磁鋼,霍爾傳感器固定在圓盤外緣附近。圓盤每轉(zhuǎn)動(dòng)一圈,霍爾傳感器便輸出一個(gè)脈沖。通過單片機(jī)測(cè)量產(chǎn)生脈沖的頻率就可以得出圓盤的轉(zhuǎn)速?;魻栯娏鱾鞲衅鞅旧硪呀?jīng)存在濾波電路,輸出無須再加裝濾波,可直接供單片機(jī)的0~5V的AD采集或直接送到單片機(jī)的中斷輸入引腳,信號(hào)非常穩(wěn)定,而且抗干擾能力很強(qiáng)?;魻栯娏鱾鞲衅鞣磻?yīng)速度一般在7微妙,不用考慮單片機(jī)循環(huán)判斷的時(shí)間.若在圓盤上貼上多塊磁鋼,則圓盤每轉(zhuǎn)一圈,輸出的脈沖信號(hào)將相應(yīng)增加,單位時(shí)間內(nèi)測(cè)到的脈沖數(shù)將增多,測(cè)出的轉(zhuǎn)速也將更加精細(xì)。本設(shè)計(jì)建模時(shí)采用一個(gè)圓盤上貼一個(gè)磁鋼進(jìn)行模擬。實(shí)際制作中可以貼上多塊磁鋼,即可以克服因車輪轉(zhuǎn)速太慢而在設(shè)定時(shí)間內(nèi)測(cè)不到脈沖的問題。4電動(dòng)自行車的速度里程表軟件程序設(shè)計(jì)3.3.2單片機(jī)的引腳功能介紹AT89C52是美國(guó)ATMEL公司生產(chǎn)的低電壓,高性能CMOS8位單片機(jī),片內(nèi)含8KBytes的可反復(fù)擦寫的只讀程序存儲(chǔ)器(EPROM)和256字節(jié)的隨機(jī)存取數(shù)據(jù)存儲(chǔ)器(RAM),器件采用ATMEL公司的高密度、非易失性存儲(chǔ)技術(shù)生產(chǎn),與標(biāo)準(zhǔn)MCS-51指令系統(tǒng)及8052產(chǎn)品引腳兼容,片內(nèi)置通用8位中央處理器(CPU)和Flash存儲(chǔ)單元,功能強(qiáng)大,AT89C52單片機(jī)適合于許多較為復(fù)雜控制場(chǎng)合應(yīng)用。圖3.5AT89C52引腳圖AT89C52提供以下標(biāo)準(zhǔn)功能:8K字節(jié)Flash閃速存儲(chǔ)器,256字節(jié)內(nèi)部RAM,32個(gè)I/O口線,3個(gè)16位定時(shí)/計(jì)數(shù)器,5個(gè)中斷源,一個(gè)全雙工串行通信口,片內(nèi)具有振蕩器及時(shí)鐘電路。AT89C52管腳圖如圖3.5所示。AT89C52的主要管腳功能如下:P0.0~P0.7:P0口是一組8位漏極開路型雙向I/O口,也是地址/數(shù)據(jù)總線復(fù)用口。P1.0~P1.7:P1是一個(gè)帶內(nèi)部上拉電阻的8位雙向I/O口。P2.0~P2.7:P2是一個(gè)帶內(nèi)部上拉電阻的8位雙向I/O口。P3.0~P3.7:P3是一個(gè)帶內(nèi)部上拉電阻的8位雙向I/O口。ALE:地址鎖存控制信號(hào)。在系統(tǒng)擴(kuò)展時(shí),ALE用于控制把P0口輸出的低8位地址鎖存起來,以實(shí)現(xiàn)低位地址和數(shù)據(jù)的分時(shí)傳送。此外,由于ALE是以晶振1/6的固定頻率輸出的正脈沖,因此,可作為外部時(shí)鐘或外部定時(shí)脈沖使用。PSEN:外部程序存儲(chǔ)器讀選通信號(hào)。在讀外部ROM時(shí),PSEN有效(低電平),以實(shí)現(xiàn)外部ROM單元的讀操作。EA:訪問程序存儲(chǔ)控制信號(hào)。當(dāng)EA信號(hào)為低電平時(shí),對(duì)ROM的讀操作限定在外部程序存儲(chǔ)器;當(dāng)EA信號(hào)為高電平時(shí),對(duì)ROM的讀操作是從內(nèi)部程序存儲(chǔ)器開始,并可延至外部程序存儲(chǔ)器。RST:復(fù)位信號(hào)。當(dāng)輸入的復(fù)位信號(hào)延續(xù)兩個(gè)機(jī)器周期以上的高電平時(shí)即為有效,用以完成單片機(jī)的復(fù)位初始化操作。XTALl和XTAL2:外接晶體引線端。當(dāng)使用芯片內(nèi)部時(shí)鐘時(shí),此二引線端用于外接石英晶體和微調(diào)電容;當(dāng)使用外部時(shí)鐘時(shí),用于接外部時(shí)鐘脈沖信號(hào)。VSS:地線。VCC:+5V電源。對(duì)于有內(nèi)部EPROM的單片機(jī)芯片(例如87C51),為寫入程序須提供專門的編程脈沖和編程電源。它們也由引腳以第二功能的形式提供的,即:編程脈沖:30腳(ALE/PROG)編程電壓(25V):31腳(EA/VPP)表3.1P3口引腳與第二功能4電動(dòng)自行車的速度里程表軟件程序設(shè)計(jì)3.3.3單片機(jī)中斷系統(tǒng)介紹中斷是指當(dāng)計(jì)算機(jī)執(zhí)行正常程序時(shí),系統(tǒng)中出現(xiàn)某些急需處理的事件,CPU暫時(shí)中止當(dāng)前的程序,轉(zhuǎn)去執(zhí)行服務(wù)程序,以對(duì)發(fā)生的更緊迫的事件進(jìn)行處理,待處理結(jié)束后,CPU自動(dòng)返回原來的程序執(zhí)行AT89C52系列單片機(jī)的系統(tǒng)有5個(gè)中斷源,2個(gè)優(yōu)先級(jí),可實(shí)現(xiàn)二級(jí)中斷服務(wù)嵌套。由片內(nèi)特殊功能寄存器中的中斷允許寄存器IE控制CPU是否響應(yīng)中斷請(qǐng)求;由中斷優(yōu)先級(jí)寄存器IP安排各優(yōu)中斷源的優(yōu)先級(jí);同一優(yōu)先級(jí)內(nèi)各終端同時(shí)提出中斷請(qǐng)求時(shí),由內(nèi)部的查詢邏輯確定其響應(yīng)次序。采用的外部中斷方式包括外部中斷0和外部中斷1,它們的中斷請(qǐng)求信號(hào)分別由單片機(jī)引腳INT0/P3.2和INT1/P3.3輸入。外部中斷請(qǐng)求有兩種信號(hào)方式:電平觸發(fā)方式和脈沖觸發(fā)方式。電平觸發(fā)方式的中斷請(qǐng)求是低電平有效。只要在INT0和INT1引腳上出現(xiàn)有效低電平時(shí),就激活外部中斷方式。脈沖觸發(fā)方式的中斷請(qǐng)求則是脈沖的負(fù)跳變有效。在這種方式下,在兩個(gè)相鄰機(jī)器周期內(nèi),INT0和INT1引腳電平發(fā)生變化,即在第一個(gè)機(jī)器周期內(nèi)為高電平,第二個(gè)機(jī)器周期內(nèi)為低電平,就激活外部中斷。由此可見,在脈沖方式下,中斷請(qǐng)求信號(hào)的高電平和低電平狀態(tài)都應(yīng)至少維持一個(gè)機(jī)器周期,以使CPU采樣到電平狀態(tài)的變化,本次設(shè)計(jì)所采用的觸發(fā)方式為脈沖觸發(fā)方式。CPU對(duì)中斷系統(tǒng)所有中斷以及某個(gè)中斷源的開放和屏蔽是由中斷允許寄存器IE控制的。IE的狀態(tài)可通過程序由軟件設(shè)定,某位設(shè)定為1,相應(yīng)的中斷源中斷允許;某位設(shè)定為0,相應(yīng)的中斷源中斷屏蔽。CPU復(fù)位時(shí),IE各位為0,禁止所有中斷。IE寄存器各位的定義如下。EX0(IE.0)外部INT0中斷允許位;ET0(IE.1)定時(shí)/計(jì)數(shù)器T0中斷允許位;EX1(IE.2)外部INT1中斷允許位;ET1(IE.3)定時(shí)/計(jì)數(shù)器T1中斷允許位;ES(IE.4)串行口中斷允許位;EA(IE.7)CPU中斷允許位。AT89C52單片機(jī)有兩個(gè)中斷優(yōu)先級(jí),即可實(shí)現(xiàn)二級(jí)中斷服務(wù)嵌套。每個(gè)中斷源的中斷優(yōu)先級(jí)都是由中斷優(yōu)先級(jí)寄存器IP中的相應(yīng)的狀態(tài)來規(guī)定的。IP的狀態(tài)由軟件設(shè)定,某位設(shè)定為1,則相應(yīng)的中斷源為高優(yōu)先級(jí)中斷;某位設(shè)定為0.則相應(yīng)的中斷源為低優(yōu)先級(jí)中斷。單片機(jī)復(fù)位時(shí),IP各位清0,各中斷源同為低優(yōu)先級(jí)中斷。IP寄存器各位的定義如下。PX0(IP.0)外部中斷INT0優(yōu)先級(jí)設(shè)定位;PT0(IP.1)定時(shí)/計(jì)數(shù)器T0中斷優(yōu)先級(jí)設(shè)定位;PX1(IP.2)外部中斷INT1中斷優(yōu)先級(jí)設(shè)定位;PT1(IP.3)定時(shí)/計(jì)數(shù)器T1中斷優(yōu)先級(jí)設(shè)定位;PS(IP.4)串行口中斷優(yōu)先級(jí)設(shè)定位。3.3.4單片機(jī)定時(shí)/計(jì)數(shù)功能介紹AT89C52單片機(jī)定時(shí)/計(jì)數(shù)器的工作由兩個(gè)特殊功能寄存器控制。TMOD用于設(shè)置其工作方式;TCON用于控制其啟動(dòng)和中斷請(qǐng)求。工作方式寄存器TMOD用于設(shè)置定時(shí)/計(jì)數(shù)器的工作方式。GATE:門控位。GATE=0時(shí),只要用軟件使TCON中的TR0或TR1為1,就可以啟動(dòng)定時(shí)/計(jì)數(shù)器工作;GATE=1時(shí),要用軟件TR0或TR1為1,同時(shí)外部中斷引腳INT0或INT1也為高電平時(shí),才能啟動(dòng)定時(shí)/計(jì)數(shù)器工作。C/T:定時(shí)/計(jì)數(shù)模式選擇位。C/T=0為定時(shí)模式;C/T=1為計(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ù)器。TF1(TCON.7)定時(shí)/計(jì)數(shù)器T1溢出中斷請(qǐng)求標(biāo)志位。定時(shí)/計(jì)數(shù)器T1計(jì)數(shù)溢出時(shí)由硬件自動(dòng)置TF1為1。CPU響應(yīng)中斷后TF1由硬件自動(dòng)清零。T1工作時(shí),CPU可隨時(shí)查詢TF的狀態(tài)。所以,TF1可用作查詢測(cè)試的標(biāo)志。TF1也可以用軟件置1或清零,同硬件置1或清零的效果一樣。TR1(TCON.6)定時(shí)/計(jì)數(shù)器T1運(yùn)行控制位。TR1置1時(shí)時(shí),定時(shí)/計(jì)數(shù)器T1開始工作;TR1置0時(shí),定時(shí)/計(jì)數(shù)器T1停止工作。TR1由軟件置1或清0。TF0(TCON.5):定時(shí)/計(jì)數(shù)器T0溢出中斷請(qǐng)求標(biāo)志位。TR0(TCON.4)。:定時(shí)/計(jì)數(shù)器T0運(yùn)行控制位3.4其他器件的介紹3.4.1存儲(chǔ)器的介紹AT24C02是一個(gè)2K位串行CMOSE2PROM。內(nèi)部含有256個(gè)8位字節(jié),ATMEL公司的先進(jìn)CMOS技術(shù)實(shí)質(zhì)上減少了器件的功耗。AT24C02有一個(gè)16字節(jié)頁(yè)寫緩沖器,該器件通過I2C總線接口進(jìn)行操作有一個(gè)專門的寫保護(hù)功能。AT24C02支持I2C總線數(shù)據(jù)傳送協(xié)議。數(shù)據(jù)傳送是由產(chǎn)生串行時(shí)鐘和所有起始停止信號(hào)的主器件控制的。主器件和從器件都可以作為發(fā)送器或接收器,但由主器件控制傳送數(shù)據(jù)(發(fā)送或接收)的模式,通過器件地址輸入端A0、A1和A2可以實(shí)現(xiàn)將最多8個(gè)24C02器件連接到總線上。管腳圖如3.6所示。4電動(dòng)自行車的速度里程表軟件程序設(shè)計(jì)圖3.624C02管腳圖SCL串行時(shí)鐘:AT24C02串行時(shí)鐘輸入管腳用于產(chǎn)生器件所有數(shù)據(jù)發(fā)送或接收的時(shí)鐘。SDA串行數(shù)據(jù)/地址:CAT24WC02雙向串行數(shù)據(jù)/地址管腳用于器件所有數(shù)據(jù)的發(fā)送或接收,是一個(gè)開漏輸出管腳可與其它開漏輸出或集電極開路輸出進(jìn)行線或(wire-OR)。WP寫保護(hù):如果WP管腳連接到Vcc所有的內(nèi)容都被寫保護(hù),只能讀。當(dāng)WP管腳連接到Vss或懸空,允許器件進(jìn)行正常的讀/寫操作。本次設(shè)計(jì)采用的24C02是為了防止掉電時(shí)里程數(shù)據(jù)的丟失,由于24C02的數(shù)據(jù)線和地址線是復(fù)用的,采用串口的方式傳輸數(shù)據(jù),所以只用兩根線SCL和SDA與單片機(jī)傳輸數(shù)據(jù)。在軟件編程時(shí)采用E2PROM程序包來控制24C02發(fā)送或接受數(shù)據(jù)。3.4.274LS74芯片的介紹74LS74是D觸發(fā)器的一種,它是一個(gè)具有記憶功能的二進(jìn)制信息存儲(chǔ)器件,是構(gòu)成多種時(shí)序電路的最基本邏輯單元。觸發(fā)器具有兩個(gè)穩(wěn)定狀態(tài),即“0”和“1”,在一定的外界信號(hào)作用下,可以從一個(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.7所示。圖3.774LS74引腳圖在本題目中74LS74芯片起分頻的作用。當(dāng)車輪每轉(zhuǎn)一圈,霍爾傳感器輸出一個(gè)低電平脈沖,通過74LS74進(jìn)行二分頻后,定時(shí)器T1的開啟時(shí)間為車輪轉(zhuǎn)1圈的時(shí)間,這樣就可以算出電動(dòng)自行車的速度。分頻前后對(duì)比圖如圖3.8所示。圖3.8分頻前后對(duì)比圖由圖可見,二分頻后的波形的高或地電平的時(shí)間正好是霍爾傳感器開關(guān)的一個(gè)周期,霍爾傳感器輸出脈沖到INT0,即P3.2口接收到對(duì)圈數(shù)計(jì)數(shù)的脈沖。經(jīng)74LS74二分頻后的信號(hào)輸入到INT1,內(nèi)部定時(shí)計(jì)數(shù)器測(cè)得每轉(zhuǎn)一圈所用的時(shí)間,通過計(jì)算即可得里程值和即時(shí)速度。3.4.374LS244芯片的介紹本次設(shè)計(jì)中的采用驅(qū)動(dòng)數(shù)碼管的芯片為74LS244,74LS244為三態(tài)輸出的八位緩沖器和線驅(qū)動(dòng)器,若單片機(jī)輸出口直接接顯示部分電路,則電流太小,會(huì)導(dǎo)致顯示部分不能正常工作。所以在單片機(jī)輸出口先接入驅(qū)動(dòng)芯片74LS244,增大電流,使LED能夠正常工作。其邏輯圖如圖3.9所示,可以看出74LS244由2組組成、每組由四路輸入、輸出構(gòu)成。每組有一個(gè)控制端高或低電平?jīng)Q定該組數(shù)據(jù)被接通還是斷開。圖3.974LS244邏輯圖4電動(dòng)自行車的速度里程表軟件程序設(shè)計(jì)3.5單片機(jī)外圍電路的設(shè)計(jì)3.5.1時(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.10所示。圖3.10單片機(jī)片內(nèi)振蕩電路電路中的電容C1和C2常選擇為30P左右。對(duì)外接電容的值雖然沒有嚴(yán)格的要求,但電容的大小會(huì)影響振蕩器的高低、振蕩器的穩(wěn)定性、起振的快速性和溫度的穩(wěn)定性。而外接晶體的振蕩頻率的大小,主要取決于單片機(jī)的工作頻率范圍,每一種單片機(jī)都有自己的最大工作頻率,外接的晶體振蕩頻率不大于單片機(jī)的最大工作頻率即可。此外,如果單片機(jī)有串行通信,則應(yīng)該選擇振蕩頻率除以串行通信頻率可以除盡的晶體。本設(shè)計(jì)晶振采用12MHz,則計(jì)數(shù)周期為1T==1μ6(12?10)Hz?1S3.5.2復(fù)位電路的設(shè)計(jì)AT89C52單片機(jī)的復(fù)位輸入引腳RET為AT89C52提供了初始化的手段。有了它可以使程序從指定處開始執(zhí)行,即從程序存儲(chǔ)器中的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.11所示,是常用復(fù)位電路之一。單片機(jī)復(fù)位通過按動(dòng)按鈕產(chǎn)生高電平復(fù)位稱手動(dòng)復(fù)位。上電時(shí),剛接通電源,電容C相當(dāng)于瞬間短路,+5V立即加到RET/VPD端,該高電平使89C52全機(jī)自動(dòng)復(fù)位,這就是上電復(fù)位;若運(yùn)行過程中需要程序從頭執(zhí)行,只需按動(dòng)按鈕即可。按下按鈕,則直接把+5V加到了RET/VPD端從而復(fù)位稱為手動(dòng)復(fù)位。復(fù)位后,P0到P3并行I/O口全為高電平,其它寄存器全部清零,只有SBUF寄存器狀態(tài)不確定。圖3.11按鍵復(fù)位電路工作原理:通電瞬間,RC電路充電,RST引腳出現(xiàn)高電平,只要RST端保持10ms以上高電平,就能使單片機(jī)有效地復(fù)位。3.5.3顯示電路的設(shè)計(jì)本設(shè)計(jì)中采用LED數(shù)碼管顯示。在單片機(jī)系統(tǒng)中,通常用LED數(shù)碼顯示器來顯示各種數(shù)字或符號(hào)。由于它具有顯示清晰、亮度高、使用電壓低、壽命長(zhǎng)的特點(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.12所示。本次設(shè)計(jì)采用共陰極接法。LED顯示方式有動(dòng)態(tài)顯示和靜態(tài)顯示兩種方式。本系統(tǒng)采用動(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ì)有閃爍感。4電動(dòng)自行車的速度里程表軟件程序設(shè)計(jì)圖3.12七(八)段LED顯示器本設(shè)計(jì)P2.0、P2.1、P2.2、P2.3信號(hào)一起組成位選通的位選信號(hào),P0.0~P0.7信號(hào)一起組成段碼選通的段選信號(hào),通過軟件編程,先把所要顯示的數(shù)據(jù)放入存儲(chǔ)單元,然后把數(shù)據(jù)送入段選通對(duì)應(yīng)的地址,再選通某一個(gè)LED,逐步完成四個(gè)LED的顯示。3.5.4報(bào)警電路的設(shè)計(jì)本次報(bào)警電路采用蜂鳴器報(bào)警,當(dāng)即時(shí)速度超過預(yù)定值是蜂鳴器響,指示燈閃爍,提示應(yīng)該減速。報(bào)警電路圖如圖3.13所示。圖3.13報(bào)警電路圖4電動(dò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é)合在一起。基于霍爾傳感器電動(dòng)自行車的速度里程表的軟件設(shè)計(jì)包括上電初始化程序、中斷子程序、速度調(diào)用子程序、里程調(diào)用子程序、LED顯示子程序、延時(shí)子程序等幾大部分。由于要實(shí)現(xiàn)很多功能,所以采用模塊化設(shè)計(jì),下面就其主要部分分別加以分析。4.2電動(dòng)自行車的速度里程表總體程序設(shè)計(jì)在主程序模塊中,需要完成對(duì)各接口芯片的初始化、電動(dòng)自行車?yán)锍毯退俣鹊某跏蓟?、中斷向量的設(shè)計(jì)以及開中斷、循環(huán)等待等工作。另外,在主程序模塊中還需要設(shè)置啟動(dòng)/清除標(biāo)志寄存器、里程寄存器、速度寄存器,并對(duì)它們進(jìn)行初始化。然后主程序?qū)⒏鶕?jù)各標(biāo)志寄存器的內(nèi)容,分別完成啟動(dòng)、清除、計(jì)程和計(jì)速等不同的操作。P1.0和P1.1口分別用于顯示里程狀態(tài)和速度狀態(tài)。P1.2、P1.3、P1.6和P1.7口分別用于設(shè)置輪圈的大小,低電平有效。P3.0是用于里程和速度切換的,低電平為顯示速度,高電平為顯示里程。中斷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ì)算出電動(dòng)自行車的速度。其程序流程如圖4.1所示。4電動(dòng)自行車的速度里程表軟件程序設(shè)計(jì)圖4.1主程序流程圖4.3中斷子程序的設(shè)計(jì)定時(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ì)電動(dòng)自行車的里程和速度進(jìn)行計(jì)數(shù)。中斷子程序流程圖如圖4.2所示。4.4數(shù)據(jù)處理子程序的設(shè)計(jì)1.里程計(jì)算子程序4電動(dòng)自行車的速度里程表軟件程序設(shè)計(jì)外中斷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ù)。里程處理子程序流程圖如圖4.3所示。圖4.3里程處理子程序流程圖外中斷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)的值放入68H~6BH單元。定時(shí)器計(jì)出每轉(zhuǎn)一圈所用的時(shí)間,用電動(dòng)自行車車輪的周長(zhǎng)除以時(shí)間就得出電動(dòng)自行車的速度。圖4.4速度處理子程序流程圖4.5顯示子程序的設(shè)計(jì)采用動(dòng)態(tài)掃描顯示接口電路,動(dòng)態(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ù),不會(huì)有閃爍感。本設(shè)計(jì)P2.0、P2.1、P2.2、P2.3信號(hào)一起組成位選通的位選信號(hào),P0.0~P0.7信號(hào)一起組成段碼選通的段選信號(hào),通過軟件編程,先把所要顯示的數(shù)據(jù)放入存儲(chǔ)單元,然后把數(shù)據(jù)送入段選通對(duì)應(yīng)的地址,再選通某一個(gè)LED,逐步完成四個(gè)LED的顯示。4電動(dòng)自行車的速度里程表軟件程序設(shè)計(jì)圖4.5顯示子程序流程圖5系統(tǒng)調(diào)試與分析1.程序的查錯(cuò)手段單片機(jī)的應(yīng)用系統(tǒng)均需借助對(duì)應(yīng)的開發(fā)系統(tǒng)(或裝置)進(jìn)行在線仿真,對(duì)應(yīng)用系統(tǒng)的軟,硬件進(jìn)行全面地檢測(cè)與調(diào)試。各種開發(fā)系統(tǒng)或裝置均提供以下查錯(cuò)手段。(1)單步執(zhí)行采用單步執(zhí)行操作可對(duì)應(yīng)用程序每步執(zhí)行一條指令,可逐條檢查這一段程序的執(zhí)行過程是否符合原設(shè)計(jì)要求。可直接查出錯(cuò)誤所在。宏單步可執(zhí)行一段程序,如一步就可執(zhí)行完整個(gè)循環(huán)程序段。(2)斷點(diǎn)設(shè)置全速運(yùn)行可在程序有疑慮的地方設(shè)置斷點(diǎn),從設(shè)置的起始地址開始,以全速或非全速方式向設(shè)定的斷點(diǎn)處運(yùn)行。如果這段程序無語法或邏輯上的錯(cuò)誤,則連續(xù)運(yùn)行到設(shè)置的斷點(diǎn)處停止運(yùn)行,返回監(jiān)控狀態(tài)。如果有錯(cuò)誤,則在錯(cuò)誤處停止運(yùn)行,如果進(jìn)入死循環(huán)或者程序跑飛,就會(huì)永不停止運(yùn)行。全速斷點(diǎn)運(yùn)行為檢查實(shí)時(shí)性及中斷響應(yīng)處理等提供了方便。(3)顯示器窗口檢查(4)實(shí)時(shí)跟蹤記錄除上述之外,還有以下功能:●符號(hào)化調(diào)試。在原程序中一般均以符號(hào)地址,標(biāo)號(hào)等出現(xiàn),通過匯編自動(dòng)進(jìn)行變換和調(diào)整,偏移量等均可自動(dòng)換算和填入。●程序的運(yùn)行。●自動(dòng)生成目標(biāo)代碼和固化[4]。2.源程序的檢測(cè)在源程序進(jìn)行調(diào)試之前,硬件系統(tǒng)必須基本正確,重點(diǎn)對(duì)源程序進(jìn)行檢測(cè)。(1)對(duì)照程序流程圖,先對(duì)相對(duì)獨(dú)立的功能模塊,子程序,中斷服務(wù)程4電動(dòng)自行車的速度里程表軟件程序設(shè)計(jì)序等進(jìn)行仔細(xì)地檢查,然后對(duì)整個(gè)主程序按其功能劃分成若干程序段進(jìn)行分段檢查,逐步擴(kuò)大到整個(gè)程序系統(tǒng)。檢查時(shí)重點(diǎn)檢查程序的邏輯功能,結(jié)構(gòu)和算法,有關(guān)參量和初始值是否完善,正確,關(guān)鍵性指令的選擇是否合理,特別是借助開發(fā)系統(tǒng)也較難調(diào)試正確的隱患,只有通過細(xì)心的檢查加以排除。(2)硬件系統(tǒng)檢查。硬件系統(tǒng)必須排除電源短路和碰線故障,然后空板(沒有插上芯片等器件)進(jìn)行上電檢查各電源點(diǎn)是否正確,有關(guān)邏輯電平及信號(hào)是否正確。確認(rèn)無誤之后逐次插上芯片等器件,借助開發(fā)系統(tǒng)可檢查出是否有硬件故障。一旦有故障時(shí),開發(fā)系統(tǒng)的監(jiān)控程序?qū)⒊霈F(xiàn)不能正常工作的現(xiàn)象。故可采用此法排除硬件系統(tǒng)的一般性故障。有些故障只有通過軟件調(diào)試才能排除,有時(shí)還需通過軟件調(diào)試修改硬件設(shè)計(jì)。3.源程序的調(diào)試源程序的調(diào)試一般可分為分調(diào),聯(lián)調(diào)和考機(jī)3步進(jìn)行[6]。(1)分調(diào)首先將基本獨(dú)立的子程序調(diào)試正確,符合原設(shè)計(jì)要求,用模擬的方法將中斷服務(wù)程序初調(diào),然后將主程序按相對(duì)獨(dú)立的功能程序段,遵照應(yīng)用系統(tǒng)運(yùn)行的邏輯順序逐段進(jìn)行調(diào)試。A)設(shè)置并輸入一組符合要求的參量,啟動(dòng)程序段運(yùn)行,觀察運(yùn)行情況或故障的影響及現(xiàn)象。B)對(duì)出現(xiàn)的問題進(jìn)行仔細(xì)地分析,合理推測(cè),借助開發(fā)系統(tǒng)的調(diào)試手段,逐步縮小疑點(diǎn)范圍,直至找出問題所在進(jìn)行修改。C)分析故障原因。(2)聯(lián)調(diào)在分調(diào)基本完成的基礎(chǔ)上進(jìn)行聯(lián)調(diào),它將與整個(gè)系統(tǒng)的硬件,軟件,環(huán)境密切相關(guān),必須聯(lián)合在線調(diào)試。調(diào)試的重點(diǎn)在于主程序與各功能模塊程序段之間的連接處,按照整個(gè)軟件系統(tǒng)的執(zhí)行順序,逐個(gè)相連進(jìn)行調(diào)試。故障分析1.編好的C51程序用仿真器運(yùn)行一切正常,但寫入片子獨(dú)立運(yùn)行時(shí),運(yùn)行結(jié)果卻是錯(cuò)的。分析:仿真器一般跳了地址的,需要做簡(jiǎn)單的調(diào)整的,再者是檢查硬件電路了。如果仿真通過,那可能的原因就是芯片有問題,請(qǐng)重新檢查,或者換一塊片子。2.中斷陷入了死循環(huán)。分析:在高級(jí)中斷中修改PC值。進(jìn)入中斷時(shí)將中斷前PC的值壓棧,修改棧中值,然后中斷返回時(shí)就可以從0000H開始執(zhí)行了。也可以指向任何你需要的位置。進(jìn)入中斷后,棧頂?shù)膬蓚€(gè)數(shù)據(jù)為PC中斷前的值,如下操作即可。POPACCPOPACCMOVA,#RET_PCLPUSHACCMOVA,#RET_PCHPUSHACCRETI其中RET_PCL,RET_PCH為要返回的地址。這只是個(gè)思路,具體的話還要根據(jù)實(shí)際來編,中斷返回前還可以做一些其他工作。3.現(xiàn)在的程序用仿真器仿真通過,程序正常,然后把生成的文件燒寫到芯片里面去,系統(tǒng)沒有任何反應(yīng)(用仿真器可以控制指示燈亮,將程序?qū)懙叫酒锶ブ缶筒涣亮耍瑢⒊绦驅(qū)懙叫酒筮€需要如何處理。分析:可能是程序的起始地址沒弄好,也可能是單片機(jī)是壞了,主要問題是硬件有問題。4.程序不按規(guī)定的流程執(zhí)行,程序跳轉(zhuǎn)到不可知的地址去了。分析:這種現(xiàn)象稱為程序跑飛,通常是由硬件引起的。堆棧開的太小4電動(dòng)自行車的速度里程表軟件程序設(shè)計(jì)了。堆棧和指針是兩個(gè)主要的影響因素,指針亂指的危險(xiǎn)性很大通常讓人莫名其妙,按步執(zhí)行看看程序是如何跑飛的,找到源頭不難解決。堆棧的溢出也是經(jīng)常發(fā)生的事情關(guān)鍵在于程序設(shè)計(jì)上對(duì)用到堆棧的地方是否加了保護(hù),實(shí)在不行就執(zhí)行到一定的階段讓堆棧指向一個(gè)固定的地方(沒有使用它的時(shí)候),可能堆棧溢出,可能進(jìn)入死循環(huán)(如果沒有看門狗),可能邏輯方面的問題等等。6結(jié)論與展望該課題的主要任務(wù)是開發(fā)一個(gè)以MCS-51單片機(jī)為核心的電動(dòng)自行車的速度里程表。本設(shè)計(jì)主要分為硬件部分和軟件部分,硬件部分著重考慮硬件電路的簡(jiǎn)單性,故盡可能簡(jiǎn)化硬件電路,節(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)對(duì)電動(dòng)自行車?yán)锍?速度的計(jì)算功能,并用LED顯示,里程與速度分別根據(jù)以下公式求得:里程=脈沖總數(shù)×車輪周長(zhǎng)速度=車輪周長(zhǎng)÷車輪轉(zhuǎn)一圈所用的時(shí)間根據(jù)此公式將最終顯示出里程和速度。當(dāng)車輪轉(zhuǎn)動(dòng),小磁片滑過霍爾元件時(shí),霍爾元件輸出一脈沖,可根據(jù)車輪周長(zhǎng)計(jì)算里程,選擇不同的車輪周長(zhǎng),里程數(shù)的變化有所不同;當(dāng)按下開關(guān),顯示速度時(shí),LED會(huì)根據(jù)轉(zhuǎn)速的不同顯示不同的數(shù)字,當(dāng)速度超過一定速度時(shí),將啟動(dòng)報(bào)警系統(tǒng)。通過仿真證明本次設(shè)計(jì)符合設(shè)計(jì)的要求,能實(shí)現(xiàn)對(duì)里程、速度的顯示,功能性較強(qiáng),具有一定的實(shí)踐意義,將會(huì)在許多場(chǎng)合應(yīng)用。但也有一些不足存在,當(dāng)顯示速度時(shí),若電動(dòng)自行車轉(zhuǎn)動(dòng)太快,顯示器會(huì)顯示過快,應(yīng)該將速度定時(shí)顯示,使人們能夠清楚地看出速度。6.2展望本系統(tǒng)操作簡(jiǎn)單,易于實(shí)現(xiàn)。硬件部分采用的器件應(yīng)用較廣泛,且價(jià)格低廉,如AT89C52單片機(jī)、D觸發(fā)器74LS74、存儲(chǔ)器24C02、驅(qū)動(dòng)器74LS244等。這就意味著所有的器件功能比較強(qiáng)大、穩(wěn)定。尤其是本次設(shè)計(jì)的核心元件AT89C52單片機(jī),軟件技術(shù)成熟,并具有種類齊全的支持芯片。這類微處理器既可用作控制器又適合于做數(shù)據(jù)處理,而且成本也甚是低廉。軟件采用模塊化設(shè)計(jì),可讀性強(qiáng),方便二次開發(fā)。本次設(shè)計(jì)電路簡(jiǎn)單、低成本,而且能夠滿足人們對(duì)高性能、多功能電動(dòng)自行車的要求,可在很多里程/速度測(cè)量場(chǎng)合使用,具有廣泛的應(yīng)用前景。致謝本次畢業(yè)設(shè)計(jì)是在指導(dǎo)老王義琴的指導(dǎo)下完成的。忙碌了兩個(gè)多月,我的畢業(yè)設(shè)計(jì)課題也終將告一段落。編譯程序時(shí)點(diǎn)擊運(yùn)行,也基本達(dá)到預(yù)期的效果,虛榮的成就感在沒人的時(shí)候也總會(huì)冒上心頭。但由于能力和時(shí)間的關(guān)系,總是覺得有很多不盡人意的地方,可是,我又會(huì)有點(diǎn)自戀式地安慰自己:做一件事情,不必過于在乎最終的結(jié)果,可貴的是過程中的收獲。以此語言來安撫我尚沒平復(fù)的心。畢業(yè)設(shè)計(jì),也許是我大學(xué)生涯交上的最后一個(gè)作業(yè)了。想籍次機(jī)會(huì)感謝在校期間四年以來給我?guī)椭乃欣蠋?、同學(xué),你們的友誼是我人生的財(cái)富,是我生命中不可或缺的一部分。我的畢業(yè)指導(dǎo)老師王義琴老師,雖然我們是在開始畢設(shè)時(shí)才認(rèn)識(shí),但他卻給我不厭其煩的指導(dǎo),并提供了很多與該研究相關(guān)的重要信息,培養(yǎng)了我們對(duì)科學(xué)研究的嚴(yán)謹(jǐn)態(tài)度和創(chuàng)新精神。這將非常有利于我們今后的學(xué)習(xí)和工作。在此表示衷心的感謝!參考文獻(xiàn)[1]張友德,趙志英,涂時(shí)亮.單片微型機(jī)原理、應(yīng)用與實(shí)驗(yàn)[M].上海:復(fù)旦大學(xué)出版社,2000.[2]勒達(dá).單片機(jī)應(yīng)用系統(tǒng)開發(fā)實(shí)例導(dǎo)航[M].北京:人民郵電出版社,2003.[3]薛鈞義,張彥斌.單片微型計(jì)算機(jī)及其應(yīng)用[D].西安:西安交通大學(xué)出版社,2001.[4]涂時(shí)亮.單片機(jī)軟件設(shè)計(jì)技術(shù)[D].重慶:科學(xué)文獻(xiàn)出版社重慶分社,1987.[5]王毅.單片機(jī)器件應(yīng)用手冊(cè)[M].北京:人民郵電出版社,1995.[6]何立民.單片機(jī)應(yīng)用技術(shù)選編[M].北京:北京航空航天大學(xué)出版社,1996.4電動(dòng)自行車的速度里程表軟件程序設(shè)計(jì)[7]蔡美琴.MCS-51系列單片機(jī)系統(tǒng)及其應(yīng)用[M].上海:高等教育出版社,1992.[8]蘇偉斌.8051系列單片機(jī)應(yīng)用手冊(cè)[M].北京:科學(xué)出版社,1997.[9]馬家辰.MCS-51單片機(jī)原理及接口技術(shù)[M].哈爾濱:哈爾濱工業(yè)大學(xué)出版社,1997.[10]藏海河.單片機(jī)原理及應(yīng)用[M].重慶:重慶大學(xué)出版社,2004.[11]劉文秀.單片機(jī)仿真[J].中國(guó)學(xué)術(shù)期刊,2004,6(5):56-61.[12]楊雪梅.單片機(jī)軟件的抗干擾設(shè)計(jì)[J].中國(guó)學(xué)術(shù)期刊,2006,3(8):18-25.附錄電動(dòng)自行車的速度里程表硬件系統(tǒng)原理圖4電動(dòng)自行車的速度里程表軟件程序設(shè)計(jì)CS0832EQU0a000hMODEEQU01010001b;timer1:mode1、計(jì)數(shù)器;timer0:mode1、定時(shí)器DATA1EQU60HDATA2EQU62HDATA3EQU64HCWADD1EQU08000H;寫指令代碼地址(E1)DWADD1EQU08001H;寫顯示數(shù)據(jù)地址(E1)CRADD1EQU08002H;讀狀態(tài)字地址(E1)DRADD1EQU08003H;讀顯示數(shù)據(jù)地址(E1)CWADD2EQU08004H;寫指令代碼地址(E2)DWADD2EQU08005H;寫顯示數(shù)進(jìn)地址(E2)CRADD2EQU08006H;讀狀態(tài)字地址(E2)DRADD2EQU08007H;讀顯示數(shù)據(jù)地址(E2)PD1EQU3DH;122/2分成左右兩半屏122x32COLUMNEQU30H;列數(shù)據(jù)寄存器PAGE_EQU31H;頁(yè)地址寄存器D1,DO:頁(yè)地址CODE_EQU32H;字符代碼寄存器COUNTEQU33H;計(jì)數(shù)器DIRequ34hCTEMPEQU38HCOMEQU20H;指令寄存器DATEQU21H;數(shù)據(jù)寄存器ORG00hJMPMAINORG0BHLJMPTIMER;主程序段MAIN:LCALLINIT;顯示器初始化LCALLCLEAR;顯示模塊內(nèi)存清零MOVCTEMP,#0MOVDATA1,#00HMOVDATA2,#00HMOVDATA3,#00HLCALLDISPLAY1;顯示漢字“珍愛生命,注意安全”LCALLCLEAR;清屏LCALLDISPLAY2;顯示漢字“里程、速度”等LOOP:LCALLKONGZHI;電機(jī)轉(zhuǎn)速控制LCALLJISHULCALLSPEED;調(diào)用速度顯示程序LCALLMILAGE;調(diào)用里程顯示程序LJMPLOOP4電動(dòng)自行車的速度里程表軟件程序設(shè)計(jì);JISHU:MOVIE,#10001010B;打開中斷開關(guān)MOVTMOD,#MODE;設(shè)定內(nèi)部定時(shí)器/計(jì)數(shù)器的工作模式MOVSP,#70HMOV40H,#00HMOVTH1,#00HMOVTL1,#00HSETBTR1AA:CLRF1MOVTH0,#03CHMOVTL0,#0B0HSETBTR0JNBF1,$INC40HMOVA,40HCJNEA,#09H,AACLRTR1MOVDATA1,TL1MOVA,DATA1ADDA,DATA2MOVDATA2,AJNCBBINCDATA3BB:RET;TIMER:CLRTR0SETBF1RETI;KONGZHI:movp1,#0ffh;電機(jī)轉(zhuǎn)速控制movdptr,#cs0832movA,p1movx@dptr,ALCALLfxbRET;DISPLAY1:;顯示“珍愛生命,注意安全”MOVCOLUMN,CTEMPMOVPAGE_,#02HMOVA,CTEMPADDA,#20HMOVCOLUMN,AMOVCODE_,#10LCALLCCW_PRMOVPAGE_,#02HMOVA,CTEMPADDA,#30HMOVCOLUMN,AMOVCODE_,#11LCALLCCW_PRMOVPAGE_,#02HMOVADDMOVMOVLCALLMOVMOVADDMOVMOVLCALLMOVMOVADDMOVMOVLCALLMOVMOVADDMOVMOVLCALLMOVMOVADDMOVMOVLCALLMOVA,CTEMPA,#40HCOLUMN,ACODE_,#12CCW_PRPAGE_,#02HA,CTEMPA,#50HCOLUMN,ACODE_,#13CCW_PRPAGE_,#00HA,CTEMPA,#20HCOLUMN,ACODE_,#14CCW_PRPAGE_,#00HA,CTEMPA,#30HCOLUMN,ACODE_,#15CCW_PRPAGE_,#00HA,CTEMPA,#40HCOLUMN,ACODE_,#16CCW_PRPAGE_,#00H4電動(dòng)自行車的速度里程表軟件程序設(shè)計(jì)MOVA,CTEMPADDA,#50HMOVCOLUMN,AMOVCODE_,#17LCALLCCW_PRLCALLDELAYret;DISPLAY2:MOVMOVMOVLCALLMOVMOVADDMOVMOVLCALLMOVMOVADDMOVMOVLCALLMOVMOVADDMOVMOVLCALLMOVMOVMOVMOVLCALLMOVMOVPAGE_,#02H;顯示“里”COLUMN,CTEMPCODE_,#00HCCW_PRPAGE_,#02H;顯示“程”A,CTEMPA,#10HCOLUMN,ACODE_,#01HCCW_PRPAGE_,#02H;顯示kmA,CTEMPA,#69HCOLUMN,ACODE_,#04HCCW_PRPAGE_,#02H;顯示“:”A,CTEMPA,#20HCOLUMN,ACODE_,#06HCCW_PRPAGE_,#00H;顯示“速”A,CTEMPCOLUMN,ACODE_,#02HCCW_PRPAGE_,#00H;顯示“度”A,CTEMPADDA,#10HMOVCOLUMN,AMOVCODE_,#03HLCALLCCW_PRMOVPAGE_,#00H;顯示“km”MOVA,CTEMPADDA,#59HMOVCOLUMN,AMOVCODE_,#04HLCALLCCW_PRMOVPAGE_,#00H;顯示“/h”MOVA,CTEMPADDA,#69HMOVCOLUMN,AMOVCODE_,#05HLCALLCCW_PRMOVPAGE_,#00H;顯示“:”MOVA,CTEMPADDA,#20HMOVCOLUMN,AMOVCODE_,#06HLCALLCCW_PRRET;延時(shí)子程序DELAY:MOVR7,#200MOVR5,#20D1:MOVR6,#200DJNZR6,$DJNZR7,D1DJNZR5,D1RET;速度處理顯示子程序SPEED:PUSHAMOVA,DATA1MOVB,#0DHMULABMOVB,#64HDIVABMOVCODE_,AMOVA,BLCALLBB14電動(dòng)自行車的速度里程表軟件程序設(shè)計(jì)MOVB,#0AHDIVABMOVCODE_,AMOVCTEMP,#08HMOVA,BLCALLBB1MOVCODE_,AMOVCTEMP,#10HLCALLBB1MOVDATA1,#00HPOPARET;里程處理顯示子程序MILAGE:PUSHAMOVA,DATA3MOVB,#0C8H;除以200DIVABMOVCODE_,AMOVCTEMP,#00HMOVA,BLCALLBB2MOVB,#014HDIVABMOVCODE_,AMOVCTEMP,#08HMOVA,BLCALLBB2MOVB,#02HDIVABMOVCODE_,AMOVCTEMP,#10HMOVA,BLCALLBB2MOVCODE_,#0AHMOVCTEMP,#17H;顯示小數(shù)點(diǎn)LCALLBB2CJNEA,#00H,M1MOVA,DATA2MOVB,#032HDIVABMOVCODE_,AMOVCTEMP,#1EHMOVA,BLCALLBB2MOVB,#05HDIVABMOVCODE_,AMOVCTEMP,#26HLCALLBB2POPARETM1:MOVA,DATA2MOVB,#032HDIVABADDA,#05HMOVCODE_,AMOVCTEMP,#1EHMOVA,BLCALLBB2MOVB,#05HDIVABMOVCODE_,AMOVCTEMP,#26HLCALLBB2POPARET;第二行速度數(shù)據(jù)顯示調(diào)用子程序BB1:PUSHAMOVPAGE_,#00HMOVA,CTEMPADDA,#3CHMOVCOLUMN,ALCALLDIW_PRPOPARET;第一行里程數(shù)據(jù)顯示調(diào)用子程序BB2:PUSHAMOVPAGE_,#02HMOVA,CTEMPADDA,#3CHMOVCOLUMN,ALCALLDIW_PRPOPARET4電動(dòng)自行車的速度里程表軟件程序設(shè)計(jì);電機(jī)轉(zhuǎn)向顯示子程序fxb:MOVCTEMP,#00HCJNEA,#80h,fxMOVPAGE_,#00H;停止MOVA,CTEMPADDA,#2AHMOVCOLUMN,AMOVCODE_,#09HLCALLCCW_PRMOVPAGE_,#00H;顯示“0”MOVA,CTEMPADDA,#3CHMOVCOLUMN,AMOVCODE_,#00HLCALLDIW_PRMOVPAGE_,#00H;顯示“0”MOVA,CTEMPADDA,#44HMOVCOLUMN,AMOVCODE_,#00HLCALLDIW_PRMOVPAGE_,#00H;顯示“0”MOVA,CTEMPADDA,#4CHMOVCOLUMN,AMOVCODE_,#00HLCALLDIW_PRRETfx:ANLa,#80hCJNEa,#80h,fx1MOVPAGE_,#00HMOVA,CTEMPADDA,#2aHMOVCOLUMN,AMOVCODE_,#07HLCALLCCW_PRRETfx1:MOVPAGE_,#00HMOVA,CTEMPADDA,#2aHMOVCOLUMN,AMOVCODE_,#08HLCALLCCW_PRret;正轉(zhuǎn);反轉(zhuǎn);;初始化程序INIT:MOVCOM,#0E2H;復(fù)位LCALLPROLCALLPR3MOVCOM,#0A4H;關(guān)閉休閉狀態(tài)LCALLPROLCALLPR3MOVCOM,#0A9H;設(shè)置1/32占空比LCALLPROLCALLPR3MOVCOM,#0A0H;正向排序設(shè)置LCALLPROLCALLPR3MOVCOM,#0C0H;設(shè)置顯示起始行為第一行LCALLPROLCALLPR3MOVCOM,#0AFH;開顯示設(shè)置LCALLPROLCALLPR3RET;;清屏CLEAR:MOVR4,#00H;頁(yè)面地址暫存器設(shè)置CLEAR1:MOVA,R4;取頁(yè)地址值ORLA,#0B8H;"或"頁(yè)面地址設(shè)置代碼MOVCOM,A;頁(yè)面地址設(shè)置LCALLPROLCALLPR3MOVCOM,#00H;列地址設(shè)置為"0"LCALLPROLCALLPR3MOVR3,#50H;一頁(yè)清80個(gè)字節(jié)CLEAR2:MOVDAT,#00H;顯示數(shù)據(jù)為"0"LCALLPR1LCALLPR4DJNZR3,CLEAR2;頁(yè)內(nèi)字節(jié)清零循環(huán)INCR4;頁(yè)地址暫存器加一CJNER4,#

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝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ù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 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)論