51单片机只有2个外中断是P3.2 和 P3.3 可以用计数器再实现2个外中断(计数器0, P3.4和计数器1, P3.5)4个按键分别接到P3.2--P3.5 4个LED随便接其它IO口

不用中断一样的实现,而且可以有多少个按键就可以有多少种流水灯方式。你使用的键盘函数直接调用流水灯函数就可以。比如使用独立键盘,if(P1.1==0) light_water(); 然后:void light_water(){ num=1;for(a=0;a<8;

MOV A, P1 ;读入P1口 ORL A, #0FH ;置位低四位 SWAP A ;交换高低半字节,用按键位状态驱动LED MOV P1, A ;写入P1口 SJMP LOOP ;--- 这个程序,效率,比采纳答案中的程序,大约提高

程序的思路如下:(假设你的LED依序连接到51的I/O口,键盘也连接到对应的I/O)在51的主循环里面加入一个判断语句,是否有按键按下,之后软件除抖,调用相应的子功能函数即可.

sbit led4=P1^4; //led灯,按实际再改 sbit key1=P2^1; //按键,按实际再改 sbit key2=P2^2; //按键,按实际再改 sbit key3=P2^3; //按键,按实际再改 sbit key4=P2^4; //按键,按实际再改 void delay

include void delay(unsigned char n);void main(){P2=0x30;while(1){delay(200);if(P2!=0x30){P2=P2;P2&=0xcf;}}}void delay(unsigned char n){unsigned char i;while(n--){for(i=0;i<100;

TX-1单片机开发板 独立键盘开关接在P3.4到P3.7口#includesbit p34=P3^4;sbit p35=P3^5;sbit p36=P3^6;sbit p37=P3^7;void delay(uint z);main(){while(1){if(p34==0)P1=0xfe;if(p35==0)

51单片机中用4个开关控制4个发光二极管的C语言程序设计

程序是写的多一些,但通用 。ORG00H AJMPMAIN ORG30H MAIN:MOVDPTR,#TAB K1:JBP3.0,K2 ACALLDISP JNBP3.0,$-2 MOV30H,#10 K2:JBP3.1,K3 ACALLDISP JNBP3.1,$-2 MOV30H,#20 K3:ACALLDISP JBP3.2,

case 2:led1=1;led2=1;led3=1;led4=1;break;default:break;} } } } } 按一下key1全亮,再按一下key1全灭往复循环 2.分别控制每盏亮灭 include sbit key1 = P1^0;sbit led1 = P0^

case 0x38:P1^0 = 1;while(!P3^2);P1^0 = 0;break;//按键K1按下灯灭,等待按键松开D1亮 case 0x34:P1^1 = 1;while(!P3^3);P1^1 = 0;break;//k2 case 0x2C:P1^2 = 1;while(!P3^4);P1^2 =

led2=0;if(led1==0){ led1=1;} } } /*检测按钮2*/ } }

MOV LED,#00001111 AJMP LOOP K1~K4对应按键输入口,LED对应LED输出,两者应为普通IO口

单片机编程:当按下按键K1时,LED亮1个灯;当按下K2时,LED亮2个灯;K3亮3个灯;K4亮4个灯。求程序,在线

sbit led2=P1^2; //led灯,按实际再改 sbit led3=P1^3; //led灯,按实际再改 sbit led4=P1^4; //led灯,按实际再改 sbit key1=P2^1; //按键,按实际再改 sbit key2=P2^2; //按键,按实际再改 sbit ke

步骤如下:1、开始—读P1口数据到A。2、A中的数据右移4次—A中的内容和F0H相或。3、A中的数据送到P1口—回到开始。4、单片机的P1.0-P1.3接四个发光二极管L1-L4的阴极,P1.4-P1.7接四个开关K1-K4。5

