下载此文档

交通灯论文.doc


文档分类:论文 | 页数:约13页 举报非法文档有奖
1/13
下载提示
  • 1.该资料是网友上传的,本站提供全文预览,预览什么样,下载就什么样。
  • 2.下载该文档所得收入归上传者、原创者。
  • 3.下载的文档,不会出现我们的网址水印。
1/13 下载此文档
文档列表 文档介绍
交通灯论文交通灯摘要:利用数码管,定时器,LED灯,以及芯片AT89C52实现交通灯的模拟。最终实现,东西方与南北方交换时间为30秒,其中,在30秒的最后两秒有相应的绿灯变为黄灯,然后再切换到另一方向。同时,由数码管显示具体时间。方案论证及设计首先,设定两个时间初值,timer1=30,timer2=;然后再利用定时器T0控制timer1和timer2每一秒钟减1并通过数码管将两者的具体变化显示出来;同时,设定显示标志位direction,当其值为1时,东西方通行,即:东西绿灯,南北红灯;当其值为零时,南北通行,即:南北绿灯,东西红灯。direction的初值为1,当T(30秒倒计时标志位)减到-1时direction变为0,以此类推。其中,T的变化同timer1、timer2步调一致(每一秒钟变化一次)。当direction变为0时,timer1、timer2值互换,南北绿灯亮,计时初值为30。原理分析及硬件电路图P1^6、P1^7、P1^8口控制东西方的红黄绿灯;P1^3、P1^2、P1^1口控制南北方向的红黄绿灯;P0^3、P0^2、P0^1、P0^0分别控制数码管2、1、4、3;P3^0~P3^7分别控制每一位数码管的ABCDEFGDP位。(一)、在函数display_1()(东西方向数码管显示函数)及函数voiddisplay_2()(南北方向数码管示函数)中分别控制各自LED及LCD的显示,最终在主函数中调用。voiddisplay_1(){charT_high,T_low;//时间的个位和十位T_high=Time1/10; //十位值 T_low=Time1%10;//各位值P0=14;//开十位,P0口编码:00001110 P3=table[T_high];//显示十位数delay(20);//软件延时 P0=13;//开个位,P0口编码:00001101 P3=table[T_low];//显示个位数 delay(20);}//南北方向数码管显示voiddisplay_2(){charT_high,T_low;T_high=Time2/10;T_low=Time2%10; P0=11;//00001011 P3=table[T_high];delay(20); P0=7;//00000111 P3=table[T_low]; delay(20);}(二)对于东西方与南北方的交换,则在主函数中体现:if(flag) { flag=0;// 1S标志清零 Time1--;Time2--;T--;//时间减去1S if(!direction&&T==-1)//南北方向(direction=-1)30S倒计时完毕,调换通行方向和倒计时起点{Time1=30;Time2=28;T=30;direction=!direction;} if(direction&&T==-1)//东西方向(direction=1)30S倒计时完毕,调换通行方向和倒计时起点{Time1=28;Time2=30;T=30;direction=!direction;} }(三)程序流程(浩哥,画流程图的那个工具我不会用,你弄一下吧,呵呵)(四)误差分析:该程序中的误差会产生在时间上。由于每条语句的执行都需要一定的时间,故会对定时造成一定的影响。但执行每条语句大约只要?us乘以20条(至多)小于1ms,所以,误差处在允许范围内。(五)总结本系统主要实现交通灯的模拟,最终实现:1)30秒转换。2)最后5秒绿灯转为黄灯。3)有数码管倒计时。附源程序:#include<>charcount=0;//中断计数,50ms*20次=1秒bitflag=0;//一秒标志位bitdirection=1;//方向标志位,东西方向为1,南北方向为0 charTime1=30,Time2=28;//倒计时起点charcodetable[10]={0x3f,0x06,0x5b,0x4f,0x66,//0~9的数码管编码0x6d,0x7d,0x07,0x7f,0x6f};voiddelay(char);//软件延时子函数voiddisplay_1();//东西方向数码管显示函数voiddisplay_2();//南北方向数码管示函数//主程序voidmain(){ charT=30;//倒计时30S TMOD=0x01; //定时器0工作于1方式 TH0=(65536-50000)/256;//定时器初值,50ms TL0=(65536-50000)%256; EA=1;//开总中断 ET0=1;//开定时器0中断 TR0=1;//启动定时器 while(1)//循环执行 { //LED显示部分 if(direction)/

交通灯论文 来自淘豆网m.daumloan.com转载请标明出处.

相关文档 更多>>
非法内容举报中心
文档信息
  • 页数13
  • 收藏数0 收藏
  • 顶次数0
  • 上传人yuzonghong1
  • 文件大小76 KB
  • 时间2019-08-01
最近更新