電子式里程表_第1頁
電子式里程表_第2頁
電子式里程表_第3頁
電子式里程表_第4頁
電子式里程表_第5頁
已閱讀5頁,還剩40頁未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡(jiǎn)介

-.z.電子式里程表摘要里程表廣泛應(yīng)用于各類機(jī)車,傳統(tǒng)的機(jī)械式里程表雖然穩(wěn)定可靠,但功能單一、易受磨損。隨著電子技術(shù)的迅猛發(fā)展,電子式里程表得以廣泛應(yīng)用,現(xiàn)在很多轎車儀表已經(jīng)使用電子車速里程表,本設(shè)計(jì)介紹一種基于單片機(jī)的智能電子里程表。該電子式里程表是一種數(shù)字式儀表,主要由車速表和里程表兩部分組成,其傳感器采用無接觸測(cè)量的光電傳感器。它不僅可顯示車輛行駛的總里程,也可顯示一段時(shí)間的階段里程,還可顯示車速,以及實(shí)現(xiàn)超速報(bào)警等功能,并具有較強(qiáng)的再開發(fā)能力。它的實(shí)現(xiàn)方式是,通過安裝在汽車轉(zhuǎn)軸上的測(cè)量盤,用光電式轉(zhuǎn)速傳感器檢測(cè)轉(zhuǎn)速的脈沖信息,在脈沖狀態(tài)下,將轉(zhuǎn)速的變化轉(zhuǎn)換成光通量的變化,再通過光電轉(zhuǎn)換元件將光通量的變化轉(zhuǎn)換成電量的變化,接著通過頻率測(cè)量電路將脈沖信號(hào)輸入到單片機(jī)中,然后依據(jù)電量與轉(zhuǎn)速的函數(shù)關(guān)系實(shí)現(xiàn)轉(zhuǎn)速測(cè)量,再通過計(jì)算,從而得出里程、車速的信息,并由LED顯示器顯示出來。并且該電子式里程表累積的里程數(shù)字存儲(chǔ)在非易失性的EEPROM存儲(chǔ)器內(nèi),在無電狀態(tài)下數(shù)據(jù)也能保存。關(guān)鍵詞:AT89S51單片機(jī);里程表;光電傳感器;LED顯示器;存儲(chǔ)器AbstractVehicleodometerisappliedineachkindofmotorcyclee*tensively,althoughthetraditionalmachinetypeodometerstableandcredible,butthefunctionofitissingleandbeeasilywornaway.Alongwiththetechnicalfastfiercelydevelopinelectronics,theelectronicvehiclecanbeappliede*tensively.Recently,alotofcarappearanceshavealreadyusedtheelectronicvehicleodometer,thisgraduationthesisintroduceakindofintelligenceelectronicvehicleodometer,whichisbasedonaSingle-ChipMicroputersystem.Theelectronics'typevehicleodometerisakindofnumericaltypeappearance,whichmainlyconstitutewithtwoparts,thatisvehiclespeedmeterandodometer,itadoptsthelightsensorthatthesensorhasnocontactmeasure.Itnotonlycanshowthetotalmileagethatvehicledrive,butalsocanshowthestagemileageofaperiodoftime.Moreover,It’scanshowthecarspeed,andtherealizatione*ceedthespeedlimittoreportandsoon.Italsohastheabilityofstrongerlydevelopagain.Thewayofthisvehicleodometercarryoutisasfollows:throughtheinstalledmeasureplateintheautomobileshaft,usethelightsensortomeasuretherotationalspeedinformation.Underthepulseappearance,itmakethevarietyrotationalspeedchangetothevarietyofthelightflu*,afterthatthevarietyofthelightflu*converttoelectricityquantity.Thenthroughthelightelectricityconvertponent,wecanmakethepulsesignalinputtotheSingle-ChipMicroputerbythefrequencymeasurecircuit.Thenintermsofthefunctionrelationshipofelectricityquantityandrotationalspeed,wecanrealizethemeasureofrotationalspeed,aftercalculatebytheSingle-ChipMicropute,wecanobtaintheinformationofmileageandvehiclespeed.Moreover,ThismileageandvehiclespeedinformationcanbedisplayedbytheLEDmonitor.Andthemileagenumeraloftheelectronics'vehicleodometeraccumulationissavinginEEPROM,whichisnoteasilylost,thedataalsocankeepunderthenoelectricappearance.Keyword:AT89S51Single-ChipMicroputer;Odometer;Lightsensor;LED;Memory目錄引言………………………11總體設(shè)計(jì)……………………22系統(tǒng)設(shè)計(jì)可行性分析…………………22.1總體設(shè)計(jì)分析……………………22.2硬件模塊…………32.3軟件模塊…………63硬件單元電路設(shè)計(jì)……………………73.1傳感器的設(shè)計(jì)……………………73.2單片機(jī)與光電傳感器的接口設(shè)計(jì)………………113.3單片機(jī)與外部存儲(chǔ)器的接口設(shè)計(jì)………………133.4單片機(jī)與超速報(bào)警電路的接口設(shè)計(jì)……………133.5單片機(jī)與鍵盤和7段顯示器的接口設(shè)計(jì)………134軟件設(shè)計(jì)……………………144.1脈沖測(cè)量部分……………………164.2鍵盤輸入部分……………………174.3數(shù)據(jù)處理部分……………………184.4存儲(chǔ)器部分………………………214.5超速報(bào)警部分……………………244.6顯示部分…………255系統(tǒng)調(diào)試……………………275.1硬件單元電路調(diào)試………………275.2軟件程序調(diào)試……………………295.3整體調(diào)試…………326系統(tǒng)使用說明……………………327系統(tǒng)功能的擴(kuò)展……………………338結(jié)論…………………33謝辭…………………35參考文獻(xiàn)…………………36附錄…………………………37-.z.引言我國(guó)汽車工業(yè)走過了五十年的歷程,與國(guó)際發(fā)達(dá)國(guó)家汽車工業(yè)相比,電子技術(shù)水平相對(duì)比較落后,提高國(guó)產(chǎn)汽車的電子技術(shù)水平,增加汽車電子裝備的數(shù)量,促進(jìn)汽車電子化是奪取未來汽車市場(chǎng)的關(guān)鍵,提高我國(guó)的汽車電子技術(shù)已勢(shì)在必行。隨著中國(guó)的復(fù)關(guān),國(guó)外汽車零部件廠商也大舉進(jìn)入中國(guó)參與競(jìng)爭(zhēng)。電子式儀表及新型傳感器是各類車型汽車的首選配套產(chǎn)品,通用性好,市場(chǎng)前景廣闊。目前國(guó)外汽車車速里程表已廣泛采用電子式機(jī)芯結(jié)構(gòu),而國(guó)內(nèi)汽車儀表一直是機(jī)械式車速里程表的天下,少數(shù)采用動(dòng)圈式電子儀表,通過大量市場(chǎng)調(diào)研,我們清楚地看到進(jìn)入20世紀(jì)以來汽車工業(yè)迅速發(fā)展,而電子產(chǎn)品則是汽車提高技術(shù)含量的晴雨表。國(guó)外電子產(chǎn)品占整車成本的30%,然而我國(guó)汽車行業(yè)起步較晚,技術(shù)十分落后,電子產(chǎn)品僅占整車成本的5%。例如國(guó)外汽車早已裝配電子式儀表,而我國(guó)汽車仍在應(yīng)用傳統(tǒng)的機(jī)械儀表,可靠性很差。目前汽車儀表控制電子化是一種發(fā)展趨勢(shì),由先進(jìn)的傳感器與顯示裝置構(gòu)成的電子儀表已開始全面取代傳統(tǒng)的機(jī)電式儀表,成為現(xiàn)代汽車的明顯標(biāo)志。一般汽車的常規(guī)儀表有車速里程表、轉(zhuǎn)速表、機(jī)油壓力表、水溫表、燃油表、充電表等。儀表板中最常用的是車速里程表,目前很多轎車儀表已經(jīng)使用電子車速表,它通過變速器上的速度傳感器獲取信號(hào),通過脈沖頻率的變化使指針偏轉(zhuǎn)或者顯示數(shù)字。隨著汽車電子半導(dǎo)體技術(shù)的發(fā)展,多功能、高精度、高靈敏度、讀數(shù)直觀的電子數(shù)字顯示及圖像顯示的儀表已不斷應(yīng)用于汽車。汽車儀表的功能已不僅僅是單純的顯示,而是通過對(duì)汽車各部件參數(shù)的監(jiān)測(cè)和計(jì)算機(jī)處理相配套,從而達(dá)到控制汽車各種運(yùn)行工況的目的。因而電子式里程表的廣泛應(yīng)用將會(huì)很大的提高中國(guó)的汽車電子技術(shù)水平。本作品正是順應(yīng)了汽車電子發(fā)展的趨勢(shì),利用安裝在汽車轉(zhuǎn)軸上的測(cè)量盤,由光電傳感器輸出采樣脈沖,采取單片機(jī)控制,用一個(gè)六位LED數(shù)碼管和一個(gè)四位LED數(shù)碼管作為顯示設(shè)備,從而得出里程、車速的信息。在里程信息的存儲(chǔ)功能上,采用了新型轎車中廣泛使用的串行EEPROM芯片24C16。當(dāng)電源正常供電時(shí)給電容器充電,電源掉電時(shí),利用電容器電流將單片機(jī)中的數(shù)據(jù)寫入EEPROM中。本作品廉價(jià)且功能較強(qiáng),使用方便,實(shí)用價(jià)值較高,極容易得到推廣。本作品經(jīng)過實(shí)驗(yàn),完全能達(dá)到設(shè)計(jì)要求,顯示的車速、里程和原車機(jī)械里程表的顯示值誤差小于1%,報(bào)警值非常準(zhǔn)確。由于采用的芯片都是廣泛使用的通用芯片,成本較低,制作元器件和印刷電路板成本不過七八十元,如果批量生產(chǎn),成本更低。而且該電子式里程表體積小,功耗低,功能多,穩(wěn)定可靠,性價(jià)比高,在很多領(lǐng)域都能得到廣泛的應(yīng)用,具有較高的經(jīng)濟(jì)價(jià)值??傮w設(shè)計(jì)該電子式里程表以AT89S51單片機(jī)為核心,由系統(tǒng)輸入、單片機(jī)部分和系統(tǒng)輸出組成。其主要模塊有報(bào)警裝置、鍵盤輸入、光電傳感器、顯示、單片機(jī)以及EEPROM存儲(chǔ)器。其系統(tǒng)組成框圖如圖1.1所示。圖1.1系統(tǒng)組成框圖單片機(jī)控制模塊是該作品的重要組成部分。為了提高單片機(jī)的使用效率,以及可以實(shí)現(xiàn)在線編程,而采用了AT89C51單片機(jī)的升級(jí)產(chǎn)品AT89S51單片機(jī)。為保證數(shù)據(jù)的安全可靠保存并減少作品的成本,以及使系統(tǒng)的結(jié)構(gòu)簡(jiǎn)單,在里程信息的存儲(chǔ)功能上,沒有采用常用的并行EEPROM存儲(chǔ)器,而采用了新型轎車中廣泛使用的串行EEPROM芯片24C16。當(dāng)電源正常供電時(shí)給電容器充電,電源掉電時(shí),利用電容器電流將單片機(jī)中的數(shù)據(jù)寫入EEPROM中。超速報(bào)警部分本作品采用了簡(jiǎn)單的軟件設(shè)計(jì),由程序產(chǎn)生,鈴聲是為了達(dá)到提示的目的,因此,選用了一個(gè)簡(jiǎn)單的蜂鳴器,通過軟件定時(shí)產(chǎn)生的嘀嘀聲作為提示音,并且接一個(gè)紅色的發(fā)光二極管,使報(bào)警效果更加理想。在車速里程顯示方面,本作品采用了常用的6位共陽極LED顯示器,通過按鍵的轉(zhuǎn)換以及對(duì)單片機(jī)的軟件編程,可在一個(gè)6位共陽極LED顯示器中實(shí)現(xiàn)系統(tǒng)總里程和單班里程的顯示,而車速則通過另一個(gè)4位的共陽極LED顯示器實(shí)時(shí)顯示。而本系統(tǒng)的車速脈沖采樣部分,采用了非接觸式的高靈敏度光電傳感器,它有利于提高脈沖測(cè)量的精度,并提高了系統(tǒng)的可靠性,應(yīng)用時(shí)將測(cè)量盤固定在車輛的轉(zhuǎn)軸上,再通過光電傳感器來測(cè)量。系統(tǒng)設(shè)計(jì)可行性分析2.1總體設(shè)計(jì)分析根據(jù)電子式里程表的具體設(shè)計(jì)要求:(1)顯示車輛行駛的總里程,用6位LED顯示;(2)顯示一段時(shí)間的階段里程,用6位LED顯示;(3)顯示車速,用4位LED顯示;(4)實(shí)現(xiàn)超速報(bào)警;本作品設(shè)計(jì)的電子式里程表擁有以下單元功能模塊:(1)光電傳感器的脈沖信號(hào)檢測(cè)與轉(zhuǎn)換;(2)超速報(bào)警功能;(3)里程信息存儲(chǔ)功能;(4)車速和里程的LED顯示功能;根據(jù)電子式里程表的一些基本要求,從而結(jié)合實(shí)際情況對(duì)具體的單元功能模塊作軟件或硬件上的不同分工,具體如下:在車輛轉(zhuǎn)軸上安裝的光電傳感器的脈沖檢測(cè)單元必須使用具體硬件電路來實(shí)現(xiàn)。鍵輸入和鍵處理、脈沖記數(shù)處理等功能模塊使用軟件編程方式要比硬件電路簡(jiǎn)單得多,實(shí)現(xiàn)也很容易。超速報(bào)警、里程信息存儲(chǔ)、車速和里程的LED顯示都采用硬件電路和軟件編程相結(jié)合的方式。其中超速報(bào)警采用一個(gè)蜂鳴器和一個(gè)紅色發(fā)光二極管的報(bào)警方式,通過單片機(jī)的軟件中斷請(qǐng)求,實(shí)現(xiàn)蜂鳴器的嘀嘀聲及發(fā)光二極管的閃爍顯示。里程信息的存儲(chǔ)采用單片機(jī)對(duì)存儲(chǔ)器的讀寫方式,實(shí)現(xiàn)了數(shù)據(jù)信息的保存。車速和里程的LED顯示通過單片機(jī)P0口和P2口,編程恰當(dāng)?shù)剡x擇各個(gè)7段LED顯示器的點(diǎn)亮?xí)r間和間隔時(shí)間,實(shí)現(xiàn)LED的動(dòng)態(tài)實(shí)現(xiàn)。綜上所述,本作品由以上所述的硬件電路和軟件編程來完成。下面就硬件以及軟件實(shí)現(xiàn)的單元電路分別進(jìn)行具體分析。2.2硬件模塊2.2.1光電傳感器模塊經(jīng)過比較,本系統(tǒng)采用了透射式光電測(cè)速脈沖整形電路。每當(dāng)安裝在汽車轉(zhuǎn)軸上的旋轉(zhuǎn)測(cè)量盤上的長(zhǎng)方孔與光電傳感器上的透光孔重合,則光敏三極管受光而通過電流,使三極管飽和導(dǎo)通,故用于脈沖整形的施密特觸發(fā)器CD4093輸出高電平,當(dāng)圓盤轉(zhuǎn)至透光孔被遮時(shí),CD4093輸出低電平。隨著圓盤不停地轉(zhuǎn)動(dòng),CD4093便輸出脈沖序列。測(cè)出輸出脈沖個(gè)數(shù),結(jié)合圓盤每一周的孔數(shù),使可算出轉(zhuǎn)軸旋轉(zhuǎn)的轉(zhuǎn)速,進(jìn)而可算出車輛的行駛速度。2.2.2單片機(jī)控制模塊本系統(tǒng)使用了單片機(jī)AT89S51,它是AT89C51的升級(jí)產(chǎn)品,能實(shí)現(xiàn)在線編程。單片機(jī)AT89S51是由ATMEL公司生產(chǎn)的51單片機(jī)。簡(jiǎn)單介紹如下:AT89S51單片機(jī)是一個(gè)低電壓,高性能CMOS8位單片機(jī),該器件采用ATMEL高密度非易失存儲(chǔ)器制造技術(shù)制造,與工業(yè)標(biāo)準(zhǔn)的MCS-51指令集和輸出管腳相兼容。其片內(nèi)含有4kbytes的可反復(fù)擦寫的只讀程序存儲(chǔ)器(PEROM)和128bytes的隨機(jī)存取數(shù)據(jù)存儲(chǔ)器(RAM),器件采用ATMEL公司的高密度、非易失性存儲(chǔ)技術(shù)生產(chǎn),兼容標(biāo)準(zhǔn)MCS-51指令系統(tǒng),片內(nèi)置通用8位中央處理器和Flash存儲(chǔ)單元,內(nèi)置功能強(qiáng)大的微型計(jì)算機(jī)的AT89S51為很多嵌入式控制系統(tǒng)提供了一種靈活性高且價(jià)廉的方案。

