標(biāo)題: 關(guān)于51單片機(jī)仿真交通燈實(shí)現(xiàn)夜間黃燈閃爍的功能 [打印本頁(yè)]

作者: BilibiliGiao    時(shí)間: 2020-6-17 12:47
標(biāo)題: 關(guān)于51單片機(jī)仿真交通燈實(shí)現(xiàn)夜間黃燈閃爍的功能
通過(guò)單片機(jī)模擬交通燈,東西方向黃綠紅,南北方向黃綠紅的工作方式。
時(shí)間:
東西方向綠燈26秒,
黃燈時(shí)間2秒。
南北方向綠燈時(shí)間3秒,
黃燈時(shí)間3秒

  
  
擴(kuò)展功能:
1、顯示時(shí)間倒計(jì)時(shí)。數(shù)碼管顯示倒計(jì)時(shí)
2、通過(guò)按鍵控制東西方向強(qiáng)制綠燈,或南北方向強(qiáng)制綠燈(應(yīng)對(duì)緊急情況)按鍵東西綠同時(shí)南北紅?
3、夜晚能夠進(jìn)行所有黃燈閃爍。閃爍按鍵
4、能夠統(tǒng)計(jì)車輛通過(guò)數(shù)量,并將數(shù)據(jù)進(jìn)行匯總并發(fā)送至上位機(jī)。中斷開(kāi)關(guān)加一


樓主目前只實(shí)現(xiàn)了基本功能,通過(guò)控制P1口電平狀態(tài)來(lái)切換紅綠燈,在實(shí)現(xiàn)擴(kuò)展功能3時(shí)寫(xiě)了一個(gè)按鍵但無(wú)效,求老哥們指點(diǎn),當(dāng)然也不止局限于擴(kuò)展3,其他幾個(gè)有好的想法也請(qǐng)不吝賜教
工程代碼附件以上傳
某度鏈接(永久):https://pan.baidu.com/s/1gksnEy1bnYcpb2vm4uaO0Q
提取碼:8ged

仿真圖:
  1. //乞丐版
  2. /*交通燈*/  
  3. #include<reg51.h>
  4. //延時(shí)n毫秒
  5. void delay_ms(unsigned int n)
  6. {
  7.     unsigned int i=0,j=0;
  8.     for(i=0;i<n;i++)
  9.         for(j=0;j<123;j++);
  10. }
  11. void main()//主函數(shù)
  12. {
  13.     while(1)//死循環(huán)
  14.                 {   //輪流送值給P1口
  15.                         P1=0xc9;//
  16.                 delay_ms(26000);//綠26s
  17.                 P1=0xa9;//
  18.                 delay_ms(2000);//黃2s
  19.                 P1=0x9c;//
  20.                 delay_ms(3000);//綠3s
  21.                 P1=0x9a;//
  22.                 delay_ms(3000);//黃3s
  23.        
  24.         }
  25. }
復(fù)制代碼
加擴(kuò)展功能黃燈閃爍(無(wú)效)
  1. /*交通燈*/  
  2. #include <reg51.h>
  3. #define uchar unsigned char
  4. #define uint  unsigned int
  5. sbit key1 = P2^2;

  6. uchar code table[10]={0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90};//共陽(yáng)極數(shù)目管0~9段選碼
  7. uchar code      S[4]={0xc9,0xa9,0x9c,0x9a};//交通信號(hào)燈控制代碼(一個(gè)控制碼一種狀態(tài))
  8. //延時(shí)n毫秒
  9. void delay_ms(unsigned int n)
  10. {
  11.     unsigned int i=0,j=0;
  12.     for(i=0;i<n;i++)
  13.         for(j=0;j<123;j++);
  14. }
  15. void main()//主函數(shù)
  16. {

  17.     while(1)//死循環(huán)
  18.                 {
  19.                                  
  20.         //輪流送值給P1口
  21.                         P1=S[0];//
  22.                 delay_ms(6000);//綠26s
  23.                 P1=S[1];//
  24.                 delay_ms(2000);//黃2s
  25.                 P1=S[2];//
  26.                 delay_ms(3000);//綠3s
  27.                 P1=S[3];//
  28.                 delay_ms(3000);//黃3s
  29.           if(key1==0)//夜間模式黃燈閃爍
  30. {delay_ms(10);
  31.   if(key1==0)
  32.   {                        P1=0xAA;//只有黃燈亮
  33.                  delay_ms(500);
  34.                    P1=0x88;//黃燈滅
  35.         delay_ms(500);
  36.   }
  37. }
  38.         }
  39. }

復(fù)制代碼



加黃燈.png (53.54 KB, 下載次數(shù): 135)

仿真圖

仿真圖

交通燈.zip

68.33 KB, 下載次數(shù): 25

代碼+仿真


作者: man1234567    時(shí)間: 2020-6-18 10:14
擴(kuò)展想法隨意圖畫(huà)得基本扯蛋:6路燈居然用了8個(gè)端口,沒(méi)有數(shù)碼管憑空顯示倒計(jì)時(shí),控制開(kāi)關(guān)只有一個(gè)功能要三個(gè)快捷不便操作,夜晚能夠進(jìn)行的功能沒(méi)有RTC無(wú)法實(shí)用,統(tǒng)計(jì)車輛通過(guò)居然沒(méi)有傳感器...
難道又是BY設(shè)計(jì)找了點(diǎn)原料來(lái)釣魚(yú)的
如果叫花版工作正常,想開(kāi)關(guān)控制黃燈可以將
  if(key1==0)
  {                        P1=0xAA;//只有黃燈亮
                 delay_ms(500);
                   P1=0x88;//黃燈滅
        delay_ms(500);
  }
改為:
  if(key1==0)
  { P1=0xa9; delay_ms(500); P1=0x9a; delay_ms(500); }
就可以,但開(kāi)關(guān)切換并不實(shí)時(shí),要等一個(gè)燈的周期結(jié)束(最多可能要34秒),否則必須用中斷。




歡迎光臨 (http://www.torrancerestoration.com/bbs/) Powered by Discuz! X3.1