以51为例子,假如低电平灯亮 include sbit K1=P1^0 //P^0接开关 sbit LED=P1^1;//接LED void main(void){ P1=oxff;//初始化P1 while(1){ LED=~K1;} }

首先if(SW13==0)是判断此引脚是否为0 (按键按下)然后一个delay用于按键防抖动 没被注释的那部分是靠if在次判断是否为0按下按下后执行LED_ON函数使LED亮 然后通过while判断按键是否松开,如果松开的话就继续执行LED_

LED = 0; //turn off } }

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

当松手时,KEY1 = 1,不满足if语句不 进入循环,LED继续保持当前状态即LED = 0,如果再次按下按键,此时检测到KEY1 = 0,进入循环,LED取反得到LED = 0,灯亮。*/ delay(500); /*此处延迟,保证连续两次按键

1、首先打开桌面上的keil软件,在进行对51单片机进行编程时最常用的就是keil软件。2、编写相应的代码:#include //定义单片机的头文件sbit led=P2^0; //定义单片机的管脚,void main(void) //主函数

单片机用c语言,按钮控制一个LED灯,要求按下松开,LED亮,按下松开,LED暗!循环

可以利用if语句和I++、I--、功能调节变量的值,然后把这个变量联系到延时函数中去就差不多了,请试一试。

i];delay(200);} else for(i=3;i>=0;i--){ //run=1,dir=0,自下而上流动 P2=led[i];delay(200);} else P2=0xff; //若run=0,全部灯灭 } }

用两个按键,然后定义一个变量,按键1按下变量增加,按键二按下变量减少。注意按键消抖。然后把变量放到延时函数的参数里面,就可以啦。

include typedef unsigned char uint8;typedef unsigned int uint16;sbit anjian = P1^0; //按键位 void delay(uint16 h) //延时程序 { while(h--);} main(){uint8 k = 0 , i = 0;P0

delay(5000);如果所带参数是一个常数,那流水灯的速度就是固定不变的。如果改成一个变量,如:delay(speed); 这速度就可以变化可调了。这样,通过按键改变变量speed的值,就调速度了。

你可以简单地认为单片机只能输出5V或者0V的电压 分别对应1和0,那么LED灯的另一端接地或者接5V,如果你 的单片机输出5V接到LED灯,LED灯另一端接地 ,那就产生电压了,电路就导通了,灯就亮了 ,反之也是这个道理。时间

51单片机按键控制流水灯速度

由于时间有限和本身知识水平的限制,本系统还存在一些不够完善的地方,要作为实际应用还有一些具体细节问题需要解决。例如:扩展红外探测技术,指纹识别技术,语音识别技术,图像识别技术等等。这样更能满足社会的发展和人民的需求。

实训报告总结~高职高专教育培养的是技术应用型人才,学校为了培养我们学生的创新精神和和工程实践能力,提高我们的综合素质,故在底13周带领全校学生进行为期一周的实训,在时间中互相学习和进步。现在我们已步入大二下学期,经过

实验心得体会(一) 时间过得真快,不经意间,一个学期就到了尾声,进入到如火如荼的期末考试阶段。 在学习单片机这门课程之前,就早早的听各种任课老师和学长学姐们说过这门课程的重要性和学好这门课程的关键~~多做单片机实验。 这个学

第一步(熟悉的过程):买了一款51单片机开发板,然后就开始了我的学习之旅,刚开始的时候没有去看视频教程,而是对着一本实验教材进行学习,那本实验教材的名字记不清楚了,但是其内容就是围绕单片机的led灯进行控制,将51单片机内部的各个功能

▼ 单片机实训总结范文篇一: 通过今次单片机实训,使我对单片机的认识有了更深刻的理解。系统以51单片机为核心部件,利用汇编软件编程,通过键盘控制和数码管显示实现了基本时钟显示功能、时间调节功能,能实现本设计题目的基本要求和发挥部分。

单片机实训总结范文5篇

1. 双控开关基础电路图当K1扳到1位置的时候,k2扳到3位置,电路接通,电灯亮,此时,再扳动任何一个开关,都能使电灯熄灭。这属于两地开关控制

sbit key2=P1^1;sbit led=P1^4;void t0isr() interrupt 1 { TH0=(65536-10000)/256;TL0=(65536-10000)%256;cnt++;if(cnt>=speed){ cnt=0;led=~led;} } main(){ uchar keyval;TMOD=0x01;TH0=(65536-

define led P2// char i;sbit k1=P3^6; //启动按键 sbit k2=P3^7;//停止按键 bit s=0; // 启停标志 char a[]={0xfe,0xfd,0xfb,0xf7,0xef,0xdf,0xbf,0x7f}; //LED灯的数组 void delay1s(

key2==1)//按键1按下,按键2没按 { led=0;//亮 } else if(key1==1 )//按键1释放或未按时,灯灭 { led=1;//灭 } if(key2==0 && key1==1)//按键2按下,按键1没按 { led=0;//先亮 delay_1s(

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

else if(key2 == 0) /*按键2按下*/ { led = 1; /*灯灭*/ delay(1000);while(!key2);} } }

