用51单片机实现交通信号灯

    科技2025-09-16  46

    用51单片机实现交通信号灯

    1、新建工程项目及文件1.1 新建工程1.2 新建文件 2、新建protues电路2.1 新建工程2.2 选择元器件2.3 连接元器件 3、导入文件并仿真3.1 导入文件3.2 开始仿真

    1、新建工程项目及文件

    1.1 新建工程

    1.1.1新建工程项目 1.1.2选择保存路径以及工程名称 1.1.3选择51芯片 选择AT89C51 工程即可创建完成

    1.2 新建文件

    1.2.1新建文件 1.2.2将代码写入保存 代码如下

    #include "reg52.h" #define dm P0 typedef unsigned int u16; typedef unsigned char u8; sbit ISA=P3^5; sbit ISB=P3^6; sbit ISC=P3^7; sbit k1=P3^4; sbit fmq=P3^3; u8 code smgduan[10]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f}; //u8 code smgduan[10]={0x6f,0x7f,0x07,0x7d,0x6d,0x66,0x4f,0x5b,0x06,0x3f}; u8 smgdata[8]; u8 second=0; void delay(u16 i) { while(i--); } void Time01Init() { TMOD|=0X11; TH0=0XFC; TL0=0X18; ET0=1; TH1=0XFF; TL1=0X9C; ET1=1; EA=1; } void SmgDisplay() { u8 i; for(i=0;i<8;i++) { switch(i) { case(0): ISA=0;ISB=0;ISC=0; break; case(1): ISA=1;ISB=0;ISC=0; break; case(2): ISA=0;ISB=1;ISC=0; break; case(3): ISA=1;ISB=1;ISC=0; break; case(4): ISA=0;ISB=0;ISC=1; break; case(5): ISA=1;ISB=0;ISC=1; break; case(6): ISA=0;ISB=1;ISC=1; break; case(7): ISA=1;ISB=1;ISC=1; break; } dm=smgdata[i]; delay(100); dm=0x00; } } sbit p1_0=P1^0; sbit p1_1=P1^1; sbit p1_2=P1^2; sbit p1_3=P1^3; sbit p1_4=P1^4; sbit p1_5=P1^5; sbit p1_6=P1^6; sbit p1_7=P1^7; sbit p2_0=P2^0; sbit p2_1=P2^1; sbit p2_2=P2^2; sbit p2_3=P2^3; void deng() { if(second==56) { second=0; } if(second<25) { smgdata[0]=smgduan[(25-second)/10%10]; //Î÷ÂÌ25-01 smgdata[1]=smgduan[(25-second)/1%10]; smgdata[2]=smgduan[(28-second)/10%10];//±±ºì28-03 smgdata[3]=smgduan[(28-second)/1%10]; smgdata[4]=smgduan[(25-second)/10%10];//¶«ÂÌ25-01 smgdata[5]=smgduan[(25-second)/1%10]; smgdata[6]=smgduan[(28-second)/10%10];//ÄϺì28-03 smgdata[7]=smgduan[(28-second)/1%10]; SmgDisplay(); p1_0=0; p1_1=0; p1_2=1; p1_3=0; p1_4=0; p1_5=1; p1_6=1; p1_7=0; p2_0=0; //8 p2_1=1; //9 p2_2=0; //10 p2_3=0; //11 } else if(second<28) { smgdata[0]=smgduan[(28-second)/10%10];//Î÷»Æ03-01 smgdata[1]=smgduan[(28-second)/1%10]; smgdata[2]=smgduan[(28-second)/10%10];//±±ºì03-01 smgdata[3]=smgduan[(28-second)/1%10]; smgdata[4]=smgduan[(28-second)/10%10];//¶«»Æ03-01 smgdata[5]=smgduan[(28-second)/1%10]; smgdata[6]=smgduan[(28-second)/10%10];//ÄϺì03-01 smgdata[7]=smgduan[(28-second)/1%10]; SmgDisplay(); p1_0=0; p1_1=1; p1_2=0; p1_3=0; p1_4=1; p1_5=0; p1_6=1; p1_7=0; p2_0=0; //8 p2_1=1; //9 p2_2=0; //10 p2_3=0; //11 } else if(second<53) { smgdata[0]=smgduan[(56-second)/10%10];//Î÷ºì28-03 smgdata[1]=smgduan[(56-second)/1%10]; smgdata[2]=smgduan[(53-second)/10%10];//±±ÂÌ25-01 smgdata[3]=smgduan[(53-second)/1%10]; smgdata[4]=smgduan[(56-second)/10%10];//¶«ºì28-03 smgdata[5]=smgduan[(56-second)/1%10]; smgdata[6]=smgduan[(53-second)/10%10];//ÄÏÂÌ25-01 smgdata[7]=smgduan[(53-second)/1%10]; SmgDisplay(); p1_0=1; p1_1=0; p1_2=0; p1_3=1; p1_4=0; p1_5=0; p1_6=0; p1_7=0; p2_0=1; //8 p2_1=0; //9 p2_2=0; //10 p2_3=1; //11 */ } else if(second<56) { smgdata[0]=smgduan[(56-second)/10%10];//Î÷ºì05-01 smgdata[1]=smgduan[(56-second)/1%10]; smgdata[2]=smgduan[(56-second)/10%10];//±±»Æ05-01 smgdata[3]=smgduan[(56-second)/1%10]; smgdata[4]=smgduan[(56-second)/10%10];//¶«ºì05-01 smgdata[5]=smgduan[(56-second)/1%10]; smgdata[6]=smgduan[(56-second)/10%10]; //ÄÏ»Æ05-01 smgdata[7]=smgduan[(56-second)/1%10]; SmgDisplay(); p1_0=1; p1_1=0; p1_2=0; p1_3=1; p1_4=0; p1_5=0; p1_6=0; p1_7=1; p2_0=0; //8 p2_1=0; //9 p2_2=1; //10 p2_3=0; //11*/ } } void main() { while(1) { Time01Init(); //key(); TR0=1; TR1=0; deng(); } } void Time0() interrupt 1 { static u16 i; TH0=0XFC; TL0=0X18; i++; if(i==1000) //1s==1000ms { i=0; second++; } }

    保存文件并选择路径编辑文件名 点击保存即可 1.2.3添加文件到工程并编译文件 1.2.4 生成hex文件 点击ok再次编译即可生成

    2、新建protues电路

    2.1 新建工程

    2.1.1新建工程 2.1.2编辑文件名称及路径 点击下一步直至完成即可

    2.2 选择元器件

    2.2.1添加元器件 打开元器件库并选择需要的元器件

    2.3 连接元器件

    将元器件按图示连接

    3、导入文件并仿真

    3.1 导入文件

    3.1.1导入 双击51芯片并导入之前生成的hex文件

    添加完成后点击确定

    3.2 开始仿真

    点击开始仿真 结果如图 总结:通过本次用51单片机实现交通信号灯,简单的了解了51单片机的应用。也通过本次仿真,了解到硬件编程和软件所不同的区别。

    Processed: 0.015, SQL: 8