交通信号灯程序

上传人:kms****20 文档编号:40525211 上传时间:2018-05-26 格式:DOC 页数:12 大小:36KB
返回 下载 相关 举报
交通信号灯程序_第1页
第1页 / 共12页
交通信号灯程序_第2页
第2页 / 共12页
交通信号灯程序_第3页
第3页 / 共12页
交通信号灯程序_第4页
第4页 / 共12页
交通信号灯程序_第5页
第5页 / 共12页
点击查看更多>>
资源描述

《交通信号灯程序》由会员分享,可在线阅读,更多相关《交通信号灯程序(12页珍藏版)》请在金锄头文库上搜索。

1、交通信号灯程序交通信号灯程序/* *第一个状态:密码启停 *第二个状态:主干道亮绿灯 25S、支干道亮红灯 *第三个状态:主干道绿灯次转亮黄灯、支干道亮红灯 2S *第四个状态:主干道亮红灯、支干道亮绿灯 25S *第五个状态:主干道亮红灯、支干道绿灯闪 3 次转亮黄灯 2S *返回到第二个状态 * */* 11.0952M 晶振*/#include/头文件#include/头文件#define uchar unsigned char/宏定义#define uint unsigned int/宏定义sbit RED_ZHU = P10;sbit YELLOW_ZHU = P11;sbit GR

2、EEN_ZHU = P12;sbit RED_ZHI = P13;sbit YELLOW_ZHI = P14;sbit GREEN_ZHI = P15;sbit KN3=P34;sbit KN4=P35;sbit KN5=P36;sbit KN6=P37;char KN1;KN2;uint aa, bai,shi,ge,bb; /定义变量/*数码管显示 0-9*/uint code table=0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f;/*子函数声明*/void delay(uint z);void delay0(uint z);/vo

3、id init(uint a);void display(uint ge,uint shi);void xtimer0();void init1();void init2();void init3();void init4();void init5();void xint1();void xint0();void LED_ON();void LED_OFF();/*主函数*/void main()P0=0XFF;P1=0xFF;P2=0xFF;EA=1;/打开外部中断EX1=1;/允许外部中断 1 中断IT1=0;/INT0 为沿触发方式if(KN6=0) if(KN5=0)/密码锁 if(K

4、N4=0)if(KN3=0)while(1)init2();/第 2 个状态init3(); /第 3 个状态init4(); /第 4 个状态init5();/第 5 个状态void init1() uint temp;temp=6;/变量赋初值TMOD=0x01;/定时器 0 工作于方式 1TH0=0x4c;TL0=0x00;/定时器赋初值EA=1;/开外部中断ET0=1;/开定时中断TR0=1;/开定时器 0while(1)RED_ZHU=0; RED_ZHI=0;GREEN_ZHU=1;GREEN_ZHI=1;YELLOW_ZHU=1;YELLOW_ZHI=1;if(aa=20)/定时

5、 20*50MS=1Saa=0;/定时完成一次后清 0temp-;/变量自增/delay(10);if(temp250)/定时 100Stemp=6;/变量清 0break;shi=temp%100/10;/显示十位ge=temp%10;/显示个位 display(ge,shi);void init2()/第二个状态:主干道亮绿灯 25S、支干道亮红灯uint temp;temp=26;/变量赋初值TMOD=0x01;/定时器 0 工作于方式 1TH0=0x4c;TL0=0x00;/定时器赋初值EA=1;/开外部中断ET0=1;/开定时中断TR0=1;/开定时器 0while(1) RED_Z

6、HU=1;RED_ZHI=0;GREEN_ZHU=0; GREEN_ZHI=1;YELLOW_ZHU=1;/第二个状态:主干道亮绿灯 25S、支干道亮红灯YELLOW_ZHI=1;if(aa=20)/定时 20*50MS=1Saa=0;/定时完成一次后清 0temp-;/变量自减if(temp=2)/定时 100Stemp=25;/变量清 0break;shi=temp%100/10;/显示十位ge=temp%10;/显示个位display(ge,shi);void init3() /第三个状态:主干道绿灯熄灭转亮黄灯亮 2s、支干道亮红灯 3S uint temp;temp=4;/变量赋初值

