找回密码
 立即注册

QQ登录

只需一步,快速开始

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

新人请教一个51单片机动态闪烁问题

[复制链接]
跳转到指定楼层
楼主
ID:216335 发表于 2017-10-25 12:57 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
3黑币
学习版上用的是锁存器,主函数如下

第一个数码管闪烁很厉害,我把按键延迟调低很好些,但是这样按键一按就是好几个数,按键延时调高,按键上是好了很多但是第一个数码管可以非常慢的速度闪烁。感觉就是从上到下的执行时间太长了。。。。。主程序里我还加了储存,无视好了

void main()
{

       while(1)
       {
                                                        unsigned char buf[2];

                                                        E2Read(buf, 0x80, 2);
                                                        ge = buf[0];
                                                        shi = buf[1];
                                                        if ( ge>9 )
                                                        { ge=0; }
                                                        if ( shi>9 )
                                                        { shi=0; }

                                                   

                            wei=1;
                            P0=0xfe;
                            wei=0;
                            duan=1;
                            P0=LedChar[shi];
                            Delay(10);
                            duan=0;

                            wei=1;
                            P0=0xfd;
                            wei=0;
                            duan=1;
                            P0=LedChar[ge];
                            Delay(10);
                            duan=0;

                                                

                                                        if(k1==1)
                                                        {
                                                        Delay(15);
                                                        if(k1==1)
                                                        {
                                                         ge++;
                                                         if(ge>9)
                                                         {
                                                           ge=0;
                                                           shi++;
                                                          if(shi>9)
                                                         {
                                                             shi=0;
                                                         }
                                                         }
                                                        }

                                                         buf[0] = ge;
                                      buf[1] = shi;
         
                                 E2Write(buf, 0x80, 2);

                                                        }


                                                    if(k2==1)
                                                        {
                                                        Delay(15);
                                                        if(k2==1)
                                                        {
                                                         ge--;
                                                         if(ge<0)
                                                         {
                                                           ge=9;
                                                           shi--;
                                                           if(shi<0)
                                                         {                                       
                                                             shi=9;
                                                         }
                                                         }
                                                        }

                                                         buf[0] = ge;
                                      buf[1] = shi;
         
                                 E2Write(buf, 0x80, 2);

                                                        }

           }
}


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

使用道具 举报

沙发
ID:242770 发表于 2017-10-25 13:54 | 只看该作者
通过位选信号控制8段数码管,用switch函数实现。
回复

使用道具 举报

板凳
ID:242770 发表于 2017-10-25 13:57 | 只看该作者
通过位选信号信号控制8段数码管显示,使用switch函数实现,另外,各种参数取名太草率了吧!!!
回复

使用道具 举报

地板
ID:216335 发表于 2017-10-25 17:25 | 只看该作者
jden 发表于 2017-10-25 13:57
通过位选信号信号控制8段数码管显示,使用switch函数实现,另外,各种参数取名太草率了吧!!!

改成这个样子,原来一个 闪,现在两个闪,很有规律的一亮一灭、、、、、
                             switch(i)
                                  {
                                   case 0 : wei=1;P0=0xfe;wei=0;duan=1;P0=LedChar[shi];duan=0;i=1;break;
                                   case 1 : wei=1;P0=0xfd;wei=0;duan=1;P0=LedChar[ge];duan=0;i=0;break;
                                   default: break;
                                  }  
回复

使用道具 举报

5#
ID:216335 发表于 2017-10-25 18:52 | 只看该作者
jden 发表于 2017-10-25 13:57
通过位选信号信号控制8段数码管显示,使用switch函数实现,另外,各种参数取名太草率了吧!!!

改成这样不行呀                                
                                  switch(i)
                                  {
                                   case 0 : wei=1;P0=0xfe;wei=0;duan=1;P0=LedChar[shi];duan=0;i=1;break;
                                   case 1 : wei=1;P0=0xfd;wei=0;duan=1;P0=LedChar[ge];duan=0;i=0;break;
                                   default: break;
                                  }     
回复

使用道具 举报

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

本版积分规则

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

Powered by 单片机教程网

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