片機(jī)的汽車?yán)锍瘫碓O(shè)計(jì)+單片機(jī)電子鐘合_第1頁(yè)
片機(jī)的汽車?yán)锍瘫碓O(shè)計(jì)+單片機(jī)電子鐘合_第2頁(yè)
片機(jī)的汽車?yán)锍瘫碓O(shè)計(jì)+單片機(jī)電子鐘合_第3頁(yè)
片機(jī)的汽車?yán)锍瘫碓O(shè)計(jì)+單片機(jī)電子鐘合_第4頁(yè)
片機(jī)的汽車?yán)锍瘫碓O(shè)計(jì)+單片機(jī)電子鐘合_第5頁(yè)
已閱讀5頁(yè),還剩91頁(yè)未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡(jiǎn)介

1、畢業(yè)實(shí)踐課題及任務(wù)課題簡(jiǎn)介該課題主要是利用單片機(jī)技術(shù)進(jìn)行的一項(xiàng)軟、硬件開發(fā)技術(shù)。其目的是培養(yǎng)學(xué)生利用單片機(jī)技術(shù)解決生產(chǎn)、生活中的實(shí)際問(wèn)題,對(duì)提高學(xué)生設(shè)計(jì)能力動(dòng)手能力和工程實(shí)踐技能有較重要的意義。學(xué)生應(yīng)具備電路分析、電子技術(shù)、單片機(jī)技術(shù)等方面的相關(guān)知識(shí),熟悉單片機(jī)系統(tǒng)流程圖、硬件結(jié)構(gòu)圖及匯編語(yǔ)言,能進(jìn)行單片機(jī)控制電路的連接、程序編寫、輸入、修改及調(diào)試等課題任務(wù)要求畢業(yè)設(shè)計(jì)(論文)的內(nèi)容概述:汽車?yán)锍瘫硎且环N具有速度測(cè)量,行程測(cè)量、超速報(bào)警及LCD顯示功能的單片機(jī)應(yīng)用系統(tǒng),利用硬件電路和軟件控制來(lái)實(shí)現(xiàn)上述功能。二、畢業(yè)設(shè)計(jì)(論文)的要求與數(shù)據(jù):1、寫出汽車?yán)锍瘫淼目刂埔蠓治?、畫出硬件電路接線圖

2、3、畫出控制系統(tǒng)流程圖4、編寫控制程序5、寫出汽車?yán)锍瘫淼氖褂谜f(shuō)明三、畢業(yè)設(shè)計(jì)(論文)應(yīng)完成的工作:1、畢業(yè)設(shè)計(jì)(論文)應(yīng)有詳細(xì)的設(shè)計(jì)方案、控制電路、控制程序及分析說(shuō)明2、畢業(yè)設(shè)計(jì)(論文)應(yīng)在規(guī)定的時(shí)間內(nèi)完成3、畢業(yè)設(shè)計(jì)(論文)應(yīng)嚴(yán)格按設(shè)計(jì)規(guī)范打印、裝訂進(jìn)程安排參考資料1、單片機(jī)原理及應(yīng)用 北京航空航天大學(xué)出版社 孫涵芳主編2、電子技術(shù) 高教出版社 胡宴如主編3、電子線路CAD 機(jī)械工業(yè)出版社 王廷才主編4、單片機(jī)應(yīng)用程序設(shè)計(jì)技術(shù) 北京航空航天大學(xué)出版社 周航慈主編湖南工業(yè)職業(yè)技術(shù)學(xué)院畢業(yè)實(shí)踐開題報(bào)告書 系 專業(yè) 學(xué)生姓名班級(jí)學(xué)號(hào)課題名稱 課題準(zhǔn)備情況思路和方法擬重點(diǎn)解決的問(wèn)題計(jì)劃進(jìn)度指導(dǎo)教師

3、意見 簽名:年 月 日湖南工業(yè)職業(yè)技術(shù)學(xué)院畢業(yè)實(shí)踐考核表 系 專業(yè) 學(xué)生姓名班級(jí)學(xué)號(hào)課題名稱 課題完成情況及自我評(píng)價(jià)指導(dǎo)教師評(píng)價(jià)評(píng)語(yǔ)評(píng)分 (共40分)簽名: 年 月 日評(píng)閱教師評(píng)價(jià)評(píng)語(yǔ)評(píng)分 (共30分)簽名: 年 月 日答辯小組評(píng)價(jià)評(píng)語(yǔ)評(píng)分 (共30分)組長(zhǎng)簽名: 年 月 日畢業(yè)實(shí)踐評(píng)審組審核 經(jīng)綜合考核該學(xué)生畢業(yè)實(shí)踐得分 分,評(píng)定為 組長(zhǎng)簽名:年 月 日電動(dòng)自行車?yán)锍瘫淼能浖O(shè)計(jì)序 言本文介紹里程表設(shè)計(jì)以單片機(jī)和霍爾傳感器為核心?;魻杺鞲衅鲗⒌絹?lái)的低電平脈沖信號(hào)輸入到單片機(jī)進(jìn)行控制與計(jì)算,再采用LED模塊進(jìn)行顯示,使得電動(dòng)自行車的里程數(shù)據(jù)能直觀的顯示給使用者。自行車?yán)锍瘫硎怯糜谶h(yuǎn)距離連續(xù)測(cè)量

4、自行車行駛距離的儀表。它分為電源、霍爾傳感器和顯示器3部分。目前,里程表普遍使用在汽車和摩扦車上,是一種機(jī)械測(cè)量裝置,測(cè)試精度相對(duì)低,自行車上使用里程表的還很少見。針對(duì)這種情況,研制新型的數(shù)字化里程表用于自行車上是非常必要的。本文介紹的自行車?yán)锍瘫硎怯呻娫捶€(wěn)壓系統(tǒng)供電,AT89C52單片機(jī)為中央處理器,結(jié)合高精度的控制電路,方便地實(shí)現(xiàn)了智能化、高精度、高可靠性、高效率的自行車?yán)锍瘫淼脑O(shè)計(jì),并且使用方便。里程表廣泛應(yīng)用于各類機(jī)車,包括廠礦企業(yè)所使用的電機(jī)車和汽車、摩托車等。傳統(tǒng)的機(jī)械式里程表雖然穩(wěn)定可靠,但功能單一,隨著電子技術(shù)的迅猛發(fā)展,電子式里程表得以廣泛應(yīng)用。一種以單片機(jī)為核心的里程表,它

5、不僅可以顯示車輛行駛的總里程,也可顯示一段時(shí)間的階段里程,并且具有較強(qiáng)的再開發(fā)能力。這一切都是因?yàn)槔昧藛纹瑱C(jī)系統(tǒng)強(qiáng)大的數(shù)據(jù)存儲(chǔ)和處理控制功能。里程表以單片機(jī)AT89C52為核心,由系統(tǒng)輸入、單片機(jī)部分和系統(tǒng)輸出組成。第 1 章 緒論單片機(jī)自從推出以來(lái),以其超小型化、結(jié)構(gòu)緊湊、可靠性高、成本低等優(yōu)點(diǎn)被人們廣泛接受,從而應(yīng)用于工業(yè)、電訊、數(shù)據(jù)處理、儀器儀表等多方面。電動(dòng)自行車?yán)锍瘫硎请妱?dòng)自行車的重要配件,在電動(dòng)自行車儀表中占重要位置,但幾十年來(lái)其發(fā)展變化并不大,現(xiàn)在國(guó)外很多車中使用了數(shù)字里程表,但在國(guó)內(nèi)還并不多見。課題背景里程表的原理很簡(jiǎn)單,因?yàn)槠囓囕喌闹睆揭阎?,車輪的圓周長(zhǎng)便是恒定不變的。由

6、此可以計(jì)算出每走一里路車輪要轉(zhuǎn)多少圈,這個(gè)數(shù)也是恒定不變的。因此只要能夠自動(dòng)把車輪的轉(zhuǎn)數(shù)積累下來(lái),然后除以每一里路對(duì)應(yīng)的轉(zhuǎn)數(shù)就可以得到行駛的里程了。這樣簡(jiǎn)單的原理古人就已經(jīng)發(fā)現(xiàn),并且開始使用了?!坝浝锕能嚒本褪沁@樣的裝置,它是利用上述原理,再加上巧妙的機(jī)構(gòu)使得車輪每轉(zhuǎn)一定圈數(shù)就自動(dòng)敲一下鼓,此時(shí)只要有專人把它記下了,就可以得到所走里程。此裝置十分巧妙無(wú)論白天、黑夜均可使用,而且盲人也可使用,體現(xiàn)出了我國(guó)古代勞動(dòng)人民的聰明才智。不過(guò),如果車上沒(méi)有人默記鼓聲數(shù)目的話,單靠記里鼓車本身還不能累計(jì)一共走了多少里。而且車停下來(lái)之后誰(shuí)也不知道這車曾經(jīng)走過(guò)多少里路,這是美中不足之處。從保護(hù)環(huán)境和經(jīng)濟(jì)條件許可

