微波EDA网,见证研发工程师的成长!
首页 > 研发问答 > 嵌入式设计讨论 > MCU和单片机设计讨论 > 键盘开关LED与直接单片机程序控制LED亮度差距大(已解决

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

时间:10-02 整理:3721RD 点击:

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

#include<reg51.h>
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);
}

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

谢啦 原来是程序的问题。我本来是想讲程序写成
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()就可以 这个却不行,会提示语法错误,不知道是不是软件的问题。

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

Copyright © 2017-2020 微波EDA网 版权所有

网站地图

Top