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

QQ登錄

只需一步,快速開始

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

單片機(jī)交通燈怎么在黃燈的時(shí)候加上報(bào)警燈(就是提示音)

[復(fù)制鏈接]
跳轉(zhuǎn)到指定樓層
樓主
ID:824472 發(fā)表于 2020-11-3 08:27 | 只看該作者 回帖獎(jiǎng)勵(lì) |倒序?yàn)g覽 |閱讀模式
代碼如下
#include <reg52.h>
#define uchar  unsigned char
#define uint   unsigned int
//數(shù)碼管共陽極/*0,1,2,3,4,5,6,7,8,9,A,b,C,*/
uchar code SEG7[]={0xC0,0xF9,0xA4,0xB0,0x99,0x92,0x82,0xF8,0x80,0x90};
//數(shù)碼管位碼
sbit      q1=P3^0;
sbit      q2=P3^1;
sbit      q3=P3^4;
sbit      q4=P3^5;
//紅綠黃燈端口定義--------東西紅燈
sbit      hong=P2^0;
//紅綠黃燈端口定義--------東西黃燈
sbit      huang=P2^1;
//紅綠黃燈端口定義--------東西綠燈
sbit      lv=P2^2;
//紅綠黃燈端口定義--------南北紅燈
sbit      hong1=P2^3;
//紅綠黃燈端口定義--------南北黃燈
sbit      huang1=P2^4;
//紅綠黃燈端口定義--------南北綠燈
sbit      lv1=P2^5;
//定義變量------倒計(jì)時(shí)變量
uint t1=15;
//定義變量------南北延時(shí)時(shí)間
uint time=15;
uint time1=15;
//定義變量------定時(shí)器計(jì)時(shí)變量
uint jishu1=0;
//定義變量------執(zhí)行步驟標(biāo)志位
uchar bz=0;
//定義變量------運(yùn)行標(biāo)志
uchar yunxing=1;
//定義變量------顯示倒計(jì)時(shí)時(shí)間變量
uint  jishu3=0;
//延時(shí)函數(shù)ms
void _delay_ms(uint i)
{
  uchar j;
  for(;i>0;i--)
  {
   for(j=0;j<120;j++);
  }
}
//顯示倒計(jì)時(shí)函數(shù)-----倒計(jì)時(shí)秒顯示
void dispaly()
{   
  //顯示倒計(jì)時(shí)十位--東西  
  P1=SEG7[t1%100/10];q1=1;_delay_ms(2);q1=0;
  //顯示倒計(jì)時(shí)個(gè)位--東西  
  P1=SEG7[t1%10];q2=1;_delay_ms(2);q2=0;

  //顯示倒計(jì)時(shí)十位--南北  
  P1=SEG7[t1%100/10];q3=1;_delay_ms(2);q3=0;
  //顯示倒計(jì)時(shí)個(gè)位--南北  
  P1=SEG7[t1%10];q4=1;_delay_ms(2);q4=0;
}
//主函數(shù)
void main()   
{ //-------定時(shí)器0配置
  TMOD=0x01;        //方式1
  //使能定時(shí)器0
  ET0=1;
  //定時(shí)器的初值
  TH0=(65536-50000)/256;
  TL0=(65536-50000)%256;
  //停止開啟定時(shí)器0
  TR0=1;
  //使能中斷  
  EA=1;
  while(1)
  {         
    //顯示交通燈運(yùn)行
    if(yunxing==1)
         {
          dispaly();
          //東西紅滅  黃滅 綠亮
          //南北紅亮  黃滅 綠滅
          if(bz==0)
          {
            hong=1; huang=1;  lv=0;
            hong1=0;huang1=1;lv1=1;
            if(t1==0){bz=1;t1=3;}
          }
          //東西紅滅  黃閃 綠滅
          //南北紅亮  黃滅 綠滅
          if(bz==1)
          {
           if(jishu1<10){hong=1;  huang=0; lv=1;}         
           if(jishu1>10){hong=1;  huang=1; lv=1;}         
           hong1=0; huang1=1;lv1=1;
           if(t1==0){bz=2; t1=time1; }
          }
          //東西紅亮  黃滅 綠滅
          //南北紅滅  黃滅 綠亮
          if(bz==2)
          {
           hong=0;   huang=1;lv=1;  
           hong1=1;  huang1=1;lv1=0;         
           if(t1==3){bz=3;t1=3;}
          }
          //東西紅亮  黃滅 綠滅
          //南北紅滅  黃閃 綠滅         
          if(bz==3)
          {
           hong=0;huang=1;lv=1;           
           if(jishu1<10){hong1=1; huang1=0;lv1=1;}
           if(jishu1>10){hong1=1; huang1=1;lv1=1;}
           if(t1==0){bz=0; t1=time1; }
          }
        }
   }
}


//定時(shí)器0中斷服務(wù)函數(shù)用于倒計(jì)時(shí)變量減去1--到達(dá)1s后倒計(jì)時(shí)減去1                 
void  Time0() interrupt 1
{
  //重裝初值50ms;
  TH0=(65536-50000)/256;  
  TL0=(65536-50000)%256;
  //時(shí)間緩沖+1;
  jishu1=jishu1+1;
  if(jishu1>19)
  {jishu1=0;if(t1>0)t1=t1-1;}

}

交通燈倒計(jì)時(shí).rar

20.55 KB, 下載次數(shù): 11

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

使用道具 舉報(bào)

沙發(fā)
ID:328014 發(fā)表于 2020-11-3 14:37 | 只看該作者
這個(gè)很簡(jiǎn)單,加一個(gè)蜂鳴器,然后在黃燈閃的程序后面置1就行了
回復(fù)

使用道具 舉報(bào)

本版積分規(guī)則

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

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

快速回復(fù) 返回頂部 返回列表