7、等因素綜合來(lái)看,電動(dòng)自行車目前乃至今后都有著廣闊的發(fā)展空間。目前市面上電動(dòng)自行車的速度表和里程表都是機(jī)械的,看起來(lái)不夠直觀與方便。如果能用LED直接顯示出來(lái)里程數(shù)或速度值,就可節(jié)省用戶的時(shí)間及精力處理自行車行進(jìn)過(guò)程中的突發(fā)事件。里程表的發(fā)展現(xiàn)在汽車上的里程表可就不一樣了,它克服了“記里鼓車”的不足之處,既能告訴你這次走了多少公里,也能記憶自從出廠以來(lái)一共走了多少公里,于是,車輛是否需要大修,發(fā)動(dòng)機(jī)比例關(guān)系是否應(yīng)該報(bào)廢,全都有記錄可依。汽車發(fā)動(dòng)機(jī)的軸把動(dòng)力傳給變速箱,從變速箱的輸出軸到車輪的傳動(dòng)比是不變的。在變速箱的輸出軸上裝有一根“軟軸”,一直通到駕駛員面前的里程表里去。所謂“軟軸”就是像自行

8、車線閘用的拉線那樣有鋼絲芯的螺旋管,管壁和內(nèi)芯之間有潤(rùn)滑油,外管固定而內(nèi)芯可以轉(zhuǎn)動(dòng),這個(gè)內(nèi)芯的轉(zhuǎn)速與車輪的轉(zhuǎn)速有著恒定的比例關(guān)系。軟軸通到車速表,使得指針能把車的行駛速度指示出來(lái)。同時(shí),軟軸旋轉(zhuǎn)還經(jīng)過(guò)蝸輪蝸桿傳到車速表中間的滾輪計(jì)數(shù)器上,把車輪的轉(zhuǎn)數(shù)所代表的里程數(shù)累計(jì)了下來(lái),因?yàn)檐囁俸屠锍潭际强客桓涊S傳來(lái)的旋轉(zhuǎn)動(dòng)作驅(qū)動(dòng)的,所以這兩個(gè)表在一起,前者用指針指示,后者由滾輪計(jì)數(shù)器累計(jì)。新型小汽車的里程表里包括由同一軟軸帶動(dòng)的兩個(gè)滾輪計(jì)數(shù)器,分別累計(jì)本次里程和總里程。本次里程通常有四位數(shù),供短期計(jì)數(shù),這是可以清零的;總里程則有六位數(shù),不能清零。本次里程的單獨(dú)指示和清零對(duì)于出租車的計(jì)費(fèi)十分不方便。最

9、近電子式車速里程表逐步推廣,它不用軟軸,而是在變速箱輸出軸上安裝脈沖發(fā)生器,用導(dǎo)線把電脈沖傳到儀表里,用脈沖頻率指示速度,用脈沖計(jì)數(shù)器累計(jì)里程。看起來(lái)電子式車速里程表比先前的機(jī)械電磁式的更合理,因?yàn)樗挥密涊S傳動(dòng)。但是因?yàn)闄C(jī)械電磁式的價(jià)格比較便宜,在目前汽車?yán)镉玫萌匀槐容^多。 汽車?yán)锍瘫碇饕譃闄C(jī)械式和電子式兩種,目前市場(chǎng)上的大部分新車型都采用電子式里程表,而配備機(jī)械式里程表的大都屬于較老車型,在二手車市場(chǎng)上比較多見,像老款的捷達(dá)、普桑和富康,這些熱銷車型都是機(jī)械式里程表?;卣{(diào)里程表其實(shí)很簡(jiǎn)單,尤其是機(jī)械式里程表,幾分鐘就可以了。而調(diào)整電子式里程表的成本較高,需要專門的設(shè)備?,F(xiàn)在市面上就有一種

10、專門針對(duì)電子式里程表的調(diào)表儀器。早期的機(jī)械軟軸的里程表幾乎已經(jīng)消失了,取而代之的是電子式的里程表和液晶顯示屏,過(guò)去可以通過(guò)撥數(shù)碼齒輪的方式調(diào)整里程表,現(xiàn)在這些方法都行不通,不過(guò)調(diào)表的需求并不隨調(diào)整難度的增加而減少,如賣車和新車的都需要減小里程數(shù)掩蓋車子真實(shí)行駛里程。公家車的司機(jī)又需要增加里程數(shù)。如果減小液晶表的公里數(shù)只能通過(guò)編程器調(diào)整存儲(chǔ)片數(shù)據(jù)來(lái)實(shí)現(xiàn),這需要專門的設(shè)備和知識(shí),普通人要調(diào)整的確不易。但如果要增加公里數(shù)實(shí)現(xiàn)起來(lái)就要容易很多了,我們只要給車速傳感器提供一個(gè)符合要求的信號(hào)就可以了。設(shè)計(jì)的主要內(nèi)容及技術(shù)指標(biāo)單片機(jī)軟件設(shè)計(jì)程序主要包括里程設(shè)計(jì)模塊;存儲(chǔ)歷史里程數(shù)據(jù)設(shè)計(jì)模塊;里程的顯示設(shè)計(jì)模

11、塊;里程公里數(shù)的累計(jì)設(shè)計(jì)模塊;里程公里數(shù)的清0設(shè)計(jì)模塊。里程計(jì)數(shù)時(shí)有一盞指示燈閃爍;用AT24C01進(jìn)行對(duì)歷史里程數(shù)據(jù)存儲(chǔ);用共陰7段動(dòng)態(tài)顯示的數(shù)碼管進(jìn)行顯示公里數(shù);用個(gè)開關(guān)實(shí)現(xiàn)對(duì)里程公里數(shù)的清0功能;用霍爾傳感器實(shí)現(xiàn)對(duì)里程車輪圈數(shù)的累計(jì)功能。主要技術(shù)指標(biāo):一. 完成里程的顯示功能二能存貯歷史里程數(shù)據(jù)三能夠清除歷史數(shù)據(jù)四有一盞指示燈第 2 章 硬件的設(shè)計(jì)單片機(jī)簡(jiǎn)介單片機(jī)是單片微型計(jì)算機(jī)(Singlc-Chip Microcomputer)的簡(jiǎn)稱。單片機(jī)是將中央處理器(CPU),程序存貯器(ROM或EPROM),隨機(jī)存貯器(RAM),定時(shí)器/計(jì)數(shù)器,并行及串行I/O口等電路集成在一塊芯片上做成的

12、計(jì)算機(jī)。單片機(jī)的典型結(jié)構(gòu)如圖2-1-1所示。定時(shí) 計(jì)數(shù)器時(shí)鐘CPU串行口并行口ROM RAM單片機(jī)的典型結(jié)構(gòu)(圖2-1-1)單片機(jī)與一般的非單片型微型機(jī)相比,具有以下特點(diǎn):具有較強(qiáng)的通用性又有相當(dāng)?shù)膶S眯?,尤其適合于各種控制系統(tǒng)。片內(nèi)帶有定時(shí)器/計(jì)數(shù)器。片內(nèi)設(shè)有多個(gè)I/O接口,便于系統(tǒng)擴(kuò)展及信息交換。使用匯編語(yǔ)言,指令系統(tǒng)的指令字節(jié)數(shù)較少,程序執(zhí)行速度快,節(jié)省存貯器。多品種,多系列。AT89系列單片機(jī)簡(jiǎn)介AT89系列單片機(jī)是以8051為內(nèi)核,結(jié)合自己的技術(shù)優(yōu)勢(shì)構(gòu)成的,所以它和8051是兼容的系列。因此,AT89系列對(duì)于以8051為基礎(chǔ)的應(yīng)用系統(tǒng)而言,是十分容易進(jìn)行取代和構(gòu)成的。而且對(duì)于熟悉80

