打印

单片机控制交通灯c51程序

[复制链接]
6140|15
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
laslison|  楼主 | 2009-10-16 19:46 | 只看该作者 |只看大图 回帖奖励 |倒序浏览 |阅读模式
/*
程序效果:单片机模拟控制交通灯程序,规则如下:当南北通车时,此时南北的绿灯亮,东西的红灯亮,之后南北的绿灯闪烁3次,过后黄灯亮,延时片刻,转东西绿灯亮同时南北红灯亮,之后东西的绿灯闪烁3次,过后黄灯亮,延时片刻;数码管显示的值都同步,结束。全部代码由http://www.51hei.com站长开发(由于站长对交通灯的规则不是特别了解,产生于事实冲突,敬请包涵)
*/
#include<reg52.h> //头文件
#define uchar unsigned char//宏定义
#define uint  unsigned int
uchar code table[]={0x00,0x01,0x02,0x03, //数码管显示的值
0x04,0x05,0x06,0x07,0x08,0x09,0x10,0x11,
0x12,0x13,0x14,0x15,0x16,0x17,0x18,0x19,
0x20,0x21,0x22,0x23,0x24,0x25,0x26,0x27,
0x28,0x29,0x30,0x31,0x32,0x33,0x34,0x35,
0x36,0x37,0x38,0x39,0x40,0x41,0x42,0x43,
0x44,0x45};
void delay(uint x)//延时子函数
{
  uint i,j;
  for(i=x;i>0;i--)
    for(j=500;j>0;j--);
}
void main()    //主函数
{
  uchar i;   //定义局部变量
  P1=table[0];  //数码管显示0
  delay(400);   //延时一会儿,在此之前所有数码管全为0,
  while(1)    //所有的交通灯都亮
  {
      for(i=0;i<45;i++) //南北通车较多,故延时较多
      {
         P2=0x0a;  //南北绿灯亮,东西红灯亮
         P1=table;
         delay(200);
      }
      for(i=0;i<3;i++) //南北绿灯闪烁3次,同时东西红灯亮
     {
         P2=0x0a;
         delay(200);
         P2=0x02;
         delay(200);
      }
      P2=0x22; //南北黄灯亮,同时东西红灯亮
      delay(600);  //延时片刻
      for(i=0;i<35;i++) //东西开始通车,由于车辆较少,故延时较少
      {
         P2=0x11;  //南北的红灯亮 ,东西的绿灯亮
         P1=table;
         delay(200);
      }
      for(i=0;i<3;i++)  //东西的绿灯闪烁3次
      {
         P2=0x11;
         delay(200);
         P2=0x10;
         delay(200);
      }
      P2=0x14; //东西的黄灯亮
      delay(600); //延时片刻
  }
}
沙发
laslison|  楼主 | 2009-10-16 19:48 | 只看该作者
上不了图片那

使用特权

评论回复
板凳
huamunv| | 2009-10-16 19:49 | 只看该作者
楼主辛苦了

使用特权

评论回复
地板
suoma| | 2009-10-17 10:51 | 只看该作者
支持!想办法上图啊

使用特权

评论回复
5
laslison|  楼主 | 2009-10-18 11:07 | 只看该作者
谢谢支持,下次上吧

使用特权

评论回复
6
suoma| | 2009-10-20 21:40 | 只看该作者
收藏了

使用特权

评论回复
7
laslison|  楼主 | 2009-10-20 21:51 | 只看该作者
上个图

200910112367200971.jpg (23.25 KB )

200910112367200971.jpg

使用特权

评论回复
8
laslison|  楼主 | 2009-10-20 21:52 | 只看该作者
第二个

200910116450283950.jpg (51.88 KB )

200910116450283950.jpg

使用特权

评论回复
9
Cypress2009| | 2009-10-21 00:52 | 只看该作者
这个貌似我以前也做过

使用特权

评论回复
10
yj8919| | 2009-10-21 08:49 | 只看该作者
这好像是用c语言写的程序

使用特权

评论回复
11
huamunv| | 2009-10-21 13:10 | 只看该作者
图上在前面,看起来更好些

使用特权

评论回复
12
huamunv| | 2009-10-21 13:12 | 只看该作者
10# yj8919
:L

使用特权

评论回复
13
laslison|  楼主 | 2009-10-22 10:36 | 只看该作者
谢谢支持哈

使用特权

评论回复
14
天朝的刺猬| | 2010-9-26 18:40 | 只看该作者
楼主 这个程序错了 。首先,那个数码管显示的值怎么可能是这个啊,再个,你的那个延时45s的根本不对 这个程序没没用

使用特权

评论回复
15
David_ming| | 2010-9-27 10:03 | 只看该作者
不用TIMER?

使用特权

评论回复
16
孤傲雕| | 2010-11-23 09:55 | 只看该作者
应该用定时器之类的实现精确延时吧

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

95

主题

791

帖子

1

粉丝