历史上的今天

今天是:2024年09月29日(星期日)

正在发生

2019年09月29日 | 课程设计题七:交通灯控制器

发布者:平稳心绪 来源: eefocus关键字:交通灯控制器  STC89C51  状态倒计时 手机看文章 扫描二维码
随时随地手机看文章

要求:


1、红灯和绿灯相互转换时经过黄灯,黄灯闪烁三次(6秒);


2、主干道方向通行30秒,辅干道方向通行20秒,单独左转信号15秒;先直行信号,后左转信号。


3、设手动、自动、特殊情况三种方式。


4、特殊情况时所有路口红灯都亮,给120、110等通行。


5、自动时显示各种状态倒计时。


一、Protues仿真图:

二、程序源码:

因为注释非常的全,这里就不再进行讲解了。

/*******************************************************************************

================================================================================

【平    台】STC89C51_sumjess平台

【编    写】sumjess

【E-mail  】1371129880@qq.com

【软件版本】V2.0

【最后更新】2019年06月10日

【相关信息参考下列地址】

【网    站】

           https://blog.csdn.net/qq_38351824

           http://www.51hei.com/bbs/mcu-2-1.html

---------------------------------------------------------------------------------

【dev.env.】MDK4.02及以上版本

【Target  】STC89C51

第一次修订:2019/05/09

第二次修订:2019/05/21

第三次修订:2019/06/10

【problem 】

    (1)库内补充的不全面;

    (2)库内解释部分不全面;

    (3)库内还存在一定的bug;

【direction】

      下一步的目标就是把库继续集成!

【explain 】

      为了方便使用,我也自己写了很多的库,和优化了算法和表示方式!

【warning】

      目前程序中暂无错误 !   

---------------------------------------------------------------------------------

没有完美的代码,只有不断的奉献,大家一起努力;

赠人玫瑰手留余香,欢迎大家反馈bug!

================================================================================

********************************************************************************/

 

#include

#include

#define uchar     unsigned char

#define uint      unsigned int

 

uchar h;

uint r=0;

uint s;

uchar flag=1;

uchar code  dis[]={0Xc0,0Xf9,0Xa4,0Xb0,0X99,0X92,0X82,0Xf8,0X80,0X90,0Xff,};

                 // 0     1    2 3 4   5    6 7 8   9    -

sbit key = P3^5;

 

void delay(uint c) //延时程序

