久久久久久久999_99精品久久精品一区二区爱城_成人欧美一区二区三区在线播放_国产精品日本一区二区不卡视频_国产午夜视频_欧美精品在线观看免费

 找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

搜索
查看: 3404|回復: 2
打印 上一主題 下一主題
收起左側

51單片機做的十字路口交通燈控制仿真

[復制鏈接]
跳轉到指定樓層
樓主
#include<reg51.h>
#define uchar unsigned char
#define uint unsigned int


uchar code table[]={
0x3f,0x06,0x5b,0x4f,
0x66,0x6d,0x7d,0x07,
0x7f,0x6f,0x77,0x7c,
0x39,0x5e,0x79,0x71,
0xc9,0x5FF,0x40     };


void delay(uint x);
void display(uchar,uchar,uchar,uchar);
void scankeys();
void traffic();  


uchar num,num1,num2,shi1,ge1,shi2,ge2,
value1,value2,value3,value4,count1,
count2,flag1,flag2;



void mian()
{

     TMOD=0x01;
     TH0=(65536-45872)/256;
     TL0=(65536-45872)%256;
     EA=1;
     ET0=1;
     TR0=1;
     value1=15;
     value2=5;
     value3=10;
     value4=5;
     num1=value1;
     num2=value2+value1;
    P1=0x41;
     while(1)
{

    if(num==20)
{
    num=0;
    num1--;
    num2--;
    traffic();
    shi1=num1/10;
    ge1=num1%10;
    shi2=num2/10;
    ge2=num2%10;
}


scankeys();
display(shi1,ge1,shi2,ge2);
}
}


void traffic()
  {
     if(num1==0)
    {
      count1++;
      if(count1==1)
     {
       P1=0x42;
       num1=value2;
      }
      if(count1==2)
      {
       P1=0x14;
       num1=value3+value4;
      }
       if(count1==3)
      {
       P1=0x41;
       num1=value1;
       count1=0;

      }
}

if(num==0)
{
count2++;
if(count2==1)
{
    P1=0x14;
    num2=value3;
}
if(count2==2)
{
    P1=0x24;
    num2=value4;
}
if(count2==3)
{
    P1=0x41;
    num2=value1+value2;
    count2=0;
}

}

}      

void display(uchar shi1,uchar ge1,uchar shi2,uchar ge2)
{
     uchar temp;
     temp=P2;
     P2=0xfe;
     P0=table[shi1];
     delay(5);
     P2=0xfd;
     P0=table[ge1];
     delay(5);
     P2=0xfd;
     P0=table[shi2];
     delay(5);
     P2=0xf7;
     P0=table[ge2];  
     delay(5);
}

void delay(uint x)
{

   uint i,j;
   for(i=x;i>0;i--)
   for(j=110;j>0;j--);
}


