单片机交通灯,

2020-01-23 14:44发布

本帖最后由 tangjiaqq 于 2014-5-10 01:03 编辑

新手不怎么会,希望有,电路图,程序,交作业啊



#include <reg51.h>                         
#define uchar unsigned char                
uchar duanma[10]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f};//
uchar weima[4]={0xfe,0xfd,0xfb,0x07};//
uchar nanbei[3]={25,20,5};       
uchar dongxi[3]={20,5,25};                       
uchar nbdeng[3]={0x01,0x04,0x02};
uchar dxdeng[3]={0x80,0x40,0x20};  
uchar jishu1,jishu2,dxjishu,nbjishu,dxmiao,nbmiao;
uchar xianshi[4]={0,0,0,0};
void chushihua(void)
{               
        TMOD=0x01;                                 
        TH0=(65536-10000)/256;          
        TL0=(65536-10000)%256;           
        EA=1;ET0=1;TR0=1;       
}
sbit k1 = P3^1;
sbit k2 = P3^6;
void yansi02s(void)
{
        uchar i,j,k;
        for(i=7;i>0;i--)
                for(j=8;j>0;j--)
                        for(k=34;k>0;k--);
}

void main(void)                                 
{
        dxmiao=dongxi[0];       
        nbmiao=nanbei[0];
        P3=dxdeng[0]|nbdeng[0];
        chushihua();
        while(1)
        {
                if((dxjishu==0)&&(dxmiao==0))
                {
                        k2=~k2;
                        yansi02s();
                }
                if((nbjishu==0)&&(nbmiao==0))
                {
                        k1=~k1;
                        yansi02s();
                }
        }       
}
void daojishi (void ) interrupt 1
{
        TH0=(65536-10000)/256;
        TL0=(65536-10000)%256;
        xianshi[0]=duanma[nbmiao/10];
        xianshi[1]=duanma[nbmiao%10];
        xianshi[2]=duanma[dxmiao/10];
        xianshi[3]=duanma[dxmiao%10];
        jishu1++;
        if(jishu1==4)jishu1=0;
        P2=weima[jishu1];
        P1=xianshi[jishu1];
        P3=dxdeng[dxjishu]|nbdeng[nbjishu];
        jishu2++;
        if(jishu2==100)
                {
                   jishu2=0;
                   dxmiao--;nbmiao--;
                   if(dxmiao==0xff)
                    {
                           dxjishu++;
                           if(dxjishu==3)dxjishu=0;
                           dxmiao=dongxi[dxjishu];
                        }
                          if(nbmiao==0xff)
                        {
                          nbjishu++;
                          if(nbjishu==3) nbjishu=0;
                          nbmiao=nanbei[nbjishu];
                     }
               
             }
}






  我想是想 黄灯的时候闪烁  怎么弄   弄了一晚上还是不行



友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。