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

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

QQ登錄

只需一步,快速開始

搜索
查看: 2370|回復(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ù) 返回頂部 返回列表
主站蜘蛛池模板: 久久99精品久久久久久琪琪 | 欧美三区 | 国产四区 | 午夜精品一区二区三区在线视频 | 久久一区二区三区四区 | 综合欧美亚洲 | 中文av在线播放 | 九九热在线视频免费观看 | 欧美福利一区 | 久久久久久中文字幕 | 成人午夜在线 | 午夜精品福利视频 | 一级欧美| 本道综合精品 | 欧美精品在线免费 | 欧美一级在线 | 国产精品99久久久久久动医院 | 欧美日韩国产精品一区二区 | 91精品国产乱码久久蜜臀 | 免费在线黄色av | 国产成人免费在线观看 | 久久99精品久久久久久噜噜 | 日韩在线欧美 | 视频一区在线观看 | 男人av在线| 日本成人三级电影 | 成人三级在线观看 | 成人av播放 | 欧美成人一区二区三区 | 久久久精品一区二区三区 | 最新中文在线视频 | 久草资源网站 | 亚洲免费视频网址 | 日韩一区二区三区av | 欧美日韩一区二区电影 | 欧美一区成人 | 国产网站在线播放 | av网站免费观看 | 日本不卡一区二区三区在线观看 | 成人免费一级视频 | 日韩一级二级片 |