sbit led2 = P1^3;void Delay(unsigned int x){ unsigned int i, j;for(i = 0; i < x; i++) for(j = 0; j <= 148; j++);} //KEY1按一下LED1亮 再按一下LED1灭 //KEY2按下LED2亮 LED1灭
那你把两盏led灯并联,用一个口联接就行了,例如用P2口的1脚 include
如果是PC机需要配置一块MOXA的TTL板卡来实现高低电瓶输出:1、先设定LED灯是低电平亮还是高电瓶亮,这里假设低电平;2、设置一个定时器,在定时器里面写代码,分别发送高、低电瓶值可实现交替闪耀;例程:include
bit LED1;bit LED2;LED1=1;LED2=0;while (1){ delay(2000);LED1=!LED1;LED2=!LED2;}
sbit LED1=P2^0;sbit LED2=P2^1;void main (void){ while(1){ LED1 = S1; //如果LED接高电平点亮这两句分别加个~ 即 LEDx = ~Sx;LED2 = S2;} }
LED1=~LED1;LED2=~LED2;for(n=0; n<20; n++){ Delay100ms();} } }
LED =0xff;P1=LED;while(1){ LED=0xe7;P1=LED;delayms(1000);LED=0xdb;P1=LED;delayms(1000);LED=0xbd;P1=LED;delayms(1000);LED=0x7e;P1=LED;delayms(1000);} }
写出点亮2盏LED灯的c语言程序?
;试试下列程序:KEY EQU P2.0 LED1 EQU P1.7 LED2 EQU P1.6 ORG 0000H LJMP MAIN ORG 0030H MAIN:CLR LED1 ;通电LED1亮,LED2灭。SETB LED2 ;--- LOOP:JB KEY, $ ;等待按下 CALL DE
你只要先定义 sbit P0^0=LED0;一定定义下去 然后再定义一个按钮 比如P1.1 sbit P1^1=key;代码里写 123456789while(true){if(key==1){LED0=0;LED1=0;..//把你要亮的灯置0就行了。阳极的话置1}}
最简单的,就是直接延时,如下图,实现灯1亮;然后灯1灭;再然后灯2亮;再灭掉:第二种是用定时器,如下图,先是灯1亮半秒,再全熄半秒;再灯2亮半秒,再全熄半秒:
;P1.0 P1.1接2LED,P2.0接一按键。上电2LED不亮,按第1 次键2LED同时以1S周期闪烁,按第2 次 2LED轮流1S闪烁同此循环。;11 04 17 ORG 00H AJMP MAIN ORG 0BH AJMP T0INT ORG 30H MAIN:MOV TMOD,#
if(gusTimeCnt >= 7200) //两个小时时间到 { gusTimeCnt = 0x00; //清零 gucLEDStatus = 0x00; //灯为灭状态 //此处加程序代码,控制灯为灭的状态 } else { //此处加程序代码,控制灯为亮的状态,
while(1);}中断程序void time0 ()interrupt 1{TH0=……TL0=……a++;if(a==288000)//合计14400秒 { a=0;led1=!led1; led2=!led2;}}
求51单片机控制两个LED灯轮流亮灭程序,亮灭时间间隔两个小时,也就是说单片机的P2.0和2.1口
LED2灯灭 led2=1; if(key5==0){//按键5按下,两个LED灯打开 led1=0; led2=0; } if(key6==0){//按键6按下,两个LED灯关闭 led1=1; led2=1; } }}业界良心,希望采纳
一路直接接LED,另一路先通过一个非门再接LED,这样IO口输出0或者1时只点亮其中一个LED,即实现了控制。如果你还想要其他控制方式,那就是用串口的TXD发出数据了,这时要另一个单片机的RXD接收,然后可以控制多个LED。
你只要先定义 sbit P0^0=LED0;一定定义下去 然后再定义一个按钮 比如P1.1 sbit P1^1=key;代码里写 123456789while(true){if(key==1){LED0=0;LED1=0;..//把你要亮的灯置0就行了。阳极的话置1}}
比如要控制1-8号LED全亮,单片机先选择1号缓冲器,然后发送一个全亮的指令给1号缓冲器,1号缓冲器会记住单片机的这个全亮指令控制并保持(直到单片机再发送来新的指令更改1-8号LED的状态)自己管理的8个LED的状态。指令
同时亮或灭,只能使用字节传送指令,如:MOV P1, #11111100B 这样,P1.1和P1.0外接的LED将会同时亮。MOV P1, #11111111B 这样,P1.1和P1.0外接的LED将会同时灭。不同时灭,可以在不同的时刻使用位
怎样用单片机控制两个LED同时亮
void main(){ led=1;//初始化输出,可初始化=0 while(1){ if(key1==0){ led=0;//亮 } if(key2==0){ led=1;//灭 } } }
两个LED灯打开 led1=0; led2=0; } if(key6==0){//按键6按下,两个LED灯关闭 led1=1; led2=1; } }}业界良心,希望采纳
if(key1==0){led1=1;led2=1;} } if(key2=0){deIayms(20);if(key2=0){led1=0;led2=0;} } }
Delay(10);if(!key1) { while(!key1);led1 = ~led1;//KEY1按一下LED1亮 再按一下LED1灭 } } if(!key2) { Delay(10);if(!key2) { while(!key2) led1 = 1; //按下KEY2时LED1灭 led2
求一单片机C语言程序:两个按键控制两个LED KEY1按一下LED1亮 再按一下LED1灭 KEY2按下LED2亮 LED1灭
具体看LED的接法,改变两个if的参数,改变状态效果:例如led一边接了高电平,连接单片机这边给led=0为亮,若led一边为地GND(就是低电平)另外一边就要led=1才亮。 以下程序为一边接高电平,单片机引脚给0亮给1灭 #include sbit led=P1^0; sbit key1=P1^1; sbit key2=P1^2; void main() { led=1;//初始化输出,可初始化=0 while(1) { if(key1==0) { led=0;//亮 } if(key2==0) { led=1;//灭 } } }P1.0 接KEY1 到地 ,P1.1接KEY2到地,P0.0接LED到高电平。 我还附带给你加了按键防抖,程序如下: #include sbit key1=P1^0; sbit key2=P1^1; sbit led=P0^0; void delay(m) { int i,j; for(i=0;i<m;i++) { for(j=0;j<125;j++) { } } } void main() { while(1) { P1=0xff; if (key1==0) { delay(20); if(key1==0) { while(!key1); led=0; } } if (key2==0) { delay(20); if(key2==0) { while(!key2); led=1; } } } }
#include "reg51.h" #define uchar unsigned char sbit LED1=P2^0; sbit LED1=P2^1; unsigned int CNT1,CNT2; void main() { TMOD=0x01;//00000001设置定时器0工作方式1 TH0=(65536-50000*110592/120000)/256; TL0=(65536-50000*110592/120000)%256; ET0=1; EA=1; TR0=1; while(1) { ; } } void time0() interrupt 1 { TH0=(65536-1000*110592/120000)/256;// 111111111+1 TL0=(65536-1000*110592/120000)%256; CNT1++; if(CNT==3600) { CNT2++; if(CNT2<1000) { LED1=0;LED2=1; } else { LED1=1;LED2=0; } } }
你有什么教材吗?我用的郭天祥的教材的第74页就有一个控制一秒闪烁的。你这个问题是超简单的问题。 你要程序的话我可以给你
//请依照你的硬件输入相对值#defineKEY_ACTIVE_LEVEL(请输入)#defineKEY1_PIN(请输入)#defineKEY2_PIN(请输入)#defineLED_ON_LEVEL(请输入)#defineLED_LOW_LEVEL(请输入)#defineLED_PIN(请输入)unsignedcharis_key1_press(void){reutrn(KEY1_PIN==KEY_ACTIVE_LEVEL)l}unsignedcharis_key2_press(void){reutrn(KEY2_PIN==KEY_ACTIVE_LEVEL)l}voidset_led_to(unsignedcharvalue){LED_PIN=value;}voidmain(void){while(1){if(is_key1_press()&&is_key2_press()){set_led_to(LED_ON_LEVEL);}else{set_led_to(LED_OFF_LEVEL);}}}
初始化部分你要自己根据芯片资料写,数码管部分可以根据数码管的资料做数组xs[10]={0x3b……}要看数码管引脚定义了,看原理图看不出来的,可以做个200MS的定时器,然后计数5次就是1S 直接给数码管的IO口附数组的值,如P1=xs[5];要看你给的是哪个IO口了,我这边看不清你的原理图,LED亮200MS后就换动作太快,看不出效果,可以把时间加长