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