《2022年2022年基于PICFA单片机的交通灯设计》由会员分享,可在线阅读,更多相关《2022年2022年基于PICFA单片机的交通灯设计(5页珍藏版)》请在金锄头文库上搜索。
1、软件流程说明当东西红灯亮,南北绿灯亮时,东西方向数码管倒计时40秒,南北数码管倒计时30 秒;切换成南北黄灯亮,东西红灯亮,同时南北数码管倒计时10 秒,黄灯亮 10 秒;然后切换成南北红灯亮,东西绿灯亮,南北数码管倒计时40 秒,东西数码管倒计时 30 秒;切换成南北红灯亮,东西黄灯亮,同时东西方向数码管倒计时 10 秒,黄灯亮 10 秒;一直循环下去,再一次切换成东西红灯亮,南北绿灯亮时,南北方向数码管倒计时30 秒仿真电路图:#include unsigned char LED1=0; unsigned char LED2=0; unsigned char LED3=0; 名师资料总结
2、- - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 1 页,共 5 页 - - - - - - - - - unsigned char LED4=0; unsigned char LED_L=0; const unsigned char table18= 0X3F,0X06,0X5B,0X4F,0X66,0X6D,0X7D,0X07,0X7F,0X6F,0X60,0X25,0X3c,0X23,0X34,0X74,0XF7,0XFF; void timer1init(void) /初始化 T1CON=0
3、X01; /打开定时器1 TMR1IF=0; /清除TMR1 中断标志TMR1IE=1; /TMR1 中断允许TMR1H=0xF6; /赋初值,以便TMR1 每 2MS 左右中断一次TMR1L=0x3D; PIR1=0; /清除所有中断标志PEIE=1; /允许外围总中断GIE=1; /总中断开关打开 void interrupt T1(void)/ 中断处理 if(TMR1IF=1) /如果是定时器1 中断 TMR1IF=0; /清除定时器1 中断标志TMR1H=0XF6; /重新复初值TMR1L=0x3D; switch(LED_L) case 0:/点亮第一个数码管RE2=1; RE1=
4、0; RE0=0; PORTB = tableLED1; LED_L = 1; break; case 1:/点亮第二个数码管RE2=0; RE1=1; RE0=0; PORTB = tableLED2; LED_L = 2; break; case 2: /点亮第三个数码管RE2=1; RE1=1; 名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 2 页,共 5 页 - - - - - - - - - RE0=0; PORTB = tableLED3; LED_L = 3; bre
5、ak; case 3:/点亮第四个数码管RE2=0; RE1=0; RE0=1; PORTB = tableLED4; LED_L = 0; break; default:/ 语句 d LED_L = 0; break; delay()/延时500ms int j,k; for(j=0;j500;j+) for(k=0;k49;k+) delay_s(int n)/ 延时n 秒 int i; for(i=0;in;i+) delay(); delay(); main()/ 主函数 int i; ADCON1=0X06; /初始化TRISA=0X00; /南北方向交通灯控制信号输出端TRISB=
6、0X00; /数码管段选信号输出端TRISC=0X00; /东西南北方向交通灯控制信号输出端TRISE=0X00; /数码管位选信号输出端PORTA=0X00; PORTB=0X00; 名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 3 页,共 5 页 - - - - - - - - - PORTC=0X00; PORTE=0X00; timer1init();/ 定时器 1 初始化LED1=3;LED2=0;LED3=3;LED4=5;/数码管赋初值while(1) PORTA=0
7、X01;PORTC=0X40; / 东西红灯亮,南北绿灯亮LED1=3; LED2=0;LED3=4;LED4=0;/东西倒数 40S,南北倒数30S for(i=0;i40;i+) delay_s(1); LED2=LED2-1; LED4-; if(LED2=0XFF) LED2=9;LED1-; if(LED4=0XFF) LED4=9;LED3-; if(i=29) PORTA=0X02; / 南北黄灯亮10S LED1=1;LED2=0;LED3=1;LED4=0; if(LED2=0XFF) LED2=9;LED1-; if(LED4=0XFF) LED4=9;LED3-; if(
8、LED2=0XFF&LED4=0XFF) PORTA=0X04;PORTC=0X10; / 东西绿灯亮,南北红灯亮LED1=4;LED2=0; LED3=3; LED4=0;/东西倒数 40S,南北倒数30S for(i=0;i40;i+) delay_s(1); LED4=LED4-1; LED2-; if(LED4=0XFF) LED4=9;LED3-; if(LED2=0XFF) LED2=9;LED1-; if(i=29) PORTC=0X20; / 东西黄灯亮10S LED1=1;LED2=0;LED3=1;LED4=0; 名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 4 页,共 5 页 - - - - - - - - - if(LED4=0XFF) LED4=9;LED3-; if(LED2=0XFF) LED2=9;LED1-; if(LED2=0XFF&LED4=0XFF) 名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 5 页,共 5 页 - - - - - - - - -