裝配圖出租車?yán)锍田@示系統(tǒng)的設(shè)計(jì)
裝配圖出租車?yán)锍田@示系統(tǒng)的設(shè)計(jì),裝配,出租車,里程,顯示,系統(tǒng),設(shè)計(jì)
參考必讀
下列資料與各個(gè)論文題目均有所出入,相關(guān)內(nèi)容僅供參考,不可雷同。
錯(cuò)誤更改:(陳廷廷、胡大亮、呂帥、陳遲、許彪)
步進(jìn)電機(jī)式濕度表的設(shè)計(jì) 改為 步進(jìn)電機(jī)式溫度表的設(shè)計(jì)
格式要求
內(nèi)容分為:引言、正文、結(jié)論與展望、致謝、參考文獻(xiàn)等幾個(gè)部分。
各部分均要分頁。各章亦要分頁顯示。圖表格式要正確,必須用黑色筆書寫,字體要端正,不可潦草。
- 44 -
出租車?yán)锍田@示系統(tǒng)的設(shè)計(jì)
第1章 概 述
1.1 國內(nèi)外研究現(xiàn)狀
自今汽車走過了100多年的發(fā)展歷程,汽車儀表也在不斷開發(fā)和發(fā)展之中。汽車儀表發(fā)展,按其工作原理上取得的重大技術(shù)創(chuàng)新來分經(jīng)過四代:第一代汽車儀表是基于機(jī)械作用力而工作的機(jī)械式儀表,即機(jī)械機(jī)芯表;第二代汽車儀表的工作原理基于電子測量原理,即通過各類傳感器將被測的非電量變換成電信號加以測量,稱之為電氣式儀表;第三代為模擬電路電子式;第四代為步進(jìn)電機(jī)式全數(shù)字汽車儀表。
目前,汽車儀表正在經(jīng)歷第三代向第四代轉(zhuǎn)型時(shí)期。第三代汽車用儀表工作原理與電氣式儀表基本相同,只是用電子器件取代原來的電氣器件。隨著集成電路技術(shù)突飛猛進(jìn)的發(fā)展,這種儀表現(xiàn)在均采用汽車儀表專用集成電路,是國內(nèi)汽車儀表目前的主流產(chǎn)品,經(jīng)過多年的發(fā)展,其結(jié)構(gòu)形式經(jīng)歷了動圈式機(jī)芯和動磁式機(jī)芯階段。電子器件經(jīng)歷了分立器件和專用集成電路階段。發(fā)展到今天以塑料件為主;圍繞提高指示精度和指針平穩(wěn)性,有動圈式、動磁式等。第四代步進(jìn)電機(jī)式全數(shù)字式汽車儀表從其應(yīng)用的技術(shù)手段上看,還是電子技術(shù)范疇,也屬于電子式儀表,但信號處理方式己從模擬變成數(shù)字。其最顯著的特征是工作原理與第三代汽車儀表完全不同。本系統(tǒng)研制的步進(jìn)電機(jī)式車速里程表就是在這第三代和第四代轉(zhuǎn)型時(shí)期開發(fā)研制的第四代新型儀表。該表屬于第四代步進(jìn)電機(jī)式全數(shù)字式汽車儀表,本系統(tǒng)開發(fā)的儀表的優(yōu)點(diǎn)是指示精度高,響應(yīng)速度快、無抖動,指示范圍分度均勻等。
1.2 方案比較
根據(jù)設(shè)計(jì)任務(wù),車速里程表機(jī)芯的研制主要設(shè)計(jì)出車速的指示和里程的顯示,具有小計(jì)里程和總里程的雙顯示功能,車速具有回零功能。因此根據(jù)總體設(shè)計(jì)要求,經(jīng)過分析研究設(shè)計(jì)出方案如下。
1.2.1 方案一:動磁式車速里程表
電子車速里程表是由步進(jìn)電機(jī)M驅(qū)動機(jī)械式里程記錄機(jī)構(gòu)(計(jì)數(shù)器),裝在變速箱內(nèi)霍爾傳感器的輸出信號控制步進(jìn)電機(jī)。步進(jìn)電機(jī)M由專門集成電路BL2115驅(qū)動,步進(jìn)電機(jī)M轉(zhuǎn)動量與變速箱輸出軸轉(zhuǎn)動量成一定速比關(guān)系,從而取消了傳統(tǒng)的軟軸驅(qū)動。
指示瞬時(shí)車速的指針用十字交叉動磁式機(jī)芯驅(qū)動,該機(jī)芯上有一個(gè)專門集成電路LM1819同時(shí)接受霍爾傳感器輸出信號,并輸出兩路驅(qū)動十字交叉線包的電流信號。這兩路電流信號決定十字交叉線包的合成磁場方向,合成磁場驅(qū)動瞬時(shí)車速的指針偏轉(zhuǎn),用以指示車速。綜上所述,累計(jì)里程計(jì)數(shù)和瞬時(shí)車速指示都受控于同一個(gè)信號源(霍爾速度傳感器)。圖1-1是動磁式車速里程表工作原理框圖。
圖1-1 動磁式車速里程表工作原理框圖
這種結(jié)構(gòu)的車速里程表結(jié)構(gòu)復(fù)雜,但它具有較好的優(yōu)點(diǎn):用指針指示速度,指針的轉(zhuǎn)速連續(xù)、穩(wěn)定,駕駛員不易產(chǎn)生視覺疲勞。
1.2.2 方案二:雙線圈式車速里程表
本方案是通過單片機(jī)來實(shí)現(xiàn)里程累計(jì)、清零及存儲,存儲由E2PROM芯片AT24C02組成,并以LM1819集成電路驅(qū)動十字線圈表頭,從而實(shí)現(xiàn)車速的指示。原理框圖見圖1-2所示。該設(shè)計(jì)方案成本低廉、指針穩(wěn)定性好、響應(yīng)速度快、抗震性強(qiáng)、可靠性和性價(jià)比都很高。該里程表完全取代了傳統(tǒng)的以軟軸驅(qū)動的車速里程表。當(dāng)然,這只是一種實(shí)現(xiàn)方案,也可以由單片機(jī)通過軟件來驅(qū)動十字線圈表頭, 即由單片機(jī)分別控制表頭的正弦線圈和余弦線圈而省去LM1819 集成電路。對此,本文不再贅述。
圖1-2 雙線圈式車速里程表原理框圖
1.2.3 方案三:步進(jìn)電機(jī)式車速里程表
本方案的步進(jìn)電機(jī)式車速里程表是一種用指針指示速度、用液晶顯示里程的電子式車速里程表。車速表不再采用十字交叉動磁式機(jī)芯,而改用步進(jìn)電機(jī)式機(jī)芯。該步進(jìn)電機(jī)式機(jī)芯由單片機(jī)控制,再由步進(jìn)電機(jī)帶動指針指示行駛車速,從而實(shí)現(xiàn)車速的瞬時(shí)指示,因而稱作單片機(jī)控制步進(jìn)電機(jī)式機(jī)芯車速表。里程累計(jì)和小計(jì)不再使用機(jī)械計(jì)數(shù)器,而是改用E2PROM芯片存儲顯示數(shù)值,由顯示屏LCD(液晶顯示屏)顯示累計(jì)和小計(jì)里程。采用液晶顯示后,克服了字輪顯示故障率高、受命短等缺點(diǎn),還增加了短距離計(jì)程等功能。本方案中的步進(jìn)電機(jī)式車速里程表原理框圖如圖1-3所示。
步進(jìn)電機(jī)式車速里程表是一種以單片機(jī)來實(shí)現(xiàn)里程累計(jì)、小計(jì)、清零及存儲,并以步進(jìn)電機(jī)來實(shí)現(xiàn)車速的指示。該方案成本低廉、指針穩(wěn)定性好、響應(yīng)速度快、抗震性強(qiáng)、可靠性和性價(jià)比都很高。
圖1-3 步進(jìn)電機(jī)式車速里程表原理框圖
1.2.4 方案論證
實(shí)現(xiàn)以上方案都可以達(dá)到車速和里程顯示的目的,但采用動磁式車速里程表在裝配過程中易發(fā)生針軸與軸承間間隙不一致、阻尼油阻尼不合適等問題。而采用雙線圈式車速里程表速度指示在低速區(qū)的線性差和精度不高。對于第三種方案采用步進(jìn)電機(jī)式車速里程表,其工作原理上的技術(shù)創(chuàng)新以及指針精度較。故確定采用此方案來實(shí)現(xiàn)高精度的車速和里程。
步進(jìn)電機(jī)式車速里程表車速對應(yīng)指示區(qū)間為0~200km/h;里程表由總里程和小計(jì)里程組成,總里程顯示范圍為0~999999km,小計(jì)里程顯示范圍為0~999.9km。在這第三種方案中,車速和里程信號都是由霍爾傳感器送入到單片機(jī)的T0和T2端口,T2記錄霍爾傳感器送入信號的周期,在單片機(jī)中做相應(yīng)處理后,送給步進(jìn)電機(jī)用于車速的測量。T0記錄霍爾傳感器送入信號的個(gè)數(shù),記錄到一定的數(shù)值送給LCD顯示里程。并把顯示的總里程保存在E2PROM 中。
第二章 步進(jìn)電機(jī)式車速里程表的硬件構(gòu)成
在上一章中我們論證了車速里程表的設(shè)計(jì)方案,步進(jìn)電機(jī)式車速里程表是本文選取的最優(yōu)方案。本章將重點(diǎn)介紹該方案的具體實(shí)施內(nèi)容,其中包括車速、里程信號模塊、控制模塊、LCD顯示模塊、步進(jìn)電機(jī)指示模塊和掉電保護(hù)模塊等。下面我們分別對各個(gè)模塊進(jìn)行一一介紹。
2.1 總體結(jié)構(gòu)的設(shè)計(jì)和原理概述
步進(jìn)電機(jī)式車速里程表機(jī)芯研制的硬件原理框圖如圖2-1所示。其中車速、里程信號部分是由霍爾傳感器組成?;魻杺鞲衅靼惭b在變速箱輸出軸上,霍爾傳感器采集到的信號送是給單片機(jī)的定時(shí)器/計(jì)數(shù)器T0和定時(shí)器/計(jì)數(shù)器T2中。單片機(jī)構(gòu)成了控制部分,單片機(jī)把霍爾傳感器送來的信號,通過單片機(jī)的計(jì)數(shù)器T0做相應(yīng)編程,記錄下汽車行駛0.1km時(shí)霍爾傳感器所產(chǎn)生的信號脈沖個(gè)數(shù),通過單片機(jī)轉(zhuǎn)換為BCD碼送給LCD顯示,也就實(shí)現(xiàn)了最小顯示為0.1km ,如果累計(jì)到1km,就把1km累加到總里程并送入E2PROM保存,再從E2PROM中調(diào)入LCD中進(jìn)行總里程顯示。在LCD顯示中分為小計(jì)里程顯示和總里程顯示,小計(jì)里程可實(shí)現(xiàn)單次行駛路程,總里程記錄汽車總行駛路程。在E2PROM中只保存總里程值,以備單片機(jī)掉電時(shí)總里程數(shù)據(jù)丟失。定時(shí)器/計(jì)數(shù)器T2用于記錄單個(gè)脈沖的周期,把這個(gè)周期值通過軟件編譯轉(zhuǎn)化為車速值,再由單片機(jī)的P0口送給步進(jìn)電機(jī)指示瞬時(shí)車速值。
圖2-1 步進(jìn)電機(jī)式車速里程表機(jī)芯的原理框圖
顯示模塊由驅(qū)動芯片PCF8566和LCD顯示屏組成。在顯示模塊中,顯示里程的信號是由P2口送入的,P2輸出的信號要先經(jīng)過驅(qū)動芯片PCF8566再送給LCD顯示。步進(jìn)電機(jī)模塊同樣也由驅(qū)動芯片組成,本系統(tǒng)選擇的驅(qū)動芯片是ULN2003,速度信號經(jīng)由單片機(jī)P0口送給驅(qū)動芯片,再由驅(qū)動芯片送給步進(jìn)電機(jī)指示相應(yīng)車速值。
2.2 車速、里程信號電路的設(shè)計(jì)
第四代汽車儀表對于傳感器的選擇,一般常用的是霍爾式和干簧管式轉(zhuǎn)速傳感器,也比較少的用到磁電式轉(zhuǎn)速傳感器。因?yàn)殡S著車速的提高,用軟軸驅(qū)動的傳統(tǒng)車速里程表受到前所未有的挑戰(zhàn),這是因?yàn)檐涊S在高速旋轉(zhuǎn)時(shí),由于受鋼絲交變應(yīng)力極限的限制而容易斷裂,同時(shí),軟軸布置過長會出現(xiàn)形變過大或運(yùn)動遲滯等現(xiàn)象。
第四代車速里程表無論選擇哪種傳感器它們輸出的信號都要是脈沖信號,從而使得非接觸式轉(zhuǎn)速傳感器得以迅速發(fā)展。也只有選擇產(chǎn)生脈沖信號的傳感器才能滿足本課題的要求。故本系統(tǒng)選用霍爾式轉(zhuǎn)速傳感器。
霍爾探頭組件安裝在變速箱輸出軸上,里程計(jì)數(shù)、車速計(jì)時(shí)脈沖產(chǎn)生的工作原理如圖2-2所示。八個(gè)磁鋼與變速箱輸出軸同步旋轉(zhuǎn)?;魻柼筋^固定在變速箱殼體上靜止不動,當(dāng)輸出軸上某只磁鋼轉(zhuǎn)動到霍爾探頭對應(yīng)位置時(shí),霍爾探頭中的霍爾敏感器件受到磁鋼磁場作用,霍爾探頭輸出一個(gè)低電平,當(dāng)沒有磁鋼與霍爾探頭對準(zhǔn)時(shí),霍爾探頭不再受到磁場作用,輸出高電平。輸出軸轉(zhuǎn)動一周,霍爾探頭有八個(gè)方波輸出。如果以速比為1:624的車型為例,汽車行駛一公里,則霍爾傳感器發(fā)出的脈沖數(shù)共為8×624=4992個(gè)。步進(jìn)電機(jī)式車速里程表機(jī)芯的轉(zhuǎn)動和LCD中里程的顯示都是受控于霍爾探頭輸出的方波個(gè)數(shù)。記錄4992個(gè)脈沖表示汽車行駛1公里,記錄單個(gè)脈沖的周期算出汽車行駛的速度,具體應(yīng)用將在相應(yīng)章節(jié)中介紹。
圖2-2 霍爾傳感器組件
2.3 控制模塊電路的設(shè)計(jì)
控制模塊由單片機(jī)構(gòu)成,單片機(jī)的復(fù)位電路和振蕩電路的連接如圖2-3所示,復(fù)位選用自動上電復(fù)位方式,晶振選用典型值11.0592MHz。電容C01和C02的作用是幫助起振。由于AT89S52有8k字節(jié)的ROM,對于本系統(tǒng)來說存儲器能夠滿足要求,因此,=1。
圖2-3 開關(guān)按鈕復(fù)位和晶振連接圖
P0口的低四位承擔(dān)著傳送步進(jìn)電機(jī)時(shí)序信號的任務(wù),這個(gè)時(shí)序信號用來指示相對應(yīng)的速度,因此P0口的低四位接ULN2003。由于P0口是一個(gè)8位漏極開路的雙向I/O口。作為輸出口,每位能驅(qū)動8個(gè)TTL邏輯電平。對P0端口寫“1”時(shí),引腳用作高阻抗輸入。故需要接上拉電阻來實(shí)現(xiàn)“1”的輸出。P2口中的P2.0和P2.1接E2PROM芯片AT24C02的SDA和SCL管腳,P2.2和P2.3接PCF8566的SDA和SCL管腳。連線之間均接上拉電阻。
2.4 里程顯示電路的設(shè)計(jì)
里程顯示可由LED和LCD來顯示。由于LCD顯示屏具有零輻射、低功耗、散熱小、體積小、顯示清晰等優(yōu)點(diǎn),并且顯示視覺效果較好,可有效地緩解駕駛員的眼疲勞。對于功耗要求越低越好的汽車儀表來說,優(yōu)先選用LCD來顯示里程是它最終的選擇。本文選擇的是PCF8566驅(qū)動器和專用LCD組成LCD顯示模塊。之所以如此選擇,是因?yàn)镻CF8566芯片是低功耗的LCD驅(qū)動器。
圖2-4為LCD顯示模塊連線圖。PCF8566的SDA和SCL管腳分別接單片機(jī)的P2.0和P2.1,在這兩者的連線之間接上拉電阻。PCF8566的四個(gè)背極輸出BP0-BP3分別直接與LCD的背極輸入BP0-BP3相連,PCF8566的24個(gè)段輸出也同樣直接與LCD相連。PCF8566器件地址和控制命令字要通過I2C總線發(fā)送進(jìn)來,它們發(fā)送的順序?yàn)椋浩骷刂贰绞皆O(shè)置——數(shù)據(jù)指針——器件選擇——閃爍控制。但本系統(tǒng)只用到一個(gè)PCF85 66器件,器件的默認(rèn)子地址為00H,不需要再進(jìn)行器件選擇,故可省去器件選擇這個(gè)控制命令字。那么控制命令字的發(fā)送順序改為:器件地址——方式設(shè)置——數(shù)據(jù)指針——閃爍控制。PCF8566的VDD腳接+5V,OSC、A0、A1、A2、VSS和VLCD接地。
圖2-4 LCD顯示模塊連線圖
車速里程表的速比表示的是:車輪轉(zhuǎn)軸在汽車行駛一公里時(shí)所轉(zhuǎn)過的轉(zhuǎn)數(shù)。步進(jìn)電機(jī)式車速里程表采用的是霍爾式轉(zhuǎn)速傳感器。這種車速里程表轉(zhuǎn)軸每轉(zhuǎn)一圈,霍爾傳感器將感應(yīng)發(fā)出八個(gè)脈沖?,F(xiàn)在以速比為1:624的車型為例,汽車行駛一公里,則霍爾傳感器發(fā)出的脈沖數(shù)共為8×624=4992個(gè),也就是說,每個(gè)脈沖代表了1/4992公里的路程。將這些脈沖信號輸入給單片機(jī)的定時(shí)器/計(jì)數(shù)器T0,利用T0的計(jì)數(shù)功能,使之計(jì)到499個(gè)脈沖產(chǎn)生一個(gè)中斷,中斷后進(jìn)入計(jì)數(shù)器T0中斷子程序,在這個(gè)中斷子程序中,實(shí)現(xiàn)對小計(jì)里程的累計(jì)和總里程的累加。若累加了總里程則把累加的總里程數(shù)送到E2PROM芯片AT24C02中保存,并從芯片AT24C02中調(diào)出送給LCD顯示。
從以上章節(jié),我們已經(jīng)知道LCD分別顯示出小計(jì)里程和總里程,其中小計(jì)里程進(jìn)位時(shí),也同時(shí)累計(jì)至總計(jì)里程。小計(jì)里程顯示為000.0~999.9km,總里程液晶顯示為000000~999999km。液晶里程顯示屏見圖2-5所示,其中上一排6位顯示總里程,下一排4位顯示小計(jì)里程,且小計(jì)里程的最后一位為小數(shù)。器件子地址的傳送順序是從上排左首至右結(jié)束,接著再從下排右首開始,至左首結(jié)束,上下兩排都是左首為高位。
小計(jì)里程顯示的復(fù)位是通過外部中斷INT0來實(shí)現(xiàn)的,小計(jì)里程以0.1km為最低顯示數(shù)字,停車關(guān)掉電門后不保存,總里程顯示數(shù)值保存在E2PROM中,從而掉電不會丟失總里程數(shù)值,當(dāng)打開電門,即刻顯示上次總里程累計(jì)數(shù)。下次行車總里程繼續(xù)累計(jì)相加,總里程累計(jì)超過顯示范圍999999km時(shí),不再響應(yīng)里程數(shù)的變化,而一直顯示999999 km。小計(jì)里程超過顯示范圍999.9km時(shí)即刻清零,并從000.0開始重新計(jì)數(shù)。
圖2-5 液晶里程顯示屏
2.6 掉電保護(hù)電路的設(shè)計(jì)
由于需要保存總里程,但單片機(jī)在掉電模式下數(shù)據(jù)會丟失。因此應(yīng)該選擇E2PROM存儲器,本文選擇的E2PROM存儲器是AT24C02,它的主要特點(diǎn)在于I2C總線的應(yīng)用,16字節(jié)頁寫緩沖區(qū)、100萬次擦寫周期、數(shù)據(jù)存儲長達(dá)100年和溫度范圍大等優(yōu)點(diǎn)。
該存儲芯片和單片機(jī)的P2.0、P2.1相連,在計(jì)數(shù)時(shí)只要總里程有進(jìn)位,單片機(jī)就把總里程送入AT24C02中保存,同樣每次顯示的總里程都是從該存儲器件中調(diào)入的。該器件支持I2C總線數(shù)據(jù)傳送協(xié)議。
I2C總線協(xié)議規(guī)定,任何將數(shù)據(jù)傳送到總線的作為發(fā)送器,任何從總線接收數(shù)據(jù)的器件為接收器。數(shù)據(jù)傳送由主器件控制,總線的串行時(shí)鐘、起始停止條件均由主控制器產(chǎn)生。主器件和從器件都可以作為發(fā)送器或者接收器,但數(shù)據(jù)轉(zhuǎn)送(接收或發(fā)送)模式由主器件控制。I2C總線協(xié)議定義如下:
1. 只有在總線非忙時(shí)才被允許進(jìn)行數(shù)據(jù)傳送。
2. 在數(shù)據(jù)傳送時(shí),當(dāng)時(shí)鐘線為高電平,數(shù)據(jù)線必須為固定狀態(tài),不允許有跳變。時(shí)鐘線為高電平時(shí),數(shù)據(jù)線的任何電平變化將被當(dāng)作總線的啟動或停止條件。
I2C總線的具體應(yīng)用,請參考相關(guān)書籍,本文不再驁述??傊?,通過開始信號、寫或讀命令、應(yīng)答信號、傳送字節(jié)、結(jié)束信號等依次順序送入即可實(shí)現(xiàn)數(shù)據(jù)的傳送。電路連線如圖2-8所示。
圖2-8 E2PROM連線圖
里程顯示的程序設(shè)計(jì)
AT89S52和一般單片機(jī)一樣,支持C51高級語言和asm51匯編語言兩種語言編程。但我們在大學(xué)的學(xué)習(xí)中用的是asm51匯編語言,為了更好的對大學(xué)所學(xué)課程知識的一次再認(rèn)識和連貫性總結(jié),故本論文仍然選用匯編語言。且本程序在設(shè)計(jì)上主要具有以下特點(diǎn):
1) 在軟件結(jié)構(gòu)上,各功能程序?qū)崿F(xiàn)模塊化、子程序化;
2) 在顯示方式上,采用循環(huán)顯示隊(duì)列;
3) 速度信號采用脈沖周期測量法,根據(jù)車輪周長推算出速度值;
4) 里程計(jì)數(shù)由脈沖個(gè)數(shù)換算成公里數(shù)。
圖3-1 主程序流程圖
主程序流程圖如圖3-1所示。在主程序中用來對系統(tǒng)進(jìn)行初始化,將系統(tǒng)中所有的命令狀態(tài)以及有關(guān)的存儲單元置位成初始狀態(tài),設(shè)置AT89S52的堆棧指針、讀E2PROM中的總里程并轉(zhuǎn)化為BCD碼,初始化LCD顯示,初始化步進(jìn)電機(jī)并使之逆時(shí)針旋轉(zhuǎn)280度進(jìn)行回零,然后判斷20H.0是否為1,如為1則保存里程信號到E2PROM中,否則調(diào)用里程顯示模塊,再判斷20H.3是否為1,如為1則調(diào)用速度顯示模塊,否則返回繼續(xù)判斷20H.0。中斷實(shí)現(xiàn)了對采集的信號處理、置判斷標(biāo)志、存儲、送顯示、指示等。
3.1.1 里程的累加
T0中斷里程計(jì)數(shù)子程序中,計(jì)499個(gè)脈沖表示行走了0.1公里,并產(chǎn)生中斷進(jìn)入T0中斷子程序。在這里首先關(guān)閉中斷,小計(jì)里程單元加一,并送備調(diào)用顯示單元。如果進(jìn)位達(dá)到一公里,則總里程單元也加一,并把總里程單元送入E2PROM芯片保存。其中寫里程子程序如圖3-2所示。起始地址SLA24賦值00H,發(fā)送數(shù)據(jù)緩沖區(qū)首址為50H,傳送字節(jié)數(shù)為06H,所以發(fā)送數(shù)據(jù)單元為50H、51H、52H、53H、54H、55H六個(gè)單元。尋址字節(jié)為0A0H,表示為寫字節(jié)。最終發(fā)送的六個(gè)數(shù)據(jù)保存在AT24C02的00H、01H、02H、03H、04H和05H中。
圖3-2 寫里程子程序 圖3-3 讀里程子程序
讀里程子程序如圖3-3所示,其中起始地址SLA24同樣賦值00H,接收數(shù)據(jù)緩沖區(qū)首址為40H,傳送字節(jié)數(shù)為06H,所以接受數(shù)據(jù)單元為40H、41H、42H、43H、44H和45H六個(gè)單元。尋址字節(jié)為0A0H時(shí)為寫字節(jié),為0A1H時(shí)為讀字節(jié)。同樣是從00H、01H、02H、03H、04H和05H這六個(gè)地址中讀出的。
里程的設(shè)計(jì)關(guān)鍵是在中斷里的設(shè)置,計(jì)數(shù)器T0初值的計(jì)算為:
216表示計(jì)數(shù)器T0選擇方式1的最大計(jì)數(shù)值,499為汽車行駛0.1公里的脈沖個(gè)數(shù),65037化為十六進(jìn)制為0FE0DH。當(dāng)T0計(jì)到499個(gè)脈沖時(shí),就跳轉(zhuǎn)到T0中斷。在中斷中首先關(guān)閉中斷允許EA,接著就是做加法處理,并置標(biāo)志位20H.0以便是否要送E2PROM 保存。圖3-4為具體流程圖。
小計(jì)里程在36H、37H、38H、39H中做加法,并送46H、47H、48H、49H單元,以便轉(zhuǎn)化為BCD碼送入LCD顯示。標(biāo)志位20H.0為1時(shí),就把總里程加法處理過的30H、31H、32H、33H、34H、35H單元內(nèi)容送50H、51H、52H、53H、54H、55H單元,以便寫入E2PROM 保存。如果標(biāo)志位20H.0為0,則中斷返回。從而實(shí)現(xiàn)了里程的處理。
圖3-4 T0中斷子程序
下面我們給出T0中斷的子程序:
INTT0: PUSH ACC
PUSH PSW
CLR EA
MOV TH0,#0FEh
MOV TL0,#0Dh
INC 36H
;小計(jì)里程顯示
MOV A,36H
CJNE A,#10,LT03
MOV 36H,#00H
CLR 20H.0
LCALL LT06
;小計(jì)里程進(jìn)位送總里程
INC 37H
MOV A,37H
CJNE A,#10,LT03
MOV 37H,#00H
INC 38H
MOV A,38H
CJNE A,#10,LT03
MOV 38H,#00H
INC 39H
MOV A,39H
CJNE A,#10,LT03
MOV 39H,#00H
LT03: MOV A,36H
;小計(jì)里程送46-49以備送顯示
MOV 46H,A
MOV A,37H
MOV 47H,A
MOV A,38H
MOV 48H,A
MOV A,39H
MOV 49H,A
POP PSW
POP ACC
SETB EA
RETI
LT06: INC 35H
;插入總里程
MOV A,35H
CJNE A,#10,LT04
;45H不等于10,則跳轉(zhuǎn)
MOV 35H,#00H
INC 34H
MOV A,34H
CJNE A,#10,LT04
;44H不等于10,則跳轉(zhuǎn)
MOV 34H,#00H
INC 33H
MOV A,33H
CJNE A,#10,LT04
MOV 33H,#00H
INC 32H
MOV A,32H
CJNE A,#10,LT04
MOV 32H,#00H
INC 31H
MOV A,31H
CJNE A,#10,LT04
;41H不等于10,則跳轉(zhuǎn)
MOV 31H,#00H
INC 30H
MOV A,30H
CJNE A,#10,LT04
MOV 30H,#09H
MOV 31H,#09H
MOV 32H,#09H
MOV 33H,#09H
MOV 34H,#09H
MOV 35H,#09H
LT04: SETB 20H.0
RET
3.1.2 里程的顯示
LCD顯示子程序是里程顯示中的難點(diǎn),其關(guān)鍵在于PCF8566的應(yīng)用。其中也用到I2C總線,這一點(diǎn)和讀、寫子程序一樣,但比它要復(fù)雜一些。見圖3-5所示。
圖3-5 LCD顯示子程序
在LCD顯示子程序中,先送器件地址接著送器件的控制命令,根據(jù)“里程顯示電路的設(shè)計(jì)”這一小節(jié)我們知道,控制命令有四個(gè)字節(jié),但因?yàn)槲覀冎挥幸粋€(gè)LCD顯示芯片,故省去了器件選擇控制命令這一字節(jié)。這個(gè)子程序在主程序中循環(huán)調(diào)用,具體應(yīng)用見附錄E。
基于紅外線的電燈亮度遙控器的設(shè)計(jì)
原理簡介:
一、編碼格式
紅外遙控輸出40KHz的載波編碼,改變R3大小可以改變發(fā)射距離。遙控器采用脈沖個(gè)數(shù)編碼,不同的脈沖個(gè)數(shù)代表不同的碼。電燈的亮度可分別用不同的脈沖個(gè)數(shù)來控制。為了使接收可靠,第一位碼寬為3ms,其余為1ms,遙控碼幀間隔大于10ms。
二、遙控碼發(fā)射
當(dāng)某一個(gè)按鍵按下時(shí),單片機(jī)先讀出鍵值,然后根據(jù)鍵值設(shè)定遙控碼的脈沖個(gè)數(shù),再調(diào)制成40KHz方波由紅外線發(fā)射出去。輸出調(diào)制波如圖3所示。
一、 數(shù)據(jù)幀的接收處理
當(dāng)紅外線接收器輸出脈沖幀數(shù)據(jù)時(shí),第一位碼的低電平將啟動中斷程序,實(shí)時(shí)接收數(shù)據(jù)幀。在數(shù)據(jù)幀接收時(shí),將對第一位起始碼的碼寬進(jìn)行驗(yàn)證,若第一位低電平碼的脈寬小于2ms,將作為錯(cuò)誤碼處理,當(dāng)間隔位的高電平脈沖寬度大于3ms時(shí),結(jié)束接收,然后根據(jù)累加器A中的脈沖個(gè)數(shù),執(zhí)行相應(yīng)輸出口的操作。圖4為紅外線接收器輸出的一幀遙控碼波形。
圖1 紅外發(fā)射電路
圖2 紅外接收電路
10ms
10ms 停止位
1ms
第一位
3ms
1ms
3ms
1ms
幀間隙
10ms
圖3 輸出編碼波形圖 圖4 一幀遙控碼波形
過零檢測電路
過零檢測電路由變壓器、橋式整流和兩個(gè)9013三極管組成。原理自行分析。。。
電燈開關(guān)及亮度控制電路
電燈的開關(guān)受P1.7口控制,也可由可控硅的導(dǎo)通角控制,
單片機(jī)產(chǎn)生可控硅控制的移相脈沖,移相角的改變實(shí)現(xiàn)導(dǎo)通角的改變,即當(dāng)移相角較大時(shí),可控硅的導(dǎo)通角較小,輸出電壓較低,電燈較暗;當(dāng)移相角較小時(shí),可控硅的導(dǎo)通角較大,輸出電壓較高,電燈較亮。當(dāng)P1.6口為低電平時(shí),9012三極管導(dǎo)通,三極管集電極電流驅(qū)動光耦合器導(dǎo)通,使可控硅的G極產(chǎn)生導(dǎo)通電流,觸發(fā)可控硅導(dǎo)通,當(dāng)P1.6口為高電平時(shí),9012三極管、光電耦合器、可控硅都處于截止?fàn)顟B(tài)。
IC卡簡易收費(fèi)裝置的設(shè)計(jì)
在本設(shè)計(jì)中,研究的是IC卡的收費(fèi)裝置,簡單的說就是對IC卡進(jìn)行讀和寫的裝置的研究。這種收費(fèi)裝置也可稱為“讀寫設(shè)備、讀寫器或讀寫終端”。IC卡讀寫裝置的種類很多,功能上也由于不同的需要差別也很大,但就其對卡的操作功能來說,都應(yīng)該具備以下幾個(gè)基本功能:
(1)IC卡的識別和控制。
(2)向IC卡提供其所需的穩(wěn)定的電源與時(shí)鐘信號。
(3)實(shí)現(xiàn)與卡的數(shù)據(jù)交換,并提供相應(yīng)的控制信號。(對于加密數(shù)據(jù)系統(tǒng),應(yīng)提供相應(yīng)的加密解密處理及密鑰管理機(jī)制。提供相應(yīng)的外部控制信息及其它設(shè)備的信息交換)。
2.2 IC卡讀寫器硬件電路設(shè)計(jì)
2.2.1 功能要求
本課題設(shè)計(jì)實(shí)現(xiàn)的通用型接觸式IC卡讀寫器需要實(shí)現(xiàn)以下具體的功能:
(1)能夠?qū)C卡進(jìn)行識別。
(2)為IC提供穩(wěn)定的時(shí)鐘信號。
(3)有顯示裝置顯示對IC卡操作前后,IC卡中的數(shù)據(jù)。
(4)有鍵盤用于對IC卡進(jìn)行具體的操作(數(shù)據(jù)的讀出和寫入)。
2.2.2 模塊框圖
微控制器
微控制器
鍵盤和接口電路
IC卡插座
復(fù)位電路
顯示電路
晶振電路
圖2-1 IC卡讀寫器模塊框圖
2.2.4 IC卡的選擇及讀寫操作
本設(shè)計(jì)中采用的是一種ATMEL公司生產(chǎn)的AT24C02存儲式IC卡。它的存儲容量為2K,2.5~5V低電壓供電,雙線串行接口,雙向數(shù)據(jù)傳輸,它的擦/寫次數(shù)可以達(dá)到10萬次以上,其中保存數(shù)據(jù)的時(shí)間可以達(dá)到100年以上。它是目前國內(nèi)使用最多的IC卡之一。
?AT24C02中帶有片內(nèi)地址寄存器。每寫入或讀出一個(gè)數(shù)據(jù)字節(jié)后,該地址寄存器自動加1,以實(shí)現(xiàn)對下一個(gè)存儲單元的讀寫。所有字節(jié)均以單一操作方式讀取。為降低總的寫入時(shí)間,一次操作可寫入多達(dá)8個(gè)字節(jié)的數(shù)據(jù)。下面是其引腳圖。
圖2-3 AT24C02的引腳圖
圖2-4 AT24C02的設(shè)計(jì)連接圖
上圖2-4是本設(shè)計(jì)中AT24C02的電路連接圖,其中AT24C02的1,2,3腳是三條地址線,用于確定芯片的硬件地址,它們和4號引腳都接地。第8和第4引腳分別接正負(fù)電源。第5腳SDA為串行數(shù)據(jù)的輸入輸出端,數(shù)據(jù)通過這條I2C總線進(jìn)行串行傳輸,它和AT89C52的P1.1口相連接。第6腳是SCL,它是串行時(shí)鐘輸入線,它和AT89C52的P1.0口相連接,SDA和SCL和正電源的之間都要加上一個(gè)上拉電阻,電阻的大小為5.1K。第7腳需要接地,它是用來寫保護(hù)的。
AT24C02中帶有片內(nèi)地址寄存器,每寫入或讀出一個(gè)數(shù)據(jù)字節(jié)后,該地址寄存器自動加1,以實(shí)現(xiàn)對下一個(gè)存儲單元的讀寫。下面對AT24C02的讀寫方式進(jìn)行說明。
SDA和SCL:
在AT24C02中與邏輯控制有關(guān)的引出端線只有兩條:SCL和SDA,所有的地址、數(shù)據(jù)及讀/寫控制命令等信號都從SDA端輸入/輸出。為了區(qū)分SDA線上的數(shù)據(jù)、地址、操作命令以及各種狀態(tài)的“開始”與“結(jié)束”,卡片中設(shè)計(jì)了多個(gè)邏輯控制單元。其中啟動和停止邏輯單元產(chǎn)生控制讀/寫操作的“開始”和“停止”標(biāo)志信號。
“開始”狀態(tài):當(dāng)SCL處于高電平時(shí),SDA從高電平轉(zhuǎn)向低電平,即產(chǎn)生“開始”標(biāo)志信號。
“停止”狀態(tài):當(dāng)SCL處于高電平時(shí),SDA從低電平轉(zhuǎn)向高電平,即產(chǎn)生一個(gè)“停止”標(biāo)志信號,如下圖所示。
圖2-5 讀/寫操作的啟動與停止時(shí)序圖
由圖2-5可以看出SDA和SCL各自通過一個(gè)上拉電阻拉到高電平。當(dāng)SCL為高電平時(shí)對應(yīng)的SDA上的數(shù)據(jù)有效;而當(dāng)SCL為低電平時(shí),允許SDA上的數(shù)據(jù)變化。
數(shù)據(jù)輸入/輸出應(yīng)答邏輯單元產(chǎn)生數(shù)據(jù)輸入/輸出操作應(yīng)答信號。操作是所有的地址和數(shù)據(jù)字都以8位碼串行輸入/輸出于卡片??ㄆ渴盏揭粋€(gè)8位碼長的地址碼或數(shù)據(jù)字后,都以置SDA線為低電平方式“確認(rèn)”應(yīng)答信號。其波形如下圖所示。
圖2-6 輸入/輸出的確認(rèn)時(shí)序圖
IC卡的寫操作:
在器件地址碼之后,緊跟著的是字節(jié)地址碼。地址碼長度為八位。時(shí)序中的數(shù)據(jù)為寫字節(jié)時(shí),由IC卡讀/寫器中的單片機(jī)在SDA發(fā)送一個(gè)八位碼長的數(shù)據(jù);卡片每收到一個(gè)數(shù)據(jù)字節(jié)后,都要通過SDA回送一個(gè)“確認(rèn)”信號(ACK)。寫操作時(shí)序圖如下所示。
圖2-7 寫操作時(shí)序圖
IC卡的讀操作:
讀操作有三種:現(xiàn)行地址讀、隨機(jī)地址讀及順序讀。
(1)現(xiàn)行地址讀:如果最后一次操作的地址在N,則現(xiàn)行地址為N+1。
(2)隨機(jī)地址讀:從選定的地址單元開始讀,時(shí)序中器件地址和字地址概念同寫操作,不同的是,IC卡讀/寫器中的單片機(jī)在給出數(shù)據(jù)字地址碼之后,不發(fā)生任何數(shù)據(jù)字,而是在卡片發(fā)出“確認(rèn)”應(yīng)答之后,又發(fā)出一個(gè)“開始”狀態(tài),進(jìn)入“現(xiàn)行地址讀”操作。單片機(jī)讀如1個(gè)數(shù)據(jù)字后,使SDA處于高電平,隨后產(chǎn)生一個(gè)“停止”狀態(tài),結(jié)束。
圖2-8 讀操作時(shí)序圖
(3)順序讀:可以從“現(xiàn)行地址讀”和“隨機(jī)地址讀”開始。當(dāng)IC卡讀/寫器中的單片機(jī)收到第一個(gè)數(shù)據(jù)字后,不發(fā)“停止”狀態(tài),而是回答一個(gè)“確認(rèn)”信號。一旦卡片收到單片機(jī)發(fā)出的“確認(rèn)”信號,則將卡片內(nèi)地址計(jì)數(shù)器的地址自動加1,并將此地址單元中的數(shù)據(jù)從SDA線上串行輸出。只要單片機(jī)收到數(shù)據(jù)字后回答“確認(rèn)”信號,順序讀操作就繼續(xù)進(jìn)行,直到單片機(jī)發(fā)出“停止”信號為止。
IC卡的芯片操作地址(器件地址)
表2-1 AT24C02的操作地址
1
0
1
0
A2
A0
A1
R/W
2.2.6 讀寫器的鍵盤電路
在本設(shè)計(jì)中要求IC卡讀/寫終端除了完成基本的IC卡數(shù)據(jù)讀寫功能,還要提供其他功能。脫機(jī)型讀寫器要求可以脫離上位機(jī)獨(dú)立工作,所以要求IC卡讀/寫器要有鍵盤和顯示功能作為用戶的操作界面。
操作界面是用戶是對設(shè)備進(jìn)行操作和控制的接口,一般包括鍵盤和顯示。用戶根據(jù)顯示的提示,使用鍵盤輸入命令,從顯示得到設(shè)備輸出的結(jié)果。這一部分是人機(jī)對話的部分,是人在使用機(jī)器時(shí)和機(jī)器對話的窗口。
鍵盤實(shí)質(zhì)上是一組按鍵開關(guān)的集合,控制CPU通過按鍵來識別特定的用戶命令 從而轉(zhuǎn)入相應(yīng)的程序來執(zhí)行用戶命令。鍵盤的軟硬件設(shè)計(jì)涉及下面幾個(gè)方面的問題。
(1)按鍵的確認(rèn):
鍵的閉合與否反應(yīng)在電壓上就是呈現(xiàn)出高電平或低電平,如果高電平表示斷開,那么低電平則表示閉合,通過電平的高低狀態(tài)的檢測便可確認(rèn)鍵按下與否。
圖2-10 按鍵的抖動示意圖
常見的鍵盤都是機(jī)械開關(guān)式的,由于機(jī)械咬合的特性以及操作人員手部的不穩(wěn)定,在按鍵閉合和松開的瞬間會產(chǎn)生抖動的現(xiàn)象,如上圖2-10所示。抖動現(xiàn)象一般持續(xù)10ms左右的時(shí)間。如果不采取措施消除抖動干擾,在程序中就會出現(xiàn)一個(gè)按鍵被反復(fù)按下的錯(cuò)誤。這個(gè)時(shí)候我們就要想辦法消除鍵盤的抖動,常用的消除抖動的方法有硬件和軟件消除兩種方法。
在硬件上通常采用的是雙D觸發(fā)器構(gòu)成RS觸發(fā)器,通過分析RS觸發(fā)器的特性可以知道,輸入端有微小的抖動對輸出的影響是非常小的,這種電路也常使用在單按鍵電路中,在本設(shè)計(jì)中采用的鍵盤的按鍵有16個(gè)用硬件消除抖動的方法就顯得太麻煩了,因此在設(shè)計(jì)中采用的是軟件消除的辦法,軟件消除的方法很多,最常用的方法是延遲操作,其原理就是在讀取第一個(gè)鍵值后,延遲一段時(shí)間后,再次讀取鍵值,判斷和前一次讀取的鍵值是否相同,如果相同就認(rèn)為讀取了正確的鍵值。
(2)按鍵接口設(shè)計(jì)和按鍵識別方法:
按鍵接口設(shè)計(jì)有兩種方法,獨(dú)立式按鍵和矩陣式鍵盤。
獨(dú)立式按鍵是各鍵互相獨(dú)立,每個(gè)按鍵各接一根輸入線,在沒有鍵按下的時(shí)候,P1口的電平是高電平,當(dāng)有其中有鍵被按下的時(shí)候,和那個(gè)被按下的鍵相對應(yīng)的P1口的就接地,這時(shí)其電平就會變成低電平,所以判斷獨(dú)立式鍵盤的哪個(gè)鍵被按下很簡單,只要檢測輸入線的電平就可以來識別按鍵的狀態(tài)。這種方法電路配置靈活,軟件結(jié)構(gòu)簡單,但每個(gè)按鍵需占用一根輸入口線,I/O資源浪費(fèi)大。故此方法只適用于按鍵少,或其他控制功能很簡單的場合。矩陣式鍵盤適用于按鍵數(shù)量較多的場合,它把鍵盤輸入線分為行線和列線,按鍵位于行、列的交叉點(diǎn)上。按鍵的識別需要軟件分別掃描行線和列線,根據(jù)掃描結(jié)果判斷具體按下的按鍵。下圖2-11是獨(dú)立式按鍵的硬件設(shè)計(jì)圖。
圖2-11 獨(dú)立式按鍵硬件設(shè)計(jì)圖
由上圖可看出,獨(dú)立式鍵盤的每一個(gè)按鍵都要占用一根輸入口線,I/O資源的浪費(fèi)很厲害,因此它只適用于一些按鍵的數(shù)量較少的,或者是控制功能的要求很簡單的設(shè)計(jì),本設(shè)計(jì)的鍵盤的按鍵的數(shù)量有16個(gè)之多,這種獨(dú)立式的按鍵設(shè)計(jì)方法很顯然不適合本設(shè)計(jì)。所以在本設(shè)計(jì)中采用的是4乘4的16個(gè)按鍵的鍵盤,下圖是其硬件電路示意圖。
圖2-12 矩陣式按鍵硬件設(shè)計(jì)圖
由上面兩副圖比較就可以看出,矩陣式結(jié)構(gòu)的鍵盤顯然比獨(dú)立式要復(fù)雜一些,識別也要復(fù)雜一些,上圖2-12中,列線通過電阻接正電源,并將行線所接的單片機(jī)的I/O口作為輸出端,而列線所接的I/O口則作為輸入。這樣,當(dāng)按鍵沒有按下時(shí),所有的輸出端都是高電平,代表無鍵按下。行線輸出是低電平,一旦有鍵按下,則輸入線就會被拉低,這樣,通過單片機(jī)讀入輸入線的狀態(tài)就可得知是否有鍵按下了。
確定矩陣式鍵盤上何鍵被按下有幾種方法,下面介紹的掃描法就是一種“行掃描
法”。行掃描法又稱為逐行(或列)掃描查詢法,是一種最常用的按鍵識別方法,如上圖所示鍵盤,下面我們和具體的分析。
(1) 判斷有無鍵按下:
首先將全部列線置低電平,然后檢測行線的狀態(tài)。只要有一行的電平為低,則表示鍵盤中有鍵被按下,而且閉合的鍵位于低電平線與4根行線相交叉的4個(gè)按鍵之中。若所有行線均為高電平,則鍵盤中無鍵按下。
(2)判斷閉合鍵所在的位置:
在確認(rèn)有鍵按下后,即可進(jìn)入確定具體閉合鍵的過程。其方法是:依次將列線置為低電平,即在置某根列線為低電平時(shí),其它線為高電平。在確定某根列線位置為低電平后,再逐行檢測各行線的電平狀態(tài)。若某行為低,則該行線與置為低電平的列線交叉處的按鍵就是閉合的按鍵。
鍵盤掃描只是CPU的工作內(nèi)容之一,CPU在忙于各項(xiàng)工作時(shí),如何處理鍵盤的輸入取決于鍵盤的工作方式,鍵盤工作方式的選擇應(yīng)根據(jù)應(yīng)用系統(tǒng)中CPU工作的忙、閑情況而定。通常鍵盤工作方式有三種:編程掃描、定時(shí)掃描和中斷掃描。
(1)編程掃描:
CPU反復(fù)地掃描鍵盤,等待用戶的輸入命令,而執(zhí)行鍵入命令或處理輸入數(shù)據(jù)時(shí),CPU不再響應(yīng)輸入要求,直到CPU返回重新掃描鍵盤為止。
(2)定時(shí)掃描:
它的工作方式是利用單片機(jī)內(nèi)部定時(shí)器產(chǎn)生定時(shí)中斷,CPU響應(yīng)定時(shí)器中斷后對鍵盤進(jìn)行掃描,在有鍵按下時(shí)識別出該鍵并執(zhí)行相應(yīng)功能程序。
(3)中斷方式:
在沒有鍵按下時(shí),不占用CPU處理時(shí)間,只有當(dāng)有鍵按下時(shí)產(chǎn)生鍵盤中斷,由中斷程序識別鍵并執(zhí)行功能程序,這種方式對CPU的資源的使用非常的節(jié)省,因?yàn)樗跊]有按鍵按下的時(shí)候,并不需要CPU對其進(jìn)行掃描,所以這種方法是使用最多的一種。
本設(shè)計(jì)中鍵盤的各個(gè)按鍵和功能。
1
2
3
E
4
7
A
5
8
0
6
9
C
D
B
F
圖2-13 鍵盤的按鍵圖
可以看到鍵盤有0~9十個(gè)數(shù)字鍵,A,B,C,D,E,F(xiàn)是五個(gè)不同的功能鍵,用于實(shí)現(xiàn)一些功能的操作。
(1)0~9是十個(gè)數(shù)字鍵,用于向卡中輸入具體的數(shù)值。
(2)A:取消鍵。
(3)B:確認(rèn)鍵。進(jìn)行一步操作后進(jìn)行確認(rèn)時(shí)按下。
(4)C:存款鍵,按下后,可以向卡中寫入一定數(shù)額的錢數(shù),然后確認(rèn)。
(5)D:繳費(fèi)鍵,按下后,再輸入要花費(fèi)的數(shù)額,然后確認(rèn)。
(6)E:查詢鍵,用于查詢卡中錢數(shù)。
(7)F:退格鍵,操作錯(cuò)誤時(shí)恢復(fù)。
2.2.7 顯示電路的設(shè)計(jì)
應(yīng)用系統(tǒng)中常用的顯示器有發(fā)光二極管顯示器,簡稱LED;液晶顯示器,簡稱LCD;熒光顯示器。前面兩種顯示器使用最多,本設(shè)計(jì)中采用的是LED,下面就對其顯示原理和使用方法做簡單的說明。
LED顯示器由發(fā)光二極管顯示字段組成,在本設(shè)計(jì)中采用的是7段數(shù)碼管作為顯示裝置7段數(shù)碼管分為8段:A,B,C,D,E,F(xiàn),G,DP其中DP是小數(shù)點(diǎn),數(shù)碼管常用的有10根管腳,其中有兩個(gè)管腳作為公共端,相互之間是連通的。如圖2-15所示,1號腳和6號腳是公共端,因?yàn)檫@是個(gè)共陰極的數(shù)碼管,所以它們與地相連。下圖2-14是LED的管腳圖,2-15是其內(nèi)部電路圖。
圖2-14 LED的管腳圖
圖2-15 LED的內(nèi)部電路圖
LED顯示方式分靜態(tài)顯示和動態(tài)顯示。靜態(tài)顯示時(shí)顯示器中的各位相互獨(dú)立,而且各位顯示字符一經(jīng)確定,相應(yīng)鎖存器的輸出將維持不變,直到單片機(jī)將另一個(gè)要顯示的字符送到為止。這種顯示方式接口編程容易,管理簡單,數(shù)據(jù)穩(wěn)定占用的CPU的時(shí)間少,顯示的時(shí)候每一個(gè)顯示器都要占用一個(gè)I/O口。
靜態(tài)顯示的優(yōu)點(diǎn)在于,靜態(tài)顯示數(shù)據(jù)顯示穩(wěn)定,占用很少的CPU時(shí)間,但是每個(gè)顯示單元都需要單獨(dú)的顯示驅(qū)動電路,使用的電路硬件較多,有幾個(gè)數(shù)碼管就需要幾個(gè)I/O鎖存器,這樣對資源的浪費(fèi)比較嚴(yán)重,在顯示的位數(shù)比較多時(shí),就不適合。
在顯示位較多時(shí),一般都采用動態(tài)顯示方式。LED動態(tài)顯示時(shí),動態(tài)顯示只需要一個(gè)顯示驅(qū)動電路,形成段選線的多路復(fù)用。而各位的共陽極或共陰極分別由相應(yīng)的I/O口線控制,實(shí)現(xiàn)各位的分時(shí)選通。若要各位LED能夠顯示出與本位相應(yīng)的顯示字符,就必須采用掃描顯示方式,即在某一時(shí)刻只讓某一位的位選線處于選通狀態(tài),而其他各位的位選線處于關(guān)閉狀態(tài),同時(shí),段選線上輸出相應(yīng)位要顯示字符的字形碼,這樣同一時(shí)刻只有一位顯示出字符。在下一時(shí)刻,只讓下一位的位選線處于選通狀態(tài),同時(shí),在段選線上輸出相應(yīng)位將要顯示字符的字符碼。只要每位顯示間隔足夠短,如此循環(huán)就可以使各位顯示出將要顯示的字符,達(dá)到顯示目的。
動態(tài)顯示會存在閃爍現(xiàn)象,但是如果LED不同位顯示的時(shí)間間隔選擇的好的話,由于人眼的暫留作用,人眼是無法分辨的,感覺就像是一組穩(wěn)定的數(shù)據(jù)。
上面所敘是LED顯示的基本原理,根據(jù)這些基本原理,選擇不同的軟硬件方法都可以實(shí)現(xiàn)LED顯示。在本設(shè)計(jì)中選用的就是LED的動態(tài)顯示,其中段選線占用一個(gè)8位I/O口,由74LS164擴(kuò)展得到,如下圖2-16所示。在設(shè)計(jì)中單片機(jī)AT89C52的P0.0口和P0.1口用于和74L164相連接,它門分別與74L164的A,B和CLK相連接,剩下的P0口的6個(gè)I/O口作為位選。74L164的作用是用于驅(qū)動數(shù)碼管。
圖2-16 驅(qū)動顯示的連接圖
由圖可以看出,由于各位的段選線并聯(lián),段碼的輸出對各位來說都是相同的。因此,同一時(shí)刻,如果各位位選線都處于選通的話,6位LED將顯示相同的字符。所以若要各位LED能夠顯示出我們想要的字符,就必須采用掃描顯示方式,即在同一時(shí)刻,只讓某一位的位選線處于選通狀態(tài),而其他各位的位選線處于關(guān)閉狀態(tài),同時(shí),段選線上輸出相應(yīng)位要顯示字符的段碼。這樣同一時(shí)刻,6位LED中只有選通的那一位顯示出字符,而其他三位則是熄滅的。同樣,在下一時(shí)刻,只讓下一位的位選線處于選通狀態(tài),而其他各位的位選線處于關(guān)閉狀態(tài),同時(shí),在段選線上輸出相應(yīng)位要顯示字符的段碼,則同一時(shí)刻,只有選通位顯示出相應(yīng)的字符,而其他各位則是熄滅的。如此循環(huán)下去,就可以使各位顯示出將要顯示的字符,雖然這些字符是在不同時(shí)刻出現(xiàn)的,而且同一時(shí)刻,只有一位顯示,其他各位熄滅,但由于LED顯示器的余輝和人眼的視覺暫留作用,只要每位顯示間隔時(shí)間足夠短,則可造成多位同時(shí)亮的假象,達(dá)到同時(shí)顯示的目的。
設(shè)定LED不同位顯示的時(shí)間間隔也同樣很重要,因?yàn)榘l(fā)光二極管從導(dǎo)通到發(fā)光有一定的延時(shí)導(dǎo)通時(shí)間,如果時(shí)間間隔太短的話,由于發(fā)光太弱,人眼根本就看不清楚。但是發(fā)光的時(shí)間也不能太長,因?yàn)長ED顯示有一定的臨界閃爍頻率,而且時(shí)間越長,占用的CPU時(shí)間也越多。本設(shè)計(jì)中設(shè)定的時(shí)間間隔為1ms。
LCD顯示:
LCD是一種極低功耗顯示器,目前,高分辨率的LCD點(diǎn)陣式顯示器有顯示靈活,顯示圖型字符美觀等優(yōu)點(diǎn),在很多系統(tǒng)中應(yīng)用非常廣泛。但是LCD的顯示控制比較復(fù)雜,所以在設(shè)計(jì)中沒有選用,在這里就不具體的介紹了。
第3章 軟件設(shè)計(jì)
3.1 系統(tǒng)主程序流程圖
為實(shí)現(xiàn)對IC卡的卡識別及讀/寫操作、數(shù)碼動態(tài)顯示及按鍵識別處理。本設(shè)計(jì)系統(tǒng)軟件包括主程序、IC卡識別程,IC卡讀/寫操作子程序、各功能按鍵子程序、動態(tài)顯示及按鍵檢測子程序等。其中IC卡識別子程序用于自動識別插入卡的類型。確定相應(yīng)的讀/寫操作時(shí)序。并確認(rèn)該卡的有效性。
系統(tǒng)的主程序框圖
開始
初始化
顯示程序
有卡插入?
循環(huán)掃描鍵盤顯示
完成一次操作后返回
對IC卡讀/寫
圖3-1 系統(tǒng)主程序流程圖
開機(jī)后,系統(tǒng)處于待機(jī)的狀態(tài),不斷的查詢P3.2腳的電平,當(dāng)有卡插入讀寫器卡座的時(shí)候,P3.2腳變?yōu)楦唠娖?,這時(shí),單片機(jī)檢測到P3.2腳高電平信號時(shí),說明有卡擦入,在判斷插入的卡為有效卡后,就開始對IC卡進(jìn)行操作。完成一次操作后返回。
3.2 各部分程序設(shè)計(jì)
3.2.1 LED顯示器程序設(shè)計(jì)
本設(shè)計(jì)用到的是動態(tài)顯示,發(fā)送數(shù)據(jù)的方式是移位發(fā)送的。系統(tǒng)給R3單元附數(shù)字8,代表要發(fā)送8位數(shù)字,然后移位發(fā)送,發(fā)送完畢后,由COM口進(jìn)行片選,最后顯示出來,程序流程圖如圖3-2所示。
R3→8
移位發(fā)送
R3=0?
片選
返 回
圖3-2 顯示器程序流程圖
3.2.2 鍵盤程序設(shè)計(jì)
鍵盤一共有0~9十個(gè)數(shù)字鍵,還有6個(gè)功能鍵分別是確認(rèn)鍵,取消鍵,查詢鍵,繳費(fèi)鍵,存款鍵,退格鍵。
確認(rèn)子程序:確定繳費(fèi)和存款操作(用B判斷)并寫入顯示緩沖區(qū)和IC卡中。
取消子程序:清除輸入數(shù)據(jù)緩沖區(qū),并返回INT0。
查詢子程序:查詢IC卡中的數(shù)據(jù),然后將IC卡中數(shù)據(jù)賦給顯示緩沖區(qū),并返回INT0。
退格子程序:緩沖區(qū)數(shù)據(jù)向后移一位(采用寄存器RX實(shí)現(xiàn))。
下圖3-3是鍵盤程序的流程圖。
確認(rèn)子程序
取消子程序
查詢子程序
繳費(fèi)子程序
存款子程序
退格子程序
確認(rèn)鍵
取消鍵
查詢鍵
繳費(fèi)鍵
存款鍵
退格鍵
有按鍵
讀卡并顯示
圖3-3 鍵盤程序流程圖
3.3 系統(tǒng)總體程序設(shè)計(jì)
在單片機(jī)開始工作之后,它不停的檢測P3.2口,P3.2口為高電平的時(shí)候說明沒有卡插入,當(dāng)卡插入后,P3.2口被置為低電平,這時(shí)首先檢查插入的卡是否是有效的卡,
如果是無效的卡程序返回上一級狀態(tài),插入的卡為有效卡時(shí),首先讀取卡中的信息,并在顯示器上顯示出來,用戶這時(shí)就可以通過鍵盤和顯示器對卡進(jìn)行操作。
在有按鍵按下后系統(tǒng)將掃描具體是哪個(gè)按鍵,然后調(diào)用出此按鍵的子程序,對卡進(jìn)行操作,想要對卡進(jìn)行哪種操作,就按下與其相對應(yīng)的功能鍵,當(dāng)對IC卡進(jìn)行繳費(fèi)或存款的操作時(shí),在輸入想要繳費(fèi)的數(shù)值或存款的數(shù)值后需要按下確認(rèn)鍵進(jìn)行確認(rèn)此次操作,顯示器顯示出操作的結(jié)果,就完成了一次操作。然后程序?qū)缴弦患?,等待下一次對卡將要進(jìn)行的操作,如果沒有鍵按下,系統(tǒng)將繼續(xù)掃描,顯示器這時(shí)顯示的是一開始就卡中讀取的信息。下面是系統(tǒng)程序的流程圖。
開始
初始化
有插卡?
卡有效?
顯示卡號并提示PIN
讀卡上信息并傳送和顯示
有卡?
有按鍵?
取消子程序
查詢子程序
退格子程序
繳費(fèi)子程序
存款子程序
有按鍵?
取消鍵
查詢鍵
退格鍵
繳費(fèi)鍵
存款鍵
確認(rèn)鍵
確認(rèn)子程序
圖3-4 系統(tǒng)總體程序流程圖
步進(jìn)電機(jī)式溫度表的設(shè)計(jì)
本方案設(shè)計(jì)出的步進(jìn)電機(jī)式溫度表其溫度傳感電路、顯示系統(tǒng)均與方案一相同,唯一不同的便是單片機(jī)控制步進(jìn)電機(jī)系統(tǒng)的設(shè)計(jì),下面對此系統(tǒng)做重點(diǎn)介紹。
圖2-6 單片機(jī)控制步進(jìn)電機(jī)系統(tǒng)
圖2-6便是本方案中的單片機(jī)控制步進(jìn)電機(jī)系統(tǒng)原理框圖,從圖可見,本系統(tǒng)采用同頻PWM驅(qū)動器來驅(qū)動步進(jìn)電機(jī)運(yùn)轉(zhuǎn),PWM控制技術(shù)是利用半導(dǎo)體開關(guān)器件的導(dǎo)通與關(guān)斷把直流電壓變成電壓脈沖列,并通過控制電壓脈沖寬度或周期以達(dá)到變壓目的,或者控制電壓脈沖寬度和脈沖列的周期以達(dá)到變壓變頻目的的一種控制技術(shù)。為了實(shí)現(xiàn)高頻運(yùn)行,PWM驅(qū)動電路工作于斬波控制狀態(tài)。斬波驅(qū)動可使繞組電流僅在給定值的極小范圍內(nèi)變化,電流波形近似于矩形波,使電機(jī)高頻輸出力矩增大。
單片機(jī)的輸出接口與驅(qū)動器的CP相連,采用定時(shí)器/計(jì)數(shù)器T0編制程序產(chǎn)生高頻方波脈沖作為電機(jī)高頻運(yùn)行時(shí)驅(qū)動器的時(shí)鐘斬波信號;編制程序產(chǎn)生低頻方波脈沖,作為電機(jī)低頻運(yùn)行時(shí)驅(qū)動器的控制信號,突破了以往用硬件產(chǎn)生方波脈沖的方法,充分利用了單片機(jī)軟件資源。
本方案用軟件設(shè)置各鍵功能,每個(gè)鍵代表電機(jī)的某種狀態(tài),通過不同的鍵實(shí)現(xiàn)電機(jī)各種運(yùn)行狀態(tài)的控制。
本設(shè)計(jì)方案的最大特點(diǎn)是同頻PWM驅(qū)動器的使用,使得電源效率提高,但由于采用斬波驅(qū)動,控制精度不高。
3.1溫度傳感模塊設(shè)計(jì)
3.1.1 芯片的選取及在本設(shè)計(jì)中的應(yīng)用
傳統(tǒng)的車載步進(jìn)電機(jī)式溫度表系統(tǒng)中,對溫度信號的感應(yīng)、轉(zhuǎn)換一般采用溫度傳感器和A/D轉(zhuǎn)換器相結(jié)合的方法,這種方法所設(shè)計(jì)出的溫度傳感電路精度不高,無法滿足現(xiàn)代工業(yè)的需要。隨著科學(xué)技術(shù)的發(fā)展,出現(xiàn)了大量集成芯片,這些芯片的使用,使得硬件電路變的相對簡單,且易編程,逐漸代替了傳統(tǒng)所使用的溫度傳感電路。本設(shè)計(jì)考慮到現(xiàn)代工業(yè)的需求,選用新型傳感芯片DS18B20用于溫度的感應(yīng)、轉(zhuǎn)換,構(gòu)成溫度傳感模塊。以下便對本次所設(shè)計(jì)的溫度傳感模塊做詳細(xì)介紹。
在介紹溫度傳感模塊之前,先對此模塊的核心:DS18B20做一些介紹。
DS18B20是DALLAS公司生產(chǎn)的一線式數(shù)字溫度傳感器,具有3引腳TO-92小體積封裝形式;溫度測量范圍為-55℃~+125℃,本設(shè)計(jì)中的溫度測量范圍為0~120℃??删幊虨?位~12位A/D轉(zhuǎn)換精度,測溫分辨率可達(dá)0.0625℃,被測溫度用符號擴(kuò)展的16位數(shù)字量方式串行輸出;其工作電源既可在遠(yuǎn)端引入,也可采用寄生電源方式產(chǎn)生。
DS18B20內(nèi)部結(jié)構(gòu)如圖3-1所示,主要由4部分組成:64位ROM、溫度傳感器、非揮發(fā)的溫度報(bào)警觸發(fā)器TH和TL、配置寄存器。
其中,DS18B20中的溫度傳感器完成對溫度的測量,用16位符號擴(kuò)展的二進(jìn)制補(bǔ)碼讀數(shù)形式提供,以0.0625℃/LSB形式表達(dá),其中S為符號位。例如+125℃的數(shù)字輸出為07D0H,+25.0625℃的數(shù)字輸出為0191H,-25.0625℃的數(shù)字輸出為FF6FH,-55℃的數(shù)字輸出為FC90H。
圖3-1 DS18B20的內(nèi)部結(jié)構(gòu)
高低溫報(bào)警觸發(fā)器TH和TL、配置寄存器均由一個(gè)字節(jié)的EEPROM組成,使用一個(gè)存儲器功能命令可對TH、TL或配置寄存器寫入。其中配置寄存器的格式如下: 0、 R1 、R0、MSBLSB,R1、R0決定溫度轉(zhuǎn)換的精度位數(shù):R1R0=“00”,9位精度,最大轉(zhuǎn)換時(shí)間為93.75ms;R1R0=“01”,10位精度,最大轉(zhuǎn)換時(shí)間為187.5ms;R1R0=“10”,11位精度,最大轉(zhuǎn)換時(shí)間為375ms;R1R0=“11”,12位精度,最大轉(zhuǎn)換時(shí)間為750ms;未編程時(shí)默認(rèn)為12位精度。
高速暫存器是一個(gè)9字節(jié)的存儲器。開始兩個(gè)字節(jié)包含被測溫度的數(shù)字量信息;第3、4、5字節(jié)分別是TH、TL、配置寄存器的臨時(shí)拷貝,每一次上電復(fù)位時(shí)被刷新;第6、7、8字節(jié)未用,表現(xiàn)為全邏輯1;第9字節(jié)讀出的是前面所有8個(gè)字節(jié)的CRC碼,可用來保證通信正確。
3.1.2電路設(shè)計(jì)
DS18B20與微處理器的接口設(shè)計(jì)有兩種:寄生電源工作方式和外接電源工作方式,在本設(shè)計(jì)中,采用外接電源工作方式,其連接圖如下圖所示。
圖3-2 DS18B20與單片機(jī)接口電路
在本設(shè)計(jì)中,DS18B20作為溫度傳感模塊的核心,實(shí)時(shí)感應(yīng)、轉(zhuǎn)換溫度,供給單片機(jī)控制模塊數(shù)字量,選用單片機(jī)的P3.0口用于同DS18B20進(jìn)行數(shù)據(jù)傳輸。P3.0口為單片機(jī)的串行數(shù)據(jù)接收口,從DS18B20輸出的數(shù)字信號通過此引腳進(jìn)入單片機(jī),進(jìn)而通過兩次輸入值的差值大小控制步進(jìn)電機(jī)正轉(zhuǎn)、反轉(zhuǎn)。
3.3 步進(jìn)電機(jī)驅(qū)動模塊設(shè)計(jì)
3.3.1 步進(jìn)電機(jī)的選型及在本設(shè)計(jì)中的應(yīng)用
步進(jìn)電機(jī)是微特電機(jī)的一種,它是將電脈沖信號轉(zhuǎn)換成相應(yīng)的角位
收藏