电路有问题啊,电源怎么能直接接到GPIO,这样大电流会损坏IC。P1口好像没有外部中断,那只有轮询了。这个就是按键检测嘛,网上一堆代码,so easy!

if(LEDDirection) /*当LEDDirection=1时,0000 0001左移LEDIndex位,取反后送给P2端口,点亮一个LED*/ P2 = ~(0x01<

sbit LED=P1^0;// 小灯 void init(); //初始化 void keypress(); //按键识别 void delay(unsigned int z);//延时 void main(){ init();LED = 1;while(1){ if(aa==20){ aa=0;second++;LED=~LED

【1】C51硬件上,必须LED阴极接IO口,阳极接VCC,记得串个电阻。因为Ioh非常小。接反了,啥都不亮。(所以P11=1肯定不会亮的)【2】楼上的程序不完善或不准确。P1^1语法错了,他们没有调试过,呵呵。我调过了 inclu

sbit LED0=P1^0;sbit LED1=P1^1;LED0=0;(低电平驱动)LED1=0;(低电平驱动)LED0=1;(高电平驱动)LED1=1;(高电平驱动)字节操作:define LED_Port P1 define LED0 0 define LED1 1 LED_Port &=~(1<<

{ P1=0xff; //点亮P1口第0个引脚上的LED灯,0xff为二进制的11111111 delay(1000); //延时1秒 P1=0x00; //将P1口全部置为0,熄灭LED灯 delay(1000); //延时1秒 } } 上述程序的作用是在单片机的P1口上间隔点亮

用C语言在·at89c51单片机点亮一个led灯

在主函数中编写程序,实现LED点亮和灭的时间控制。可以使用if语句或while语句来判断时间是否达到要求,然后控制LED灯的点亮和灭。在main函数中添加延时函数,以实现上电后30秒后LED灯开始点亮的要求。下面是一个简单的示例程序

;led1=0;led2=1;led3=1;}if(s2==0){while(s2==0);led1=1;led2=0;led3=1;}if(s3==0){while(s3==0);led1=1;led2=1;led3=0;}if(s4==0){while(s4==0);led1=0;led2=0;led3=0;}}}

P1=0x00; //将P1口全部置为0,熄灭LED灯 delay(1000); //延时1秒 } } 上述程序的作用是在单片机的P1口上间隔点亮一盏LED灯,每隔1秒钟灯的状态会发生一次变化,即由点亮状态变为熄灭状态,再由熄灭状态变为点亮状态

最好用PWM,通过调节占空比来实现,我这里有现成的一个程序发给你!#include //包含头文件,一般情况不需要改动,头文件包含特殊功能寄存器的定义sbit LED = P1^2; //定义LED灯,通过LED显示调光效果 un

在上述代码中,我们首先将P1口设置为全灭状态,然后使用一个循环将P1口设置为全亮状态,并延时1秒钟。接着,我们将P1口设置为全灭状态,并再次延时1秒钟。这样,LED灯就会一亮一灭间隔1秒。需要注意的是,上述代码中的延

LED_D1 =1;//=1亮灯 ,=0灭灯当也要看电路,完善的电路还会有驱动电路如三极管点了,也要看LED固定的那端是接地还是接VCC。最终无非就是通过单片机的IO口输出一个0或1来是LED二极管电路正向导通形成发光。

单片机控制一个LED灯亮灭需要怎样的程序?

设置定时器时间间隔为1s,计数总共不到1s的话,就再定义一个变量,循环多次,以实现1s 然后再1s时的定时器中断子程序中设置输出脚的电平交替即可

当单片机LED灯一亮一灭间隔1秒时,可以使用以下代码实现:// 初始化IO口 P1 = 0xFF; // 设置延时时间 while (1) { P1 = 0x00; // 延时1秒 for (int i = 0; i < 10000; i++) { // 空循环 } P1 =