delay1(10); //消抖 if(!k3) { while(!k3);//等待松开 LED = ~LED;//亮灭交替 } } } }

51单片机 2个独立按键控制一个led

首先要计算一下LED驱动总电流,比如10个LED每个5mA总电流就需要50mA,然后要选择一个限流电阻,假定电源电压为5V,那么R=5-2(黄色LED正向压降)/50=60欧姆,可选标称值62欧姆0.5W电阻,若低电平有效驱动可选8550三极管,L

控制亮度,51需要设置io口为推挽输出,在设置相应的引脚输出高低电平,即可控制灯的亮灭

第三,每进入中断一次count++,满足条件count==PWM_ON或count==CYCLE时改变LED的当前状态。作用是给小灯亮或灭的时间不同。第四,LED的亮度与其通电时间有关,也可以说成是占空比。上面的条件要理解成是呈线性增加或减小的

这两个控制延时时间的,改变0FFH就可以改变延时时间也就改变LED亮度。

3.编写程序:使用单片机的编程软件(如Arduino IDE、Keil等),编写控制LED灯的程序。以下是一个简单的示例程序(以Arduino为例):// 定义LED灯连接的引脚 const int ledPin = 13;void setup() { // 将LED引脚设置为

pwm,用定时器T1溢出做pwm周期,在每次T1开始计数时触发输出,软件边增1计数边检查溢出标志。如果软件计数满则清输出,否则直到溢出清输出、清软件计数满值。改变软件计数满值就能改变亮度。

51单片机怎样控制LED的光亮度

