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

標題: 基于51單片機的交通燈設計(源碼+原理圖+proteus仿真) [打印本頁]

作者: onc2001    時間: 2024-6-11 03:39
標題: 基于51單片機的交通燈設計(源碼+原理圖+proteus仿真)
基于51單片機的交通燈設計
用的芯片是:STC89C51
一、基本要求:
1、可以通過按鍵修改模式
2、默認情況下進入交通燈模式
3、模式一為夜間模式,黃燈閃爍
4、模式二禁止通行,紅燈閃爍
5、可以方便的修改倒計時時間和黃燈時間




更多源代碼和工程見附件
S001基于51單片機的十字路口交通燈設計.7z (1.88 MB, 下載次數: 74)

  1. #include <MAIN.H>
  2. u8 yeltime;//黃燈時間
  3. u8 sflag=0;//秒標志位
  4. u8 shiftflag=0;//哪個方向上有黃燈結束0是東西1是南北
  5. u8 time;//一共的倒計時,基準時間為南北
  6. //此時,南北(綠黃紅)20秒,另外還要加黃燈三秒,東西23秒到0(紅綠黃)
  7. u8 NStime ;//南北方向的燈
  8. u8 WEtime ;//東西和黃燈
  9. u8 mode =0;//0是正常模式,1是夜間模式,2是禁止通行模式

  10. #define otime 30    //設置初始燈時間
  11. #define oyeltime 3 //設置黃燈時間

  12. sbit key = P2^5;
  13. sbit mode0led = P2^0;
  14. sbit mode1led = P2^1;
  15. sbit mode2led = P2^2;


  16. void InitTimer0(void)
  17. {
  18.     TMOD = 0x01;
  19.     TH0 = 0x0D8;
  20.     TL0 = 0x0F0;
  21.     EA = 1;
  22.     ET0 = 1;
  23.     TR0 = 1;
  24. }



  25. void main(void)
  26. {
  27.         
  28.   InitTimer0(); //初始化定時器0,開中斷10ms
  29.         time=otime; //使用初始時間賦值給計時器
  30.         yeltime=oyeltime; //使用初始黃燈時間賦值給黃燈計時器
  31.         NStime=time;//設置南北計時器為初始時間加黃燈時間
  32.         WEtime=time+yeltime;//設置東西計時器
  33.         NSLedGre=1;NSLedYel=1;NSLedRed=0;//打開南北綠燈
  34.         WELedGre=0;WELedYel=1;WELedRed=1;//打開東西黃燈
  35.         key=1;
  36.         while(1)
  37.         {
  38.                 if(mode==0)
  39.                 {
  40.                         mode0led=0;mode1led=1;mode2led=1;
  41.                         if(sflag==1)//如果秒計時器溢出
  42.                 {
  43.                         sflag=0; //清除標記
  44.                         NStime--;WEtime--;//時間減一
  45.                         
  46.                         if(NStime!=0&&WEtime==0) //此時東西時間歸零但是南北還有殘余秒數,并開始轉入黃燈
  47.                         {
  48.                                 WEtime=yeltime;//把黃燈時間賦值給南北
  49.                                 NSLedGre=1;NSLedYel=0;NSLedRed=1;//南北黃燈亮起
  50.                                 WELedGre=1;WELedYel=1;WELedRed=0;        //東西紅燈亮起
  51.                         }
  52.                         else if(NStime==0&&WEtime==0) //四個方向時間都歸零
  53.                         {
  54.                                 if(shiftflag==1)//標記現在哪個黃燈結束,選擇通行
  55.                                 {
  56.                                         shiftflag=0;//恢復標志位,此時東西通行
  57.                                         NStime=time;
  58.                                         WEtime=time+yeltime;
  59.                                         NSLedGre=1;NSLedYel=1;NSLedRed=0;
  60.                                         WELedGre=0;WELedYel=1;WELedRed=1;        
  61.                                 }
  62.                                 else
  63.                                 {
  64.                                         shiftflag=1;//恢復標志位,此時南北通行
  65.                                         NStime=time+yeltime;
  66.                                         WEtime=time;
  67.                                         NSLedGre=0;NSLedYel=1;NSLedRed=1;
  68.                                   WELedGre=1;WELedYel=1;WELedRed=0;        
  69.                                 }
  70.                         }
  71.                         else if(NStime==0&&WEtime!=0)////此時南北時間歸零但是東西還有殘余秒數,并開始轉入黃燈
  72.                         {
  73.                                 NStime=yeltime;//把黃燈時間賦值給南北
  74.                                 NSLedGre=1;NSLedYel=1;NSLedRed=0;//南北紅燈亮起
  75.                                 WELedGre=1;WELedYel=0;WELedRed=1;//東西黃燈亮起
  76.                         }
  77.                         
  78.                 }
  79.         }
  80.                 else if(mode==1)
  81.                 {
  82.                         mode0led=1;mode1led=0;mode2led=1;
  83.                         if(sflag==1)//如果秒計時器溢出
  84.                         {

  85.                                 P0=0xFF;
  86.                                 sflag=0; //清除標記
  87.                                 NSLedGre=1;NSLedYel=~NSLedYel;NSLedRed=1;//南北紅燈亮起
  88.                                 WELedGre=1;WELedYel=~WELedYel;WELedRed=1;//東西黃燈亮起
  89.                         }
  90.                 }
  91.                 else if(mode==2)
  92.                 {
  93.                         mode0led=1;mode1led=1;mode2led=0;
  94.                         if(sflag==1)//如果秒計時器溢出
  95.                         {

  96.                                 P0=0xFF;
  97.                                 sflag=0; //清除標記
  98.                                 NSLedGre=1;NSLedYel=1;NSLedRed=~NSLedRed;//南北紅燈亮起
  99.                                 WELedGre=1;WELedYel=1;WELedRed=~WELedRed;//東西黃燈亮起
  100.                         }
  101.                 }
  102.                 //
  103.                
  104.         }
  105. }

  106. void Timer0Interrupt(void) interrupt 1 //12T@10ms
  107. {
  108.         static u8 timecount=0;
  109.         static u8 keycount=0;
  110.         TH0 = 0x0D8;
  111.         TL0 = 0x0F0;
  112.         timecount++;
  113.         keycount++;
  114.         
  115.         if(keycount==25)
  116.         {
  117.                 keycount=0;
  118.                 if(key==0)
  119.         {
  120.                 mode++;
  121.                 if(mode==3)
  122.                 {
  123.                         mode=0;
  124.                 }
  125.         }
  126.         }
  127.         if(timecount==100)
  128.         {
  129.                 timecount=0;
  130.                 sflag=1;
  131.         }
  132.         if(mode==0)
  133.         {
  134.                 showtube(NStime,WEtime);
  135.         }
  136.   //add your code here!
  137. }
