宿舍安全系统单片机课程设计说明书_第1页
宿舍安全系统单片机课程设计说明书_第2页
宿舍安全系统单片机课程设计说明书_第3页
宿舍安全系统单片机课程设计说明书_第4页
宿舍安全系统单片机课程设计说明书_第5页
已阅读5页,还剩10页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

接口课程设计实验报告 宿舍安全系统设计报告 一 .实验目的及要求 目的:结合一个实际的接口技术问题在实验台上编程模拟实现。 要求: 结合实际应用,设计一微机应用系统,要求该系统综合应用并行接口、串行接口、其它接口(定时器接口、中断接口、模拟接口可选)、编制对应的程序,实现主控中心微机与下位机远距离传送以及远程控制或监测功能。 二 .系统功能 本系统是用来验证进入宿舍人员的身份的。用户从下位机刷卡,并录入用户名和密码。下位机分别将用户名和密码发送给主控机,主控机验证之后,发送相应的反馈信息给下位机。只有 当用户名和密码都被确认,用户身份才合法。合法时下位机控制发光部件逐个亮灯提示,不合法时则下位机控制发声部件鸣声警报。 三 .系统设计 1. 系统硬件由主控机(其中一台微机)、下位机(另一台位微机)和执行部件组成。主控机与下位机通过串行通信线连接。 2. 执行部件:由接口电路等组成,将接收的数据送入到下位机或将下位机输出的数据送到执行部件。 3. 下位机:与主控机通信,控制执行部件。 4主控机:与所有下位机进行数据交换,必要时需建数据库,进行数据处理等。 5主控机程序:串行( RS232/RS485)通信程 序,数据处理程序等。 6下位机程序:串行( RS232/RS485)通信程序,执行部件控制程序。 系统接口框图见下页所示: 下图中, 8255 是用来进行下位机控制部件的接口单元。 A 口的 8 个引脚和控制板上的 8个显示灯相连,其输出决定灯的状态; B 口 8 个引脚和控制板上的拨码开关的 8 位相连,编码开关的状态可由 B 口读入下位机; C 口的 PC0,PC1,PC3 分别和控制板上的 SW1,SW2,S24 相连,可由下位机读入各开关的状态, PC6 则和喇叭相连,由 PC6 输出方波控制喇叭发声。 四程序设计 本次课程设计的过程中,我主要负责下位机的程序的编写,以及导线在实验台上的连接这两部分的程序设计工作。 系统的模块框图由系统设计的内容可知,即 8255 芯片以上的部分是本系统的通讯模块框图,以下的部分为本程序的功能模块框图。 系统的程序设计是紧密围绕系统功能进行的,程序要实现的功能就是系统的功能。 流程框图如下: 1主控机程序流程图 程序设计过程中,为了模拟用户的刷卡进入,让下位机去测试控制板上的开关 sw4,其按下表示有用户刷卡进入,这时就可以发送插卡信号给主控机, 下图中“接收用户插卡信号”就是指这个信号。 主控机 8251 RS232 RS232 8251 下位机 8255 A 口 B 口 C 口 显示灯 sw1,sw2,sw4 和 喇叭 开关 总线 总线 2下位机程序流程图 下位机部分需要操作控制板,这里要用到控制板上的 8 位编码开关,以及开关 sw1, sw2,sw4。按下 sw4 表示用户插卡进入,然后拨动控制板上的编码开关,设置用户名编码,按下sw1 发送给主控机,若被主控机确认无误,则拨动控制板上的编码开关设置密码,再按下 sw2发送给主控机,等待主控机确认。 正确情况下的灯亮很好控制,只要 A 口输出数据到灯的引脚,再设计一段程序控制灯的闪烁方式即可。喇叭的发声 要说明的是,此处并不是用 8253 的 out 端输出方波来使之发声,而是将 C 口的 PC6 交替置位和复位产生方波,使之发声的。 开始 按键? 结束 接收用户插卡信号 合法? 发确认信号 接收用户密码信息 发确认信号 接收用户名信息 正确? 合法? 发确认信号 提示用户可以进入 初始化 提示用户名错误 发否认信号 提示密码错误 发否认信号 提示卡非法 Y Y Y Y N N N N 3.主控机源程序 ;每次验证用户名和密码之前,都有退出提示,即 3 秒钟内按任意键退出,此时 ;按任意键方可退出 data segment data51 equ 308h ;8251A 数据口 ctr151 equ 309h ;8251A 命令 /状态口 defuser db 65h,81h,24h,37h,02ah,54h ;依次为各用户名 defpwd db 20h,17h,34h,25h,04ch,44h ;依次为各用户对应的密码 userno dw 6 ;用户数目 YN db 0 ;发送缓存 user db 0 ;存放接收的用户名 开始 按键? 结束 发送用户插卡信号 接收 确认信号 合法? 发用户密码信息 接收确认信号 发送用户名信息 接收确认信号 正确? 合法? 提示用户可以进入 灯亮 初始化 声音报警 提示用户名错误 接收否认信号 声音报警 提示密码错误 接收否认信号 提示卡非法 Y Y Y Y N N N N pwd db 0 ;存放接收的密码 t dw 0 ;延时初值 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!$ ;用户名错误提示 bufpd db 0ah,0dh,Error password!$ ;密码错误提示 buferr db 0ah,0dh,Can not identify the card!$ ;不可识别的卡 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 ;内部复位 out dx,al mov al,4Eh ;8251A 方式命令 out dx,al mov al,27h ;8251A 工作命令 out dx,al ret int51 endp delay1 proc ;延时子程 1 push bx mov bx,t dl1: dec bx jnz dl1 pop bx ret delay1 endp quit proc ;3 秒钟之内按任意键退出程序 push cx lea dx,bufexit mov ah,9 int 21h mov cx,05fffh qxx: cmp cx,0 je qx mov ah,1 ;检测是否有键按下,有则退出 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;发送一个字符的宏,首先必须将要发送的字符送入变量 YN mov dx,ctr151 a: in al,dx test al,01 ;发送准备好? TXRDY=1? jz a ;未准备好,则等待 mov dx,data51 ;已准备好,则发送 Y 给下位机 mov al,YN out dx,al endm receive macro b ;接收一个字符的宏 ,接收到 al b: mov dx,ctr151 ;检测接收准备好没 in al,dx test al,02 ;接收数据准备好? RXRDY=1? jz b ;未准备好则继续检测 mov dx,data51;已准备好,即有数据传送过来,则接收 1 个字符 in al,dx endm begin: mov ax,data mov ds,ax call int51 ;调用 8251A 子程序,初始化 8251A k: call quit ;延时 3 秒退出 hh lea dx,bufb ;系统提示 mov ah,9 int 21h receive o ;接收插卡信号 cmp al,O jne error mov YN,Y ;发送卡确认信息 send yyy lea dx,bufu ;用户名提示信息 mov ah,9 int 21h mov al,0 receive a ;接收一个字符,用户信息 mov user,al ;保存接收的用户信息 mov dl,user ;显示接收的字符 mov ah,02h int 21h jmp cmpuser error: lea dx,buferr ;无法识别的卡 mov ah,9 int 21h hh jmp k over: mov ax,4c00h int 21h cmpuser: mov al,user lea si,defuser ;取用户名数组的首地址 mov cx,userno ;取用户数目 cu: cmp cx,0 je sendnu cmp al,si je sy ;和某一个用户名相等则发送 Y 确认信号 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 ;得到该用户名对应的密码在密码数组中的地址 mov si,ax mov bl,si cmp pwd,bl ;和密码比较 jne sendnp ;不相等则发送 N,相等则发送 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 ;显示密码错误 mov ah,9 int 21h hh jmp k ;重新开始 sendnu: mov YN,N send n lea dx,bufus ;显示用户名错误 mov ah,9 int 21h hh jmp k ;重新开始 code ends end begin 4.下位机源程序 ;程序开始时,提示在 3 秒钟内按任意键退出,否则继续执行。若继续执行,首 ;先按 sw4 表示插卡,再由开 ;关状态设置用户名,按 sw1 发送之,显示提示信息 ;仍然用开关状态设置密码,按 sw2 发送之,显示提示 ;信息,回程序开始 . data segment data51 equ 308h ;8251A 数据口 ctr151 equ 309h ;8251A 命令 /状态口 ctr155 equ 303h ;8255 命令口 ctr155a equ 300h ;8255 数据口 a ctr155b equ 301h ;8255 数据口 b un db 0 ;存放读入的用户名 pd db 0 ;存放读入的密码 hh db 0ah,0dh,$ ;回车换行 light db 0feh,0fdh,0fbh,0f7h,0efh,0dfh,0bfh,07fh ;闪烁灯状态 t dw 0 ;延时初值 f db 0 ;计数初始值 j db 0 ;计数初始值 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!$ ;提示录入和发送用户名 buf3 db 0ah,0dh,Change the state of the switch to set password! Press sw2 to send it!$ ;提示录入和发送密码 buf4 db 0ah,0dh,The user is not existed or you have the wrong password!$ ;错误提示信息 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 ;内部复位 out dx,al mov al,4Eh ;8251A 方式命令 out dx,al mov al,27h ;8251A 工作命令 out dx,al ret int51 endp send macro a;发送一个字符的宏,首先必须将要发送的字符送入变量 YN mov dx,ctr151 a: in al,dx test al,01 ;发送准备好? TXRDY=1? jz a ;未准备好,则等待 mov dx,data51 ;已准备好,则发送一个字符给下位机 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 ;接收一个字符的宏 ,接收到 al b: mov dx,ctr151 ;检测接收准备好没 in al,dx test al,02 ;接收数据准 备好? RXRDY=1? jz b ;未准备好则继续检测 mov dx,data51 ;已准备好,即有数据传送过来,则接收 1 个字符 in al,dx endm delay1 proc ;延时子程 1 push bx mov bx,t dl1: dec bx jnz dl1 pop bx ret delay1 endp delay2 proc ;延时子程 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 秒钟之内按任意键退出程序 push cx lea dx,bufexit mov ah,9 int 21h mov cx,07fffh qxx: cmp cx,0 je qx mov ah,1 ;检测是否有键按下,有则退出 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 ;灯闪烁函数, 8 个灯依次亮,循环 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 ;延时 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 ;声音报警子函数, 3 次长鸣 push cx mov f,3 jj: cmp f,0 je ejj ;产生一定频率的方波,使喇叭发声 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 ;延时 mov dx,ctr155 ;pc6 置 0 mov al,0ch out dx,al mov t,0ffffh call delay1 ;延时 dec cx jmp xxkk1 xkk: call delay2 ;不产生方波,停止发声 dec f jmp jj ejj: pop cx ret noise endp begin: mov ax,data mov ds,ax call int51 ;调用 8251A 子程序,初始化 8251A mov dx,ctr155 ;初始化 8255A mov al,10000011b out dx,al ww: lea dx,hh ;回车换行 mov ah,9 int 21h call quit ;延时退出程 序 lea dx,hh ;回车换行 mov ah,9 int 21h lea dx,buf1 ;提示按 sw4 表示插卡 mov ah,9 int 21h ;检测 sw4 是否按下 clear 07h ;清 sw4 状态 wait4: mov dx,302 in al,dx ;sw4 按下 ? pc3=0? test al,08h ;否,则继续检测 jnz wait4 ;是则发送卡插入信号 mov YN,O send o mov al,0 ;接收主控机反馈信息 receive i cmp al,Y ;确认则继续,否则重新开始 jne ww lea dx,buf2 ;提示设置用户名并发送之 mov ah,9 int 21h ;检测 sw1 状态 clear 01h ;清 sw1 状态 wait1: mov dx,302h ;检测 sw1 是否按下 in al,dx test al,01h ;sw1 按下 ? pc0=0? jnz wait1 ;否则继续检测 ;按下则读开关状态(口 b),得到用户名 mov dx,ctr155b ;读 b 口 in al,dx mov un,al ;保存用户名 mov YN,al ;发送用户名 send us jmp receiv over: mov ax,4c00h ;程序退出 int 21h ;接收主控机反馈信息 receiv: receive y cmp al,Y ;接收的字符和 Y比较 jne wrong ;不合法就提示错误信息 lea dx,buf3 ;合法则提示设置密码并发送之 mov ah,09h int 21h clear 02h ;清 sw2 状态 wait2: mov dx,302h ;检测 sw2 是否按下 in al,dx test al,02h ;sw2 按下 ? pc1=0? jnz wait2 ;否则继续

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论