找回密码
 立即注册

QQ登录

只需一步,快速开始

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

交通灯带数码管单片机源代码+电路图

[复制链接]
跳转到指定楼层
楼主
文件里面是4个数码管的交通灯源代码还有附加一张protues仿真测试图

  1. #include<stdio.h>
  2. #include<reg51.h>
  3. #include<intrins.h>
  4. sfr p0   = 0x80;
  5. sfr p1   = 0x90;
  6. sfr p2   = 0xA0;
  7. sfr p3   = 0xb0;      //这部分内容其实在“#include<reg51.h>”里已经有,但里面定义的必须区分大小写,在这里,因为我程序采用的是小写,reg51.h里对各个端口与寄存器的定义都是大写,所以在编译连接时,会报错,所以,在本设计程序里,我只用到了端口,在这里也就只定义了四个,而没有去改reg51.h里面的内容。其实两者是一样的。
  8. sbit  sw      = p0^0;
  9. sbit   OE    =P0^6;
  10. sbit   LE    =P0^7;  //74LS373锁存器控制端定义
  11. char  display[]={ 0x00,0x11,0x22,0x33,0x44,0x55,0x66,0x77,0x88,0x99 }; //p1口的数码管时间显示调用,利用74L74BCD码,8位驱动输出;
  12. //函数声明 begin
  13. void  delay1(int count);
  14. void  delay_long(int  number1,int number2);
  15. void    people_car_drive();
  16. //函数声明end
  17. //***********************//延时子程序
  18. void  delay1(int  count)
  19. { int  i;
  20.    for(i=count;i>0;i--)
  21.        { ;}
  22. }
  23. void  delay_long(int  number1,int number2)
  24.   {
  25.    int a,b;
  26. for(a=number1;a>0;a--)
  27.    {
  28.     for(b=number2;b>0;b--)
  29.      { _nop_();     }
  30.    }
  31.    
  32.   }
  33. //**********************//延时子程序
  34. void   people_car_drive()
  35. {
  36.    int   p_1=2,i,j=9,p_2=6;    //****************//行人通行时,延时20秒
  37.           p2=0x09;                     //南北红灯亮
  38.        p3=0x24;                     //东西绿灯亮
  39.    
  40.   while(p_1-->0)
  41.      { LE=1;
  42.     OE=0;
  43.     if(p_1==0){OE=1;}            //当十位数减到0时,只显示个位数
  44.     p1=display[p_1];
  45.     delay1(1000);
  46.     LE=0;  
  47.     j=9;
  48.      for(i=10;i>0;i--)
  49.    {
  50.      if(p_1==0&&j==3)break;     //减到3时退出循环,让其黄灯闪烁显示
  51.      p1=display[j--];
  52.      delay_long(16000,2);
  53.   if(sw==1)return;   
  54.    }
  55.    
  56.      }
  57.    
  58. //*******************************************************************************//
  59.                   
  60.      p2=0x12;                  //南北黄灯闪烁三秒,以提醒行人注意
  61.      p3=0x12;
  62.   p1=display[3];
  63.   delay_long(8000,1);
  64.   p2=0x00;     
  65.      p3=0x00;     
  66.   delay_long(14000,1);
  67.    
  68.   p2=0x12;
  69.   p3=0x12;
  70.   p1=display[2];
  71.   delay_long(8000,1);
  72.   p2=0x00;     
  73.      p3=0x00;
  74.   delay_long(14000,1);
  75.   
  76.   p2=0x12;
  77.   p3=0x12;
  78.   p1=display[1];
  79.   delay_long(8000,1);
  80.   p2=0x00;     
  81.      p3=0x00;
  82.   delay_long(14000,1);
  83. //*****************以下是车辆通行时延时60秒//

  84.    p2=0x24;                 //南北绿灯亮
  85.    p3=0x09;                 //东西红灯亮
  86.   
  87.      while(p_2-->0)
  88.      { LE=1;
  89.     OE=0;
  90.     if(p_2==0){OE=1;}       //当十位数减到0时,只显示个位数
  91.     p1=display[p_2];
  92.     delay1(1000);
  93.     LE=0;
  94.     j=9;
  95.      for(i=10;i>0;i--)
  96.    {
  97.   if(p_2==0&&j==3)break;  //减到2时退出循环
  98.      p1=display[j--];
  99.      delay_long(16000,2);
  100.   if(sw==1)return;     
  101.    }
  102.      }
  103.    
  104.      p2=0x12;                //南北黄灯闪烁三秒,以提醒行人注意
  105.      p3=0x12;
  106.   p1=display[3];
  107.   delay_long(8000,1);
  108.   p2=0x00;     
  109.      p3=0x00;     
  110.   delay_long(14000,1);
  111.    
  112.   p2=0x12;
  113.   p3=0x12;
  114.   p1=display[2];
  115.   delay_long(8000,1);
  116.   p2=0x00;     
  117.      p3=0x00;
  118.   delay_long(14000,1);
  119.   
  120.   p2=0x12;
  121.   p3=0x12;
  122.   p1=display[1];
  123.   delay_long(8000,1);
  124.   p2=0x00;     
  125.      p3=0x00;
  126.   delay_long(14000,1);    //南北黄灯闪烁三秒完毕
  127. }

  128. void  main()               //主函数入口处
  129. {
  130.        p0=0x01;
  131.        p1=0x00;
  132.        p2=0x00;
  133.        p3=0x00;               //初始化各端口
  134. { while(1)
  135.   {
  136.      if(sw==0)
  137.     {  people_car_drive();}
  138. else
  139.   {
  140.    p2=0x00;
  141.    p3=0x00;                    //关闭所有交通灯
  142.   }
  143.   }
  144.   
  145. }
  146. }
复制代码


交通灯带数码管.docx

103.6 KB, 下载次数: 8, 下载积分: 黑币 -5

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

使用道具 举报

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

本版积分规则

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

Powered by 单片机教程网

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