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

 找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

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

基于89c51單片機的交通燈變換程序設計

[復制鏈接]
跳轉到指定樓層
樓主
ID:437636 發(fā)表于 2018-12-2 14:16 | 只看該作者 |只看大圖 回帖獎勵 |倒序瀏覽 |閱讀模式
  利用89c51單片機進行交通燈的變換:  利用定時器T0,外部中斷0,外部中斷1。實現(xiàn)的一個可以路口交通燈轉換,并且?guī)в袞|西(南北)道路的通行禁行,用于交通擁堵時疏導道路交通
  還有當救護車通過時的緊急情況全面禁行道路的功能。
  同時進行現(xiàn)場保護,使得程序可以無限循環(huán)而不怕打斷。

正常通行狀況:





東西通行南北禁行



緊急情況全面禁行

單片機源程序如下:
  1. #include <reg51.h>
  2. #define uchar unsigned char
  3. #define uint unsigned int
  4. uint timer0=0;
  5. uint timer1=0;
  6. uint timer2=0;
  7. uint timer3=0;
  8. uchar second;
  9. uchar second1;
  10. uchar a,b,c,d,e,f,m,n,x,v,j,h;
  11. uchar code table[]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f};
  12. sbit g=P1^5;
  13. sbit y=P1^6;
  14. sbit r=P1^7;
  15. sbit G1=P3^5;
  16. sbit Y1=P3^6;
  17. sbit R1=P3^7;
  18. sbit ZUO1=P1^0;
  19. sbit YOU1=P1^1;
  20. sbit ZUO2=P1^2;
  21. sbit YOU2=P1^3;
  22. sbit key1=P3^0;
  23. sbit key2=P3^1;


  24. void delay(uint i)
  25. {
  26.         uint j,k;
  27.         for(j=0;j<i;j++)
  28.         for(k=0;k<115;k++);
  29. }


  30. void init()
  31. {
  32.         second=25;
  33.         second1=30;
  34.         TMOD=0x01;
  35.         TH0=(65536-50000)/256;
  36.         TL0=(65536-50000)%256;
  37.         EA=1;
  38.         ET0=1;
  39.         EX0=1;
  40.         IT0=1;
  41.         EX1=1;
  42.         IT1=1;
  43.         IP=0x02;
  44.         TR0=1;
  45.         a=0;
  46.         b=0;
  47.         c=10;
  48.         d=10;
  49.         e=10;
  50.         f=10;
  51. }


  52. void main()
  53. {
  54.         init();
  55.         while(1)
  56.                 {
  57. //                        P1=0x02;
  58.                         YOU1=1;ZUO1=0;ZUO2=0;YOU2=0;
  59.                         P2=~table[second/10];
  60.                         delay(10);
  61. //                        P1=0x01;
  62.                         YOU1=0;ZUO1=1;ZUO2=0;YOU2=0;
  63.                         P2=~table[second%10];
  64.                         delay(10);
  65. //                        P1=0x04;
  66.                         ZUO1=0;YOU1=0;ZUO2=1;YOU2=0;
  67.                         P0=~table[second1/10];
  68.                         delay(10);
  69. //                        P1=0x08;
  70.                         ZUO1=0;YOU1=0;ZUO2=0;YOU2=1;
  71.                         P0=~table[second1%10];
  72.                         delay(10);                       
  73.                         if(a==0)
  74.                         {g=0;r=1;}
  75.                         if(a==1)
  76.                         {y=0;g=1;}
  77.                         if(a==2)
  78.                         {r=0;y=1;}
  79.                         if(b==0)
  80.                         {R1=0;Y1=1;}
  81.                         if(b==1)
  82.                         {G1=0;R1=1;}
  83.                         if(b==2)
  84.                         {Y1=0;G1=1;}
  85.                 }
  86. }


  87. void T_0timer0() interrupt 1
  88. {                              
  89.                                 TH0=(65536-50000)/256;
  90.                                 TL0=(65536-50000)%256;
  91.                                 if(a==0)
  92.                                         {
  93.                                                 timer0++;
  94.                                                 if(timer0==15)
  95.                                                 {
  96.                                                         timer0=0;
  97.                                                         second--;
  98.                                                 }
  99.                                                 if(second==0)
  100.                                                 {
  101.                                                         second=5;
  102.                                                         a=1;
  103.                                                         timer0=0;
  104.                                                       
  105.                                                 }
  106.                                         }
  107.                                         if(a==1)
  108.                                         {
  109.                                                
  110.                                                 timer0++;
  111.                                                 if(timer0==15)
  112.                                                 {
  113.                                                         timer0=0;
  114.                                                         second--;
  115.                                                 }
  116.                                                 if(second==0)
  117.                                                 {
  118.                                                         second=20;
  119.                                                         timer0=0;
  120.                                                         a=2;
  121.                                                       
  122.                                                 }
  123.                                         }
  124.                                         if(a==2)
  125.                                         {
  126.                                        
  127.                                                 timer0++;
  128.                                                 if(timer0==15)
  129.                                                 {
  130.                                                         timer0=0;
  131.                                                         second--;
  132.                                                 }
  133.                                                 if(second==0)
  134.                                                 {
  135.                                                         a=3;
  136.                                                
  137.                                                 }
  138.                                         }
  139.                                         if(a==3)
  140.                                         {
  141.                                                 a=0;
  142.                                                 second=25;
  143.                                         }
  144.                                         if(b==0)
  145.                                         {
  146.                                                 timer1++;
  147.                                                 if(timer1==15)
  148.                                                 {
  149.                                                         timer1=0;
  150.                                                         second1--;
  151.                                                 }
  152.                                                 if(second1==0)
  153.                                                 {
  154.                                                         second1=15;
  155.                                                         b=1;
  156.                                                         timer1=0;      
  157.                                                 }
  158.                                         }
  159.                                         if(b==1)
  160.                                         {
  161.                                                 timer1++;
  162.                                                 if(timer1==15)
  163.                                                 {
  164.                                                         timer1=0;
  165.                                                         second1--;
  166.                                                 }
  167.                                                 if(second1==0)
  168.                                                 {
  169.                                                         second1=5;
  170.                                                         timer1=0;
  171.                                                         b=2;
  172.                                                 }
  173.                                         }
  174.                                         if(b==2)
  175.                                         {
  176.                                                 timer1++;
  177.                                                 if(timer1==15)
  178.                                                 {
  179.                                                         timer1=0;
  180.                                                         second1--;
  181.                                                 }
  182.                                                 if(second1==0)
  183.                                                 {
  184.                                                         b=3;
  185.                                                 }
  186.                                         }
  187.                                         if(b==3)
  188.                                         {
  189.                                                 b=0;
  190.                                                 second1=30;
  191.                                         }
  192.                                         if(c==0)
  193.                                         {
  194.                                                 timer2++;
  195.                                                 if(timer2==15)
  196.                                                 {
  197.                                                         timer2=0;
  198.                                                         second--;
  199.                                                 }
  200.                                                 if(second==0)
  201.                                                 {
  202.                                                         c=0;d=0;
  203.                                                         second=j;second1=h;
  204.                                                 }
  205.                                         }
  206.       
  207.                                         if(d==0)
  208.                                         {
  209.                                                 timer2++;
  210.                                                 if(timer2==15)
  211.                                                 {
  212.                                                         timer2=0;
  213.                                                         second1--;
  214.                                                 }
  215.                                         }
  216.                                         if(e==0)
  217.                                         {
  218.                                                 timer3++;
  219.                                                 if(timer3==15)
  220.                                         {
  221.                                                 timer3=0;
  222.                                                 second--;
  223.                                         }
  224.                                                 if(second==0)
  225.                                         {
  226.                                                 a=m;b=n;
  227.                                                 e=10;f=10;
  228.                                                 second=v;second1=x;
  229.                                         }
  230.                                         if(f==0)
  231.                                         {
  232.                                                 timer3++;
  233.                                                 if(timer3==15)
  234.                                                 {
  235.                                                         timer3=0;
  236.                                                         second1--;
  237.                                                 }
  238.                                         }
  239.                                 }
  240. }


  241. void waibu1(void) interrupt 2
  242. {
  243.         TR0=0;
  244.         if(key1==0)
  245.         {
  246.                         TR0=0;
  247.                         j=second;h=second1;
  248.                         second=20;
  249.                         second1=20;
  250.                         a=10;b=10;
  251.                         c=0;d=0;
  252.                         e=10;f=10;
  253.                         TR0=1;
  254.                         g=1;r=0;y=1;
  255.                         G1=0;R1=1;Y1=1;      
  256.         }
  257.         if(key2==0)
  258.         {
  259.                         TR0=0;
  260.                         j=second;h=second1;
  261.                         second=20;
  262.                         second1=20;
  263.                         a=10;b=10;
  264.                         c=0;d=0;
  265.                         e=10;f=10;
  266.                         TR0=1;
  267.                         g=0;r=1;y=1;
  268.                         G1=1;R1=0;Y1=1;
  269.                 }
  270. }


  271. void waibu0(void) interrupt 0
  272. {
  273.                         TR0=0;
  274.                         m=a;n=b;v=second;x=second1;
  275.                         second=20;
  276.                         second1=20;               
  277.                         a=10;b=10;
  278.                         c=10;d=10;
  279.                         e=0;f=0;
  280.                         EX0=0;
  281.                         EX1=0;
  282.                         TR0=1;
  283.                         g=1;r=0;y=1;
  284.                         G1=1;R1=0;Y1=1;               
  285. }
