《综合交通灯+图形+程序+仿真.doc》由会员分享,可在线阅读,更多相关《综合交通灯+图形+程序+仿真.doc(11页珍藏版)》请在金锄头文库上搜索。
1、 综合交通灯总的实验效果:南北红灯时,南北显示“停”的人形,南北绿灯时,南北显示“跑”的人形;东西红灯时,东西显示“停”的人形,东西绿灯时,东西显示“跑”的人形; 红灯 绿灯总的电路图:总效果图:怕你们看不清楚,我分开展示:+实验程序代码:#include#define uchar unsigned char#define uint unsigned intsbit RED_A=P10; /东西向指示灯sbit YELLOW_A=P11;sbit GREEN_A=P12;sbit RED_B=P13; /南北向指示灯sbit YELLOW_B=P14;sbit GREEN_B=P15;ucha
2、r code table2=0xfe,0xfd,0xfb,0xf7,0xef,0xdf,0xbf,0x7f;uchar code table1=0x10,0x10,0x38,0x54,0x18,0x28,0x24,0x00;uchar code table3=0x10,0x50,0x3C,0x14,0x10,0x28,0x14,0x00;/延时倍数,闪烁次数,操作类型uint Time_Count=0,Flash_Count=0,Operation_Type=1;uint t=0;uchar i=0;uint flag=0;/定时器0 中断函数void T0_INT() interrupt 1
3、TH0=(65536-50000)%256;TL0=(65536-50000)/256;switch(Operation_Type)case 1: /东西向绿灯与南北向红灯亮5sRED_A=0;YELLOW_A=0;GREEN_A=1;flag=0;RED_B=1;YELLOW_B=0;GREEN_B=0;if(+Time_Count!=100) return; /5s(100*50ms)切换Time_Count=0;Operation_Type=2;break;case 2: /东西向黄灯开始闪烁,绿灯关闭if(+Time_Count!=8) return;Time_Count=0;YELL
4、OW_A=YELLOW_A;GREEN_A=0;if(+Flash_Count!=10) return; /闪烁Flash_Count=0;Operation_Type=3;break;case 3: /东西向红灯与南北向绿灯亮5sRED_A=1;YELLOW_A=0;GREEN_A=0;RED_B=0;YELLOW_B=0;GREEN_B=1;flag=1;if(+Time_Count!=100) return; /5s(100*50ms)切换Time_Count=0; Operation_Type=4;break;case 4: /南北向黄灯开始闪烁,绿灯关闭if(+Time_Count!
5、=8) return;Time_Count=0;YELLOW_B=YELLOW_B;GREEN_A=0;if(+Flash_Count!=10) return; /闪烁Flash_Count=0;Operation_Type=1;break;/主程序void main()TH0=(65536-50000)%256;TL0=(65536-50000)/256;TMOD=0x01; /T0 方式1IE=0x82;TR0=1;while(1)if(flag=0) P0=0xff;for(i=0;i8;i+) P0=table27-i;P3=table1i;P2=table3i; if(flag=1) P0=0xff; for(i=0;i8;i+) P0=table27-i;P3=table3i;P2=table1i;