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

 找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

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

有5個狀態(tài)的單片機(jī)交通燈仿真和源代碼

[復(fù)制鏈接]
跳轉(zhuǎn)到指定樓層
樓主
ID:126992 發(fā)表于 2016-6-16 15:07 | 只看該作者 |只看大圖 回帖獎勵 |倒序瀏覽 |閱讀模式
我覺得,厲害的是可以直接做PCB,仿真的和真實(shí)的還是有差距的,建議升級的8.2版本哦

交通燈仿真原理圖


單片機(jī)交通燈源代碼:
  1. /**************************************************************

  2. **                                                                 *
  3. *第一個狀態(tài):主干道、支干道均亮紅燈5S                             *
  4. *第二個狀態(tài):主干道亮綠燈30S、支干道亮紅燈                        *
  5. *第三個狀態(tài):主干道綠燈閃3次轉(zhuǎn)亮黃燈、支干道亮紅燈3S              *
  6. *第四個狀態(tài):主干道亮紅燈、支干道亮綠燈25S                        *
  7. *第五個狀態(tài):主干道亮紅燈、支干道綠燈閃3次轉(zhuǎn)亮黃燈3S              *
  8. *返回到第二個狀態(tài)                                                 *
  9. *                                                                 *
  10. ***************************************************************

  11. /
  12. /* 11.0952M晶振*/
  13. #include<reg51.h>//頭文件
  14. #include<intrins.h>//頭文件
  15. #define  uchar  unsigned  char//宏定義
  16. #define  uint   unsigned   int//宏定義
  17. sbit   RED_ZHU    =  P1^0;
  18. sbit   YELLOW_ZHU =  P1^1;
  19. sbit   GREEN_ZHU  =  P1^2;
  20. sbit   RED_ZHI    =  P1^3;
  21. sbit   YELLOW_ZHI =  P1^4;
  22. sbit   GREEN_ZHI  =  P1^5;
  23. uint aa, bai,shi,ge,bb; //定義變量
  24. /*數(shù)碼管顯示0-9*/
  25. uint code table[]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f};
  26. /*子函數(shù)聲明*/
  27. void  delay(uint z);
  28. void  delay0(uint z);
  29. //void  init(uint a);
  30. void  display(uint ge,uint shi);
  31. void  xtimer0();
  32. void  init1();
  33. void  init2();
  34. void  init3();
  35. void  init4();
  36. void  init5();
  37. void xint1();
  38. void xint0();
  39. void  LED_ON();
  40. void  LED_OFF();
  41. /*********************************************************
  42.    主函數(shù)
  43. *********************************************************/
  44. void main()
  45. {       
  46.         P0=0XFF;
  47.         P1=0xFF;
  48.            P2=0xFF;
  49.         EA=1;//打開外部中斷
  50.         EX1=1;//允許外部中斷1中斷
  51.         IT1=0;//INT0為沿觸發(fā)方式
  52.           init1();
  53.   while(1)
  54.   {
  55.                   init2();//第2個狀態(tài)
  56.                 init3(); //第3個狀態(tài)
  57.                 init4(); //第4個狀態(tài)
  58.                  init5();//第5個狀態(tài)       
  59.   }
  60. }

  61. void  init1()//第一個狀態(tài):主干道、支干道均亮紅燈5S
  62. {
  63.         uint temp;
  64.         temp=6;//變量賦初值
  65.         TMOD=0x01;//定時器0工作于方式1
  66.         TH0=0x4c;
  67.         TL0=0x00;//定時器賦初值
  68.         EA=1;//開外部中斷
  69.         ET0=1;//開定時中斷
  70.         TR0=1;//開定時器0
  71.         while(1)
  72.         {
  73.                 RED_ZHU=0;              //第一個狀態(tài)主干道、支干道均亮紅燈5S
  74.                    RED_ZHI=0;
  75.                 GREEN_ZHU=1;
  76.                 GREEN_ZHI=1;
  77.                 YELLOW_ZHU=1;
  78.                 YELLOW_ZHI=1;
  79.                 if(aa==20)//定時20*50MS=1S
  80.                 {
  81.                         aa=0;//定時完成一次后清0
  82.                         temp--;//變量自增
  83.                         //delay(10);
  84.                         if(temp>250)//定時100S
  85.                         {
  86.                                 temp=6;//變量清0
  87.                                 break;
  88.                         }
  89.                         shi=temp%100/10;//顯示十位
  90.                         ge=temp%10;//顯示個位         
  91.                 }
  92.                 display(ge,shi);
  93.         }
  94. }

  95. void  init2()//第二個狀態(tài):主干道亮綠燈30S、支干道亮紅燈
  96. {
  97.         uint temp;
  98.         temp=31;//變量賦初值
  99.         TMOD=0x01;//定時器0工作于方式1
  100.         TH0=0x4c;
  101.         TL0=0x00;//定時器賦初值
  102.         EA=1;//開外部中斷
  103.         ET0=1;//開定時中斷
  104.         TR0=1;//開定時器0
  105.         while(1)
  106.         {         
  107.                 RED_ZHU=1;
  108.                 RED_ZHI=0;
  109.                 GREEN_ZHU=0;
  110.                 GREEN_ZHI=1;
  111.                 YELLOW_ZHU=1;//第二個狀態(tài):主干道亮綠燈30S、支干道亮紅燈
  112.                    YELLOW_ZHI=1;
  113.                
  114.                 if(aa==20)//定時20*50MS=1S
  115.                 {
  116.                         aa=0;//定時完成一次后清0
  117.                         temp--;//變量自增
  118.                         if(temp==3)//定時100S
  119.                         {
  120.                                 temp=30;//變量清0
  121.                                 break;
  122.                         }
  123.                         shi=temp%100/10;//顯示十位
  124.                         ge=temp%10;//顯示個位
  125.                 }
  126.                 display(ge,shi);
  127.         }
  128. }

  129. void  init3() //第三個狀態(tài):主干道綠燈閃3次轉(zhuǎn)亮黃燈、支干道亮紅燈3S
  130. {
  131.         uint temp;
  132.         temp=4;//變量賦初值
  133.         TMOD=0x01;//定時器0工作于方式1
  134.         TH0=0x4c;
  135.         TL0=0x00;//定時器賦初值
  136.         EA=1;//開外部中斷
  137.         ET0=1;//開定時中斷
  138.         TR0=1;//開定時器0
  139.         while(1)
  140.         {
  141.                 RED_ZHI=0;
  142.                 GREEN_ZHU=1;
  143.                 //YELLOW_ZHU=~YELLOW_ZHU;
  144.                 if(aa==20)//定時20*50MS=1S
  145.                 {
  146.                         aa=0;//定時完成一次后清0
  147.                         temp--;//變量自增
  148.                         YELLOW_ZHU=~YELLOW_ZHU;
  149.                         if(temp>200)//定時100S
  150.                         {
  151.                                 temp=4;//變量清0
  152.                                 break;
  153.                         }
  154.                         shi=temp%100/10;//顯示十位
  155.                         ge=temp%10;//顯示個位         
  156.                 }
  157.                 display(ge,shi);;
  158.         }
  159. }
  160. void  init4()//第四個狀態(tài):主干道亮紅燈、支干道亮綠燈25S
  161. {
  162.         uint temp;
  163.         temp=26;//變量賦初值
  164.         TMOD=0x01;//定時器0工作于方式1
  165.         TH0=0x4c;
  166.         TL0=0x00;//定時器賦初值
  167.         EA=1;//開外部中斷
  168.         ET0=1;//開定時中斷
  169.         TR0=1;//開定時器0
  170.         while(1)
  171.         {       
  172.                 RED_ZHU=0;
  173.                 RED_ZHI=1;
  174.                 YELLOW_ZHU=1;//第一個狀態(tài)主干道、支干道均亮紅燈5S
  175.                    GREEN_ZHI=0;
  176.                 if(aa==20)//定時20*50MS=1S
  177.                 {
  178.                         aa=0;//定時完成一次后清0
  179.                         temp--;//變量自增
  180.                         if(temp==3)//定時100S
  181.                         {
  182.                                 temp=25;//變量清0
  183.                                 break;
  184.                         }
  185.                         shi=temp%100/10;//顯示十位
  186.                         ge=temp%10;//顯示個位         
  187.                 }
  188.                 display(ge,shi);
  189.         }
  190. }

  191. void  init5()//第五個狀態(tài):主干道亮紅燈、支干道綠燈閃3次轉(zhuǎn)亮黃燈3S
  192. {
  193.         uint temp;
  194.         temp=4;//變量賦初值
  195.         TMOD=0x01;//定時器0工作于方式1
  196.         TH0=0x4c;
  197.         TL0=0x00;//定時器賦初值
  198.         EA=1;//開外部中斷
  199.         ET0=1;//開定時中斷
  200.         TR0=1;//開定時器0
  201.         while(1)
  202.         {
  203.                 RED_ZHI=1;
  204.                 RED_ZHU=0;
  205.                 GREEN_ZHU=1;
  206.                 GREEN_ZHI=1;
  207.                 //YELLOW_ZHI=~YELLOW_ZHI;
  208.                 if(aa==20)//定時20*50MS=1S
  209.                 {
  210.                         aa=0;//定時完成一次后清0
  211.                         temp--;//變量自增
  212.                         YELLOW_ZHI=~YELLOW_ZHI;
  213.                         if(temp>200)//定時100S
  214.                         {
  215.                                 temp=4;//變量清0
  216.                                 break;
  217.                         }
  218.                         shi=temp%100/10;//顯示十位
  219.                         ge=temp%10;//顯示個位         
  220.                 }
  221.                 display(ge,shi);
  222.         }
  223. }               
  224. /*顯示子函數(shù)*/
  225. void  display(uint ge,uint shi)
  226. {
  227.         P0=0xfd;
  228.         P2=table[shi];//顯示十位
  229.         delay0(5);
  230.         P0=0xfe;
  231.         P2=table[ge];//顯示個位
  232.         delay0(5);

  233. }
  234. void  xint0()  interrupt  2 //外部中斷1,這里用2是INT1的優(yōu)先級為0
  235. {
  236.         LED_ON();
  237.        
  238. }

  239. void  LED_ON()//外部中斷0顯示子程序
  240. {
  241.                         RED_ZHI=0;
  242.                         RED_ZHU=0;
  243.                         GREEN_ZHI=1;
  244.                         GREEN_ZHU=1;
  245.                     YELLOW_ZHI=1;
  246.                         YELLOW_ZHU=1;
  247.                         delay0(1000);
  248.                         return ;
  249.        
  250. }
  251. /*定時中斷子函數(shù)*/
  252. void  xtimer0()  interrupt 1
  253. {
  254.         TH0=0x4c;
  255.         TL0=0x00;
  256.         aa++;
  257. }
  258. /*延時子函數(shù)*/
  259. void  delay0(uint z)
  260. {
  261.         uint i,j;
  262.         for(i=0;i<z;i++)
  263.                 for(j=0;j<110;j++);
  264. }

  265. /*********************************************************
  266.    500ms延時函數(shù)
  267.    晶振:11.0592MHz
  268. *********************************************************/
  269. void delay(unsigned char j)
  270. {
  271.    unsigned char k;
  272.    unsigned int i;
  273.    for(;j>0;j--)
  274.   {
  275.      for(i=1250;i>0;i--)
  276.      {
  277.        for(k=180;k>0;k--);
  278.      }
  279.    }
  280. }