不用中断一样的实现,而且可以有多少个按键就可以有多少种流水灯方式。你使用的键盘函数直接调用流水灯函数就可以。比如使用独立键盘,if(P1.1==0) light_water(); 然后:void light_water(){ num=1;for(a=0;a<8;

include void delay(unsigned char n);void main(){P2=0x30;while(1){delay(200);if(P2!=0x30){P2=P2;P2&=0xcf;}}}void delay(unsigned char n){unsigned char i;while(n--){for(i=0;i<100;

51单片机C编程,4个开关控制4个灯。要求上电清零,开关灯一一对应。当1个开关按下,其它开关不起作用。

先定义4个按键,sbit k1=P1^0;sbit k2=P1^1;sbit k3=P1^2;sbit k4=P1^3;再定义一个变量计数,分别计1,2,3,4,对应4个按键。在主循环程序中判断4个按键是否按下,每一个开关按下,变量赋值对应

开始:TRx=1,停止:TRx=0,至于快慢的控制你可以在中断函数里边写一个延时函数,然后按键3和4按下一次自增或自减1000(你可以取其他值),然后传递给延时函数。有不懂的地方随时回复我。希望我的回答能帮助到你。

程序的思路如下:(假设你的LED依序连接到51的I/O口,键盘也连接到对应的I/O)在51的主循环里面加入一个判断语句,是否有按键按下,之后软件除抖,调用相应的子功能函数即可.

仿真通过(为了你前途着想,这个代码留了一个缺陷,自己去研究发现改良吧)如果是开关判断的就用楼上的吧 楼上的代码也是为了你前途着想啊,,自己改吧..没必要那么长的 include void delay(unsigned char n);void

sbit led4=P1^4; //led灯,按实际再改 sbit key1=P2^1; //按键,按实际再改 sbit key2=P2^2; //按键,按实际再改 sbit key3=P2^3; //按键,按实际再改 sbit key4=P2^4; //按键,按实际再改 void delay

/*正向流水点亮LED*/ void forward(void){ P3=0xfe;led_delay();P3=0xfd;led_delay();P3=0xfb;led_delay();P3=0xf7;led_delay();P3=0xef;led_delay();P3=0xdf;led_delay();P3=0xbf;led_delay();P3=

include//k2~k4 分别控制le1~le4 void delay(unsigned int x) //延时函数{ while(x--); //延时数减一} void key_event (unsigned char d) //根据扫描到的键值,亮相应的LED { switch(d)

51单片机 c语言 如何用4个按键控制4个流水灯

} if(k4==0) { while(k4==0); keyval=4; } switch(keyval) { case 1:led1=0;delay(1);led1=1;keyval=0;break;

程序的思路如下:(假设你的LED依序连接到51的I/O口,键盘也连接到对应的I/O)在51的主循环里面加入一个判断语句,是否有按键按下,之后软件除抖,调用相应的子功能函数即可.

TX-1单片机开发板 独立键盘开关接在P3.4到P3.7口#includesbit p34=P3^4;sbit p35=P3^5;sbit p36=P3^6;sbit p37=P3^7;void delay(uint z);main(){while(1){if(p34==0)P1=0xfe;if(p35==0)

不用中断一样的实现,而且可以有多少个按键就可以有多少种流水灯方式。你使用的键盘函数直接调用流水灯函数就可以。比如使用独立键盘,if(P1.1==0) light_water(); 然后:void light_water(){ num=1;for(a=0;a<8;

if(key1 == 0) //如果高电平按下按键就==1 { delay(200); //按键防抖 if(key1 == 0){ led1=1; //如果低电平亮就=0 led2=0;led3=0;led4=0;} } if(key2 == 0){ delay(200); //按键防

include void delay(unsigned char n);void main(){P2=0x30;while(1){delay(200);if(P2!=0x30){P2=P2;P2&=0xcf;}}}void delay(unsigned char n){unsigned char i;while(n--){for(i=0;i<100;

include//k2~k4 分别控制le1~le4 void delay(unsigned int x) //延时函数{ while(x--); //延时数减一} void key_event (unsigned char d) //根据扫描到的键值,亮相应的LED { switch(d)

求解读51单片机用四个按键独立控制四个led的c程序

单片机的P1.0-P1.3接四个发光二极管L1-L4的阴极,P1.4-P1.7接四个开关K1-K4 程序:ORG 00H START: MOV A,P1 ANL A,#0F0H RR A RR A RR A RR A ORl A,#0F0H MOV P1,A SJMP START 可以检测单个

程序的思路如下:(假设你的LED依序连接到51的I/O口,键盘也连接到对应的I/O)在51的主循环里面加入一个判断语句,是否有按键按下,之后软件除抖,调用相应的子功能函数即可.

51单片机只有2个外中断是P3.2 和 P3.3 可以用计数器再实现2个外中断(计数器0, P3.4和计数器1, P3.5)4个按键分别接到P3.2--P3.5 4个LED随便接其它IO口

{ P1.1=num<<1;delay(1000); //延时;keyboard();//执行时又不停扫描键盘函数;} } 这样就会有一个LED从右往左移动8次;那么当第一次流水未完时,又调用第二个流水函数light_water1就能中断当前执行的流水函数又

led3=key3; led4=key4; }}

include void delay(unsigned char n);void main(){P2=0x30;while(1){delay(200);if(P2!=0x30){P2=P2;P2&=0xcf;}}}void delay(unsigned char n){unsigned char i;while(n--){for(i=0;i<100;

include//k2~k4 分别控制le1~le4 void delay(unsigned int x) //延时函数{ while(x--); //延时数减一} void key_event (unsigned char d) //根据扫描到的键值,亮相应的LED { switch(d)

51单片机用4个按钮分别控制四个LED的程序

#include //51芯片管脚定义头文件 #include //内部包含延时函数 _nop_(); #define uchar unsigned char #define uint unsigned int uchar code FFW[8]={0xf1,0xf3,0xf2,0xf6,0xf4,0xfc,0xf8,0xf9}; uchar code REV[8]={0xf9,0xf8,0xfc,0xf4,0xf6,0xf2,0xf3,0xf1}; /********************************************************/ /* /* 延时t毫秒 /* 11.0592MHz时钟,延时约1ms /* /********************************************************/ void delay(uint t) { uint k; while(t--) { for(k=0; k<125; k++) { } } } /********************************************************/ /* /*步进电机正转 /* /********************************************************/ void motor_ffw(uint n) { uchar i; uint j; for (j=0; j<12*n; j++) //转1×n圈 { for (i=0; i<8; i++) //一个周期转30度 { P1 = FFW[i]; //取数据 delay(15); //调节转速 } } } /********************************************************/ /* /*步进电机反转 /* /********************************************************/ void motor_rev(uint n) { uchar i; uint j; for (j=0; j<12*n; j++) //转1×n圈 { for (i=0; i<8; i++) //一个周期转30度 { P1 = REV[i]; //取数据 delay(15); //调节转速 } } } /******************************************************** * * 主程序 * *********************************************************/ main() { while(1) { motor_ffw(5); //电机正转 delay(5000); //换向延时 //motor_rev(5); //电机反转 //delay(1000); //换向延时 } } /********************************************************/
#include//k2~k4 分别控制le1~le4 void delay(unsigned int x) //延时函数{ while(x--); //延时数减一} void key_event (unsigned char d) //根据扫描到的键值,亮相应的LED { switch(d) { case 14: P1^=(1>=4;//a=a>>4; //移动4位,a 取值 if(a!=15) //至少有个键按下 { if(i==0) //0 的时候,标示没有建按下 { delay(1000); //延时 1000次b=P2; //把按键的口赋给变量 bb>>=4; //移动四位,b 取值if(a==b) //如果a和b相等{ key_event(b) ; //这次按键有效 i=1; //1 不允许其它键按下} } } else { i=0; //不是有效键按下,清 0 }}void main() //主函数开始{ while(1) //进入循环,检测按键按下情况 { key(); }}
这个找TB,很多的!如果是C语言的实物,可以搜:C语言 数码管 单片机 实物。如果是汇编语言的仿真,可以搜:汇编语言 数码管 单片机 仿真。根据类似的方式,很好找的!
要控制LED灯的亮度,应采用PWM方式,对实物控制可以实现,仿真效果出不来。
不用中断一样的实现,而且可以有多少个按键就可以有多少种流水灯方式。你使用的键盘函数直接调用流水灯函数就可以。比如使用独立键盘,if(P1.1==0) light_water(); 然后: void light_water() { num=1; for(a=0;a<8;a++) { P1.1=num<<1; delay(1000); //延时; keyboard();//执行时又不停扫描键盘函数; } } 这样就会有一个LED从右往左移动8次;那么当第一次流水未完时,又调用第二个流水函数light_water1就能中断当前执行的流水函数又去执行第二个流水灯函数了。
其实很简单的,随便使用一个定时/计数 器,使其工作在方式1(方便计算初值),然后写中断服务函数,使用_crol_()函数来反复循环做流水效果,然后在主函数最后写while(1),一直不停扫描键盘函数,然后键盘函数定义4个按键,开始:TRx=1,停止:TRx=0,至于快慢的控制你可以在中断函数里边写一个延时函数,然后按键3和4按下一次自增或自减1000(你可以取其他值),然后传递给延时函数。 有不懂的地方随时回复我。 希望我的回答能帮助到你。
需要给你完成吗
#includesbit key1=P1^0;sbit key2=P1^1;sbit key3=P1^2;sbit key4=P1^3;sbit led1=P1^4;sbit led2=P1^5;sbit led3=P1^6;sbit led4=P1^7;main(){while(1) { led1=key1; led2=key2; led3=key3; led4=key4; }}
是仿真吗?还是在开发板上的? K2,K3,4个LED灯接哪个脚上了? 要画仿真图吗,或者你有电路图吗? 用C语言编程,还是汇编?
#include #define uchar unsigned char #define uint unsigned int sbit key1=P1^1; sbit key2=P1^2; sbit led1=P2^1; sbit led1=P2^2; /*【根据硬件设置端口】*/ void delayms(uint); void delayms(uint xms) { uint i ,j; for(i=xms;i>0;i--) for(j=110;j>0;j--); } void main() { while(1) { if(key1==0) { delayms(10); if(key1==0) { led1=0; if(led2==0) { led2=1; } } } /*-检测按钮1-*/ if(key2==0) { delayms(10); if(key2==0) { led2=0; if(led1==0) { led1=1; } } } /*检测按钮2*/ } }
#include//k2~k4 分别控制le1~le4 void delay(unsigned int x) //延时函数{ while(x--); //延时数减一} void key_event (unsigned char d) //根据扫描到的键值,亮相应的LED { switch(d) { case 14: P1^=(1>=4;//a=a>>4; //移动4位,a 取值 if(a!=15) //至少有个键按下 { if(i==0) //0 的时候,标示没有建按下 { delay(1000); //延时 1000次b=P2; //把按键的口赋给变量 bb>>=4; //移动四位,b 取值if(a==b) //如果a和b相等{ key_event(b) ; //这次按键有效 i=1; //1 不允许其它键按下} } } else { i=0; //不是有效键按下,清 0 }}void main() //主函数开始{ while(1) //进入循环,检测按键按下情况 { key(); }}
为什么要用4*4矩形键盘呢?你说的这个功能要求,三个独立按键就可以完成了。写一个键盘检测函数,当不同键按下时,改变不同的参数。根据你的要求,设置两个参数,第一个参数切换abcd,一个参数存放一个三位数字,key1控制abcd的切换,key2控制加第二个参数,key3控制减第二个参数。