单片机:为什么灯一直亮?程序要求是控制P1.0,使输出高低电平,使灯亮一会暗一会

#include<reg52.h>
#define uint unsigned int
#define uchar unsigned char
void delay(uint a);
sbit dula=P2^6;
sbit wela=P2^7;
sbit d1=P1^0;
uchar time;
void main()
{
uchar i;
uchar code temp[]={
0x3f,0x06,0x5b,0x4f,
0x66,0x6d,0x7d,0x07,
0x7f,0x6f,0x77,0x7c,
0x39,0x5e,0x79,0x71,
};
i=0;
time=0;
TMOD=0x01;
TH0=(65536-50000)/256;
TL0=(65536-50000)%256;
EA=1;
ET0=1;
IT0=0;
TR0=1;
wela=1;
P0=0xf0;
wela=0;

P0=0x3f;

while(1)
{
if(time==10)
{
i++;
if(i==16)i=0;
time=0;
dula=1;
P0=temp[i];
dula=0;
}
}
}

void exter0() interrupt 1
{
TH0=(65536-50000)/256;
TL0=(65536-50000)%256;
time++;
}

dula=1; P0=temp[i]; dula=0;中间没有时间间隔,即使灯亮了,你也看不到,延时程序不对。
温馨提示:内容为网友见解,仅供参考
第1个回答  2017-10-19
程序中没有看到你对P1.0进行相应的操作。
第2个回答  2013-09-16
如果只为了控制P1.0,可用如下代码:
#include<reg52.h>
void delay(uint a);
sbit d1=P1^0;
void main()
{
while(1)
{
d1=!d1;
delay(100);//延时可调节
}
}本回答被提问者采纳
第3个回答  2013-09-16
你延时一下 试看看

单片机:为什么灯一直亮?程序要求是控制P1.0,使输出高低电平,使灯亮一...
dula=1; P0=temp[i]; dula=0;中间没有时间间隔,即使灯亮了,你也看不到,延时程序不对。

单片机:为什么灯一直亮?程序要求是控制P1.0,使输出高低电平,使灯亮一...
define uint unsigned int define uchar unsigned char unsigned int a,time,t;sbit d1=P1^0;void main(){ time=0;a=1;TMOD=0x01;TH0=(65536-50000)\/256;TL0=(65536-50000)%256;EA=1;ET0=1;TR0=1;d1=0;time=0;while(1){ if(time==20){ d1=~d1;time=0;} } void exter0(...

单片机:为什么灯一直亮?程序要求是控制P1.0,使输出高低电平,使灯亮一...
如果只为了控制P1.0,可用如下代码:include<reg52.h> void delay(uint a);sbit d1=P1^0;void main(){ while(1){ d1=!d1;delay(100);\/\/延时可调节 } }

请教一个51单片机控制LED灯亮灭的问题
LED肯定是低电平才会亮,,你看第一个二级制,1357亮,全是0,低电平。那第二个二进制必然是两头灭,中间量啦,你传个电路原理图上来吧,要不然不好分析。

在单片机C编程中,为什么给P0口送0,就是点亮?
二极管接法如上,给P1.0口低电平(P1.0=0),二极管从左到右导通(二极管单项导通性),所以就亮了,反之测灭。

...连接一LED,程序按照设定的时间间隔取反P1.0,使LED按固定的时间间隔...
P1.0 接 1K 电阻 接 三极管 NPN PNP都行。。NPN : VCC(5V)接510电阻 接LED接三极管集电极,三极管发射极接地。或者VCC接三极管集电极,发射极接510电阻接LED接地。 PNP:将NPN三级管反过来接就行了(例如NPN发射极接地的话 PNP就集电极接地)。程序:头文件略 sbit P1.0=D1; \/\/位声明 voi...

单片机如何控制LED灯的亮与灭?
LED灯就是一个发光二极管,电路正向导通的时候会发光。LED一端链接GND,另一端电压为高的时候就是有电压,就形成导通。LED就会亮起来。拿入门的51单片机来讲,1这端对应链接单片机的引脚的话如P1.0。就写代码给P1.0输出1就能亮起LED灯D1。sbit LED_D1= P1^0 ;LED_D1 =1;\/\/=1亮灯 ,=0...

单片机数组问题,这个程序,LED灯为什么很暗
这个是需要看外围电路的,不一定是输入低电平led就会亮,首先led的正极接到vcc,负极接到单片机的p1.0上,当单片机的p1.0为高电平时,led两端电压一样,电流不会流动,led不会亮,只有当p1.0为低电平是,电流才会从vcc进过led流向p1.0,再进过单片机内部形成回路,led就会亮了,反之一样,led...

如何实现单片机LED灯一亮一灭间隔1秒?
并延时1秒钟。接着,我们将P1口设置为全灭状态,并再次延时1秒钟。这样,LED灯就会一亮一灭间隔1秒。需要注意的是,上述代码中的延时时间可以根据实际情况进行调整,以获得更精确的间隔时间。此外,如果使用的是STM32系列单片机,还需要在初始化代码中配置GPIO口为输出模式。

单片机怎么实现一个开关控制八个灯按一下亮一个按
用一个寄存器做变量就可以。假如按键是一个开个,接在P1.0,八个灯在P0,低电平灯亮 程序是这样的 MOV 30H ,#00 LOP :SETB P1.0 JNB P1.0, PRESS AJMP LOP PRESS:INC 30H MOV A,30H CJNE A,#9,L_NEXT MOV 30H,#1 L_NEXT:JNB P1.0,MOV A,30H CJNE A,#1 ,LED1...

相似回答