找回密码
 立即注册

QQ登录

只需一步,快速开始

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

C51十字路口交通信号灯单片机资料 源码+仿真+实物

  [复制链接]
跳转到指定楼层
楼主
分享一个已经制作成功的C51单片机实现的十字路口交通信号灯的资料下载,包含源码+proteus仿真
实物图:


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



单片机源程序如下:


  1. /*****************************************************
  2. *   王瑾毕设-交通灯
  3. *
  4. *****************************************************/
  5. #include<include.h>

  6. sbit NS_GRE = P2^5;      
  7. sbit NS_YEL = P2^4;
  8. sbit NS_RED = P2^3;   
  9. sbit EW_GRE = P2^2;  
  10. sbit EW_YEL = P2^1;  
  11. sbit EW_RED = P2^0;   



  12. uint8  EW_Timer = unused8;  //东西方向红灯定时器
  13. uint8  NS_Timer = unused8;  //南北方向红灯定时器
  14. uint8  YEL_Timer = unused8; //黄灯 5s定时器

  15. int main(void)
  16. {

  17.     Timer_Init();    //定时器初始化
  18.     INT0_Init();     //外部中断初始化   
  19.     EA=1;            //打开全局中断
  20.    
  21.     NS_GRE = OFF;    //所有的灯都灭   
  22.     NS_YEL = OFF;
  23.     NS_RED = OFF;   
  24.     EW_GRE = OFF;  
  25.     EW_YEL = OFF;  
  26.     EW_RED = OFF;   
  27.     P3 = 0xFF;      //所有显示灭

  28.     //先让东西方向红灯亮 南北方向通行
  29.     EW_Timer = EWTime_Count;//东西方向开始计时

  30.     while(1)
  31.     {
  32.            
  33.            if((EW_Timer != unused8) && (EW_Timer != 0)){ //东西方向做红灯倒计时
  34.                 display1(EW_Timer/10, EW_Timer%10);      //东西方向显示时间 南北方向不显示
  35.                 EW_RED_ON();                             //东西方向保持红灯
  36.                 NS_GRE_ON();                             //南北方向保持绿灯
  37.            }
  38.            else if((EW_Timer != unused8) && (EW_Timer == 0) && (YEL_Timer == unused8)){//东西方向红灯计时到 东西方向保持红灯 南北方向变黄灯 开始黄灯5s计时
  39.                 EW_RED_ON();                             //东西方向红灯
  40.                 NS_YEL_ON();                             //南北方向黄灯
  41.                 YEL_Timer = YELTime_Count;               //5s计时
  42.            }
  43.            if((EW_Timer != unused8) && (YEL_Timer != unused8) && (YEL_Timer != 0)){
  44.                 display1(YEL_Timer/10, YEL_Timer%10);    //东西方向显示时间 南北方向不显示
  45.            }
  46.            if((EW_Timer != unused8) && (YEL_Timer == 0)){    //东西方向红-南北方向黄灯5s计时到 东西红灯定时器关 黄灯定时器关 南北红灯 东西绿灯 南北计时器开
  47.                 EW_Timer = unused8;                      //东西红灯定时器关
  48.                 YEL_Timer = unused8;                     //黄灯定时器关
  49.                 NS_RED_ON();                             //南北变红灯
  50.                 EW_GRE_ON();                             //东西变绿灯
  51.                 NS_Timer = NSTime_Count;                 //南北红灯定时器开
  52.            }



  53.            if((NS_Timer != unused8) && (NS_Timer != 0)){ //南北红灯定时器正在计时
  54.                 display2(NS_Timer/10, NS_Timer%10);      //南北方向显示时间 东西方向不显示
  55.                 EW_GRE_ON();                             //东西保持绿灯
  56.                 NS_RED_ON();                             //南北保持红灯
  57.            }
  58.            else if((NS_Timer != unused8) && (NS_Timer == 0) && (YEL_Timer == unused8)){ //南北方向红灯计时到 南北方向保持红灯 东西方向变黄灯 开始黄灯5s计时
  59.                 NS_RED_ON();                             //南北方向保持红灯
  60.                 EW_YEL_ON();                             //东西方向变黄灯
  61.                 YEL_Timer = YELTime_Count;               //5s计时
  62.            }
  63.            if((NS_Timer != unused8) && (YEL_Timer != unused8) && (YEL_Timer != 0)){   
  64.                 display2(YEL_Timer/10, YEL_Timer%10);   //南北方向显示时间 东西方向不显示
  65.            }
  66.            if((NS_Timer != unused8) && (YEL_Timer == 0)){  //南北方向红-东西方向黄灯5s计时到 南北方向定时器关 黄灯定时器关 东西方向变红灯 南北方向变绿灯 东西方向红灯计时器开始计时
  67.                 NS_Timer = unused8;
  68.                 YEL_Timer = unused8;
  69.                 EW_RED_ON();                           //东西方向变红灯
  70.                 NS_GRE_ON();                           //南北方向变绿灯
  71.                 EW_Timer = EWTime_Count;               //东西方向开始计时
  72.            }


  73.            if(Flag_Key == 1){        //如果急停按键按下 则全红灯 显示灭
  74.                 P3 = 0xFF;           //所有显示灭
  75.                 EW_RED_ON();         //东西方向红灯
  76.                 NS_RED_ON();         //南北方向红灯
  77.                
  78.                 EW_Timer = unused8;  //关闭所有定时器
  79.                 NS_Timer = unused8;
  80.                 YEL_Timer = unused8;
  81.    
  82. ……………………

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

所有资料51hei提供下载:
基于AT89C51的十字路口交通灯仿真.zip (1.31 MB, 下载次数: 275)


评分

参与人数 1黑币 +5 收起 理由
我想学单片机啊 + 5 共享资料的黑币奖励!

查看全部评分

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

使用道具 举报

沙发
ID:338254 发表于 2018-5-25 19:19 | 只看该作者
能不能代码写全啊
回复

使用道具 举报

板凳
ID:368659 发表于 2018-7-10 14:23 | 只看该作者
1057857915 发表于 2018-5-25 19:19
能不能代码写全啊

你需要花费5个黑币下载才能看全
回复

使用道具 举报

地板
ID:408673 发表于 2018-10-18 21:16 | 只看该作者
压缩包里的源程序代码打不开啊
回复

使用道具 举报

5#
ID:437648 发表于 2018-12-2 15:37 | 只看该作者
源代码打全就好了
回复

使用道具 举报

6#
ID:437661 发表于 2018-12-2 18:31 | 只看该作者
学习学习
回复

使用道具 举报

7#
ID:437480 发表于 2018-12-3 08:10 来自手机 | 只看该作者
新手报道,学习学习
回复

使用道具 举报

8#
ID:427701 发表于 2018-12-3 11:35 来自手机 | 只看该作者
这个打开之后数码管显示不对啊怎么回事啊,楼主大大在吗,有人知道怎么回事吗
回复

使用道具 举报

9#
ID:438385 发表于 2018-12-3 14:34 | 只看该作者
这个打开之后数码管显示不对啊怎么回事啊,楼主大大在吗,有人知道怎么回事吗
回复

使用道具 举报

10#
ID:542727 发表于 2019-5-20 21:57 来自手机 | 只看该作者
这个打开之后数码管显示不对啊怎么回事啊,楼主大大在吗,有人知道怎么回事吗
回复

使用道具 举报

11#
ID:564380 发表于 2019-6-18 08:42 来自手机 | 只看该作者
看的不明觉厉(⊙o⊙)!
回复

使用道具 举报

12#
ID:561850 发表于 2019-6-18 09:57 | 只看该作者
数码管不动
回复

使用道具 举报

13#
ID:570355 发表于 2019-6-27 08:44 | 只看该作者
可以,确实不错
回复

使用道具 举报

14#
ID:570355 发表于 2019-6-27 08:57 | 只看该作者
可以。确实不错。
回复

使用道具 举报

15#
ID:642133 发表于 2019-11-14 18:32 | 只看该作者
需要学习单片机
回复

使用道具 举报

16#
ID:630068 发表于 2019-11-15 10:57 | 只看该作者
大佬厉害,我编程有点不行,还得多学习学习
回复

使用道具 举报

17#
ID:653416 发表于 2019-12-1 12:12 | 只看该作者
代码代码
回复

使用道具 举报

18#
ID:658825 发表于 2019-12-9 16:44 | 只看该作者
proteus线有没有连好
回复

使用道具 举报

19#
ID:658825 发表于 2019-12-9 17:04 | 只看该作者
线有没有连好
回复

使用道具 举报

20#
ID:662475 发表于 2019-12-12 15:19 | 只看该作者
急用急用急用,感谢
回复

使用道具 举报

21#
ID:786547 发表于 2020-6-22 20:00 来自手机 | 只看该作者
卑微萌新,在线学习
回复

使用道具 举报

22#
ID:801175 发表于 2020-7-11 10:31 | 只看该作者
请问楼主怎么把黄灯五秒换成三秒?急
回复

使用道具 举报

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

本版积分规则

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

Powered by 单片机教程网

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