13、51的用戶來(lái)說(shuō),選用AT89系列單片機(jī)進(jìn)行系統(tǒng)設(shè)計(jì)也是輕而易舉的。AT89系列單片機(jī)具有下列很明顯的優(yōu)點(diǎn):和AT8051接插相兼容AT89系列單片機(jī)的引腳和8051是一樣的,因此,當(dāng)選用AT89系列單片機(jī)取代8051時(shí),可以直接替換。這時(shí)不管是采用40引腳還是44引腳產(chǎn)品,只要選用相同的AT89系列單片機(jī)取代8051單片機(jī)即可。 以EEPROM電可檫除和Flash技術(shù)為主導(dǎo)的存儲(chǔ)器ATMEL公司把EEPROM和Flash技術(shù)巧妙相結(jié)合形成特殊的集成電路,從而使應(yīng)用領(lǐng)域擴(kuò)大。由于AT89系列內(nèi)部含有Flash存儲(chǔ)器,因此在系列的開發(fā)過(guò)程中可以十分容易地進(jìn)行程序的修改,從而大大縮短了系統(tǒng)的開發(fā)周期

14、。同時(shí),在系統(tǒng)的工作過(guò)程中,能有效地保存部分重要數(shù)據(jù),不受外界因素而遭到破壞(如電源故障等),這給便攜類產(chǎn)品的應(yīng)用提供了極大方便。含有EEPROM和Flash存儲(chǔ)器是AT產(chǎn)品的明顯特色之一。靜態(tài)時(shí)鐘方式AT89系列單片機(jī)采用靜態(tài)時(shí)鐘方式,可以節(jié)省電能。這對(duì)于降低便攜類產(chǎn)品的應(yīng)用提供了極大方便。含有EEPROM和Flash存儲(chǔ)器是AT產(chǎn)品的明顯特色之一。AT89C52系列單片機(jī)的介紹AT89C52是美國(guó)ATMEL公司生產(chǎn)的低電壓,高性能CMOS 8位單片機(jī),片內(nèi)含8K bytes 的可反復(fù)擦寫的只讀程序存儲(chǔ)器(PEROM)和256 bytes 的隨機(jī)存取數(shù)據(jù)存儲(chǔ)器(RAM),器件采用ATMEL公

15、司的高密度,非易失性存儲(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ù)雜控制應(yīng)用場(chǎng)合。主要性能參數(shù):1. 與MCS-51產(chǎn)品指令和引腳完全兼容2. 18K 字節(jié)可重擦寫Flash閃速存儲(chǔ)器3. 1000次擦寫周期4. 全靜態(tài)操作:0Hz-24MHz5. 三級(jí)加密程序存儲(chǔ)器6. 256*8字節(jié)內(nèi)部RAM7. 32個(gè)可編程I/O口線8. 3個(gè)16位定時(shí)/計(jì)數(shù)器9. 8個(gè)中斷源10.可編程串行UART通道11.低功耗空閑和掉電模式 功能特性概述: AT89C52提供以下標(biāo)準(zhǔn)功能:8K 字

16、節(jié)Flash閃速存儲(chǔ)器,256字節(jié)內(nèi)部RAM,32個(gè)I/O口線,3個(gè)16位定時(shí)/計(jì)數(shù)器,一個(gè)6向量?jī)杉?jí)中斷結(jié)構(gòu),一個(gè)全雙工串行通信口,片內(nèi)振蕩器及時(shí)鐘電路。同時(shí),AT89C52可降至0Hz的靜態(tài)邏輯操作,并支持兩種軟件可選的節(jié)電工作模式??臻e方式停止CPU的工作,但允許RAM,定時(shí)/計(jì)數(shù)器,串行通信口及中斷系統(tǒng)繼續(xù)工作。掉電方式保存RAM中的內(nèi)容,但振蕩器停止工作并禁止其它所有部件工作直到下一個(gè)硬件復(fù)位。引腳如圖3.3-1所示。振蕩器反相放大器如圖3.3-2所示。 圖3.3-1 XTAL1:振蕩器反相放大器的及內(nèi)部時(shí)鐘發(fā)生器的輸入端。 XTAL2:振蕩器反相放大器的輸出端。 XTAL2NCXT

17、AL1 外部振蕩信號(hào)輸入GND圖3.3-2中斷:AT89C52共有6個(gè)中斷向量:兩個(gè)外中斷(INT0和INT1),3個(gè)定時(shí)器中斷(定時(shí)器0,1,2)和串行口中斷。所有這些中斷源可通過(guò)分別設(shè)置專用寄存器IE的置位或清0來(lái)控制每一個(gè)中斷的允許或禁止。IE也有一個(gè)總禁止位EA,它能控制所有中斷的允許或禁止。AT89C52編程方法:在地址線上加上要編程單元的地址信號(hào)。在數(shù)據(jù)線上加上要寫入的數(shù)據(jù)字節(jié)。激活相應(yīng)的控制信號(hào)。在高電壓編程方式時(shí),將/Vpp端加上+12V編程電壓。每對(duì)Flash存儲(chǔ)陣列寫入一個(gè)字節(jié)或每寫入一個(gè)程序加密位,加入一個(gè) ALE/編程脈沖。每個(gè)字節(jié)寫入周期是自身定時(shí)的,通常約為1.5m

18、s。重復(fù)1-5步驟,改變編程單元的地址和寫入的數(shù)據(jù),直到全部文件編程結(jié)束。 AT89C52的極限參數(shù):工作溫度:-55 to +125 儲(chǔ)藏溫度:-65 to +150任一引腳對(duì)地電壓:-1.0V to +7.0V最高工作電壓:6.6V直流輸出電流:15.0mA里程表各部分電路介紹本次里程表的設(shè)計(jì),硬件電路主要由霍爾傳感器電路,里程指示電路,里程數(shù)據(jù)存儲(chǔ)電路,時(shí)鐘電路,LED顯示模塊及74LS07驅(qū)動(dòng)器構(gòu)成。霍爾傳感器電路霍爾傳感器電路圖如下圖3.4.1-1所示。圖3.4.1-1里程指示電路霍爾傳感器發(fā)出一個(gè)低電平脈沖,里程顯示時(shí)四個(gè)數(shù)碼管點(diǎn)亮后開始計(jì)數(shù),表明電動(dòng)自行車正在行駛中,一盞指示燈一

19、直閃爍著。電路如圖3.4.2-1所示。圖3.4.2-1里程數(shù)據(jù)存儲(chǔ)電路里程數(shù)據(jù)的存儲(chǔ)電路是本次設(shè)計(jì)的關(guān)鍵電路,單片機(jī)首先向AT24C01發(fā)送寫信號(hào),當(dāng)確認(rèn)后從單片機(jī)內(nèi)部的數(shù)據(jù)儲(chǔ)存單元提取數(shù)據(jù)然后向AT24C01的內(nèi)部地址傳送數(shù)據(jù)。當(dāng)顯示里程時(shí),單片機(jī)首先向AT24C01發(fā)送讀信號(hào),然后確認(rèn)后,單片機(jī)從AT24C01內(nèi)部的地址向單片機(jī)的讀出單元字節(jié)讀出數(shù)據(jù),供顯示所用。因此,最終可保證掉電時(shí)數(shù)據(jù)不丟失。IC總線的的介紹:IC總線是雙線串行總線。IC總線采用二線傳輸,即SDA串行數(shù)據(jù)線和SCL串行時(shí)鐘線。總線和器件之間的數(shù)據(jù)傳送均由SDA數(shù)據(jù)線完成。一個(gè)IC總線系統(tǒng)里的所有外圍器件均采用器件地址和

20、引腳地址的編址方式。系統(tǒng)中主CPU對(duì)任何節(jié)點(diǎn)的尋址沒(méi)有采用傳統(tǒng)的片選線方式,而是采用純軟件的尋址方式。為了能使總線上的所有節(jié)點(diǎn)器件輸出實(shí)現(xiàn)“線”與邏輯功能,IC器件輸出端必須是漏極或集電極開路結(jié)構(gòu),即SDA和SCL接口線上必須加上拉電阻。里程數(shù)據(jù)存儲(chǔ)電路,如圖3.4.3-1: 圖3.4.3-1時(shí)鐘電路 圖3.4.4-1 在圖3.4.4-1的電路中,電容器C1和C2對(duì)振蕩頻率有微調(diào)作用,通常的范圍:3010PF;石英晶體選擇6MHZ或12MHZ都可以。其結(jié)果只是機(jī)器周期時(shí)間不同,影響計(jì)數(shù)器的計(jì)數(shù)初值。LED顯示模塊電路及74 LS07驅(qū)動(dòng)器 LED顯示器采用動(dòng)態(tài)顯示,用74LS07驅(qū)動(dòng)共陰極LE

