基于單片機(jī)的學(xué)生簽到系統(tǒng)的設(shè)計與實(shí)現(xiàn)_第1頁
基于單片機(jī)的學(xué)生簽到系統(tǒng)的設(shè)計與實(shí)現(xiàn)_第2頁
基于單片機(jī)的學(xué)生簽到系統(tǒng)的設(shè)計與實(shí)現(xiàn)_第3頁
基于單片機(jī)的學(xué)生簽到系統(tǒng)的設(shè)計與實(shí)現(xiàn)_第4頁
基于單片機(jī)的學(xué)生簽到系統(tǒng)的設(shè)計與實(shí)現(xiàn)_第5頁
已閱讀5頁,還剩14頁未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報或認(rèn)領(lǐng)

文檔簡介

基于單片機(jī)的學(xué)生簽到系統(tǒng)的設(shè)計與實(shí)現(xiàn)題目:基于單片機(jī)的學(xué)生簽到系統(tǒng)的設(shè)計與實(shí)現(xiàn)1學(xué)生簽到系統(tǒng)分析與設(shè)計1.1方案設(shè)計具體思路本設(shè)計是基于AT89C52單片機(jī)設(shè)計的學(xué)生簽到打卡系統(tǒng),本系統(tǒng)是由RC522射頻芯片采集射頻卡片數(shù)據(jù)ID號,然后51單片機(jī)通過獲得的ID號查詢錄入的數(shù)據(jù)庫來判斷是哪個人簽到,同時保存一下打卡時間記錄。日歷時間設(shè)置是通過上位機(jī)軟件獲取電腦精確時間,并通過串口將日歷更新到板子系統(tǒng),操作比按鍵設(shè)置簡單易懂。同樣通過電腦端軟件發(fā)送串口指令錄入學(xué)生信息、修改學(xué)生信息、設(shè)置日歷、設(shè)置簽到上下限時間,同時使用市場上通用的12864液晶顯示屏顯示時間和打卡詳情功能。1.2方案設(shè)計總體框圖1.3數(shù)據(jù)庫設(shè)計1.3.1主控制芯片AT89C52的結(jié)構(gòu)在這一塊AT89C52單片機(jī)芯片上,集成了一臺微型計算機(jī)的主要組成部分,其中包括CPU、存儲器、可編程I/O口、定時器/計數(shù)器,各部分通過內(nèi)部總線相連。下面介紹幾個主要部分。圖1.2為AT89C52單片機(jī)的基本組成功能方塊圖。1.3.2AT89C52管腳說明VCC:供電電壓。GND:接地。P0口:P0口為一個8位漏級開路雙向I/O口,有8TTL門電流被腳吸收。當(dāng)P1管腳寫入1時,就叫做高阻輸入。P0能夠用于外部ROM數(shù)據(jù),又叫做數(shù)據(jù)/地址的第八位。在FLASH編程時,原碼輸入口為PO,當(dāng)正在校驗時,PO輸出原碼,此時PO外部必須升高。P1口:準(zhǔn)雙向通用I/0口。P1口管腳寫入1后,上拉電阻升高,做為輸入,當(dāng)P1變?yōu)榈碗娖綍r,有電流輸出。P1口作為第八位地址接收,也可以用來進(jìn)行FLASH的變成和校驗。P2口:準(zhǔn)雙向I/0口。P2口輸出其特殊功能寄存器的內(nèi)容。P3口:P3口為8個上拉電阻雙向I/O接口組成的。當(dāng)P3口寫入1后,P3口被內(nèi)部升為高電平,用來輸入。作為輸入,外部下降為低電平,所以P3口會有電流的輸出。P3口管腳還有其他功能,如下:P3.0RXD(串行輸入口)P3.1TXD(串行輸出口)P3.2INT0(外部中斷0)P3.3INT1(外部中斷1)P3.4T0(記時器0外部輸入)P3.5T1(記時器1外部輸入)P3.6(外部數(shù)據(jù)存儲器寫選通)P3.7(外部數(shù)據(jù)存儲器讀選通)RST:復(fù)位。振蕩器需要復(fù)位時,要保持RST腳兩個機(jī)器周期的高電平時間。ALE/:地址鎖存信號輸出端/EPROM編程脈沖輸入端。PSEN:外部程序ROM的選通信號端。外部程序取指的時候,僅僅只有兩次的PSEN有效。所以在外部ROM不工作的時候,信號是不會出現(xiàn)的。 /VP:內(nèi)/外部ROM選擇端.XTAL1:反向振蕩放大器的輸入,內(nèi)部時鐘電路的輸入。XTAL2:反向振蕩器的輸出。1.4串口電路1.4.1CH374概述CH374是一個USB總線的通用接口芯片,USB-DEVICE/SLAVE設(shè)備方式都是支付USB的主機(jī)方式。HUB根集線器有3個端口,低速和全速的控制傳輸、批量傳輸、中斷傳輸以及同步/等時傳輸。CH374采用8位數(shù)據(jù)總線支持讀、寫、片選控制線以及中斷輸出。該電路應(yīng)用于51單片機(jī)和PC端的串口通訊,改串口模塊電路用于設(shè)置時間和錄入學(xué)生信息和修改學(xué)生信2系統(tǒng)實(shí)現(xiàn)2.1程序模塊設(shè)計本次設(shè)計采用的是模塊化程序結(jié)構(gòu),可以分成以下程序模塊:1、系統(tǒng)初始化程序:實(shí)現(xiàn)完成變量的設(shè)定、中斷入口的設(shè)定、堆棧、輸入輸出口及外部件的初始化工作(如12864、RC522、串口和定時器的初始化)。2、鍵盤掃描程序:定時100ms輪訓(xùn)按鍵,來判斷是否有按鍵發(fā)生。3、主程序:完成鍵盤掃描、射頻模塊的讀寫、日歷時間的顯示、當(dāng)有卡片刷卡時顯示刷卡信息,如果超過預(yù)設(shè)的打卡時間段啟動蜂鳴器報警。4、射頻模塊程序:51單片機(jī)通過并口與射頻模塊通訊,定時檢測天線周圍是否有卡片介入,并通過ISO1443卡標(biāo)準(zhǔn)完成讀卡寫卡功能。5、顯示子程序:12864的內(nèi)部讀寫設(shè)定,顯示校名和日歷和顯示刷卡信息狀態(tài)。6、蜂鳴器程序:判斷是否滿足刷卡條件,來控制是否報警。7、日歷程序:年月日時分秒和星期的計算。2.2軟件部分圖2.1系統(tǒng)設(shè)計流程圖本次設(shè)計采用的是模塊化程序結(jié)構(gòu),可以分成以下程序模塊:1、系統(tǒng)IO初始化,主要就是MCUIO口的電平設(shè)置。InitializeSystem()2、學(xué)生卡軟件參數(shù)的初始化,主要就是學(xué)生卡結(jié)構(gòu)體變量參數(shù)賦值和BUF清0操作,以及設(shè)置打卡簽到時間。StudentCardInit();3、蜂鳴器的初始化,關(guān)閉蜂鳴器操作,防止一上電就長響beep_init();4、日歷結(jié)構(gòu)體參數(shù)初始化,主要是設(shè)置默認(rèn)上電日歷時間星期。Calendar_Init();5、定時器初始化,定時器在程序中起了至關(guān)重要的做用,主要實(shí)現(xiàn)了系統(tǒng)輪訓(xùn)機(jī)制。bsp_InitTimer();6、射頻模塊復(fù)位初始化,切記RC500上電后應(yīng)延時500ms才能可靠初始化,否則有可能射頻模塊初始化失敗,造成不能正常刷卡。Rc500Ready();7、串口任務(wù)初始化,設(shè)置串口通訊參數(shù)波特率為:9600,校驗位:NONE,數(shù)據(jù)位:8,停止位:1。Creak_UsartTask();8、按鍵任務(wù)初始化,主要對按鍵變量參數(shù)的初始化,以及硬件軟件設(shè)置操作。Creak_KeyTask();9、顯示屏12864初始化,接口為并口通訊方式,在寫數(shù)據(jù)之前要記得清屏,設(shè)置功能、顯示、光標(biāo)設(shè)置等參數(shù)設(shè)置,設(shè)置參數(shù)完成之后,顯示學(xué)校校名以及歡迎使用簽到機(jī)系統(tǒng)頁面。Creak_LCDTask();10、射頻模塊天線設(shè)置為關(guān)閉狀態(tài),并啟動射頻模塊輪訓(xùn)任務(wù),任務(wù)間隔時間為500msCreak_CardTask();11、射頻模塊輪訓(xùn)處理任務(wù),主要負(fù)責(zé)射頻模塊卡片讀寫操作。并查詢刷到的卡號所對應(yīng)的學(xué)生信息。Card_Task();12、按鍵任務(wù)輪訓(xùn)處理,主要負(fù)責(zé)檢查三個按鍵是否被按下,如果有按鍵發(fā)生,并做相應(yīng)的處理操作,按鍵主要觸發(fā)系統(tǒng)查詢簽到遲到的卡片有哪些。Key_TASK();13、串口任務(wù)處理,主要是處理接受下來上位機(jī)軟件發(fā)過來的數(shù)據(jù)之后,再來判斷是什么命令,系統(tǒng)再做相應(yīng)處理(如:更新系統(tǒng)時間、錄入和修改、刪除卡號操作)。UsartTask();14、顯示屏任務(wù)處理,主要是用來顯示當(dāng)前系統(tǒng)狀態(tài),例如系統(tǒng)刷卡界面包含日歷時間等信息,更新時間成功界面,以及系統(tǒng)查詢遲到界面等等。LCD_TASK();2.3上位機(jī)軟件1、界面如下:圖2.2上位機(jī)界面2、串口設(shè)置如下:圖2.3串口設(shè)置圖切記波特率一定要跟下位機(jī)串口設(shè)置一致。串口號可以在設(shè)備管理器中查詢得到,如圖2.4所示圖2.4串口查詢圖3、錄入和修改卡號和學(xué)號操作:圖2.5修改界面圖輸入姓名和學(xué)號之后,點(diǎn)擊錄入和修改即可。4、刪除學(xué)號操作,如圖2.6所示圖2.6刪除學(xué)號圖輸入相應(yīng)要刪除的卡號,點(diǎn)擊刪除即可。5、更新系統(tǒng)時間操作,如圖2.7所示圖2.7系統(tǒng)時間點(diǎn)擊更新時間,下位機(jī)時間立即更新為PC端系統(tǒng)時間。2.3.1上位機(jī)與下位機(jī)通訊協(xié)議如下:幀頭 數(shù)據(jù)一個字節(jié) N個字節(jié)a)更新系統(tǒng)時間幀頭 數(shù)據(jù)0Xe0 N個字節(jié)b)錄入和修改幀頭 數(shù)據(jù)0Xe1 N個字節(jié)c)刪除卡號:幀頭 數(shù)據(jù)0Xe3 N個字節(jié)圖2.8通訊協(xié)議圖2.4程序下載方法:首先須裝好USB驅(qū)動,然后選擇對應(yīng)的MCU型號”STC89C58RC”,打開程序要燒錄的HEX文件,選擇與您計算機(jī)對應(yīng)的端口,即COM口,先關(guān)閉開發(fā)板電源,即開關(guān)彈起,當(dāng)點(diǎn)擊“下載”時提示請給MCU上電時,您再給開發(fā)板供電,即開關(guān)按下,燒寫過程可見進(jìn)度條。圖2.9程序燒錄運(yùn)行圖2.5整體分析這次畢業(yè)設(shè)計從軟件設(shè)計到硬件制作過程中,都是以AT89C52單片機(jī)為核心設(shè)計的,通過芯片的識別來完成學(xué)生簽到的過程。將白芯片放入識別區(qū)域,這時在電腦上就可以設(shè)定學(xué)生的信息,學(xué)號,當(dāng)白芯片錄入進(jìn)信息后,在指定的識別區(qū)域刷卡,從而完成學(xué)生簽到的。當(dāng)需要修改學(xué)生的信息時,將芯片放入識別區(qū)域,用做好的上位機(jī)軟件來更新學(xué)生的信息,刪除或者修改學(xué)生的信息。此外還可以通過按鍵裝置,來查詢遲到的學(xué)生。3.系統(tǒng)運(yùn)用的各個模塊3.1單片機(jī)AT89C52外圍晶振電路每一個單片機(jī)都含有著晶振,它的全部名稱為晶體震蕩器,晶體振蕩器的作用非常大,因為它不僅僅結(jié)合了單片機(jī)內(nèi)部的電路,從而讓單片機(jī)產(chǎn)生了必要的時鐘頻率,一直不停的工作,單片機(jī)所發(fā)出的所有指令的執(zhí)行都是在晶體振蕩器上建立起來的,它提供的時鐘頻率越高,則單片機(jī)運(yùn)行速度就越快。該課程設(shè)計晶振為11.0592MHz,如圖3.1為晶振電路。3.2單片機(jī)AT89C52外圍復(fù)位電路復(fù)位的作用是使中央處理器CPU以及其他功能部件都恢復(fù)到一個確定的初始狀態(tài),并從這個狀態(tài)開始工作。AT89C52單片機(jī)的復(fù)位是靠外部電路實(shí)現(xiàn)的,信號由RESET(RST)引腳輸入,低電平無效,在振蕩器工作時,只要RST引腳高電平是兩個周期,就會復(fù)位,復(fù)位后,PC程序計數(shù)器的內(nèi)容為0000H,片內(nèi)RAM中的內(nèi)容不變。本設(shè)計采用的復(fù)位電路是手動開關(guān)復(fù)位,圖3.2為手動復(fù)位電路。復(fù)位電路的第一功能是上電復(fù)位。VCC上電時,C充電,在10K電阻上出現(xiàn)電壓,使得單片機(jī)復(fù)位;在一定時間之后,C充滿,電阻上的電流變?yōu)?,同時電壓也變?yōu)?,從而讓單片機(jī)進(jìn)入工作狀態(tài)。復(fù)位電路的第二功能是手動復(fù)位電路,在有按鍵按下時,由于電容充電產(chǎn)生一點(diǎn)時間的高電平,就可以使單片機(jī)復(fù)位。這種情況在工作時間下,撥下S時,C放電。松開S時,C充電,同時電阻出現(xiàn)電壓,然后單片機(jī)復(fù)位。在一點(diǎn)時間后,單片機(jī)進(jìn)入工作模式。3.3射頻采集電路RC522射頻芯片主要特性:1、模擬電路可以讓卡應(yīng)答的解調(diào)和解碼。2、支持IC和ISO14443A14部分。3、10cm內(nèi)為有效范圍。4、天線上的緩沖輸出驅(qū)動器使用最少數(shù)的元件連接的。5、內(nèi)部非易失性密匙存儲器必須加密并且保護(hù)。6、微處理器接口在并行是由內(nèi)部地址鎖存和IRQ線組成的。7、中斷處理非常靈活。8、芯片采用自主檢驗接口類型。9、方便的發(fā)送64字節(jié)和FIFO緩沖區(qū)的接收。10、消耗功率少的硬件復(fù)位。11、軟件可以控制掉電模式。12、定時器是可以編程。13、序列號是唯一的。14、啟動配置是用戶可編程的。15、位和字節(jié)是用定位幀來定位的。16、發(fā)送器部分與數(shù)字模擬分別使用自獨(dú)立的電源輸入腳。17、13.56MHz石英晶體與內(nèi)部振蕩器緩沖鏈接從而產(chǎn)生低相位抖動。18、濾波時鐘頻率。19、在短距離的應(yīng)用,天線驅(qū)動器必須為3.3V才可操作。3.4電源電路電源電路選擇最常用的USB口供電,可以通過USB線插到PC的USB口供電也可以插到手機(jī)適配器上面,因為板子的供電電壓剛好是5V,也不需要額外的轉(zhuǎn)換電壓。上面的發(fā)光二極管用于指示電源是否供電。開關(guān)是用來控制整個板子的用電開與關(guān)。3.5報警電路由于蜂鳴器的工作電流一般比較大,以致于單片機(jī)的I/O口是無法直接驅(qū)動蜂鳴器的,所以要利用放大電路來驅(qū)動,一般使用三極管來放大電流就可以了。本電路使用了I/O口定時翻轉(zhuǎn)電平驅(qū)動蜂鳴器方式。該報警器主要用來刷卡指示和打卡異常指示。3.6液晶顯示電路12864漢字圖形點(diǎn)陣液晶顯示模塊,可顯示漢字及圖形,顯示內(nèi)容與技術(shù)參數(shù):電源:VDD3.3V到+5V(內(nèi)部含有升壓電路并且不需要負(fù)壓);顯示內(nèi)容:128×64顯示顏色:綠色黃色LCD類型:STN和MCU接口:8位或3位串行/4位并行128X64液晶引腳說明:引腳號 引腳名稱 方向 功能說明1 VSS - 電源地2 VDD - 電源的正端3 V0 - LCD的輸入為驅(qū)動電壓4 RS(CS) H/L 串行的片選信號5 R/W(SID) H/L 并行讀寫信號;數(shù)據(jù)口串行6 E(CLK) H/L 使能信號并行;同步時鐘串行7 DB0 H/L 數(shù)據(jù)08 DB1 H/L 數(shù)據(jù)19 DB2 H/L 數(shù)據(jù)210 DB3 H/L 數(shù)據(jù)311 DB4 H/L 數(shù)據(jù)412 DB5 H/L 數(shù)據(jù)513 DB6 H/L 數(shù)據(jù)614 DB7 H/L 數(shù)據(jù)715 PSB H/L 接口選擇:H-并行;L-串行16 NC 空腳17 /RET H/L 硬件復(fù)位(高電平無效)18 NC 空腳19 LED_A (LED+5V) 背光源的正極20 LED_K (LED-OV) 背光源的負(fù)極4.硬件與軟件的檢測與調(diào)試4.1硬件電路調(diào)試仔細(xì)檢查所接電路,按照硬件原理圖接線,理論上是能實(shí)現(xiàn)的,如果液晶12864不顯示,則應(yīng)該檢查液晶屏線路是否正確,或是因為單片機(jī)沒有工作,還是晶振沒有起振。如果不能正常刷卡,檢測一下RC522電路部分是否連接正確,看看RC522周圍電路是否存在虛焊問題。蜂鳴器是低電平有效。如果能注意這些問題,電路基本不會出錯。4.2軟

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

最新文檔

評論

0/150

提交評論