機(jī)動(dòng)車尾號(hào)限行提示器
機(jī)動(dòng)車“尾號(hào)限行”的輪號(hào)使不少記性不佳的有車族被限行日期搞得有點(diǎn)暈。特別是那些家里有不止一輛車的人,要分別記住兩輛車兩天限行且對(duì)號(hào)入座,說起來容易,但做起來真的有一點(diǎn)點(diǎn)難度。本文介紹一種機(jī)動(dòng)車尾號(hào)限行控制器,可以解決司機(jī)們的上述煩惱。
一、電路組成及原理
該控制器電路見圖1,它由輸入電路、日期產(chǎn)生電路、LCD顯示電路、輸出控制電路、單片機(jī)和電源組成。自己的車牌尾號(hào)由DIP開關(guān)S1輸入到DS1302芯片中保存,當(dāng)司機(jī)發(fā)動(dòng)汽車時(shí),控制器將自動(dòng)與限行的車牌號(hào)對(duì)比,若當(dāng)天是限行日,則在液晶屏幕上顯示提示信息,同時(shí)切斷啟動(dòng)電機(jī)開關(guān)線,使汽車不能啟動(dòng);若當(dāng)天不是限行日,則汽車即可正常使用。
1. 輸入電路
由于車牌尾號(hào)和日期、時(shí)間不需要經(jīng)常輸入,所以輸入電路采用了DIP開關(guān)S1 和4個(gè)10kΩ電阻組成鍵盤電路,DIP開關(guān)如圖2所示,其優(yōu)點(diǎn)是體積小,可靠性高。S1中的開關(guān)1是限行選擇開關(guān),當(dāng)它處于OFF位置時(shí),取消限行管制,該控制器不起作用。只有當(dāng)它處于ON位置時(shí),機(jī)動(dòng)車尾號(hào)限行控制器才起作用。開關(guān)2是功能選擇開關(guān),可以選擇不同的輸入功能。開關(guān)3是數(shù)字“加”鍵,開關(guān)4是數(shù)字“減”鍵。通過2、3、4開關(guān)的配合使用可設(shè)置控制器的初始年、月、日、時(shí)、分、秒和自己的車牌尾號(hào)。
圖1 機(jī)動(dòng)車尾號(hào)限行控制器電路
圖2 DIP開關(guān)
2. 日期產(chǎn)生電路
日期產(chǎn)生電路的芯片型號(hào)是DS1302,其引腳圖見圖3 。它是一種高性能低功耗時(shí)鐘芯片,包括實(shí)時(shí)時(shí)鐘/日歷和31 字節(jié)的靜態(tài)RAM,可實(shí)時(shí)地對(duì)秒、分、時(shí)、日、周、月以及閏年進(jìn)行計(jì)數(shù)處理。31字節(jié)的高速RAM通過外接充電電池可長期保存數(shù)據(jù)。正常工作時(shí)DS1302芯片還能慢速為電池充電。它能在2.5~5.5V 電源下可靠工作,在2.5V時(shí)耗電小于300nA。在主電源關(guān)閉的情況下,能保持時(shí)鐘的連續(xù)運(yùn)行。DS1302芯片有8個(gè)引腳,2、3腳X1、X2是晶體引腳,晶體的頻率是32.768kHz 。1腳是主電源引腳VCC2,8腳是備用電源引腳VCC1,當(dāng)VCC2小于VCC1電壓0.2V以下時(shí),VCC1給DS1302芯片供電。5腳是復(fù)位引腳,RST低電平有效。7腳是串行時(shí)鐘引腳SCLK。6腳是串行數(shù)據(jù)輸入/輸出腳I/O,它和SCLK配合與單片機(jī)交換數(shù)據(jù)。4腳是電源地。
圖3 DS1302引腳圖
圖4 電源電路
3. LCD顯示電路
LCD顯示電路采用的是12232F,它內(nèi)置了8192個(gè)16×16點(diǎn)漢字和128個(gè)16×8點(diǎn)ASCII字符集。它主要由行驅(qū)動(dòng)/列驅(qū)動(dòng)器及128×32全點(diǎn)陣液晶顯示器組成??赏瓿蓤D形顯示,也可以顯示7.5×2個(gè)(16×16點(diǎn)陣)漢字。它與單片機(jī)采用串行方式交換數(shù)據(jù)。1 2 2 3 2 F 有8 個(gè)引腳, 1 腳是電源地V S S 。2 腳是電源正V D D(3.0~5.5V)。3腳是對(duì)比度調(diào)整V l c d 。4 腳是串行同步時(shí)鐘輸入腳CLK,上升沿時(shí)讀取SID數(shù)據(jù)。5腳是串行數(shù)據(jù)輸入腳SID。6腳是片選腳,高電平有效。7腳是背光源正BL+。8腳是背光源負(fù)BL-。
4. 輸出控制電路
輸出控制電路由R2、VT1、VD1、K1組成。其中VD1是保護(hù)管,避免VT1截止時(shí)K1產(chǎn)生的感應(yīng)電壓把VT1損壞。當(dāng)控制系統(tǒng)判斷出今日該車尾號(hào)限行時(shí),則在IC2的P1.3輸出一個(gè)高電平使VT1飽和導(dǎo)通,K1線圈得電,常閉觸點(diǎn)斷開,機(jī)動(dòng)車啟動(dòng)開關(guān)線斷開,使機(jī)動(dòng)車不能發(fā)動(dòng)。同時(shí)在LCD顯示屏上顯示“今日不能開車”的信息提醒司機(jī)注意。
5. 單片機(jī)和電源
為了便于大家制作,本控制器選用AT89C2051為控制核心。由于它內(nèi)部程序存儲(chǔ)器為Flash,所以修改內(nèi)部程序十分方便快捷,只要配備一個(gè)可以編程89C2051的編程器即可。調(diào)試人員可以采用程序編輯、編譯、固化和插到電路板中試驗(yàn)這樣反復(fù)循環(huán)的方法,對(duì)大多數(shù)人來說,這種調(diào)試方法并不困難。AT89C2051是20引腳的與8051兼容的8位高性能單片機(jī)。圖1中C1、C2、晶體與單片機(jī)內(nèi)部電路組成了時(shí)鐘電路。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時(shí)鐘芯片的編程。通過輸入模塊程序,給DS1302設(shè)置初始的年、月、日及時(shí)間的初值,然后輸入自己的車牌尾號(hào)。
程序首先檢查與S1的開關(guān)2相連的P3.1腳,每檢測到一個(gè)脈沖,“功能選擇”變量值加1。具體要輸入什么參數(shù),由變量“功能選擇”的數(shù)值決定,見附表。
圖5 程序流程圖
附表 功能鍵說明
再檢查與S1的開關(guān)3相連的P3.2腳,每檢測到一個(gè)脈沖,給相應(yīng)的變量加1。例如“功能選擇”變量=7,表示要輸入車牌尾號(hào)。P3.2腳每得到一個(gè)脈沖,車牌尾號(hào)變量加1。與S1的開關(guān)3相連的P3.3腳,每輸入一個(gè)脈沖,給相應(yīng)的變量減1。
顯示模塊主要涉及對(duì)12232F芯片進(jìn)行編程,包括液
晶屏初始化部分程序和寫命令和數(shù)據(jù)到12232F芯片的程序。其中液晶屏初始化部分程序放在總程序的初始化部分。由于12232F芯片本身內(nèi)置8192個(gè)16×16點(diǎn)漢字庫和128個(gè)16×8點(diǎn)ASCII字符集圖形點(diǎn)陣庫,所以對(duì)它的編程比較簡單。 在控制輸出模塊程序中,首先檢測P3.0腳,它與S1的開關(guān)1相連,當(dāng)P3.0=0時(shí)表示取消限行管制,使P1.3腳輸出為“0”,三極管VT1截止,繼電器K1不動(dòng)作,K1的常閉觸點(diǎn)處于閉合狀態(tài),汽車啟動(dòng)機(jī)開關(guān)線接通,司機(jī)可以啟動(dòng)汽車行駛。當(dāng)P3.0=1時(shí),表示要進(jìn)行限行管制,此時(shí)程序從DS1302芯片中取出當(dāng)天日期,并計(jì)算出當(dāng)日限行號(hào)碼,與該車尾號(hào)進(jìn)行比對(duì),如果相同則使P1.3=1,三極管VT1飽和導(dǎo)通,繼電器K1吸合,K1的常閉觸點(diǎn)斷開,機(jī)動(dòng)車啟動(dòng)開關(guān)線斷開,司機(jī)不能啟動(dòng)汽車行駛,同時(shí)在LCD屏上顯示“今日不能開車”的信息提醒司機(jī)注意。 如果不同則使P1.3=0,三極管VT1截止,繼電器K1不動(dòng)作,K1的常閉觸點(diǎn)處于閉合狀態(tài),汽車啟動(dòng)開關(guān)線接通,司機(jī)可以啟動(dòng)汽車行駛。 |
評(píng)論