假设P1口接8个LED灯,通过灌电流驱动(即0亮1灭)。编译器keil C代码如下:include include //包含循环左移函数 _cro_l头文件 unsigned char tmp; //中间变量 /// // 延时子程序 ///

WT588D语音播放做过项目。

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 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灯,是他们逐个亮以后在逐个灭?

8盏灯从左到右依次被点亮,最后全亮;闭合第3个开关时,8盏灯从右到左依次被点亮,最后全亮个开关时,8盏灯从左到右依次被点亮,最后全亮;闭合第3个开关时,8盏灯从右到左依次被点亮,最后全亮

用STC89C52RC单片机实现流水灯,这是最简单的程序,用左移函数_corl_( )实现很容易。P0口接8个LED灯,用proteus 仿真时的仿真图和仿真效果如下。

1:首先设定一个变量i,可以是从0到3循环的变化,2:再检测一个经过消抖处理的按键,按一下,即i+1 3:当i值为各个值时,执行相应的变换花样。流水灯参考程序 include include define uchar unsigned char uchar j,tmp

include include define uint unsigned int define uchar unsigned char void delay(uint);void main(){ uchar i,j,k;uchar temp;temp=0xfe;while(1){ for(j=1;j>0;j--){ for(i=7;i

void display();int b0=0x00, b1=0xc0,b2=0x30,b3=0x0c,b4=0x03;sbit S16 = P3^5; //接在P30口的按钮 sbit S15 = P3^4;sbit S14 = P3^6;sbit S13 = P3^7;//有按键控制时要加防抖动处理 void

if(key ==0) {num++; } if(num==0){led1 =0;//亮,发光二极管负极接IO} //num是切换哪几个LED亮的或者哪几个LED灭的,完整的就不写了,1是太多,浪费时间,2是对你自己比较好。

编程:利用单片机STC89C52RC设计4个独立按键控制8个LED的亮灭?

一个简单的开关控制一盏灯的c程序如下:includesbit S1=P1^4; //将S1位定义为P1^4,检测独立按键sbit led0=P1^0; //将led0定义为P1.0口的LED/***

include "reg52.h"typedef unsigned int u16;typedef unsigned char u8;sbit led=P2^0;//把所要控制的led灯定义为p2.0这个口sbit k1=P2^1;sbit k2=P2^2;void delay(u16 i){while(i--);}//一个延时程序void

EA = 1; //开放全局中断 TR0 = 1; //启动定时器0 LED = 0; //关闭LED灯 while(1){ if(K1 == 0) // K1按下,增加频率 { while(K1 == 0); // 等待按键释放 freq += 20;if(freq >

void main(){ while(1)if(~key) // 如果按下 { while(~key); // 等待按键释放 LED=~LED; // 灯交替亮灭 } }

单片机,5.1c版本按键控制一盏灯程序

是强电的灯可以通过此处控制继电器的合、闭来控制灯的亮灭)。参考程序:if(key==0){delayms(10);if(key==10){while(key==0);//等待按键释放,IO口恢复高电平led=!led;//按键控制程序}}

你没有松手监测呀!就是在按键处理程序后要加一个while(k1!=0);就是只有你松开按键后才认为本次按键执行完毕,不然就会一直重复执行按键按下的程序,那么你的d1一直就会执行亮灭操作!

4.上传程序:将编写好的程序上传到单片机中。将单片机通过USB线连接到计算机,选择正确的开发板和端口,然后点击上传按钮将程序烧录到单片机中。5.测试控制:完成上传后,单片机将开始执行程序。LED灯应该会按照程序中定义的亮灭

就变成亮。按键按下就打控制灯的io取反就可以了。如:if(key1==1){while(key1==1); // 等待按键放开led1=~led1;}

while(!S1);//等待按键抬起 delay();//引用延时几十ms,否则LED的亮灭没法控制 } }

STM8S003F3 单片机 用1个按键控制一个LED亮灭

这个很简单吧 做一个变量然后取反不就行了嘛 这是最简单的基础知识了。
void main() { init(); while(1) { if (S1==0)//如果读取到按键为低电平取反后为高 则继续运行下面 { GPIO_WriteHigh(GPIOA, GPIO_PIN_3);//PA3为高电平 } if(S2==0) { GPIO_WriteLow(GPIOA, GPIO_PIN_3);//PA3为低电平 } } }
一个简单的开关控制一盏灯的c程序如下: #includesbit S1=P1^4; //将S1位定义为P1^4,检测独立按键sbit led0=P1^0; //将led0定义为P1.0口的LED/***********************************************************************************************************************************************延时函数***********************************************************************************************************************************************/void delay(void){unsigned int i;for(i=5000;i>0;i--);}/***********************************************************************************************************************************************主函数***********************************************************************************************************************************************/void main(void){while(1){if(S1==0) //判断是否有键按下{delay(); //有键按下,延时去抖,真正应用时要少用这种延时,占用时间,用定时器延时或一个寄存器循环检测10多次按键if(F0==0) //用F0标志位判断键按下是否已经处理,因刚学C语言没多久,//不知道怎么定义RAM能位寻址的寄存器,先用F0,按键多的话,一个F0不够用{F0=1; //F0置1,表示这次按键按下已处理led0=~led0; //将LED亮灭状态取反}}else //S1=1说明按键释放{F0=0; //F0清零,清按键已处理标志}}}
#include "reg51.h" // 试试 sbit k1 = P1^0;//按键1 开关 sbit p6 = P1^6; //输出1 灯 bit t1, t2; void main(void) { while(1) { if(k1==0 && t1==0) {t1=1; p6=~p6;} if(k1==1 ) {t1=0;} }} // 下面是四个开关,两个灯 的实例 http://zhidao.baidu.com/question/532520062.html
// 单片机控制八个led灯, 仿真实例 可以改为 各种花样。 #include #define uchar unsigned char #define uint unsigned int unsigned char TAB[]= {0xff,0xaa,0xff,0xaa,0xff,0xaa,0xff,0xaa,0xff,0x00,0xff,0x00,0xff,0x00,0xff,0x00,0xff,0xff,0xff}; // 改变这里 LED 各种花样 uchar t,i; void main() { TMOD=0x10; TH1=(65535-50000)/256; // 50ms一次 TL1=(65535-50000)%256; EA=1; ET1=1;//开定时器1中断 TR1=1;//启动定时器1 t=0; i=0; while(1) { } } void timer1() interrupt 3 { TH1=(65535-50000)/256; // 50ms一次 TL1=(65535-50000)%256; t++; if(t==20) { t=0; P1=TAB[i]; i++; if(i==18) { i=0;} } }
哎,只学过C,表示无能为力,不过也不难设计呀,会基本的按键识别就好了
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数码管可以通过指定的程序来改变数字的显示状态。静态显示的优点:操作简单,只需给出显示数据及时序就可以实现;显示效率高,不需要耗费大量时间;占用资源较少,显示无需连续变换,所以只需要较小的控制板来支撑;功耗较低;便于产品成本的控制;动态显示的优点:具有更加生动的动画特效,可以更有趣的提高用户的兴趣;实现较高的操作深度,能够更好的传达信息;操作灵活性高,能够更精确地实现显示的特效;缺点:静态显示:显示效果单一,显示效果不能灵活导入其他多态显示内容;动态显示:控制要求较高,需要更复杂的控制硬件和程序;占用资源较多;功耗也比较大;实现复杂的动态显示成本更高哦![开心][开心][开心]【回答】