復制代碼


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

使用道具 舉報

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

本版積分規(guī)則

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

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

快速回復 返回頂部 返回列表
主站蜘蛛池模板: 国产免费一级一级 | 六月成人网 | 久久综合狠狠综合久久综合88 | 国产日韩欧美 | 中文字幕91 | 亚洲一区二区三区 | 激情五月婷婷 | 亚洲aⅴ一区二区 | 久久精品视频99 | 男人阁久久 | 亚av在线| 在线一区| 免费激情网站 | 成年人黄色小视频 | 国产视频福利在线观看 | 中文在线a在线 | 精品影院| 国产成人免费视频网站高清观看视频 | 艹逼网 | 91在线精品秘密一区二区 | xx视频在线 | 成年无码av片在线 | 九九热在线视频观看这里只有精品 | 日本天堂一区 | 欧美8一10sex性hd | 日韩成人av在线 | 日韩一区二区久久 | 91超碰caoporn97人人 | 亚洲 欧美 另类 综合 偷拍 | 日韩 国产 在线 | 久久久精品一区二区三区四季av | 超碰人人做 | 欧美中文字幕一区 | 日本视频在线 | 99久久婷婷| 欧美一区免费 | 国产一区二区久久 | 97免费在线视频 | 欧美日韩一区二区三区四区 | 日韩精品一区二区三区中文字幕 | 在线看片国产精品 |