21、D數(shù)碼管。LED顯示模塊電路圖,如圖3.4.5-1所示。LED數(shù)碼管結(jié)構(gòu)圖,如圖(a),(b)為共陰極型,(c)為共陽(yáng)極型。 圖3.4.5-1圖3.4.5-2OC門驅(qū)動(dòng)器用7407,7407 即TTL 集電極開路六正相高壓驅(qū)動(dòng)器.當(dāng)7407輸出低電平時(shí),沒(méi)有電流流過(guò)LED,當(dāng)7407輸出為開路狀態(tài)時(shí),電流經(jīng)100限流電阻流入LED顯示器,每個(gè)七段LED的公共端都接一個(gè)7407驅(qū)動(dòng)器。7407: 圖3.4.5-3 7407引腳如圖: 第 3 章 軟件的設(shè)計(jì)系統(tǒng)的總體設(shè)計(jì)一個(gè)完整的單片機(jī)系統(tǒng),包括軟硬件兩個(gè)方面。硬件是系統(tǒng)可靠運(yùn)行的“載體”,是基礎(chǔ),而軟件則是使“載體”產(chǎn)生動(dòng)力的發(fā)電機(jī),二者相輔相

22、成,缺一不可。從設(shè)計(jì)者的角度出發(fā),一個(gè)硬件電路的設(shè)計(jì)過(guò)程往往就是設(shè)計(jì)者的經(jīng)驗(yàn)不斷積累的過(guò)程。總體設(shè)計(jì)流程:在設(shè)計(jì)硬件電路時(shí):一般的流程是:(1) 器件選擇(包括單片機(jī)和外圍芯片的選擇)(2) 電路圖繪制(3) PCB制板(4) 硬件檢查和排錯(cuò)(5) 硬件電路調(diào)試完畢只有在硬件平臺(tái)建立之后才能更好進(jìn)入軟件系統(tǒng)的調(diào)試。在進(jìn)行軟件系統(tǒng)的設(shè)計(jì)時(shí),設(shè)計(jì)者首先要建立完整,總體的概念,一個(gè)完整的軟件系統(tǒng)是由各個(gè)功能模塊組成的。程序設(shè)計(jì)者要時(shí)刻牢記如何將那些獨(dú)立,分散的子程序模塊通過(guò)主程序連接起來(lái),并最終實(shí)現(xiàn)系統(tǒng)的目標(biāo)功能。單片機(jī)應(yīng)用軟件設(shè)計(jì)應(yīng)用軟件應(yīng)在硬件電路的支持下能可靠地實(shí)現(xiàn)應(yīng)用系統(tǒng)的各種功能。它應(yīng)具有

23、下列特點(diǎn):(1) 結(jié)構(gòu)清晰,簡(jiǎn)捷,流程合理。(2) 各功能程序模塊化,子程序化,既便于調(diào)試,鏈接,也便于移植,修改。(3) 程序存儲(chǔ)區(qū),數(shù)據(jù)存儲(chǔ)區(qū)規(guī)劃合理,既節(jié)約內(nèi)存容量,又便于操作。(4) 各功能程序的運(yùn)行狀態(tài),運(yùn)行結(jié)果以及運(yùn)行要求盡量設(shè)置狀態(tài)標(biāo)志,以便查詢,控制與程序判轉(zhuǎn)。(5) 調(diào)試修改后,還應(yīng)規(guī)范化,以利于交流,借鑒,為模塊化,標(biāo)準(zhǔn)化打下基礎(chǔ)。(6) 做好抗干擾設(shè)計(jì),這是計(jì)算機(jī)應(yīng)用系統(tǒng)提高可靠性的有力措施。(7) 設(shè)置自診斷程序,系統(tǒng)工作前先運(yùn)行自診斷程序,檢查系統(tǒng)各特征狀態(tài)參數(shù)是否正常,以提高運(yùn)行的可靠性。開發(fā)步驟:(1) 確定任務(wù):a) 確定系統(tǒng)的功能,指標(biāo),成本 b) 完成期限(

24、2) 總體設(shè)計(jì):a) 調(diào)研 b) 機(jī)型選擇 c) 軟硬件任務(wù)劃分 I. 硬件開發(fā) 一繪出線路圖 二選購(gòu)元器件 三組裝 四調(diào)試硬件 II. 軟件開發(fā)一建立數(shù)學(xué)模型,確定算法,安排數(shù)據(jù)結(jié)構(gòu)二設(shè)計(jì),編制各子程序模塊三各子程序進(jìn)行調(diào)試四各子程序連接起來(lái)調(diào)試(3) 樣機(jī)聯(lián)調(diào): a) 軟,硬件結(jié)合起來(lái)調(diào)試 b) 找出錯(cuò)誤,修改軟,硬件 c) 實(shí)時(shí)仿真,直至滿足設(shè)計(jì)要求(4) 產(chǎn)品定型: a) 形成工藝 b) 編寫技術(shù)文件中斷控制和的中斷請(qǐng)求信號(hào)由外部產(chǎn)生并輸入,稱外部中斷,其余的中斷請(qǐng)求信號(hào)均由主機(jī)內(nèi)部產(chǎn)生,故稱為內(nèi)部中斷。本次里程表的設(shè)計(jì)只用到外部中斷:外部中斷0請(qǐng)求中斷輸入端口(P3.2引腳),低電平

25、或負(fù)跳變(從高到低)有效。中斷屏蔽: AT89C52的中斷均屬可屏蔽中斷,即通過(guò)軟件對(duì)特殊功能寄存器IE的設(shè)置,實(shí)現(xiàn)對(duì)各中斷源的中斷請(qǐng)求開放(允許)或屏蔽(禁止)的控制。中斷響應(yīng)的過(guò)程:AT89C52的指令系統(tǒng)中設(shè)有兩條返回指令:RET和RETI。調(diào)用子程序中應(yīng)選用RET返回指令,中斷服務(wù)程序中應(yīng)選用RETI返回指令,如采用的是RET返回指令,雖然也能使中斷服務(wù)程序返回原斷點(diǎn)處繼續(xù)往下執(zhí)行原程序,但它不會(huì)告知中斷控制系統(tǒng),現(xiàn)行中斷服務(wù)程序已執(zhí)行完畢,致使中斷控制系統(tǒng)誤認(rèn)為仍在執(zhí)行中斷服務(wù)程序而屏蔽新的中斷請(qǐng)求。因此,中斷服務(wù)程序的返回必須用RETI指令,而不能用RET返回指令代替。中斷響應(yīng)時(shí)間

26、:從中斷源發(fā)生中斷請(qǐng)求到主機(jī)響應(yīng)中斷,轉(zhuǎn)去執(zhí)行中斷服務(wù)程序需要3-8個(gè)機(jī)器周期。外部中斷0矢量地址:0003H。I/O口的控制方式在單片機(jī)中,為了實(shí)現(xiàn)數(shù)據(jù)的輸入輸出傳送,通常使用三種控制方式。即:無(wú)條件傳送方式,查詢方式和中斷方式。無(wú)條件傳送方式適用于以下器件或設(shè)備的輸入輸出:例如,機(jī)械或電子開關(guān),指示燈,發(fā)光二極管,數(shù)碼管等。它們隨時(shí)處于“準(zhǔn)備好”狀態(tài)方便數(shù)據(jù)的傳輸。查詢方式:為了實(shí)現(xiàn)查詢方式的數(shù)據(jù)輸入輸出傳送,需要由接口電路提供部,器件或設(shè)備的狀態(tài),并以軟件方法進(jìn)行狀態(tài)測(cè)試。因此,這是一種軟,硬件方法結(jié)合的數(shù)據(jù)傳送方式。程序查詢流程如圖4.4-1所示。讀入狀態(tài)信息 N準(zhǔn)備好了嗎?數(shù)據(jù)傳送

27、Y圖4.4-1中斷方式: 中斷方式與查詢方式的主要區(qū)別在于如何知道,器件或外設(shè)是否為數(shù)據(jù)傳輸作好了準(zhǔn)備。查詢方式是主機(jī)主動(dòng)查詢。而中斷方式則為部,器件或外設(shè)主動(dòng)請(qǐng)求。采用中斷方式進(jìn)行數(shù)據(jù)傳輸時(shí),當(dāng)部,器件或外設(shè)為數(shù)據(jù)傳輸已作好準(zhǔn)備之后,就向主機(jī)發(fā)出中斷請(qǐng)求(相當(dāng)于通知主機(jī)),主機(jī)在接收到中斷請(qǐng)求之后,在允許中斷的情況下,響應(yīng)中斷請(qǐng)求,暫停正在執(zhí)行的原程序,轉(zhuǎn)而去為部,器件或外設(shè)的數(shù)據(jù)提供傳輸服務(wù)。待服務(wù)完成之后,程序返回,主機(jī)再?gòu)臄帱c(diǎn)處繼續(xù)執(zhí)行原程序。里程表的軟件設(shè)計(jì)總體設(shè)計(jì)思路將各英寸的電動(dòng)自行車輪胎車軸內(nèi)置一個(gè)小車輪,設(shè)小車輪周長(zhǎng)約為150毫米(直徑為47.7毫米),以10毫米為單位分15

