模拟交通控制灯设计.docVIP

  1. 1、本文档共11页,可阅读全部内容。
  2. 2、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  5. 5、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  6. 6、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  7. 7、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  8. 8、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
模拟交通控制灯设计.doc

交通灯远程控制灯的设计 一、总体设计 1、任务 交通灯的任务要求为:模拟十字路口的交通灯的亮、灭及闪烁控制及时间显示。. 基本工作原理:根据交通灯的亮灭情况,可以分为四种状态,利用定时计数器每5毫秒产生一次中断,完成对 LED显示模块的刷新,红绿灯的切换。 通过串口对交通灯进行远程控制,实现pc机和单片机之间的通信程序编写,学习单片机和pc机之间的串口连接方法和编程技巧。 2、要求 设计并实现单片机交通灯控制系统,实现以下三种情况下的交通灯控制。 正常情况下双方向轮流点亮。 特殊情况时A道运行。 有紧急车辆通行时,A B道均为红灯。紧急情况优先级高于特殊情况。 3、说明 本任务实现用pc机作为控制机、单片机控制信号灯为从机的远程控制系统。主从机双方除了要有一定的通信格式,波特率外,还要约定一些握手应答信号,即通信协议。  通信协议如下: 二、硬件设计 1、 根据总体设计要求,确定系统功能接口,设计出系统的电路原理图。 2、 若不考虑左行转弯,则南北方向只用红、绿、黄3只灯控制,东西方向也只用红、绿、黄3只灯控制,即共用6只灯。不必对单片机的I/O口进行扩展。 3、 4个共阳极数码管自右至左以两位数的形式显示秒数。为了保证数码管的亮度,必须保证输入电流的大小,因此,选用PNP型三极管作为位驱动放大器。如下图: 分析可知,三极管相当于反向器,数码管位选低电平有效。 4、按键模拟紧急情况和特殊情况的发生,当s1 、s2为高电平时(不按按键时)表示正常情况,当s1为低电平时表示紧急情况,s1信号接至INT0*引脚,s2为低电平时表示特殊情况, s2信号接至INT1*引脚(若为矩阵式键盘,可采用扫描方式识别按键)。 三、软件设计 1、根据图表可以画出各个函数流程图 P1.5 P1.4 P1.3 P1.2 P1.1 P1.0 P1端口数据 状态说明 A红灯 A黄灯 A绿灯 B红灯 B黄灯 B绿灯 F3 1 1 0 0 1 0 状态1:A通行,B禁止 1 1 0,1交替变换 0 1 1 EB 状态2:A绿灯闪,B禁止 1 0 1 0 1 1 状态3:A警告,B禁止 0 1 1 1 1 0 DE 状态4:A禁,B通 0 1 1 1 0,1交替变换 状态5:A禁,B闪 0 1 1 1 0 1 DD 状态6:A禁,B警告 2、函数流程图 四、硬件电路图 五、源程序 #include reg51.h #define uchar unsigned char #define uint unsigned int uchar led[]={0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90}; uchar DispX[]={0xfb,0xf3,0xfb,0xeb,0xde,0xdf,0xde,0xdd}; void AFangXing(void); //函数声明 void ShanShuo(uchar *PTR); void JingGao(uchar *PTR); void BFangXing(void); void delay_5ms(void) //5ms定时 { uchar i; for(i=0;i5;i++) //T0方式1,定时1毫秒,循环5次即实现5毫秒定时 { TH0=0xfc; TL0=0x18; TR0=1; // T/C0开始工作 while(!TF0); TF0=0; } } void int_0() interrupt 0 { uint i,x,y,l,m; EA=0;//关中断 i=P1; l=TH1; m=TL1; EA=1; P1=0xdb; for(x=10;x0;x--) { for(y=100;y0;y--) { P2=0xf5; P0=led[x%10]; delay_5ms(); P2=0xfa; P0=led[x/10];//紧急情况倒计时 delay_5ms(); } } EA=0; P1=i; TH1=l; TL1=m; EA=1; } void int_1() interrupt 2 //特殊情况中断 { uint i,l,m,x,y; EA=0;//关中断 i=P1; l=TH1; m=TL1; EA=1; P1=0xF3; for(x=10;x0;x--) { for(y=100;y0;y--) { P2=0xf5; P0=led[x%10]; delay_5ms(); P2=0xfa; P0=led[x/10];//特殊情况倒计时 delay_5ms()

文档评论(0)

天马行空 + 关注
实名认证
文档贡献者

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

1亿VIP精品文档

相关文档