已屏蔽 原因:{{ notice.reason }}已屏蔽
{{notice.noticeContent}}
~~空空如也
可以用变量计数的方式啊,我技术不咋地,但是我写过几个交通灯,给你一个switch流的程序做参考吧(用keil咯)
/*********************************************************                              
-------------------------------------------------------
** 编写人:Flynn                   文件名:交通灯.c
** 描述:带倒计时的交通灯
******************************************************/
#include<reg52.h>
#define uchar unsigned char
#define uint unsigned int
#define w_xuan P2                //宏定义P2口为w_xuan,表示位选
sbit dx_red= P3^0;                //定义交通指示灯P3.0-P3.5
sbit dx_yellow=P3^1;
sbit dx_green=P3^2;
sbit nb_red=P3^3;
sbit nb_yellow =P3^4;
sbit nb_green=P3^5;

sbit key1=P1^0;                    //定义按键,满足紧急情况的指挥
sbit key2=P1^1;
sbit key3=P1^2;

/***********************
延时程序:delay()
功能:用于延时
***********************/
void delay(uint dly)
{
    uint i,j;
    for(i=dly;i>0;i--)
      for(j=250;j>0;j--);
}
uint b=28,c=25,ten1,one1,ten2,one2,temp1=0,temp2=0;  
uchar code a[]={0x3f,0x06,0x5B,0x4F,0x66,0x6D,0x7D,0x07,0x7F,0x6F};
uint deng,xianshi,jishu;


/***********************
显示函数:disp()
功能:用于显示倒计时
***********************/
void disp(uint shi1,uint ge1,uint shi2,uint ge2)
{
          ten1=b/10;
          one1=b%10;
          
          ten2=c/10;
          one2=c%10;

        w_xuan=0xff;
        P0=a[ge1];
        w_xuan=0xfe;
        delay(2);
        w_xuan=0xff;
        P0=a[shi1];
          w_xuan=0xfd;
        delay(2);

        w_xuan=0xff;
        P0=a[ge2];
        w_xuan=0xef;
        delay(2);
        w_xuan=0xff;
        P0=a[shi2];
          w_xuan=0xdf;
        delay(2);
}

/***********************
按键函数:anjian()
功能:用于紧急情况的处理
***********************/
void anjian(void)
{
    if(!key1)
    {
        delay(10);
    while(!key1)
            {
                EA=0;
                nb_red=0;
                dx_red=0;
                nb_green=1;
                dx_green=1;
                nb_yellow=1;
                dx_yellow=1;
            }
    }
    if(!key2)
    {
        delay(10);    
     while(!key2)
     {
                 EA=0;
                nb_red=0;
                dx_red=1;
                nb_green=1;
                dx_green=0;
                nb_yellow=1;
                dx_yellow=1;
     }
    }
    if(!key3)
    {
        delay(10);
     while(!key3)
     {
                 EA=0;
                nb_red=1;
                dx_red=0;
                nb_green=0;
                dx_green=1;
                nb_yellow=1;
                dx_yellow=1;
     }    
    }
         EA=1;        
}