28、等份,即15個(gè)脈沖,小車輪的轉(zhuǎn)動(dòng),方便大車輪的周長(zhǎng)計(jì)算,更便于行駛公里數(shù)的計(jì)算,就不需要將圈數(shù)轉(zhuǎn)換成公里數(shù),避開了除法算法,降低了軟件程序的復(fù)雜度。假設(shè)小車輪周長(zhǎng)約為150毫米(直徑為47.7毫米),不是毫無(wú)根據(jù)的。由22英寸到28英寸電動(dòng)自行車的規(guī)格見下表4.5.1-1所示。大車輪與小車輪的模擬圖如圖4.5.1-2所示。 規(guī)格(英寸)直徑(毫米)周長(zhǎng)(毫米)22558.81752 24609.61912 26660.42072 28771.22233大車輪 小車輪 最小的電動(dòng)自行車尺寸的車輪周長(zhǎng)為1752毫米,小車輪的周長(zhǎng)要略小于大車輪的周長(zhǎng),假設(shè)為1500毫米,在將其值縮小10倍,因此得到

29、小車輪的周長(zhǎng)值。主程序流程圖如圖4.5.1-3所示。 初始化 讀AT24C01判內(nèi)部數(shù)據(jù)處理P1和P3規(guī)定作為電平拉高輸入口開總中斷和外部中斷,設(shè)堆棧指針SP開P0和P2口按下P1.1接的開關(guān)按下P3.6接的開關(guān)END 判內(nèi)部數(shù)據(jù)處理:AT24C01出廠時(shí)原有數(shù)據(jù)BM單元是否為0FFH,等于0FFH時(shí),BM單元清0,寫到AT24C01中,不等于時(shí)再次判斷AT24C01出廠時(shí)原有數(shù)據(jù)KM單元是否為0FFH,等于0FFH時(shí),KM單元清0, 寫到AT24C01中,以此類推,判斷到BKM單元為止。當(dāng)AT24C01出廠時(shí)原有數(shù)據(jù)BKM單元不為0FFH,調(diào)用顯示處理子程序。按下P3.6接的開關(guān):調(diào)用計(jì)數(shù)處

30、理子程序,計(jì)數(shù)時(shí)P1.0口接的指示燈會(huì)閃爍點(diǎn)亮。BMM, M,SM,BM,KM,SKM,BKM單元加處理時(shí),判斷是否到10進(jìn)1,BMM,M,SM單元每加一次都不需要存人AT24C01和顯示,BM加處理后儲(chǔ)存AT24C01,并顯示。按下P1.1接的開關(guān):調(diào)用清除數(shù)據(jù)子程序。里程的設(shè)計(jì)里程數(shù)據(jù)存放單元見如下表4.5.2-1所示。 BKMSKMKMBMSMMBMMSMMMM50H55H54H53H52H51H56H因?yàn)殡妱?dòng)自行車?yán)锍瘫淼挠布O(shè)計(jì)里程的顯示部分是采用四個(gè)共陰極的數(shù)碼管,所以只能顯示BM(0.1公里),KM(公里),SKM(十公里),BKM(百公里)。但設(shè)計(jì)時(shí)從BMM(分米)開始置存放單

31、元并顯示,每按一下P3.6開關(guān),存放單元數(shù)據(jù)進(jìn)行累加一,而BMM(分米),M(米),SM(十米)置存儲(chǔ)單元,雖然沒(méi)顯示但騎電動(dòng)自行車時(shí)BMM(分米),M(米),SM(十米)累加的。因此BMM(分米),M(米),SM(十米)加處理后不存儲(chǔ)AT24C01,而BM(0.1公里),KM(公里),SKM(十公里),BKM(百公里)加處理后存儲(chǔ)AT24C01后再在數(shù)碼管上顯示。存貯歷史里程數(shù)據(jù)的設(shè)計(jì)存貯歷史里程數(shù)據(jù)要用到IC總線,IC (InterIntegrated Circuit)總線是一種由PHILIPS公司開發(fā)的兩線式串行總線,用于連接微控制器及其外圍設(shè)備。IC總線產(chǎn)生于在80年代,最初為音頻和視

32、頻設(shè)備開發(fā),如今主要在服務(wù)器管理中使用,其中包括單個(gè)組件狀態(tài)的通信。IC總線協(xié)議定義如下: 只有在總線非忙時(shí)才被允許進(jìn)行數(shù)據(jù)傳送。 在數(shù)據(jù)傳送時(shí),當(dāng)時(shí)鐘線為高電平時(shí),數(shù)據(jù)線必須為固定狀態(tài),不允許有跳變;當(dāng)時(shí)鐘線為高電平時(shí),數(shù)據(jù)線的任何電平變化將被當(dāng)作總線的啟動(dòng)或停止條件。IC總線的數(shù)據(jù)傳輸和器件尋址:1總線數(shù)據(jù)傳送的起始和停止標(biāo)志 IC總線每一次數(shù)據(jù)傳送,都由主器件發(fā)送起始信號(hào)開始,發(fā)送停止信號(hào)結(jié)束,當(dāng)SCL時(shí)鐘線為高電平,SDA數(shù)據(jù)線出現(xiàn)高電平向低電平的下降沿信號(hào)時(shí)即為總線的起始信號(hào);相反,當(dāng)SDA數(shù)據(jù)線出現(xiàn)由低電平向高電平的上升沿信號(hào)時(shí)即為總線的停止信號(hào)。2. IC總線上的數(shù)據(jù)傳輸格式主C

33、PU發(fā)生起始信號(hào)表明一次數(shù)據(jù)傳送的開始,其后為尋址字節(jié),尋址字節(jié)由高7位地址和1位方向位組成,方向位表明CPU與從器件之間的數(shù)據(jù)傳送方向,當(dāng)該位為“0” 時(shí)表明CPU對(duì)從器件進(jìn)行寫操作,為“1”時(shí)是讀操作。尋址字節(jié)后是按指定地址讀,寫操作的數(shù)據(jù)字節(jié)與應(yīng)答位。主CPU發(fā)出尋址信號(hào)后,地址與自己相符的從器件便會(huì)產(chǎn)生一個(gè)應(yīng)答信號(hào)。數(shù)據(jù)字節(jié)的后面也跟隨一個(gè)應(yīng)答信號(hào),應(yīng)答信號(hào)在第9個(gè)時(shí)鐘位上出現(xiàn)。3本設(shè)計(jì)常用IC總線芯片的器件和引腳地址。見表4.5.3-1所示。 型號(hào) 種類 器件地址 引腳地址AT24C01 EEPROM 1010 A2A1A0AT24C01是美國(guó)ATMEL公司生產(chǎn)的串行EEPROM芯片

34、,容量分別為1288位,主要特性如下: 具有頁(yè)寫功能,AT24C01為4B; 可擦寫次數(shù)100000次; 數(shù)據(jù)保存周期為100年; 8引腳DIP或SOIC封裝。AT24C01的引腳排列,接口電路圖如如圖2.3.2-1所示,說(shuō)明如下: A0,A1,A2為器件地址選擇線; SDA為串行數(shù)據(jù)線; SCL為串行時(shí)鐘線; WP(EN)為寫保護(hù)端(當(dāng)該端口為高電平時(shí),不可對(duì)存儲(chǔ)器寫操作); Vcc為正電壓1.8-5.5V; Vss為地。IC總線基本操作:IC規(guī)程運(yùn)用主/從雙向通訊。器件發(fā)送數(shù)據(jù)到總線上,則定義為發(fā)送器,器件接收數(shù)據(jù)則定義為接收器。主器件和從器件(本文為AT24C01)都可以工作于接收和發(fā)送

