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

 找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

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

基于51單片機(jī)的交通燈控制

[復(fù)制鏈接]
跳轉(zhuǎn)到指定樓層
樓主
ID:589924 發(fā)表于 2020-8-5 22:11 | 只看該作者 |只看大圖 回帖獎勵 |倒序瀏覽 |閱讀模式
一、題目要求:
AT89S51 單片機(jī)引腳接有若干按鍵,另外還接有 12 個 LED 發(fā)光二極管和一個電磁式無源蜂鳴器, 8 個動態(tài)顯示的數(shù)碼管。8 個數(shù)碼管 2 個一組共分 4 組,分別用于顯示南北和東西方向的通行時間,12 個 LED 發(fā)光二極管為分 4 組,每組紅綠黃 3 個 LED 燈,分別代表南北和東西方向的交通指示燈。
繪制仿真電路并編程實現(xiàn)以下功能:
⑴南北方向(主干道)車道和東西方向(支干道)車道兩條交叉道路上的車輛交替通行,主干道每次通行時間都設(shè)為 90 秒、支干道每次通行間為 60 秒,時間可通過設(shè)置鍵來進(jìn)行修改,每個路口燈亮的時間都用數(shù)碼管進(jìn)行顯示(采用倒計時的方法);
⑵在綠燈轉(zhuǎn)為紅燈時,要求黃燈先亮 5 秒鐘,才能變換運(yùn)行車道。
⑶通過按鍵可以調(diào)整南北和東西路口的通過時間。
⑷有緊急車輛要求通過時,按下緊急通告按鍵,能禁止普通車輛通行,所有道路均為紅燈,通行時間為 30 秒,同時蜂鳴器鳴響,讓救護(hù)車/警車等緊急車輛通過。
二、實驗仿真圖:
三、程序源代碼及仿真圖

/*部分代碼具體請查看附件信息*/
#include <reg51.h>
#define uchar unsigned char
#define uint  unsigned int

uchar data DirectVal[4];                                        //秒顯示的變量
uchar data DefaultVal_DX=60;                          //東西數(shù)默認(rèn)
uchar data DefaultVal_NB=90;                        //南北默認(rèn)值
uchar data setTime_DX=60;                //設(shè)置東西方向的時間
uchar data setTime_NB=90;                //設(shè)置南北方向的時間
int n;
uchar data Count,Count1;
sbit  k4=P3^1;                //禁止
sbit  k1=P3^5;                //時間加
sbit  k2=P3^6;                //時間減
sbit  k3=P3^7;     //切換方向
sbit  SPEAKER = P3^2;

sbit RED_NB=P2^6;                //南北紅燈標(biāo)志
sbit YELLOW_NB=P2^5;        //南北黃燈標(biāo)志
sbit GREEN_NB=P2^4;     //南北綠燈標(biāo)志

sbit RED_DX=P2^3;                //東西紅燈標(biāo)志
sbit YELLOW_DX=P2^2;        //東西黃燈標(biāo)志
sbit GREEN_DX=P2^1;                //東西綠燈標(biāo)志
               
bit set=0;                                //調(diào)時方向切換鍵標(biāo)志 =1時,南北,=0時,東西
bit dx_nb=0;                        //東西南北控制位
bit Shanshuo=0;                        //閃爍標(biāo)志位

uchar code TABLE[11]={        //共陰極字型碼
        0x3f,  //--0
        0x06,  //--1
        0x5b,  //--2
        0x4f,  //--3
        0x66,  //--4
        0x6d,  //--5
        0x7d,  //--6
        0x07,  //--7
        0x7f,  //--8
        0x6f,  //--9
        0x00   //--NULL
};

void key();                                        //按鍵掃描子程序
void SegmentDisplay();                                //顯示子程序
void Buzzer();


void delaylms(int ms)                //延時子程序
{
        uint j,k;
        for(j=0;j<ms;j++)                        //延時ms
           for(k=0;k<124;k++);                //大約1毫秒的延時
}

/*定時器0初始化*/
void Timer0Init(){
        TMOD |= 0X01;
        TH0 = 0X4B;
        TL0 = 0XFC;
        ET0 = 1;
        EA = 1;
        TR0 = 1;
}
/*定時器1初始化*/
void Timer1Init(){
        TMOD |= 0X10;
        TH1 = 0X4B;
        TL1 = 0XFC;
        ET1 = 1;
        EA = 1;
        TR1 = 1;
}

