乘用车厂家
免费服务热线

Free service

hotline

010-00000000
乘用车厂家
热门搜索:
行业资讯
当前位置:首页 > 行业资讯

MSC51单片机交通灯程序

发布时间:2020-06-30 15:53:06 阅读: 来源:乘用车厂家

/**************************************************************** 程序名称:MSC51单片机交通灯 晶振:12.00 P1口* 实验对象:HC6800单片机学习开发板* 单 片 机:AT89S52或STC89C52 时间:红绿灯各亮10s* * 更多的资料和程序共享请关注****************************************************************//#include reg52.h>#define uchar unsigned char /*宏定义 */#define uint unsigned int /*宏定义 */uchar sec,sec1; /*秒*/uchar int_num; /*定时溢出作用标号*/sbit reda=P1^0; //A路口红灯sbit yellowa=P1^1; //A路口黄灯sbit greena=P1^2; //A路口绿灯sbit redb=P1^3; //B路口红灯sbit yellowb=P1^4; //b路口黄灯sbit greenb=P1^5; //b路口绿灯void redyellowb(); //b路口红黄灯闪烁void redyellowa(); //a路口红黄灯闪烁void delay10ms(uint x); //闪烁延时void inter_init(); /*定时器初始化子函数声明*//****专用数码管显示表***///uchar code duma[]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f,0x40}; /*0x40显示“一”符号*///uchar code wema[]={0x7f,0xbf,0xdf,0xef,0xf7,0xfb,0xfd,0xfe,0x00}; //---------------------初始化T0函数--------------------------void time0(void) interrupt 1 /*定时器T0服务子程序*/ { TH0=(65535-50000)/256; TL0=(65535-50000)%256; int_num++; }//---------------------定时器函数--------------------------void inter_init() /*定时器初始化子函数*/ { EA=1; ET0=1; /*打开定时器T0*/ TMOD=0x01; /*工作方式1*/ TCON = 0x00; /*触发方式*/ IP = 0x01; /*中断优先级别,T0优先*/ TH0=(65535-50000)/256; /*置初值,大约50ms一个中断 */ TL0=(65535-50000)%256; TR0=1; /*置位TR0,启动定时器0*/ }//--------------------- 交通灯变换-------------------------- void time10() { if(int_num==20) //20为1s可改为10加速调试 { int_num=0; sec++; sec1++; if(sec==10) //10s { greenb=1; // b路口绿灯关 EA=0; // 关中断 redyellowa(); // a路口红黄灯共闪(调用) reda=1; // a路口红灯关 greena=0; // a路口绿灯开 redb=0; // b路口红灯开 EA=1; // 开中断 } if(sec1==20) //20s { greena=1; // a路口绿灯关 EA=0; // 关中断 redyellowb(); // b路口红黄灯 redb=1; // b路口红灯关 greenb=0; // b路口绿灯开 reda=0; // a路口红灯开 sec=0; // 秒清零 EA=1; // 关中断 sec1=0; // 秒1清零 () } } // } //------------------------------10ms时间调用---------------------------------- void delay10ms(uint x){ uint i,j; // 声明变量 for (i=1;ix;i++) // 执行x次,延迟X*10ms for (j=1;j120;j++);// 执行120次,延迟10ms} // delay1ms()函数结束 //---------------------- // a路口红黄灯共闪(调用)---------------------------void redyellowa() { yellowb=0;redb=0; delay10ms(50); yellowb=1;redb=1; delay10ms(50); yellowb=0;redb=0; delay10ms(50); yellowb=1;redb=1; delay10ms(50); yellowb=0;redb=0; delay10ms(50); yellowb=1;redb=1; delay10ms(50); yellowb=0;redb=0; delay10ms(50); yellowb=1;redb=1; }//---------------------- // b路口红黄灯共闪(调用)---------------------------void redyellowb() { yellowa=0;reda=0; delay10ms(50); yellowa=1;reda=1; delay10ms(50); yellowa=0;reda=0; delay10ms(50); yellowa=1;reda=1; delay10ms(50); yellowa=0;reda=0; delay10ms(50); yellowa=1;reda=1; delay10ms(50); yellowa=0;reda=0; delay10ms(50); yellowa=1;reda=1; }//---------------------主函数--------------------------------void main(){ inter_init(); /*定时器初始化*/ reda=0;greenb=0; // 路灯初始化 while(1) //死循环 { time10(); //调用 }}

石家庄制做西服

潍坊西服订做

石家庄防静电工作服制作

相关阅读