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

 找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

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

單片機交通燈 按鍵1切換長短時間,按鍵2增加時間,按鍵3夜間模式所有黃燈閃爍

[復制鏈接]
跳轉到指定樓層
樓主
ID:713916 發(fā)表于 2020-6-4 18:33 | 只看該作者 |只看大圖 回帖獎勵 |倒序瀏覽 |閱讀模式
按鍵1切換長短時間,按鍵2增加時間,按鍵3夜間模式所有黃燈閃爍

#include<reg51.h>
#define              uint unsigned int;
#define  uchar unsigned char;
void  DigitalTube();   //數(shù)碼管顯示函數(shù)
void  InterruptT0();              //內部中斷0

sbit  P10 = P1^0;                            //紅綠燈引腳的初始化
sbit  P11 = P1^1;
sbit  P12 = P1^2;
sbit  P13 = P1^3;
sbit  P14 = P1^4;
sbit  P15 = P1^5;

sbit  P16 = P1^6;                            //數(shù)碼管使能控制
sbit  P17 = P1^7;
sbit  P20 = P2^0;
sbit  P21 = P2^1;

sbit  K22 = P2^2;                 //按鍵22
sbit  K23 = P2^3;
sbit  K24 = P2^4;
sbit dula = P2^5;

uint LedBuf[10] = {
0xC0,0xF9,0xA4,0xB0,0x99,0x92,0x82,0xF8,0x80,0x90
};                            //0~9的數(shù)字顯示共陽

uint Kflag = 1;                              //按鍵24的標志
uint LedNumNS = 27;                 //南北的數(shù)字顯示
uint LedNumEW = 30;                 //東西的數(shù)字顯示
uint i = 0;
uint j = 0;
uint j1 = 0;
uint k = 0;
uint g = 0;
uint z = 0;
int r=0;                                         //計數(shù)及狀態(tài)的變量

uint LedTime1 = 30;
uint LedTime2 = 27;
uint LedTime3 = 30;
uint LedTime4 = 27;

uint Kf22 = 1;              //按鍵前一個狀態(tài)的值
uint Kf23 = 1;
uint Kf24 = 1;
uint KSta24 = 1;              //按鍵的當前值
uint KSta23 = 1;
uint KSta22 = 1;  
uchar Kflag22 = 0;              //按鍵22的switch函數(shù)參數(shù)

void main()
{
EA = 1;                                          //開總中斷
ET0 = 1;                            //開內部中斷0
TR0 = 1;
TMOD = 0x01;                 //方式1
TH0 = 0xFC;
TL0= 0x67; //1ms中斷
P1 = 0xEE;                            //

              while(1)
{
DigitalTube();              //數(shù)碼管顯示
}

}


void InterruptT0() interrupt 1
{
TH0 = 0xFC;
TL0 = 0x67; //1ms中斷            
i++;            
k++;

KSta24 = K24;                                //按鍵K24  夜間模式
if(Kf24 != KSta24)                            //按鍵有動作
            {
                          if(Kf24 == 1)                            //按鍵按下
                          {
                                        Kflag = !Kflag;                           
                          }
                          Kf24 = KSta24;
            }



KSta23 = K23;                                //按鍵K23  增減時長
if(Kf23 != KSta23)                            //按鍵有動作
{
            if(Kf23 == 1)                            //按鍵按下
            {
            //              LedTime = LedTime +2;
                          LedTime1 = LedTime1 +5;              //32  34 36 38 30
                          LedTime2 = LedTime2 +5;              //25  23 21  19 17
                          LedTime3 = LedTime3 +5;
                          LedTime4 = LedTime4 +5;
                          if(LedTime1 >=60)
                                        {
                                                      LedTime1 = 10;
                                                      LedTime2 = 7;
                                                      LedTime3 = 10;
                                                      LedTime4 = 7;
                                        }            
                          LedNumEW = LedTime1;
                          LedNumNS = LedTime2;
            }
            Kf23= KSta23;
}



KSta22 = K22;                                //按鍵K22  某方向長時間紅燈
if(Kf22 != KSta22)                            //按鍵有動作
{
            if(Kf22 == 1)                            //按鍵按下
            {
                          Kflag22 ++;            
                          if(Kflag22>= 3)            
                                        {
                                        Kflag22 = 0;
                                        }

                          switch(Kflag22)
                          {
                                        case 1:
                                                      LedTime1 = 60;
                                  LedTime2 = 57;              //case2
                                                      LedTime3 = 30;
                                                      LedTime4 = 27; //case1

                                                      LedNumEW = LedTime1;
                                                      LedNumNS = LedTime2;


                                            break;
                                        case 2:            
                                                      LedTime1 = 30;
                                  LedTime2 = 27;                //case2
                                                      LedTime3 = 60;
                                                      LedTime4 = 57;              //case1

                                                      LedNumEW = LedTime1;
                                                      LedNumNS = LedTime2;
                                                      break;

                          }

            }
            Kf22 = KSta22;
}


if(j >= 200)
{
j  = 0;
j1++;
}


if(i >= 1000)
{
i = 0;
LedNumNS--;              //27
LedNumEW--;              //30
switch(g)
{                                            //剛開始東西紅  南北綠
case 0:                                                                                                                   //********2
            if(LedNumEW == 3)                                                           //*****3
            {
                                        P14 = ! P14;   //綠燈滅
            if(Kf24 == Kflag)                            P15 = ! P15;   //黃燈亮
                                        LedNumNS = 3;
            }            
            if(LedNumEW == 0)
            {
                          LedNumNS =  LedTime3;              //   30東西綠南北紅的時間
                          LedNumEW =               LedTime4;              //  27
                          P12 = ! P12;                 //東西綠燈亮
                          P10 = ! P10;                //東西紅燈滅
                          P13 = ! P13;                              //nanbei紅燈亮
                if(Kf24 == Kflag)
                          P15 = ! P15;                //南北黃燈滅
                          g = 1;
            }            
            break;

case 1:                                                                                                                              //******4
            if(LedNumNS == 3)                 //黃燈亮
                          {
                       P12 = !P12;
                                           P11 = !P11;            
                                           LedNumEW = 3;
                          }
            if(LedNumNS == 0)                                                                         //********5
            {
                          LedNumEW = LedTime1;//重新賦值
                          LedNumNS = LedTime2;
            if(Kf24 == Kflag)              P11 = !P11;                 //南北黃燈滅
                          P10 = !P10;                //dongxi紅燈亮
                          P14 = !P14;
                          P13 = !P13;
                          g = 0;
            }
            break;
}


if(Kf24 != Kflag)                                                        //夜間模式
{
r=0;
g=0;
if(j1 % 2 == 0)
{
            P11 = ! P11;            
            P15 = ! P15;
        
}                                                          //所有方向黃燈閃爍
}                             
}                                                                       
}