35、狀態(tài)。 總線必須由主器件(通常為微控制器CPU)控制,主器件產(chǎn)生串行時(shí)鐘(SCL)控制總線的傳輸方向,并產(chǎn)生起始和停止條件。SDA線上的數(shù)據(jù)狀態(tài)僅在 SCL為低電平的期間才能改變,SCL為高電平的期間,SDA狀態(tài)的改變被用來(lái)表示起始和停止條件。AT24C系列串行PROM具有IC總線接口功能,功耗小,寬電源電壓(根據(jù)不同型號(hào)2.5V6.0V),工作電流約為3mA,靜態(tài)電流隨電源電壓不同為30A110A。AT24C系列PROM接口及地址選擇:由于IC總線可掛接多個(gè)串行接口器件,在IC總線中每個(gè)器件應(yīng)有唯一的器件地址,按IC總線規(guī)則,器件地址為7位數(shù)據(jù)(即一個(gè)IC總線系統(tǒng)中理 論上可掛接128個(gè)不同

36、地址的器件),它和1位數(shù)據(jù)方向位構(gòu)成一個(gè)器件尋址字節(jié),最低位D0為方向位(讀/寫)。器件尋址字節(jié)中的最高4位(D7D4) 為器件型號(hào)地址,不同的IC總線接口器件的型號(hào)地址是廠家給定的,如AT24C系列PROM的型號(hào)地址皆為1010,器件地址中的低3位為引腳地址 A2A1A0,對(duì)應(yīng)器件尋址字節(jié)中的D3、D2、D1位,在硬件設(shè)計(jì)時(shí)由連接的引腳電平給定。AT24C系列PROM讀寫操作軟件實(shí)現(xiàn)方法: 對(duì)AT24C系列PROM的讀寫操作完全遵守I2C總線的主收從發(fā)和主發(fā)從收的規(guī)則。AT24C01的寫操作: 寫操作分為字節(jié)寫和頁(yè)面寫兩種操作,對(duì)于頁(yè)面寫根據(jù)芯片的一次裝載的字節(jié)不同有所不同。關(guān)于頁(yè)面寫的地址

37、、應(yīng)答和數(shù)據(jù)傳送的時(shí)序連續(xù)寫操作是對(duì)E2PROM連續(xù)裝載n個(gè)字節(jié)數(shù)據(jù)的寫入操作,n隨型號(hào)不同而不同,一次可裝載字節(jié)數(shù)也不同。AT24C01/02 8字節(jié)/每頁(yè)。AT24C01的讀操作: 讀操作有三種基本操作:當(dāng)前地址讀、隨機(jī)讀和順序讀。應(yīng)當(dāng)注意的是:最后一個(gè)讀操作的第9個(gè)時(shí)鐘周期不是“不關(guān)心”。為了結(jié)束讀操作,主機(jī)必須在第9個(gè)周期間發(fā)出停止條件或者在第9個(gè)時(shí)鐘周期內(nèi)保持SDA為高電平、然后發(fā)出停止條件。 連續(xù)讀操作時(shí)為了指定首地址,需要兩個(gè)偽字節(jié)寫來(lái)給定器件地址和片內(nèi)地址,重復(fù)一次啟動(dòng)信號(hào)和器件地址(讀),就可讀出該地址的數(shù)據(jù)。由于偽字節(jié)寫中并未執(zhí)行寫操作,地址沒(méi)有加1。以后每讀取一個(gè)字節(jié),地

38、址自動(dòng)加1。 在讀操作中接收器接收到最后一個(gè)數(shù)據(jù)字節(jié)后不返回肯定應(yīng)答(保持SDA高電平)隨后發(fā)停止信號(hào)。IC總線共有9個(gè)歸一化子程序組成,分別是:1. 啟動(dòng)信號(hào)子程序2. 終止信號(hào)子程序發(fā)送應(yīng)答位(A)子程序發(fā)送應(yīng)答非位()子程序檢查應(yīng)答位子程序發(fā)送單字節(jié)子程序接收單字節(jié)子程序發(fā)送N字節(jié)子程序接收N字節(jié)子程序標(biāo)記符號(hào)的定義: VSDA: IC總線數(shù)據(jù)線;VSCL:IC總線時(shí)鐘線;SLA:發(fā)送/接收尋址字節(jié)內(nèi)RAM存儲(chǔ)單元;NUMB:發(fā)送/接收數(shù)據(jù)字節(jié)數(shù)N內(nèi)RAM存儲(chǔ)單元;MTD:發(fā)送數(shù)據(jù)內(nèi)RAM存儲(chǔ)區(qū)首地址;MRD:接收數(shù)據(jù)內(nèi)RAM存儲(chǔ)區(qū)首地址;由于EPROM的半導(dǎo)體工藝特性,對(duì)EPROM的寫

39、入時(shí)間需要5-10ms,但AT24C01串行EPROM芯片內(nèi)部設(shè)置了一個(gè)具有SRAM性質(zhì)的輸入緩沖器,稱為頁(yè)寫緩沖器。CPU對(duì)該芯片寫操作時(shí),AT24C01芯片先將CPU輸入的數(shù)據(jù)暫存頁(yè)寫緩沖器內(nèi),然后慢慢寫入EPROM中。因此,CPU對(duì)AT24C01的EPROM一次寫入的數(shù)據(jù),受到該芯片頁(yè)寫緩沖器容量的限制。頁(yè)寫緩沖器的容量:AT24C01為8B.若CPU需寫入超過(guò)芯片頁(yè)寫緩沖器容量或超過(guò)頁(yè)寫緩沖器頁(yè)內(nèi)最大地址的數(shù)據(jù),應(yīng)在一頁(yè)寫完后,隔5-10ms重新啟動(dòng)一次寫操作。保存數(shù)據(jù)子程序:WTDA:MOV A,#01H MOV R0,BM LCALL WT24 ACALL DEL MOV A,#0

40、2H MOV R0,KM LCALL WT24 ACALL DEL MOV A,#03H MOV R0,SKM LCALL WT24 ACALL DEL MOV A,#04H MOV R0,BKM LCALL WT24 RET所示:?jiǎn)?dòng)信號(hào)STAR發(fā)送數(shù)據(jù)發(fā)送尋址字節(jié)應(yīng)答將AT24C01分別讀入到BM,KM,SKM,BKM單元中 N應(yīng)答否?Y終 止 位的傳輸: SDA 線上的數(shù)據(jù)必須在時(shí)鐘的高電平周期保持穩(wěn)定數(shù)據(jù)線的高或低電平狀態(tài)只有在SCL 線的時(shí)鐘信號(hào)是低電平時(shí)才能改變。WRBYT: ;寫單字節(jié) MOV R1,#08HWLP: RLC A JC WR1AJMP WR0 ;跳入寫0WLP1:

41、 DJNZ R1,WLP RETWR1: ;寫1 SETB SDA SETB SCL NOP NOP NOP NOP CLR SCL CLR SDA AJMP WLP1WR0: ;寫0 CLR SDA SETB SCL NOP NOP NOP NOP CLR SCL AJMP WLP1RDBYT: ;讀單字節(jié) MOV R1,#08HRLP: SETB SDA SETB SCL MOV A,P1 JNB ACC.7,RD0 ;轉(zhuǎn)讀0AJMP RD1 ;轉(zhuǎn)讀1RLP1: DJNZ R1,RLP ;8位全接收完畢,轉(zhuǎn)退出 RETRD0: CLR C MOV A,R2 RLC A MOV R2,A C

42、LR SCL AJMP RLP1RD1: SETB C MOV A,R2 RLC A MOV R2,A CLR SCL AJMP RLP1 END開始信號(hào): SCL為高電平時(shí),SDA由高電平向低電平跳變,開始傳送數(shù)據(jù)。開始信號(hào)程序:STAR: CLR SDA LCALL DEL SETB SDA LCALL DEL SETB SCL CLR SDA LCALL DELCLR SCL RET結(jié)束信號(hào): SCL為高電平時(shí),SDA由低電平向高電平跳變,結(jié)束傳送數(shù)據(jù)。結(jié)束信號(hào)程序:STOP: CLR SDA LCALL DEL SETB SCL LCALL DEL SETB SDA RET應(yīng)答信號(hào):

43、接收數(shù)據(jù)的IC在接收到8bit數(shù)據(jù)后,向發(fā)送數(shù)據(jù)的IC發(fā)出特定的低電平脈沖,表示已收到數(shù)據(jù)。CPU向受控單元發(fā)出一個(gè)信號(hào)后,等待受控單元發(fā)出一個(gè)應(yīng)答信號(hào),CPU接收到應(yīng)答信號(hào)后,根據(jù)實(shí)際情況作出是否繼續(xù)傳遞信號(hào)的判斷。若未收到應(yīng)答信號(hào),由判斷為受控單元出現(xiàn)故障。應(yīng)答信號(hào)程序:MACK: ;發(fā)應(yīng)答位 CLR SDA SETB SCL NOP NOP NOP NOP CLR SCL ETB SDA RETMNACK: ;發(fā)非應(yīng)答位SETB SDA SETB SCL NOP NOP NOP NOP CLR SCL CLR SDA RET里程的顯示設(shè)計(jì)用兩片74LS07分別驅(qū)動(dòng)LED數(shù)碼管(共陰型動(dòng)態(tài)

44、顯示)和數(shù)碼管的小數(shù)點(diǎn)。 用一個(gè)開關(guān),用于開電動(dòng)自行車時(shí)里程的計(jì)數(shù),并點(diǎn)亮一個(gè)指示燈。這個(gè)開關(guān)在觸點(diǎn)抖動(dòng)期間檢測(cè)按鍵的通與斷狀態(tài),可能導(dǎo)致判斷出錯(cuò),即按鍵一次按下或釋放被錯(cuò)誤地認(rèn)為是多次操作,這種情況是不允許出現(xiàn)的。為了克服按鍵觸點(diǎn)機(jī)械抖動(dòng)所致的檢測(cè)誤判,必須采取去抖動(dòng)措施。這一點(diǎn)可從硬件、軟件兩方面予以考慮。在鍵數(shù)較少時(shí),可采用硬件去抖,而當(dāng)鍵數(shù)較多時(shí),采用軟件去抖。本設(shè)計(jì)采用軟件用延時(shí)消抖動(dòng)。編制按鍵程序:一個(gè)完善的按鍵控制程序應(yīng)具備以下功能:(1) 檢測(cè)有無(wú)按鍵按下,并采取硬件或軟件措施,消除按鍵機(jī)械觸點(diǎn)抖動(dòng)的影響。(2) 有可靠的邏輯處理辦法。每次只處理一個(gè)按鍵,其間對(duì)任何按鍵的操作對(duì)