復制代碼




作者: 1662136574    時間: 2024-6-17 08:52
數碼管不亮是什么原因啊
作者: onc2001    時間: 2024-6-30 06:08
1662136574 發表于 2024-6-17 08:52
數碼管不亮是什么原因啊

看下你什么版本,我這個8.13版本ok的
作者: swy1232    時間: 2024-7-1 12:08
這個原理圖是可以直接打pcb板嗎
作者: onc2001    時間: 2024-9-26 00:13
swy1232 發表于 2024-7-1 12:08
這個原理圖是可以直接打pcb板嗎

不行,還需要修改





歡迎光臨 (http://m.zg4o1577.cn/bbs/) Powered by Discuz! X3.1
主站蜘蛛池模板: 国产精品久久久久无码av | 午夜视频免费在线观看 | 在线观看日韩精品视频 | 狠狠插狠狠操 | 中文字幕第三页 | 久色网 | 亚洲一区二区三区四区五区午夜 | 久久精品国产免费一区二区三区 | 亚洲网站在线观看 | h在线| 午夜电影网 | 国产成在线观看免费视频 | 国产高清视频 | 日韩在线免费播放 | 欧美日韩亚洲国产综合 | 日本视频在线播放 | 免费观看成人性生生活片 | 国产一区二区中文字幕 | 亚洲欧美综合精品久久成人 | 午夜免费观看网站 | 日韩一二三区视频 | 欧美一级黄带 | 欧美在线a| 亚洲视频在线一区 | 福利视频1000 | 精品久久久久久 | 成人在线免费视频 | 亚洲一区视频 | 一级毛片免费 | 国产精品一二三区 | 日本高清中文字幕 | 97视频人人澡人人爽 | 欧美最猛性xxxxx亚洲精品 | 在线伊人网 | 91亚洲国产成人久久精品网站 | 久久久久久综合 | 在线日韩欧美 | 黄色片免费在线观看 | 天天干天天插 | 久久久国| 天天影视综合 |