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

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

QQ登錄

只需一步,快速開(kāi)始

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

單片機(jī)LED模擬交通燈原理圖+仿真+代碼(帶加減時(shí)間按鈕)

[復(fù)制鏈接]
跳轉(zhuǎn)到指定樓層
樓主
ID:380001 發(fā)表于 2018-11-21 22:18 | 只看該作者 |只看大圖 回帖獎(jiǎng)勵(lì) |倒序?yàn)g覽 |閱讀模式
LED模擬交通燈仿真原理圖如下(proteus仿真工程文件可到本帖附件中下載)


單片機(jī)源程序如下:
  1. /*********************************************************************************
  2. *                                                                                                                                                                 *
  3. *                           課程設(shè)計(jì):交通信號(hào)燈控制                                                                             *
  4. *                          要    點(diǎn):1、十字路口交通燈控制                                                                      *
  5. *                                   2、分別用紅、綠、黃發(fā)光二級(jí)管顯示                                             *
  6. *                                    3、紅、綠、黃發(fā)光二級(jí)管顯示時(shí)間自定                                                 *
  7. *                                4、用PROTEUS仿真                                                                                         *
  8. *                              5、焊接電路板并調(diào)試運(yùn)行                                                                         *
  9. *                          創(chuàng)    新:時(shí)間可調(diào),可調(diào)范圍1~60S                                                                         *                                                                                                                                                                                       
  10. *                          出    品:信息與控制工程學(xué)院自動(dòng)化3班馬洪璽                               *                  
  11. *                          時(shí)    間:2014年12月                                                                                    *
  12. *                                                                                                                                                                 *
  13. **********************************************************************************/
  14. /************************************程序開(kāi)始*************************************/                                                                                                                                          
  15. #include <reg51.h>                                                                                                               
  16. #define uchar unsigned char
  17. #define  uint unsigned int

  18. sbit RED_A=P0^0;                         //定義東西方向紅燈
  19. sbit YELLOW_A=P0^1;                         //定義東西方向黃燈
  20. sbit GREEN_A=P0^2;                         //定義東西方向綠燈
  21. sbit RED_B=P0^3;                         //定義南北方向紅燈
  22. sbit YELLOW_B=P0^4;                         //定義南北方向黃燈
  23. sbit GREEN_B=P0^5;                         //定義南北方向綠燈
  24. sbit add=P3^3;                                 //定義東西綠燈時(shí)間加按鍵
  25. sbit sub=P3^4;                                 //定義東西綠燈時(shí)間減按鍵
  26. sbit K1=P3^2;                                 //定義設(shè)定時(shí)間按鍵
  27. sbit add2=P3^5;                             //定義調(diào)南北綠燈時(shí)間加按鍵
  28. sbit sub2=P3^6;                             //定義調(diào)南北綠燈時(shí)間減按鍵
  29. int time_1=2000,time_2=2000; //定義東西和南北綠燈亮?xí)r可調(diào)變量并賦予初值2S
  30. uchar Flash_Count=0;                 //黃燈閃爍次數(shù)初始為0
  31. Operation_Type=1;                         //從模式1開(kāi)始
  32. void DelayMS(uint x);                 //延時(shí)子函數(shù)聲明
  33. void Traffic_lignt();                 //交通燈循環(huán)亮子程序聲明
  34. /************************************主函數(shù)************************************/
  35. void main()
  36. {
  37.         P3=0xff;                                 //預(yù)讀先寫1
  38.         EA=1;                                         //打開(kāi)總中斷
  39.         EX0=1;                                         //打開(kāi)外部中斷0
  40.         IT0=0;                                         //觸發(fā)方式為低電平觸發(fā)
  41.   
  42.                 while(1)
  43.                 {
  44.                    Traffic_lignt();        
  45.                 }
  46. }
  47. /*********************************延時(shí)子程序*************************************/
  48. void DelayMS(uint x)                  //延時(shí)ms
  49. {
  50.     uchar t;
  51.     while(x--)
  52.     {
  53.         for(t=120;t>0;t--);
  54.     }
  55. }
  56. /**************************交通燈循環(huán)亮程序************************************/
  57. void Traffic_lignt()                 
  58. {
  59.          switch(Operation_Type)
  60.         {
  61.                  case 1:
  62.                         RED_A=1;YELLOW_A=1;GREEN_A=0;                 //東西方向紅燈和黃燈滅,綠燈亮
  63.                         RED_B=0;YELLOW_B=1;GREEN_B=1;                 //南北方向綠燈和黃燈滅,紅燈亮
  64.                         DelayMS(time_1);                                         //東西方向綠燈延時(shí)時(shí)間
  65.                         while(K1==0);                                                 //產(chǎn)生中斷時(shí)可靠停止
  66.                         Operation_Type = 2;                                         //轉(zhuǎn)到模式2
  67.                         break;
  68.                 case 2:
  69.                         GREEN_A=1;                                                         //東西方向綠燈滅
  70.                         DelayMS(200);                                                 //黃燈延時(shí)時(shí)間
  71.                         while(K1==0);                                                 //產(chǎn)生中斷時(shí)可靠停止
  72.                         YELLOW_A=~YELLOW_A;                                         //黃燈閃爍
  73.                         if(++Flash_Count !=10)                                  //閃爍10次(亮5次滅5次)
  74.                                 return;
  75.                         Flash_Count=0;                                                 //黃燈閃爍次數(shù)清零
  76.                         Operation_Type = 3;                                         //轉(zhuǎn)到模式3
  77.                         break;
  78.                 case 3:
  79.                         RED_A=0;YELLOW_A=1;GREEN_A=1;                 //東西方向僅紅燈亮
  80.                         RED_B=1;YELLOW_B=1;GREEN_B=0;                 //南北方向僅綠燈亮
  81.                         DelayMS(time_2);                                     //南北方向綠燈延時(shí)時(shí)間
  82.                         while(K1==0);                                                 //產(chǎn)生中斷時(shí)可靠停止
  83.                         Operation_Type = 4;                                         //轉(zhuǎn)到模式4
  84.                         break;        
  85.                 case 4:
  86.                         GREEN_B=1;                                                         //南北方向綠燈滅
  87.                         DelayMS(200);                                                 //黃燈延時(shí)時(shí)間
  88.                         while(K1==0);                                                 //產(chǎn)生中斷時(shí)可靠停止
  89.                         YELLOW_B=~YELLOW_B;                                         //黃燈閃爍
  90.                         if(++Flash_Count !=10)                                  //閃爍10次(亮5次滅5次)
  91.                                 return;
  92.                         Flash_Count=0;                                                 //黃燈閃爍次數(shù)清零
  93.                         Operation_Type = 1;                                         //轉(zhuǎn)到模式1
  94.                         break;        
  95.         }
  96. }
  97. /*******************************外部中斷0子程序**********************************************/
  98. void exter_0() interrupt 0
  99. {
  100.         while(!(add&&sub&&add2&&sub2))                        //掃描是否有按鍵按下
  101.                 {
  102.                 while(add==0)                                    //如果第一個(gè)按鍵按下東西方向綠燈延續(xù)時(shí)間加1秒
  103.                                         {
  104.                                             DelayMS(10);
  105.                                                 while(add==0);
  106.                                                 time_1=time_1+1000;
  107.                                                 if(time_1>60000)   //當(dāng)時(shí)間超過(guò)60秒將時(shí)間置為60秒
  108.                                                 {time_1=60000;}
  109.                                         }
  110.                         while(sub==0)                                   //如果第二個(gè)按鍵按下東西方向綠燈延續(xù)時(shí)間減1秒
  111.                                         {        
  112.                                                 DelayMS(10);
  113.                                                 while(sub==0);
  114.                                                 time_1=time_1-1000;
  115.                                                 if(time_1<=0)           //當(dāng)時(shí)間減到小于或等于0時(shí)將時(shí)間置為1秒
  116.                                                 {time_1=1000;}
  117.                                         }
  118.                     while(add2==0)                                   //如果第三個(gè)按鍵按下南北方向綠燈延續(xù)時(shí)間加1秒
  119.                                         {        
  120.                                                 DelayMS(10);
  121.                                                 while(add2==0);
  122.                                                 time_2=time_2+1000;
  123.                                                 if(time_2>60000)   //當(dāng)時(shí)間超過(guò)60秒將時(shí)間置為60秒
  124.                                                 {time_2=60000;}
  125.                                         }
  126.                         while(sub2==0)                                   //如果第四個(gè)按鍵按下南北方向綠燈延續(xù)時(shí)間減1秒
  127.                                         {                                          
  128.                                                 DelayMS(10);
  129.                                                 while(sub2==0);
  130.                                                 time_2=time_2-1000;
  131.                                                 if(time_2<=0)           //當(dāng)時(shí)間減到小于或等于0時(shí)將時(shí)間置為1秒
  132.                                                 {time_2=1000;}
  133.                                         }
  134.            }
  135. }
  136. /**********************************程序結(jié)束*********************************************************/