45、系統(tǒng)不產(chǎn)生影響,且無(wú)論一次按鍵時(shí)間有多長(zhǎng),系統(tǒng)僅執(zhí)行一次按鍵功能程序。 (3) 準(zhǔn)確輸出按鍵值(或鍵號(hào)),以滿足跳轉(zhuǎn)指令要求。按鍵觸點(diǎn)的抖動(dòng)如圖所示: 具體工作如下:當(dāng)鍵盤無(wú)鍵按下時(shí),與門各輸入端均為高電平,保持輸出端為高電平;當(dāng)有鍵按下時(shí),端為低電平,向CPU申請(qǐng)中斷,若CPU開放外部中斷,則會(huì)響應(yīng)中斷請(qǐng)求,轉(zhuǎn)去執(zhí)行鍵盤掃描子程序。顯示處理子程序:XSCL: MOV A,BM MOV DPTR,#TAB MOVC A,A+DPTR MOV BMD,A MOV A,KM MOV DPTR,#TAB MOVC A,A+DPTR MOV KMD,A MOV A,SKM MOV DPTR,#TAB

46、MOVC A,A+DPTR MOV SKMD,A MOV A,BKM MOV DPTR,#TAB MOVC A,A+DPTRMOV BKMD,A RET本設(shè)計(jì)采用共陰極LED顯示器,LED顯示器采用發(fā)光二極管顯示字段。單片機(jī)系統(tǒng)中經(jīng)常采用的是7段顯示器,即LED顯示器中有8個(gè)發(fā)光二極管,代表“a.b.c.d.e.f.g.”7個(gè)字段和一個(gè)全小數(shù)點(diǎn)“dp”。共陰極LED顯示器的發(fā)光二極管負(fù)極接地,當(dāng)發(fā)光二極管的正極為高電平時(shí),發(fā)光二極管被點(diǎn)亮。使用LED顯示器時(shí),工作電流一般為5-10mA/段,當(dāng)LED處于全亮狀態(tài)時(shí),工作電流約為40-80mA左右,通常將控制LED顯示字符的8位數(shù)據(jù)稱之為段選碼。

47、如表為共陰和共陽(yáng)LED數(shù)碼管幾種八段編碼表。表 共陰和共陽(yáng)LED數(shù)碼管幾種八段編碼表顯示數(shù)字共陰順序小數(shù)點(diǎn)暗共陰逆序小數(shù)點(diǎn)暗共陽(yáng)順序小數(shù)點(diǎn)亮共陽(yáng)逆序小數(shù)點(diǎn)亮Dp g f e d c b a16進(jìn)制a b c d e f g Dp16進(jìn)制00 0 1 1 1 1 1 1 3FH1 1 1 1 1 1 0 0FCH40HC0H10 0 0 0 0 1 1 006H0 1 1 0 0 0 0 0 60H79HF9H20 1 0 1 1 0 1 15BH1 1 0 1 1 0 1 0DAH24HA4H30 1 0 0 1 1 1 14FH1 1 1 1 0 0 1 0F2H30HB0H40 1 1 0

48、 0 1 1 066H0 1 1 0 0 1 1 066H19H99H50 1 1 0 1 1 0 16DH1 0 1 1 0 1 1 0B6H12H92H60 1 1 1 1 1 0 17DH1 0 1 1 1 1 1 0BEH02H82H70 0 0 0 0 1 1 107H1 1 1 0 0 0 0 0E0H78HF8H80 1 1 1 1 1 1 17FH1 1 1 1 1 1 1 0FEH00H80H90 1 1 0 1 1 1 16FH1 1 1 1 0 1 1 0F6H10H90H動(dòng)態(tài)顯示相關(guān)概念:所謂動(dòng)態(tài)顯示,實(shí)質(zhì)上就是各個(gè)不同的LED顯示器按照一定的順序輪流顯示。它利用了人眼

49、的“視覺(jué)暫留現(xiàn)象”,只要多個(gè)LED顯示器的選通掃描速率足夠快,人眼就觀察不到數(shù)碼管的閃爍現(xiàn)象。動(dòng)態(tài)掃描方式的所有LED段選線并聯(lián)在一起,只由一個(gè)位的I/O口控制,而各個(gè)LED的位選線則由另一組I/O口控制。動(dòng)態(tài)LED顯示方式的優(yōu)點(diǎn)是功耗較低,占用CPU的I/O口線少,外圍接口簡(jiǎn)單,但程序編制較之靜態(tài)顯示方式則略顯復(fù)雜。在單片機(jī)與LED顯示器的接口電路中,要使LED數(shù)碼管正常發(fā)光,顯示器驅(qū)動(dòng)芯片也很關(guān)鍵。本次設(shè)計(jì)采用7407來(lái)驅(qū)動(dòng)LED顯示器。LED顯示需注意的幾個(gè)問(wèn)題:采用動(dòng)態(tài)顯示方式編寫軟件時(shí),應(yīng)選擇合適的延時(shí)周期。如時(shí)間選擇不合適, LED將會(huì)不停閃爍,這時(shí)可適當(dāng)調(diào)整延時(shí)常數(shù)即可解決問(wèn)題。

50、采用動(dòng)態(tài)掃描方式的LED顯示電路占用較少的硬件資源,但有時(shí)卻過(guò)多地占 用了CPU的資源,如應(yīng)用系統(tǒng)不允許,可在設(shè)計(jì)電路中采用靜態(tài)顯示方式,以減少軟件的編寫難度。所示:Y按鍵閉合否?N點(diǎn)亮指示燈關(guān) P2.0延時(shí)消抖動(dòng)延 時(shí)顯 示BMD單元內(nèi)容放入P0開 P2.0開P2.3延 時(shí)BKMD單元內(nèi)容放入P0關(guān)P2.3關(guān) P2.1KMD單元內(nèi)容放入P0開P2.2延 時(shí)SKMD單元內(nèi)容放入P0開 P2.1里程公里數(shù)的累計(jì)功能設(shè)計(jì)小車輪周長(zhǎng)設(shè)定為150毫米,分15等份,即15個(gè)脈沖,每個(gè)脈沖10毫米為單位,對(duì)電動(dòng)自行車的周長(zhǎng)進(jìn)行測(cè)量,到100毫米(到10個(gè)脈沖),則BMM單元加1,當(dāng)100個(gè)脈沖到來(lái)時(shí),M單

51、元加1,以此類推,即可點(diǎn)亮數(shù)碼管(BM,KM,SKM,BKM單元的內(nèi)容)。加一數(shù)據(jù)處理子程序:JCL:CLR P1.0 MOV A,BMM INC A CJNE A,#0AH,BMMJ AJMP MJ1BMMJ:MOV BMM,A AJMP GOON MJ1:MOV BMM,#00H MOV A,M INC A CJNE A,#0AH,MJ AJMP SMJ MJ:MOV M,A AJMP GOON SMJ:MOV M,#00H MOV A,SM INC A CJNE A,#0AH,SMJ1 AJMP BMJSMJ1:MOV SM,A AJMP GOON BMJ:MOV SM,#00H MOV

