基于單片機的電子式轉(zhuǎn)速里程表的設(shè)計 介紹一種新型的基于單片機的電子式汽車轉(zhuǎn)速里程表的實現(xiàn)方案。討論了里程計數(shù)的原理和轉(zhuǎn)速指示原理。針對機械式里程表缺點結(jié)構(gòu)復(fù)雜,精度不高,并且價格較昂貴,設(shè)計了數(shù)字式汽車轉(zhuǎn)速里程表。這里以AT89C2051單片機為核心,利用SPI串行總線開發(fā)了電子式里程表。該里程表利用磁電式傳感器采樣汽車行駛所得到的信號;采用LCD數(shù)碼管顯示汽車總行駛里程數(shù),本次里程采EEPROM 芯片X25045,利用其通電可改寫,掉電信息可保存的特點存儲汽車行駛的總里程數(shù)。本設(shè)計的轉(zhuǎn)速里程表具有結(jié)構(gòu)簡單,精度較高,誤差較小,顯示清楚醒目,穩(wěn)定可靠等特點,另外對該系統(tǒng)的軟件也作了相應(yīng)的說明。 關(guān)鍵詞: 汽車; 轉(zhuǎn)速里程表 單片機 Single Chip Microcomputer Controll ing Displaying of Automobile Odometer Abstract : This article mainly introduces a new -type electric automobile odometer. Its core is 2051 single chip microcom2 puter ; L ED digital tube is used to display the total and present running distance. Comparing with the mechanical automo2 bile odometer , it has following features : higher accuracy and less error , and it also can be displayed more clearly and pro2 duced with simpler technology. 目 錄 摘要…………………………………………………………………………………… Abstract……………………………………………………………………………… 第一章:緒論………………………………………………………………………… 1.1研究的目的與意義……………………………………………………………… 1.2 國內(nèi)外研究概況及發(fā)展趨勢…………………………………………………… 第二章:系統(tǒng)的總體設(shè)計…………………………………………………………… 2.1系統(tǒng)的總體結(jié)構(gòu)…………………………………………………………………… 2.2.轉(zhuǎn)速里程表的介紹……………………………………………………………… 2. 3轉(zhuǎn)速里程表的工作原理………………………………………………………… 第三章:系統(tǒng)的硬件設(shè)計…………………………………………………………… 3.1.系統(tǒng)CPU的選擇………………………………………………………………… 3.2輔助芯片的選取………………………………………………………………… 3.3LM1819在轉(zhuǎn)速里程表中的應(yīng)用………………………………………………… 3.3. 1電動里程表結(jié)構(gòu)……………………………………………………………… 3.3.2LM1819驅(qū)動線路工作原理………………………………………………… 3..4液晶顯示器LCM1010的應(yīng)用…………………………………………………… 3.5傳感器的選擇……………………………………………………………………… 第四章系統(tǒng)的軟件設(shè)計……………………………………………………………… 4.1主程序模塊………………………………………………………………………… 4.2串行中斷服務(wù)程序模塊…………………………………………………………… 第五章印制板圖的繪制……………………………………………………………… 結(jié)束語……………………………………………………………………………… 附錄…………………………………………………………………………………… 參考文獻(xiàn)…………………………………………………………………………… 致謝…………………………………………………………………………………… 第一章:緒論 1.1研究的目的與意義 自1886年發(fā)明汽車以來,汽車走過了100多年的發(fā)展歷程。汽車的出現(xiàn)和發(fā)展,使汽車儀表也在不斷開發(fā)和發(fā)展之中。隨著光學(xué)、電子技術(shù)的迅速發(fā)展,特別是計算機技術(shù)在汽車儀表中的廣泛應(yīng)用,汽車儀表正向數(shù)字化和智能化方向展。汽車儀表的發(fā)展趨勢,從一個側(cè)面反映出汽車電子化水平的快速提高。 傳統(tǒng)的汽車轉(zhuǎn)速里程表的功能有兩個,一是用指針指示汽車行駛的瞬時車速,二是用機械計數(shù)器記錄汽車行駛的累計里程。現(xiàn)代汽車正向高速化方向發(fā)展,隨著車速的提高,用軟軸驅(qū)動的傳統(tǒng)車速里程表受到前所未有的挑戰(zhàn)。這是因為軟軸在高速旋轉(zhuǎn)時,由于受鋼絲交變應(yīng)力極限的限制而容易斷裂,同時,軟軸布置過長會出現(xiàn)形變過大或運動遲滯等現(xiàn)象,而且,對于不同的車型,轉(zhuǎn)速里程表的安裝位置也會受到軟軸長度及彎曲度的限制。凡此種種,使得基于非接觸式轉(zhuǎn)速傳感器的電子式轉(zhuǎn)速里程表得以迅速發(fā)展。 1.2國內(nèi)外研究概況及發(fā)展趨勢 為了充分了解汽車儀表發(fā)展現(xiàn)狀,準(zhǔn)確地把握其未來發(fā)展趨勢,有必要對其發(fā)展過程作一簡單回顧。按汽車儀表在工作原理上取得的重大技術(shù)創(chuàng)新來分,可以劃分為4個階段,或稱為經(jīng)過4代。第1代汽車儀表是基于機械作用力而工作的機械式儀表,人們習(xí)慣稱這類儀表為機械機心表;第2代汽車儀表的工作原理基于電測原理,即通過各類傳感器將被測的非電量變換成電信號加以測量,通常稱這類儀表為電氣式儀表;第3代為模擬電路電子式;第4代為數(shù)字汽車儀表。 1 現(xiàn)代汽車儀表的現(xiàn)狀 汽車儀表正在經(jīng)歷由第3代向第4代轉(zhuǎn)型時期。第3代汽車用儀表工作原理與電氣式儀表基本相同,只不過是用電子器件取代原來的電氣器件。其出現(xiàn)的時間大致在20世紀(jì)50~60年代,隨著集成電路技術(shù)突飛猛進(jìn)的發(fā)展,這種儀表現(xiàn)在均采用各種專用集成電路(為汽車儀表專門設(shè)計的集成電路),國內(nèi)汽車儀表目前的主流產(chǎn)品就是這種儀表,經(jīng)過20多年的發(fā)展,其結(jié)構(gòu)形式經(jīng)歷了動圈式機心(線圈連同指針一起轉(zhuǎn)動)和動磁式機心(磁鋼連同指針一起轉(zhuǎn)動)2個基本階段。電子器件經(jīng)歷了分立器件和專用集成電路2個階段。在整個發(fā)展過程中,國內(nèi)外工程技術(shù)人員一直從未停止對其進(jìn)行改進(jìn)。如圍繞降低成本,不斷改進(jìn)制作工藝,機械零件起初以金屬件為主,發(fā)展到今天以塑料件為主;圍繞提高指示精度和指針平穩(wěn)性,由動圈式發(fā)展成動磁式等。雖然,每次較大改進(jìn)后整體性能價格比都有所提高,但受其工作原理的限制,其線性、精度、重復(fù)性、響應(yīng)速度等性能指標(biāo)難以有根本的突破。 嚴(yán)格地說,第4代全數(shù)字式汽車儀表從其應(yīng)用的技術(shù)手段上看,還是電子技術(shù)范疇,也屬于電子式儀表,但信號處理方式已從模擬變成數(shù)字。僅憑信號處理方式的改變還不足以將全數(shù)字式汽車儀表劃分成一個新階段,其最顯著的特征是工作原理與第3代汽車儀表完全不同。如果一個產(chǎn)品在工作原理上有創(chuàng)新和突破,則其設(shè)計思路、組成形式、功能和性能的改變將是根本性的。鑒于此,將全數(shù)字式汽車儀表暫且列入第4代。關(guān)于全數(shù)字式汽車儀表早在20世紀(jì)80年代就已經(jīng)被提出,最初為“數(shù)字顯示”形式的汽車儀表。雖然該儀表的工作方式是全數(shù)字式,技術(shù)水平和儀表的性能遠(yuǎn)遠(yuǎn)超過了第3代汽車儀表,但其致命的缺點是只能顯示一組孤立的數(shù)字,沒有動感,在被測物理量(如車速、發(fā)動機轉(zhuǎn)速)發(fā)生變化時,只有數(shù)字翻動,而沒有指示上升、下降直觀感,再加上讀數(shù)時間比較長,容易分散駕駛員的注意力等,這種形式的汽車儀表很難被駕駛員接受,因而國內(nèi)外都沒有普及與推廣。為了克服上述不足,后來出現(xiàn)了采用光點、光條或光帶模擬動態(tài)顯示被測物理量形式的全數(shù)字汽車儀表,顯示器件主要有LED、LCD和電致發(fā)光材料等。由于受到成本的限制,目前光顯示汽車儀表只能選用字段顯示方式的顯示屏,無法選用顯示分辨率更高的點陣式顯示屏。因此,其視覺效果和顯示精度還不能令人滿意。 隨著電子技術(shù)的發(fā)展,特別是單片機性能的提高,主要表現(xiàn)在抗強電磁干擾、工作溫度范圍和對工作電源穩(wěn)定性要求等方面的改善,再加上價格的大幅度降低,目前有條件在汽車儀表上使用單片機控制的全數(shù)字儀表。雖然全數(shù)字式汽車儀表曾經(jīng)出現(xiàn)多種款式,但業(yè)內(nèi)人士和專家一致看好“基于單片機的數(shù)字式汽車儀表”。它是針對目前廣泛使用的模擬電子式汽車儀表機心存在多方面不足,在其工作原理上作出技術(shù)創(chuàng)新,即徹底放棄了“動磁式”或“動圈式”模擬電子式汽車儀表,通過線包與磁鋼間產(chǎn)生電磁轉(zhuǎn)矩驅(qū)動指針工作的形式。該汽車儀表由傳感器完成各種被測物理量的采集,經(jīng)過換算后直接送入單片機,再由驅(qū)動器驅(qū)動指針,在刻度盤上指示被測物理量,同時輔以被測物理量LCD數(shù)字顯示。該汽車儀表在指示方式上仍然保留了第3代儀表指示直觀、有動感、符合駕駛員習(xí)慣等特點,而且批量生產(chǎn)的成本有望低于同等功能的模擬電子式汽車儀表,更可貴的是在工作原理上的創(chuàng)新和突破,帶來了技術(shù)性能質(zhì)的提高。 2 汽車儀表的發(fā)展趨勢 繼全數(shù)字式汽車儀表后,未來汽車儀表應(yīng)向何方向發(fā)展呢?雖然具體過程不清楚,但總的趨勢還是比較明朗的,那就是充分應(yīng)用光技術(shù)和機、電一體化技術(shù),并突出現(xiàn)代信息技術(shù)和網(wǎng)絡(luò)技術(shù)的應(yīng)用,其功能將極大拓寬,指示形式將演變成計算機終端顯示器。雖然人們對未來汽車儀表作出種種預(yù)測,并賦予它遠(yuǎn)遠(yuǎn)超出現(xiàn)在汽車儀表多得多的功能。個人認(rèn)為僅從技術(shù)本身的角度出發(fā),就目前技術(shù)條件而言,實現(xiàn)這些功能并沒有什么問題,制約新技術(shù)在汽車儀表上應(yīng)用的主要因素是制造成本。因為汽車儀表是一個量大、對成本極為敏感的產(chǎn)品,在其改進(jìn)和創(chuàng)新的過程中,不僅要考慮技術(shù)的可行性、功能的拓寬、性能的改善、使用的可靠性等,更重要的是其制造成本。脫離制造成本談汽車儀表,那只能是概念性的汽車儀表。在有關(guān)技術(shù)使用費用,特別是其依賴硬件成本進(jìn)一步降低的前提下,汽車儀表未來可能發(fā)展趨勢如下。 1 從近期來看,未來汽車儀表的功能將不局限于現(xiàn)在的車速、里程、發(fā)動機轉(zhuǎn)速、油量、水溫、方向燈指示,可能增添如下功能。 (1) 能指示安全系統(tǒng)運行狀態(tài),如輪胎氣壓、制動裝置、安全氣囊、安全帶等。這些信號傳輸形式,將不再是簡單的開關(guān)接通和斷開直流信號,而是包含反映這些安全裝置工作狀態(tài)較多信息的調(diào)制信號,供單片機讀取,以便單片機能準(zhǔn)確地綜合判斷這些安全裝置的工作狀態(tài),并給出故障顯示提醒駕駛員,或指導(dǎo)維修人員排除故障,也就是說帶基于單片機的汽車儀表將有一定水平的智能化。 (2) 將防盜系統(tǒng)納入汽車儀表單片機的監(jiān)管下,如車門、后行李箱等處防盜鎖指紋識別開啟系統(tǒng),防撬振動報警裝置,防盜點火起動裝置等。 2 隨著顯示器件,如液晶顯示器件的性能,特別是工作溫度范圍的拓寬,在價格進(jìn)一步降低的前提下,汽車儀表的功能將被極大地拓寬,形式將發(fā)生根本改變,外觀上就是一個高清晰度的計算機顯示器。 3 電光學(xué)技術(shù)將在汽車儀表上得到廣泛應(yīng)用。 (1) 顯示和內(nèi)照明器件不再用白熾燈泡,而是選用高效冷光源發(fā)光器件,如LCD、LED、電致發(fā)光器件等。導(dǎo)光系統(tǒng)更多體現(xiàn)出光學(xué)領(lǐng)域的新技術(shù),如儀表面板顏色可變等滿足個性化要求設(shè)計等。 (2) CCD攝像后視系統(tǒng),現(xiàn)在的后視光學(xué)反光鏡有可能被取消,而改用電子攝像顯示后視系統(tǒng),駕駛員的視野范圍將更寬。 4 自動導(dǎo)航和定位系統(tǒng)可能也是未來汽車儀表上不可缺少的部分,包括全球衛(wèi)星定位系統(tǒng)和電子地圖等。 5 具備完善的通訊系統(tǒng),將來汽車上的計算機系統(tǒng)會與公共互連網(wǎng)相連,以便充分共享信息資源,處理通訊作業(yè)將是汽車儀表計算機系統(tǒng)工作內(nèi)容的一部分。 6 汽車儀表的計算機系統(tǒng)具備對娛樂、空調(diào)等舒適性設(shè)備進(jìn)行監(jiān)管的功能, 可以自動控制這些設(shè)備或支持駕駛員遠(yuǎn)程操縱。以上在基于當(dāng)今成熟技術(shù)的基礎(chǔ)上,對未來汽車儀表的發(fā)展方向做些簡單設(shè)想。也許,未來汽車儀表的發(fā)展將遠(yuǎn)遠(yuǎn)超出我們今天的想象。 在當(dāng)今世界范圍內(nèi),汽車儀表正處于技術(shù)更新的轉(zhuǎn)型期。為此,業(yè)內(nèi)人士和專家對此都給予極大關(guān)注。什么樣的儀表是今后汽車儀表的主流產(chǎn)品,什么技術(shù)是今后汽車儀表的主導(dǎo)技術(shù),對于這些問題業(yè)內(nèi)人士的看法可能不盡相同,但有一點是肯定的,帶有基于單片機的數(shù)字技術(shù)在汽車儀表上的廣泛應(yīng)用,將是汽車表發(fā)展的必然。原因主要有4點: 1 儀表的功能由軟件和硬件共同實現(xiàn),而且主要是通過軟件實現(xiàn)。這對于量大且對成本極為敏感的汽車儀表有特殊意義,因為軟件的開發(fā)費用分?jǐn)偟矫總儀表上是非常少的。 2 與僅由電子線路硬件組成的汽車儀表相比,帶有基于單片機的汽車儀表,其功能的實現(xiàn)手段更加靈活多樣。 3 產(chǎn)品的“柔性”更好,即在推出新款產(chǎn)品時,能最大限度地利用以前產(chǎn)品的硬、軟件設(shè)計成果,僅做少量修改便可,這在產(chǎn)品更新?lián)Q代很快的今天和未來特別重要。 4 隨著汽車電子化水平的提高,必須要求汽車儀表與汽車上其它裝置交換數(shù)據(jù),即要求接入到汽車的計算機系統(tǒng)總線上。 第二章 系統(tǒng)的總體設(shè)計 2.1 系統(tǒng)的總體結(jié)構(gòu) 本系統(tǒng)以單片機AT89C205為核心,由液晶顯示、WATCHDOG及復(fù)位電路等部分組成。單片機采用美國ATME公司生產(chǎn)的AT89C2051單片機。該芯片不僅具M(jìn)CS-51系列單片機的所有特性,而且片內(nèi)集成2K字節(jié)的電擦除閃爍存儲器(Flash EPROM)。其價格低,引腳少(20腳),是目前性能價格比較高的單片機芯片之一。它為很多嵌入式控制應(yīng)用提供了一個高度靈活的有效的解決方案。AT89C2051的工作頻率為12/24 MHz,本系統(tǒng)利用單片機的內(nèi)部振蕩器外加石英晶體構(gòu)成時鐘源,為了工作可靠,晶體振蕩頻率選為12MHz。顯示驅(qū)動電路為簡化硬件設(shè)計,減少使用系統(tǒng)I/O口,節(jié)約系統(tǒng)硬件資源的基礎(chǔ)上,顯示部分由驅(qū)動器LM1819驅(qū)動雙線圈汽車轉(zhuǎn)速表頭顯示轉(zhuǎn)速,通過單片機編程液晶顯示模塊LCM1010顯示累計里程和本次里程. 2.2 轉(zhuǎn)速里程表的介紹 單片機自從推出以來,以其超小型化、結(jié)構(gòu)緊湊、可靠性高、成本低等優(yōu)點被人們廣泛接受,從而應(yīng)用于工業(yè)、電訊、數(shù)據(jù)處理、儀器儀表等多方面。汽車?yán)锍瘫硎瞧嚨闹匾浼谄噧x表中占重要位置。這里講述的是一種以2051單片機為核心,10位LCD作為顯示器,再加上其掉電信息不丟失,并且數(shù)據(jù)可方便改寫,利用此特性在其中存放汽車總里程數(shù)據(jù). 2.3轉(zhuǎn)速里程表的工作原理 1里程計數(shù)實現(xiàn)原理 1 霍爾傳感器輸出的脈沖信號是傳感器轉(zhuǎn)輪旋轉(zhuǎn)時磁場使舌簧管分開閉合而產(chǎn)生的脈沖。每一個脈沖代表行駛了一定的距離,設(shè)汽車行駛1km時驅(qū)動輪轉(zhuǎn)數(shù)為N,霍爾傳感器轉(zhuǎn)數(shù)為NF則NF=N×I其中I為傳動比。設(shè)輪胎外徑為D,則汽車行駛1km驅(qū)動輪轉(zhuǎn)數(shù)為N = 1 000/ Πd,實際中由于輪胎承載變形使得輪胎外徑D變化,此時NXI = 1 000/ πμD,其中μ為變形系數(shù),一般為0.93~ 0。96磁電式傳感器在汽車行駛1km時轉(zhuǎn)數(shù)N F = (1 000/ πμD)I,傳感器轉(zhuǎn)輪勻安排m個磁片時,汽車行駛1 km ,傳感器輸出脈沖為mNF個。 2 序中以INT1的輸入為里程計數(shù)脈沖,2051斷1置為高中斷優(yōu)先級以保證計數(shù)準(zhǔn)確。定時器T0置為低中斷優(yōu)先級,T0每10ms中斷1次,中斷1次送1位顯示。每行駛1km向5045中寫1次數(shù)據(jù)。 3 以60H~62H單元為計數(shù)脈沖暫存單元。68H、69H單元為判斷數(shù)據(jù)暫存單元,6CH中為本次里程小數(shù)點位數(shù)值。當(dāng)6CH單元內(nèi)容達(dá)到0AH時清零。70~72H單元為讀出的總里程數(shù)。 2速測量實現(xiàn)原理 車速指示可采用雙線圈汽車轉(zhuǎn)速表頭,它由空氣軸表芯和驅(qū)動電路組成,空氣軸表芯通常由三部分組成:磁鐵、與轉(zhuǎn)軸相連的指針和兩個互成九十度的線圈。轉(zhuǎn)軸是表芯唯一的可動部件,磁鐵的轉(zhuǎn)角總是趨向于兩個線圈的磁場強度矢量的合成方向,磁場強度正比于加在線圈上的電壓,因此,通過改變電壓的極性和幅度,可在理論上使轉(zhuǎn)軸組件在0~360度范圍內(nèi)轉(zhuǎn)動。 顯然,只要能按一定的規(guī)律驅(qū)動兩個線圈,就可以使指針偏轉(zhuǎn)位置與輸入量成線性關(guān)系,即滿足下列公式: θ= KVin 其中θ為指針偏轉(zhuǎn)角,單位為度;K為轉(zhuǎn)角常數(shù),單位為度/V ;Vin是輸入電壓,單位為V。 每個線圈的磁場強度矢量之和必須跟隨偏轉(zhuǎn)角θ。考慮到轉(zhuǎn)軸組件總是指向Hsine和Hcosine這兩個正交矢量之和的方向,則其方向可由下式求得: θ= arctan Hsine / Hcosine 并由此可以得出: θ= arctan sinθ/cosθ 由上述公式可見,當(dāng)Hsine按θ的正弦函數(shù)變化,而Hcosine按θ的余弦數(shù)變化時,所得到的總磁場強度的方向與θ角的方向相同,由于轉(zhuǎn)軸組件與磁場強度矢量和的方向相同,因此,指針將始終指向θ角的方向。 file:///C:\Users\junjie\AppData\Local\Temp\ksohtml\wps5D1B.tmp.png 圖1.1 LM1819內(nèi)部組成原理圖 圖1 所示是LM1819驅(qū)動器的內(nèi)部組成原理框圖,它由電荷泵、整形器、函數(shù)發(fā)生器等組成,輸入的轉(zhuǎn)速信號通過內(nèi)部的三極管緩沖后,輸入到電荷泵即可進(jìn)行F/V頻率電壓轉(zhuǎn)換,兩個輸出端按輸入量的正弦和余弦函數(shù)變化,2腳和12腳的最小驅(qū)動能力為±20mA(±4V),線圈的公共端接到1腳可為內(nèi)部函數(shù)發(fā)生器提供反饋信號,同時為5.1V齊納二極管提供參考電壓。在該電路中,K=54°/V ,輸入Vin實際上是4腳和8腳的電位差,8腳既是諾頓放大器的輸出,又是函數(shù)發(fā)生器的輸入,一般4 腳的電壓是2.1V,所以有: θ= K(V8 -Vref) = 54(V8 -2. 1) 由于V8是在2.1V~7.1V的范圍內(nèi)變化的,故LM1819可以驅(qū)動十字表頭以使其在0°~270°范圍內(nèi)轉(zhuǎn)動。 當(dāng)然也可以通過軟件來實現(xiàn): 時速表的編程思想如下:里程表程序中,每計數(shù)1次,汽車行駛0.001 602 564 1 km ,T0每10ms中斷1次,送顯示,其中斷100次時間為1s,計算這1s計數(shù)次數(shù),乘3 600再乘0. 001 602 564 1 即可求出時速.公式為:時速= 次數(shù)×5.7692.此算法可精確到0.001位.然后將求得的時速送顯示。 時速表顯示以P1.1及外接按鍵來控制,P1.1腳為高電平,P3.0為低電平時顯示汽車時速.此時速表可顯示到小數(shù)點后2位,精度較傳統(tǒng)汽車時速表提高2個數(shù)量級。(具體程序本設(shè)計就不在獒述) 第三章 系統(tǒng)的硬件設(shè)計 本系統(tǒng)以單片機AT89C2051為核心,由液晶顯示、WATCHDOG及復(fù)位電路等部分組成。 1單片機 單片機采用美國ATMEL公司生產(chǎn)的AT89C2051單片機。該芯片不僅具有MCS51系列單片機的所有特性,而且片內(nèi)集成有2 K字節(jié)的電擦除閃爍存儲器(Flash EPROM)。其價格低,引腳少(20 腳),是目前性能價格比較高的單片機芯片之一。它為很多嵌入式控制應(yīng)用提供了一個高度靈活的有效的解決方案。 AT89C2051的工作頻率為12/24 MHz ,本系統(tǒng)利用單片機的內(nèi)部振蕩器外加石英晶體構(gòu)成時鐘源,為了工作可靠,晶體振蕩頻率選為12 MHz。 2顯示驅(qū)動電路 顯示驅(qū)動電路為簡化硬件設(shè)計,減少使用系統(tǒng)I/O口,節(jié)約系統(tǒng)硬件資源的基礎(chǔ)上,顯示部分由驅(qū)動器LM1819驅(qū)動雙線圈汽車轉(zhuǎn)速表頭顯示轉(zhuǎn)速。里程顯示選用LCM1010串行控制業(yè)經(jīng)顯示模塊,它具有以下獨特特點: (1) 它只有3個輸入端: CS、LOAD、CLK,接線簡單, 工作可靠。 (2) 被動顯示: 液晶顯示器本身不發(fā)光而是靠調(diào)制外界光進(jìn)行顯示,也就是說,它不象發(fā)光的主動型器件那樣,靠發(fā)光刺激人眼而實現(xiàn)顯示,而是單純依靠對光的不同反射呈現(xiàn)的對比度達(dá)到顯示的目的。符合人的視覺習(xí)慣,不容易引起疲勞,而且外界光亮度越強,其顯示內(nèi)容越清晰。特別適用于室外和強光直射的場合。 (3) 低電壓功耗: 極低的工作電壓, 只有3~5V, 工作電流則只有幾個μA/(cm)2,可以和大規(guī)模集成電路直接匹配。 (4) 液晶顯示器采用平板式結(jié)構(gòu),由兩片玻璃組成夾層盒,目前都將液晶顯示器件制作成液晶顯示模塊(LCM),使用方便。 本顯示器分為兩組: 第一組為6位,用以顯示總行駛里程數(shù),最大顯示值為: 999999 km;第二組為4位,用以顯示本次行駛里程數(shù),最大顯示值為: 999.9 km 3 WATCHDOG及復(fù)位電路 本電路直接選用Xicor公司的X25045芯片。它把3種常用的功能: 看門狗定時器,電壓監(jiān)控和EEPROM組合在單個封裝之內(nèi),這種組合降低了系統(tǒng)成本并減少了對電路板空間的要求。另外X25045與CPU的連接方式也是采用模擬串行外設(shè)接口(SPI),因此也節(jié)約了系統(tǒng)的口資源。該電路由3個信號構(gòu)成: 定時脈沖提供定時器時鐘信號源、清除信號復(fù)位定時器、RESET 信號產(chǎn)生復(fù)位系統(tǒng)。在工作時, 假定工作軟件循環(huán)周期為T ,如果設(shè)定定時器定時長度為T1( T1<T) , 這樣CPU在每個工作循環(huán)周期都對定時器進(jìn)行一次清零操作,只要系統(tǒng)正常工作, 定時器永遠(yuǎn)都不會溢出, 也就不會使系統(tǒng)復(fù)位; 否則, 當(dāng)系統(tǒng)出現(xiàn)故障時, 在可選超時周期之后, X25045看門狗將以RESET 信號作出響應(yīng)。X25045片還有一個顯著的特點是它內(nèi)部的閃爍存儲器2 KX8 位的EEPROM,它采用Xicor公司Direct WriteT專利技術(shù), 提供不少于100 000次的使用年限和最小100年的數(shù)據(jù)保存期, 在本系統(tǒng)中,用于存儲汽車行駛的總里程數(shù)。 3.1系統(tǒng)CPU的選擇 用戶在使用單片機時必須了解單片機的供應(yīng)狀態(tài)。單片機的供應(yīng)狀態(tài)決定于片內(nèi)的ROM配置狀態(tài),片內(nèi)ROM狀態(tài)通常分三種: 1 片內(nèi)ROM狀態(tài)既單片機內(nèi)帶有的是掩腌ROM。由于用戶無法自己將程序?qū)懭肫瑑?nèi)ROM,故這種單片機(如MCS-51中的8051)只是用于某種大批量產(chǎn)品時使用。此時,用戶將調(diào)試好的應(yīng)用程序有廠家固化到片內(nèi)ROM中,當(dāng)然,前提是片內(nèi)的ROM容量必須滿足用戶程序的要求。 2 片內(nèi)EPROM狀態(tài),用戶自己可以通過高壓脈沖將程序?qū)懭肫瑑?nèi)EPROM中去。當(dāng)用戶開發(fā)程序不大時(既不需要外擴EPROM),使用這種單片機可以簡化整個系統(tǒng)的組成。它可以作為開發(fā)片內(nèi)ROM單片機的代用芯片,開發(fā)成功以后,再改用帶片內(nèi)ROM的芯片(MCS-51系列的8751屬于這種芯片)。此類單片機應(yīng)用最為廣泛。 3 片內(nèi)無ROM狀態(tài),使用這種單片機時,必須外部配置程序存儲器EPROM。其容量可視需要靈活配置。 而MCS89-51系列中的2051正屬于第二類單片機下面是針對2051芯片的介紹。 file:///C:\Users\junjie\AppData\Local\Temp\ksohtml\wps5D3B.tmp.png 功能框圖 3.2輔助芯片的選取 微機控制系統(tǒng)干擾、電源的波動引起的程序飛車和數(shù)據(jù)丟失, 常造成系統(tǒng)的各種誤動作或死機, 直接影響著系統(tǒng)的正常運行, 設(shè)計人員為此倍感頭痛。25045芯片將微機測控系統(tǒng)中常用的功能: 看門狗定時器、電源電壓監(jiān)控、上電復(fù)位、串行E2PROM 集成在一片8 引腳的芯片內(nèi). 這種組合大大減少了對電路板的空間要求, 簡化了硬件設(shè)計, 降低了成本和功耗,大大提高了系統(tǒng)的可靠性和安全性. 1 芯片簡介 在采用DMX512協(xié)議通信時,換色器的編號用于從總控制臺發(fā)送的數(shù)據(jù)包中選擇發(fā)給本設(shè)備的數(shù)據(jù)幀。正常工作時,編號數(shù)據(jù)不會掉電丟失,而且必要時編號還可修改。因此采用XICOR公司的串行E2PROM器件X25045對編號數(shù)據(jù)進(jìn)行存儲。 X25045是帶有串行E2PROM的CPU監(jiān)控器。圖2是它的引腳圖: file:///C:\Users\junjie\AppData\Local\Temp\ksohtml\wps5D3C.tmp.png 5045引腳圖 CS/WDI:片選輸入/看門狗復(fù)位輸入; SO:串行輸出; WP:寫保護(hù)輸入; Vss:地; Vcc:電源; RESET:復(fù)位輸出; SCK:同步時鐘輸入; SI:串行輸入。 X25045的狀態(tài)寄存器描述器件的當(dāng)前狀態(tài),各位意義如表1所列。
表1 其中,WD1、WD0是看門狗定時時間設(shè)置位;BL1、BL0是存儲單元寫保護(hù)區(qū)設(shè)置位;WEL是只讀標(biāo)志,1表明寫使能開關(guān)打開;WIP也是只讀標(biāo)志,1代表芯片內(nèi)部正處于寫周期。電復(fù)位時,各位都被清零。 X25045芯片功能包括以下4種: (1)上電復(fù)位控制。在對X25045通電時,ERSET引腳輸出有效的復(fù)位信號,并保持至少200ms,使CPU有效復(fù)位。 (2)電源電壓監(jiān)控。當(dāng)檢測到電源電壓低于內(nèi)部門檻電壓VTRIP時,RESET輸出復(fù)位信號,直至電源電壓高于VTRIP并保持至少200ms,復(fù)位信號才被撤消。VTRIP的出廠值根據(jù)芯片型號不同共有5個級別的電壓范圍。對于需要電源電壓精確監(jiān)控的應(yīng)用,用戶可以搭建編程電路,對芯片內(nèi)VTRIP電壓進(jìn)行微調(diào)。 (3)看門狗定時器。芯片內(nèi)部狀態(tài)寄存器的WD1、WD0是看門狗定時設(shè)置位,通過狀態(tài)寄存器寫指令WRSR修改這2個標(biāo)志位,就能在3種定時間隔中進(jìn)行選擇或關(guān)閉定時器。對看門狗的復(fù)位由CS輸入電平的下降沿完成。表2是WD1、WD0組合的含義。 表2 (4)串行E2PROM。芯片內(nèi)含512字節(jié)存儲單元,10萬次可靠寫,數(shù)據(jù)保持時間100年。XICOR設(shè)計了3種保護(hù)方式防止誤寫。包括:WP寫保護(hù)引腳,當(dāng)引腳被拉低時,內(nèi)部存儲單元狀態(tài)寄存器都禁止寫入;存儲區(qū)域?qū)懕Wo(hù)模式,通過對狀態(tài)寄存器的BL1、BL0位的設(shè)置,可以選擇對不同的存儲區(qū)域進(jìn)行寫保護(hù);在進(jìn)行任何寫操作前都必須打開寫使能開關(guān),而且在上電初始化寫操作完成時,寫使能開關(guān)自動關(guān)閉。顯然,在幾方面的保護(hù)之下,產(chǎn)生誤寫的可能性極小,表3是BL1、BL0組合的含義。
表3 對X25045的操作是通過4根口線CS、SCK、SI和SO進(jìn)行同步串行通信來完成的。SCK是外部輸入的同步時鐘信號。在對芯片定改指令或數(shù)據(jù)時,時鐘前沿將SI引腳信號輸入;在讀郵數(shù)據(jù)時,時鐘后沿將數(shù)據(jù)位輸出到SO引腳上。數(shù)據(jù)的輸入/輸出都是高位在先。 芯片內(nèi)部共有6條指令,如表4所列。
表4 (1)WREN和WRDI是寫使能開關(guān)的開/關(guān)指令。它們都是單字節(jié)指令。 (2)RDSR和WRSR是狀態(tài)寄存器的讀/寫指令。在從SI輸入指令后,RDSR的執(zhí)行結(jié)果,即狀態(tài)寄存器內(nèi)容須從SO讀出;而WRSR需要緊接著輸入修改數(shù)據(jù)。 (3)READ和WEITE是存儲單元的讀/寫指令。輸入指令后(指令碼第三代表存儲單元地址的最高位),接著輸入低八位地址,最后就可以連續(xù)讀出或?qū)懭霐?shù)據(jù)。其中,讀指針和寫指針的工作方式完全不同,讀指針的全部8位用來計數(shù),0FFH溢出后變成00H;寫指針只用最低兩位計數(shù),XXXXXX11B溢出后變成XXXX XX00B,所以連續(xù)寫的實際結(jié)果是在4個單元中反復(fù)寫入。另外,由于E2PROM的寫入時間長,所以在連續(xù)兩條寫指令之間應(yīng)讀取WIP狀態(tài),只有內(nèi)部寫周期結(jié)束時才可輸入下一條寫指令。 AT89C2051內(nèi)部沒有SPI接口硬件,因此本系統(tǒng)利用了單片機的4根口線和軟件模擬讀寫時序的方式與X25045通信。 5045與2051連接圖 file:///C:\Users\junjie\AppData\Local\Temp\ksohtml\wps5D4D.tmp.png 3.3LM1819在轉(zhuǎn)速里程表中的應(yīng)用 目前國際上流行大轉(zhuǎn)角(0~270°)動磁式指示儀表,它克服了一般動圈式指示儀表抗震性能差、過載能力弱、指針易抖動等缺點。而引進(jìn)的一些驅(qū)動芯片,如KEFA-796專用集成芯片,有成本高、不易國產(chǎn)化等弱點。我們采用LM1819專用集成芯片(美國國家半導(dǎo)體公司新產(chǎn)品),配以適當(dāng)?shù)膽?yīng)用電路,就可以很好地解決以上問題。 3.3.1電動里程表結(jié)構(gòu) 電動里程表接收霍爾傳感器送來的方波信號,把方波信號頻率轉(zhuǎn)換成指針的轉(zhuǎn)角。我們選用動磁式十字交叉機芯,實現(xiàn)瞬間里程指示功能。十字交叉機芯是一種動磁式的轉(zhuǎn)速表,它代表現(xiàn)代轉(zhuǎn)速表的發(fā)展方向,因為它與動圈式轉(zhuǎn)速表相比有下列優(yōu)點: (1) 轉(zhuǎn)動組件質(zhì)量小、抗震性能好、指示平穩(wěn); (2) 無需動平衡、裝配簡單; (3) 機芯體積小、機械結(jié)構(gòu)較簡單。 3.3LM1819專用集成電路簡介 為了使指針準(zhǔn)確地指示出瞬時車速,需要一套電子電路。將霍爾速度傳感器送來的方波信號的頻率轉(zhuǎn)化為驅(qū)動線圈N1 和N2 的電波信號,使合成磁場H 與水平線夾角θ能根據(jù)車速變化按線性規(guī)律改變,以便指針均勻、準(zhǔn)確地指示車速。我們選用LM1819 專用集成電路實現(xiàn)上述功能。LM1819 是專門為驅(qū)動動磁式儀表而設(shè)計的。LM1819 是由電荷泵、整形器、函數(shù)發(fā)生器、等組成。其集成電路功能框圖如圖1所示。 (5) 下面對外圍電路和工作原理作較詳細(xì)分析和說明。 (1)電流供給部分:該電路單元由二極管D1、電阻R3、穩(wěn)壓管DW1電容C3組成。二極管D1是為了防止電源反接,以保護(hù)LM1819燒毀;電阻R3和穩(wěn)壓管DW1是LM1819 的腳13上電源電壓值限定在18V以下,起過壓保護(hù)作用;電容C3是電源的吸收電容,以避免電源電壓頻繁波動對LM1819影響。 (2)正弦、余弦繞組公共端基準(zhǔn)電位設(shè)定電路:由電阻R4和穩(wěn)壓管DW2組成,電阻R4是穩(wěn)壓管DW2的限流電阻。穩(wěn)壓管DW2選用5.1V ,使正弦和余弦繞組公共端基準(zhǔn)電位設(shè)在5.1V。 (3)霍爾探頭方波信號輸入電路:該電路單元由二極管D4 ,電阻R5、R6、R7,電容C4組成。二極管D4作用是防止信號反接;電阻R5和電容C4組成低通濾波器;電阻R7是輸入電路限流電阻,使加到LM1819的腳10上電流限制在2.5mA 以下;當(dāng)LM1819內(nèi)部NPN開關(guān)晶體管關(guān)斷時,電阻R6為電容C4提供一個放電通路。 (4)方波整形電路:為了提高電路的處理精度,需要將霍爾探頭送入的方波信號加以整形。整形的目的是使方波正半周幅度恒定,上升沿和下降沿盡可能陡。為了實現(xiàn)上述目的,LM1819內(nèi)部電壓基準(zhǔn)電路產(chǎn)生一個非常穩(wěn)定的8.5V電壓由腳11輸出,整形靠LM1819內(nèi)部NPN開關(guān)晶體管實現(xiàn),其具體過程如圖4所示。 圖4 方波整形示意圖 V10是LM1819腳10的輸入信號,它是霍爾探頭輸出的信號經(jīng)輸入電路處理而得到的方波;V9是LM1819腳9的輸出信號,即上述整形電路輸出信號。當(dāng)V10為高電平時,LM1819內(nèi)部NPN開關(guān)晶體管導(dǎo)通,V9輸出低電平;V10為低電平時,開關(guān)晶體管截止,V9輸出高電平(約等于腳11 輸出電 壓,因V11穩(wěn)定在8.5V 左右). 同時,LM1819內(nèi)部的 NPN開關(guān)晶體管導(dǎo)通和關(guān)閉時間都非常短,因而V9幅值非常穩(wěn)定,上升沿和下降沿都非常陡,為后續(xù)方波頻率與電壓轉(zhuǎn)換電路提供一個理想的信號源。 (5)方波頻率與電壓轉(zhuǎn)換電路:該電路單元的功能是將霍爾探頭送來的反映車速的方波信號頻率轉(zhuǎn)換為LM1819內(nèi)部函數(shù)發(fā)生器輸出的控制電壓。當(dāng)車速變化(即方波信號頻率變化)時,控制電壓V 8也將隨之變化,以滿足: θ = 54 ( V 8 - 2. 1) 的最終要求。該電路單元由R1、C1、R2、C2、R8及諾頓放大器組成。R1、C1是諾頓放大器正向輸入端的微分輸入電路,其作用是將幅度恒定的方波信號轉(zhuǎn)化為加到腳6上的電流信號。諾頓放大器本質(zhì)上是一個電流放大器,隨著方波頻率變化, R1、C1構(gòu)成的微分電路充放電電流平均值也隨之變化,諾頓放大器是將正向輸入端的平均充放電電流變化轉(zhuǎn)化成其輸出電壓變化的核心器件。R2、R8、C2是諾頓放大器反饋網(wǎng)絡(luò),R2+R8的大小決定諾頓放大器的增益,C2是抑制輸出脈沖的補償電容。 在電動車速里程表中,選用LM1819專用集成電路驅(qū)動動磁式電子轉(zhuǎn)速表的十字交叉機芯。將霍爾速度傳感器送來的方波信號的頻率轉(zhuǎn)化為驅(qū)動線圈N1和N2 的電流信號,使合成磁場H與水平線夾角θ能根據(jù)車速變化按線性規(guī)律改變,以便指針均勻、準(zhǔn)確地指示車速。此裝置具有穩(wěn)定性好、可靠性高、響應(yīng)速度快、指示性能好、精度優(yōu)良等特點,其應(yīng)用前景十分廣闊。 3..4液晶顯示器LCM1010的應(yīng)用 液晶顯示器已廣泛應(yīng)用于儀器儀表產(chǎn)品、機電一體化產(chǎn)品、自動化控制系統(tǒng)、智能小區(qū)監(jiān)控系統(tǒng)中。下面是對LCM1010的介紹: 其引腳如圖所示 (1) 它只有3 個輸入端: CS、LOAD、CL K, 具有接線簡單, 工作可靠。 (2) 被動顯示: 液晶顯示器本身不發(fā)光而是靠調(diào)制外界光進(jìn)行顯示, 也就是說, 它不象發(fā)光的主動型器件那樣, 靠發(fā)光刺激人眼而實現(xiàn)顯示, 而是單純依靠對光的不同反射呈現(xiàn)的對比度達(dá)到顯示的目的。符合人的視覺習(xí)慣, 不容易引起疲勞, 而且外界光亮度越強, 其顯示內(nèi)容越清晰。特別適用于室外和強光直射的場合。 (3) 低電壓功耗: 極低的工作電壓, 只有3~5V , 工作電流則只有幾個μA/ (cm) 2 可以和大規(guī)模集成電路直接匹配。 (4) 液晶顯示器采用平板式結(jié)構(gòu), 由兩片玻璃組成夾層盒, 目前都將液晶顯示器件制作成液晶顯示模塊(LCM) , 使用方便。本顯示器分為兩組: 第一組為6 位, 用以顯示總行駛里程數(shù), 最大顯示值為: 999999 km ; 第二組為4 位, 用以顯示本次行駛里程數(shù), 最大顯示值為:99919 km。 3.5傳感器的選擇 3.5.1霍爾傳感器的選擇 傳感器是一種以一定的精度把被測量轉(zhuǎn)換成為與之有確定對應(yīng)關(guān)系的便于應(yīng)用的某種物理量的測量裝置。傳感器的功能是感受被測信息并傳送出去。 近年來傳感器的應(yīng)用日益擴大,地位也越來越重要。磁敏式傳感器按其結(jié)構(gòu)可分為體型和結(jié)型兩大類。前者有霍爾傳感器,其主要材料有:InSb,InAs,Ge,Si,GaAs等和磁敏電阻(InSb,InAs);后者有磁敏二極管(Ge,Si)和磁敏晶體管(Si)等。它們都是利用半導(dǎo)體材料中的自由電子或空穴隨磁場改變其運動方向這一特性而制成的一種磁敏傳感器。磁敏傳感器的應(yīng)用范圍可分為模擬用途和數(shù)字用途兩種。例如利用霍爾傳感器測量磁場強度,用磁敏電阻,磁敏二極管作無接觸式開關(guān)等。 霍爾傳感器是利用霍爾效應(yīng)實現(xiàn)磁電轉(zhuǎn)換的一種傳感器。霍爾效應(yīng)自1879年被發(fā)現(xiàn)至今已有100多年的發(fā)展歷史,但是直到本世紀(jì)50年代,由于微電子學(xué)的發(fā)展,才被人們重視和利用,開發(fā)了多種霍爾元件。我國從70年代開始研究霍爾元件,經(jīng)過20余年的研究和開發(fā),目前以能生產(chǎn)各種性能的霍爾元件,例如:普通型,高靈敏度型,低溫度系數(shù)型,測溫測磁型和開關(guān)式的霍爾元件。 由于霍爾傳感器具有靈敏度高,線性度好,穩(wěn)定性高,體積小和耐高溫等特性,它已經(jīng)廣泛應(yīng)用于非電測量,自動控制,計算機裝置,和現(xiàn)代軍事技術(shù)等各個領(lǐng)域。 霍爾傳感器的工作原理主要是在線圈中放置一軟磁(可旋轉(zhuǎn))這樣可以改變線圈內(nèi)的磁通的變化,從而在線圈中產(chǎn)生的頻率與待測轉(zhuǎn)軸轉(zhuǎn)速成正比。 1基本測量電路 霍爾元件的基本測量電路如圖所示: file:///C:\Users\junjie\AppData\Local\Temp\ksohtml\wps5D4E.tmp.png 控制電源I由電源E供給,電位器W調(diào)節(jié)控制電流的大小。霍爾元件的輸出接負(fù)載電阻R,R可以是放大器的輸入電阻或者是測量電路的內(nèi)阻。由于霍爾元件必須在磁場與控制電流作用下,才會產(chǎn)生霍爾電勢U。所以在測量中,可以把I和B的乘積,或者I,或者B作為輸入信號,則霍爾元件的輸出電勢分別正比與IB或I或B。 2連接方式: 除了霍爾元件的基本電路形式之外,如果為了獲得較大的霍爾輸出電勢,可以采用幾片疊加的方式如圖所示。 file:///C:\Users\junjie\AppData\Local\Temp\ksohtml\wps5D5F.tmp.png 下圖為直流供電情況。控制電流端并聯(lián),由W1,W2調(diào)節(jié)兩個元件的霍爾輸出電勢,A,B為輸出端則它的輸出電示為單塊的兩倍。 下圖為交流供電情況。控制電流端串聯(lián),各個元件的輸出端連接輸出變壓器B的初級繞組,變壓器的次級便有霍爾輸出電勢信號的疊加值輸出。 3霍爾電勢的輸出電路: 霍爾元件是一種四端器件,本身不帶放大器。霍爾電勢一般在毫伏量級,在實際使用的時候必須加差分放大器。輸出電路如圖所示的結(jié)構(gòu)。 file:///C:\Users\junjie\AppData\Local\Temp\ksohtml\wps5D60.tmp.png 第四章系統(tǒng)的軟件設(shè)計 軟件設(shè)計在系統(tǒng)設(shè)計中占很大比重,好的軟件環(huán)境能使單片機硬件資源得以充分發(fā)揮,在軟件編程時應(yīng)注重程序的結(jié)構(gòu)化,以簡化編碼,方便調(diào)試. 本汽車?yán)锍瘫沓绦蚨绦『喚?i>,結(jié)構(gòu)簡單,匯編完后為713字節(jié),占用程序空間少,用2716 亦能勝任(采用25045主要為了方便功能擴充) . 1)里程計數(shù)原理:汽車磁電式傳感器輸出的脈沖信號是傳感器轉(zhuǎn)輪旋轉(zhuǎn)時磁場使舌簧管分開閉合而產(chǎn)生的脈沖.每一個脈沖代表行駛了一定的距離.設(shè)汽車行駛1km時驅(qū)動輪轉(zhuǎn)數(shù)為N,磁電式傳感器轉(zhuǎn)數(shù)為NF 則NF=N×I,其中I為傳動比. 設(shè)輪胎外徑為D,則汽車行駛1km驅(qū)動輪轉(zhuǎn)數(shù)為N=1000/πD,實際中由于輪胎承載變形使得輪胎外徑D變化,此時NXI=1000/πμD,其中μ為變形系數(shù),一般為0. 93~0.96.則磁電式傳感器在汽車行駛1km時轉(zhuǎn)數(shù)NF=(1000/πμD)I.設(shè)傳感器轉(zhuǎn)輪上均勻安排m個磁片時,汽車行駛1km,傳感器輸出脈沖為mNF個. 2)程序中以INT1的輸入為里程計數(shù)脈沖,2051中斷1置為高中斷優(yōu)先級以保證計數(shù)準(zhǔn)確.定時器T0置為低中斷優(yōu)先級,設(shè)T0每10ms中斷1次,中斷1次送1位顯示.每行駛1km向5045中寫1次數(shù)據(jù). 3)以60H~62H單元為計數(shù)脈沖暫存單元.68H,69H單元為判斷數(shù)據(jù)暫存單元,6CH中為本次里程小數(shù)點位數(shù)值.當(dāng)6CH單元內(nèi)容達(dá)到0AH時清零.70~72H單元為讀出的總里程數(shù). 本程序包括主程序和2個中斷服務(wù)程序,程序功能如下: 主程序:初始化,清零存儲單元,讀出總里程存入暫存單元,開CPU中斷、置中斷優(yōu)先級,啟動定時器,等待中斷. INT1中斷服務(wù)程序:脈沖個數(shù)加1,判斷是否小數(shù)點數(shù)值為0.1 km,判斷是否行駛1km.不是則返回. T0 中斷服務(wù)程序:判斷是否顯示總里程,顯示方式初始化,顯示里程數(shù),返回. 第五章 印制板圖的繪制 首先根據(jù)轉(zhuǎn)速里程表的結(jié)構(gòu)特點,將整個硬件圖版分為兩部分,即打成主板和立板,主板2051,5045和驅(qū)動器LM1819,立板為顯示版,固定LCM1010顯示器,立板和主板用接口模塊固定。 下面就可以用PROTEL中的TRAXED來繪制和制板圖了 1首先C》CD PROTEL C:PROTEL》TRAXEDIT 進(jìn)入編輯狀態(tài) 2選setup-pads 定義焊接板類型 (設(shè)置)setup-toggbe layers 打開和關(guān)閉層 默認(rèn)當(dāng)前的線寬,字符尺寸和捕獲柵格的大小。 3選place放置元件component 可以直接輸入元件名,也可以用回車查找元件表后確定要安置的元件。 型號 封裝 2051 DIP40 5045 DIP28 LM1819 DIP 4元件進(jìn)行布線(選用手動布線) 用place-track 用鼠標(biāo)左鍵定義起點,左鍵確認(rèn),用小鍵盤的 星 改變層。在本次繪制印制圖板中還用到了以下命令。 (塊)Block-copy Block-Define Block-Hide Block-Move Block-Insade Delete (放置)Place-Arc -Pad (庫管理)Library-Aold -Browse -List -New Library (屏幕控制)Zoom-Expand 印制板圖如圖 結(jié)束語 基于單片機的電子式轉(zhuǎn)速里程表的設(shè)計經(jīng)過了3個多月的時間的設(shè)計,現(xiàn)在已經(jīng)結(jié)束。在這次設(shè)計中我查閱了大量的關(guān)于單片機及測試技術(shù)等多方面的書籍,在老師的幫助下學(xué)到了許多沒有學(xué)過的知識,并且把四年來所學(xué)的MCS-51系列的單片機原理,單片機接口等課程重新溫習(xí)了一遍。同時,將其中的部分知識運用到本次設(shè)計之中,作到了理論與實際相結(jié)合,并使所學(xué)的理論知識融會貫通,提高了學(xué)習(xí)的質(zhì)量。也培養(yǎng)了對設(shè)計的分析能力。 致謝 本次設(shè)計即是對多門課程的一次綜合性的運用,也是將理論知識運用到實際當(dāng)中的一次嘗試。在設(shè)計中由于老師和同學(xué)的熱心幫助,解決了很多問題和難點。再次,我向他們表示忠心的感謝。另外由于缺乏經(jīng)驗,缺點和不足再所難免。懇切的希望老師和同學(xué)們批評指正。 附錄 //****************************************************************/ //文件:zslcb.c //** //** //** #include<reg51.h> #include <absacc.h> //----------------------------------------------------- //*定義25045端口--------- sbit CS = P1^1; //*片選 sbit SO = P1^0; //*串行輸出 sbit SI = P1^3; //*串行輸入 sbit SCK = P1^2; //*串行時鐘輸入 char command; //*指令字 //------------------------------------- sbit K1 = P3^0; //計程開關(guān) int pulsdate; //*計數(shù)脈沖變量 int lengthsdate1; //*保存本次里程數(shù)的整數(shù) int lengthsdate2; //*保存本次里程數(shù)的小數(shù) int totallength; //*總里程數(shù) //------------------------------------------- int timer0date1; //*定時器0記數(shù)變量變1 int timer0date2; //*定時器0記數(shù)變量變2 //*初始化2051工作寄存器--------- void init(void) { TMOD = 0x11; //0001 0001B T0:16位定時中斷;T1:6位定時中斷,方式1 TL0 = 0xfe; //時鐘 0.00108506944444444444ms TH0 = 0xdb; //10ms=0x2400,0xffff-0x2400=0xdbff PT0 = 0; //定時器0中斷優(yōu)先級 PT1 = 0; PX0 = 0; PX1 = 1; //外部中斷1中斷優(yōu)先級 ET0 = 1; //掃描開始時開T0中斷 IE1 = 1; //開外部中斷1 IT1 = 1; //邊沿觸發(fā) TR0 = 1; //開T0 中斷 EA = 1; //開總中斷 command= 0x00; pulsdate=0x00; lengthsdate1=0x00; lengthsdate2=0x00; timer0date1=0x00; timer0date2=0x00; } //*把狀態(tài)值State寫入25045狀態(tài)寄存器函數(shù) void Write25045State(char State) { int i; SCK=0; CS=0; for(i=0;i<8;i++) { State<<1; SCK=1; SCK=0; SI=CY; } CS=1; } //*讀25045狀態(tài)寄存器函數(shù),返回值為狀態(tài)寄存器的值 char Read25045State(void) { int i; char State0; CS = 0; Write25045State(0x06); Write25045State(0x05); SCK=0; for(i=0;i<8;i++) { SCK=1; SCK=0; CY =SO; State0>>1; } CS=1; return State0; } //*從25045的data1存儲器中讀取數(shù)據(jù) char Read25045MEM(char data1) { int i; char out1; CS = 1; CS = 0; command = 0x03; for(i=0;i<8;i++) { command<<1; SCK=0; SI=CY; SCK=1; } command= data1; for(i=0;i<8;i++) { command<<1; SCK=0; SI=CY; SCK=1; } SCK=0; for(i=0;i<8;i++) { SCK=1; SCK=0; CY =SO; out1>>1; } CS=1; return out1; } //*把date2寫出25045MEM void Write25045MEM(char data2,char Memory1) { int i; CS = 1; CS = 0; command = 0x02; for(i=0;i<8;i++) { command<<1; SCK=0; SI=CY; SCK=1; } command= Memory1; for(i=0;i<8;i++) { command<<1; SCK=0; SI=CY; SCK=1; } for(i=0;i<8;i++) { data2<<1; SCK=0; SI=CY; SCK=1; } CS=1; } //*X25045芯片復(fù)位函數(shù) void reset25045(void) { CS=0; CS=1; } // void init25045(void) { int i; char data5; CS=0; Write25045State(0x06); Write25045State(0x01); data5=0x04; for(i=0;i<8;i++) { data5<<1; SCK=0; SI=CY; SCK=1; } CS=1; } //*寫LCM1010函數(shù) void Writelcm1010(char data3 , char data6) { ; } //*定義外部中斷1函數(shù) void Int1(void) interrupt 2 { char totall; char totalh; pulsdate++; lengthsdate2+=16; if(lengthsdate2>10000) lengthsdate2-=10000; if(pulsdate>=624) { lengthsdate2=0; lengthsdate1++; pulsdate-=624; } if(pulsdate==0) { totallength++; totall=totallength; Write25045MEM(totall,0x00); totalh=(totallength>>8); Write25045MEM(totalh,0x01); } } //*定義定時器0中斷函數(shù) void Timer0(void) interrupt 1 { char i; bit j; bit k; char a; timer0date1++; timer0date2++; if(timer0date1>=4) { timer0date1-=4; } if (k==K1) { a++; } else { k=K1; a=0; } if(i>=20) { j=k; a=20; } if(!j) { switch(timer0date1) { case 0: i=lengthsdate2/100; Writelcm1010(i,timer0date1); break; case 1: i=lengthsdate1%10; Writelcm1010(i,timer0date1); break; case 2: i=(lengthsdate1/10)%10; Writelcm1010(i,timer0date1); break; case 3: i=(lengthsdate1/100)%10; Writelcm1010(i,timer0date1); break; default: break; } } else { switch(timer0date1) { case 0: i=totallength%10; Writelcm1010(i,timer0date1); break; case 1: i=(totallength/10)%10; Writelcm1010(i,timer0date1); break; case 2: i=(totallength/100)%10; Writelcm1010(i,timer0date1); break; case 3: i=(totallength/1000)%10; Writelcm1010(i,timer0date1); break; default: break; } } } //*主函數(shù) void main(void) { char totall; char totalh; init(); init25045(); totall=Read25045MEM(0x00); totalh=Read25045MEM(0x01); totallength=totalh; totallength<<8; totallength=totall; while(1) { if(timer0date2>=30) { timer0date2=0; init25045(); } }
|