void main(){ int i, j;a = 0xfe;while(1) { a = _crol_(a, 1);P1 = a; //单个LED灯,接在P1的任意引脚 for(j = 100; j > 0; j--)for(i = 1000; i > 0; i--);} }

并控制LED灯的闪烁频率;然后使用一个计时器中断服务程序来控制LED灯的闪烁,具体实现方式请参考代码注释。最后,为了保证每个周期的闪烁持续时间与频率相符,应该在循环内部加入一个延时操作,等待一定时间再进入下一次循环。

你写的程序并没有加载到工程中,只是写了程序没有用的,不加到工程中,是不能编译的。程序是对的。见下图,首先要把写的程序保存,然后在画红圈的位置,点鼠标右键,把这个程序加进来,加载进来后,左边应该是那样的。

led=1;//点亮 delay(100);//延时100MS led=0;//熄灭 } else led=0;} void delay(unsigned int i){自己根据单片机频率写个1MS带形参的演示程序} 这个程序是现写的。。应该能执行,有些细节没有写,自己修改下,

1、新建项目,如图所示。2、添加头文件,创建延迟函数。3、创建C主函数。4、添加死循环效果。5、点亮LED灯。P1=0x7e;二进制11111110。6、添加延迟效果。注意事项:很多公司都有51系列的兼容机型推出,今后很长的一段时间内

说明:单片机控制LED灯间隔时间闪烁 所用程序很简单,实际情况可作相应变化,也有多种方式实现。proteus电路图 所需元件清单:(分别是) 51单片机 电容 瓷片电容(也可用普通电容) 晶振 红色二极管 电阻 (tip:没有给高电

51单片机C程序实验LED灯:[1]单个灯闪烁

#include sbit led = P1^0; sbit key1 = P2^0; sbit key2 = P2^1; void delay(unsigned int cnt) //简单的延时 { while(--cnt); } /*------------------------------------------------ MAIN C Function ------------------------------------------------*/ void main (void) { while (1) { if(key1 == 0) /*按键1按下*/ { led = 0; /*灯亮*/ delay(1000); while(!key1); /*消抖*/ } else if(key2 == 0) /*按键2按下*/ { led = 1; /*灯灭*/ delay(1000); while(!key2); } } }
#include #define uint unsigned int #define uchar unsigned char #define LED P0 sbit S1=P1^0; 按键1 void delay(uint i) { uchar x,j; for(j=0;j<i;j++) for(x=0;x<=148;x++); } void main() { if(s1==0) { delay(2); if(s1==0) { LED=0; } } } 这是个按键控制P0 口 当按键按下后P0口的灯会全部点亮,你的题目是控制多个led灯,太笼统了 都大同小异,你自己在看看吧。。。。。。希望能帮到你。
#include#include#define uchar unsigned charuchar led,time=0;sbit key=P1^0;void t0isr() interrupt 1{TH0=(65536-50000)/256;TL0=(65536-50000)%256;led=_crol_(led,1);P0=led;time++;if(time>=200)TR0=0;}main(){uchar keyval=0;TMOD=0x01;TH0=(65536-50000)/256;TL0=(65536-50000)%256;ET0=1;EA=1;while(1) { if(key==0) { while(key==0); keyval++; keyval%=3; } switch(keyval) { case 0:led=0xff;P0=led;break; case 1:TR0=1;led=0xfe;break; case 2:TR0=0;break; default:break; } }}
#include#include#define uchar unsigned charuchar keyval,led,led1;sbit key=P3^2;void ext0() interrupt 0{while(key==0);keyval++;keyval%=3;}void delay(uchar a){uchar i;while(a--)for(i=0;i<120;i++);}main(){led=0xfe;led1=0x55;while(1) { switch(keyval) { case 0:P1=led;led=_crol_(led,1);delay(200);break; case 1:P1=led;led=_cror_(led,1),delay(200);break; case 2:P1=led1;led1=~led1;delay(200);brek; default:break; } }}
bit flash;//闪烁标志位 sbit led=P0^0; sbit P01=P0^1; sbit P02=P0^2; void main() { P01=P02=0; flash=0; led=0; while(1) { scankey(); ledflash(); } } void scankey()//键盘扫描 { P01=1;//行线给1 if(P02)//如果P02也是1则说明接通 { delay(10);//去抖动10MS if(P02)//再次确定按键按下 { while(P02){flash=flash}//按住按键的动作 flash=~flash;//按键按下后执行动作 } } } void ledflash() { if(flash) { led=1;//点亮 delay(100);//延时100MS led=0;//熄灭 } else led=0; } void delay(unsigned int i) {自己根据单片机频率写个1MS带形参的演示程序} 这个程序是现写的。。应该能执行,有些细节没有写,自己修改下,只是个大框而已(比如函数声明,定义端口什么的)
这个很简单啊~~ 写一个嵌套判断~ if(key==0) { delay(100); //假设这是1s的延时,嵌套10个就是10秒的~~ if(key==0) { delay(100); if(key==0) { flag=1; //标志位改变 } } } if(flag==1) { led=1; //灯点亮 } if(key==1) { flag=0; //标志位还原 } if(flag==0) { led=0; //灯熄灭 }