EA = 1;ET0 = 1;TR0 = 1;} void main(void){ InitTimer0();while(1)if(time==20) //中断20次,1s { time=0;LED=!LED; P1.0上的LED1s亮灭一次 } } void Timer0Interrupt(void) interrupt 1 { TH0

{ P1=0xff; //点亮P1口第0个引脚上的LED灯,0xff为二进制的11111111 delay(1000); //延时1秒 P1=0x00; //将P1口全部置为0,熄灭LED灯 delay(1000); //延时1秒 } } 上述程序的作用是在单片机的P1口上间隔点亮

单片机间隔点亮一led灯的C语言程序

在这个单片机流水灯代码中,假设使用的是8051单片机。需要定义8个LED灯,分别连接到P1端口的不同引脚上。然后使用一个循环结构来控制这8个LED灯按照一定的顺序逐个亮起,形成流水灯的效果。具体来说,使用for循环来控制LED灯

用MCS51单片机汇编语言编写的点亮一只LED灯源程序LED1.ASM,代码如下:ORG 0000H AJMP MAIN ORG 0030H MAIN:MOV A,#FEH MOV P1,A AJMP END

P1=0xff; //点亮P1口第0个引脚上的LED灯,0xff为二进制的11111111 delay(1000); //延时1秒 P1=0x00; //将P1口全部置为0,熄灭LED灯 delay(1000); //延时1秒 } } 上述程序的作用是在单片机的P1口上间隔点亮一

方法1 单片机智能控制,单片机源代码 /*--- 名称:IO口高低电平控制 内容:点亮P1口的一个LED灯 该程序是单片机学习中最简单最基础的, 通过程序了解如何控制端口的高低电平 ---*/ includereg52.h //包含头文件,一般

单片机点亮一盏led灯代码

led负极串联一个几百欧到1k的电阻接到io口,正极接电源正极

其次,告诉你单片机点亮LED的方法是:任选一只220欧姆——470欧姆的电阻与LED的正极串联后接在+5V的电源上,LED的负极接在单片机的某一个I/O口上(例如:sbit K=P1^0;),此时只要单片机执行 K=0;的代码,LED就会被

//用于改变闪烁频率 LED0=1;      //将P1.0口赋值 1,对外输出高电平 Delay(10000); //主循环中添加其他需要一直工作的程序 } } /*--- 延时函数,含有输入参数 unsigned int t

2.连接电路:将LED灯与单片机连接起来。一般情况下,将LED的正极连接到单片机的一个GPIO引脚,将LED的负极连接到电阻,然后将电阻的另一端连接到单片机的地(GND)引脚。确保连接牢固。3.编写程序:使用单片机的编程软件(如A

1.怎么玩转单片机-IO输出-点亮1个LED灯方法1,单片机智能控制 方法1 单片机智能控制,单片机源代码 /*--- 名称:IO口高低电平控制 内容:点亮P1口的一个LED灯 该程序是单片机学习中最简单最基础的, 通过程序了解如何控制

1.怎么玩转单片机-IO输出-点亮1个LED灯方法1

用c啊,我想想: 1、和硬件有点儿关系,这个你清楚么? 2、假设led连接到p1口吧。第一个灯接到p1.0。阴极接io,阳极接5v。 #include bit secflag; unsigned char ms; void display(unsigned char num,unsigned char sec) { num%=8; p1=~(1< >8;tl0=-50000; ms++; if(ms>20){ms=0;secflag=1;}//12mhz, 50ms定时中断,1秒计时。 } 你很容易扩展出任意要求的闪烁流水灯啦。 display(2,1); display(1,1); display(3,2); display(1,2); ……放到while里面就好了。祝你玩得开心。
MAIN: MOV P1,#11111110B;点亮P1.0所接的灯 ACALL YS ;调用延时子程序,让P1.0所接的灯亮一小段时间 MOV P1,#11111101B;点亮P1.1所接的灯 ACALL YS ;调用延时子程序,让P1.1所接的灯亮一小段时间 MOV P1,#11111011B;点亮P1.2所接的灯 ACALL YS ;调用延时子程序,让P1.2所接的灯亮一小段时间 MOV P1,#11110111B;点亮P1.3所接的灯 ACALL YS ;调用延时子程序,让P1.3所接的灯亮一小段时间 MOV P1,#11101111B;点亮P1.4所接的灯 ACALL YS ;调用延时子程序,让P1.4所接的灯亮一小段时间 MOV P1,#11011111B;点亮P1.5所接的灯 ACALL YS ;调用延时子程序,让P1.5所接的灯亮一小段时间 MOV P1,#10111111B;点亮P1.6所接的灯 ACALL YS ;调用延时子程序,让P1.6所接的灯亮一小段时间 MOV P1,#01111111B;点亮P1.7所接的灯 ACALL YS ;调用延时子程序,让P1.7所接的灯亮一小段时间 LJMP MAIN ;循环.这回用长调用指令LJMP,当程序比较长的时候就用 LJMP YS: ;延时子程序YS,功能是能让LED亮起来或者灭掉一小段时间 MOV R1,#200 ;让灯亮灭时间的长短也就是延时的长短跟#号后面的数据有关 D: MOV R2,#200 ;延时长点#号后面的数据就大点,延时短点#号后面的数据 T: MOV R3,#200 ;就小点,但#号后面最大的数据是255 DJNZ R3,$ DJNZ R2,T DJNZ R1,D RET ;子程序返回指令,子程序的设计一般都是因为主程序要调用它, ;调用完是要返回到主程序继续运行下一个语句的 END
设置一个delay_2s()就是: delay_2s() { for(i=0;i<200;i++) { for(j=0;j<200;j++) } } 具体要看你的晶振大小 然后 void main() { uchar temp = 0x01; while(1) { delay_2s(); P0 = temp delay_2s(); temp <<=1; i++; if(i>=7) { i = 0; temp = 0x01 } } } 很容易理解就是让0X01一直左移赋值给P0口然后循环
我再帮你补一课,看了你的标题,我写了一个用定时器0来控制一个LED灯第隔1秒钟亮灭一次的程序,希望对你有用,另外我也写了一个你说的那个程序,一起发上来吧 ****************这个是用定时器0控制一个灯的亮和灭****************************** #include #define uchar unsigned char #define uint unsigned int /**************************************/ uchar num; bit tt; sbit d=P1^0; /******************主程序入口********************/ void main() { TMOD=0x01; TH0=(65535-50000)/256; TL0=(65535-50000)%256; TCON=0x10; EA=1; ET0=1; tt=255; while(1) { if(num==20) { tt=!tt; d=tt; num=0; } } } void timer() interrupt 1 { TH0=(65535-50000)/256; TL0=(65535-50000)%256; num++; } ****************这个程序是逐个点亮的(思路:由256逐减1,值由LED灯显示)*********************** #include #define uchar unsigned char #define uint unsigned int /**************************************/ uchar num,tt; //bit tt; sbit d=P1^0; /******************主程序入口********************/ void main() { TMOD=0x01; TH0=(65535-50000)/256; TL0=(65535-50000)%256; TCON=0x10; EA=1; ET0=1; tt=255; while(1) { if(num==20) { tt--; P1=tt; num=0; } } } void timer() interrupt 1 { TH0=(65535-50000)/256; TL0=(65535-50000)%256; num++; }
【1】C51硬件上,必须LED阴极接IO口,阳极接VCC,记得串个电阻。因为Ioh非常小。接反了,啥都不亮。(所以P11=1肯定不会亮的) 【2】楼上的程序不完善或不准确。P1^1语法错了,他们没有调试过,呵呵。我调过了 #include #define ON 0 #define OFF 1 sbit LED11=P1^1; main() { unsigned int i,j; LED11=ON; //根据需要设定。最好如下做个延时,跳变能看到效果。 while(1) { for(i=0;i<5000;i++)for(j=0;j<200;j++); LED11=OFF; for(i=0;i<5000;i++)for(j=0;j<200;j++); LED11=ON; } } 祝你马到成功,别把兴趣给消磨掉了。
#include sbit d0=P1^1; void main (void) { d0=0; while (1) { } }