<meter id="pryje"><nav id="pryje"><delect id="pryje"></delect></nav></meter>
          <label id="pryje"></label>

          新聞中心

          EEPW首頁 > 嵌入式系統(tǒng) > 設(shè)計應(yīng)用 > 機動車尾號限行提示器

          機動車尾號限行提示器

          作者: 時間:2011-02-21 來源:網(wǎng)絡(luò) 收藏

          機動車“尾號限行”的輪號使不少記性不佳的有車族被限行日期搞得有點暈。特別是那些家里有不止一輛車的人,要分別記住兩輛車兩天限行且對號入座,說起來容易,但做起來真的有一點點難度。本文介紹一種機動車尾號限行控制器,可以解決司機們的上述煩惱。

          一、電路組成及原理

          該控制器電路見圖1,它由輸入電路、日期產(chǎn)生電路、LCD顯示電路、輸出控制電路、和電源組成。自己的車牌尾號由DIP開關(guān)S1輸入到DS1302芯片中保存,當(dāng)司機發(fā)動汽車時,控制器將自動與限行的車牌號對比,若當(dāng)天是限行日,則在液晶屏幕上顯示提示信息,同時切斷啟動電機開關(guān)線,使汽車不能啟動;若當(dāng)天不是限行日,則汽車即可正常使用。

          1. 輸入電路

          由于車牌尾號和日期、時間不需要經(jīng)常輸入,所以輸入電路采用了DIP開關(guān)S1 和4個10kΩ電阻組成鍵盤電路,DIP開關(guān)如圖2所示,其優(yōu)點是體積小,可靠性高。S1中的開關(guān)1是限行選擇開關(guān),當(dāng)它處于OFF位置時,取消限行管制,該控制器不起作用。只有當(dāng)它處于ON位置時,機動車尾號限行控制器才起作用。開關(guān)2是功能選擇開關(guān),可以選擇不同的輸入功能。開關(guān)3是數(shù)字“加”鍵,開關(guān)4是數(shù)字“減”鍵。通過2、3、4開關(guān)的配合使用可設(shè)置控制器的初始年、月、日、時、分、秒和自己的車牌尾號。

          圖1 機動車尾號限行控制器電路

          圖2 DIP開關(guān)

          2. 日期產(chǎn)生電路

          日期產(chǎn)生電路的芯片型號是DS1302,其引腳圖見圖3 。它是一種高性能低功耗時鐘芯片,包括實時時鐘/日歷和31 字節(jié)的靜態(tài)RAM,可實時地對秒、分、時、日、周、月以及閏年進行計數(shù)處理。31字節(jié)的高速RAM通過外接充電電池可長期保存數(shù)據(jù)。正常工作時DS1302芯片還能慢速為電池充電。它能在2.5~5.5V 電源下可靠工作,在2.5V時耗電小于300nA。在主電源關(guān)閉的情況下,能保持時鐘的連續(xù)運行。DS1302芯片有8個引腳,2、3腳X1、X2是晶體引腳,晶體的頻率是32.768kHz 。1腳是主電源引腳VCC2,8腳是備用電源引腳VCC1,當(dāng)VCC2小于VCC1電壓0.2V以下時,VCC1給DS1302芯片供電。5腳是復(fù)位引腳,RST低電平有效。7腳是串行時鐘引腳SCLK。6腳是串行數(shù)據(jù)輸入/輸出腳I/O,它和SCLK配合與交換數(shù)據(jù)。4腳是電源地。

          圖3 DS1302引腳圖

          圖4 電源電路

          3. LCD顯示電路

          LCD顯示電路采用的是12232F,它內(nèi)置了8192個16×16點漢字和128個16×8點ASCII字符集。它主要由行驅(qū)動/列驅(qū)動器及128×32全點陣液晶顯示器組成??赏瓿蓤D形顯示,也可以顯示7.5×2個(16×16點陣)漢字。它與采用串行方式交換數(shù)據(jù)。1 2 2 3 2 F 有8 個引腳, 1 腳是電源地V S S 。2 腳是電源正V D D(3.0~5.5V)。3腳是對比度調(diào)整V l c d 。4 腳是串行同步時鐘輸入腳CLK,上升沿時讀取SID數(shù)據(jù)。5腳是串行數(shù)據(jù)輸入腳SID。6腳是片選腳,高電平有效。7腳是背光源正BL+。8腳是背光源負BL-。

          4. 輸出控制電路

          輸出控制電路由R2、VT1、VD1、K1組成。其中VD1是保護管,避免VT1截止時K1產(chǎn)生的感應(yīng)電壓把VT1損壞。當(dāng)控制系統(tǒng)判斷出今日該車尾號限行時,則在IC2的P1.3輸出一個高電平使VT1飽和導(dǎo)通,K1線圈得電,常閉觸點斷開,機動車啟動開關(guān)線斷開,使機動車不能發(fā)動。同時在LCD顯示屏上顯示“今日不能開車”的信息提醒司機注意。

          5. 單片機和電源

          為了便于大家制作,本控制器選用AT89C2051為控制核心。由于它內(nèi)部程序存儲器為Flash,所以修改內(nèi)部程序十分方便快捷,只要配備一個可以編程89C2051的編程器即可。調(diào)試人員可以采用程序編輯、編譯、固化和插到電路板中試驗這樣反復(fù)循環(huán)的方法,對大多數(shù)人來說,這種調(diào)試方法并不困難。AT89C2051是20引腳的與8051兼容的8位高性能單片機。圖1中C1、C2、晶體與單片機內(nèi)部電路組成了時鐘電路。C3、R3構(gòu)成了上電復(fù)位電路。本控制器的電源取自汽車的Acc線,通過7805穩(wěn)壓提供穩(wěn)定的5V電源電壓。電源電路見圖4,其中C1、C2和C3是濾波電容。

          二、程序結(jié)構(gòu)及原理

          該程序用C 語言編寫,其程序結(jié)構(gòu)包括參數(shù)輸入模塊、顯示模塊和控制輸出模塊。在程序的參數(shù)輸入模塊中,主要涉及DS1302時鐘芯片的編程。通過輸入模塊程序,給DS1302設(shè)置初始的年、月、日及時間的初值,然后輸入自己的車牌尾號。

          程序首先檢查與S1的開關(guān)2相連的P3.1腳,每檢測到一個脈沖,“功能選擇”變量值加1。具體要輸入什么參數(shù),由變量“功能選擇”的數(shù)值決定,見附表。

          圖5 程序流程圖

          附表 功能鍵說明

          再檢查與S1的開關(guān)3相連的P3.2腳,每檢測到一個脈沖,給相應(yīng)的變量加1。例如“功能選擇”變量=7,表示要輸入車牌尾號。P3.2腳每得到一個脈沖,車牌尾號變量加1。與S1的開關(guān)3相連的P3.3腳,每輸入一個脈沖,給相應(yīng)的變量減1。

          顯示模塊主要涉及對12232F芯片進行編程,包括液

          晶屏初始化部分程序和寫命令和數(shù)據(jù)到12232F芯片的程序。其中液晶屏初始化部分程序放在總程序的初始化部分。由于12232F芯片本身內(nèi)置8192個16×16點漢字庫和128個16×8點ASCII字符集圖形點陣庫,所以對它的編程比較簡單。

          在控制輸出模塊程序中,首先檢測P3.0腳,它與S1的開關(guān)1相連,當(dāng)P3.0=0時表示取消限行管制,使P1.3腳輸出為“0”,三極管VT1截止,繼電器K1不動作,K1的常閉觸點處于閉合狀態(tài),汽車啟動機開關(guān)線接通,司機可以啟動汽車行駛。當(dāng)P3.0=1時,表示要進行限行管制,此時程序從DS1302芯片中取出當(dāng)天日期,并計算出當(dāng)日限行號碼,與該車尾號進行比對,如果相同則使P1.3=1,三極管VT1飽和導(dǎo)通,繼電器K1吸合,K1的常閉觸點斷開,機動車啟動開關(guān)線斷開,司機不能啟動汽車行駛,同時在LCD屏上顯示“今日不能開車”的信息提醒司機注意。

          如果不同則使P1.3=0,三極管VT1截止,繼電器K1不動作,K1的常閉觸點處于閉合狀態(tài),汽車啟動開關(guān)線接通,司機可以啟動汽車行駛。



          評論


          相關(guān)推薦

          技術(shù)專區(qū)

          關(guān)閉
          看屁屁www成人影院,亚洲人妻成人图片,亚洲精品成人午夜在线,日韩在线 欧美成人 (function(){ var bp = document.createElement('script'); var curProtocol = window.location.protocol.split(':')[0]; if (curProtocol === 'https') { bp.src = 'https://zz.bdstatic.com/linksubmit/push.js'; } else { bp.src = 'http://push.zhanzhang.baidu.com/push.js'; } var s = document.getElementsByTagName("script")[0]; s.parentNode.insertBefore(bp, s); })();