void  DigitalTube()                            //數(shù)碼管

{                    
switch(z)
{
case 0:                                                                      //第一個數(shù)碼管顯示數(shù)字

  P0 =0xFF;                            //防止數(shù)字顯示混亂
            dula = 1;
            P0 = LedBuf[LedNumEW / 10];              //十位
            P20 = 0;
            P17 = 0;
            P21 = 0;
            P16 = 1;
            dula = 0;
            z++;            
            break;                             

case 1:                                                          //第二個數(shù)碼管亮
               P0 =0xFF;
            dula = 1;
            P0 = LedBuf[LedNumEW % 10];              //個位
            P16 = 0;
            P20 = 0;
            P21 = 0;
            P17 = 1;
            dula = 0;
  z++;
            break;

case 2:                                                        //第三個數(shù)碼管亮
  P0 =0xFF;
            dula = 1;
            P0 = LedBuf[LedNumNS / 10]; //十位
            P21 = 0;
            P16 = 0;
            P17 = 0;                                            //關閉2
            P20 = 1;                                            //使能第3個數(shù)碼管
            dula = 0;
            z++;                                                        //進入3
            break;

case 3:                                                          //第四個數(shù)碼管亮

  P0 =0xFF;
            dula = 1;
            P0 = LedBuf[LedNumNS % 10];              //個位
            P20 = 0;                                          //第三個關閉
            P16 = 0;
            P17 = 0;
            P21 = 1;                                          //使能第四個數(shù)碼管
            dula = 0;
            z = 0;                                                          //進入0
            break;

default:break;                                                                                                   
}
}

12.jpg (261.15 KB, 下載次數(shù): 106)

12.jpg
分享到:  QQ好友和群QQ好友和群 QQ空間QQ空間 騰訊微博騰訊微博 騰訊朋友騰訊朋友
收藏收藏1 分享淘帖 頂 踩
回復

使用道具 舉報

沙發(fā)
ID:776649 發(fā)表于 2020-6-12 09:16 | 只看該作者
。。。大佬不發(fā)個程序嗎。。。
回復

使用道具 舉報

板凳
ID:905886 發(fā)表于 2021-4-14 20:11 | 只看該作者
謝謝樓主
回復

使用道具 舉報

地板
ID:594512 發(fā)表于 2021-5-13 17:45 | 只看該作者
有仿真嗎
回復

使用道具 舉報

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

本版積分規(guī)則

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

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

快速回復 返回頂部 返回列表
主站蜘蛛池模板: 中文字幕国产精品视频 | 欧美一区二区三区在线播放 | 特黄色一级毛片 | www.日本国产 | 午夜免费网站 | 精彩视频一区二区三区 | 亚洲精品日韩视频 | 视频一区二区三区四区五区 | 国产黄色网址在线观看 | 91视频在线 | 国产精品久久久久久亚洲调教 | 久草电影网 | 日本成人毛片 | 国产精品国产三级国产播12软件 | 在线观看久草 | 日本在线视频一区二区 | 欧美激情a∨在线视频播放 成人免费共享视频 | 羞羞的视频免费看 | 久久精品高清视频 | 成人午夜影院 | 国产99久久久国产精品下药 | 97色在线视频 | 国产亚洲精品久久19p | 亚洲黄色av | 天天干国产 | 视频一区在线 | 中文字幕 亚洲一区 | 夜夜操av| 小视频你懂得 | 中文字幕在线视频免费视频 | 一区二区三区视频在线观看 | 久久高清免费视频 | 一区二区三区四区免费在线观看 | 羞羞色在线观看 | 国产91一区 | 成人精品视频99在线观看免费 | 999久久久久久久久6666 | 亚洲免费人成在线视频观看 | 日韩久久久久久久久久久 | 欧美日韩综合 | 免费的一级视频 |