找回密码
 立即注册

QQ登录

只需一步,快速开始

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

51单片机交通灯控制实训 可实现 警灯 夜间等功能 带仿真 程序 原理图

  [复制链接]
跳转到指定楼层
楼主
可实现 警灯 夜间 等功能的51单片机交通灯


51单片机交通灯的仿真图

交通灯的电路原理图

源程序:
  1. #include<reg51.h>
  2. #define smg P1
  3. #define bit P3

  4. sbit red1=P0^0;//1方向红灯
  5. sbit green1=P0^1;//1方向绿灯
  6. sbit yellow1=P0^2; //1方向黄灯
  7. sbit red2=P0^3;//2方向红灯
  8. sbit green2=P0^4; //2方向绿灯
  9. sbit yellow2=P0^5; //2方向黄灯
  10. sbit setkey=P2^0; //设置按键
  11. sbit upkey=P2^1;//时间加
  12. sbit downkey=P2^2;//时间减
  13. sbit backkey=P2^3;//退出键
  14. sbit choosekey=P2^4;//选择键
  15. unsigned char  tab[]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f};
  16. unsigned char time,s,s1,s2,t,t2,x1,x2,flag,temp,r,q;
  17. int t1;
  18. void delay(int x); //延时程序
  19. void timer0(void); //中断
  20. void set();//设置程序
  21. void int0();//秒计数

  22. void main(void)         //主函数
  23. {  t=60;
  24.    s=1;
  25.    r=0;
  26.    timer0();         
  27.    int0();
  28.    while(1)
  29.   {   
  30.       set();
  31.           t1=t-s;
  32.           if(t1==-1)
  33.               {s=1;}
  34.           s1=t1%10;s2=t1/10;
  35.           bit=0xfd;smg=tab[s1];delay(2);bit=0xfe;smg=tab[s2];delay(2);   //个位,十位显示赋值
  36.           if(t1==-1){r++;q=r%2; if(r==4){r=2;}}        //当数码管显示时间为-1时,对r进行加1并通过求余操作,产生两种不同的红绿灯状态。
  37.           if(q==1){red1=0;green1=1;yellow1=0;red2=1;green2=0;yellow2=0;         //状态1灯光。
  38.                            if(t1<3&&t1>-1){green1=0;if(time>9){yellow1=~yellow1;}}}        //状态1黄灯闪烁。
  39.           if(q==0){red1=1;green1=0;yellow1=0;red2=0;green2=1;yellow2=0;          //状态2灯光。
  40.                            if(t1<3&&t1>-1){ green2=0;if(time>9){yellow2=~yellow2;}}}        //状态2黄灯闪烁。  
  41.            if(TF0==1)//定时器溢出操作
  42.          {TF0=0;break;}
  43.            }
  44.   }

  45. void set()
  46. {
  47.   if(setkey==0)
  48.   { delay(5); //防抖操作
  49.     if(setkey==0)
  50.       {flag=1;
  51.           while(flag)
  52.                   { TR0=0;
  53.                               bit=0xfd;smg=0x00;delay(1);        //数码管全灭
  54.                     bit=0xfe;smg=0x00;delay(1);
  55.                                 if(backkey==0)
  56.                       {delay(15);
  57.                        if(backkey==0)          //设置程序返回操作
  58.                          {flag=0;TR0=1;}
  59.                        }
  60.                    if(choosekey==0)
  61.                       {delay(60);
  62.                        if(choosekey==0)
  63.                          {++temp;
  64.                           if(temp==6){temp=1;}
  65.                                         if(temp==1)
  66.                               {while(temp)  //时间加减操作
  67.                                                        {x1=t%10; x2=t/10;  
  68.                                     bit=0xfd;smg=tab[x1];delay(2);bit=0xfe;smg=tab[x2];delay(2);
  69.                                                                 if(upkey==0){delay(60);if(upkey==0)t++;if(t==100)t=10;}
  70.                                                                 if(downkey==0){delay(60);if(downkey==0)t--;if(t==9)t=10;}
  71.                                                                 red1=1;green1=0;yellow1=0;red2=1;green2=0;yellow2=0;
  72.                                                                 if(setkey==0){ delay(60);if(setkey==0){break;} }}
  73.                                                 }
  74.                                             else if(temp==2) {red1=1;green1=0;yellow1=0;red2=1;green2=0;yellow2=0;}        //禁行模式
  75.                                  else if(temp==3){red1=0;green1=1;yellow1=0;red2=1;green2=0;yellow2=0; }//方向1通行模式
  76.                                      else if(temp==4){red1=1;green1=0;yellow1=0;red2=0;green2=1;yellow2=0; } //方向2通行模式
  77.                                        else if(temp==5){red1=0;green1=0; red2=0;green2=0; //夜间模式
  78.                                                            while(1){delay(255);
  79.                                                                          yellow1=~yellow1;
  80.                                                                  yellow2=~yellow2;
  81.                                                                                    if(backkey==0)
  82.                                                                         {  delay(15);
  83.                                                                                                                                          if(backkey==0)
  84.                                                                                                                                          {break;}
  85.                                                                              }}}}}        
  86. }}}}
  87. void timer0(void)
  88. {   TMOD = 0x01;     
  89.     TH0  = 0x3C;         
  90.     TL0  = 0xB0;
  91.     EA   = 1;         
  92.     ET0  = 1;                 
  93.     TR0  = 1;        
  94. }
  95. void int0() interrupt 1 using 0        
  96. {
  97.         TH0=0x3C;
  98.         TL0=0xB0;
  99.         time++;
  100.         if(time==20)
  101.         {  s++;
  102.        time=0;}
  103. }
  104. void delay(int x)
  105. {   int i,j;
  106.     for(i=x;i>0l;i--)
  107.      for(j=255;j>0;j--);
  108. }
复制代码




交通灯所有资料下载:
1352200108_赵晓杰_交通灯.rar (9.46 MB, 下载次数: 84)

评分

参与人数 2黑币 +55 收起 理由
空梦 + 5 很给力!
admin + 50 共享资料的黑币奖励!

查看全部评分

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

使用道具 举报

沙发
ID:302686 发表于 2018-4-10 10:01 | 只看该作者
想学习一下
回复

使用道具 举报

板凳
ID:364505 发表于 2018-7-4 09:19 | 只看该作者
很好,很给力

评分

参与人数 1黑币 +5 收起 理由
zzzzzzz665 + 5

查看全部评分

回复

使用道具 举报

地板
ID:364505 发表于 2018-7-4 09:30 | 只看该作者
想学习一下
回复

使用道具 举报

5#
ID:371540 发表于 2018-7-15 08:02
黑黑黑,为什么我邀请朋友注册了这个网站,没有送我30黑币呀。

6#
ID:413051 发表于 2018-10-21 12:21 | 只看该作者
想学习下。
回复

使用道具 举报

7#
ID:313328 发表于 2018-11-12 20:21 | 只看该作者
感谢分享,让我们学习
回复

使用道具 举报

8#
ID:358801 发表于 2018-12-24 09:03 | 只看该作者
很好!!优秀
回复

使用道具 举报

9#
ID:149799 发表于 2018-12-24 11:46 | 只看该作者
单片机无所不能
回复

使用道具 举报

10#
ID:562096 发表于 2019-6-13 20:48 | 只看该作者
对我学单片机很有帮助
回复

使用道具 举报

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

本版积分规则

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

Powered by 单片机教程网

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