找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
查看: 5078|回复: 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;         
                          
                   }               
   }

}

回复

使用道具 举报

ID:149988 发表于 2017-4-5 07:41 | 显示全部楼层

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

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

使用道具 举报

ID:186189 发表于 2017-4-5 09:48 | 显示全部楼层
While的循环里头,再看下。
回复

使用道具 举报

ID:149451 发表于 2017-4-5 10:16 | 显示全部楼层
只能说你编的程序如此,灯如实反映而已
回复

使用道具 举报

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

使用道具 举报

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

使用道具 举报

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

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

使用道具 举报

ID:186353 发表于 2017-4-5 16:52 | 显示全部楼层
用的什么芯片
回复

使用道具 举报

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

使用道具 举报

ID:186395 发表于 2017-4-5 18:15 | 显示全部楼层
缺少延时吧 加一个循环
回复

使用道具 举报

ID:186398 发表于 2017-4-5 18:27 | 显示全部楼层
需要反应时间 加入延迟试试
回复

使用道具 举报

ID:146878 发表于 2017-4-5 18:54 | 显示全部楼层
没有延迟,太快了开不出变化
回复

使用道具 举报

ID:186406 发表于 2017-4-5 19:17 | 显示全部楼层
只能说你编的程序如此,计算机是不会错的
回复

使用道具 举报

ID:186447 发表于 2017-4-5 20:27 | 显示全部楼层
延时程序
回复

使用道具 举报

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

本版积分规则

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

Powered by 单片机教程网

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