7、TMOD=0x01;/定时器 0 工作于方式 1TH0=0x4c;TL0=0x00;/定时器赋初值EA=1;/开外部中断ET0=1;/开定时中断TR0=1;/开定时器 0while(1)RED_ZHI=0;GREEN_ZHU=1;/YELLOW_ZHU=YELLOW_ZHU;if(aa=20)/定时 20*50MS=1Saa=0;/定时完成一次后清 0temp-;/变量自增YELLOW_ZHU=0;if(temp200)/定时 100Stemp=2;/变量清 0break;shi=temp%100/10;/显示十位ge=temp%10;/显示个位 display(ge,shi);void in

8、it4()/第四个状态:主干道亮红灯、支干道亮绿灯 30S uint temp;temp=26;/变量赋初值TMOD=0x01;/定时器 0 工作于方式 1TH0=0x4c;TL0=0x00;/定时器赋初值EA=1;/开外部中断ET0=1;/开定时中断TR0=1;/开定时器 0while(1)RED_ZHU=0; RED_ZHI=1;YELLOW_ZHU=1;/第一个状态主干道、支干道均亮红灯 5S GREEN_ZHI=0;if(aa=20)/定时 20*50MS=1Saa=0;/定时完成一次后清 0temp-;/变量自增if(temp=3)/定时 100Stemp=30;/变量清 0brea

9、k;shi=temp%100/10;/显示十位ge=temp%10;/显示个位 display(ge,shi);void init5()/第五个状态:主干道亮红灯、支干道绿灯亮转黄灯2S uint temp;temp=3;/变量赋初值TMOD=0x01;/定时器 0 工作于方式 1TH0=0x4c;TL0=0x00;/定时器赋初值EA=1;/开外部中断ET0=1;/开定时中断TR0=1;/开定时器 0while(1)RED_ZHI=1;RED_ZHU=0;GREEN_ZHU=1;GREEN_ZHI=1;/YELLOW_ZHI=YELLOW_ZHI;if(aa=20)/定时 20*50MS=1S

10、aa=0;/定时完成一次后清 0temp-;/变量自增 YELLOW_ZHI=0;if(temp200)/定时 100Stemp=3;/变量清 0break;shi=temp%100/10;/显示十位ge=temp%10;/显示个位 display(ge,shi);/*显示子函数*/void display(uint ge,uint shi)P0=0xfd;P2=tableshi;/显示十位delay0(5);P0=0xfe;P2=tablege;/显示个位delay0(5);void xint0() interrupt 2 /外部中断 1,这里用 2 是 INT1 的优先级为 0 KN1=0

11、P0=0Xff;P1=0Xff;P2=0Xff;LED_ON();void LED_ON()/外部中断 0 显示子程序RED_ZHI=0;RED_ZHU=0;GREEN_ZHI=1;GREEN_ZHU=1;YELLOW_ZHI=1;YELLOW_ZHU=1;delay0(1000);return ;/*定时中断子函数*/void xtimer0() interrupt 1 TH0=0x4c;TL0=0x00;aa+;/*延时子函数*/void delay0(uint z)uint i,j;for(i=0;i0;j-)for(i=1250;i0;i-) for(k=180;k0;k-);#inc

12、ludeunsigned char dis_buf6;unsigned char code table10=0x0c0,0x0f9,0x0a4,0x0b0,0x99,0x92,0x82,0x0f8,0x80,0x90;void display()unsigned char i;TI=0;for(i=0;i6;i+)SBUF=tabledis_bufi;while(TI=0);TI=0;void main()SCON=0x00;dis_buf0=0;dis_buf1=3;dis_buf2=1;dis_buf3=2;dis_buf4=1;dis_buf5=4;display();while(1);

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 生活休闲 > 科普知识

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号