您好,欢迎访问三七文档
当前位置:首页 > 行业资料 > 交通运输 > 基于8255和8253交通灯c语言多种模式设计报告
交通信号灯自动控制模拟指示系统-1-交通信号灯自动控制模拟指示系统一、设计目的1、掌握CPU与各芯片管脚连接方法,提高接口扩展硬件电路的连接能力。2、加深对定时器/计数器和并行接口芯片的工作方式和编程方法的理解。3、掌握交通信号灯自动控制系统的设计思路和实现方法。二、设计实验环境:1.硬件配置:微机一台(Pentium4)微机接口技术实验箱一个ISA–PCI转接卡一块连接电缆一条万用表一块微机接口技术实验讲义一本导线、剥线钳等2.软件环境:WindowsXP平台VisualC++6.0编译器三、设计内容设计并实现十字路口通信号自动控制模拟指示系统。设该路口由A、B两条通行干道相交而成,四个路口各设一组红、黄、绿三色信号灯,用两位数码管作倒计时显示。交通信号灯自动控制模拟指示系统-2-四、系统功能与设计要求1.基本功能要求(1)以秒为计时单位,两位数码管以十进制递减计数显示通行剩余时间,在递减计数回零瞬间转换。十字路口交通灯的变化规律及控制时序:①南北口的绿灯、东西路口的红灯同时亮30秒,同时南北路口数码管递减显示绿灯剩余时间30,29,28……0秒。②南北路口的黄灯闪烁5秒钟,同时东西路口的红灯继续亮。③南北路口的红灯、东西路口的绿灯同时亮30秒,同时东西路口数码管递减显示绿灯剩余时间30,29,28……0秒。④南北路口的红灯继续亮,同时东西路口的黄灯闪烁5秒钟。⑤转①重复。(2)通过键盘可以对红、黄、绿三色信号灯所亮时间在0~99秒内任意设定。(3)十字路口的通行起始状态可自行设定,系统启动后自动运行,按“Q”键退出。2.发挥部分(1)增加人工干预模式。在特殊情况下可通过人工干预,手动控A,B道路交通灯的切换时间,并可以随时切换为自动运行模式。(2)增加夜间控制功能,交通灯在进入夜间模式后,A、B两个干道上交通信号灯自动控制模拟指示系统-3-红、绿灯均不亮,黄色信号灯闪烁显示。(3)增加红色信号灯倒计时显示。五、设计思路交通信号灯的亮灭时间及数码管显示时间可以通过计数/定时器(8253)来控制,8253的时钟源采用时钟信号发生器与分频电路提供,通过计算获得计数初值。按照需要设定工作方式。交通信号灯及数码管可以采用系统提供的相应模块,控制可以通过8255可编程并行接口,如:PA口控制红黄绿交通灯的亮灭,PB口和PC口控制时间显示数码管的段,位。也可使用基本并行I/O接口(74LS245,74LS273)。人工干预及夜间控制可以采用开关模块(K0~K7)进行模拟控制。六、软件流程图交通信号灯自动控制模拟指示系统-4-七、源程序(实验扩展部分)//主函数voidmain(){intn;while(1){printf(请输入你所需要的模式:\n);scanf(%d,&n);switch(n){case1:mod_1();break;case2:mod_2();break;case3:mod_3();break;case4:return;}}}//模式一intmod_1(){printf(现在运行的是模式一:自动模式\n);OpenDevice();GetIoBase(&usIoBase);init(usIoBase);timeRec();while(1){if(way==0){if(count==0){while(1){OutByte(usIoBase,0xff);yellow_1();if(i==5){i=0;break;}}交通信号灯自动控制模拟指示系统-5-way=1;count=30;timeRec();}display_1(usIoBase);OutByte(usIoBase+1,0xde);}if(way==1){if(count==0){OutByte(usIoBase,0xff);while(1){yellow_2();if(i==5){i=0;break;}}way=0;count=30;timeRec();}display_2(usIoBase);OutByte(usIoBase+1,0xf3);}}CloseDevice();return0;}//模式二voidmod_2(){printf(现在运行的是模式二:手动控制模式\n);CloseDevice();Sleep(10);OpenDevice();GetIoBase(&usIoBase);init(usIoBase);Sleep(10);while(1)交通信号灯自动控制模拟指示系统-6-{OutByte(pBaseAddr+1,0xED);Sleep(1000);OutByte(pBaseAddr+1,0xF3);Sleep(1000);}CloseDevice();}//模式三voidmod_3(){printf(现在运行的是模式三:夜间模式\n);CloseDevice();Sleep(1000);OpenDevice();GetIoBase(&usIoBase);init(usIoBase);Sleep(1000);while(1){OutByte(pBaseAddr+1,0xDE);Sleep(1000);OutByte(pBaseAddr+1,0xFF);Sleep(1000);}CloseDevice();}八、测试结果1、自动模式:交通信号灯自动控制模拟指示系统-7-2、手动模式:3、夜间模式:九、设计中遇到的主要问题及解决方法在实验过程中,由于对芯片不熟悉,各片的引脚口的功能不了解,使得我们面对硬件无从下手。因此也无法熟练的应用件软来控制硬件来正常工作。后来,通过我们在课后查看参考资料,以及即时的与老师交流,进一步的了解了硬件的应用和软件的控制方法,以使我们最后顺利完成了实验的测试程序。十、心得体会交通信号灯自动控制模拟指示系统-8-通过这次的实验,我们收获很多(1)拿到一个课题时,一定不要急于动手,而首先要搞清楚要干什么,完成什么功能,分几部分完成,每部分完成什么功能,各部分之间的联系。如果采用的是自顶向下的设计思想,那么顶层的设计就很重要,顶层设计好后,下面各部分写起来就比较清楚容易了。一旦出现问题,也好检查错误出在什么地方,哪一部分有问题,就进行相应的改动。(2)在编程过程中,思路要清楚,明白要实现的功能,然后根据实现的功能一步一步的编写。(3)再者,我们也感觉到了,我们平时学的也只是课本上的文字,真正要到实际中应用,我们的差距依然很远,平时一定要多实践,多应用,才能把所学的知识转变为自己的能力。
本文标题:基于8255和8253交通灯c语言多种模式设计报告
链接地址:https://www.777doc.com/doc-2567956 .html