欢迎来到天天文库
浏览记录
ID:9003639
大小:87.50 KB
页数:8页
时间:2018-04-14
《基于8255和8253交通灯c语言多种模式设计报告》由会员上传分享,免费在线阅读,更多相关内容在应用文档-天天文库。
1、交通信号灯自动控制模拟指示系统交通信号灯自动控制模拟指示系统一、设计目的1、掌握CPU与各芯片管脚连接方法,提高接口扩展硬件电路的连接能力。2、加深对定时器/计数器和并行接口芯片的工作方式和编程方法的理解。3、掌握交通信号灯自动控制系统的设计思路和实现方法。二、设计实验环境:1.硬件配置:微机一台(Pentium4)微机接口技术实验箱一个ISA–PCI转接卡一块连接电缆一条万用表一块微机接口技术实验讲义一本导线、剥线钳等2.软件环境:WindowsXP平台VisualC++6.0编译器三、设计内容设计并实现十字路口通信号自动控制
2、模拟指示系统。设该路口由A、B两条通行干道相交而成,四个路口各设一组红、黄、绿三色信号灯,用两位数码管作倒计时显示。-8-交通信号灯自动控制模拟指示系统四、系统功能与设计要求1.基本功能要求(1)以秒为计时单位,两位数码管以十进制递减计数显示通行剩余时间,在递减计数回零瞬间转换。十字路口交通灯的变化规律及控制时序:①南北口的绿灯、东西路口的红灯同时亮30秒,同时南北路口数码管递减显示绿灯剩余时间30,29,28……0秒。②南北路口的黄灯闪烁5秒钟,同时东西路口的红灯继续亮。③南北路口的红灯、东西路口的绿灯同时亮30秒,同时东西路
3、口数码管递减显示绿灯剩余时间30,29,28……0秒。④南北路口的红灯继续亮,同时东西路口的黄灯闪烁5秒钟。⑤转①重复。(2)通过键盘可以对红、黄、绿三色信号灯所亮时间在0~99秒内任意设定。(3)十字路口的通行起始状态可自行设定,系统启动后自动运行,按“Q”键退出。2.发挥部分(1)增加人工干预模式。在特殊情况下可通过人工干预,手动控A,B道路交通灯的切换时间,并可以随时切换为自动运行模式。-8-交通信号灯自动控制模拟指示系统(2)增加夜间控制功能,交通灯在进入夜间模式后,A、B两个干道上红、绿灯均不亮,黄色信号灯闪烁显示。(
4、3)增加红色信号灯倒计时显示。五、设计思路交通信号灯的亮灭时间及数码管显示时间可以通过计数/定时器(8253)来控制,8253的时钟源采用时钟信号发生器与分频电路提供,通过计算获得计数初值。按照需要设定工作方式。交通信号灯及数码管可以采用系统提供的相应模块,控制可以通过8255可编程并行接口,如:PA口控制红黄绿交通灯的亮灭,PB口和PC口控制时间显示数码管的段,位。也可使用基本并行I/O接口(74LS245,74LS273)。人工干预及夜间控制可以采用开关模块(K0~K7)进行模拟控制。六、软件流程图-8-交通信号灯自动控制模
5、拟指示系统七、源程序(实验扩展部分)//主函数voidmain(){intn;while(1){printf("请输入你所需要的模式:");scanf("%d",&n);switch(n){case1:mod_1();break;case2:mod_2();break;case3:mod_3();break;case4:return;}}}//模式一intmod_1(){printf("现在运行的是模式一:自动模式");OpenDevice();GetIoBase(&usIoBase);init(usIoBase);ti
6、meRec();while(1){if(way==0){if(count==0){while(1){OutByte(usIoBase,0xff);yellow_1();if(i==5){i=0;break;}}-8-交通信号灯自动控制模拟指示系统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=
7、=5){i=0;break;}}way=0;count=30;timeRec();}display_2(usIoBase);OutByte(usIoBase+1,0xf3);}}CloseDevice();return0;}//模式二voidmod_2(){printf("现在运行的是模式二:手动控制模式");CloseDevice();Sleep(10);OpenDevice();GetIoBase(&usIoBase);init(usIoBase);Sleep(10);while(1)-8-交通信号灯自动控制模拟指示系统
8、{OutByte(pBaseAddr+1,0xED);Sleep(1000);OutByte(pBaseAddr+1,0xF3);Sleep(1000);}CloseDevice();}//模式三voidmod_3(){printf("现在运行的是模式三:夜间模
此文档下载收益归作者所有