/*主程序*/
void main()
{
        Timer0Init();
        Timer1Init();
        TR1 = 0;
        P2=0Xc3;                                        // 默認(rèn)東西綠燈,南北紅燈燈   
  DefaultVal_NB=DefaultVal_DX+5; //設(shè)置南北通行時間比東西多5秒
        while(1)               
        {         
                key();
                SegmentDisplay();
        }       
}
/*按鍵掃描子程序*/
void key(void){
        if(k1!=1)        {
                delaylms(10);
                if(k1!=1){
                  TR0=0;
                        Shanshuo=0;
                        P2=0x00;
                        TR1=0;
                        if(set==0)//設(shè)置鍵按下
                                setTime_DX++;//南北加1
                        else
                                setTime_NB++;//東西加1
                        if(setTime_NB==100)
                                setTime_NB=1;
                        if(        setTime_DX==100)
                                setTime_DX=1;//加到100置1
                        DefaultVal_NB=setTime_NB ;//設(shè)置的數(shù)值賦給東西南北
                        DefaultVal_DX=setTime_DX;                       
                  do        {
                                SegmentDisplay();
                        }while(k1!=1);//松手檢測
                }
        }

        if(k2!=1)        {                                                        //當(dāng)K2(時間減)按鍵按下時
                delaylms(10);
                if(k2!=1){
                         TR0=0;
                        Shanshuo=0;
                        P2=0x00;
                        TR1=0;
                        if(set==0)
                                setTime_DX--;
                        else
                                setTime_NB--;
                        if(setTime_NB==0)
                                setTime_NB=99;       
                        if(        setTime_DX==0 )
                                setTime_DX=99;
                        DefaultVal_NB=setTime_NB ;
                        DefaultVal_DX=setTime_DX;
                  do{         
                                SegmentDisplay();
                        }
                        while(k2!=1);
                }
        }
        if(k3!=1) {
                delaylms(10);
                if(k3!=1){
                  
                         TR0=0;
                        set=!set;
                        TR1=0;
                        dx_nb=set;
                        do{
                                SegmentDisplay();
                        }                               
                        while(k3!=1);
                }
        }       

        if(k4!=1){
                delaylms(10);
                if(k4!=1){
                        TR0=0;
                        P2=0x00;
                        RED_DX=1;
                        RED_NB=1;
                        TR1=0;
                        DefaultVal_DX=30;
                        DefaultVal_NB=30;
                        TR0 = 1;
                        do{
                                SegmentDisplay();
                                SPEAKER = !SPEAKER;
                                if((DefaultVal_DX == 0)&&(DefaultVal_NB==0)){
                                        SPEAKER = 1;
                                }
                        }       
                        while(k4!=1);
                }
        }
}

1.png (86.36 KB, 下載次數(shù): 115)

仿真圖

仿真圖

交通燈.rar

71.93 KB, 下載次數(shù): 119, 下載積分: 黑幣 -5

程序源代碼及仿真圖

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

使用道具 舉報

沙發(fā)
ID:829100 發(fā)表于 2020-11-17 08:28 | 只看該作者
為什么秒表走的很快
回復(fù)

使用道具 舉報

板凳
ID:854295 發(fā)表于 2020-12-5 16:45 | 只看該作者
#在這里快速回請問一下,緊急車輛通過時的程序是哪一部分,怎么實現(xiàn)的?復(fù)#
回復(fù)

使用道具 舉報

地板
ID:1085175 發(fā)表于 2023-7-2 11:16 | 只看該作者
這個程序為什么還有bug
回復(fù)

使用道具 舉報

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

本版積分規(guī)則

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

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

快速回復(fù) 返回頂部 返回列表
主站蜘蛛池模板: 国产精品96久久久久久 | 久久一二区 | 欧美中文字幕一区二区三区亚洲 | 亚洲精品在线视频 | 色综合久久久 | 国产一区二区精品在线观看 | 国产一区二区免费电影 | 国产伦精品一区二区三区四区视频 | 女人牲交视频一级毛片 | 国产一级淫片a直接免费看 免费a网站 | 欧美一级一 | 久久99久久99精品免视看婷婷 | av福利网 | .国产精品成人自产拍在线观看6 | 国产91黄色| 蜜桃视频一区二区三区 | 91超碰在线 | 亚洲第一色站 | 日韩精品一区二区三区视频播放 | 国产精品国产三级国产aⅴ中文 | 久久久亚洲 | 天堂亚洲 | 亚洲国产视频一区 | 狠狠操狠狠操 | 365夜爽爽欧美性午夜免费视频 | 欧美影院 | 日本久久精品视频 | 欧美日韩一区二区三区四区 | 精品久久香蕉国产线看观看亚洲 | 久久久久久a| 在线观看av不卡 | 国产丝袜一区二区三区免费视频 | 日日操夜夜操天天操 | 国产在线a| 青娱乐av | 91久久久久久久 | 五月婷婷中文 | 亚洲女人天堂成人av在线 | 国产视频h| 一区二区在线不卡 | 中文字幕在线播放第一页 |