找回密码
 立即注册

QQ登录

只需一步,快速开始

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

可拓展功能交通灯 单片机程序

[复制链接]
跳转到指定楼层
楼主
简易交通灯
  1. #include <reg51.h>
  2. sbit dred=P0^0;
  3. sbit dyellow=P0^1;
  4. sbit dgreen=P0^2;
  5. sbit nred=P0^3;
  6. sbit nyellow=P0^4;
  7. sbit ngreen=P0^5;
  8. sbit led3=P2^2;
  9. unsigned char rtime,ytime,gtime;
  10. unsigned char code table[]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f,0x77,0x7c,0x39,0x5e,0x79,0x71};
  11. unsigned char flag;
  12. void display(unsigned char a);
  13. void delay();
  14. void main()
  15. {
  16. TMOD=0x01;
  17. TH0=0x3c;
  18. TL0=0xb0;
  19. ET0=1;EA=1;TR0=1;
  20. flag=1;
  21. rtime=60;
  22. ytime=15;
  23. gtime=30;
  24. while(1)
  25. {if(flag==1)
  26. {display(rtime);
  27. dred=1;dyellow=1;dgreen=0;
  28. nred=0;nyellow=1;ngreen=1;}
  29. if(flag==2)
  30. {display(ytime);
  31. dred=1;dyellow=0;dgreen=1;
  32. nred=0;nyellow=1;ngreen=1;}
  33. if(flag==3)
  34. {display(gtime);
  35. dred=0;dyellow=1;dgreen=1;
  36. nred=1;nyellow=1;ngreen=0;}
  37. if(flag==4)
  38. {display(ytime);
  39. dred=0;dyellow=1;dgreen=1;
  40. nred=1;nyellow=0;ngreen=1;}
  41. if(flag==5)
  42. {display(ytime);
  43. dred=1;dyellow=0;dgreen=1;
  44. nred=1;nyellow=0;ngreen=1;}
  45. }}


  46. void display(unsigned char a)
  47. {
  48. unsigned char ge,shi,i;
  49. ge=a%10;
  50. shi=a/10%10;
  51. for(i=0;i<2;i++)
  52. {
  53. P2=0xfd;
  54. P1=table[ge];
  55. delay();
  56. P2=0xff;
  57. P2=0xfe;
  58. P1=table[shi];
  59. delay();
  60. P2=0xff;}}
  61. void delay()
  62. {
  63. unsigned char i;
  64. for(i=0;i<200;i++);
  65. }
  66. void time0()interrupt 1
  67. {
  68. unsigned char n;
  69. TH0=0x3c;
  70. TL0=0xb0;
  71. n=n+1;

  72. if(n==20)
  73. {      n=0;

  74. if(led3==0)
  75. {
  76.   flag=5;
  77.        }
  78.    
  79.         if(flag==5)
  80.         {
  81.            if(ytime==0)
  82.          {flag=1;rtime=15;}
  83.          else                        
  84.           {ytime=ytime-1;flag=5;} }

  85.         if(flag==1)
  86.         {
  87.            if(rtime==0)
  88.          {flag=2;ytime=15;}
  89.          else                        
  90.           {rtime=rtime-1;flag=1;} }
  91.         if(flag==2)
  92.         { if(ytime==0)
  93.          {flag=3;gtime=30;}
  94.           else
  95.          {ytime=ytime-1;flag=2; }}
  96. if(flag==3)
  97. {  
  98.        if(gtime==0)
  99.           {flag=4;ytime=15;}
  100.         else
  101.          {gtime=gtime-1; flag=3;} }
  102. if(flag==4)
  103. {   
  104.          if(ytime==0)
  105.           {flag=1;rtime=60;}
  106.        else
  107.          {ytime=ytime-1; flag=4;}
  108.     }
  109. }
  110. }
复制代码

可拓展功能交通灯.rar (39.71 KB, 下载次数: 5)
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏1 分享淘帖 顶 踩
回复

使用道具 举报

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

本版积分规则

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

Powered by 单片机教程网

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