復(fù)制代碼




51Protues.rar (64.1 KB, 下載次數(shù): 31)


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

使用道具 舉報

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

本版積分規(guī)則

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

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

快速回復(fù) 返回頂部 返回列表
主站蜘蛛池模板: 天天操天天舔 | 国产亚洲精品精品国产亚洲综合 | 国产一级毛片视频 | 欧美精品一级 | 亚洲精品电影网在线观看 | 国产精品区一区二 | 午夜视频在线播放 | 免费麻豆视频 | 在线观看视频h | 亚洲免费片 | 中文字幕免费在线 | 国产精品爱久久久久久久 | 精品日韩一区二区 | 国产精品69毛片高清亚洲 | 成人精品一区二区三区四区 | 免费不卡视频 | 人妖videosex高潮另类 | 成人午夜在线 | 精品欧美一区二区久久久伦 | 手机av在线| 99精品在线| 精品久久久久久久久久久久 | 精品久久久久一区二区国产 | 国产精品高潮呻吟 | 精品av久久久久电影 | 久久久91精品国产一区二区三区 | www.99re | 午夜精品视频在线观看 | 日韩国产一区二区三区 | 国产一区不卡 | 欧美成人免费在线 | 波多野结衣中文视频 | 色橹橹欧美在线观看视频高清 | 成人网av| 欧美精品v| 爱草在线 | 欧美激情综合 | 2019天天操| 四虎影院美女 | 欧美精品日韩精品国产精品 | 中文字幕一区在线观看视频 |