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

 找回密碼
 立即注冊(cè)

QQ登錄

只需一步,快速開始

搜索
查看: 2416|回復(fù): 0
打印 上一主題 下一主題
收起左側(cè)

基于51單片機(jī)的交通燈控制代碼和Proteus仿真原理圖

[復(fù)制鏈接]
跳轉(zhuǎn)到指定樓層
樓主
ID:976271 發(fā)表于 2022-11-29 16:18 | 只看該作者 |只看大圖 回帖獎(jiǎng)勵(lì) |倒序?yàn)g覽 |閱讀模式
要求
基于AT89S52單片機(jī)設(shè)計(jì)交通燈控制系統(tǒng),實(shí)現(xiàn)以下功能:
正常模式:南北方向通行:左轉(zhuǎn)燈亮25S后黃燈亮5S,直轉(zhuǎn)燈亮45S后黃燈亮5S,
東西方向紅燈亮50S
正常模式:東西放向通行:左轉(zhuǎn)燈亮25S后黃燈亮5S,直轉(zhuǎn)燈亮45S后黃燈亮5S,南北方向紅燈亮50S
緊急模式:按下S1,所有紅燈閃爍;
夜間模式:按下S2,所有黃燈閃爍
恢復(fù)到正常模式:按下S3
參數(shù):
1.模擬十字路口交通燈情況,設(shè)計(jì)左轉(zhuǎn)綠燈、前進(jìn)綠燈、黃紅綠燈控制,具有倒計(jì)時(shí)顯示。
2.數(shù)碼管作為作為顯示器;
3.具有緊急控制功能,緊急控制按鍵后,四個(gè)方向的紅燈閃爍全部禁止通行,以便交警人工指揮。
4.具有夜間控制功能,夜間控制按鍵后,四個(gè)方向的黃燈閃爍,晚上車少人少,不需要用到交通燈

仿真原理圖如下(proteus仿真工程文件可到本帖附件中下載)


單片機(jī)代碼如下:
#include <reg52.h>
#define uchar unsigned char
#define uint unsigned int

#define SHU1 c=1;b=1;a=1
#define SHU2 c=1;b=1;a=0
#define SHU3 c=1;b=0;a=1
#define SHU4 c=1;b=0;a=0
#define SHU5 c=0;b=1;a=1
#define SHU6 c=0;b=1;a=0
#define SHU7 c=0;b=0;a=1
#define SHU8 c=0;b=0;a=0

void EW_ZUOTONG();
void EW_ZHITONG();
void EW_TING();
void SN_ZUOTONG();
void SN_ZHITONG();
void SN_TING();



sbit a=P2^0;
sbit b=P2^1;
sbit c=P2^2;


sbit EW_ZUO=P1^0; //東西左轉(zhuǎn)燈
sbit EW_ZHI=P1^1;  //東西直行燈
sbit EW_HONG=P1^2;  //東西紅燈
sbit EW_HUANG=P1^3;  //東西黃燈

sbit SN_ZUO=P1^4;  //南北左轉(zhuǎn)燈
sbit SN_ZHI=P1^5;  //南北直行燈
sbit SN_HONG=P1^6;  //南北紅燈
sbit SN_HUANG=P1^7; //南北黃燈

uint x=0,y=0,z=0,Time_EW=30,Time_SN=30; //定義初始值



uchar code seg[10] = {0x3f, 0x06, 0x5b, 0x4f, 0x66, 0x6d, 0x7d, 0x07, 0x7f, 0x6f};
uchar code led[2]={0xbb, 0x77};

void delay(uint ms)
{
       uint i;
       while(ms--)
       for(i=0;i<123;i++);
}


void display()
{
if((z==0)||(z==1)||(z==2)||(z==3))
{
    SHU8;
    P0 = seg[Time_EW/10];  //東西倒計(jì)時(shí)
    delay(1);

    SHU7;
    P0 = seg[Time_EW%10];  //東西倒計(jì)時(shí)
    delay(1);

    SHU6;
    P0 = 0x40;
    delay(1);

    SHU5;
    P0 = 0x40;
    delay(1);

    SHU4;
    P0 = 0x40;
    delay(1);

    SHU3;
    P0 = 0x40;
    delay(1);

    SHU2;
    P0 = seg[Time_SN/10]; //南北倒計(jì)時(shí)
    delay(1);

    SHU1;
    P0 = seg[Time_SN%10]; //南北倒計(jì)時(shí)
    delay(1);
}
}

void init()
{

    TMOD = 0x01;
    TH0 = (65536-50000)/256;   
    TL0 = (65536-50000)%256;
    EA=1;   
    ET0=1;      
    TR0=1;
}

void time0() interrupt 1
{

    TH0 = (65536-50000)/256;
    TL0 = (65536-50000)%256;
    x++;
    if(x==20) //50ms*20=1s

          {
    x=0;        
    Time_EW--;
    Time_SN--;
          }

          if((Time_EW==-1)&&(Time_SN==-1))
    {
    z++;
    if(z==1)
    {
    Time_EW=50;
    Time_SN=50;
    }
    if(z==2)
    {
    Time_EW=30;
    Time_SN=30;
    }
    if(z==3)
    {
    Time_EW=50;
    Time_SN=50;
    }
    if(z==4)
    {
    z=0;
    Time_EW=30;
    Time_SN=30;
    }
    }

}


