| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 555 人关注过本帖
标题:这个交通灯程序每段的大体意思是什么呀 求指点
只看楼主 加入收藏
zq1225454723
Rank: 1
等 级:新手上路
帖 子:1
专家分:0
注 册:2013-6-17
结帖率:0
收藏
已结贴  问题点数:20 回复次数:2 
这个交通灯程序每段的大体意思是什么呀 求指点
#include<reg51.h>
#include<intrins.h>
sbit smg1=P3^0;
sbit smg2=P3^1;
sbit N_green=P2^0;
sbit N_red=P2^1;
sbit N_yellow=P2^2;
sbit S_green=P2^7;
sbit S_red=P2^6;
sbit S_yellow=P2^5;
sbit W_green=P1^0;
sbit W_red=P1^1;
sbit W_yellow=P1^2;           
sbit E_green=P1^7;
sbit E_red=P1^6;
sbit E_yellow=P1^5;
int djs=30,js=0,bt=30;           //djs和bt是初始倒计时时间,可修改
//int table[]={0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90};
int table[]={0x3f,0x06,0x5b,0x4f, 0x66,0x6d,0x7d,0x07, 0x7f,0x6f,0x40};
void jtd();
void djsxs();

void delayms(int x)
{
char i;
while(x--)
 {
  for(i=150;i>0;i--);
 }
}
setxs()
{
int b1,b2;
     b1=djs/10;
    b2=djs%10;
    P0=table[b1];
            smg1=0;
            delayms(3);
            smg1=1;
    P0=table[b2];
    smg2=0;
    delayms(3);
    smg2=1;
}
void delayms2(int p)
{
char i;
while(p--)
 { setxs();
  for(i=150;i>0;i--)
   setxs();
 }
}

Timer0_init()
{
              js=0;
      TMOD=0x01;                  //T0为定时器方式1
              TH0=0x4c;
      TL0=0x00;            
              TR0=1;//IT1=1;
      ET0=1;//EX1=1;
      EA=1;   
}
void timer0() interrupt 1 using 1   
{
      TF0=0;
         TH0=0x4c;
        TL0=0x00;
        js++;
        if(js==20)
          { js=0;
            djs--;
            //led1=~led1;
           }
}
void djsxs()
 {    int b1,b2;
     b1=djs/10;
    b2=djs%10;
    P0=table[b1];
            smg1=0;
            delayms(3);
            smg1=1;
    P0=table[b2];
    smg2=0;
    delayms(3);
    smg2=1;
}
void jtd()
{
int tp=1;
while(1)
{
             tp=1;
             djsxs();
    if(djs>5)            
//次数djs>5 djs<5表示倒计时等于5时开始亮黄灯  
                      //以下四次都要修改
     {
        W_red=0;
        E_red=0;
        N_green=0;
        S_green=0;
      }
    if(djs<=5)
     {
        N_green=1;
        S_green=1;
        N_yellow=0;
        S_yellow=0;
     }
    if(djs==0)
      {
       djs=bt;

       while(tp)
         {
          djsxs();
          if(djs>5)
            {   
                W_red=1;
               E_red=1;
                W_green=0;
               E_green=0;
               N_yellow=1;
               S_yellow=1;
               N_red=0;
               S_red=0;
            }
            if(djs<=5)
             {
              W_green=1;
              E_green=1;
              W_yellow=0;
              E_yellow=0;
             }
             if(djs==0)
                {
                djs=bt;

                N_red=1;
                S_red=1;
                W_yellow=1;
                E_yellow=1;
                tp=0;
                }
          }
      }
}
}
main()
{
Timer0_init();
W_red=1;
E_red=1;
W_green=1;
E_green=1;
W_yellow=1;
E_yellow=1;
N_green=1;
S_green=1;
N_yellow=1;
S_yellow=1;
N_red=0;
S_red=0;
jtd();
搜索更多相关主题的帖子: include 交通灯 
2013-06-17 15:14
wyw19880809
Rank: 8Rank: 8
等 级:蝙蝠侠
威 望:3
帖 子:178
专家分:738
注 册:2013-3-14
收藏
得分:10 
lz 你还是先好好看看51单片机吧...
main()
{
Timer0_init();        //初始化定时器的
W_red=1;
E_red=1;
W_green=1;
E_green=1;
W_yellow=1;
E_yellow=1;
N_green=1;
S_green=1;
N_yellow=1;
S_yellow=1;
N_red=0;
S_red=0;//从初始化定时器之后到这里的这些所有语句 都是给单片机相应端口赋值,至于是点亮还是熄灭相应颜色的灯  要看你的电路原理怎么设计的了
jtd(); //依靠定时器的计时来切换红绿灯的转换
}
2013-06-17 15:27
pauljames
Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19
等 级:千里冰封
威 望:9
帖 子:1555
专家分:10000
注 册:2011-5-8
收藏
得分:10 
就是用定时器和延时函数来计时,用IO口来点LED灯,模拟交通灯运行

经常不在线不能及时回复短消息,如有c/单片机/运动控制/数据采集等方面的项目难题可加qq1921826084。
2013-06-19 06:16
快速回复:这个交通灯程序每段的大体意思是什么呀 求指点
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.018059 second(s), 7 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved