您好,欢迎访问三七文档
当前位置:首页 > IT计算机/网络 > 数据结构与算法 > 微机实验课程设计—停车场出入管理系统
《微机实验及课程设计》报告0东南大学自动化学院《微机实验及课程设计》课程设计报告停车场出入管理系统姓名:学号:08013418专业:自动化实验室:计算机硬件技术组别:同组人员:实验时间:2015年06月16日报告时间:2015年06月20日评定成绩:审阅教师:《微机实验及课程设计》报告1目录一.课程设计目的与要求……………………………………………………………………2二.方案论证与原理设计………………………………………………………………………2三.详细(机理)设计………………………………………………………………………3四.方案实现与测试(或调试)……………………………………………………………7五.分析与总结………………………………………………………………………………8《微机实验及课程设计》报告2一.课程设计目的与要求(含设计指标)1、设计项目名称:停车场出入管理系统2、课程设计目的:①巩固已学的理论课原理和基本知识;②加强编程和调试能力,学会用汇编语言编写简单使用的系统③学会对8086,8253,8255等芯片进行综合应用3、基本要求:设计实现一停车场实时管理系统。要求实时显示车位空闲情况(初值可修改,最多99辆),并分别控制A、B两个出入口。每个出入口需要控制进出栏杆,并检测车辆进出,修改统计、显示车位空闲情况,并根据空闲情况控制进入。用2*2个开关模拟两个出入口的车辆进出光电信号,2个LED灯模拟栏杆输出控制(亮代表有效,禁止出入)。允许A口进B口出,反之亦是。4、设计指标①要求用两个数码管实时显示车位空闲数目(00~99);②当有空位时,如有车辆到来,则在检测到信号(有效)后2秒钟打开进入栏杆,待车进入(信号无效)后1秒钟放下栏杆,空车位数减1修改;若无空位,则车辆等待,直至有车位空出;③当有车出停车场时则在检测到信号后2秒钟打开出车栏杆,带车离开3秒钟放下栏杆,空车位数加1修改;④车位发生变化时,PC上同步显示记录。5、拓展功能①8*8点阵显示进出箭头,有车辆进出空时绿色,满时红色;②自动记录车将进出时间和属性;③考虑A、B、C、D四个出入口同时控制的情况,自动显示空位数,控制车辆二.方案论证与原理设计(或基本原理)对上述基本要求和设计指标进行需求分析,并基于所有的硬件资源,我们可以采用如下办法进行实现:对于光电信号的采集(开关模拟)可以通过8255C口输入并进行判断,对于栏杆的控制同样可通过8255C口进行输出控制;对于双数码管的显示,可以采用动态显示的方法,利用8255A口输出数码管的七段译码,C口输出数码管的动态片选信号。实时的空车位保存于通用寄存器中(如BX,BH表示十位,BL表示个位);对于等待时间的控制,可以通过微机内部的延迟得到,但若想要得到精确地时间,则可以利用8253定时器实现,具体做法是利用双通道计数器的级联实现对1MHz时钟信号的1000*1000分频,得到1HZ的信号,即可得到1s精确延迟。《微机实验及课程设计》报告3程序的基本框架如下:1.对系统进行初始化,显示当前空车位数;2.利用输入指令从8255C口低四位输出光电信号。若检测到有效信号,则对其判断端口和进出性质;若无有效信号,则继续检测信号;3.对有效信号的性质进行判定:若为出信号,则执行出车程序(跳转指令实现);若为进信号,则先判断是否有空位(判断BX是否为0),若有空位,则执行进车程序,否则等待并检测是否有出车信号,至有空位出现;4.出车时首先需要一定得延迟,然后输出控制打开栅栏信号,经过一定的延迟之后,检测出车信号是否无效(表明车已经出去),无效则输出关闭栅栏信号,修改计数值并显示,否则继续等待,重复检测。三.详细(机理)设计1、系统工作流程图(如下所示)《微机实验及课程设计》报告4系统初始化显示初始空位数检测端口信号是否有进出信号?延迟2s是否有A口出信号?打开A口栅栏延迟2s延迟1sA口出信号是否仍然有效?关闭A口栅栏空位数加1显示空位数在PC上同步显示记录YYNYN延迟2s是否有A口入信号?打开A口栅栏延迟1s延迟1sA口入信号是否仍然有效?关闭A口栅栏空位数减1显示空位数在PC上同步显示记录NY是否有空位?YY延迟2s是否有B口出信号?打开B口栅栏延迟2s延迟1sB口出信号是否仍然有效?关闭B口栅栏空位数加1显示空位数在PC上同步显示记录YNY延迟2s是否有B口入信号?打开B口栅栏延迟1s延迟1s关闭B口栅栏空位数减1显示空位数在PC上同步显示记录NY是否有空位?YYB口入信号是否仍然有效?NNNNA口刚出车,不可能有进车,跳至B口检测B口刚出车,不可能有进车,返回N《微机实验及课程设计》报告52、关键部分程序片段①端口信号的检测和判断控制movbh,a[0];数码管的高位movbl,a[1];数码管的低位cmpbx,0000h;如果没有空车位就转向bjzbtestal,08h;00001000jzgoon1calltesta1;a口开关1拨上,监测a口状态goon1:testal,04h;00000100jzgoon2calltesta2goon2:calltesta3movbh,a[0]movbl,a[1]cmpbx,0909hjzloopsb:testal,02h;00000010jzgoon3calltestb1;b口开关1拨上,监测a口状态goon3:testal,01h;00000001jzgoon4calltestb2goon4:calltestb3jmploopsexit:movah,4chint21h②入车程序控制,以A口为例testa1procnearpushaxpushdx;a口开关1拨上,监测a口状态cmpstate_a,00h;空闲jzstate_a1cmpstate_a,01h;a口状态前《微机实验及课程设计》报告6jztimecheck_a2sjmpexit1state_a1:movdx,offsetmess8;提示有车准备进入movah,09hint21hmovstate_a,01hmovdx,io8253b;计数器通道1地址,计数器赋2smoval,00houtdx,almoval,08h;clk1接的是out0,经过两次分频,得出两秒outdx,aljmpexit1timecheck_a2s:movdx,io8255d;8255B口地址inal,dxandal,02h;00000010bjzexit1movdx,offsetmess3movah,09hint21hmovstate_a,02hmovdx,io8255b;开灯(栏杆打开)moval,0bh;00001011(C的5号口对应于栏杆信号)outdx,alexit1:popdxpopaxrettesta1endp③出车程序控制,以A口为例testb1procnear;b口开关1拨上,监测a口状态《微机实验及课程设计》报告7pushaxpushdxcmpstate_b,00hjzstate_b1cmpstate_b,01hjztimecheck_b2sjmpexit4state_b1:movdx,offsetmess9;提示有车准备离开movah,09hint21hmovstate_b,01hmovdx,io8253c;计数器赋2smoval,00houtdx,almoval,08houtdx,aljmpexit4timecheck_b2s:movdx,io8255dinal,dxandal,01hjzexit4movdx,offsetmess4movah,09hint21hmovstate_b,02hmovdx,io8255b;开灯(栏杆打开)moval,09houtdx,alexit4:popdxpopaxrettestb1endp《微机实验及课程设计》报告8④两位数码管动态显示程序dispprocnear;显示子程序pushdxmovdi,offsetledmovbyteptrbz,bladddi,bzmoval,00movdx,ioportaoutdx,almoval,2;选择数码管,低位movdx,ioportboutdx,almoval,byteptr[di];LED显示数字movdx,ioportaoutdx,almovcx,3000delay2:loopdelay2movdi,offsetledmovbyteptrbz,bhadddi,bzmoval,00movdx,ioportaoutdx,almoval,4;选择数码管,高位movdx,ioportboutdx,almoval,byteptr[di];LED显示数字movdx,ioportaoutdx,almovcx,3000delay3:loopdelay3popdxretdispendp《微机实验及课程设计》报告9四.方案实现与测试(或调试)1、用调试工具对每个子程序模块进行单步断点测试,观察各寄存器,标志寄存器的状态是否正确,重点关注跳转指令处是否跳转正确。2、整个程序连接起来,系统调试,对照流程图,确定各子程序的相互调用正确,条件转移正确,数码管的显示是否正确,是否能正常进入中断服务子程序和返回中断程序。一切正常后,对系统的功能逐一验证,检测每一项功能是否能正确执行。硬件实物图:连接运行结果:(1)输入空闲车位初值66;《微机实验及课程设计》报告10(2).数码管显示空闲车位数66《微机实验及课程设计》报告11(3)K7为1,车辆到来PC上显示有车想从A门进入,此时有车位,车从A门进入箭头显示车进入(4)K6为1,信号无效,1s后放下栏杆车进入后数码管显示空闲车位65《微机实验及课程设计》报告12车进入后PC显示空闲车位65无车需进入时显示禁止图案(5)B口出车情况类似箭头显示车出《微机实验及课程设计》报告13车出后数码管显示空闲车位67车出后PC显示空闲车位67考虑极端情况:《微机实验及课程设计》报告14(6)输入空闲车位初值01数码管显示空闲车位数01K7上拨为1,车辆到来PC上显示有车想从A门进入,有车位,车从A门进入车进入后数码管显示空闲车位为00K7再次为1,车辆到来PC上显示有车想从A门进入,无车位,提示无车位《微机实验及课程设计》报告15(7)输入空闲车位初值99数码管显示空闲车位数PC显示空闲车位为99,提示停车场内没有车《微机实验及课程设计》报告16四.提高与创新研究1)8×8点阵显示进出箭头;已实现,见以上过程图中。2)对于拓展功能2,我没能有一个较好的实现思路。3)对于拓展功能3,将两个出入口改为四个出入口,其他要求不变,因此只需在程序中添加四出入口的控制转移程序(安排原理和双口差不多)和对应的进出控制程序(这个可以复制双出口程序的代码,只需稍加改动即可)。这里只需要注意一点,那就是C口8位需要全部用来作为输入,输入8个拨码开关的信号,因此8255的控制字要做对应的改变。这里可以改用B口的高四位作栅栏的控制信号。但此次实验中未实现。《微机实验及课程设计》报告17五.分析与总结该系统已经能够基本完成所需求的功能,且运行稳定,因此具有一定的价值。当然,程序中仍然有待改进的地方。不过综合最后运行结果来看,还是算不错的完成了该有的功能,包括用8253精确定时,而不是用软件延时;进出点阵箭头的显示等。参考书目:东南大学《微机系统与接口》课程组,微机实验及课程设计教程(试用版2.0),东南大学初出版社,南京,2009年2月附录:datasegmentioportequ0b800h-280h;tpc卡中设备的io地址io8253aequioport+280h;计数器通道0地址io8253bequioport+281h;计数器通道1地址io8253cequioport+282h;计数器通道2地址io8253dequioport+283h;8253控制寄存器地址io8255aequioport+288h;8255A口地址io8255bequioport+28bh;8255控制寄存器端口地址io8255cequioport+28ah;825
本文标题:微机实验课程设计—停车场出入管理系统
链接地址:https://www.777doc.com/doc-5899696 .html