找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

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

關于51單片機仿真交通燈實現(xiàn)夜間黃燈閃爍的功能

[復制鏈接]
跳轉到指定樓層
樓主
ID:765181 發(fā)表于 2020-6-17 12:47 | 只看該作者 |只看大圖 回帖獎勵 |倒序瀏覽 |閱讀模式
通過單片機模擬交通燈,東西方向黃綠紅,南北方向黃綠紅的工作方式。
時間:
東西方向綠燈26秒,
黃燈時間2秒。
南北方向綠燈時間3秒,
黃燈時間3秒

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


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

仿真圖:
  1. //乞丐版
  2. /*交通燈*/  
  3. #include<reg51.h>
  4. //延時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. }
復制代碼
加擴展功能黃燈閃爍(無效)
  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};//共陽極數(shù)目管0~9段選碼
  7. uchar code      S[4]={0xc9,0xa9,0x9c,0x9a};//交通信號燈控制代碼(一個控制碼一種狀態(tài))
  8. //延時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. }

復制代碼



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

仿真圖

仿真圖

交通燈.zip

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

代碼+仿真

評分

參與人數(shù) 1黑幣 +50 收起 理由
admin + 50 共享資料的黑幣獎勵!

查看全部評分

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

使用道具 舉報

沙發(fā)
ID:584814 發(fā)表于 2020-6-18 10:14 | 只看該作者
擴展想法隨意圖畫得基本扯蛋:6路燈居然用了8個端口,沒有數(shù)碼管憑空顯示倒計時,控制開關只有一個功能要三個快捷不便操作,夜晚能夠進行的功能沒有RTC無法實用,統(tǒng)計車輛通過居然沒有傳感器...
難道又是BY設計找了點原料來釣魚的
如果叫花版工作正常,想開關控制黃燈可以將
  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); }
就可以,但開關切換并不實時,要等一個燈的周期結束(最多可能要34秒),否則必須用中斷。
回復

使用道具 舉報

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

本版積分規(guī)則

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

Powered by 單片機教程網

快速回復 返回頂部 返回列表