【正文】
實(shí)際證明:本控制方案硬件簡(jiǎn)單,工作可靠,具有很好的推廣價(jià)值。本文所實(shí)現(xiàn)的這種密碼鎖 ,安全可靠 ,絕對(duì)無誤開鎖的 可能 ,且整個(gè)系統(tǒng)成本低廉 ,性能穩(wěn)定 ,具有一定的發(fā)展前景。且單片機(jī)的指令簡(jiǎn)單易學(xué),因此開發(fā)周期可以很短。 24 } } 在整個(gè)的程序設(shè)計(jì)過程中起到重要的作用的是 HD7279A,它的很多指令都可以直接拿過來用,而不需要作太多的改動(dòng),很方便。i0。j0。//定時(shí)器 0 的運(yùn)行控制器,置 1 為啟動(dòng)計(jì)數(shù),置 0 為停止計(jì)數(shù) } 下面就可以通過 void delay1ms()實(shí)現(xiàn)具體的時(shí)間的延時(shí): 延時(shí)十分鐘的子程序: void delay_10min() { int i,j。//給計(jì)數(shù)器設(shè)定所需的初值 TL0=0xff。 //關(guān)中斷 } 延時(shí)子程序: void delay1ms() { TMOD=0x01。 //等待按鍵結(jié)束 Int_Flag=1。 //讀鍵盤 KeyValue=receive_byte()。 通過中斷實(shí)現(xiàn)鍵盤數(shù)據(jù)的讀取: void HD_Key_ISR() interrupt 0 //外部中斷 0 函數(shù) (按鍵中斷 ) {EA=0。 整個(gè)的軟硬件的實(shí)現(xiàn)過程是這樣的:首先要產(chǎn)生 HEX文件,然后用編程器將生成好的 HEX 文件燒到單片機(jī)的 ROM 里 ,最后就可以根據(jù)你要實(shí)現(xiàn)的具體功能進(jìn)行相應(yīng)的調(diào)試。然后再調(diào)試按鍵模塊和顯示模塊。這樣可以把前面調(diào)試好的單元電路的輸出信號(hào)作為下一級(jí)的輸入信號(hào)。如果出現(xiàn)異常,應(yīng)該立即關(guān)掉電源,待故障排除后方可重新通電。 電路通電觀察 在電路連接正確的情況下接通電源。 但是我的設(shè)計(jì)由于時(shí)間有限就沒有進(jìn)行這一步。 在扳子焊接完成的時(shí)候先不要急著進(jìn)入調(diào)試的步驟,先對(duì)板子進(jìn)行全面的檢查,檢查有沒有短路的線,有的話及時(shí)的改正過來,否則到了調(diào)試的時(shí)候才發(fā)現(xiàn)的話會(huì)很麻煩的。 (2) 如果在調(diào)試 過程中 按功能劃分的器件上出現(xiàn)問題,可以按以下步驟進(jìn)行: (a)檢查原理圖連接是否正確 (b)檢查原理圖與 實(shí)際連接的圖 是否一致 (c)檢查原理圖與器件 上 的各個(gè) 引腳是否一致 (d)用萬用表檢查是否有虛焊,引腳短路現(xiàn)象 (e)查詢器件的 DATASHEET,分析一下時(shí)序是否一致, 同 時(shí)分析一下命令字是否正確 (f)有條件的可以用示波器。 其次要注意的就是板子的整體 布線,我在整個(gè)設(shè)計(jì)的過程中,由于沒有經(jīng)驗(yàn),加上以前也從來沒有接觸過直接焊板子 ,所以沒有太多的考慮到布線的問題,從而導(dǎo)致布線很亂,沒有太多的規(guī)律,這樣極其容易造成短路。當(dāng)初板子做好以后,我一口氣就把所有的元件焊上去了,這樣對(duì)于沒有調(diào)試過的板子,就很難找到 錯(cuò)誤的 原因。所以這里不再對(duì) AT89C51 作詳細(xì)的介紹了。 22 第五章 軟硬件調(diào)試 硬件調(diào)試部分 在設(shè)計(jì)開始的時(shí)候選擇單片機(jī) P89C51,后來的實(shí)施的過程中最終選用了 AT89C51 的單片機(jī)。 (2) 電路板設(shè)計(jì)的步驟 : 印刷電路板設(shè)計(jì)是從電路原理圖變成一個(gè)具體產(chǎn)品的必經(jīng)之路 ,因此 ,印刷電路板設(shè)計(jì)是電路設(shè)計(jì)中最重要、最關(guān)鍵的一步。 用 Protel 99 SE 進(jìn)行電路設(shè)計(jì)的基本步驟 : (1) 路原理圖設(shè)計(jì)的步驟 電路原理圖的設(shè)計(jì)是整個(gè)電路設(shè)計(jì)的基礎(chǔ),因此電路 原理圖要設(shè)計(jì)好,以免影響后面的設(shè)計(jì)工作。 C51 主要有以下幾個(gè)主要特點(diǎn): ? 語言簡(jiǎn)潔、緊湊、使用方便靈活 ? 運(yùn)算符極其豐富 ? 生成的目標(biāo)代碼質(zhì)量高,程序執(zhí)行效率高(與匯編相比) ? 可移植性好(與匯編語言相比 ) ? 可以直接操作硬件 Protel 99 SE 隨著計(jì)算機(jī)技術(shù)的發(fā)展,計(jì)算機(jī)軟件在電路設(shè)計(jì)中的應(yīng)用越來越廣泛, OrCad, Protel等都是人們熟悉的常用 EDA 軟件。它與一般的標(biāo)準(zhǔn) C 語言基本一致,但根據(jù) 8051 單片機(jī)的硬件特點(diǎn)作了少量的擴(kuò)展和重新定義。Keil C51 軟件提供豐富的庫(kù)函數(shù)和功能強(qiáng)大的集成開發(fā)調(diào)試工具,全 Windows 界面, 運(yùn)行開始 初始化 調(diào)用顯示 有鍵按下? 啟動(dòng)定時(shí) 識(shí)別按鍵 全部按完 超時(shí)? 比較密碼 開鎖 開始 超過 3次? 鎖定 Y N Y N Y N Y N 20 Keil 軟件需要 Pentium 或以上 的 CPU, 16MB 或更多 RAM、 20M 以上空閑的硬盤空間、 WIN9NT、 WIN20 WINXP 等操作系統(tǒng)。 4)開鎖和報(bào)警程序 通過仿 SPI總線時(shí)序來完成對(duì) HD7279 的控制,通過中斷來識(shí)別按鍵, 相應(yīng)位的輸出數(shù)據(jù)然后延時(shí)一段時(shí)間就可以控制發(fā)光二極管的亮滅和蜂鳴器的鳴叫。在程序中設(shè)置 6字節(jié)的空間存放設(shè)定的密碼和 6 字節(jié)存放鍵盤輸入的數(shù)據(jù)。中斷服務(wù)程序只負(fù)責(zé)數(shù)據(jù)的輸出顯示,主程序根據(jù)所處的狀態(tài)修正顯示數(shù)據(jù)。內(nèi)部定時(shí)器模擬 SPI 總線,定時(shí)時(shí)間到時(shí)請(qǐng)求中斷服務(wù),進(jìn)入中斷服務(wù)程序輸出 1位顯示數(shù)據(jù)。程序主要負(fù)責(zé)把要顯示的數(shù)字或字母對(duì)應(yīng)的顯示碼送到相應(yīng)的 LED 顯示管。為 了消除抖動(dòng)干擾,在程序中要加入消除抖動(dòng)的部分 ( HD7279A 內(nèi)含去抖動(dòng)電路) 。按鍵的識(shí)別主要有兩種方法:行反轉(zhuǎn)法和行掃描法。中斷服務(wù)子程序主要是負(fù)責(zé) LED 數(shù)碼管顯示。 程序?qū)⒎譃橹鞒绦蚝椭袛喾?wù)子程序。 1 2 3 4 5 6ABCD654321DCBAT i t l eN u m b e r R e v i s i o nS i z eBD a t e : 1 0 J u n 2 0 0 0 S h e e t o f F i l e : C : \ P r o g r a m F i l e s \ D e s i g n E x p l o r e r 9 9 S E \ L i b r a r y \ S c h \ B A 4 6 A 6 ~ 1 . D D BD r a w n B y :1 32V VG N DIN O U TU2 7 8 L 0 512J1C O N 2C5+ C41 0 uC6+ C71 0 uV C C 圖 33 78L05原理圖 18 第四章 軟件程序設(shè)計(jì) 軟件設(shè)計(jì)思路 電子密碼鎖工作的主 要過程是 LED 數(shù)碼管提示開始輸入密碼,通過鍵盤輸入密碼,同時(shí) LED顯示密碼輸入情況,按下確認(rèn)鍵后判斷密碼的正確性,作出開鎖或報(bào)警處理。5% 。 輸出電壓誤差精度分為 177。 本產(chǎn)品有多種電壓輸出值 5V~24V,因此產(chǎn)品的應(yīng)用范圍很廣泛 。能夠?qū)崿F(xiàn) 1A以上的輸出電流 。 7805 運(yùn)用其器件內(nèi)部電路來實(shí)現(xiàn)過壓保護(hù)、過流保護(hù)、過熱保護(hù) 。 7805 輸入端最高輸入電壓為 35V, 輸出正 5V,最大 輸出電流為 。 7805 是三 端穩(wěn)壓器,雖然也是三條腿,但不是三極管 。當(dāng)時(shí)鐘頻率選用 6MHz時(shí), C取 22uF,R 取 1KΩ 【 10】 。上電自動(dòng)復(fù)位是通過外部復(fù)位電路的電容充電來實(shí)現(xiàn)的。 復(fù)位電路通常采用上電自動(dòng)復(fù)位和按鈕復(fù)位兩種方式。具體的復(fù)位電路如 圖33 所示: 1 2 3 4 5 6ABCD654321DCBAT i t l eN u m b e r R e v i s i o nS i z eBD a t e : 1 2 M a y 2 0 0 0 S h e e t o f F i l e : C : \ P r o g r a m F i l e s \ D e s i g n E x p l o r e r 9 9 S E \ L i b r a r y \ S c h \ B A 4 6 A 6 ~ 1 . D D BD r a w n B y :R11KC3V C CR S TP 8 9 C 5 1 R X 2 R D 圖 33復(fù)位 電路 17 復(fù)位電路的基本功能是:系統(tǒng)上電時(shí)提供復(fù)位信號(hào),直至系統(tǒng)電源穩(wěn)定后,撤銷復(fù)位信號(hào)。 在復(fù)位有效期間(即高電平), MCS51單片機(jī)的 ALE引腳和 PSEN 引腳均為高電平,且內(nèi)部的 RAM 不受復(fù)位影響。復(fù)位的主要功能是把 PC 初始化為 0000H,使 MCS51 單片機(jī)從 0000H 單元開始執(zhí)行程序。無源晶體相對(duì)于晶振而言其缺陷是信號(hào)質(zhì)量較差,通常需要精確匹配外圍電路(用于信號(hào)匹配的電容、電感、電 16 阻等),更換不同頻率的晶體時(shí)周邊配置電路需要做相應(yīng)的調(diào)整。有源晶振不需要芯片的內(nèi)部振蕩器,可以提供高精度的頻率基準(zhǔn),信號(hào)質(zhì)量也較無源晶振要好。 晶振( 晶振是晶體振蕩器的簡(jiǎn)稱 )是為電路提供頻率基準(zhǔn)的元器件, 在電氣上它可以等效成一個(gè)電容和一個(gè)電阻并聯(lián)再串聯(lián)一個(gè)電容的二端網(wǎng)絡(luò),電工學(xué)上這個(gè)網(wǎng)絡(luò)有兩個(gè)諧振點(diǎn), 通常分成有源晶振和無源晶振兩個(gè)大類,無源晶振需要芯片內(nèi)部有振蕩器,并且晶振的信號(hào)電壓根據(jù)起振電路而定,適用于多種不同的電壓 。在上電或 RESET 端由低電平變?yōu)楦唠娖降暮螅?HD7279A 大約需要經(jīng)過 1825MS 的時(shí)間才會(huì)進(jìn)入正常的工作狀態(tài)。如果芯片無法正常工作,應(yīng)首先檢查該振蕩電路,在焊接電路板以及布線的過程中 ,所有的元件,尤其是振蕩電路的元件應(yīng)該盡量靠近 HD7279A,并盡量使電路連線最短。 HD7279A的 技術(shù)參數(shù) 表 33 HD7279技術(shù)參數(shù) 符號(hào) 參數(shù) 測(cè)試條件 最小 典型 最大 單位 VCC 電源 電壓 V ICC 工作電流 不接 LED 3 5 mA ICC 工作電流 LED全亮 ISEG=10mA 60 100 mA VIH 邏輯輸入高電平 V VIL 邏輯輸入低電平 0 V TKEY 按鍵響應(yīng)時(shí)間 含去抖動(dòng)時(shí)間 10 18 40 mS IK0 KEY引腳輸出電流 7 mA IK1 KEY引腳輸入電流 10 mA T1 從 CS下降沿到 CLK脈沖時(shí)間 25 50 250 us T2 傳送指令時(shí) CLK脈沖寬度 5 8 250 us T3 字節(jié)傳送時(shí)脈沖寬度 5 8 250 us T4 指令與數(shù)據(jù)時(shí)間間隔 15 25 250 us T5 讀鍵盤指令中指令與輸出數(shù)據(jù)時(shí)間間隔 15 25 250 us T6 輸出鍵盤數(shù)據(jù)建立時(shí)間 5 8 us T7 讀鍵盤數(shù)據(jù)時(shí) CLK脈沖寬 5 8 250 us T8 讀鍵盤數(shù)據(jù)完成后DATA 轉(zhuǎn)為 輸入狀態(tài)時(shí)間 5 us HD7279A 電特性 vcc 為 5v,驅(qū)動(dòng)電流為 100mA,而 LED的工作電流只需 20mA,完全滿足設(shè)計(jì)要求。 主要特性 : ? 串行接口,無需外圍元件可直接驅(qū)動(dòng) LED ? 各位獨(dú)立控制譯碼或不譯碼及消隱和閃爍屬性 ? 具有段尋址指令,方便控制獨(dú)立 LED ? (循環(huán))左移 /(循環(huán))右 移指令 ? 具有段尋址指令,方便控制獨(dú)立 LED ? 64鍵鍵盤控制器,內(nèi)含去抖動(dòng)電路 ? 有 DIP 和 SOIC 兩種封裝形式 供選擇 HD7279A的 功能 14 VDD 接 5V 電源, DIG0~DIG1 與 6 位 LED 顯示器的 6 根共陰極引線,對(duì) LED 進(jìn)行片選 , HD7279 的 SG~SA 與 LED 的 a~g相連 ,對(duì) LED 進(jìn)行段選 , DATA 與 CLK 與單片機(jī) 89c51 的 p12, p13 相連用于接收數(shù)據(jù), RESET 與復(fù)位電路相連用來進(jìn)行復(fù)位, RC與振蕩器相連用來產(chǎn)生時(shí)鐘信號(hào)。段選碼和位選碼共同作用以顯示不同的字型 。 筆畫型 LED顯示器是由 8個(gè)二極管電路 a~dp 按字型‘ 8’的方式排列,當(dāng)不同的二極管被選通后根據(jù)發(fā)光效果會(huì)顯示不同的自型。 七段 LED 顯示器 LED的作用 七段 LED顯示器在該設(shè)計(jì)中的作用是用來 接收 HD7279送來的字型碼顯示編碼結(jié)果 。 特性 ? 80C51 中央處理單元 ? 具有 ISP 和 IAP 功能的片內(nèi) FLASH 程序存儲(chǔ)器 ? 片內(nèi) Boot ROM 包含底層 FLASH 編程子程序以實(shí)現(xiàn)通過 UART 下載程序 ? 可實(shí)現(xiàn)最終用戶應(yīng)用的編程 IAP ? 與 87C51 兼容的并行編程硬件接口 ? 每個(gè)機(jī)器周期為 6 個(gè)時(shí)鐘周期標(biāo)準(zhǔn) ? 可通過并行編程器選擇 6 時(shí)鐘 /12 時(shí)鐘模式芯片擦除后默認(rèn)的時(shí)鐘模式為 12時(shí)鐘 ? 可通過 ISP 對(duì)選擇 6 時(shí)鐘 /12 時(shí)鐘模式的 Flash 位進(jìn)行擦除和編程 ? 可通過 SFR 位在運(yùn)行中改變 6 時(shí)鐘 /12 時(shí)鐘模式 ? 當(dāng) CPU 為 6 時(shí)鐘模式時(shí)外圍功能 PCA 定時(shí)器 UART 可選擇使用 6 時(shí)鐘 /12 時(shí)鐘模式 ? 采用 6 時(shí)鐘周期時(shí)頻率可高達(dá) 20MHz 相當(dāng)于 40MHz 采用 12 時(shí)鐘周期時(shí)頻率可達(dá)3