AT89S51是一個(gè)低功耗高性能單片機(jī),40個(gè)引腳,32個(gè)外部雙向輸入/輸出(I/O)端口,同時(shí)內(nèi)含2個(gè)外部中斷口,2個(gè)16位可編程定時(shí)計(jì)數(shù)器,2個(gè)全雙工串行通信口,AT89S51可以按照常規(guī)方法進(jìn)行編程,也可以在線編程。其將通用的微處理器和Flash存儲(chǔ)器結(jié)合在一起,特別是可反復(fù)擦寫的Flash存儲(chǔ)器可有效地降低開發(fā)成本。其主要特性如下:·與MCS-51兼容·4K字節(jié)可編程FLASH存儲(chǔ)器·1000次擦寫周期·數(shù)據(jù)保留時(shí)間:10年·全靜態(tài)工作:0Hz-24Hz

·三級(jí)程序存儲(chǔ)器鎖定·支持在系統(tǒng)編程ISP·128*8位內(nèi)部RAM

·32個(gè)可編程I/O口·兩個(gè)16位定時(shí)器/計(jì)數(shù)器·5個(gè)中斷源·可編程串行通道·低功耗的閑置和掉電模式·片內(nèi)振蕩器和時(shí)鐘電路·具有雙工UART串行通道此單片機(jī)主要用于本系統(tǒng)的控制,包括響應(yīng)中斷、延時(shí)、定時(shí)、記數(shù)、判斷、掃描鍵盤、超速報(bào)警、LED數(shù)碼管顯示等等。2.2.3鍵盤模塊單片機(jī)系統(tǒng)所用的鍵盤有編碼鍵盤和編碼鍵盤兩種。編碼鍵盤是只要按下它的*一個(gè)鍵,就能產(chǎn)生這個(gè)鍵的代碼,與此同時(shí)還產(chǎn)生一個(gè)脈沖信號(hào),以通知CPU接收鍵碼。編碼鍵盤使用方便,也不用編寫太復(fù)雜的程序。但硬件電路復(fù)雜,比非編碼簡(jiǎn)易鍵盤成本要高。非編碼鍵盤也稱簡(jiǎn)易鍵盤,它的按鍵是排列成行、列矩陣形式的。按鍵的作用只是簡(jiǎn)單地實(shí)現(xiàn)接點(diǎn)的接通或斷開,因此必須有一套相應(yīng)的程序與之配合,才能產(chǎn)生相應(yīng)的鍵碼,它基本上不需要附加什么硬件電路。但需要通過軟件來解決按的識(shí)別、防抖動(dòng)以及如何產(chǎn)生鍵碼的問題。本系統(tǒng)的鍵盤輸入部分,采用了2個(gè)功能鍵,用這2個(gè)鍵既可以選擇6位LED顯示器顯示是單班里程還是總里程。為了節(jié)約成本,本作品選用簡(jiǎn)易鍵盤即兩個(gè)按鍵開關(guān)來實(shí)現(xiàn)車速與里程的轉(zhuǎn)換顯示。2.2.4顯示模塊單片機(jī)所用的顯示有LED和LCD兩種,從設(shè)計(jì)的難度和成本造價(jià)來說LCD都要高于LED。液晶顯示器LCD的最大優(yōu)點(diǎn)是電源電壓低和功耗低,但液晶為非發(fā)光型物質(zhì),它是利用外界光源的被動(dòng)式顯示器件,環(huán)境越明亮顯示越清晰,不能用于暗處。白天靠日光顯示,夜間必須使用照明光源。而且它的工作溫度*圍不寬,低溫條件下靈敏度較低,有時(shí)甚至不能正常工作。壽命與使用條件有關(guān),強(qiáng)光下使用壽命會(huì)減小。此外,它的響應(yīng)速度較低(在10~200ms*圍),這就限制了它在快速系統(tǒng)中的應(yīng)用。LED數(shù)碼管是目前最常用的數(shù)字顯示器,一個(gè)LED數(shù)碼管可用來顯示一位0~9十進(jìn)制數(shù)和一個(gè)小數(shù)點(diǎn),在小型專用微機(jī)系統(tǒng)和單板機(jī)等場(chǎng)合,它是主要的顯示器件,在通用微機(jī)系統(tǒng)中,也常用來作為狀態(tài)等顯示。對(duì)于共陽極顯示器,要點(diǎn)亮的顯示段引腳需接低電平“0”。本作品要顯示的是總里程、單班里程以及車速,為數(shù)字顯示?;谝壕э@示器的成本以及在實(shí)際應(yīng)用中的需要,因此,本作品選用了由LED組成的共陽極7段發(fā)光顯示器,它有簡(jiǎn)單、經(jīng)濟(jì)、易于與單片機(jī)接口等優(yōu)點(diǎn)。存儲(chǔ)模塊此部分是整個(gè)系統(tǒng)的關(guān)鍵部分之一,它的工作情況直接決定了系統(tǒng)數(shù)據(jù)安全保存的可靠性。EEPROM是電可擦除可編程只讀存儲(chǔ)器。在平常情況下,EEPROM與EPROM一樣是只讀的,需要寫入時(shí),在指定的引腳加上一個(gè)高電壓即可寫入或擦除,而且其擦除的速度極快!通常EEPROM芯片又分為串行EEPROM和并行EEPROM兩種,串行EEPROM在讀寫時(shí)數(shù)據(jù)的輸入/輸出是通過2線、3線、4線或SPI總線等接口方式進(jìn)行的,而并行EEPROM的數(shù)據(jù)輸入/輸出則是通過并行總線進(jìn)行的。在汽車上串行EEPROM用得最多,防盜汽車音響解碼,液晶里程表,安全氣囊電腦等等單元模塊都大量采用這種芯片。并行EEPROM用的相對(duì)少些。經(jīng)過翻閱大量的文獻(xiàn)資料,發(fā)現(xiàn)使用串行EEPROM芯片作為本系統(tǒng)的外部存儲(chǔ)器,是比較常用的一種方法,而且在做電路板時(shí)布線簡(jiǎn)單,單片機(jī)編程時(shí)也穩(wěn)定可靠,當(dāng)失電時(shí)數(shù)據(jù)能得以安全的保存,因而采用了串行EEPROM芯片24C16。本系統(tǒng)所用的24C16是美國(guó)ATMEL公司的低功耗CMOS串行EEPROM,它是內(nèi)含2K×8位存儲(chǔ)空間,具有工作電壓寬(2.5~5.5V)、擦寫次數(shù)多(大于10000次)、寫入速度快(小于10ms)等特點(diǎn)。24C16的1、2、3腳是三條地址線,用于確定芯片的硬件地址。在AT89S51試驗(yàn)開發(fā)板上它們都接地,第8腳和第4腳分別為正、負(fù)電源。第5腳SDA為串行數(shù)據(jù)輸入/輸出,數(shù)據(jù)通過這條雙向I2C總線串行傳送,在AT89S51試驗(yàn)開發(fā)板上和單片機(jī)的P1.4連接。第6腳SCL為串行時(shí)鐘輸入線,在AT89C51試驗(yàn)開發(fā)板上和單片機(jī)的P1.3連接。SDA和SCL都需要和正電源間各接一個(gè)10K的電阻上拉。第7腳需要接地。24C02中帶有片內(nèi)地址寄存器。每寫入或讀出一個(gè)數(shù)據(jù)字節(jié)后,該地址寄存器自動(dòng)加1,以實(shí)現(xiàn)對(duì)下一個(gè)存儲(chǔ)單元的讀寫。所有字節(jié)均以單一操作方式讀取。為降低總的寫入時(shí)間,一次操作可寫入多達(dá)8個(gè)字節(jié)的數(shù)據(jù)。2.3軟件模塊 通過上面分析,設(shè)計(jì)中決定選用S51系列單片機(jī)作為控制器,則它的軟件編寫就要按照單片機(jī)語言:C語言或匯編語言來編寫,這里我選用執(zhí)行效率高的匯編語言編寫。開發(fā)工具為keilc51,它的功能強(qiáng)大,支持c語言和匯編語言的編寫與調(diào)試,其軟件模擬I/O口將會(huì)給軟件調(diào)試帶來極大的方便。脈沖測(cè)量部分本單元需要兩個(gè)I/O口,我選用了單片機(jī)的P1.5和P1.6。由于脈沖測(cè)量過程中,開始檢測(cè)時(shí)脈沖寬度已小于機(jī)器周期T,因而會(huì)導(dǎo)致脈沖的丟失。為了避免脈沖的丟失,可用門電路實(shí)現(xiàn)記數(shù)開始與脈沖上升沿的同步控制。所以在控制時(shí),首先由P1.6發(fā)一個(gè)清0負(fù)脈沖,其輸出封鎖與門G1和G2。接著由P1.5發(fā)一個(gè)啟動(dòng)正脈沖,從而將門G2打開。之后,被測(cè)脈沖上升沿通過G2送T1計(jì)數(shù);同時(shí)Q2輸出的高電平使INT0=1,定時(shí)器0的門控GATE有效,啟動(dòng)T/C0開始定時(shí)。直到定時(shí)結(jié)束時(shí),從P1.6發(fā)出一個(gè)負(fù)脈沖,將U2清零,從而封鎖G2,使T/C1停止計(jì)數(shù),至此一次頻率采樣過程結(jié)束。計(jì)數(shù)器1采用計(jì)數(shù)值滿后自然清零再計(jì)數(shù)的方法。將T/C0設(shè)為高優(yōu)先級(jí),允許計(jì)數(shù)過程中定時(shí)中斷。鍵盤輸入部分本單元采用了單片機(jī)的P1.1和P1.2口,通過外接兩個(gè)按鍵開關(guān),從而控制一個(gè)6位LED顯示器的總里程和單班里程的顯示。由于機(jī)械開關(guān)在狀態(tài)轉(zhuǎn)換時(shí)有信號(hào)的抖動(dòng),故在接入開關(guān)的同時(shí),必須考慮防抖動(dòng)的問題。防抖動(dòng)的方法之一是軟件延時(shí)去抖動(dòng)。既在開關(guān)狀態(tài)改變時(shí),執(zhí)行一個(gè)延時(shí)程序,待電平穩(wěn)定后再讀入開關(guān)狀態(tài)信息。而采用的鍵盤分析程序應(yīng)包括:是否有鍵按下以及識(shí)別哪個(gè)鍵按下。一旦找到*鍵,是否按下此鍵,即可將程序轉(zhuǎn)到該鍵的功能程序段。存儲(chǔ)器部分本系統(tǒng)采用的是串行EEPROM芯片24C16,24C16的1-3腳分別為器件編址端A0、A1、A2(用于與系統(tǒng)中的同類器件編碼),4腳為電源地,5腳為I2C總線的數(shù)據(jù)線SDA,6腳為I2C總線的時(shí)鐘SCL,7腳為測(cè)試輸入端,在系統(tǒng)中接地,8腳為電源。當(dāng)時(shí)鐘線SCL為高電平時(shí),數(shù)據(jù)線SDA由高電平跳變?yōu)榈碗娖蕉x為“開始”信號(hào);當(dāng)SCL線為高電平時(shí),SDA線發(fā)生低電平到高電平的跳變?yōu)椤敖Y(jié)束”信號(hào)。程序中多處調(diào)用了DELAY子程序(僅兩條NOP指令),這是為了滿足I2C總線上數(shù)據(jù)傳送速率的要求,只有當(dāng)SDA數(shù)據(jù)線上的數(shù)據(jù)穩(wěn)定下來之后才能進(jìn)行讀寫(即SCL線發(fā)出正脈沖)。另外,在讀最后一個(gè)數(shù)據(jù)字節(jié)時(shí),置應(yīng)答信號(hào)為“1”,表示讀操作即將完成。超速報(bào)警部分本單元采用一個(gè)蜂鳴器和一個(gè)紅色發(fā)光二極管與單片機(jī)的P1.0口相接的報(bào)警實(shí)現(xiàn)方式,光電傳感器檢測(cè)汽車轉(zhuǎn)軸的脈沖信號(hào),并經(jīng)過頻率測(cè)量電路,輸入到單片機(jī)的T1口,通過單片機(jī)的T1口記數(shù),由單片機(jī)進(jìn)行數(shù)據(jù)處理,轉(zhuǎn)換成車速值。這實(shí)時(shí)的車速值與單片機(jī)設(shè)定的最大車速值相比較,當(dāng)車速值大于最大車速值時(shí),通過單片機(jī)的軟件中斷請(qǐng)求,以1秒鐘為周期,實(shí)現(xiàn)蜂鳴器的嘀嘀聲及發(fā)光二極管的閃爍顯示。當(dāng)車速值回落到最大車速值以下時(shí),則通過單片機(jī)控制,關(guān)閉超速報(bào)警功能。顯示部分本單元采用一個(gè)6位共陽極LED顯示器中實(shí)現(xiàn)系統(tǒng)總里程和單班里程的顯示,而車速則通過另一個(gè)4位的共陽極LED顯示器實(shí)時(shí)顯示。其中LED顯示器的段選碼都由單片機(jī)的P0口連接控制,4位LED顯示器的位選碼由單片機(jī)的P2.6和P2.7口通過譯碼器74LS139控制,譯碼器74LS139對(duì)單片機(jī)的P2.6和P2.7口分時(shí)選通,這樣任何一個(gè)時(shí)刻,都只有一位LED在點(diǎn)亮,也即動(dòng)態(tài)掃描顯示方式。74LS139是一個(gè)2-4譯碼器,它將單片機(jī)輸出的地址信號(hào)譯碼后動(dòng)態(tài)驅(qū)動(dòng)相應(yīng)的LED。但74LS139電流驅(qū)動(dòng)能力較小,為此,我使用了未級(jí)驅(qū)動(dòng)PNP三極管C9015作為地址驅(qū)動(dòng)。而6位LED顯示器的位選碼,則由單片機(jī)的P2.0至P2.5口控制。經(jīng)過翻閱大量的技術(shù)資料,對(duì)具體要**現(xiàn)的功能進(jìn)行完整的系統(tǒng)分析,我認(rèn)為我的電子式里程表的系統(tǒng)設(shè)計(jì)基本符合實(shí)際情況,可以完成設(shè)計(jì)任務(wù)所要**現(xiàn)的基本功能。3硬件單元電路設(shè)計(jì)3.1傳感器的設(shè)計(jì)汽車開動(dòng)后,監(jiān)測(cè)傳感器對(duì)汽車轉(zhuǎn)軸的轉(zhuǎn)動(dòng)進(jìn)行采樣,將脈沖采樣信號(hào)輸入到單片機(jī)管腳,單片機(jī)的定時(shí)計(jì)數(shù)器T1工作于計(jì)數(shù)器方式,累計(jì)脈沖個(gè)數(shù),根據(jù)一段時(shí)間內(nèi)的脈沖個(gè)數(shù)和車輪的大小,就可以由單片機(jī)計(jì)算出運(yùn)行的速度和公里數(shù),并驅(qū)動(dòng)顯示器進(jìn)行顯示。3.1.1傳感器的選擇轉(zhuǎn)速是指每分鐘內(nèi)旋轉(zhuǎn)軸轉(zhuǎn)動(dòng)的圈數(shù)。機(jī)械式轉(zhuǎn)速儀和電模擬式測(cè)速儀已經(jīng)無法滿足自動(dòng)化程序日益提高的需要,它們只能測(cè)量精度不高的轉(zhuǎn)速,而且輸出不能直接供計(jì)算機(jī)使用,因此,非接觸式的光電數(shù)字轉(zhuǎn)速儀表就越來越廣泛地得到應(yīng)用。光電傳感器是采用光電元件作為檢測(cè)元件的傳感器。它首先把被測(cè)量的變化轉(zhuǎn)換成光信號(hào)的變化,然后借助光電元件進(jìn)一步將光信號(hào)轉(zhuǎn)換成電信號(hào)。光電傳感器一般由光源、光學(xué)通路和光電元件三部分組成。光電檢測(cè)方法具有精度高、反應(yīng)快、非接觸等優(yōu)點(diǎn),而且可測(cè)參數(shù)多,傳感器的結(jié)構(gòu)簡(jiǎn)單,形式靈活多樣,因此在檢測(cè)和控制領(lǐng)域內(nèi)得到廣泛應(yīng)用。由于采用光電傳感器,可以實(shí)現(xiàn)非接觸測(cè)量。光電式轉(zhuǎn)速測(cè)量?jī)x表比較容易作為高頻脈沖頻率傳感器。例如,可在每轉(zhuǎn)中發(fā)出幾萬脈沖,因此分辨率高,可測(cè)極低的轉(zhuǎn)速,測(cè)量*圍幾乎可從零轉(zhuǎn)開始。其次這種測(cè)量方法一般對(duì)轉(zhuǎn)軸的附加載荷都很小,不會(huì)影響被測(cè)對(duì)象的正常旋轉(zhuǎn),光電式轉(zhuǎn)速傳感器工作在脈沖狀態(tài)下,它是將轉(zhuǎn)軸的轉(zhuǎn)速變換成相應(yīng)頻率的脈沖,然后測(cè)出脈沖頻率就可以測(cè)得轉(zhuǎn)速值。這種測(cè)速方法具有傳感器結(jié)構(gòu)簡(jiǎn)單、可靠、測(cè)量精度高等優(yōu)點(diǎn)。光電轉(zhuǎn)速傳感器的性能可歸納如下:(1)傳感器采用無接觸測(cè)量,不增加被測(cè)物旋轉(zhuǎn)力矩,測(cè)量小里矩的旋轉(zhuǎn)物能獲得很高的精度。(2)光電傳感器是利用光波作為媒介來實(shí)現(xiàn)轉(zhuǎn)速測(cè)量的,抗電磁干擾能力強(qiáng),如果采用調(diào)制光源或調(diào)制型發(fā)光器件,傳感器還可具有抗外界雜光干擾能力。(3)傳感器利用光電效應(yīng)方便地將轉(zhuǎn)速換成電量信號(hào)。故此類傳感器測(cè)量*圍寬、非接觸檢測(cè)距離遠(yuǎn),隨著激光技術(shù)的發(fā)展,使光電檢測(cè)技術(shù)獲得了新發(fā)展,能達(dá)到超遠(yuǎn)距離的測(cè)量。(4)光電傳感器易受環(huán)境霧塵,粉塵、油塵、水霧及雜光的影響。經(jīng)過比較,由于光電傳感器的結(jié)構(gòu)簡(jiǎn)單、可靠、測(cè)量精度高等優(yōu)點(diǎn),因而本設(shè)計(jì)中選用了光電傳感器。3.1.2光電傳感器的選擇光電傳感器的類型按照光電傳感器中光電元件輸出電信號(hào)的形式可以將光電傳感器分為模擬式和脈沖式兩大類。(1)模擬式光電傳感器這種傳感器中光電元件接受的光通量隨被測(cè)量連續(xù)變化,因此,輸出的光電流也是連續(xù)變化的,并與被測(cè)量呈確定的函數(shù)關(guān)系。(2)脈沖式光電傳感器在這種傳感器中,光電元件接受的光信號(hào)是斷續(xù)變化的,因此光電元件處于開關(guān)工作狀態(tài),它輸出的光電流通常是只有兩種穩(wěn)定狀態(tài)的脈沖形式的信號(hào),多用于光電計(jì)數(shù)和光電式轉(zhuǎn)速測(cè)量等場(chǎng)合。通過兩種形式的光電傳感器比較,我選用了脈沖式光電傳感器,因其多用于光電計(jì)數(shù)和光電式轉(zhuǎn)速測(cè)量等場(chǎng)合。脈沖式光電轉(zhuǎn)速傳感器從光路系統(tǒng)看,有透射式和反射式兩種。(1)透射式光電傳感器這種儀表的測(cè)量盤裝在被測(cè)轉(zhuǎn)軸上,在它旁邊裝有不動(dòng)的讀數(shù)盤。測(cè)量盤沿外緣圓周刻有等距徑向透明光縫,在讀數(shù)盤上刻有同樣間距的透光縫隙,當(dāng)測(cè)量盤隨被測(cè)軸一起轉(zhuǎn)動(dòng)時(shí),每轉(zhuǎn)過一個(gè)縫隙,由光源射來的光線就將照射到光敏元件上一次,這個(gè)光脈沖將引起光敏元件的輸出電脈沖,在孔數(shù)一定時(shí),該列電脈沖數(shù)就和轉(zhuǎn)速成正比。電脈沖經(jīng)測(cè)量電路整形放大后再送入頻率計(jì)計(jì)數(shù)和顯示,經(jīng)核算或標(biāo)定后,就可以得到一個(gè)便于測(cè)量計(jì)數(shù)的信號(hào),此時(shí)被測(cè)轉(zhuǎn)速為n=f/N式中f——測(cè)得的脈沖頻率;N——每轉(zhuǎn)脈沖數(shù),它等于圓周上之縫數(shù)。若在調(diào)制盤上開60個(gè)小孔,則可在1秒的記數(shù)值上直接讀出轉(zhuǎn)速大小。它可以測(cè)量1r/min的車速。如果開600個(gè)孔,則它的測(cè)量精度為0.1r/min。(2)反射式光電傳感器在轉(zhuǎn)軸上不便于安裝測(cè)量轉(zhuǎn)盤時(shí),還可以采用在測(cè)量轉(zhuǎn)軸上加反射鏡的方法。在可能時(shí),為了提高分辨率,可以在轉(zhuǎn)軸圓周方向等距貼數(shù)塊反射鏡。只有光線入射時(shí),轉(zhuǎn)軸每轉(zhuǎn)一周就有數(shù)次光反射作用。再用簡(jiǎn)單光學(xué)系統(tǒng)將反射光投到光敏元件上,就可以輸出相應(yīng)的電脈沖。其它部分與透射式一樣,通過測(cè)脈沖頻率就可以求出轉(zhuǎn)速。反射式轉(zhuǎn)速表使用方便,它不給轉(zhuǎn)軸帶來附加載荷,可以在距被測(cè)物數(shù)十毫米外非接觸地測(cè)量其轉(zhuǎn)速,但要求轉(zhuǎn)軸不能太細(xì),便于貼反射鏡,它適于測(cè)量的轉(zhuǎn)速*圍為30~4.8×r/min。通過比較,可知透射式光電傳感器比反射式光電傳感器的測(cè)量精度高,因而本設(shè)計(jì)中我采用了透射式光電傳感器,并且采用了60條縫隙的測(cè)量盤。如圖3.1所示,為透射式光電轉(zhuǎn)速傳感器的結(jié)構(gòu)原理圖。圖3.1透射式光電轉(zhuǎn)速傳感器的結(jié)構(gòu)原理測(cè)量盤上具有相同間距的縫隙,當(dāng)測(cè)量盤轉(zhuǎn)動(dòng)時(shí),轉(zhuǎn)過一條縫隙,光線便產(chǎn)生一次明暗變化,使光敏元件感光一次,用這種結(jié)構(gòu)可以大大增加轉(zhuǎn)盤上的縫隙數(shù),因此使每轉(zhuǎn)的脈沖數(shù)相應(yīng)地增加。3.1.3光電傳感器的脈沖整形電路施密特觸發(fā)器在脈沖的產(chǎn)生和整形電路中應(yīng)用很廣。施密特觸發(fā)器是一種能夠把輸入波形整形成為適合于數(shù)字電路需要的矩形脈沖的電路。而且由于具有滯回特性,所以抗干擾能力也很強(qiáng)。它可用于波形變換、脈沖整形以及脈沖幅度鑒別。下圖3.2為其應(yīng)用:圖3.2施密特觸發(fā)器的應(yīng)用根據(jù)以上施密特觸發(fā)器的應(yīng)用特性,因而用施密特觸發(fā)器作為本系統(tǒng)的主要脈沖整形元件。圖3.3是本系統(tǒng)所采用的透射式光電測(cè)速脈沖整形電路圖。每當(dāng)旋轉(zhuǎn)圓盤上的長(zhǎng)方孔與光電開關(guān)上的透光孔重合,則光敏三極管受光而通過電流,使三極管飽和導(dǎo)通,故施密特觸發(fā)器CD4093輸出高電平,當(dāng)圓盤轉(zhuǎn)至透光孔被遮時(shí),CD4093輸出低電平。隨著圓盤不停地轉(zhuǎn)動(dòng),CD4093便輸出脈沖序列。測(cè)出輸出脈沖個(gè)數(shù),結(jié)合圓盤每一周的孔數(shù),使可算出旋轉(zhuǎn)的轉(zhuǎn)速及轉(zhuǎn)角。圖中的CD4093用于脈沖整形。圖3.3透射式光電測(cè)速脈沖整形電路圖3.2單片機(jī)與光電傳感器的接口設(shè)計(jì)單片機(jī)測(cè)量頻率有兩種方法:測(cè)頻法和測(cè)周期法。測(cè)量頻率就是在單位定時(shí)時(shí)間里對(duì)被測(cè)信號(hào)脈沖進(jìn)行計(jì)數(shù);測(cè)量周期是在被測(cè)信號(hào)周期時(shí)間里對(duì)其一基準(zhǔn)時(shí)鐘脈沖進(jìn)行計(jì)數(shù)。測(cè)周期法常用于脈沖頻率較低的場(chǎng)合,所以在本系統(tǒng)中我采用了測(cè)頻法。測(cè)量頻率最簡(jiǎn)單的方法是將被測(cè)信號(hào)整形為脈沖,然后連接到單片機(jī)的定時(shí)器/記數(shù)器(T/C)的外部脈沖輸入端,本系統(tǒng)中將被測(cè)信號(hào)脈沖AT89S51的T1端??蓪T89S51的一個(gè)T/C0用作定時(shí)器,另一個(gè)T/C1用作計(jì)數(shù)器。在T/C0定時(shí)時(shí)間里,由T/C1對(duì)頻率脈沖進(jìn)行計(jì)數(shù)。T/C1的計(jì)數(shù)值是單位定時(shí)時(shí)間里的脈沖個(gè)數(shù)。但應(yīng)注意如下問題:(1)由于AT895S51對(duì)輸入T/C的外部脈沖計(jì)數(shù),是通過在每個(gè)機(jī)器周期的第10個(gè)時(shí)鐘周期對(duì)輸入端T1采樣,故需要兩個(gè)機(jī)器周期(等于24個(gè)時(shí)鐘周期)識(shí)別一個(gè)脈沖的負(fù)跳變,每識(shí)別到一個(gè)脈沖的負(fù)跳變將計(jì)數(shù)器加1。因此被測(cè)脈沖的最高頻率必須小于。此外,還要求被測(cè)頻率脈沖的寬度應(yīng)大于一個(gè)機(jī)器周期T。本系統(tǒng)所采用的時(shí)鐘頻率為12,則被測(cè)脈沖的最高頻率不應(yīng)超過1224500;其寬度必須大于。(2)在定時(shí)記數(shù)時(shí)會(huì)出現(xiàn)如圖3.4所示的丟失脈沖的情況。第一個(gè)脈沖的丟失,是由于開始檢測(cè)時(shí)脈沖寬度已小于機(jī)器周期T;第二個(gè)脈沖丟失是由于脈沖的負(fù)跳變?cè)诙〞r(shí)之處出現(xiàn)。定時(shí)時(shí)間里出現(xiàn)脈沖丟失,將引起測(cè)量精度降低。脈沖頻率越低,這種誤差越大。圖3.4頻率測(cè)量法的脈沖丟失為解決圖3.4中第一個(gè)脈沖的丟失,可用門電路實(shí)現(xiàn)記數(shù)開始與脈沖上升沿的同步控制。圖3.5是用AT80S51的T/C0作定時(shí)器,T/C1作計(jì)數(shù)器,對(duì)頻率測(cè)量的接口電路。圖3.5帶同步控制的頻率測(cè)量接口控制時(shí),首先由P1.6發(fā)一個(gè)清0負(fù)脈沖,使U1、U2兩個(gè)D觸發(fā)器復(fù)位,其輸出封鎖與門G1和G2。接著由P1.5發(fā)一個(gè)啟動(dòng)正脈沖,其有效上升沿使Q1=1,門G1被開放,使被測(cè)脈沖得以通過門G1,使Q2置為1,從而將門G2打開。之后,被測(cè)脈沖上升沿通過G2送T1計(jì)數(shù);同時(shí)Q2輸出的高電平使INT0=1,定時(shí)器0的門控GATE有效,啟動(dòng)T/C0開始定時(shí)。直到定時(shí)結(jié)束時(shí),從P1.6發(fā)出一個(gè)負(fù)脈沖,將U2清零,從而封鎖G2,使T/C1停止計(jì)數(shù),至此一次頻率采樣過程結(jié)束。在本系統(tǒng)中,為汽車轉(zhuǎn)軸上安裝的測(cè)量盤縫隙對(duì)應(yīng)的頻率,測(cè)量T/C定時(shí)時(shí)間為1S,這樣長(zhǎng)時(shí)間的定時(shí),先由T/C0定時(shí)100ms,之后軟件循環(huán)10次來完成(10×100ms=1s)。T/C作頻率脈沖的計(jì)數(shù)器,若單片機(jī)工作在計(jì)數(shù)方式1,最大計(jì)數(shù)值為65536。若100ms計(jì)數(shù)65536次,則脈沖的頻率為655.36kHz,這已經(jīng)超過了AT89S51的計(jì)數(shù)器的最高頻率500kHz,能夠發(fā)揮出T/C的最大計(jì)數(shù)能力。T/C0定時(shí)100ms的計(jì)數(shù)初值設(shè)為3CB0H,并設(shè)定時(shí)器/計(jì)數(shù)器方式字TMOD=59h。計(jì)數(shù)器1采用計(jì)數(shù)值滿后自然清零再計(jì)數(shù)的方法。將T/C0設(shè)為高優(yōu)先級(jí),允許計(jì)數(shù)過程中定時(shí)中斷,即定時(shí)時(shí)間到就中止計(jì)數(shù)。3.3單片機(jī)與外部存儲(chǔ)器的接口設(shè)計(jì)本系統(tǒng)采用的是串行EEPROM芯片24C16,24C16的1-3腳分別為器件編址端A0、A1、A2(用于與系統(tǒng)中的同類器件編碼),4腳為電源地,5腳為I2C總線的數(shù)據(jù)線SDA,在系統(tǒng)中與單片機(jī)的P1.3口相接,6腳為I2C總線的時(shí)鐘SCL,在系統(tǒng)中與單片機(jī)的P1.4口相接,7腳為測(cè)試輸入端,在系統(tǒng)中接地,8腳為電源。當(dāng)時(shí)鐘線SCL為高電平時(shí),數(shù)據(jù)線SDA由高電平跳變?yōu)榈碗娖蕉x為“開始”信號(hào);當(dāng)SCL線為高電平時(shí),SDA線發(fā)生低電平到高電平的跳變?yōu)椤敖Y(jié)束”信號(hào)。在5腳SDA,6腳SCL上分別接兩個(gè)10K的上拉電阻,并外接了一個(gè)瓷介電容,當(dāng)電源正常供電時(shí)給電容器充電,電源掉電時(shí),利用電容器電流將單片機(jī)中的數(shù)據(jù)寫入EEPROM中。3.4單片機(jī)與超速報(bào)警電路的接口設(shè)計(jì)本部分采用一個(gè)蜂鳴器和一個(gè)紅色發(fā)光二極管與單片機(jī)的P1.0口相接的報(bào)警實(shí)現(xiàn)方式,。若實(shí)時(shí)的車速值與單片機(jī)設(shè)定的最大車速值相比較,當(dāng)車速值大于最大車速值時(shí),通過單片機(jī)的軟件中斷請(qǐng)求,以1秒鐘為周期,從而實(shí)現(xiàn)P1.0口高低電平的通斷。當(dāng)P1.0口為高電平時(shí),輸出正5V的電壓,使紅色發(fā)光二極管得以導(dǎo)通。而且電流由另一條通路使NPN三極管導(dǎo)通,射極輸出電流驅(qū)動(dòng)蜂鳴器工作。當(dāng)P1.0為低電平時(shí),則不能使紅色發(fā)光二極管和NPN三極管導(dǎo)通,因而不能工作。正因?yàn)镻1.0口高低電平的通斷作用,實(shí)現(xiàn)蜂鳴器的嘀嘀聲及發(fā)光二極管的閃爍顯示,從而實(shí)現(xiàn)了系統(tǒng)超速報(bào)警的功能。其電路圖如下圖3.6所示:圖3.6超速報(bào)警電路圖3.5單片機(jī)與鍵盤和7段顯示器的接口設(shè)計(jì)本系統(tǒng)的鍵盤輸入部分,采用2個(gè)功能鍵,用這2個(gè)鍵,既可以選擇顯示是單班里程還是總里程。本系統(tǒng)采用的是常見的按鈕開關(guān)。開關(guān)的接入方法是先將按鈕開關(guān)的狀態(tài)轉(zhuǎn)變?yōu)檫壿嬰娖?,然后可直接接到單片機(jī)的*一條I/O線。但由于機(jī)械開關(guān)在狀態(tài)轉(zhuǎn)換時(shí)有信號(hào)的抖動(dòng),故在接入開關(guān)的同時(shí),必須考慮防抖動(dòng)的問題。其圖3.7如下所示:圖3.7鍵盤輸入電路圖而七段LED顯示器一般都是同時(shí)使用幾個(gè)LED顯示器,它有兩種連用方法:一是每一位都用各自的8位輸出口控制,在顯示*一字符時(shí),相應(yīng)的段恒定發(fā)光或不發(fā)光,這種顯示方法屬于靜態(tài)顯示,它占用較多的I/O口線。二是動(dòng)態(tài)顯示,即將多個(gè)7段LED的段選端復(fù)接在一起,只用一個(gè)8位輸出控制段選,段選同時(shí)加到各個(gè)7段LED顯示器上,通過控制各個(gè)顯示器公共陽極/陰極輪流接電/接地的方法,逐一輪流地啟動(dòng)各個(gè)LED。這種方法中,只要恰當(dāng)?shù)剡x擇點(diǎn)亮?xí)r間和時(shí)間間隔,就會(huì)給人以為是各位LED同時(shí)顯示的假象。這里使用了一個(gè)6位和一個(gè)4位動(dòng)態(tài)顯示的共陽極數(shù)碼管顯示器。其中LED顯示器的段選碼都由單片機(jī)的P0口連接控制,4位LED顯示器的位選碼由單片機(jī)的P2.6和P2.7口通過譯碼器74LS139控制,譯碼器74LS139對(duì)單片機(jī)的P2.6和P2.7口分時(shí)選通,這樣任何一個(gè)時(shí)刻,都只有一位LED在點(diǎn)亮,也即動(dòng)態(tài)掃描顯示方式。74LS139是一個(gè)2-4譯碼器,它將單片機(jī)輸出的地址信號(hào)譯碼后動(dòng)態(tài)驅(qū)動(dòng)相應(yīng)的LED。但74LS139的電流驅(qū)動(dòng)能力較小,為此,使用了未級(jí)驅(qū)動(dòng)PNP三極管C9015作為地址驅(qū)動(dòng)。而6位LED顯示器的位選碼,則由單片機(jī)的P2.0至P2.5口控制。再通過軟件編程,從而控制各自的7節(jié)LED是否被點(diǎn)亮(由于本模塊電路較大,就沒有在這里列出,但可以參考本作品的完整電路原理圖)。4軟件設(shè)計(jì)系統(tǒng)的主程序流程如圖4.1所示。圖4.1系統(tǒng)主程序流程圖本系統(tǒng)的控制、運(yùn)算和管理功能都要通過軟件設(shè)計(jì)來完成,本系統(tǒng)采用模塊式設(shè)計(jì)技術(shù)來進(jìn)行軟件設(shè)計(jì),整個(gè)軟件在功能上可分為初始化模塊,鍵輸入和鍵處理模塊,脈沖計(jì)數(shù)處理模塊,顯示模塊,段碼表子程序塊,存儲(chǔ)模塊。AT89S51單片機(jī)硬件中斷人口地址為0013H,并且在這里按鍵輸入、顯示子程序和脈沖計(jì)數(shù)均用到了T/C(計(jì)時(shí)/計(jì)數(shù)器)中斷功能。系統(tǒng)的初始化,除了分配一些功能寄存器、定義一些常量、設(shè)置AT89S51單片機(jī)的輸人輸出口的工作模式外,還要將24C16設(shè)置為串行傳輸模式,清除P0、P2、P13個(gè)口的寄存器以及接收計(jì)數(shù)器等一些功能寄存器及開中斷等。下面,就各單元功能模塊分別進(jìn)行說明。4.1脈沖測(cè)量部分由于脈沖測(cè)量過程中,開始檢測(cè)時(shí)脈沖寬度已小于機(jī)器周期T,因而會(huì)導(dǎo)致脈沖的丟失。為了避免脈沖的丟失,可用門電路實(shí)現(xiàn)記數(shù)開始與脈沖上升沿的同步控制。所以在控制時(shí),首先由P1.6發(fā)一個(gè)清0負(fù)脈沖,其輸出封鎖與門G1和G2。接著由P1.5發(fā)一個(gè)啟動(dòng)正脈沖,從而將門G2打開。之后,被測(cè)脈沖上升沿通過G2送T1計(jì)數(shù);同時(shí)Q2輸出的高電平使INT0=1,定時(shí)器0的門控GATE有效,啟動(dòng)T/C0開始定時(shí)。直到定時(shí)結(jié)束時(shí),從P1.6發(fā)出一個(gè)負(fù)脈沖,將U2清零,從而封鎖G2,使T/C1停止計(jì)數(shù),至此一次頻率采樣過程結(jié)束。計(jì)數(shù)器1采用計(jì)數(shù)值滿后自然清零再計(jì)數(shù)的方法。將T/C0設(shè)為高優(yōu)先級(jí),允許計(jì)數(shù)過程中定時(shí)中斷。電路圖在圖3.5。下面是初始化和同步控制程序及中斷服務(wù)程序。位地址06H作定時(shí)1s時(shí)間到標(biāo)志位,R7作軟件計(jì)數(shù)器,計(jì)數(shù)10個(gè)100ms。ORG0000H;;AJMPMAIN;ORG000BH;定時(shí)器T0中斷AJMPTIMER0;ORG001BH;定時(shí)器T1中斷AJMPCONTER1;MAIN:CLR06H;清定時(shí)時(shí)間到標(biāo)志位CLRP1.6;產(chǎn)生清0用負(fù)脈沖NOPSETBP1.5MOVTMOD,*59H;MOVTH0,*3CH;T/C0外部啟動(dòng)定時(shí),T/C1計(jì)數(shù)MOVTL0,*0B0H;MOVTH1,*00H;T/C1方式1由00H開始計(jì)數(shù)MOVTL1,*00H;MOVR7,*0AH;計(jì)數(shù)10個(gè)100msSETBTR0;T/C0啟動(dòng)SETBTR1;T/C1啟動(dòng)SETBPT0;定時(shí)器0為高中斷優(yōu)先級(jí)SETBET0;開T/C0中斷SETBET1;開T/C1中斷SETBEA;CPU開中斷NOP;CLRP1.5;HE:JNB06H,HE;產(chǎn)生時(shí)1s時(shí)間到CLRP1.6;產(chǎn)生負(fù)脈沖,封鎖G2NOP;SETBP1.6;CLRTR0;關(guān)閉定時(shí)器CLRTR1;關(guān)閉定時(shí)器LCALLDATAP;調(diào)數(shù)據(jù)處理子程序LCALLDIS;調(diào)顯示子程序SJMPMAINTIMER0:MOVTH0,*3CH;T/C0中斷服務(wù)程序MOVTL0,*0B0H;DJNZR7,RE;MOVR7,*0AH;SETB06H;1s定時(shí)時(shí)間到RE:RETI;T/C0中斷返回CONTER1:RETI;T/C1中斷返回4.2鍵盤輸入部分這個(gè)部分是比較簡(jiǎn)單的一個(gè)部分,在硬件設(shè)計(jì)部分本人對(duì)簡(jiǎn)易鍵盤做了比較詳細(xì)的介紹,這里就不再重復(fù)。鍵盤輸入部分采用2個(gè)功能鍵,用這2個(gè)鍵既可以選擇顯示是單班里程還是總里程。由于機(jī)械開關(guān)在狀態(tài)轉(zhuǎn)換時(shí)有信號(hào)的抖動(dòng),故在接入開關(guān)的同時(shí),必須考慮防抖動(dòng)的問題。防抖動(dòng)的方法之一是軟件延時(shí)去抖動(dòng)。既在開關(guān)狀態(tài)改變時(shí),執(zhí)行一個(gè)延時(shí)程序,待電平穩(wěn)定后再讀入開關(guān)狀態(tài)信息。鍵的去抖動(dòng)方法由軟件延時(shí)來解決。鍵盤分析程序應(yīng)包括:是否有鍵按下以及識(shí)別哪個(gè)鍵按下。一旦找到*鍵,是否按下此鍵,即可將程序轉(zhuǎn)到該鍵的功能程序段。本系統(tǒng)所采用的鍵盤輸入程序如下:KEY:MOVR0,*0FHKEY1:MOVP1,R0MOVA,P1;輸入鍵盤信息ANLA,R0CLRCSUBBA,R0JZKEY1;有鍵按下"ACALLD10MS;有,去抖動(dòng)MOVA,P1;讀鍵信息JNBACC.0,K0;為0鍵按下,轉(zhuǎn)K0程序JNBACC.1,K1;為1鍵按下,轉(zhuǎn)K1程序SJMPKEY其中0FH為置P1口的P1.0~P1.3為輸入方式字,并且也是讀入鍵盤信息的屏蔽字。判斷有無鍵按下的方法是:輸入鍵盤信息,如果低4位為全1,則無鍵按下,否則一定有鍵按下。何鍵按下的確定是通過識(shí)別P1.0~P1.1中的哪一位為“0”來完成的。標(biāo)號(hào)K0、K1分別為相應(yīng)鍵功能程序的入口地址。D10MS為延時(shí)10ms的子程序(機(jī)械開關(guān)的抖動(dòng)過程約為數(shù)毫秒)。4.3數(shù)據(jù)處理部分平均轉(zhuǎn)速測(cè)量中,最普通的方法是當(dāng)旋轉(zhuǎn)體每轉(zhuǎn)一圈,由脈沖轉(zhuǎn)換器發(fā)生60或600個(gè)脈沖,并將它在一秒鐘之內(nèi)通過門,用計(jì)數(shù)器計(jì)數(shù),從而用r/min直流值表示的方法。若設(shè)計(jì)數(shù)器的計(jì)數(shù)值為C,脈沖轉(zhuǎn)換器每轉(zhuǎn)的檢測(cè)脈沖數(shù)為P,計(jì)數(shù)時(shí)間為t秒,轉(zhuǎn)速為N(r/min),則有如下關(guān)系式成立:本系統(tǒng)中采用t=1S,P=60,則C=N;取P為60時(shí),則在1S內(nèi)可測(cè)量1r/min單位的轉(zhuǎn)速。而要從轉(zhuǎn)速算出車速值和里程值,就要知道輪胎的規(guī)格,得出輪胎外直徑,從而獲得輪胎的周長(zhǎng)。根據(jù)輪胎的ISO國(guó)際標(biāo)準(zhǔn),可知:輪胎規(guī)格的ISO表示方法為:ABCDEFG其含義為:A:斷面寬。B:高寬比(斷面高除以斷面寬乘以100%)。C:輪胎結(jié)構(gòu)代號(hào)。D:內(nèi)輪轂直徑。E:?jiǎn)翁ヘ?fù)荷指數(shù)。F:雙胎負(fù)荷指數(shù)。G:速度符號(hào)。如輪胎規(guī)格:195/65R1591V,本設(shè)計(jì)中由于不涉及A、E、F、G,所以沒有提及。輪胎外直徑的計(jì)算公式:(斷面寬*高寬比%*2)+(內(nèi)輪轂直徑*25.4)示例:195/60R14=(195*0.6*2)+(14*25.4)=589.6mm本系統(tǒng)采用的輪胎為小型汽車的輪胎,規(guī)格為145/70R12真空胎因而輪胎外直徑為145/70R12=(145*0.7*2)+(12*25.4)=507.8mm根據(jù)周長(zhǎng)計(jì)算公式可得:輪胎周長(zhǎng)C=507.8*3.14=1594.492mm≈1.6m假設(shè)系統(tǒng)的脈沖計(jì)數(shù)值設(shè)為K,車速為N,周長(zhǎng)為C,則車速計(jì)算公式為:N=K×C×60/1000=____千米/小時(shí)同樣可得出1秒鐘脈沖計(jì)數(shù)的里程值:S=K×C/60=____米,通過累計(jì),就能得到總的里程數(shù)。由汽車在行駛過程中的輪胎磨損,不在本設(shè)計(jì)能預(yù)計(jì)的*圍之內(nèi),因而系統(tǒng)的數(shù)值不可避免會(huì)有一定的微小誤差。以下為雙字節(jié)二進(jìn)制無符號(hào)數(shù)乘法程序MULD以及無符號(hào)除法程序D457,本程序可套用為以上的計(jì)算程序。

