找回密码
 立即注册
查看: 808|回复: 0

51单片机交通信号灯C语言程序

[复制链接]

14

主题

1

回帖

286

积分

管理员

积分
286
发表于 2023-3-9 20:33:04 | 显示全部楼层 |阅读模式 来自 安徽宣城
51单片机交通信号灯C语言程序


89C52引脚图

89C52引脚图


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


回复

使用道具 举报

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

本版积分规则

QQ|Archiver|手机版|小黑屋|SHNI技术支持之家 ( 皖ICP备2020018821号 )
Copyright 2023 NET0563 Rights Reserved.
信息时代--四海一家   
欢迎注册四海之家会员!本站所有内容均为网友收集或原创发布,如有侵权请联系站长删除!文明发言!和谐交流!

GMT+8, 2024-9-8 10:48 , Processed in 0.105783 second(s), 24 queries .

Powered by Discuz! X3.5

© 2001-2024 Discuz! Team.

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