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

 找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

搜索
查看: 2846|回復: 4
收起左側

基于51單片機的交通燈設計(源碼+原理圖+proteus仿真)

[復制鏈接]
ID:818537 發表于 2024-6-11 03:39 | 顯示全部樓層 |閱讀模式
基于51單片機的交通燈設計
用的芯片是:STC89C51
一、基本要求:
1、可以通過按鍵修改模式
2、默認情況下進入交通燈模式
3、模式一為夜間模式,黃燈閃爍
4、模式二禁止通行,紅燈閃爍
5、可以方便的修改倒計時時間和黃燈時間

仿真照片.png


更多源代碼和工程見附件
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. }
復制代碼



評分

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

查看全部評分

回復

使用道具 舉報

ID:1125032 發表于 2024-6-17 08:52 來自手機 | 顯示全部樓層
數碼管不亮是什么原因啊
回復

使用道具 舉報

ID:818537 發表于 2024-6-30 06:08 | 顯示全部樓層
1662136574 發表于 2024-6-17 08:52
數碼管不亮是什么原因啊

看下你什么版本,我這個8.13版本ok的
回復

使用道具 舉報

ID:1126459 發表于 2024-7-1 12:08 | 顯示全部樓層
這個原理圖是可以直接打pcb板嗎
回復

使用道具 舉報

ID:818537 發表于 2024-9-26 00:13 | 顯示全部樓層
swy1232 發表于 2024-7-1 12:08
這個原理圖是可以直接打pcb板嗎

不行,還需要修改
回復

使用道具 舉報

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

本版積分規則

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

Powered by 單片機教程網

快速回復 返回頂部 返回列表
主站蜘蛛池模板: 国产91在线 | 亚洲 | 日韩在线精品强乱中文字幕 | 91成人在线 | 国产精品中文字幕在线 | 中文字幕日韩一区 | 九一在线 | 一区在线播放 | 国产精品久久久久久婷婷天堂 | www久| 中文精品视频 | 亚洲福利网站 | 成人精品鲁一区一区二区 | 91精品综合久久久久久五月天 | 性高湖久久久久久久久3小时 | 欧美日韩国产在线 | 男女羞羞视频免费看 | 久久麻豆精品 | 日本黄色的视频 | 国产主播第一页 | 久久一级| 人人干人人干人人干 | 亚洲久久 | 北条麻妃视频在线观看 | 97国产一区二区 | 7777精品伊人久久精品影视 | 婷婷一级片 | 天堂在线www | 欧美三级三级三级爽爽爽 | 91麻豆精品国产91久久久久久久久 | 欧产日产国产精品v | 久久久www成人免费精品 | 国产成人99久久亚洲综合精品 | 91影院在线观看 | 中文字幕一区在线观看视频 | 99国产在线 | 久久成人精品视频 | 有码一区 | 黄色激情毛片 | 亚洲www啪成人一区二区麻豆 | 久久精品国产免费高清 | 香蕉国产在线视频 |