void scankeys()
{
    uchar temp,key;
    P3=0xfe;
    temp=P3;
    temp=temp&0xf0;
    if(temp!=0xf0)
{
    delay(10);
    temp=P3;
    temp=temp&0xf0;
    if(temp!=0xf0)
{
    temp=P3;
    switch(temp)
{
    case 0xee:key=0;break;
    case 0xde:key=1;break;
    case 0xbe:key=2;break;
    case 0x7e:key=3;break;
}

while(temp!=0xf0)
{
     temp=P3;
     temp=temp&0xf0;
}

if(key==0)
{
    TR0=~TR0;
    flag1=~flag1;
    flag2=~flag2;
}


if(key==1&&flag1==0)
{

    TR0=0;
    P1=0x44;
    shi1=ge1=shi2=ge2=16;
}

if(key==2&&flag2==0)
{

   TR0=1;
   num=0;
   P1=0x41;
   num1=value1;
   num2=value2+value1;
   shi1=num/10;
   ge1=num1%10;
   shi2=num2/10;
   ge2=num2%10;
}

if(key==3&&P1==0x44)
{
   P1=0xff;
   delay(1000);
   P1=~P1;
   shi1=ge1=shi2=ge2=17;
   P1=0x44;
}

}
}
    P3=0xf7;
    temp=P3;
    temp=temp&0xf0;
    if(temp!=0xf0)
{
    delay(10);
    temp=P3;
    temp=temp&0xf0;
    if(temp!=0xf0)
{
    temp=P3;
    switch(temp)
{
    case 0xe7:key=0;break;
    case 0xd7:key=1;break;
    case 0xb7:key=2;break;
    case 0x77:key=3;break;
}

while(temp!=0xf0)
{
     temp=P3;
     temp=temp&0xf0;
}

if(key==0&&P1==0x44)
{
    P1=0x41;
    shi1=ge1=shi2=ge2=18;
}
if(key==1&&P1==0x44)
{
    P1=0x41;
    shi1=ge1=shi2=ge2=18;
}
if(key==2&&P1==0x44)
{
    P1=0x41;
    shi1=ge1=shi2=ge2=18;
}
  if(key==3&&P1==0x44)
{
    P1=0x41;
    shi1=ge1=shi2=ge2=18;
}
}
}


P3=0xfd;
    temp=P3;
    temp=temp&0xf0;
    if(temp!=0xf0)
{
    delay(10);
    temp=P3;
    temp=temp&0xf0;
    if(temp!=0xf0)
{
    temp=P3;
    switch(temp)
{
    case 0xeb:key=0;break;
    case 0xdb:key=1;break;
    case 0xbb:key=2;break;
    case 0x7b:key=3;break;
}

while(temp!=0xf0)
{
     temp=P3;
     temp=temp&0xf0;
}

if(key==0&&P1==0x44)
{
    num2=value3;
    if(num1!=159)
{
num2++;
value3=num2;
}

   shi2=num2/10;
   ge2=num2%10;
   num1=value3+value4;
   shi1=num1/10;
   ge1=num1%10;
}


if(key==1&&P1==0x44)
{  num2=value4;
    if(num1!=159)
{
num2++;
value4=num2;
}

   shi2=num2/10;
   ge2=num2%10;
   num1=value3+value4;
   shi1=num1/10;
   ge1=num1%10;
}


if(key==2&&P1==0x44&&value3>3)
{  num2=value3;
   num2--;
value3=num2;

   shi2=num2/10;
   ge2=num2%10;
   num2=value3+value4;
   shi1=num1/10;
   ge1=num1%10;
}



if(key==3&&P1==0x44&&value4>3)
{  num2=value4;
   num2--;
value4=num2;

   shi2=num2/10;
   ge2=num2%10;
   num1=value3+value4;
   shi1=num1/10;
   ge1=num1%10;
}

}
}


P3=0xf7;
    temp=P3;
    temp=temp&0xf0;
    if(temp!=0xf0)
{
    delay(10);
    temp=P3;
    temp=temp&0xf0;
    if(temp!=0xf0)
{
    temp=P3;
    switch(temp)
{
    case 0xe7:key=0;break;
    case 0xd7:key=1;break;
    case 0xb7:key=2;break;
    case 0x77:key=3;break;
}
while(temp!=0xf0)
{
   temp=P3;
   temp=temp&0xf0;
}
if(key==0&&P1==0x44)
{
   P1=0x41;
   shi1=ge1=shi2=ge2=18;
}
if(key==1&&P1==0x44)
{
   P1=0x41;
   shi1=ge1=shi2=ge2=18;
}
if(key==2&&P1==0x44)
{
   P1=0x41;
   shi1=ge1=shi2=ge2=18;
}
if(key==3&&P1==0x44)
{
   P1=0x41;
   shi1=ge1=shi2=ge2=18;
}

}
}

}

void T0_time() interrupt 1
{
    TH0=(65536-45872)/256;
    TL0=(65536-45872)%256;
num++;
}

捕獲.PNG (19.3 KB, 下載次數: 52)

捕獲.PNG
分享到:  QQ好友和群QQ好友和群 QQ空間QQ空間 騰訊微博騰訊微博 騰訊朋友騰訊朋友
收藏收藏2 分享淘帖 頂 踩
回復

使用道具 舉報

沙發
ID:527416 發表于 2019-6-14 16:37 | 只看該作者
請問信號燈是什么裝置
回復

使用道具 舉報

板凳
ID:194782 發表于 2019-6-17 21:21 | 只看該作者
好東西
回復

使用道具 舉報

您需要登錄后才可以回帖 登錄 | 立即注冊

本版積分規則

小黑屋|51黑電子論壇 |51黑電子論壇6群 QQ 管理員QQ:125739409;技術交流QQ群281945664

Powered by 單片機教程網

快速回復 返回頂部 返回列表
主站蜘蛛池模板: 99久久免费观看 | 2020国产在线| 龙珠z国语版在线观看 | 99精品网| 国产精品久久久久久亚洲调教 | 一区二区在线看 | 91久久久久久久久久久 | 欧美日韩中文字幕在线播放 | 久久久亚洲一区 | 日韩精品一区二区三区在线观看 | 成人小视频在线观看 | 久久av一区二区三区 | 黄色a视频 | 精品福利一区二区三区 | 韩日一区二区三区 | 黄色欧美| 丝袜美腿一区二区三区 | 亚洲欧洲一区 | 怡红院成人在线视频 | 欧美精品一区三区 | 成人免费视频网站在线看 | 男人的天堂中文字幕 | 日韩一区二区三区在线视频 | 完全免费在线视频 | 国产毛片久久久久久久久春天 | 羞羞色影院 | 人人擦人人 | 国产视频福利一区 | 国产91一区二区三区 | 日韩人体在线 | 91精品国产一区二区三区蜜臀 | 亚洲一区免费 | 国产精品国产a级 | 欧美日韩亚洲国产综合 | 日韩欧美在线不卡 | www精品美女久久久tv | 91网站在线观看视频 | 成人免费在线播放 | 色在线免费 | 国产精品久久久久久二区 | 综合色播 |