找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
查看: 1355|回复: 2
打印 上一主题 下一主题
收起左侧

单片机交通灯怎么让黄灯全亮的同时让他们一直闪烁?

[复制链接]
跳转到指定楼层
楼主
ID:925300 发表于 2021-5-22 10:51 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式

请问怎么让黄灯全亮的同时让他们一直闪烁

  1. #include <reg51.h>
  2. #define uchar  unsigned char
  3. uchar  a[10]={0x3F,0x06,0x5B,0x4F,0x66,
  4. 0x6D,0x7D,0x07,0x7F,0x6F};                             
  5. uchar  b[4]={0x0D,0x0E,0x07,0x0B};               
  6. uchar  c[4]={0x3A,0x36,0x5C,0x6C};               
  7. uchar NS=25,EW=30;                              
  8. uchar NS_G=25,EW_G=15,Y=5;                     
  9. uchar i,k=0,count=0;      
  10. void   delay(uchar);
  11. void trafic_light();                             
  12. void led_display();                              
  13. sbit  key_end=P3^5;                              
  14. sbit nt=P3^2;

  15. void init(void)
  16. {
  17.         TMOD=0x01;                                    
  18.         TH0=(65536-50000)/256;                        
  19.         TL0=(65536-50000)%256;                        
  20.         ET0=1;                                         
  21.         TR0=1;                                         
  22.         EX1=1;                                         
  23.         EA=1;                                          
  24.         EX0=1;                                         
  25. }

  26. //ò1???£ê?ía2??D??0£?P3
  27. void int0(void) interrupt 0                     
  28. {
  29.         while(1)
  30.         {
  31.                 P1=0xE7,P0=a[9];                              
  32.                
  33.                 EA=0;                                          
  34.                 TR0=!TR0;                                      
  35.                 while(1)
  36.                 {
  37.                         for(i=0;i<4;i++)
  38.                         {
  39.                                 P2=b[i];
  40.                                 delay(1);
  41.                         }

  42.                         if(key_end==0)                              
  43.                         {
  44.                                 delay(10);
  45.                                 if(key_end==0)
  46.                                 {
  47.                                         while(!key_end)
  48.                                         {
  49.                                                 for(i=0;i<4;i++)
  50.                                                 {
  51.                                                         P2=b[i];
  52.                                                         delay(1);
  53.                                                 }
  54.                                         }
  55.                                         EA=1;
  56.                                         TR0=!TR0;
  57.                                         break;
  58.                                 }
  59.                         }
  60.           }
  61. }
  62. }


  63. void int1(void) interrupt 2                     
  64. {
  65.         P1=0x3C,P0=a[9];                              
  66.         EA=0;                                          
  67.         TR0=!TR0;                                      
  68.         while(1)
  69.         {
  70.                 for(i=0;i<4;i++)
  71.                 {
  72.                         P2=b[i];
  73.                         delay(1);
  74.                 }

  75.                 if(key_end==0)                              
  76.                 {
  77.                         delay(10);
  78.                         if(key_end==0)
  79.                         {
  80.                                 while(!key_end)
  81.                                 {
  82.                                         for(i=0;i<4;i++)
  83.                                         {
  84.                                                 P2=b[i];
  85.                                                 delay(1);
  86.                                         }
  87.                                 }
  88.                                 EA=1;
  89.                                 TR0=!TR0;
  90.                                 break;
  91.                         }
  92.                 }
  93.         }
  94. }


  95. void time1(void) interrupt 1                     
  96. {
  97.         TH0=(65536-50000)/256;                        
  98.         TL0=(65536-50000)%256;                        
  99.         count++;        
  100.         if(count>=20)                                 
  101.         {
  102.                 NS--;
  103.                 EW--;
  104.                 count=0;
  105.                 if(NS==0||EW==0)                             
  106.                 {
  107.                         k++;
  108.                         if(k>3)
  109.                         k=0;
  110.                         switch(k)
  111.                         {
  112.                                 case 0:NS=NS_G;
  113.                                 EW=NS_G+Y;
  114.                                 break;                                   
  115.                                 case 1:NS=Y;
  116.                                 EW=Y;
  117.                                 break;                                   
  118.                                 case 2:NS=EW_G+Y;
  119.                                 EW=EW_G;
  120.                                 break;                                   
  121.                                 case 3:NS=Y;
  122.                                 EW=Y;
  123.                                 break;                                   
  124.                         }
  125.                 }
  126.         }
  127. }


  128. void  delay(uchar t )
  129. {
  130.         uchar j,k;      
  131.         for(j=0;j<t;j++)         
  132.         {
  133.           for(k=0;k<255;k++){}  
  134.         }
  135. }


  136. void  trafic_light()                             
  137. {
  138.         P1=c[k];                                       
  139.         if(P1==c[1]&&count==0)                        
  140.         {
  141.          P1=0x3E;
  142.         }
  143.         else
  144.         if(P1==c[3]&&count==0)                        
  145.         {
  146.           P1=0x7C;
  147.         }
  148. }


  149. void led_display()            
  150. {
  151.         P2=b[0];
  152.         P0=a[NS%10];                                   
  153.         delay(5);

  154.         P2=b[1];
  155.         P0=a[NS/10];                                   
  156.         delay(5);

  157.         P2=b[2];
  158.         P0=a[EW%10];                                   
  159.         delay(5);

  160.         P2=b[3];
  161.         P0=a[EW/10];                                   
  162.         delay(5);
  163. }


  164. void main(void)
  165. {
  166.         init();                                         
  167.         while(1)
  168.         {
  169.                 trafic_light();                              
  170.                 led_display();                              
  171.         }
  172. }
复制代码
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享淘帖 顶 踩
回复

使用道具 举报

沙发
ID:332444 发表于 2021-5-22 17:28 | 只看该作者
回复

使用道具 举报

板凳
ID:332444 发表于 2021-5-22 17:29 | 只看该作者
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

手机版|小黑屋|51黑电子论坛 |51黑电子论坛6群 QQ 管理员QQ:125739409;技术交流QQ群281945664

Powered by 单片机教程网

快速回复 返回顶部 返回列表