uchar key_scan(void)
{
static bit kp=0;
if(P3!=0xff)
{
if((P3!=0xff)&&(kp==0))
{
kp=1;
if(P3==0xfe)return 1;
if(P3==0xfd)return 2;
if(P3==0xfb)return 3;
if(P3==0xf7)return 4;
}
}
else kp=0;
return 0;
}


void main()
{
        uchar key_val;
        init();   
        while(1)
{
        display();
        EW_ZUOTONG();
        EW_ZHITONG();
        EW_TING();
        SN_ZUOTONG();
        SN_ZHITONG();
        SN_TING();
        key_val=key_scan();


        if(key_val==1)
        {
        z=-1;
        EA=0;
        ET0=0;      
        TR0=0;
        P0=0X00;
        }
        if(z==-1)
        {
        P1=0xbb;
        delay(80);
        P1=0xff;
        delay(80);
        }


        if(key_val==2)
        {
        z=-2;
        EA=0;
        ET0=0;      
        TR0=0;
        P0=0X00;
        }
        if(z==-2)
        {
        P1=0x77;
        delay(80);
        P1=0xff;
        delay(80);
        }


        if(key_val==3)
        {
        z=-3;
        EA=1;
        ET0=1;      
        TR0=1;
        }
        if(z==-3)
        {
        z=0;
        Time_EW=30;
        Time_SN=30;
        }



}
}


void EW_ZUOTONG()
{
if(z==0)
{
if((6<=Time_EW)&&(Time_EW<=30))
{
EW_ZUO=0;
EW_ZHI=1;
EW_HONG=1;
EW_HUANG=1;
}
if((0<=Time_EW)&&(Time_EW<=5))
{
EW_ZUO=1;
EW_ZHI=1;
EW_HONG=1;
EW_HUANG=0;
}
}
}

void EW_ZHITONG()
{
if(z==1)
{
if((6<=Time_EW)&&(Time_EW<=50))
{
EW_ZUO=1;
EW_ZHI=0;
EW_HONG=1;
EW_HUANG=1;
}
if((0<=Time_EW)&&(Time_EW<=5))
{
EW_ZUO=1;
EW_ZHI=1;
EW_HONG=1;
EW_HUANG=0;
}
}
}

void EW_TING()
{
if((z==2)||(z==3))
{
EW_ZUO=1;
EW_ZHI=1;
EW_HONG=0;
EW_HUANG=1;
}
}


void SN_TING()
{
if((z==0)||(z==1))
{
SN_ZUO=1;
SN_ZHI=1;
SN_HONG=0;
SN_HUANG=1;
}
}

void SN_ZUOTONG()
{
if(z==2)
{
if((6<=Time_SN)&&(Time_SN<=30))
{
SN_ZUO=0;
SN_ZHI=1;
SN_HONG=1;
SN_HUANG=1;
}
if((0<=Time_SN)&&(Time_SN<=5))
{
SN_ZUO=1;
SN_ZHI=1;
SN_HONG=1;
SN_HUANG=0;
}
}
}

void SN_ZHITONG()
{
if(z==3)
{
if((6<=Time_SN)&&(Time_SN<=50))
{
SN_ZUO=1;
SN_ZHI=0;
SN_HONG=1;
SN_HUANG=1;
}
if((0<=Time_SN)&&(Time_SN<=5))
{
SN_ZUO=1;
SN_ZHI=1;
SN_HONG=1;
SN_HUANG=0;
}
}
}

Keil代碼與Proteus仿真下載: 交通的仿真和代碼.rar (101.51 KB, 下載次數(shù): 72)

評(píng)分

參與人數(shù) 1黑幣 +40 收起 理由
admin + 40 共享資料的黑幣獎(jiǎng)勵(lì)!

查看全部評(píng)分

分享到:  QQ好友和群QQ好友和群 QQ空間QQ空間 騰訊微博騰訊微博 騰訊朋友騰訊朋友
收藏收藏 分享淘帖 頂 踩
回復(fù)

使用道具 舉報(bào)

本版積分規(guī)則

手機(jī)版|小黑屋|51黑電子論壇 |51黑電子論壇6群 QQ 管理員QQ:125739409;技術(shù)交流QQ群281945664

Powered by 單片機(jī)教程網(wǎng)

快速回復(fù) 返回頂部 返回列表
主站蜘蛛池模板: 91久久久久久久久久久久久 | h小视频| 日韩在线一区二区三区 | 99久久精品国产毛片 | 成人av电影网 | 亚洲精品福利在线 | 亚洲婷婷六月天 | 国产日韩欧美 | 337p日本欧洲亚洲大胆鲁鲁 | 欧美激情一区二区三区 | 91av在线视频观看 | 国产精品永久久久久 | 国产一区二区精品在线 | 久久久999免费视频 999久久久久久久久6666 | 欧美一级一区 | 国产精品美女久久久久久久久久久 | 久久看看 | 久草久草久草 | www.99热.com| 国产一区二区精品在线 | 在线免费观看黄色 | 久久久91精品国产一区二区三区 | 精品一区二区三区在线观看 | 亚洲国产精品福利 | 亚洲国产欧美日韩 | 你懂的av | 欧美性网 | 嫩草视频在线 | 精品福利在线 | 精品伊人 | 99re在线视频| 天天操,夜夜爽 | 国产精品美女久久久久久久网站 | 久久噜噜噜精品国产亚洲综合 | 国产一级视频在线播放 | 久久久久久网 | 中文字幕国产视频 | 国产在线精品区 | 一区二区三区四区免费视频 | 99久久电影| 蜜臀91视频 |