入口條件:被乘數(shù)在R2、R3中,乘數(shù)在R6、R7中。

出口信息:乘積在R2、R3、R4、R5中。

影響資源:PSW、A、B、R2~R7堆棧需求:2字節(jié)

MULD:MOVA,R3;計(jì)算R3乘R7

MOVB,R7

MULAB

MOVR4,B;暫存部分積

MOVR5,A

MOVA,R3;計(jì)算R3乘R6

MOVB,R6

MULAB

ADDA,R4;累加部分積

MOVR4,A

CLRA

ADDCA,B

MOVR3,A

MOVA,R2;計(jì)算R2乘R7

MOVB,R7

MULAB

ADDA,R4;累加部分積MOVR4,A

MOVA,R3

ADDCA,B

MOVR3,A

CLRA

RLCA

*CHA,R2;計(jì)算R2乘R6

MOVB,R6

MULAB

ADDA,R3;累加部分積

MOVR3,A

MOVA,R2

ADDCA,B

MOVR2,A

RET入口條件:被除數(shù)在R4、R5中,除數(shù)在R7中。

出口信息:商在R6中。

影響資源:PSW、A、R3~R7堆棧需求:2字節(jié)D457:CLRCMOVA,R4SUBBA,R7JCDV50SETBOV;商溢出RETDV5O:MOVR0,*8;求平均值DV51:MOVA,R5RLCAMOVR5,AMOVA,R4RLCAMOVR4,AMOVF0,CCLRCSUBBA,R7ANLC,/F0JCDV52MOVR4,ADV52:CPLCMOVA,R6RLCAMOVR6,ADJNZR0,DV51MOVA,R4ADDA,R4JCDV53SUBBA,R7JCDV54DV53:INCR6DV54:CLROVRET4.4存儲(chǔ)器部分存儲(chǔ)器部分主要解決單片機(jī)的里程數(shù)據(jù)的保存,因而要處理好24C16的字節(jié)讀寫問題。當(dāng)24C16的時(shí)鐘線SCL為高電平時(shí),數(shù)據(jù)線SDA由高電平跳變?yōu)榈碗娖蕉x為“開始”信號(hào);當(dāng)SCL線為高電平時(shí),SDA線發(fā)生低電平到高電平的跳變?yōu)椤敖Y(jié)束”信號(hào)。開始和結(jié)束信號(hào)都是單片機(jī)產(chǎn)生。在開始信號(hào)以后,總線即被認(rèn)為處于忙狀態(tài);在結(jié)束信號(hào)以后的一段時(shí)間內(nèi),總線被認(rèn)為是空閑的。對(duì)于24C16的數(shù)據(jù)傳送,在24C16的I2C總線上每次傳送的數(shù)據(jù)字節(jié)數(shù)不限,但每一個(gè)字節(jié)必須為8位,而且每個(gè)傳送的字節(jié)后面必須跟一個(gè)認(rèn)可位(第9位),也叫應(yīng)答位(ACK)。每次都是先傳最高位,通常從單片機(jī)上接收到每個(gè)字節(jié)后都會(huì)做出響應(yīng),即釋放SCL線返回高電平,準(zhǔn)備接收下一個(gè)數(shù)據(jù)字節(jié),單片機(jī)可繼續(xù)傳送。當(dāng)單片機(jī)發(fā)送完一個(gè)字節(jié)的數(shù)據(jù)后,接著發(fā)出對(duì)應(yīng)于SCL線上的一個(gè)時(shí)鐘(ACK)認(rèn)可位,在此時(shí)鐘內(nèi)單片機(jī)釋放SDA線,一個(gè)字節(jié)傳送結(jié)束,而從器件的響應(yīng)信號(hào)將SDA線拉成低電平,使SDA在該時(shí)鐘的高電平期間為穩(wěn)定的低電平。從器件的響應(yīng)信號(hào)結(jié)束后,SDA線返回高電平,進(jìn)入下一個(gè)傳送周期。24C16芯片的讀寫子程序如下:;寫串行E2PROM子程序EEPW;R3=10100000(命令1010+器件3位地址+讀/寫。器件地址一個(gè)芯片,是000);(R4)=片內(nèi)字節(jié)地址;(R1)=欲寫數(shù)據(jù)存放地址指針;(R7)=連續(xù)寫字節(jié)數(shù)nEEPW:MOVP1,*0FFHCLRP1.0;發(fā)開始信號(hào)MOVA,R3;送器件地址ACALLSUBSMOVA,R4;送片內(nèi)字節(jié)地址ACALLSUBSAGAIN:MOVA,R1ACALLSUBS;調(diào)發(fā)送單字節(jié)子程序INCR1DJNZR7,AGAIN;連續(xù)寫n個(gè)字節(jié)CLRP1.0;SDA置0,準(zhǔn)備送停止信號(hào)ACALLDELAY;延時(shí)以滿足傳輸速率要求SETBP1.1;發(fā)停止信號(hào)ACALLDELAYSETBP1.0RETSUBS:MOVR0,*08H;發(fā)送單字節(jié)子程序LOOP:CLRP1.1RLCAMOVP1.0,CNOPSETBP1.1ACALLDELAYDJNZR0,LOOP;循環(huán)8次送8個(gè)bitCLRP1.1ACALLDELAYSETBP1.1REP:MOVC,P1.0JCREP;判應(yīng)答到否,未到則等待CLRP1.1RETDELAY:NOPNOPRET;讀串行E2PROM子程序EEPR;(R1)=欲讀數(shù)據(jù)存放地址指針;R3=10100001(命令1010+器件3位地址+讀/寫。器件地址一個(gè)芯片,是000);(R4)=片內(nèi)字節(jié)地址;(R7)=連續(xù)讀字節(jié)數(shù)EEPR:MOVP1,*0FFHCLRP1.0;發(fā)開始信號(hào)MOVA,R3;送器件地址ACALLSUBS;調(diào)發(fā)送單字節(jié)子程序MOVA,R4;送片內(nèi)字節(jié)地址ACALLSUBSMOVP1,*0FFHCLRP1.0;再發(fā)開始信號(hào)MOVA,R3SETBACC.0;發(fā)讀命令A(yù)CALLSUBSMORE:ACALLSUBSMOVR1,AINCR1DJNZR7,MORECLRP1.0ACALLDELAYSETBP1.1ACALLDELAYSETBP1.0;送停止信號(hào)RETSUBR:MOVR0,*08H;接受單字節(jié)子程序LOOP2:SETBP1.1ACALLDELAYMOVC,P1.0RLCACLRP1.1ACALLDELAYDJNZR0,LOOP2CJNER7,*01H,LOWSETBP1.0;若是最后一個(gè)字節(jié)置A=1AJMPSETOKLOW:CLRP1.0;否則置A=0SETOK:ACALLDELAYSETBP1.1ACALLDELAYCLRP1.1ACALLDELAYSETBP1.0;應(yīng)答畢,SDA置1RET程序中多處調(diào)用了DELAY子程序(僅兩條NOP指令),這是為了滿足I2C總線上數(shù)據(jù)傳送速率的要求,只有當(dāng)SDA數(shù)據(jù)線上的數(shù)據(jù)穩(wěn)定下來之后才能進(jìn)行讀寫(即SCL線發(fā)出正脈沖)。另外,在讀最后一個(gè)數(shù)據(jù)字節(jié)時(shí),置應(yīng)答信號(hào)為“1”,表示讀操作即將完成。這存儲(chǔ)器部分還有一個(gè)重要的環(huán)節(jié),就是要延長(zhǎng)EEPROM的工作壽命。以下就此做介紹:CPU頻繁地擦寫串行EEPROM,EEPROM擦寫次數(shù)典型值為100萬次,這是指*一位由1寫為0或由0寫為1的次數(shù)。而實(shí)際上寫入EEPROM的數(shù)據(jù),對(duì)于*一位來說,寫入的數(shù)據(jù)并不是每次都是要變化的,實(shí)際測(cè)試可證明,擦寫次數(shù)大于500萬次。按300萬次算,若5s寫一次,只能寫150天左右,顯然,這是不能滿足要求的。為此,可采用一種利用存儲(chǔ)器空間延長(zhǎng)EEPROM工作壽命的方法。其方法為:數(shù)據(jù)存放的地址不是固定的,而是用一個(gè)固定的基地址加上EEPROM內(nèi)的一個(gè)單元的內(nèi)容(即偏移地址)作為真正的地址;若發(fā)現(xiàn)存儲(chǔ)單元已壞(寫入和讀出的內(nèi)容不同),則偏移地址加一,重新寫入。如果采用100倍的存儲(chǔ)器空間冗余,可將EEPROM的實(shí)際壽命延長(zhǎng)100倍。4.5超速報(bào)警部分本超速報(bào)警部分采用內(nèi)部T0外部計(jì)數(shù),外部輸入脈沖,使LED以1s周期閃爍,蜂鳴器以1s周期發(fā)出嘀嘀聲,由P1.0輸出信號(hào),其程序如下:START:MOVTMOD,*01H;置T0為方式1外部計(jì)數(shù)MOVTH0,*3CH;置寄存器初值MOVTL0,*0B0HCLRTF0;定時(shí)器溢出清0SETBTR0;啟動(dòng)T0LP1:MOVTF0,*0AHLP2:JNBTF0,LP2MOVTH0,*3CH;重置計(jì)數(shù)初值MOVTL0,*0B0HCLRTF0DJNZTF0,LP2CPLP1.0;輸出取反AJMPLP1;重復(fù)循環(huán)END4.6顯示部分本功能模塊主要是完成LED的動(dòng)態(tài)顯示,而動(dòng)態(tài)掃描的頻率有一定的要求,頻率太低,LED將出現(xiàn)閃爍現(xiàn)象。如頻率太高,由于每個(gè)LED點(diǎn)亮的時(shí)間太短,LED的亮度太低,肉眼無法看清,所以一般均取幾個(gè)ms左右為宜,這就要求在編寫程序時(shí),選通*一位LED使其點(diǎn)亮并保持一定的時(shí)間,程序上常采用的是調(diào)用延時(shí)子程序。在C51指令中,延時(shí)子程序是相當(dāng)簡(jiǎn)單的,并且延時(shí)時(shí)間也很容易更改。動(dòng)態(tài)顯示子程序的設(shè)計(jì)要點(diǎn):(1)建立顯示數(shù)據(jù)緩沖區(qū)——存放待顯示數(shù)字,字符在字型編碼表中的序號(hào);(2)軟件譯碼——利用查表方法獲得字型編碼(段選碼);(3)位掃描輸出——采用移位方法逐位點(diǎn)亮LED顯示器;(4)延時(shí)子程序——控制點(diǎn)亮?xí)r間和時(shí)間間隔。本系統(tǒng)的顯示程序設(shè)計(jì)成子程序的形式,每調(diào)用一次,可以將緩沖區(qū)中的數(shù)據(jù)顯示一次,每個(gè)字符顯示時(shí)間為10ms,為了使顯示的字符穩(wěn)定下來,必須反復(fù)調(diào)用該顯示子程序。本系統(tǒng)用到了一個(gè)6位LED來顯示里程信息,一個(gè)4位LED來顯示車速?,F(xiàn)在,我以4位LED來舉例,說明其應(yīng)用。將4只LED的段位都連在一起,它們的公共端則由74LS138分時(shí)選通,這樣任何一個(gè)時(shí)刻,都只有一位LED在點(diǎn)亮,也即動(dòng)態(tài)掃描顯示方式。以下圖4.2為顯示子程序的流程框圖:圖4.2顯示子程序的流程框圖下面為顯示車速的4位LED的顯示子程序,其用到了單片機(jī)的P2.0和P2.1口,并通過3-8譯碼器74LS138將單片機(jī)輸出的地址信號(hào)譯碼后動(dòng)態(tài)驅(qū)動(dòng)相應(yīng)的LED。具體的情況我都寫了注釋。ORG0100HMOVSCON,*00H;串行口工作方式0MAIN:MOVR3,*00H;字型碼初始地址LOOP:MOVR4,*0E8H;循環(huán)顯示*個(gè)字符DELAY:ACALLDISPLAY;顯示DJNZR4,DELAY;延時(shí)時(shí)間未到繼續(xù)INCR3;顯示下個(gè)字符CJNER3,*0AH,LOOP;未顯示到“9”繼續(xù)AJMPMAIN;返回主程序DISPLAY:CLRP2.0CLRP2.1;選中第一位ACALLDISP;顯示ACALLDELAY1;延時(shí)10msSETBP2.1;選中第二位ACALLDISPACALLDELAY1SETBP2.0;選中第三位CLRP2.1ACALLDISPACALLDELAY1SETBP2.0;選中第四位SETBP2.1ACALLDISPACALLDELAY1RETDISP:MOVA,R3MOVDPTR,*TABLEMOVCA,A+DPTR;查表MOVBUFF,A;送發(fā)送緩沖器WAIT:JNBTI,WAIT;等待串行中斷CLRTI;清中斷標(biāo)志RETDELAY1:MOVR6,*10H;延時(shí)子程序LOOP1:MOVR7,*38HLOOP2:DJNZR7,LOOP2DJNZR6,LOOP1RETTABLE:DB0C0H,0F9H,0A4H,0B0H,99HDB92H,82H,0F8H,80H,90HEND;程序結(jié)束在整個(gè)的軟件設(shè)計(jì)過程中,最麻煩的是R寄存器的選取,由于只有7個(gè)R寄存器能使用,而本系統(tǒng)完成的功能比較強(qiáng)大,簡(jiǎn)單一個(gè)延時(shí)程序都會(huì)用到兩個(gè)或兩個(gè)以上的R寄存器,這使在很多調(diào)用的時(shí)候出現(xiàn)R寄存器不夠用的情況,特別是在中斷的時(shí)候,有些寄存器在用后的值會(huì)發(fā)生改變,可能會(huì)使得系統(tǒng)出現(xiàn)混亂情況。解決的辦法也就只好在不夠用的時(shí)候把寄存器先存起來,用完后再存回去。到此軟件程序設(shè)計(jì)完畢。5系統(tǒng)調(diào)試本系統(tǒng)調(diào)試單元所使用的測(cè)試儀器儀表和工具:(1)微機(jī)一臺(tái);(2)示波器;(3)萬用表;(4)直流穩(wěn)壓電源;(5)單片機(jī)開發(fā)系統(tǒng)一套。本裝置的調(diào)試主要分為硬件調(diào)試、軟件調(diào)試和整體調(diào)試三大部分。以下作具體介紹。5.1硬件單元電路調(diào)試5.1.15V穩(wěn)壓電源本裝置使用單5V穩(wěn)壓直流電源供電。經(jīng)過示波器測(cè)量5V穩(wěn)壓電源輸出端,其交流部分電壓的峰--峰值為6mV,符合本裝置電源的要求,穩(wěn)壓電源調(diào)試完畢。5.1.2光電傳感器光電傳感器模塊完全是硬件電路,為了達(dá)到預(yù)期的目的,先在面包板上進(jìn)行了模擬,按照電路圖的要求以及元器件的選取,接好了電路圖,并在一小電機(jī)上安裝了測(cè)量盤,接好+5V直流電源后,通過示波器的觀測(cè),發(fā)現(xiàn)隨著電機(jī)轉(zhuǎn)速的變化,示波器里的脈沖波形電壓也在不停的正負(fù)跳變,并且脈沖寬度也不斷的調(diào)整,反應(yīng)速度相當(dāng)?shù)撵`敏,至此,光電傳感器模塊調(diào)試成功。5.1.3鍵盤輸入和顯示在調(diào)試前,值得提到的是三極管的幾個(gè)極的判斷和數(shù)碼管的a至g所對(duì)應(yīng)的管腳的測(cè)試,這直接關(guān)系到此部分的成敗。1、判斷基極和管子類型(PNP或NPN):由于基極與發(fā)射極、基極與集電極,分別是兩上PN結(jié),它們之間的反向電阻值都很小,所以用萬用表歐姆檔(R×100或R×1K)測(cè)量時(shí),先將任一支表筆接到*一個(gè)認(rèn)定的管腳上,另一表筆先后接到其余兩個(gè)管腳上。如果測(cè)量得到的阻值都很大(或都很?。?,然后對(duì)換表筆,重復(fù)上述測(cè)量時(shí),阻值恰好與上述相反。都很?。ɑ蚨己艽螅?。則可斷定所認(rèn)定的管腳為基極。若不符合上述結(jié)果,應(yīng)另換一個(gè)認(rèn)定管腳重新測(cè)量,直至符合上述結(jié)果為止。測(cè)量時(shí)注意管腳和表筆的極性。當(dāng)黑表筆接在基極,紅表筆分別接在其它兩極時(shí),測(cè)得的電阻值都較小,則可判定該三極管為NPN型,反之即為PNP型。2、判斷集電極和發(fā)射極:判斷集電極和發(fā)射極的基本原理是把三極管接成基本單管放大電路。利用測(cè)量管子的電流放大系數(shù)β的大小來判斷集電極和發(fā)射極。對(duì)于常用的NPN型小功率硅管。若集電極接電源正極,發(fā)射極接電源負(fù)極,這時(shí)表針偏得較大。如果電壓極性反接,則表針偏轉(zhuǎn)就比較小。由此即可判斷出集電極和發(fā)射極。另一種更可靠的辦法是,當(dāng)肯定被測(cè)為NPN型硅管后,將黑表筆接于一個(gè)待測(cè)的管腳,紅表筆接另一個(gè)管腳,基極懸空,觀察表針偏轉(zhuǎn)情況。然后將黑表筆所接管腳與已斷定的基極用手捏?。ㄗ⒁獠荒苁蛊湎嗯觯?,這時(shí)人體電阻相當(dāng)于電阻Rb,比較測(cè)量出的阻值變化。然后更換黑、紅表筆,再觀察阻值變化。如前者的變化比較大,則前者黑表筆所接管腳就是集電極。紅表筆所接管腳為發(fā)射極。如為PNP管子與上述情況相反。根據(jù)上面的方法,測(cè)得所使用的三極管是PNP管,其管腳平面對(duì)向自己,管腳從左到右為e,b,c。數(shù)碼管腳的測(cè)試就顯得比較簡(jiǎn)單:如果是共陰極的數(shù)碼管就讓位選接地,然后電亮其它的管腳,通過顯示結(jié)果來斷定引腳是a,b,c等,位選也是拿萬用表的黑表筆去探試的。如果是共陽極的話就用紅表筆來探試位選,其他的與共陰極的一致。經(jīng)過以上的判斷,就能得到正確的管腳接入電路中。鍵盤輸入和顯示是本作品的一個(gè)重要組成部分,其硬件調(diào)試花了不少的時(shí)間。當(dāng)按鍵時(shí),顯示器能較好的轉(zhuǎn)換,這部分基本上沒有問題,但是顯示部分的調(diào)試,當(dāng)接好電源時(shí),6位的LED顯示器顯示亂碼,經(jīng)過仔細(xì)的分析,查看電路板的線路,結(jié)果硬件電路沒有錯(cuò)誤,就只可能是軟件上出現(xiàn)錯(cuò)誤了,最后是因?yàn)轱@示器的公共端接線與軟件的編程混亂了。而4位的LED顯示器的第一位總是顯示8,把驅(qū)動(dòng)的三級(jí)管拆下來檢查發(fā)現(xiàn)并不是三極管的問題,這花了比較長(zhǎng)的時(shí)間,經(jīng)過仔細(xì)的分析,結(jié)果發(fā)現(xiàn)是二-四譯碼器74LS139的問題,原因是用P2.6和P2.7口來驅(qū)動(dòng)4位LED,而鎖存端/EN接地,結(jié)果無論這兩個(gè)口是否關(guān)斷,都有一個(gè)LED是全部顯示的,于是把鎖存端/EN接到P1.7

溫馨提示

  • 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. 人人文庫(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)論