- 1、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
交通信号灯自动控制模拟指示系统
一、设计目的
1、掌握CPU与各芯片管脚连接方法,提高接口扩展硬件电路的连接能力设计并十字路通信号自动控制模拟指示系统。设该路口由A、B两条通行干道相交而成,四个路口各设一组红、黄、绿三色信号灯,用两位数码管作倒计时显示。0秒,同时南北路口数码管递减显示绿灯剩余时间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)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()
{
printf(现在运行的是模式三:夜间模式\n);
CloseDevi
文档评论(0)