当前位置:   article > 正文

基于单片机的十字路口交通灯课程设计_单片机十字路口红绿灯课程设计

单片机十字路口红绿灯课程设计

1、设计要求:

       设计一个十字路口交通灯控制器。用单片机控制LED灯模拟指示。模拟东西方向的十字路口交通信号控制情况。东西向通行时间为80s,南北向通行时间为60s,缓冲时间为3s。

2、设计思路:

        通过设计要求计算交通路口的总时间,得到一个时间指针。通过这个指针来控制程序的执行顺序。特别注意红灯时间=绿灯通行时间+缓冲时间。首先是南北红灯接通83秒,东西绿灯接通80秒,之后东西黄灯接通3秒。后面东西红灯接通63秒,南北红灯接通60秒,之后南北黄灯接通3秒。第一周期循环结束。后面按着这个周期循环往复。

3、Protues原理图

 4、仿真效果图

 5、单片机代码

  1. #include<reg51.h>
  2. #define u8 unsigned char
  3. #define u16 unsigned int
  4. sbit start = P1^4; //开始按钮
  5. sbit northred=P2^0; //北面路口红灯
  6. sbit northyellow=P2^1; //北面路口黄灯
  7. sbit northgreen=P2^2; //北面路口绿灯
  8. sbit southgreen=P2^3; //南面路口绿灯
  9. sbit southyellow=P2^4; //南面路口黄灯
  10. sbit southred=P2^5; //南面路口红灯
  11. sbit westred=P2^6; //西面路口红灯
  12. sbit westyellow=P2^7; //西面路口黄灯
  13. sbit westgreen=P1^0; //西面路口绿灯
  14. sbit eastgreen=P1^1; //东面路口绿灯
  15. sbit eastyellow=P1^2; //东面路口黄灯
  16. sbit eastred=P1^3; //东面路口红灯
  17. sbit highone = P3^0; //选择数码管接通标志位
  18. sbit lowone = P3^1; //选择数码管接通标志位
  19. sbit hightwo = P3^2; //选择数码管接通标志位
  20. sbit lowtwo = P3^3; //选择数码管接通标志位
  21. u8 code number[]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f}; //共阴极
  22. u8 xianshi[]={0x3f,0x3f,0x3f,0x3f};
  23. u8 Tpointer=146; //时间指针。
  24. u8 done = 0; //开始标志
  25. u16 i;
  26. void delay(u16 h) //延时函数
  27. {
  28. while(h--);
  29. }
  30. void xuanze() //选择函数函数
  31. { //选择标志位接通对应的数码管
  32. u8 k;
  33. for(k=0;k<4;k++)
  34. {
  35. switch(k)
  36. {
  37. case(0):
  38. lowone=1;hightwo=1;lowtwo=1;highone=0;break;
  39. case(1):
  40. highone=1;hightwo=1;lowtwo=1;lowone=0;break;
  41. case(2):
  42. highone=1;lowone=1;lowtwo=1;hightwo=0;break;
  43. case(3):
  44. highone=1;lowone=1;hightwo=1;lowtwo=0;break;
  45. }
  46. P0=xianshi[k];
  47. delay(500);
  48. }
  49. }
  50. void checkstartkey() //检测开始按钮函数
  51. {
  52. if(start==0)
  53. {
  54. delay(1000); //消抖
  55. if(start==0)
  56. {
  57. done=1;
  58. }
  59. while(!start)
  60. {
  61. xuanze();
  62. }
  63. }
  64. }
  65. void InitTimer0() //定时器函数
  66. {
  67. TMOD = 0x01; //定时器T0为模式1
  68. TH0 = 0xd8; //设置定时器初值
  69. TL0 = 0xef;
  70. EA = 1; //总中断允许
  71. ET0 = 1;
  72. }
  73. 由于篇幅有限相应的代码和仿真图已经上传(包括程序和课程设计报告),有需要的自取:
  74. https://download.csdn.net/download/weixin_47675608/76102894

 由于篇幅有限相应的代码和仿真图已经上传(包括程序和课程设计报告),压缩包内容包括(Protues仿真,单片机程序)有需要的自取:基于单片机的十字路口交通灯课程设计.zip-C/C++文档类资源-CSDN文库

对您有帮助的话,请点赞评论收藏转发关注您的鼓励才是作者创作的动力,求打赏

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/知新_RL/article/detail/495063
推荐阅读
相关标签
  

闽ICP备14008679号