找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
查看: 3269|回复: 2
收起左侧

LED灯模拟交通灯的简单单片机仿真

[复制链接]
ID:137190 发表于 2016-9-25 15:35 | 显示全部楼层 |阅读模式
0.png 0.png
单片机交通灯所有资料下载:
LED模拟交通灯.rar (45.06 KB, 下载次数: 24)


源程序:
  1. #include<reg51.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 RED_B=P0^3;
  8. sbit YELLOW_B=P0^4;
  9. sbit GREEN_B=P0^5;//南北向灯
  10. uchar Flash_Count=0,a=1; //闪烁次数,操作类型变量
  11. void delay(uint x)   
  12. {    uchar i;
  13.      while(x--)
  14.      {   
  15.           for(i=0;i<120;i++);
  16.      }
  17. }
  18.                                      //延时
  19. void Traffic_Light()
  20. {
  21.      switch(a)
  22.      {            
  23.                 case 1://东西向绿灯与南北向红灯亮
  24.                                       RED_A=1;YELLOW_A=1;GREEN_A=0;
  25.                                 RED_B=0;YELLOW_B=1;GREEN_B=1;
  26.                                         delay(2000);
  27.                                         a=2;
  28.                                         break;
  29.                         case 2://东西向黄灯闪烁,绿灯关闭
  30.                                 delay(300);
  31.                                       YELLOW_A=~YELLOW_A;GREEN_A=1;
  32.                     if(++Flash_Count!=10)//闪烁5 次
  33.                        return;
  34.                                         Flash_Count=0;
  35.                                           a=3;
  36.                                         break;
  37.                         case 3://东西向红灯亮,南北向绿灯亮
  38.                                 RED_A=0;YELLOW_A=1;GREEN_A=1;
  39.                                 RED_B=1;YELLOW_B=1;GREEN_B=0;
  40.                                         delay(2000);
  41.                                         a=4;
  42.                                         break;
  43.                         case 4://南北向黄灯闪烁5次,绿灯关闭
  44.                                 delay(300);
  45.                                       YELLOW_B=~YELLOW_B;GREEN_B=1;
  46.                     if(++Flash_Count!=10)//闪烁5 次
  47.                                         return;
  48.                                         Flash_Count=0;
  49.                                         a=1;
  50.           }
  51. }
  52. void main()
  53. {
  54.      while(1)
  55.      {
  56.            Traffic_Light();
  57.      }
  58. }
复制代码



回复

使用道具 举报

ID:214452 发表于 2017-6-26 14:10 | 显示全部楼层
有程序框图吗?
回复

使用道具 举报

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

本版积分规则

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

Powered by 单片机教程网

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