復(fù)制代碼

所有資料51hei提供下載:
http://www.zg4o1577.cn/bbs/dpj-142615-1.html


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

使用道具 舉報(bào)

沙發(fā)
ID:585365 發(fā)表于 2021-8-18 17:33 | 只看該作者
太及時(shí)了。我剛好要用來(lái)參考
回復(fù)

使用道具 舉報(bào)

本版積分規(guī)則

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

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

快速回復(fù) 返回頂部 返回列表
主站蜘蛛池模板: 欧美高清性xxxxhdvideosex | 超碰在线人人干 | 黄视频网站免费观看 | 亚洲精品v | 激情五月激情综合网 | 国产精品夜夜春夜夜爽久久电影 | 99精品热视频 | 国产精品福利一区二区三区 | 成人午夜在线 | 999热精品 | 国产1区2区 | 日韩欧美在线播放 | www国产亚洲精品 | 国产一区 | 国产中文字幕网 | 久久成人av| 欧美精品电影一区 | www久久爱 | 精品久久一区 | 九九精品在线 | 国产精品国产精品国产专区不卡 | 中文字幕av一区 | 成人在线小视频 | 91在线视频播放 | 欧美精品久久久久 | 久草青青 | 伊人春色成人网 | 大学生a级毛片免费视频 | 久久精品国产一区二区三区 | 久久久久久久综合 | aaaa网站| 日韩视频免费 | 亚洲免费三级 | 久久精品亚洲精品 | 99精品网 | 二区在线视频 | 秋霞精品 | 免费看国产片在线观看 | 国产精品久久久一区二区三区 | 国产精品久久视频 | 黄视频欧美 |