摘 要 如今的生活中機(jī)械鎖已經(jīng)不能滿足人們的要求了,這樣電子密碼鎖就廣泛的運(yùn)用到了生活中,隨著各式各樣的密碼鎖誕生,對(duì)密碼鎖的要求也越來(lái)越高,所以密碼鎖在以后的生活中有著很大的發(fā)展空間。 本次設(shè)計(jì)中的密碼鎖采用的是以單片機(jī)為核心的電路,設(shè)計(jì)出來(lái)的安全性高、成本低、功耗低、易操作的電子密碼鎖。電路中包括了鍵盤電路、顯示電路、報(bào)警電路、開(kāi)鎖電路以及掉電存儲(chǔ)電路。其中鍵盤電路采用的是4*4矩陣型鍵盤,該鍵盤電路可以為單片機(jī)節(jié)省I/O口的使用。為了更好的讓用戶知道輸入的信息,在本設(shè)計(jì)中添加了顯示電路。顯示電路使用的是使用了單片機(jī)的一個(gè)串行口,用74LS247驅(qū)動(dòng)數(shù)碼管發(fā)光顯示數(shù)碼,再使用74LS138控制選位信號(hào)就可以完成該系統(tǒng)的顯示功能。此顯示模塊方便而且簡(jiǎn)單。在安全性能方面,本設(shè)計(jì)中設(shè)計(jì)出了報(bào)警電路,防止外人胡亂使用密碼而產(chǎn)生的不良后果,在輸入密碼錯(cuò)誤三次的時(shí)候,電路就會(huì)發(fā)出報(bào)警并且會(huì)鎖定鍵盤。這樣就可以更好的防止用戶以外的人胡亂操作密碼鎖而造成不必要的損失。在設(shè)計(jì)中因?yàn)橐紤]原件成本的問(wèn)題,所以就用了發(fā)光二極管來(lái)代替密碼鎖開(kāi)鎖的功能,根據(jù)發(fā)光二極管的指示來(lái)判斷密碼鎖是否開(kāi)鎖,在發(fā)光二極管燈亮的時(shí)候,密碼鎖就打開(kāi),發(fā)光二極管燈滅,則表示密碼鎖打開(kāi)失敗。因?yàn)槌鞘械墓╇娨话愫茈y保證百分百的穩(wěn)定,所以考慮到停電時(shí)給用戶帶來(lái)很多的麻煩,所以本設(shè)計(jì)中用到了擁有掉電存儲(chǔ)功能的電路,該電路中主要芯片為AT24CO2,其中包括了電源電路、電子開(kāi)關(guān)自動(dòng)切換電路、蓄電池自動(dòng)充電電路。這樣就在停電的情況下密碼鎖電路依然保持器電路功能。 在本次設(shè)計(jì)中利用的是匯編語(yǔ)言,經(jīng)過(guò)keil的編譯,在protues中仿真,基本實(shí)現(xiàn)了以上的功能。 關(guān)鍵詞:?jiǎn)纹瑱C(jī);4*4矩陣型鍵盤;報(bào)警電路;密碼鎖;開(kāi)鎖電路 ABSTRACT Mechanical lock now lifealready can't satisfy people's request, so that electronic combination lock iswidely used to the life, with the birth of a variety of combination lock, alsomore and more high to the requirement of combination lock, so the combinationlock in later life has very big development space. This combination lock is also used inthe circuit with single-chip microcomputer as the core, designed the highsafety, low cost, low power consumption, easy to operate electronic combinationlock. Includes the keyboard circuit, display circuit, alarm circuit, lockcircuit and electric storage circuit. The keyboard circuit USES is 4 * 4 matrixkeyboard, the keyboard circuit can save MCU I/O port to use. In order to letthe user know the input information, add a display circuit in the design.Display circuit using a serial port is the use of the single chipmicrocomputer, with 74 ls247 drive digital tube light emitting display digital,to use 74 ls138 control function of a signal can be completed the systemdisplay. The display module is convenient and simple. In the field of safetyperformance, we design in the design of the alarm circuit, preventing outsidersadverse consequences as a result of the random use password, input the wrongpassword three times, will send out alarm circuit and will lock the keyboard.So you can better prevent users from outside mishandled combination lock andcause unnecessary loss. Because want to consider in the design of the cost ofthe original, so the light emitting diode was used instead of a combinationlock unlock function, according to the light emitting diode is to determinewhether a combination lock, at the time of led lights, combination lock isopened, led lights, combination lock open failure. Because the city's powersupply, generally it is difficult to guarantee the stability of hundred of, soconsidering the power failure caused a lot of trouble to the user, so thisdesign was used with electrical storage function circuit, main chip in thiscircuit for AT24CO2, including the power supply circuit, electronic automaticswitch, battery charging circuit automatically. Thus in the case of powerfailure combination lock remains device circuit function. Using assembly language, in this designthrough the keil compiler, in protues simulation, basically achieved the abovefunctions. Keyword:SCM;4*4 matrix keyboard; alarm circuit; combination lock; the lock circuit 目 錄
1 方案論證 1.1 設(shè)計(jì)要求 (1)本設(shè)計(jì)為了防止密碼被竊取要求在輸入密碼時(shí)在LED屏幕上顯示 “-”號(hào)。 (2)設(shè)計(jì)開(kāi)鎖密碼位六位密碼的電子密碼鎖。 (3)能夠LED顯示在密碼正確時(shí)顯示“- - - - - -”,密碼錯(cuò)誤時(shí)顯示“000000”,輸入密碼時(shí)顯示鍵入的數(shù)字。 (4)實(shí)現(xiàn)輸入密碼錯(cuò)誤超過(guò)限定的三次電子密碼鎖定。 (5)4×4的矩陣鍵盤其中包括0-9的數(shù)字鍵和A-F的功能鍵 (6)本產(chǎn)品具備報(bào)警功能,當(dāng)輸入密碼錯(cuò)誤時(shí)蜂鳴器響并且LED燈亮。 (7)密碼可以由用戶自己修改設(shè)定(只支持6位密碼),修改密碼之前必須再次輸入密碼,在輸入新密碼時(shí)候需要二次確認(rèn),以防止誤操作 。 1.2 方案比較 方案一:采用數(shù)字電路控制。圖1所示為原理方框圖: file:///C:/Users/ADMINI~1/AppData/Local/Temp/msohtmlclip1/01/clip_image001.gif 圖1 數(shù)字密碼鎖電路方框圖 采用數(shù)字電路設(shè)計(jì)密碼鎖,采用此方案設(shè)計(jì)過(guò)程比較簡(jiǎn)單。其核心控制由74LS112雙JK觸發(fā)器構(gòu)成的數(shù)字邏輯電路,一共采用了9個(gè)輸入鍵,9個(gè)鍵中有4個(gè)是有效的密碼按鍵,其余的則是為干擾設(shè)計(jì)的按鍵,如果按下了干擾的按鍵,鍵盤輸入電路就會(huì)自動(dòng)清零,原先輸入的密碼報(bào)廢,需要輸入新的密碼;對(duì)于用戶輸入密碼的時(shí)間也有控制,如果用戶輸入密碼的時(shí)間超過(guò)了40S的話,電路將會(huì)報(bào)警,電路如果連續(xù)報(bào)警三次的話,電路將會(huì)鎖定鍵盤,并且五分鐘內(nèi)不能使用,以此來(lái)防止其他的人非法操作。電路的組成分為兩大部分:密碼鎖電路和備用電源USP,設(shè)置備用電源則是為了停電做準(zhǔn)備的,否則停電的時(shí)候用戶將會(huì)用不了密碼鎖,這樣會(huì)對(duì)用戶造成很大的麻煩,所以才設(shè)置了備用電源。 密碼鎖電路包含:鍵盤輸入、密碼修改、密碼檢測(cè)、開(kāi)鎖電路、執(zhí)行電路、報(bào)警電路、鍵盤輸入次數(shù)鎖定電路。 方案二:本方案采用是以89S51為核心的單片機(jī)控制方案。利用單片機(jī)的靈活性和豐富的I/0端口,以及其控制的準(zhǔn)確性,實(shí)現(xiàn)密碼鎖的基本功能,不但能實(shí)現(xiàn)基本的密碼鎖功能,還能添加調(diào)電存儲(chǔ)、聲光提示甚至添加遙控控制功能。其原理如圖2所示。 file:///C:/Users/ADMINI~1/AppData/Local/Temp/msohtmlclip1/01/clip_image002.gif 圖2 單片機(jī)控制方案 方案三:采用EDA技術(shù)設(shè)計(jì)六位電子密碼鎖,作為通用電子密碼鎖,主要由三個(gè)部分組成:數(shù)字密碼輸入電路、密碼鎖控制電路和密碼鎖顯示電路。 (1)密碼鎖輸入電路包括時(shí)序產(chǎn)生電路、鍵盤掃描電路、鍵盤譯碼電路等幾個(gè)小的功能電路。 (2) 密碼鎖控制電路包括按鍵數(shù)據(jù)的緩沖存儲(chǔ)電路,密碼的清除、存儲(chǔ)、激活電鎖電路(寄存器清除信號(hào)發(fā)生電路),密碼核對(duì)(數(shù)值比較電路),解鎖電路(開(kāi)/關(guān)門鎖電路)等幾個(gè)小的功能電路。 (3)密碼顯示電路主要是在液晶顯示屏顯示輸入的數(shù)值。 EDA設(shè)計(jì)整個(gè)密碼鎖的總框圖如圖3所示: file:///C:/Users/ADMINI~1/AppData/Local/Temp/msohtmlclip1/01/clip_image003.gif圖3 EDA設(shè)計(jì)整個(gè)密碼鎖的總框圖 1.3 方案的選擇 通過(guò)比較1.2中的三種方案,單片機(jī)這種方案比其它兩種方案活動(dòng)空間要大一些,不僅能實(shí)現(xiàn)密碼鎖的功能而且有著很大的發(fā)展空間,而且還可以對(duì)系統(tǒng)進(jìn)行升級(jí),所以我就采用了第二種方案。 本方案采用是以89S51為核心的單片機(jī)控制方案。利用單片機(jī)的靈活性和豐富的I/0端口,以及其控制的準(zhǔn)確性,實(shí)現(xiàn)密碼鎖的基本功能。 初步的設(shè)計(jì)構(gòu)想如下: 輸入密碼采用的是矩陣鍵盤,包括了10個(gè)數(shù)字鍵和6個(gè)功能鍵。 用LED數(shù)碼管顯示所輸入的密碼,用74JS247驅(qū)動(dòng)數(shù)碼管發(fā)光顯示數(shù)碼,用74LS138控制各位顯示器分時(shí)進(jìn)行顯示。 因?yàn)殚_(kāi)鎖顯示比較麻煩,所以用發(fā)光二極管代替開(kāi)鎖電路,當(dāng)發(fā)光二極管燈亮的時(shí)候則表示密碼正確,并且開(kāi)鎖。 當(dāng)密碼輸入錯(cuò)誤次數(shù)超過(guò)三次的時(shí)候,系統(tǒng)會(huì)發(fā)出警報(bào)。 電源接通后,數(shù)碼管顯示為“000000”,設(shè)置初始密碼為“123456”,在鍵盤上依次按下“123456”時(shí)便會(huì)開(kāi)鎖。這樣可以預(yù)防停電后再次來(lái)電時(shí)沒(méi)有密碼可以用,鎖打不開(kāi)的問(wèn)題。 按“C”鍵,清除顯示器為“000000”。 如果想要重新設(shè)置密碼,則先輸入密碼然后再按“*”鍵。 輸入密碼完成后,按“D”鍵。如果輸入的密碼和設(shè)置的密碼相同,則開(kāi)門。否則顯示器清0。 軟件的設(shè)計(jì)包括了鍵盤值得掃描,LED顯示程序,報(bào)警程序,開(kāi)鎖程序等等。 2 硬件電路及功能模塊設(shè)計(jì) 2.1 AT89S51的芯片簡(jiǎn)介 80S51有40引腳雙列直插式DIP和44引腳方形扁平式QFP共兩種封裝形式。其雙列直插式封裝芯片邏輯符號(hào)參見(jiàn)圖4。 輸入/輸出口線包括了P0.0~P0.7,P1.0~P1.7,P2.0~P2.7,P3.0~P3.7,四個(gè)8位的雙向口線。 地址鎖存控制信號(hào)ALE 在系統(tǒng)擴(kuò)張時(shí),ALE用于控制把P0口輸出低8位的地址送入鎖存器然后存起來(lái),用來(lái)實(shí)現(xiàn)低位的地址和數(shù)據(jù)的分時(shí)傳送。除此之外由于ALE是以1/6晶振頻率所固定的頻率輸出的是正脈沖,這樣就可以作為外部定時(shí)脈沖或外部時(shí)鐘的使用。 EA則是作為訪問(wèn)程序存儲(chǔ)器控制信號(hào)。 當(dāng)EA的號(hào)為低電平的時(shí)候,對(duì)ROM的操作是針對(duì)外部程序存儲(chǔ)器的;而當(dāng)EA的高電平的時(shí)候,對(duì)ROM的讀取操作則是從內(nèi)部存儲(chǔ)器開(kāi)始的,并且可以延續(xù)到外部程序存儲(chǔ)器。 外部程序存儲(chǔ)器讀選通信號(hào) PSEN。 file:///C:/Users/ADMINI~1/AppData/Local/Temp/msohtmlclip1/01/clip_image005.jpg在低電平的時(shí)候讀外部ROM時(shí)PSEN是有效的,用來(lái)實(shí)現(xiàn)外部的ROM的操作。 復(fù)位信號(hào)RST。 當(dāng)輸入的復(fù)位信號(hào)延續(xù)兩個(gè)機(jī)器周期以上高電平為有效,用于王城單片機(jī)的復(fù)位操作。 外部接晶體引線的兩個(gè)端口XTAL1 和XTAL2。 如果使用芯片內(nèi)部時(shí)鐘時(shí)候,那么XTAL1和XTAL2用于外接石英晶體諧振和微調(diào)電容;如果使用的是外部時(shí)鐘,那么這兩個(gè)端口則用于接入外部時(shí)鐘脈沖信號(hào)。 地線Vss +5V電源Vcc 圖4 AT89S51芯片圖 2.2 LED顯示電路 LED顯示電路是為了給使用者能夠更好的操作而設(shè)計(jì)的。該系統(tǒng)是采用的串行顯示方式設(shè)計(jì),使用了單片機(jī)的一個(gè)串行口,用74LS247驅(qū)動(dòng)數(shù)碼管發(fā)光顯示數(shù)碼,再使用74LS138控制選位信號(hào),就可以完成該系統(tǒng)的顯示功能,顯示電路的電路,原理圖如圖5所示。 用P0.0~P0.3接在74LS247的A,B,C,D四個(gè)端口上,74LS247的輸出口接LED的七段顯示;而P0.4~P0.6接74LS138的A,B,C三個(gè)輸入口,74LS138的輸出口接LED的位顯示。通過(guò)程序?qū)崿F(xiàn)數(shù)字和位的控制。 file:///C:/Users/ADMINI~1/AppData/Local/Temp/msohtmlclip1/01/clip_image007.jpg圖5 LED顯示電路 2.3 單片機(jī)最小系統(tǒng)與復(fù)位電路設(shè)計(jì) 最小系統(tǒng)就是單片機(jī)在發(fā)揮具體測(cè)控功能時(shí)所必須的組成部分。其中包括了復(fù)位電路,震蕩電路,輸入以及輸出設(shè)備,電源等。我們簡(jiǎn)單的介紹一下復(fù)位電路,復(fù)位電路顧名思義就是產(chǎn)生復(fù)位信號(hào),當(dāng)復(fù)位信號(hào)送入RST后還要送入片內(nèi)的觸發(fā)器,由片內(nèi)復(fù)位電路在每個(gè)機(jī)器周器的S5P2時(shí)刻對(duì)觸發(fā)器輸出采樣信號(hào),然后由內(nèi)部復(fù)位電路產(chǎn)生復(fù)位操作所要的信號(hào)。一般來(lái)說(shuō)復(fù)位電路包括了上電自動(dòng)復(fù)位和按鍵復(fù)位兩種,本設(shè)計(jì)采用的是上電自動(dòng)復(fù)位。上電自動(dòng)復(fù)位的原理:RST引腳是復(fù)位信號(hào)的輸入端,當(dāng)高電平的復(fù)位信號(hào)持續(xù)兩個(gè)機(jī)器周期以上的有效時(shí)間,則單片機(jī)就會(huì)上電自動(dòng)復(fù)位。上點(diǎn)自動(dòng)復(fù)位時(shí)通過(guò)電容的充電來(lái)實(shí)現(xiàn)的,當(dāng)接受上電的瞬間,RST端電位與Vcc相同,隨著充電電流的減少,RST的電位則漸漸的下降,延續(xù)到復(fù)位信號(hào)無(wú)效。按鍵復(fù)位在這里就不給出過(guò)多的介紹了,兩種復(fù)位電路的原理都差不多。按鍵復(fù)位電路用的是脈沖復(fù)位電路和電平復(fù)位電路兩種。圖6所示為最小系統(tǒng)方框圖: file:///C:/Users/ADMINI~1/AppData/Local/Temp/msohtmlclip1/01/clip_image008.gif 圖6 最小系統(tǒng)方框圖 2.4 晶振電路 89S51內(nèi)部有一個(gè)用于構(gòu)成振蕩器的高增益反相放大器,其中有XTAL2和XTAL1這兩個(gè)引腳,這兩個(gè)引腳分別是該放大器的輸出端和輸入端兩個(gè)端口。外部接的石英晶體和兩個(gè)電容C3、C4 接入放大的反饋電路時(shí),就構(gòu)成了一個(gè)自激振蕩器。振蕩器如圖7所示。這個(gè)振蕩電路對(duì)外接電容C3、C4雖然沒(méi)有嚴(yán)格的大小要求,但是電容容量的大小則會(huì)的振蕩頻率的高低和振蕩工作的穩(wěn)定性以及起振的難易程度還有溫度的穩(wěn)定性產(chǎn)生輕微的影響。如果使用的是石英晶體的話,我在此使用的是33pf的電容。設(shè)計(jì)者當(dāng)然也可以采用外部的時(shí)鐘。出現(xiàn)這種情況時(shí),由外部而來(lái)的時(shí)鐘脈沖則接到XTAL1端,也就是內(nèi)部時(shí)鐘發(fā)生器的輸入端,XTAL2則處于懸空狀態(tài)。通過(guò)上面的整合,所以本設(shè)計(jì)采用圖7的晶振電路: file:///C:/Users/ADMINI~1/AppData/Local/Temp/msohtmlclip1/01/clip_image010.jpg 圖7 晶振電路 2.5 開(kāi)鎖機(jī)構(gòu) file:///C:/Users/ADMINI~1/AppData/Local/Temp/msohtmlclip1/01/clip_image011.gif通過(guò)單片機(jī)送給開(kāi)鎖機(jī)構(gòu),電路則會(huì)驅(qū)動(dòng)電磁鎖吸合,開(kāi)鎖的目的就會(huì)達(dá)到。密碼鎖開(kāi)鎖機(jī)構(gòu)原理如圖8所示: 圖8 密碼鎖開(kāi)鎖機(jī)構(gòu)示意圖 當(dāng)用戶輸入的密碼正確而且是在規(guī)定的時(shí)間內(nèi)輸入的話,單片機(jī)就會(huì)輸出一個(gè)開(kāi)門信號(hào),將這個(gè)信號(hào)送到開(kāi)鎖驅(qū)動(dòng)電路中區(qū),然后便會(huì)驅(qū)動(dòng)電磁鎖,這樣開(kāi)鎖的目的就會(huì)達(dá)到。電路圖如圖9所示。 本次電路的設(shè)計(jì)中,考慮到需要節(jié)省材料,暫時(shí)就用發(fā)光二極管來(lái)代替電磁鎖,發(fā)光二級(jí)管亮的時(shí)候,表示開(kāi)鎖;如果滅,表示鎖沒(méi)有打開(kāi)。 file:///C:/Users/ADMINI~1/AppData/Local/Temp/msohtmlclip1/01/clip_image013.jpg 圖9 密碼鎖開(kāi)鎖機(jī)構(gòu)電路圖 2.6 按鍵電路的設(shè)計(jì) 此次設(shè)計(jì)采用的是行列式鍵盤,為了減少鍵盤與單片機(jī)接口的時(shí)候所占用的I/O線的數(shù)目,在按鍵數(shù)目較多的時(shí)候,通常會(huì)采用這種方法。 在鍵盤中按鍵數(shù)量比較多的時(shí)候,為了減少I/O口的過(guò)多占用,一般情況都會(huì)將按鍵排列成矩陣形式,如圖10所示。在矩陣式鍵盤中,每條垂直線和水平線在交叉處都是不直接連通的,都是通過(guò)一個(gè)按鍵連接起來(lái)的。這樣,一個(gè)端口(如P1口)就可以構(gòu)成4*4=16個(gè)按鍵,這樣會(huì)比直接將端口線用于鍵盤多出了一倍的空間,而且線的數(shù)量越多,區(qū)別就會(huì)越明顯,如果再加上一條線就可以構(gòu)成20的鍵盤了,而直接用端口線則只能多出一鍵(9鍵)。由此可見(jiàn),在需要鍵盤數(shù)量比較多的時(shí)候,采用矩陣法來(lái)做鍵盤是合理的。 掃描原理 把每個(gè)鍵都分成水平和垂直的兩端接入,如果說(shuō)掃描碼是從垂直的入,那就代表那一行所接收到的掃描碼是同一個(gè)bit,而讀入掃描碼的則是水平,掃描的動(dòng)作是先輸入掃描碼,再去讀取輸入的值,經(jīng)過(guò)比對(duì)之后就可知道是哪個(gè)鍵被按下。 鍵盤整體模框圖如圖10所示: file:///C:/Users/ADMINI~1/AppData/Local/Temp/msohtmlclip1/01/clip_image015.jpg圖10 鍵盤整體模框圖 表1 里面給出了4*4矩陣鍵盤的鍵碼,其中的鍵盤行列代碼則表示的是鍵盤被按下去的時(shí)候出現(xiàn)的代碼,低電平有效。例如在按下第一個(gè)按鍵的時(shí)候,第一行的代碼為0111,列的代碼也為0111,這樣我們?cè)O(shè)的第一個(gè)按鍵為0,那么0的鍵碼就出來(lái)了,即為77H,以此類推。 表1 鍵碼表 鍵盤行列代碼 0111 1011 1101 1110
0111 0(77H) 1(B7H) 2(D7H) 3(E7H) 1011 4(7BH) 5(BBH) A(DDH) 7(EBH) 1101 8(7DH) 9(BDH) A(DDH) B(EDH) 1110 C(7EH) D(BEH) E(DEH) F(EEH) 2.7 AT24C02存儲(chǔ)單元的設(shè)計(jì) 掉電存儲(chǔ)單元的設(shè)計(jì)就是為了在掉電的時(shí)候存儲(chǔ)當(dāng)前設(shè)定的。AT24C02出產(chǎn)于ATMEL公司,該芯片為2KB字節(jié)掉電可擦除存儲(chǔ)芯片,采用的是單片機(jī)通訊和兩線串行的總線,最低的電壓為2.5V,額定的電流為1mA,靜態(tài)電流為10mA (5.5V),芯片內(nèi)的資料可以在掉電的情況下存儲(chǔ)四十年左右,而且采用的是DIP封裝(8腳),使用比較方便。其電路如圖11所示。 圖中的R1、R2則是上拉電阻,其作用是為了減少AT24C02的靜態(tài)功耗,因?yàn)锳T24C02的數(shù)據(jù)線和地址線是復(fù)用的,而且采用串口模式傳送數(shù)據(jù),所以只用兩根線SCL(移位脈沖)和SDA(數(shù)據(jù)/地址)與單片機(jī)傳送數(shù)據(jù)。 file:///C:/Users/ADMINI~1/AppData/Local/Temp/msohtmlclip1/01/clip_image017.jpg 圖11 掉電存儲(chǔ)電路原理圖 2.8 密碼鎖的電源電路的設(shè)計(jì) 為了防止停電造成的麻煩,所以準(zhǔn)備了USP后備電源,它包括了城市的供電電路,停電時(shí)的檢測(cè)電路,電子開(kāi)關(guān)的切換電路,蓄電池和蓄電池充電電路組成。 220V的電壓經(jīng)過(guò)變壓器變成12V的交流電壓,然后流經(jīng)橋式整流電路,再由7805穩(wěn)壓變成5V再送往切換電路,本電路的功耗相對(duì)來(lái)說(shuō)比較小,所以就選用10w的小型的變壓器。 電源電路圖如圖12所示: file:///C:/Users/ADMINI~1/AppData/Local/Temp/msohtmlclip1/01/clip_image019.jpg圖12 市電供電電路 2.9 電子開(kāi)關(guān)切換電路 由R1,R2,R3,R4和IC14便組成了一個(gè)電壓比較器,在一般的情況下,V+<V- 這個(gè)時(shí)候IC14輸出的是高電平,常閉開(kāi)關(guān)觸點(diǎn)與城市供電電路想通。在市電斷開(kāi)的時(shí)候,V+>V- IC14輸出的是低電平,由T3和T4組成的電路使繼電器開(kāi)啟,其常開(kāi)觸點(diǎn)將電路和蓄電池連接起來(lái),這樣就可以實(shí)現(xiàn)電路的切換工作,保證了停電的時(shí)候密碼鎖還能正常的工作。 電子開(kāi)關(guān)切換電路電路圖如圖13所示: file:///C:/Users/ADMINI~1/AppData/Local/Temp/msohtmlclip1/01/clip_image021.jpg 圖13 電子開(kāi)關(guān)切換電路 2.10 蓄電池自動(dòng)充電電路 T1,T2構(gòu)成了蓄電池的自動(dòng)充電,這個(gè)電路它在電池充滿后則會(huì)自動(dòng)停止充電操作,當(dāng)D1亮的時(shí)候電池則是在充電,D2的作用是工作指示。R4,R5,T1則構(gòu)成了電壓檢測(cè)電路,當(dāng)蓄電池電壓低的時(shí)候, T1,T2則導(dǎo)通,實(shí)現(xiàn)對(duì)蓄電池充電;充電完成后,則T1,T2截止,停止充電,同時(shí)D1將會(huì)熄滅,電路中C4起到的作用則是濾除電路產(chǎn)生的干擾信號(hào)。 蓄電池自動(dòng)充電電路圖如圖14所示: file:///C:/Users/ADMINI~1/AppData/Local/Temp/msohtmlclip1/01/clip_image023.jpg 圖14 蓄電池自動(dòng)充電電路圖 2.11 設(shè)計(jì)總框圖 總電路包括了電源模塊,鍵盤輸入模塊,顯示模塊,開(kāi)鎖模塊,還有當(dāng)密碼輸入錯(cuò)誤時(shí)會(huì)鎖定鍵盤并且報(bào)警的報(bào)警電路模塊。 總體設(shè)計(jì)框圖如圖15所示: file:///C:/Users/ADMINI~1/AppData/Local/Temp/msohtmlclip1/01/clip_image024.gif 圖15 總體設(shè)計(jì)框圖 3 程序設(shè)計(jì) 3.1 模塊介紹 該系統(tǒng)的軟件設(shè)計(jì)分為以下幾個(gè)模塊: (1)主程序模塊 主程序主要完成初始化、設(shè)置中斷向量、檢查有無(wú)調(diào)用顯示以及有無(wú)按鍵按下等等。 (2)掉電存儲(chǔ)服務(wù)程序 在逐位密碼比較的時(shí)候,則需要讀取AT24C02的程序,將原來(lái)儲(chǔ)存在芯片內(nèi)的數(shù)據(jù)讀到RAM中,輸入的密碼則和這個(gè)密碼進(jìn)行比較。如果是修改密碼的話,則將輸入的密碼保存在AT24C02中 (3)鍵盤的掃描以及識(shí)別子程序 鍵盤采用的是查詢的方式,在主程序中,在沒(méi)有按鍵按下的時(shí)候,單片機(jī)則按照原來(lái)的程序循環(huán)下去,如果檢測(cè)到有按鍵按下,便立即轉(zhuǎn)到按鍵鎖按下的子程序,處理結(jié)束的時(shí)候就返回去。 (4)顯示子程序 顯示子程序包括五種狀態(tài)分別為;開(kāi)鎖狀態(tài)顯示子程序、關(guān)閉狀態(tài)顯示子程序、密碼輸入錯(cuò)誤后的提示子程序、密碼輸入及修改狀態(tài)顯示子程序。密碼在規(guī)定的時(shí)間范圍內(nèi)連續(xù)三次輸入錯(cuò)誤后的鎖定狀態(tài)顯示子程序. 3.2 程序流程圖的設(shè)計(jì) 3.2.1 主流程圖 因設(shè)計(jì)主要是作用匯編語(yǔ)言來(lái)開(kāi)發(fā)的51單片機(jī)項(xiàng)目程序,所以首先必須有一個(gè)可以在Windows XP或Windows vista操作系統(tǒng)下執(zhí)行的匯編語(yǔ)言編譯器,本設(shè)計(jì)采用Keil編譯器進(jìn)行編程,因?yàn)樗梢灾С忠幌盗械?1單片機(jī)。設(shè)計(jì)主程序見(jiàn)附錄1。 圖16為主流程圖流程: file:///C:/Users/ADMINI~1/AppData/Local/Temp/msohtmlclip1/01/clip_image025.gif 圖16 主流程圖 3.2.2 鍵盤掃描子程序 鍵盤掃描開(kāi)始前給鍵盤設(shè)置一個(gè)初始值,然后送入掃描初始值。設(shè)C=1左邊移動(dòng),然后檢測(cè)C的值是否等于0,如果等于0就調(diào)用消除抖動(dòng)子程序并且讀取P1的值,如果A=0則調(diào)用顯示子程序,如果A不等于0則繼續(xù)讀取P1的值。 在C不于0時(shí)則檢查R5是否等于0,如果R5也不等于0則返回繼續(xù)C左移,如果R5等于0設(shè)C=1右移掃描。然后檢測(cè)C是否等于O,如果C等于0則返回到設(shè)置初始值,如果C不等于0則送入掃描初始值。程序詳見(jiàn)附錄1。 鍵盤掃描流程圖如圖17所示: file:///C:/Users/ADMINI~1/AppData/Local/Temp/msohtmlclip1/01/clip_image026.gif 圖17 鍵盤掃描流程圖 3.2.3 LED顯示子程序 LED顯示模塊在按鍵值的輸入后,然后加上74LS138的掃描值送到P0口輸出到LED的顯示屏上就完成了顯示模塊的功能,程序參見(jiàn)附錄1。 LED顯示流程圖如圖18所示: file:///C:/Users/ADMINI~1/AppData/Local/Temp/msohtmlclip1/01/clip_image027.gif 圖18 顯示流程圖 3.2.4 密碼比較和報(bào)警程序 開(kāi)始比較第一位的密碼是否正確,如果正確則比較下一位的密碼,看是正確,如果正確則繼續(xù)比較,如果六位密碼都比較完了而且正確鎖便打開(kāi)了同時(shí)清零,如果其中有一位密碼錯(cuò)誤則清除顯示并且記錄錯(cuò)誤次數(shù),當(dāng)錯(cuò)誤次數(shù)達(dá)到三次的時(shí)候則報(bào)警。程序參見(jiàn)附錄1。 密碼比較和報(bào)警流程圖如圖19所示: file:///C:/Users/ADMINI~1/AppData/Local/Temp/msohtmlclip1/01/clip_image028.gif 圖19 密碼比較和報(bào)警流程圖 4 仿真 4.1 系統(tǒng)的總仿真圖 本次設(shè)計(jì)仿真我是在protues下實(shí)現(xiàn)的,包括了4*4矩陣鍵盤,晶振電路,顯示電路,開(kāi)鎖電路等模塊。 圖20為系統(tǒng)的在protues下的總仿真圖: file:///C:/Users/ADMINI~1/AppData/Local/Temp/msohtmlclip1/01/clip_image030.jpg 圖20 系統(tǒng)總仿真圖 4.2 部分仿真情況 當(dāng)電源剛剛接通的時(shí)候LED顯示情況,電源剛剛接通時(shí)LED則會(huì)顯示“000000”具體顯示情況如圖21所示: file:///C:/Users/ADMINI~1/AppData/Local/Temp/msohtmlclip1/01/clip_image031.jpg 圖21 電源初始接通時(shí)顯示情況 為了仿真的方便,而且用到的是LED數(shù)碼管,所以在仿真電路的時(shí)候沒(méi)有將密碼隱藏,而是直接顯示在數(shù)碼管上面,在鍵盤上一次按下“123456”在LED數(shù)碼管上就會(huì)顯示出如圖22所示的情況。 file:///C:/Users/ADMINI~1/AppData/Local/Temp/msohtmlclip1/01/clip_image033.jpg 圖22 LED的顯示 考慮到仿真的方便性,在這里直接用一個(gè)LED-RED來(lái)代替了開(kāi)鎖的的電路,在鍵盤上輸入了以上的六個(gè)數(shù)字然后再按下確認(rèn)鍵的話就會(huì)使發(fā)光二極管燈亮那么就會(huì)出現(xiàn)如圖23的情況,在本次設(shè)計(jì)中表示開(kāi)鎖。 file:///C:/Users/ADMINI~1/AppData/Local/Temp/msohtmlclip1/01/clip_image035.jpg 圖23 開(kāi)鎖顯示電路 在修改密碼的時(shí)候,先輸入了正確的密碼,然后再修改密碼,修改密碼候顯示以下情況,在這里我們修改的密碼為“456789”,如下圖24所示: file:///C:/Users/ADMINI~1/AppData/Local/Temp/msohtmlclip1/01/clip_image036.jpg 圖24 密碼修改顯示圖 當(dāng)密碼輸入錯(cuò)誤的時(shí)候電路會(huì)自動(dòng)清零。如圖25所示。 file:///C:/Users/ADMINI~1/AppData/Local/Temp/msohtmlclip1/01/clip_image038.jpg 圖25 密碼輸入錯(cuò)誤時(shí)顯示情況 參考文獻(xiàn) [1]康華光主編.電子技術(shù)基礎(chǔ)(第四版).高等教育出版社,1998 (Kanghua guang editor. Electronic technology foundation (fourth edition). Highereducation press, 1998) [2] 梁宗善主編.新型集成塊應(yīng)用.華中理工大出版社,2004 (Liang Zongshaneditor. The new application of manifold blocks. Central China tech universitypress, 2004) [3]劉國(guó)權(quán)、韓曉東主編.Protel DXP電路原理圖設(shè)計(jì)指南.中國(guó)鐵道出版社,2004 (LiuGuoQuan, HanXiaodong editor. Protel DXP schematic circuit diagram design guidelines. Chinarailway publishing house, 2004 ) [4]《最新常用集成塊速察速用》編寫組編.最新常用集成塊速查速用.機(jī)械工業(yè)出版社,2005 (The latest commonspeed was made in the speed of manifold blocks with code to compile. The latestcommon integrated block with quick speed. Machinery industry press, 2005 ) [5]張慶雙主編.電子技術(shù)基礎(chǔ)技能線路實(shí)例.科學(xué)出版社,2006 (Line instance ZhangQingshuang editor. Electronic technology basic skills. Science press, 2006 ) [6]劉修文主編.實(shí)用電子電路圖集.中國(guó)電力出版社,2005 (Atlas LiuXiuWeneditor. Practical electronic circuit. China electric power press, 2005 ) [7]李朝青.單片機(jī)原理及接口技術(shù)(簡(jiǎn)明修訂版)[M].北京:北京航空航天大學(xué)出版社,1998 (Li Chaoqing. Singlechip microcomputer principle and interface technology (concise edition) [M].Beijing: Beijing university of aeronautics and astronautics press, 1998 ) [8]王為清,程國(guó)剛.單片機(jī)KeilCx51應(yīng)用開(kāi)發(fā)技術(shù).北京:人民郵電出版社,2007:11-70 (WangWeiqing Cheng Guogang. Single chip microcomputer KeilCx51 application developmenttechnology. Beijing: people's posts and telecommunications press, 2007:11-70 ) [9]張齊基于單片機(jī)應(yīng)用系統(tǒng)設(shè)計(jì)技術(shù)-基于C語(yǔ)言編程.北京:電子工業(yè)出版社 (Zhang qi technology -based on single chip microcomputer application system design based on Clanguage programming. Beijing: electronic industry press ) [10]李建波.STC89C52單片機(jī)的電子密碼鎖.現(xiàn)代電子技術(shù),2008, Vol.28 (Li jianbo. STC89C52 single-chip electronic combination lock. Themodern electronic technology, 2008, Vol. 28 ) 致 謝 經(jīng)過(guò)本次的設(shè)計(jì),讓我加深了對(duì)單片機(jī)六位電子密碼鎖的了解,從一開(kāi)的無(wú)從下手到后來(lái)一步一步的設(shè)計(jì),其中有著汗水有著樂(lè)趣。 在本次設(shè)計(jì)中,對(duì)于AT89S51芯片有了更深程度的理解和掌握,比如I/O口的接線,擴(kuò)展外部存儲(chǔ)器等等。在設(shè)計(jì)中用到了4*4矩陣式鍵盤,這種形式的鍵盤則為鍵盤占用過(guò)多的I/O口而設(shè)計(jì)的,4*4這個(gè)鍵盤一共16個(gè)按鍵,但其實(shí)只用了8個(gè)接線口,這樣省下了很多的接線口。 在晶振電路中,讓我了解到對(duì)電容的大小要求,當(dāng)電容的大小超出規(guī)格的時(shí)候,則會(huì)對(duì)振蕩頻率的高低和振蕩工作的穩(wěn)定性以及起振的難易程度還有溫度的穩(wěn)定性產(chǎn)生輕微的影響,從而對(duì)系統(tǒng)的精確性產(chǎn)生影響。 在開(kāi)鎖電路中由于要考慮材料的價(jià)錢,所以我就只用了發(fā)光二極管來(lái)代替這個(gè)開(kāi)鎖機(jī)構(gòu),發(fā)光二極管亮則表示鎖打開(kāi),發(fā)光二極管滅的時(shí)候就表示鎖沒(méi)有打開(kāi)。這樣的設(shè)計(jì)讓我發(fā)現(xiàn)了AT89S51這個(gè)芯片的靈活性。 總之經(jīng)過(guò)這次的設(shè)計(jì)讓我有了很大程度的提高。 因此在這里深深的感謝老師對(duì)我的悉心教導(dǎo)。 附錄1 程序清單 ORG 00H MOV R5,#00H MOV R7,#00H DJNZ R7,$ MOV R7,#10H MOV R6,#06H MOV R1,#35H L1: MOV A,R7 MOV DPTR, #TABLE MOVC A,@A+DPTR MOV @R1,A DEC R1 INC R7 DJNZ R6,L1 START: ORL P2,#0FFH MOV R4,#06H MOV R0,#40H CLEAR: MOV @R0,#00H INC R0 DJNZ R4,CLEAR L2: MOV R3,#0F7H MOV R1,#00H L3: MOV A,R3 MOV P1,A MOV A,P1 MOV R4,A SETB C MOV R5,#04H L4: RLC A JNC KEYIN INC R1 DJNZ R5,L4 CALL DISP MOV A,R3 SETB C RRC A MOV R3,A JC L3 JMP L2 KEYIN: MOV A,R1 XRL A,#0BH JZ X3 MOV A,R1 XRL A,#0FH JZ X4 MOV R7,#10 D1: MOV R6,#24 DJNZ R6,$ DJNZ R7,D1 D2: MOV A,P1 XRL A,R4 JZ D2 MOV A,R1 MOV DPTR,#TABLE MOVC A,@A+DPTR MOV R7,A XRL A,#0AH JZ SET0 MOV A,R7 XRL A,#0BH JZ START MOV A,R7 XRL A,#0CH JZ L2 MOV A,R7 XRL A,#0DH JZ L2 MOV A,R7 XCH A,40H XCH A,41H XCH A,42H XCH A,43H XCH A,44H XCH A,45H CALL DISP JMP L2 X3: JMP DISP2 X4: JMP COMP DISP: MOV R0,#45H DISP1: MOV A,@R0 ADD A,#50H MOV P0,A CALL DELAY DEC R0 MOV A,@R0 ADD A,#40H MOV P0,A CALL DELAY DEC R0 MOV A,@R0 ADD A,#30H MOV P0,A CALL DELAY DEC R0 MOV A,@R0 ADD A,#20H MOV P0,A CALL DELAY DEC R0 MOV A,@R0 ADD A,#10H MOV P0,A CALL DELAY DEC R0 MOV A,@R0 ADD A,#00H MOV P0,A CALL DELAY RET SET0: MOV R2,#06H MOV R0,#40H MOV R1,#30H E1: MOV A,@R0 XCH A,@R1 INC R0 INC R1 DJNZ R2,E1 CALL DELAY E2: JMP START COMP: MOV R1,#45H MOV R0,#35H MOV R2,#06H C1: MOV A,@R1 XRL A,@R0 JNZ C3 DEC R1 DEC R0 DJNZ R2,C1 CLR P2.0 MOV R2,#200 C2: MOV R6,#248 DJNZ R6,$ DJNZ R2,C2 C3: INC R5 MOV A,R5 MOV R5,A CJNE R5 ,#03H,C4 CLR P2.1 MOV R5,#00H C4: JMPSTART DISP2: MOV R0,#35H CALL DISP MOV A,P1 XRL A,R4 JZ DISP2 CALL DELAY JMP START DELAY: MOV R7,#C3 D3: MOV R6,#248 DJNZ R7,D3 RET ORG 300H TABLE: DB 01H ,02H, 03H, 0CH DB 04H, 05H, 06H ,0DH DB 07H ,08H ,09H ,0EH DB 0AH, 00H, 0BH ,0FH DB 01H, 02H,03H ,04H, 05H, 06H END 附錄2 總原理圖file:///C:/Users/ADMINI~1/AppData/Local/Temp/msohtmlclip1/01/clip_image040.gif
|