WT588D语音播放做过项目。
你就先开第一个灯(设为1),然后延时1秒,然后关闭第一个灯(设为0),然后延时1秒。然后开第二个灯(第二个灯设为1),然后延时2秒,然后关闭第二个灯(第二个灯设为0),然后延时2秒啊
while(!p1.1);P0.4=1;} if(P1.2==0){ while(!p1.2);P0.6=1;} if(P1.0==0||P1.1==0||P1.2==0){ P0.2=1;delay();P0.2=0;P0.4=1;delay();P0.4=0;P0.6=1;delay();P0.6
在四个灯循环点亮的状态下,每点亮一个灯需要延时,如果调用延时子程序,按键就显示不灵敏了,所以,采用定时器中断的方式控制延时,就不影响按键了。include
1.实现点亮一个LED 2.实现点亮任意位置上的一个LED 3.实现点亮一个LED,并让他1秒亮,1秒灭 接下来,剩下的工作,相信你一定能完成了。当然,这中间如果遇上了什么困难,你还可以百度hi我 我不太赞成直接把答案给你,
d1=0; //设为低电平,LED灯亮 d3=0; //设为低电平,LED灯亮 d5=0; //设为低电平,LED灯亮 d7=0; //设为低电平,LED灯亮 } void main(){ PortState(); //主函数里面调用 while(1);//~~~其
LED4 = 0;delay(50000);LED3 = 0;delay(50000);LED2 = 0;delay(50000);LED1 = 0;delay(50000);} } 上述代码实现了四个 LED 灯逐个亮起来然后再逐个灭掉的效果。其中,sbit 定义了四个位于 P2 口的 LED 灯
编写一段程序,要求用at89c51控制四个led灯,是他们逐个亮以后在逐个灭?
开始:TRx=1,停止:TRx=0,至于快慢的控制你可以在中断函数里边写一个延时函数,然后按键3和4按下一次自增或自减1000(你可以取其他值),然后传递给延时函数。有不懂的地方随时回复我。希望我的回答能帮助到你。
void t0isr() interrupt 1 { TH0=(65536-60000)/256;TL0=(65536-60000)%256;switch(fun){ case 0:P0=led1;led=_crol_(led1,1);break;case 1:P0=led1;led=_cror_(led1,1);break;case 2:P0=led2;led=_
TLOW EQU 0F0HTHIGH EQU 0D8HFLAG_DIR BIT 20H.0;FANGXIANGCOUNT_INT DATA 30HCOUNT_K DATA 31HLEDVALUE DATA 32HCOUNT_KEY DATA 33HKEY0 EQU P2.0KEY1 EQU P2.1KEY2 EQU P2
P1口接8个LED灯,P3口接4个按键K1~K4 ,用于控制流水灯的四种效果,仿真图如下。
不用中断一样的实现,而且可以有多少个按键就可以有多少种流水灯方式。你使用的键盘函数直接调用流水灯函数就可以。比如使用独立键盘,if(P1.1==0) light_water(); 然后:void light_water(){ num=1;for(a=0;a<8;
不用中断一样的实现,而且可以有多少个按键就可以有多少种流水灯方式。你使用的键盘函数直接调用流水灯函数就可以。比如使用独立键盘,if(P1.1==0) light_water(); 然后:void light_water(){ num=1;for(a=0;a<8;
EA=1;
我想做一个单片机流水灯,大概思路是让单片机通过四个独立键盘控制四种形势的流水灯,向前辈求教程序
将按键连接在一个I/O口上比如P0上然后读取P0的状态执行相应的程序让灯走起来比如按键1控制P0.0读取的P0值为1在执行1所对应的程序
sbit key1=P2^1; //按键,按实际再改 sbit key2=P2^2; //按键,按实际再改 sbit key3=P2^3; //按键,按实际再改 sbit key4=P2^4; //按键,按实际再改 void delay(unsigned int t) //延时函数 { while
P3=0xff; //关闭8个LED led_delay();P3=0x00; //点亮8个LED led_delay();} void main(void){ TMOD=0x01;EA=1;
include
51单片机 c语言 如何用4个按键控制4个流水灯
include
if(key1 == 0) //如果高电平按下按键就==1 { delay(200); //按键防抖 if(key1 == 0){ led1=1; //如果低电平亮就=0 led2=0;led3=0;led4=0;} } if(key2 == 0){ delay(200); //按键防
不用中断一样的实现,而且可以有多少个按键就可以有多少种流水灯方式。你使用的键盘函数直接调用流水灯函数就可以。比如使用独立键盘,if(P1.1==0) light_water(); 然后:void light_water(){ num=1;for(a=0;a<8;
include
求解读51单片机用四个按键独立控制四个led的c程序
在四个灯循环点亮的状态下,每点亮一个灯需要延时,如果调用延时子程序,按键就显示不灵敏了,所以,采用定时器中断的方式控制延时,就不影响按键了。include
include
程序的思路如下:(假设你的LED依序连接到51的I/O口,键盘也连接到对应的I/O)在51的主循环里面加入一个判断语句,是否有按键按下,之后软件除抖,调用相应的子功能函数即可.
);break;case 3:P1_3=~P1_3;delay02s();break;} } } 这个是我很久以前做的,有一点不同就是这个灯不但会亮还会闪,可以把闪的程序删掉。我有KEIL文件和PROTEUS文件。这个图可以实现这个效果了,修改一下就行了。
单片机的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 可以检测单个
不用中断一样的实现,而且可以有多少个按键就可以有多少种流水灯方式。你使用的键盘函数直接调用流水灯函数就可以。比如使用独立键盘,if(P1.1==0) light_water(); 然后:void light_water(){ num=1;for(a=0;a<8;
include
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(你可以取其他值),然后传递给延时函数。 有不懂的地方随时回复我。 希望我的回答能帮助到你。
流水灯是一个长循环,在长达数秒的流水期间按键当然不起作用。 必须把按键检测插入到这个长循环中。
操!!!你他妈的怎么搞的麻!!就是你放LED的左边上面从第一个脚数到8脚。接LED负。LED正接一个1K的电阻到正5V就可以了。骂着好玩。不要生气啊!我支持你学习!! #include typedef unsigned char uint8; typedef unsigned int uint16; main() { uint8 j = 8; uint16 i; while(1) { P1 = ~(1 << --j); for(i=0; i<20000; i++); if(0 == j) { j = 8; } } }
51单片机是一款广泛应用于嵌入式系统的微控制器。在51单片机开发板上,我们可以通过P1口来控制8盏LED灯。在这里,我们需要编写一个能够使这些LED灯呈现右移流水灯效果的程序。首先,我们需要定义好每个LED灯的控制位,将它们分别映射到P1口的每个引脚。假设我们将第一个LED连接到P1.0引脚,第二个LED连接到P1.1引脚,依此类推,直到第八个LED连接到P1.7引脚。那么,我们可以通过下面的代码来初始化这些引脚,并将它们配置为输出模式:void init_leds(void){ P1 = 0x00; //将P1口所有引脚初始值设为0 P1M0 = 0x00; //将P1口所有引脚都设为标准输出模式 P1M1 = 0x00;}接下来,我们需要定义用于控制LED流水灯移动方向的变量和计数器。我们将使用一个名为‘direction’的变量来控制流水灯的移动方向。如果direction变量的值为1,则流水灯朝左移动。如果值为0,则流水灯朝右移动。我们还需要一个计数器‘i’来控制流水灯的移动速度。unsigned char direction = 0; //变量用来控制流水灯的移动方向unsigned char i = 0; //变量用来控制流水灯的移动速度【摘要】 在51单片机开发板上,P1口控制8盏LED灯,对应位为0时灯亮,编写8个led右移流水灯程序【提问】 51单片机是一款广泛应用于嵌入式系统的微控制器。在51单片机开发板上,我们可以通过P1口来控制8盏LED灯。在这里,我们需要编写一个能够使这些LED灯呈现右移流水灯效果的程序。首先,我们需要定义好每个LED灯的控制位,将它们分别映射到P1口的每个引脚。假设我们将第一个LED连接到P1.0引脚,第二个LED连接到P1.1引脚,依此类推,直到第八个LED连接到P1.7引脚。那么,我们可以通过下面的代码来初始化这些引脚,并将它们配置为输出模式:void init_leds(void){ P1 = 0x00; //将P1口所有引脚初始值设为0 P1M0 = 0x00; //将P1口所有引脚都设为标准输出模式 P1M1 = 0x00;}接下来,我们需要定义用于控制LED流水灯移动方向的变量和计数器。我们将使用一个名为‘direction’的变量来控制流水灯的移动方向。如果direction变量的值为1,则流水灯朝左移动。如果值为0,则流水灯朝右移动。我们还需要一个计数器‘i’来控制流水灯的移动速度。unsigned char direction = 0; //变量用来控制流水灯的移动方向unsigned char i = 0; //变量用来控制流水灯的移动速度【回答】 然后,我们可以编写LED流水灯移动的主要逻辑。鉴于我们想要让LED灯像水一样流动,因此我们需要使用一个循环,使LED灯逐个被打开或关闭。我们使用P1口来打开或关闭LED灯。代码如下:void led_flow(void){ while(1) { if(direction == 0) //如果direction变量值为0,也就是右移 { for(i = 0; i = 0; i--) { P1 = (1 << i); //将第i位设置为高电平 delay_ms(100); //延时100毫秒 P1 = 0x00; //将所有的LED灯都关闭 } } }}上面的代码使用for循环控制LED灯逐个打开或关闭,并使用delay_ms()函数来控制流水灯的移动速度。在右移模式下,每个LED灯都会从右向左逐个亮起并熄灭。在左移模式下,每个LED灯都会从左向右逐个亮起并熄灭。最后,我们需要在主函数中调用上面的初始化函数和LED流水灯函数。void main(){ init_leds(); //初始化LED灯 led_flow(); //启动LED流水灯程序}完成了上述步骤后,我们就成功地编写了一个能够实现8个LED右移流水灯效果的程序,它可以通过P1口控制8盏LED灯。【回答】 这个程序可以发一下吗?【提问】 发过去了,亲【回答】 只要程序,这个文字掺杂,有点看不是很懂【提问】 void init_leds(void){ P1 = 0x00; //将P1口所有引脚初始值设为0 P1M0 = 0x00; //将P1口所有引脚都设为标准输出模式 P1M1 = 0x00;}unsigned char direction = 0; //变量用来控制流水灯的移动方向unsigned char i = 0; //变量用来控制流水灯的移动速度void led_flow(void){ while(1) { if(direction == 0) //如果direction变量值为0,也就是右移 { for(i = 0; i = 0; i--) { P1 = (1 << i); //将第i位设置为高电平 delay_ms(100); //延时100毫秒 P1 = 0x00; //将所有的LED灯都关闭 } } }}void main(){ init_leds(); //初始化LED灯 led_flow(); //启动LED流水灯程序}【回答】 这个好像和我们不太一样呀,我们这个都是#include.reg51.h【提问】 然后再编写【提问】 是的呢【回答】 代码不是都有int,for这些吗?为啥你发的没有呢?【提问】 变量用啥来定义都行,里面有for啊【回答】
您好亲~使用AT89C51可以制作出一个流水灯,它可以控制4个或4个以上的LED灯,采用低电平激活信号。首先,给定电路:RS, RW, 和,EN口由晶体发射管与接受管(P0.0~P0.7)连接,R5, R4用来分别控制4个或4个以上LED灯。每当低电平到达R5或R4时,LED灯就会亮起,而当高电平到达时,LED灯就会熄灭。将电路中的晶体发射管和接收管连接R5,R4,RS,RW和EN口后,就可以成功控制4个以上的LED灯。并且,可以在AT89C51的离散IO卡上编写程序来控制LED灯的流水灯效果,这样就可以自动控制LED灯的流水灯效果。 此外,我们可以增加更多的晶体发射管和接受管来连接R5,R4,RS,RW和EN口,以便控制更多的LED灯。也可以使用不同颜色的LED灯来形成更多种更炫的效果实现更好的视觉效果哦![开心][开心][开心]【摘要】 第二次单片机作业+1.使用AT89C51制作一个流水灯,控制4个以上LED灯,采用低电【提问】 您好亲~使用AT89C51可以制作出一个流水灯,它可以控制4个或4个以上的LED灯,采用低电平激活信号。首先,给定电路:RS, RW, 和,EN口由晶体发射管与接受管(P0.0~P0.7)连接,R5, R4用来分别控制4个或4个以上LED灯。每当低电平到达R5或R4时,LED灯就会亮起,而当高电平到达时,LED灯就会熄灭。将电路中的晶体发射管和接收管连接R5,R4,RS,RW和EN口后,就可以成功控制4个以上的LED灯。并且,可以在AT89C51的离散IO卡上编写程序来控制LED灯的流水灯效果,这样就可以自动控制LED灯的流水灯效果。 此外,我们可以增加更多的晶体发射管和接受管来连接R5,R4,RS,RW和EN口,以便控制更多的LED灯。也可以使用不同颜色的LED灯来形成更多种更炫的效果实现更好的视觉效果哦![开心][开心][开心]【回答】 2.LED数码管的静态显示和动态显示有何区别?各有什么优缺点?【提问】 您好亲~LED数码管的静态显示指的是只有一个固定的数字显示;而动态显示指的是在指定时间段内经过数字变化,运行重复图案,并停留在指定状态的显示,也就是说LED数码管可以通过指定的程序来改变数字的显示状态。静态显示的优点:操作简单,只需给出显示数据及时序就可以实现;显示效率高,不需要耗费大量时间;占用资源较少,显示无需连续变换,所以只需要较小的控制板来支撑;功耗较低;便于产品成本的控制;动态显示的优点:具有更加生动的动画特效,可以更有趣的提高用户的兴趣;实现较高的操作深度,能够更好的传达信息;操作灵活性高,能够更精确地实现显示的特效;缺点:静态显示:显示效果单一,显示效果不能灵活导入其他多态显示内容;动态显示:控制要求较高,需要更复杂的控制硬件和程序;占用资源较多;功耗也比较大;实现复杂的动态显示成本更高哦![开心][开心][开心]【回答】