找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
查看: 875|回复: 0
打印 上一主题 下一主题
收起左侧

智能PC控制交通灯 仿真带程序

[复制链接]
跳转到指定楼层
楼主

#include <reg51.h>                                //???#include <uart.h>
#define uchar unsigned char
#define uint  unsigned int                //???
uchar flag=0;
uchar Sendnum=0;
uchar num=0;
uchar Receivedata[6];





uchar data buf[4];                                        //??????
uchar data sec_dx=20;                          //?????
uchar data sec_nb=30;                        //?????
uchar data set_timedx=20;                //?????????
uchar data set_timenb=30;                //?????????
int n;
uchar data countt0,countt1;//???0????
//??6???
sbit  k4=P3^7;      //????
sbit  k1=P3^5;                //???
sbit  k2=P3^6;                //???
sbit  k3=P3^4;                //??
sbit  k5=P3^1;                //??
sbit  k6=P1^5;                //????


sbit Red_nb=P2^6;                //??????
sbit Yellow_nb=P2^5;        //??????
sbit Green_nb=P2^4;     //??????

sbit Red_dx=P2^3;                //??????
sbit Yellow_dx=P2^2;        //??????
sbit Green_dx=P2^1;                //??????

sbit Buzz=P3^0;               
bit set=0;                                //????????? =1?,??,=0?,??
bit dx_nb=0;                        //???????
bit shanruo=0;                        //?????
bit yejian=0;                        //?????????

uchar code table[11]={        //??????
        0x3f,  //--0
        0x06,  //--1
        0x5b,  //--2
        0x4f,  //--3
        0x66,  //--4
        0x6d,  //--5
        0x7d,  //--6
        0x07,  //--7
        0x7f,  //--8
        0x6f,  //--9
        0x00   //--NULL
};