{

   uint i,j;

    for(i=0;i   for(j=0;j<100;j++);

}

 

void t0(void) interrupt 0 using 1

{

  delay(2);

   if(INT0==0)

    {

      r++;

  if(r==2)

   {

  r=0;

   }

  r%=2;

  if(r==0)

   {

    P0=0xeb;

        P1=0x00;

        P2=0xff;

   }while(1)

    {

  if(INT0==0|INT1==0|T0==0)

  {

  delay(2);

  if(INT0==0|INT1==0|T0==0)

  break;

  }

   if(key==0) {flag=0;break;}

    }   

    }

}

 

void t1(void) interrupt 2 using 1

{

  delay(2);

   if(INT1==0)

    {

  r++;

  if(r==2)

   {

  r=0;

   }

  r%=2;

  if(r==0)

   {

    P0=0xdd;

        P1=0x00;

        P2=0xff;

   }while(1)

    {

  if(INT1==0|INT0==0|T0==0)

  {

   delay(2);

   if(INT1==0|INT0==0|T0==0)

  break;

  }

   if(key==0) {flag=0;break;}

    }

    }

}

 

void t2(void) interrupt 1 using 1

{

  TH0=0xff;

  TL0=0xff;

    delay(2);

     if(T0==0)

     {

    P0=0xdb;

        P1=0x00;

        P2=0xff;

   }

   while(1)

    {

  if(INT0==0|INT1==0)

  {  

    delay(2);

if(INT0==0|INT1==0)

  break;

  }

  if(key==0) {flag=0;break;}

    }

}

 

 

 

void main(void)

{

  TMOD=0x06;

  TH0=0xff;

  TL0=0xff;

  TR0=1;

  EA=1;

  EX0=1;

  EX1=1;

  ET0=1;

   

 while(1)

{

flag=1;

  if(flag==1){

     P0=0xeb;

     for(h=28;h>0;h--)

     {

       for(s=248;s>0;s--)

       {

    if(flag==0) break;

        P1=0x00;

        P2=0xff;

        P1=0x01;

        P2=dis[h/10];

        delay(1);

P1=0x00;

        P2=0xff;

        P1=0x02;

        P2=dis[h%10];

delay(1);

P1=0x00;

        P2=0xff;

P1=0x04;

        P2=dis[(h+2)/10];

delay(1);

P1=0x00;

        P2=0xff;

P1=0x08;

        P2=dis[(h+2)%10];

        delay(1);

       }

     }

if(flag==0) break;

    delay(248);

 

    P0=0xf3;

     for(h=3;h>0;h--)

     {

    if(flag==0) break;

        delay(392);

         P0=0xf3;

         delay(1);

        P1=0x00;

        P2=0xff;

        P1=0xaa;

        P2=dis[(h-1)%10];

         delay(600);

        P0=0xfb;

     }

   if(flag==0) break;

    delay(248);

     

    P0=0xdd;

     for(h=38;h>0;h--)

     {

   if(flag==0) break;

       for(s=248;s>0;s--)

       {

    if(flag==0) break;

P1=0x00;

        P2=0xff;

        P1=0x01;

        P2=dis[(h+2)/10];

delay(1);

P1=0x00;

        P2=0xff;

        P1=0x02;

        P2=dis[(h+2)%10];

delay(1);

        P1=0x00;

        P2=0xff;

        P1=0x04;

        P2=dis[h/10];

         delay(1);

        P1=0x00;

        P2=0xff;

        P1=0x08;

        P2=dis[h%10];

         delay(1);

       }

     }

   if(flag==0) break;

    delay(248); 

 

    P0=0xde;

     for(h=3;h>0;h--)

     {

    if(flag==0) break;

        delay(392);

        P0=0xde;

         delay(1);

        P1=0x00;

        P2=0xff;

        P1=0xaa;

        P2=dis[(h-1)%10];

        delay(600);

        P0=0xdf;

      }

if(flag==0) break;

delay(248);

    } 

   } 

}

关键字:交通灯控制器  STC89C51  状态倒计时 引用地址:课程设计题七:交通灯控制器

上一篇:课程设计题八:篮球比赛计分器
下一篇:课程设计题五:汽车尾灯控制器设计

推荐阅读

丰田公司已经发布了第三代仿人机器人T-HR3,它可以被控制和与操作员的动作同步。用户戴着数据手套和连接到摄像头的HTC Vive 头显来获得机器人的视野画面。丰田公司表示,T-HR3的高度为1.54米,重达75公斤(5英尺1英寸/ 165磅),旨在探索协助家庭,医疗设施,建筑工地,灾区乃至太空探索。 。 操作员可以使用所谓的主操纵系统(MMS)(即椅子上的16...
折叠手机Galaxy Fold即将在美国开卖,却又出现折叠屏幕瑕疵。美国科技媒体《TechCrunch》报道指出,Galaxy Fold使用27小时就出现瑕疵。27日起,三星电子将通过美国电信AT&T、美国最大家电品牌百思买、三星直营店销售Galaxy Fold,但外媒《TechCrunch》却传出屏幕瑕疵问题。TechCrunch记者布莱恩·希特(Brian Heater)试用的Galaxy Fold屏幕中间出现...
路透社报导传出,苹果供应链中的三大台厂鸿海、纬创以及和硕 计划投入印度的生产奖励计划 (PLI),未来 5 年内于印度投资近 9 亿美元 (约新台币 262 亿元),以扩大 iPhone 的印度产能。路透社引述知情人士报导,鸿海集团旗下富士康已申请投资约 400 亿卢比 (5.42 亿美元),纬创及和硕则承诺将根据 PLI 计划,分别投入近 130 亿卢比和 120...
昨日,亚马逊在的秋季新品发布会退出了首款家用机器人Astro,售价999.99美元,仅面向受邀用户发售,今年晚些时候将发出邀请。科技巨头纷纷扎堆造机器人,在8月10日,小米推出仿生四足机器狗“铁蛋”CyberDog。继小米推出机器狗之后,小鹏于9月7日发布了全球首款可骑乘智能机器马,代号为“小白龙”。为什么研发机器人?亚马逊是一家电商公司,大部分营业利...

史海拾趣

问答坊 | AI 解惑

求简易数控直流电源

本帖最后由 paulhyde 于 2014-9-15 09:43 编辑 求简易数控直流电源论文  …

查看全部问答∨

Verilog HDL UART

如题 很多给出的代码 没有过采样 本UART 测试过 稍作修改 就可以 用作它用! 时钟 源代码 [qq] 381312581 [/qq]…

查看全部问答∨

DMA的问题

我想使用DMA从Memeory搬数据到UART tx fifo 进行发送,因为memory是32位的,DMA控制器设置的长度tansfer size实际上是 word为单位,这样如何发送奇数字节的数据?请高手们赐教,谢谢!…

查看全部问答∨

了解今天的可编程振荡器

在加速产品开发周期和追求准时生产的时代,定时就是一切。对一个设计工程师或项目开发工程师来说 ,几乎没有什么事情比花六个星期等待一个样机部件更令人恼怒的了,或许更糟的是,在紧张的生产过 程中缺少一个关键部件,而这个部件恰好是晶体 ...…

查看全部问答∨

关于主从通信

最近兄弟我在研究主机与从机的通信问题。碰到点问题想请教下各位大侠:   1、初步估计主从机之间通信机制不会涉及很复杂的协议,正常情况下,主从相连后,会有正常的菜单显示   2、主从机有三个触点相连,在从机上电时会在四 ...…

查看全部问答∨

求助:第一个自写驱动 编译出错

我按着周立功的书做的,例如: 1.在C:\\WINCE500\\PLATFORM\\SMDK2410\\SRC\\DRIVERS\\目录下创建SimpleDriver目录; 2.C:\\WINCE500\\PLATFORM\\SMDK2410\\SRC\\DRIVERS\\GPIO目录下复制makefile文件到SimpleDriver目录;(我没有找到GPIO目录, ...…

查看全部问答∨

最大利用光照电流蓄电

看了牛人的太阳能蓄电视频,是否可参考高压输变电原理,最大利用光照电流蓄电。…

查看全部问答∨

不太理解片上资源的计数器和中断

一直用C语言 好像也没有用的片上资源的计数器和中断,这些不都可以用软件实现吗?为什么还要片上的那些…

查看全部问答∨

我的链接器报告错误

各位老师,我用IAR-EWARM 6.0平台开发STM32F101VCT6,           编译通过,链接器报告如下错误:          ielftool error: The string \'__checksum\' was not found in the stri ...…

查看全部问答∨

程序编译出错

编译时出现这样的错误,请高手指点 Build target \'工程\' compiling pwm.c... pwm.c(87): warning:  #223-D: function "TIM_OC1Init" declared implicitly pwm.c(95): warning:  #223-D: function "TIM_OC2Ini ...…

查看全部问答∨
小广播
设计资源 培训 开发板 精华推荐

最新单片机文章
何立民专栏 单片机及嵌入式宝典

北京航空航天大学教授,20余年来致力于单片机与嵌入式系统推广工作。

换一换 更多 相关热搜器件
随便看看

 
EEWorld订阅号

 
EEWorld服务号

 
汽车开发圈

电子工程世界版权所有 京ICP证060456号 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2024 EEWORLD.com.cn, Inc. All rights reserved