闪烁led小灯的设计毕业设计论文(编辑修改稿)内容摘要:

EX0=1。 //外部中断 INT0 开启 IT0=1。 //设置开关下降沿有效 EX1=1。 //外部中断 INT0 开启 IT1=1。 //设置开关下降沿有效 ns_time=ns_time_green。 //东西南北红黄绿灯时间赋值 ew_time=ew_time_red。 ew_time_red=ns_time_green+ns_time_yellow。 if(!a) //a=0,东西显示 19 开始倒计时,南北 14 开始倒计时 7 { ns_time=ew_time_red。 ew_time=ns_time_green+ns_time_yellow。 } while(!a) //a=0,进入循环 { if(ew_time50) { while(!flag)。 display(ew_time,ew_time5)。 //flag=1,显示东西 19,南北 14 P1=0xdd。 //南北绿灯,东西红灯 flag=0。 } if(ew_time=5) //东西时间 =5 时,南北黄灯闪烁,东西红灯 { while(!flag)。 flag=0。 display(ns_time,ns_time)。 //东西,南北均从 5开始倒计时显示 P1=0xdf。 //东西红灯,南北黄灯一亮一灭显示 /*p1_4=0。 */ 8 delay(5000)。 p1_0=~p1_0。 //南北黄灯所在位,对应取反,实现亮灭变化 delay(5000)。 } if(ew_time==0) //如果东西时间为 0,赋值 a为 1,以实现方向转变 a=1。 } if(a) //a=1,南北显示 19开始倒计时,东西 14 开始倒计时 { ns_time=ew_time_red。 ew_time=ns_time_green+ns_time_yellow。 } while(a) //a=1,进入循环 { if(ns_time50) //南北红灯,东西绿灯 { while(!flag)。 display(ns_time5,ns_time)。 //flag=0,显示南北 19,东西 14 delay(5000)。 //延时子函数调用 P1=0xeb。 //南北红扥个,东西绿灯显示 } 9 if(ns_time5=0) //南北时间 =5 时南北红灯,东西黄灯闪烁 { while(!flag)。 //flag=0 南北显示 19 开始倒计时,东西 14 开始计时 flag=0。 display(ns_time,ns_time)。 //东西,南北均从 5 开始倒计时显示 P1=0xfb。 //南北红灯,东西黄灯一亮一灭显示 p1_3=~p1_3。 //东西黄灯 位取反 ,以实现黄灯亮灭变化显示 delay(5000)。 //延时函数调用 } if(ns_time==0) //如果南北时间为 0 赋值 a为 0 a=0。 } } 延时子程序: . delay(int t) { while(t)。 } 显示子程序: display(int ew_time,int ns_time) { char table[10]={0x03,0x9f,0x25,0x0d,0x99,0x49,0x41,0x1f,0x01,0x09}。 10 //共阳极数码显示 09对应的字型码 char i,a[4]。 a[2]=ns_time%10。 //南北时间个位数赋值给 a[2] a[3]=ns_time/10。 //南北时间十位数赋值给 a[3] a[0]=ew_time%10。 //东西时间个位数赋值给 a[0] a[1]=ew_time/10。 //东西时间个位数赋值给 a[1] SM1=0。 SM0=0。 //串行口工作方式 0设定 for(i=3。 i=0。 i) //分别将 4位数送到 SBUF 区域 { SBUF=table[a[i]]。 while(!TI)。 //判断是否发送完一个数据 TI=0。 //若发送完, 0赋给 TI } } 中断程序: void int0(void) interrupt 0 //int0 中断子函数,当紧急情况(救护车等)发生时,对应 INT0 按键调用此函数 { int i,j。 display(00,00)。 //显示器显示 0000,不再进行倒计时 delay(5000)。 for(i=0。 i10。 i++) 11 //利用 flag 实现东西南北方向红灯均显示亮 ,对应东西南北方向车流均停止,处理紧急情况 { for(j=0。 j10。 j++) {delay(50000)。 while(!flag) { P1=0xdb; } } } flag=0。 } void int1(void) interrupt 2 //int1 中断子函数,当紧急情况(救护车等)发生时,对应 INT1 按键调用此函数 { int i,j。 display(00,00)。 //显示器显示 0000,不再进行倒计时 for(i。
阅读剩余 0%
本站所有文章资讯、展示的图片素材等内容均为注册用户上传(部分报媒/平媒内容转载自网络合作媒体),仅供学习参考。 用户通过本站上传、发布的任何内容的知识产权归属用户或原始著作权人所有。如有侵犯您的版权,请联系我们反馈本站将在三个工作日内改正。