找回密码
 立即注册

QQ登录

只需一步,快速开始

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

老师们,为什么这个程序LED灯一直常亮呢?

  [复制链接]
跳转到指定楼层
楼主
ID:183176 发表于 2017-4-4 22:38 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
#include <reg52.h>
unsigned char code LedLevel[8]={1,2,3,4,5,6,7,8};
void main()
{
        unsigned char i,j,a=0;
        unsigned char temp;
   P2=0xff;
   while(1)
   {

          for(i=0;i<255;i++)
          {
                     if(i<128)
                   {
                           temp=0x00;
                   }
                        else
                        {
                                temp=0x55;
                        }
                P2=temp;
          }                                             
                 
         for(a=0;a<8;a++)
         {
              for(j=0;j<8;j++)
                  {

                           if(LedLevel[j]<=a)
                           {
                                   temp|=(0x01<<j);          
                           }                                                               

                           else
                           {
                                           temp&=~(0x01<<j);
                                                     
                           }
                  }
               
                P2=temp;         
                          
                   }               
   }

}

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

使用道具 举报

沙发
ID:149988 发表于 2017-4-5 07:41 | 只看该作者

RE: 老师们,为什么这个程序LED灯一直常亮呢?

缺少延时,已有延时,延时时间过短。灯的变化根本无法看清。
回复

使用道具 举报

板凳
ID:186189 发表于 2017-4-5 09:48 | 只看该作者
While的循环里头,再看下。
回复

使用道具 举报

地板
ID:149451 发表于 2017-4-5 10:16 | 只看该作者
只能说你编的程序如此,灯如实反映而已
回复

使用道具 举报

5#
ID:186351 发表于 2017-4-5 16:37 | 只看该作者
我认为是没加延时,导致语句执行速度太快了,即使有变化也很快,快速的开关就变成了细微的亮度变化,导致肉眼无法识别出来,建议在合适的位置加上延时函数试一下效果
回复

使用道具 举报

6#
ID:186351 发表于 2017-4-5 16:37 | 只看该作者
我认为是没加延时,导致语句执行速度太快了,即使有变化也很快,快速的开关就变成了细微的亮度变化,导致肉眼无法识别出来,建议在合适的位置加上延时函数试一下效果
回复

使用道具 举报

7#
ID:186351 发表于 2017-4-5 16:38 | 只看该作者
lvan_z 发表于 2017-4-5 16:37
我认为是没加延时,导致语句执行速度太快了,即使有变化也很快,快速的开关就变成了细微的亮度变化,导致肉 ...

抱歉,网卡了,多发了一个
回复

使用道具 举报

8#
ID:186353 发表于 2017-4-5 16:52 | 只看该作者
用的什么芯片
回复

使用道具 举报

9#
ID:163669 发表于 2017-4-5 17:06 | 只看该作者
没加延时,程序运行速度过快,你发现不了,简单的做法你可以在中间加几个for的二层循环
回复

使用道具 举报

10#
ID:186395 发表于 2017-4-5 18:15 | 只看该作者
缺少延时吧 加一个循环
回复

使用道具 举报

11#
ID:186398 发表于 2017-4-5 18:27 | 只看该作者
需要反应时间 加入延迟试试
回复

使用道具 举报

12#
ID:146878 发表于 2017-4-5 18:54 | 只看该作者
没有延迟,太快了开不出变化
回复

使用道具 举报

13#
ID:186406 发表于 2017-4-5 19:17 | 只看该作者
只能说你编的程序如此,计算机是不会错的
回复

使用道具 举报

14#
ID:186447 发表于 2017-4-5 20:27 | 只看该作者
延时程序
回复

使用道具 举报

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

本版积分规则

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

Powered by 单片机教程网

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