




已閱讀5頁(yè),還剩10頁(yè)未讀, 繼續(xù)免費(fèi)閱讀
版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
接口課程設(shè)計(jì)實(shí)驗(yàn)報(bào)告 宿舍安全系統(tǒng)設(shè)計(jì)報(bào)告 一 .實(shí)驗(yàn)?zāi)康募耙?目的:結(jié)合一個(gè)實(shí)際的接口技術(shù)問(wèn)題在實(shí)驗(yàn)臺(tái)上編程模擬實(shí)現(xiàn)。 要求: 結(jié)合實(shí)際應(yīng)用,設(shè)計(jì)一微機(jī)應(yīng)用系統(tǒng),要求該系統(tǒng)綜合應(yīng)用并行接口、串行接口、其它接口(定時(shí)器接口、中斷接口、模擬接口可選)、編制對(duì)應(yīng)的程序,實(shí)現(xiàn)主控中心微機(jī)與下位機(jī)遠(yuǎn)距離傳送以及遠(yuǎn)程控制或監(jiān)測(cè)功能。 二 .系統(tǒng)功能 本系統(tǒng)是用來(lái)驗(yàn)證進(jìn)入宿舍人員的身份的。用戶從下位機(jī)刷卡,并錄入用戶名和密碼。下位機(jī)分別將用戶名和密碼發(fā)送給主控機(jī),主控機(jī)驗(yàn)證之后,發(fā)送相應(yīng)的反饋信息給下位機(jī)。只有 當(dāng)用戶名和密碼都被確認(rèn),用戶身份才合法。合法時(shí)下位機(jī)控制發(fā)光部件逐個(gè)亮燈提示,不合法時(shí)則下位機(jī)控制發(fā)聲部件鳴聲警報(bào)。 三 .系統(tǒng)設(shè)計(jì) 1. 系統(tǒng)硬件由主控機(jī)(其中一臺(tái)微機(jī))、下位機(jī)(另一臺(tái)位微機(jī))和執(zhí)行部件組成。主控機(jī)與下位機(jī)通過(guò)串行通信線連接。 2. 執(zhí)行部件:由接口電路等組成,將接收的數(shù)據(jù)送入到下位機(jī)或?qū)⑾挛粰C(jī)輸出的數(shù)據(jù)送到執(zhí)行部件。 3. 下位機(jī):與主控機(jī)通信,控制執(zhí)行部件。 4主控機(jī):與所有下位機(jī)進(jìn)行數(shù)據(jù)交換,必要時(shí)需建數(shù)據(jù)庫(kù),進(jìn)行數(shù)據(jù)處理等。 5主控機(jī)程序:串行( RS232/RS485)通信程 序,數(shù)據(jù)處理程序等。 6下位機(jī)程序:串行( RS232/RS485)通信程序,執(zhí)行部件控制程序。 系統(tǒng)接口框圖見下頁(yè)所示: 下圖中, 8255 是用來(lái)進(jìn)行下位機(jī)控制部件的接口單元。 A 口的 8 個(gè)引腳和控制板上的 8個(gè)顯示燈相連,其輸出決定燈的狀態(tài); B 口 8 個(gè)引腳和控制板上的撥碼開關(guān)的 8 位相連,編碼開關(guān)的狀態(tài)可由 B 口讀入下位機(jī); C 口的 PC0,PC1,PC3 分別和控制板上的 SW1,SW2,S24 相連,可由下位機(jī)讀入各開關(guān)的狀態(tài), PC6 則和喇叭相連,由 PC6 輸出方波控制喇叭發(fā)聲。 四程序設(shè)計(jì) 本次課程設(shè)計(jì)的過(guò)程中,我主要負(fù)責(zé)下位機(jī)的程序的編寫,以及導(dǎo)線在實(shí)驗(yàn)臺(tái)上的連接這兩部分的程序設(shè)計(jì)工作。 系統(tǒng)的模塊框圖由系統(tǒng)設(shè)計(jì)的內(nèi)容可知,即 8255 芯片以上的部分是本系統(tǒng)的通訊模塊框圖,以下的部分為本程序的功能模塊框圖。 系統(tǒng)的程序設(shè)計(jì)是緊密圍繞系統(tǒng)功能進(jìn)行的,程序要實(shí)現(xiàn)的功能就是系統(tǒng)的功能。 流程框圖如下: 1主控機(jī)程序流程圖 程序設(shè)計(jì)過(guò)程中,為了模擬用戶的刷卡進(jìn)入,讓下位機(jī)去測(cè)試控制板上的開關(guān) sw4,其按下表示有用戶刷卡進(jìn)入,這時(shí)就可以發(fā)送插卡信號(hào)給主控機(jī), 下圖中“接收用戶插卡信號(hào)”就是指這個(gè)信號(hào)。 主控機(jī) 8251 RS232 RS232 8251 下位機(jī) 8255 A 口 B 口 C 口 顯示燈 sw1,sw2,sw4 和 喇叭 開關(guān) 總線 總線 2下位機(jī)程序流程圖 下位機(jī)部分需要操作控制板,這里要用到控制板上的 8 位編碼開關(guān),以及開關(guān) sw1, sw2,sw4。按下 sw4 表示用戶插卡進(jìn)入,然后撥動(dòng)控制板上的編碼開關(guān),設(shè)置用戶名編碼,按下sw1 發(fā)送給主控機(jī),若被主控機(jī)確認(rèn)無(wú)誤,則撥動(dòng)控制板上的編碼開關(guān)設(shè)置密碼,再按下 sw2發(fā)送給主控機(jī),等待主控機(jī)確認(rèn)。 正確情況下的燈亮很好控制,只要 A 口輸出數(shù)據(jù)到燈的引腳,再設(shè)計(jì)一段程序控制燈的閃爍方式即可。喇叭的發(fā)聲 要說(shuō)明的是,此處并不是用 8253 的 out 端輸出方波來(lái)使之發(fā)聲,而是將 C 口的 PC6 交替置位和復(fù)位產(chǎn)生方波,使之發(fā)聲的。 開始 按鍵? 結(jié)束 接收用戶插卡信號(hào) 合法? 發(fā)確認(rèn)信號(hào) 接收用戶密碼信息 發(fā)確認(rèn)信號(hào) 接收用戶名信息 正確? 合法? 發(fā)確認(rèn)信號(hào) 提示用戶可以進(jìn)入 初始化 提示用戶名錯(cuò)誤 發(fā)否認(rèn)信號(hào) 提示密碼錯(cuò)誤 發(fā)否認(rèn)信號(hào) 提示卡非法 Y Y Y Y N N N N 3.主控機(jī)源程序 ;每次驗(yàn)證用戶名和密碼之前,都有退出提示,即 3 秒鐘內(nèi)按任意鍵退出,此時(shí) ;按任意鍵方可退出 data segment data51 equ 308h ;8251A 數(shù)據(jù)口 ctr151 equ 309h ;8251A 命令 /狀態(tài)口 defuser db 65h,81h,24h,37h,02ah,54h ;依次為各用戶名 defpwd db 20h,17h,34h,25h,04ch,44h ;依次為各用戶對(duì)應(yīng)的密碼 userno dw 6 ;用戶數(shù)目 YN db 0 ;發(fā)送緩存 user db 0 ;存放接收的用戶名 開始 按鍵? 結(jié)束 發(fā)送用戶插卡信號(hào) 接收 確認(rèn)信號(hào) 合法? 發(fā)用戶密碼信息 接收確認(rèn)信號(hào) 發(fā)送用戶名信息 接收確認(rèn)信號(hào) 正確? 合法? 提示用戶可以進(jìn)入 燈亮 初始化 聲音報(bào)警 提示用戶名錯(cuò)誤 接收否認(rèn)信號(hào) 聲音報(bào)警 提示密碼錯(cuò)誤 接收否認(rèn)信號(hào) 提示卡非法 Y Y Y Y N N N N pwd db 0 ;存放接收的密碼 t dw 0 ;延時(shí)初值 bufb db 0ah,0dh,The domitory system is running.!$ bufu db 0ah,0dh,username(4 characters):$ ;接收用戶名提示 bufp db 0ah,0dh,password(6 characters):$ ;接收密碼提示 bufr db 0ah,0dh,You can get in!$ ;正確提示 bufus db 0ah,0dh,Error username!$ ;用戶名錯(cuò)誤提示 bufpd db 0ah,0dh,Error password!$ ;密碼錯(cuò)誤提示 buferr db 0ah,0dh,Can not identify the card!$ ;不可識(shí)別的卡 bufexit db 0ah,0dh,Press any key within 3 seconds to exit!$ data ends stack segment stack db 200 dup(0) stack ends code segment assume cs:code,ds:data,ss:stack hh macro ;回車換行的宏 mov dl,0ah mov ah,2 int 21h mov dl,0dh mov ah,2 int 21h endm int51 proc near ;8251A 初始化子程 mov dx,ctr151 ;8251A 命令口 mov al,0 ;空操作 out dx,al mov al,40h ;內(nèi)部復(fù)位 out dx,al mov al,4Eh ;8251A 方式命令 out dx,al mov al,27h ;8251A 工作命令 out dx,al ret int51 endp delay1 proc ;延時(shí)子程 1 push bx mov bx,t dl1: dec bx jnz dl1 pop bx ret delay1 endp quit proc ;3 秒鐘之內(nèi)按任意鍵退出程序 push cx lea dx,bufexit mov ah,9 int 21h mov cx,05fffh qxx: cmp cx,0 je qx mov ah,1 ;檢測(cè)是否有鍵按下,有則退出 int 16h jnz qnext mov t,0ffffh call delay1 dec cx jmp qxx qnext: mov ah,4ch int 21h qx: pop cx ret quit endp send macro a;發(fā)送一個(gè)字符的宏,首先必須將要發(fā)送的字符送入變量 YN mov dx,ctr151 a: in al,dx test al,01 ;發(fā)送準(zhǔn)備好? TXRDY=1? jz a ;未準(zhǔn)備好,則等待 mov dx,data51 ;已準(zhǔn)備好,則發(fā)送 Y 給下位機(jī) mov al,YN out dx,al endm receive macro b ;接收一個(gè)字符的宏 ,接收到 al b: mov dx,ctr151 ;檢測(cè)接收準(zhǔn)備好沒 in al,dx test al,02 ;接收數(shù)據(jù)準(zhǔn)備好? RXRDY=1? jz b ;未準(zhǔn)備好則繼續(xù)檢測(cè) mov dx,data51;已準(zhǔn)備好,即有數(shù)據(jù)傳送過(guò)來(lái),則接收 1 個(gè)字符 in al,dx endm begin: mov ax,data mov ds,ax call int51 ;調(diào)用 8251A 子程序,初始化 8251A k: call quit ;延時(shí) 3 秒退出 hh lea dx,bufb ;系統(tǒng)提示 mov ah,9 int 21h receive o ;接收插卡信號(hào) cmp al,O jne error mov YN,Y ;發(fā)送卡確認(rèn)信息 send yyy lea dx,bufu ;用戶名提示信息 mov ah,9 int 21h mov al,0 receive a ;接收一個(gè)字符,用戶信息 mov user,al ;保存接收的用戶信息 mov dl,user ;顯示接收的字符 mov ah,02h int 21h jmp cmpuser error: lea dx,buferr ;無(wú)法識(shí)別的卡 mov ah,9 int 21h hh jmp k over: mov ax,4c00h int 21h cmpuser: mov al,user lea si,defuser ;取用戶名數(shù)組的首地址 mov cx,userno ;取用戶數(shù)目 cu: cmp cx,0 je sendnu cmp al,si je sy ;和某一個(gè)用戶名相等則發(fā)送 Y 確認(rèn)信號(hào) inc si dec cx jmp cu sy: push si ;保存該用戶名的地址 mov YN,Y send y lea dx,bufp ;密碼提示信息 mov ah,9 int 21h ;接收密碼 receive pp mov pwd,al ;保存接收的密碼 pop si mov ax,si add ax,userno ;得到該用戶名對(duì)應(yīng)的密碼在密碼數(shù)組中的地址 mov si,ax mov bl,si cmp pwd,bl ;和密碼比較 jne sendnp ;不相等則發(fā)送 N,相等則發(fā)送 Y mov YN,Y send yy lea dx,bufr ;顯示正確 mov ah,9 int 21h hh jmp k ;重新開始 sendnp: mov YN,N send n lea dx,bufpd ;顯示密碼錯(cuò)誤 mov ah,9 int 21h hh jmp k ;重新開始 sendnu: mov YN,N send n lea dx,bufus ;顯示用戶名錯(cuò)誤 mov ah,9 int 21h hh jmp k ;重新開始 code ends end begin 4.下位機(jī)源程序 ;程序開始時(shí),提示在 3 秒鐘內(nèi)按任意鍵退出,否則繼續(xù)執(zhí)行。若繼續(xù)執(zhí)行,首 ;先按 sw4 表示插卡,再由開 ;關(guān)狀態(tài)設(shè)置用戶名,按 sw1 發(fā)送之,顯示提示信息 ;仍然用開關(guān)狀態(tài)設(shè)置密碼,按 sw2 發(fā)送之,顯示提示 ;信息,回程序開始 . data segment data51 equ 308h ;8251A 數(shù)據(jù)口 ctr151 equ 309h ;8251A 命令 /狀態(tài)口 ctr155 equ 303h ;8255 命令口 ctr155a equ 300h ;8255 數(shù)據(jù)口 a ctr155b equ 301h ;8255 數(shù)據(jù)口 b un db 0 ;存放讀入的用戶名 pd db 0 ;存放讀入的密碼 hh db 0ah,0dh,$ ;回車換行 light db 0feh,0fdh,0fbh,0f7h,0efh,0dfh,0bfh,07fh ;閃爍燈狀態(tài) t dw 0 ;延時(shí)初值 f db 0 ;計(jì)數(shù)初始值 j db 0 ;計(jì)數(shù)初始值 YN db 0 bufexit db 0ah,0dh,Press any key within 3 seconds to exit!$ buf1 db 0ah,0dh,Press sw4 instand of inserting the card!$ buf2 db 0ah,0dh,Change the state of the switch to set username! Press sw1 to send it!$ ;提示錄入和發(fā)送用戶名 buf3 db 0ah,0dh,Change the state of the switch to set password! Press sw2 to send it!$ ;提示錄入和發(fā)送密碼 buf4 db 0ah,0dh,The user is not existed or you have the wrong password!$ ;錯(cuò)誤提示信息 buf5 db 0ah,0dh,You can get in!$ ;成功登錄信息 data ends stack segment stack DB 200 DUP(0) stack ends code segment assume cs:code,ds:data,ss:stack int51 proc near ;8251A 初始化子程 mov dx,ctr151 ;8251A 命令口 mov al,0 ;空操作 out dx,al mov al,40h ;內(nèi)部復(fù)位 out dx,al mov al,4Eh ;8251A 方式命令 out dx,al mov al,27h ;8251A 工作命令 out dx,al ret int51 endp send macro a;發(fā)送一個(gè)字符的宏,首先必須將要發(fā)送的字符送入變量 YN mov dx,ctr151 a: in al,dx test al,01 ;發(fā)送準(zhǔn)備好? TXRDY=1? jz a ;未準(zhǔn)備好,則等待 mov dx,data51 ;已準(zhǔn)備好,則發(fā)送一個(gè)字符給下位機(jī) mov al,YN out dx,al endm clear macro c ;置口 c 某一位 ,c 為置位控制字 mov dx,303h mov al,c out dx,al endm receive macro b ;接收一個(gè)字符的宏 ,接收到 al b: mov dx,ctr151 ;檢測(cè)接收準(zhǔn)備好沒 in al,dx test al,02 ;接收數(shù)據(jù)準(zhǔn) 備好? RXRDY=1? jz b ;未準(zhǔn)備好則繼續(xù)檢測(cè) mov dx,data51 ;已準(zhǔn)備好,即有數(shù)據(jù)傳送過(guò)來(lái),則接收 1 個(gè)字符 in al,dx endm delay1 proc ;延時(shí)子程 1 push bx mov bx,t dl1: dec bx jnz dl1 pop bx ret delay1 endp delay2 proc ;延時(shí)子程 2 push cx mov cx,00fffh xx: cmp cx,0 je x mov t,0ffffh call delay1 dec cx jmp xx x: pop cx ret delay2 endp quit proc ;3 秒鐘之內(nèi)按任意鍵退出程序 push cx lea dx,bufexit mov ah,9 int 21h mov cx,07fffh qxx: cmp cx,0 je qx mov ah,1 ;檢測(cè)是否有鍵按下,有則退出 int 16h jnz qnext mov t,0ffffh call delay1 dec cx jmp qxx qnext: mov ah,4ch int 21h qx: pop cx ret quit endp flutter proc ;燈閃爍函數(shù), 8 個(gè)燈依次亮,循環(huán) 3 次 lea di,light mov f,3 wyyy: cmp f,0 je wy mov cx,8 l: cmp cx,0 je wyy mov al,di ;燈亮 mov dx,ctr155a out dx,al call delay2 ;延時(shí) 2 mov al,0ffh ;燈滅 mov dx,ctr155a out dx,al inc di dec cx jmp l wyy: lea di,light dec f jmp wyyy wy: ret flutter endp noise proc ;聲音報(bào)警子函數(shù), 3 次長(zhǎng)鳴 push cx mov f,3 jj: cmp f,0 je ejj ;產(chǎn)生一定頻率的方波,使喇叭發(fā)聲 mov cx,00dffh xxkk1: cmp cx,0 je xkk mov dx,ctr155 ;pc6 置 1 mov al,0dh out dx,al mov t,0ffffh call delay1 ;延時(shí) mov dx,ctr155 ;pc6 置 0 mov al,0ch out dx,al mov t,0ffffh call delay1 ;延時(shí) dec cx jmp xxkk1 xkk: call delay2 ;不產(chǎn)生方波,停止發(fā)聲 dec f jmp jj ejj: pop cx ret noise endp begin: mov ax,data mov ds,ax call int51 ;調(diào)用 8251A 子程序,初始化 8251A mov dx,ctr155 ;初始化 8255A mov al,10000011b out dx,al ww: lea dx,hh ;回車換行 mov ah,9 int 21h call quit ;延時(shí)退出程 序 lea dx,hh ;回車換行 mov ah,9 int 21h lea dx,buf1 ;提示按 sw4 表示插卡 mov ah,9 int 21h ;檢測(cè) sw4 是否按下 clear 07h ;清 sw4 狀態(tài) wait4: mov dx,302 in al,dx ;sw4 按下 ? pc3=0? test al,08h ;否,則繼續(xù)檢測(cè) jnz wait4 ;是則發(fā)送卡插入信號(hào) mov YN,O send o mov al,0 ;接收主控機(jī)反饋信息 receive i cmp al,Y ;確認(rèn)則繼續(xù),否則重新開始 jne ww lea dx,buf2 ;提示設(shè)置用戶名并發(fā)送之 mov ah,9 int 21h ;檢測(cè) sw1 狀態(tài) clear 01h ;清 sw1 狀態(tài) wait1: mov dx,302h ;檢測(cè) sw1 是否按下 in al,dx test al,01h ;sw1 按下 ? pc0=0? jnz wait1 ;否則繼續(xù)檢測(cè) ;按下則讀開關(guān)狀態(tài)(口 b),得到用戶名 mov dx,ctr155b ;讀 b 口 in al,dx mov un,al ;保存用戶名 mov YN,al ;發(fā)送用戶名 send us jmp receiv over: mov ax,4c00h ;程序退出 int 21h ;接收主控機(jī)反饋信息 receiv: receive y cmp al,Y ;接收的字符和 Y比較 jne wrong ;不合法就提示錯(cuò)誤信息 lea dx,buf3 ;合法則提示設(shè)置密碼并發(fā)送之 mov ah,09h int 21h clear 02h ;清 sw2 狀態(tài) wait2: mov dx,302h ;檢測(cè) sw2 是否按下 in al,dx test al,02h ;sw2 按下 ? pc1=0? jnz wait2 ;否則繼續(xù)
溫馨提示
- 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫(kù)網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 石家莊市第四十中學(xué)2025年高一下化學(xué)期末檢測(cè)模擬試題含解析
- 2025屆山東省新泰第一中學(xué)北?;瘜W(xué)高一下期末學(xué)業(yè)質(zhì)量監(jiān)測(cè)試題含解析
- 2025屆浙江省浙南聯(lián)盟化學(xué)高一下期末教學(xué)質(zhì)量檢測(cè)試題含解析
- 校園讀物日常管理辦法
- 民工衣服庫(kù)存管理辦法
- 晚會(huì)捐贈(zèng)收入管理辦法
- 冬季水管防護(hù)管理辦法
- 合肥苗木采伐管理辦法
- 現(xiàn)代語(yǔ)文教育數(shù)字化資源整合平臺(tái)建設(shè)研究
- 小企業(yè)會(huì)計(jì)準(zhǔn)則的實(shí)務(wù)操作與案例分析
- 2024年遼寧沈陽(yáng)水務(wù)集團(tuán)有限公司招聘筆試真題
- 濰坊交通發(fā)展集團(tuán)有限公司招聘筆試題庫(kù)2025
- 胸痛中心質(zhì)控管理
- 2025時(shí)政試題及答案(100題)
- 第七章城市軌道交通屏蔽門設(shè)備接口68課件
- 國(guó)家開放大學(xué)漢語(yǔ)言文學(xué)本科《中國(guó)現(xiàn)代文學(xué)專題》期末紙質(zhì)考試第三大題分析題庫(kù)2025春期版
- 成都大學(xué)附屬中學(xué)英語(yǔ)新初一分班試卷含答案
- 新22J01 工程做法圖集
- 創(chuàng)新創(chuàng)業(yè)大賽項(xiàng)目商業(yè)計(jì)劃書模板
- 2025年1月國(guó)家開放大學(xué)漢語(yǔ)言文學(xué)本科《心理學(xué)》期末紙質(zhì)考試試題及答案
- 糖尿病酮癥酸中毒疑難病例護(hù)理
評(píng)論
0/150
提交評(píng)論