/***********************
初值函数:shuma_dis(void)
功能:用于给数码管倒计时赋初值
***********************/
void shuma_dis(void)
{

            if(xianshi>=200)
          {  
            xianshi=0;
            jishu++;
            b--;
            c--;
            if(b==0)
           {
               temp1=temp1+1;
            if(temp1==3)
            temp1=0;
        
             switch(temp1)
             {
                 case 0:b=28;break;
                case 1:b=25;break;
                case 2:b=3;break;    
             }
            }

            if(c==0)
            {  temp2=temp2+1;
             if(temp2==3)
             temp2=0;
            
            switch(temp2)
            {
            case 0:c=25;break;
            case 1:c=3;break;
            case 2:c=28;break;
            }

            }
           }
}
/***********************
交通灯指示函数:j_t_deng(void)
功能:用于处理交通灯的四种状态
***********************/
void j_t_deng(void)
{
    switch(deng)
        {
            case 0: dx_red=0;
                    nb_green=0;
                    dx_green=1;
                    nb_red=1;
                    dx_yellow=1;

                    break;

            case 1: dx_green=1;
                    nb_green=1;
                    nb_yellow=0;
                    nb_red=1;
                    dx_red=0;
                    break;

               case 2: dx_red=1;
                    dx_green=0;
                    nb_yellow=1;
                    nb_red=0;
                    nb_green=1;
                    break;

            case 3: nb_red=0;
                    dx_green=1;
                    dx_yellow=0;
                    nb_green=1;
                    dx_red=1;
                    break;
        }
    switch(jishu)
    {
        case 25:deng=1;break;
        case 28:deng=2;break;
        case 53:deng=3;break;
        case 56:deng=0;jishu=0;break;    
    }    
}
/***********************
初始化函数:ini()
功能:用于初始化定时器
***********************/
void ini(void)
{
    TMOD=0X01;
    TH0=(65536-5000)/256;
    TL0=(65536-5000)%256;
    EA=1;
    ET0=1;
    TR0=1;
}
/***********************
主函数
***********************/
main()
{    
    ini();//初始化函数
    while(1)
    {
            anjian();
          disp(ten1,one1,ten2,one2);
            shuma_dis();
            j_t_deng();        
    }
    
}
void shijian() interrupt 1
{
    TH0=(65536-5000)/256;
    TL0=(65536-5000)%256;
    xianshi++;
    
}
文号 / 284764

一表人才
名片发私信
学术分 0
总主题 11 帖总回复 92 楼拥有证书:进士 笔友
注册于 2010-06-22 22:05最后登录 2019-05-05 17:57
主体类型:个人
所属领域:无
认证方式:邮箱
IP归属地:未同步

个人简介

暂未填写
文件下载
加载中...
{{errorInfo}}
{{downloadWarning}}
你在 {{downloadTime}} 下载过当前文件。
文件名称:{{resource.defaultFile.name}}
下载次数:{{resource.hits}}
上传用户:{{uploader.username}}
所需积分:{{costScores}},{{holdScores}}下载当前附件免费{{description}}
积分不足,去充值
文件已丢失

当前账号的附件下载数量限制如下:
时段 个数
{{f.startingTime}}点 - {{f.endTime}}点 {{f.fileCount}}
视频暂不能访问,请登录试试
仅供内部学术交流或培训使用,请先保存到本地。本内容不代表科创观点,未经原作者同意,请勿转载。
音频暂不能访问,请登录试试
投诉或举报
加载中...
{{tip}}
请选择违规类型:
{{reason.type}}

空空如也

插入资源
全部
图片
视频
音频
附件
全部
未使用
已使用
正在上传
空空如也~
上传中..{{f.progress}}%
处理中..
上传失败,点击重试
等待中...
{{f.name}}
空空如也~
(视频){{r.oname}}
{{selectedResourcesId.indexOf(r.rid) + 1}}
处理中..
处理失败
插入表情
我的表情
共享表情
Emoji
上传
注意事项
最大尺寸100px,超过会被压缩。为保证效果,建议上传前自行处理。
建议上传自己DIY的表情,严禁上传侵权内容。
点击重试等待上传{{s.progress}}%处理中...已上传,正在处理中
空空如也~
处理中...
处理失败
加载中...
草稿箱
加载中...
此处只插入正文,如果要使用草稿中的其余内容,请点击继续创作。
{{fromNow(d.toc)}}
{{getDraftInfo(d)}}
标题:{{d.t}}
内容:{{d.c}}
继续创作
删除插入插入
插入公式
评论控制
加载中...
文号:{{pid}}
加载中...
详情
详情
推送到专栏从专栏移除
设为匿名取消匿名
查看作者
回复
只看作者
加入收藏取消收藏
收藏
取消收藏
折叠回复
置顶取消置顶
评学术分
鼓励
设为精选取消精选
管理提醒
编辑
通过审核
评论控制
退修或删除
历史版本
违规记录
投诉或举报
加入黑名单移除黑名单
查看IP
{{format('YYYY/MM/DD HH:mm:ss', toc)}}
ID: {{user.uid}}