//???????
void delay(int ms);                        //?????
void key();                                        //???????
void key_to1();                                //??????
void key_to2();
void key_to3();
void display();                                //?????
void logo();                                   //??LOGO
void Buzzer();
//???
void main()
{
        TMOD=0X11;                                           //?????
        TH1=0X3C;               
        TL1=0XB0;
        TH0=0X3C;                                        //???0??? 0.05S
        TL0=0XB0;
        EA=1;                                                //????
        ET0=1;                                                //???0????
        ET1=1;                                           //???1????
        TR0=1;                                                //????0
        TR1=0;                                                         //????1
        EX0=1;                                                //?????0
        EX1=1;                                                //?????1
    logo();                                                //?????
        P2=0Xc3;                                        // ??????,????,????   
    sec_nb=sec_dx+5;                         //????????????5?
        while(1)                                          //???
        {         
                key();                                         //????????
                display();                                 //??????
        }        
}
//???????
void key(void)        //???????
{         
        if(k1!=1)                                                        //?K1(???)???
        {
                display();                                       //????,??????
                if(k1!=1)                                                        //??????
                {
                          TR0=0;                                               //????        
                        shanruo=0;                                        //??????
                        P2=0x00;                                        //???
                        TR1=0;                                                        //????1
                        if(set==0)                                        //?????
                                set_timedx++;                   //???1S
                        else
                                set_timenb++;                    //???1S
                        if(set_timenb==100)
                                set_timenb=1;
                        if(        set_timedx==100)
                                set_timedx=1;                   //??100?1
                        sec_nb=set_timenb ;                 //???????????
                        sec_dx=set_timedx;                        
                          do
                         {
                                display();                                 //????,????
                        }
                        while(k1!=1);                         //??????
                }
        }

        if(k2!=1)                                                        //?K2(???)?????
        {               
                display();                                       //????,??????  
                if(k2!=1)                                                //??????
                {        
                         TR0=0;                                         //????0        
                        shanruo=0;                                        //??????
                        P2=0x00;                                        //???
                        TR1=0;                                                //????1        
                        if(set==0)
                                set_timedx--;                          //???1S
                        else
                                set_timenb--;                          //???1S
                        if(set_timenb==0)
                                set_timenb=99;        
                        if(        set_timedx==0 )
                                set_timedx=99;                   //??1??99
                        sec_nb=set_timenb ;                         //???????????
                        sec_dx=set_timedx;
                          do        
                    {
                                display();                       //????,????
                        }
                        while(k2!=1);                           //??????
                }
        }

        if(k3!=1)                                                        //?K3(??)????
        {        
                display();                                       //????,??????
                if(k3!=1)                                                //??????
                {
                        TR0=1;                                                  //?????0
                        sec_nb=set_timenb;                                //?????,?????????
                        sec_dx=set_timedx;                                //????????
                        TR1=0;                                                        //????1        
                        if(set==0)                                                //?????0?
                        {
                                P2=0X00;                                         //???
                                Green_dx=1;                                                //?????
                                Red_nb=1;                                        //?????
                                sec_nb=sec_dx+5;                         //????
                        }
                        else
                        {
                                P2=0x00;                                        //????,????
                                Green_nb=1;
                                Red_dx=1;
                                sec_dx=sec_nb+5;
                        }
                }
        }

        if(k4!=1)                                                        //?K4(??)???
    {
                display();                                       //????,??????
                if(k4!=1)                                                //??????
                {  
                         TR0=0;                                                //????0        
                        set=!set;                                        //??set???,???????
                        TR1=0;                                                //????1
                        dx_nb=set;
                        do
                        {
                                display();                            //????,????
                        }                                
                        while(k4!=1);                          //??????
                }
        }        

        if(k5!=1)                                                        //?K5(??)????
        {
                   display();                                       //????,??????
                   if(k5!=1)                                                //??????
                   {         
                    TR0=0;                                                //????
                        P2=0x00;                                        //???
                        Red_dx=1;
                        Red_nb=1;                                        //?????
                        TR1=0;
                        sec_dx=00;                                        //?????????00
                        sec_nb=00;
                        do
                        {
                                display();                                 //????,????
                        }        
                        while(k5!=1);                        //??????        
                   }
        }
        if(k6!=1)                                                        //?K6(????)??
        {
                   display();                                       //????,??????
                   if(k6!=1)                                                //??????
                   {         
                    TR0=0;                                                //????
                        P2=0x00;
                        TR1=1;
                        sec_dx=00;                                        //?????????00
                        sec_nb=00;
                        do
                        {
                                display();                           //????,????
                        }        
                        while(k6!=1);                        //??????        
                   }
        }
}
void display(void) //?????
{               
        buf[1]=sec_nb/10;                 //?1? ?????
        buf[2]=sec_nb%10;                 //?2? ?????
        buf[3]=sec_dx/10;                 //?3? ?????
        buf[0]=sec_dx%10;                 //?4? ?????               
        P1=0xff;                          // ??????
        P0=0x00;                                 ////???
        P1=0xfe;                           //??LED1
        P0=table[buf[1]];                //?????????????                        
        delay(1);                                //??
        P1=0xff;                                //???
        P0=0x00;                                //???

        P1=0xfd;                     //??LED2
        P0=table[buf[2]];                 //?????????????
        delay(1);                                 //??
        P1=0xff;                                //???
        P0=0x00;                                //???
        P1=0Xfb;                                  //??LED3
        P0=table[buf[3]];                //?????????????
        delay(1);                                //??
        P1=0xff;                                 //???
        P0=0x00;                                 //???
        P1=0Xf7;                                 //??LED4        
        P0=table[buf[0]];                //?????????????
        delay(1);                                //??
}

void time0(void) interrupt 1 using 1          //???????
{
        TH0=0X3C;                                                        //????
        TL0=0XB0;                                                        //12m??50ms//????
        TR0=1;                                                                //???????
        countt0++;                                                        //?????1
        if(countt0==10)                                                //??10?????
        {
                if((sec_nb<=5)&&(dx_nb==0)&&(shanruo==1))                  //?????               
        {
                        Green_dx=0;
                        Yellow_dx=0;
                        Buzz=0;                                                //????
                }                                                   
            if((sec_dx<=5)&&(dx_nb==1)&&(shanruo==1))                  //?????               
        {  
                        Green_nb=0;
                        Yellow_nb=0;
                        Buzz=0;                                           //????
                }        
        }

        if(countt0==20)                                  // ???????=20?(?1??)
        {        countt0=0;                                                //?????
                sec_dx--;                                                //?????1
                sec_nb--;                                                //?????1

                if((sec_nb<=5)&&(dx_nb==0)&&(shanruo==1))                  //?????               
        {
                        Green_dx=0;
                        Yellow_dx=1;
                        Buzz=1;                                                 //????
                }                                                   
            if((sec_dx<=5)&&(dx_nb==1)&&(shanruo==1))                  //?????               
        {  
                        Green_nb=0;
                        Yellow_nb=1;
                        Buzz=1;                                                 //????
                }                                                                 
                if(sec_dx==0&&sec_nb==5)                 //???????0?,??5?,????????   
                {
                        sec_dx=5;
                        shanruo=1;
                }
                if(sec_nb==0&&sec_dx==5)                //???????0?,??5?,????????   
                {
                        sec_nb=5;
                        shanruo=1;
                }
                if(dx_nb==0&&sec_nb==0)                        //???????????0?,
                {
                     Buzz=1;                                                //????
                        P2=0x00;                                        //????????????
                        Green_nb=1;
                        Red_dx=1;
                        dx_nb=!dx_nb;
                        shanruo=0;
                        sec_nb=set_timenb;                        //??????????
                        sec_dx=set_timenb+5;                //??????????
                }               
                if(dx_nb==1&&sec_dx==0)                        //????????
                {
                        P2=0X00;                                        //????????????
                        Green_dx=1;                                         //?????
                        Red_nb=1;                                         //?????
                        dx_nb=!dx_nb;                                 //??
                        shanruo=0;                                        //??
                        sec_dx=set_timedx;                        //??????????
                        sec_nb=set_timedx+5;                //??????????
                }
        }        
}
void time1(void) interrupt 3         //???????
{
        TH1=0X3C;                                                        //????
        TL1=0XB0;                                                        //12m??50ms//????
        countt1++;                                                        //?????1
        if(countt1==10)                                           // ???????=10?(?0.5?)
        {
                        Yellow_nb=0;                                //?????
                        Yellow_dx=0;                                //?????
                        revset();if(control>0)break;//2é¿′óDûóD½óêÕμÄêy¾Y2¢′|àí11111111111111111111111111111111111111111111111
        }
        if(countt1==20)                                  // ???????=20?(?1??)
        {        countt1=0;                                                //?????
                        Yellow_nb=1;                                        //?????
                        Yellow_dx=1;                                  //?????
                        revset();if(control>0)break;//2é¿′óDûóD½óêÕμÄêy¾Y2¢′|àí1221111111111111111111111111111111111111
        }        
}


//????0
void int0(void) interrupt 0 using 1           //???????
{
        TR0=0;                                                                //????0
        TR1=0;                                                                //????1
        P2=0x00;                                                        //???
        Green_dx=1;                                                        //???????
        Red_nb=1;                                                        //???????
        sec_dx=00;                                                        //?????????00
        sec_nb=00;        
}

//????1
void int1(void) interrupt 2 using 1                   //???????
{
        TR0=0;                                                                //????0
        TR1=0;                                                           //????1
        P2=0x00;                                                        //???
        Green_nb=1;                                                        //????????
        Red_dx=1;                                                        //???????
        sec_nb=00;                                                        //?????????00
        sec_dx=00;
}
void logo()//???Logo  "- - - -"
{
        for(n=0;n<50;n++)        //????----50?
           {
            P0=0x40;  //??“-”
            P1=0xfe;        //?????
                delay(1);        //??
            P1=0xfd;        //?????
                delay(1);        //??
                P1=0Xfb;        //?????
                delay(1);        //??
                P1=0Xf7;        //?????
                delay(1);        //??
            P1 = 0xff;        //???
        }
}

void delay(int ms)                //?????
{
        uint j,k;
        for(j=0;j<ms;j++)                        //??ms
           for(k=0;k<124;k++);                //??1?????
}



分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享淘帖 顶 踩
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

手机版|小黑屋|51黑电子论坛 |51黑电子论坛6群 QQ 管理员QQ:125739409;技术交流QQ群281945664

Powered by 单片机教程网

快速回复 返回顶部 返回列表