找回密码
 立即注册

QQ登录

只需一步,快速开始

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

LED模拟交通灯(带左转向)proteus仿真与单片机源码

[复制链接]
跳转到指定楼层
楼主
交通灯运行一周耗时40秒,运行情况是东西方向绿灯亮10秒后灭,黄灯闪烁3秒后灭,左转向灯亮4秒后灭,黄灯闪烁3秒后灭,红灯亮20秒
南北方向交通灯运行情况是红灯亮20秒后灭,绿灯亮10秒后灭,黄灯闪烁3秒后灭
左转向灯亮4秒后灭,黄灯闪烁3秒

仿真原理图如下(proteus仿真工程文件可到本帖附件中下载)


单片机源程序如下:
  1. #include <reg52.h>
  2. #define uchar unsigned char
  3. #define uint unsigned int

  4. sbit RED_A=P0^0;
  5. sbit YELLOW_A=P0^1;
  6. sbit GREEN_A=P0^2;
  7. sbit LEFT_A=P2^0;
  8. sbit RED_B=P0^3;
  9. sbit YELLOW_B=P0^4;
  10. sbit GREEN_B=P0^5;
  11. sbit LEFT_B=P2^1;

  12. uchar Flash_Count = 0;
  13. Operation_Type = 1;

  14. void DelayMS(uint x)
  15. {
  16.         uchar t;
  17.         while(x--)
  18.         {
  19.                  for(t=120;t>0;t--);
  20.         }
  21. }

  22. void Traffic_lignt()
  23. {
  24.         switch(Operation_Type)
  25.         {
  26.                  case 1:
  27.                         RED_A=1;YELLOW_A=1;GREEN_A=0;LEFT_A=1;
  28.                         RED_B=0;YELLOW_B=1;GREEN_B=1;LEFT_B=1;
  29.                         DelayMS(10000);
  30.                         Operation_Type = 2;
  31.                         break;
  32.                 case 2:
  33.             GREEN_A=1;
  34.                         DelayMS(300);
  35.                         YELLOW_A=~YELLOW_A;
  36.                         if(++Flash_Count !=10)
  37.                                 return;
  38.                         Flash_Count=0;
  39.                         Operation_Type = 3;
  40.                         break;
  41.                 case 3:
  42.                         RED_A=1;YELLOW_A=1;GREEN_A=1;LEFT_A=0;
  43.                 //        RED_B=0;YELLOW_B=1;GREEN_B=1;LEFT_B=1;
  44.                         DelayMS(4000);
  45.                         Operation_Type = 4;
  46.                         break;       
  47.         case 4:
  48.                         LEFT_A=1;
  49.             DelayMS(300);
  50.                         YELLOW_A=~YELLOW_A;
  51.                         if(++Flash_Count !=10)
  52.                                 return;
  53.                         Flash_Count=0;
  54.                         Operation_Type = 5;
  55.                         break;       

  56.         case 5:
  57.             RED_A=0;YELLOW_A=1;GREEN_A=1;LEFT_A=1;
  58.             RED_B=1;YELLOW_B=1;GREEN_B=0;LEFT_B=1;
  59.             DelayMS(10000);
  60.                         Operation_Type = 6;
  61.                         break;
  62.         case 6:
  63.                    GREEN_B=1;  
  64.             DelayMS(300);
  65.                         YELLOW_B=~YELLOW_B;
  66.                         if(++Flash_Count !=10)
  67.                                 return;
  68.                         Flash_Count=0;
  69.             Operation_Type = 7;
  70.                         break;
  71.          case 7:
  72.          //  RED_A=0;YELLOW_A=1;GREEN_A=1;LEFT_A=1;
  73.            RED_B=1;YELLOW_B=1;GREEN_B=1;LEFT_B=0;
  74.            DelayMS(4000);
  75.            Operation_Type = 8;
  76.                    break;
  77.         case 8:
  78.             LEFT_B=1;
  79.            // RED_A=0;YELLOW_A=1;GREEN_A=1;LEFT_A=1;       
  80.             DelayMS(300);
  81.                         YELLOW_B=~YELLOW_B;
  82.                         if(++Flash_Count !=10)
  83.                                 return;
  84.                         Flash_Count=0;
  85.             Operation_Type = 1;
  86. ……………………

  87. …………限于本文篇幅 余下代码请从51黑下载附件…………
复制代码

所有资料51hei提供下载:
LED模拟交通灯(带左转向).zip (70.12 KB, 下载次数: 46)





评分

参与人数 1黑币 +50 收起 理由
admin + 50 共享资料的黑币奖励!

查看全部评分

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

使用道具 举报

沙发
ID:455395 发表于 2019-1-4 11:59 | 只看该作者
都是错误还发什么
回复

使用道具 举报

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

本版积分规则

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

Powered by 单片机教程网

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