和交通灯c语言多种模式方向报告.docVIP

  1. 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
  2. 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  3. 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  4. 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  5. 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  6. 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  7. 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
交通信号灯自动控制模拟指示系统 一、设计目的 1、掌握CPU与各芯片管脚连接方法,提高接口扩展硬件电路的连接能力。 2、加深对定时器/计数器和并行接口芯片的工作方式和编程方法的理解。 3、掌握交通信号灯自动控制系统的设计思路和实现方法。 二、设计实验环境: 1. 硬件配置:微机一台 Pentium 4) 微机接口技术实验箱一个 ISA – PCI转接卡一块 连接电缆一条 万用表一块 微机接口技术实验讲义一本 导线、剥线钳等 2. 软件环境: Windows XP 平台 Visual C++ 6.0 编译器 三、设计内容 设计并实现十字路口通信号自动控制模拟指示系统。设该路口由A、B两条通行干道相交而成,四个路口各设一组红、黄、绿三色信号灯,用两位数码管作倒计时显示。 四、系统功能与设计要求 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)增加红色信号灯倒计时显示。 五、设计思路 交通信号灯的亮灭时间及数码管显示时间可以通过计数/定时器8253)来控制,8253的时钟源采用时钟信号发生器与分频电路提供,通过计算获得计数初值。按照需要设定工作方式。交通信号灯及数码管可以采用系统提供的相应模块,控制可以通过8255可编程并行接口,如:PA口控制红黄绿交通灯的亮灭,PB口和PC口控制时间显示数码管的段,位。也可使用基本并行I/O接口74LS245,74LS273)。人工干预及夜间控制可以采用开关模块K0~K7)进行模拟控制。 六、软件流程图 七、源程序实验扩展部分) //主函数 void main( { int n。 while(1 { printf(请输入你所需要的模式:\n。 scanf(%d,n。 switch(n { case 1:mod_1(。 break。 case 2:mod_2(。break。 case 3:mod_3(。break。 case 4:return。 } } } //模式一 int mod_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。 } } 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(。 return 0。 } //模式二 void mod_2( { printf(现在运行的是模式二:手动控制模式\n。 CloseDevice(。 Sleep(10。 OpenDevice(。 GetIoBase(usIoBase。 init(usIoBase。 Sleep(10。 while(1 { OutByte(pBaseAddr+1,0xED。 Sleep(1000。 OutByte(pBaseAddr+1,0xF3。 Sleep(1000。 } CloseDevice(。 } //模式三 void mod_3

文档评论(0)

159****6529 + 关注
实名认证
文档贡献者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档