键盘开关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()就可以 这个却不行,会提示语法错误,不知道是不是软件的问题。
按键使用软件消抖时最好把按下和软延时和二次判定写到一起,执行部分可以在大括号内,这样结构思路好,条例清晰.