52、 A,BM INC A CJNE A,#0AH,BMJ1 AJMP KMJBMJ1:MOV BM,A中斷0的流程圖如圖4.5.5-1所示:中斷 加一數(shù)據(jù)處理子程序N脈沖是否到來(lái)? Y 調(diào)用顯示處理子程序?qū)慉T24C01中斷示意圖如圖-2所示:現(xiàn)行程序中斷服務(wù)程序中斷斷點(diǎn)繼續(xù)執(zhí)行 里程累計(jì)功能各分支流程圖:流程圖4.5.5-3;流程圖4.5.5-4;流程圖4.5.5-5;所示。將BMM單元內(nèi)容放入A 判M單元內(nèi)容A(M)加1M單元內(nèi)容放入ABMM單元內(nèi)容清0YN滅指示燈顯示數(shù)據(jù)A單元內(nèi)容放入BMM單元BMM單元內(nèi)容是否到10A(BMM)加1M單元內(nèi)容是否到10N判BM單元內(nèi)容SM單元清0A(BM

53、)加1BM單元內(nèi)容放入ASM單元內(nèi)容是否到10顯示數(shù)據(jù)A單元放入MYSM單元內(nèi)容放入AA(SM)加1M單元清0NA單元放入SMY顯示數(shù)據(jù) N顯示數(shù)據(jù)A單元放入KMY判SKM單元內(nèi)容A(SKM)加1SKM單元內(nèi)容放入AKM單元清0NKM單元內(nèi)容是否到10顯示數(shù)據(jù)A單元放入BMA(KM)加1KM單元放入ABM單元清0YBM單元內(nèi)容是否到10 顯示數(shù)據(jù)儲(chǔ)存24C01NA單元放入BKMY顯示數(shù)據(jù)A單元放入SKMNYBMM,M,SM,BM,KM,SKM,BKM,BMD,KMD,SKMD,BKMD清0BKM單元內(nèi)容是否到10A(BKM)加1SKM單元清0BKM單元放入ASKM單元內(nèi)容是否到10 第 4 章

54、 軟件調(diào)試程序的檢測(cè)與調(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í)行過(guò)程是否符合原設(shè)計(jì)要求??芍苯硬槌鲥e(cuò)誤所在。宏單步可執(zhí)行一段程序,如一步就可執(zhí)行完整個(gè)循環(huán)程序段。(2)斷點(diǎn)設(shè)置全速運(yùn)行可在程序有疑慮的地方設(shè)置斷點(diǎn),從設(shè)置的起始地址開始,以全速或非全速方式向設(shè)定的斷點(diǎn)處運(yùn)行。如果這段程序無(wú)語(yǔ)法或邏輯上的錯(cuò)誤,則連續(xù)運(yùn)行到設(shè)置的斷點(diǎn)處停止運(yùn)行,返回監(jiān)控狀態(tài)。如果有錯(cuò)誤,則在錯(cuò)誤處停止運(yùn)行,如果

55、進(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),通過(guò)匯編自動(dòng)進(jìn)行變換和調(diào)整,偏移量等均可自動(dòng)換算和填入。程序的運(yùn)行。自動(dòng)生成目標(biāo)代碼和固化。2源程序的檢測(cè)在源程序進(jìn)行調(diào)試之前,硬件系統(tǒng)必須基本正確,重點(diǎn)對(duì)源程序進(jìn)行檢測(cè)。(1)對(duì)照程序流程圖,先對(duì)相對(duì)獨(dú)立的功能模塊,子程序,中斷服務(wù)程序等進(jìn)行仔細(xì)地檢查,然后對(duì)整個(gè)主程序按其功能劃分成若干程序段進(jìn)行分段檢查,逐步擴(kuò)大到整個(gè)程序系統(tǒng)。檢查時(shí)重點(diǎn)檢查程序的邏輯功能,結(jié)構(gòu)和算法,有關(guān)參量和初始

56、值是否完善,正確,關(guān)鍵性指令的選擇是否合理,特別是借助開發(fā)系統(tǒng)也較難調(diào)試正確的隱患,只有通過(guò)細(xì)心的檢查加以排除。(2)硬件系統(tǒng)檢查。 硬件系統(tǒng)必須排除電源短路和碰線故障,然后空板(沒(méi)有插上芯片等器件)進(jìn)行上電檢查各電源點(diǎn)是否正確,有關(guān)邏輯電平及信號(hào)是否正確。確認(rèn)無(wú)誤之后逐次插上芯片等器件,借助開發(fā)系統(tǒng)可檢查出是否有硬件故障。一旦有故障時(shí),開發(fā)系統(tǒng)的監(jiān)控程序?qū)⒊霈F(xiàn)不能正常工作的現(xiàn)象。故可采用此法排除硬件系統(tǒng)的一般性故障。有些故障只有通過(guò)軟件調(diào)試才能排除,有時(shí)還需通過(guò)軟件調(diào)試修改硬件設(shè)計(jì)。3源程序的調(diào)試源程序的調(diào)試一般可分為分調(diào),聯(lián)調(diào)和考機(jī)3步進(jìn)行。(1)分調(diào)首先將基本獨(dú)立的子程序調(diào)試正確,符合原

57、設(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)的問(wèn)題進(jìn)行仔細(xì)地分析,合理推測(cè),借助開發(fā)系統(tǒng)的調(diào)試手段,逐步縮小疑點(diǎn)范圍,直至找出問(wè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)試。(3)考機(jī)4.2 單片機(jī)開發(fā)工具開發(fā)工具應(yīng)具以下主要作用:(1)

58、系統(tǒng)硬件電路的診斷;(2)程序的輸入與修改;(3)除連續(xù)運(yùn)行程序外,具單步運(yùn)行,設(shè)斷點(diǎn)運(yùn)行和狀態(tài)查詢等功能;(4)能將程序固化到EPROM芯片上去。開發(fā)工具應(yīng)具備: (1)交叉匯編功能。 (2)EPROM編程器。 (3)仿真功能。A) CPU仿真。B) EPROM仿真。通用機(jī)開發(fā)系統(tǒng)如圖5.2-1所示:EPROM寫入插座通用計(jì)算機(jī)系統(tǒng)用戶系統(tǒng)仿真頭 開發(fā)模板 圖5.2-1仿真系統(tǒng)硬件:a) 仿真系統(tǒng)硬件是一種大規(guī)模在線可編程芯片,將整個(gè)單片機(jī)仿真控制電路集成在芯片中;仿真CPU則外置在仿真頭上,通過(guò)更換不同的仿真頭,可對(duì)各種單片機(jī)進(jìn)行仿真。b) 8位/16位兼容,可仿真8位及16位單片機(jī)。c)

59、 采用硬件斷點(diǎn)技術(shù),不占用單片機(jī)任何資源。d) 采用串行口與計(jì)算機(jī)通信,波特率自動(dòng)設(shè)置,最高可達(dá)38400。e) 可配接邏輯分析儀,能實(shí)現(xiàn)復(fù)雜的組合斷點(diǎn)和觀察邏輯波形及分析時(shí)序關(guān)系。仿真系統(tǒng)硬件安裝示意圖5.2-2所示:用戶板仿真頭34芯仿真電纜仿真系統(tǒng)9芯串行口電纜接至計(jì)算機(jī)串行口單5V電源紅正 黑負(fù)串行口及電源電纜 圖5.2-2LCA51仿真過(guò)程1打開LCA51界面,在文件中新建,輸入程序后保存。 2打開編譯對(duì)話框,如圖5.3-1所示;編譯當(dāng)前文件,加載對(duì)話框如圖5.3-2。 圖5.3-1 圖5.3-2 若要把編寫的程序燒到AT89C52芯片中,過(guò)程如下:打開設(shè)置選擇仿真機(jī),打開仿真機(jī)的對(duì)

60、話框后,打開通訊口對(duì)話框,設(shè)置如下。設(shè)置對(duì)話框如圖5.3-3,圖5.3-4所示。圖5.3-3圖5.3-4在工具欄中選擇芯片固化,如圖5.3-5所示。圖5.3-5之后進(jìn)行一系列的操作。硬件、軟件仿真調(diào)試本系統(tǒng)的軟件系統(tǒng)全部采用C51來(lái)編寫,由于一般的仿真器對(duì)C51的支持有一定的缺陷,軟件調(diào)試比較復(fù)雜。除了語(yǔ)法差錯(cuò)外,當(dāng)確認(rèn)程序沒(méi)問(wèn)題時(shí),通過(guò)直接把程序燒到單片機(jī)來(lái)調(diào)試。即單獨(dú)調(diào)試好每一個(gè)模塊,然后再連接成一個(gè)完整的系統(tǒng)調(diào)試。 硬件連線的步驟: 1.連好電腦主機(jī)的9針串口聯(lián)機(jī)線,連好電腦主機(jī)的USB線(短線)和仿真器的USB線(長(zhǎng)線)。 2.仿真器工作時(shí)需要的電源電流不大于150MA時(shí),均不需外接電

溫馨提示

  • 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫(kù)網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。

最新文檔

評(píng)論

0/150

提交評(píng)論