找回密码
 立即注册

QQ登录

只需一步,快速开始

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

一个简单的单片机交通灯

[复制链接]
跳转到指定楼层
楼主
ID:234362 发表于 2018-11-1 14:35 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
#include
#define uchar unsigned char
bit flag;
sbit red1_1=P1^0;   //南北红灯D1
sbit yel1_1=P1^1; //南北黄灯D2
sbit gre1_1=P1^2; //南北绿灯D3
sbit red1_2=P1^3; //南北红灯D4
sbit yel1_2=P1^4; //南北黄灯D5
sbit gre1_2=P1^5; //南北绿灯D6
sbit red2_1=P1^6; //东西红灯D7
sbit yel2_1=P1^7; //东西黄灯D8
sbit gre2_1=P0^0; //东西绿灯D9
sbit red2_2=P0^1; //东西红灯D10
sbit yel2_2=P0^2; //东西黄灯D11
sbit gre2_2=P0^3; //东西绿灯D12
uchar code tab[]={0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x83,0xf8,0x80,0x98};
uchar n,n1,aa=0,shi,ge,shi1,ge1;
void init();
void xianshi1(uchar shi,uchar ge);
void xianshi2(uchar shi1,uchar ge1);
void delay(uchar z)
{
uchar x,y;
for(x=z;x>0;x--)
    for(y=110;y>0;y--);
}
main()
{
  n=30;
    shi=n/10;
ge=n;
    n1=30;
    shi1=n1/10;
ge1=n1;
    init();
  while(1)
     {
     if(flag!=1)
      xianshi1(shi,ge);
   else
           xianshi2(shi1,ge1);

  }
}
void xianshi1(uchar shi,uchar ge)
{
    P3=0x02;
    P2=tab[ge];
    delay(200);
    P3=0x01;
    P2=tab[shi];
    delay(200);
}

void xianshi2(uchar shi1,uchar ge1)
{
P3=0x08;
P2=tab[ge1];
    delay(200);
    P3=0x04;
    P2=tab[shi1];
    delay(200);
}
void init()
{
TMOD=0x01;
TH0=(65536-50000)/256;
TL0=(65536-50000)%256;
EA=1;
ET0=1;
TR0=1;
}
void timer0() interrupt 1
{
TH0=(65536-50000)/256;
TL0=(65536-50000)%6;
aa++;
    if(flag!=1)
      {
   if(aa==20)
      {
         aa=0;
                     red1_1=0;red1_2=0;
                     gre2_1=0;gre2_2=0; //启动南北红灯1和东西绿灯2   
         n--;
                  shi=n/10;
         ge=n;
                if(n<=3)
                   {
      red1_1=0;red1_2=0;
      gre2_1=1;gre2_2=1;
                     yel2_1=0;yel2_2=0;//启动南北红灯1和东西黄灯2

                    if(n<=0)
           {
                       n=30;         
                          red1_1=1;red1_2=1;
        gre1_1=0;gre1_2=0;
        yel2_1=1;yel2_2=1;
        red2_1=0;red2_2=0;//启动南北绿灯1和东西红灯2
                       TR0=0;
                          TH0=(65536-50000)/256;
                       TL0=(65536-50000)%6;
           TR0=1;
                          aa++;
           flag=1;
                 }
                    }
                }
      }
    else
    {
       if(flag==1)
         {  
           //   TH0=(65536-50000)/256;
        //   TL0=(65536-50000)%6;
        //   TR0=1;
           //   aa++;
           if(aa==20)
      {
            aa=0;                     
                  n1--;
                  shi1=n1/10;
                   ge1=n1;
         if(n1<=3)
          {
   gre1_1=1;gre1_2=1;
             yel1_1=0;yel1_2=0;
            red2_1=0;red2_2=0;//启动南北黄灯1和东西红灯2

                if(n1<=0)
        {
           n1=30;
                          yel1_1=1;yel1_2=1;
                          red2_1=1;red2_2=1;
                 TR0=0;
               TH0=(65536-50000)/256;
               TL0=(65536-50000)%6;
               TR0=1;
                 flag=0;
               }
                   }
                }
         }
     }
}

交通灯2.7z

13.01 KB, 下载次数: 6, 下载积分: 黑币 -5

交通灯的简单那程序

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

使用道具 举报

沙发
ID:300077 发表于 2018-11-1 19:11 | 只看该作者
老哥,这个数码管用的那个?
回复

使用道具 举报

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

本版积分规则

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

Powered by 单片机教程网

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