找回密码
 立即注册

QQ登录

只需一步,快速开始

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

51单片机交通灯程序+电路图

[复制链接]
跳转到指定楼层
楼主

  1. #include<reg51.h>
  2. #include<intrins.h>
  3. void delay1s(unsigned char k);
  4. void main(void)
  5. {
  6. SP=0x60;
  7. TMOD=0x01;
  8. IE=0x85;
  9. TCON=0x05;
  10. while(1)
  11. {
  12. P1=0x21; //东西方向绿灯;南北方向红灯20s.
  13. delay1s(40);
  14. P1=0x41; //东西方向黄灯;南北方向红灯3s.
  15. delay1s(6);
  16. P1=0x12; //南北方向绿灯;东西方向红灯20s.
  17. delay1s(40);
  18. P1=0x14; //南北方向黄灯;东西方向红灯20s.
  19. delay1s(6);
  20. }
  21. }
  22. //东西方向异常;东西方向绿灯闪烁;南北方向红灯闪烁;60s;
  23. void int_0(void) interrupt 0
  24. {
  25. unsigned char i1,i2;
  26. i1=P1;
  27. for(i2=0;i2<60;i2++)
  28. {
  29. P1=0x21;
  30. delay1s(1);
  31. P1=0x00;
  32. delay1s(1);
  33. }
  34. P1=i1;
  35. }
  36. //南北方向异常;南北方向绿灯闪烁;东西方向红灯闪烁;60s;
  37. int_1(void) interrupt 2
  38. {
  39. unsigned char j1,j2;
  40. j1=P1;
  41. for(j2=0;j2<60;j2++)
  42. {
  43. P1=0x12;
  44. delay1s(1);
  45. P1=0x00;
  46. delay1s(1);
  47. }
  48. P1=j1;
  49. }
  50. //延时函数
  51. void delay1s(unsigned char m)
  52. {
  53. unsigned char k1,k2;
  54. TH0=0x3c;TL0=0xB0;
  55. TR0=1;
  56. for(k1=0;k1<m;k1++)
  57. {
  58. for(k2=0;k2<10;k2++)
  59. {while(!TF0);
  60. TF0=0;
  61. TH0=0x3c;TL0=0xB0;
  62. }
  63. }
  64. }#include<reg51.h>
  65. #include<intrins.h>
  66. void delay1s(unsigned char k);
  67. void main(void)
  68. {
  69. SP=0x60;
  70. TMOD=0x01;
  71. IE=0x85;
  72. TCON=0x05;
  73. while(1)
  74. {
  75. P1=0x21; //东西方向绿灯;南北方向红灯20s.
  76. delay1s(40);
  77. P1=0x41; //东西方向黄灯;南北方向红灯3s.
  78. delay1s(6);
  79. P1=0x12; //南北方向绿灯;东西方向红灯20s.
  80. delay1s(40);
  81. P1=0x14; //南北方向黄灯;东西方向红灯20s.
  82. delay1s(6);
  83. }
  84. }
  85. //东西方向异常;东西方向绿灯闪烁;南北方向红灯闪烁;60s;
  86. void int_0(void) interrupt 0
  87. {
  88. unsigned char i1,i2;
  89. i1=P1;
  90. for(i2=0;i2<60;i2++)
  91. {
  92. P1=0x21;
  93. delay1s(1);
  94. P1=0x00;
  95. delay1s(1);
  96. }
  97. P1=i1;
  98. }
  99. //南北方向异常;南北方向绿灯闪烁;东西方向红灯闪烁;60s;
  100. int_1(void) interrupt 2
  101. {
  102. unsigned char j1,j2;
  103. j1=P1;
  104. for(j2=0;j2<60;j2++)
  105. {
  106. P1=0x12;
  107. delay1s(1);
  108. P1=0x00;
  109. delay1s(1);
  110. }
  111. P1=j1;
  112. }
  113. //延时函数
  114. void delay1s(unsigned char m)
  115. {
  116. unsigned char k1,k2;
  117. TH0=0x3c;TL0=0xB0;
  118. TR0=1;
  119. for(k1=0;k1<m;k1++)
  120. {
  121. for(k2=0;k2<10;k2++)
  122. {while(!TF0);
  123. TF0=0;
  124. TH0=0x3c;TL0=0xB0;
  125. }
  126. }
  127. }
复制代码



分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享淘帖 顶1 踩
回复

使用道具 举报

沙发
ID:91774 发表于 2015-10-11 19:57 | 只看该作者
程序缺少文字说明。说明最好详细点,以便于初学者学习。
回复

使用道具 举报

板凳
ID:128433 发表于 2016-6-29 09:54 | 只看该作者
很详细,值得学习
回复

使用道具 举报

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

本版积分规则

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

Powered by 单片机教程网

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