单片机/MCUwilliam hill官网
直播中

叶先生

12年用户 123经验值
擅长:86218
私信 关注
[问答]

键盘开关LED与直接单片机程序控制LED亮度差距大(已解决

本帖最后由 minDragon 于 2012-8-4 09:58 编辑

是这样的,我P1上接了限流电阻和8个小的LED灯,写入程序到STC52单片机里去点亮P1上的LED灯时,亮度很亮。

但,当我P3接了独立键盘,去控制8个小LED灯亮灭时,却发现按下键盘,灯是亮了 但亮度很暗 很暗。。键盘控制的程序如下。 我是真实写入单片机里面测试的,不是仿真。。求高手。。


#include
void delay(unsigned char x)      //延时
{
   unsigned char i;
   while(x--)
   for(i=0;i<125;i++){}
}

void main()
{ unsigned char i=0;
do
{
    if(P3==0xfb)          //P3.3接键盘
    {
     delay(10);
     if(P3==0xfb)   
     P1=0x0f;          //LED阳极接VCC,阴极接P1端口,这里是P1.4~P1.7的灯点亮
    }
}
while(i>0);
}

回帖(4)

lstcspring

2012-8-4 09:42:53
改成这样试一下do
{
    if(P3==0xfb)          //P3.3接键盘
    {
     delay(10);
     if(P3==0xfb)   
     P1=0x0f;          //LED阳极接VCC,阴极接P1端口,这里是P1.4~P1.7的灯点亮
    }
}
while(1);
举报

叶先生

2012-8-4 09:56:21
引用: lstcspring 发表于 2012-8-4 09:42
改成这样试一下do
{
    if(P3==0xfb)          //P3.3接键盘

{:soso_e121:}谢啦 原来是程序的问题。。我本来是想讲程序写成
while(1)
{
    if(P3==0xfb)          //P3.3接键盘
    {
     delay(10);
     if(P3==0xfb)   
     P1=0x0f;          //LED阳极接VCC,阴极接P1端口,这里是P1.4~P1.7的灯点亮
    }
}

但不知道为什么keil总是提示那个while语法错误..或者直接写成while()也不行。。但我很多程序用while()就可以 这个却不行,会提示语法错误,不知道是不是软件的问题。。
举报

秩宙

2012-11-17 21:37:04
{:1:}
举报

SMYNEML

2012-12-9 23:23:09
按键使用软件消抖时最好把按下和软延时和二次判定写到一起,执行部分可以在大括号内,这样结构思路好,条例清晰.
举报

更多回帖

发帖
×
20
完善资料,
赚取积分