单片机独立按键控制led灯程序(单片机按键控制LED灯)
单片机用c语言,按钮控制一个LED灯,要求按下松开,LED亮,按下松开,LED暗!循环
1、首先打开桌面上的keil软件,在进行对51单片机进行编程时最常用的就是keil软件。
2、编写相应的代码:#includereg52.h //定义单片机的头文件sbit led=P2^0; //定义单片机的管脚,void main(void) //主函数{ while(1) //无限循环 {led=0x1f; //点亮前面三个灯。这里是十六进制的换算, //不懂得可以查一下资料 }。
3、打开烧写软件,点击【打开文件】,寻找刚刚编写的程序。
4、找到相应的文件夹以后,寻找HEX文件。这是所能烧写软件识别的程序。
5、找到程序以后,将单片机连接到电脑,并点击程序下载,将程序烧写进单片机。
6、程序下载进单片机以后就能够看到八个led点亮了前面三个。
单片机 用C语言怎么编写用一个按钮,控制一盏灯的亮与灭的程序?
读取连接按键的IO口,判断是否为低电平,如果是,延时(十毫秒左右可以),再次读取IO口,判断是否为低电平,如果是则表示有有效的按键按下,接着用while判断等待按键释放,然后让连接led的IO口电平取反以控制其亮灭(是强电的灯可以通过此处控制继电器的合、闭来控制灯的亮灭)。参考程序:if(key==0){delayms(10);if(key==10){while(key==0);//等待按键释放,IO口恢复高电平led=!led;//按键控制程序}}
我为51单片机设计了一个用独立按键控制LED的程序,求大神看看程序有没有什么能够优化的地方。
#includereg51.h
#includeintrins.h
sbit k1=P3^1;
sbit k2=P3^0;
sbit k3=P3^2;
sbit k4=P3^3;
bit flag=0;
typedef unsigned char u8;
typedef unsigned int u16;
#define led P2
void delay(u16 i)
{
while(i--);
}//延时函数
u8 keyscan(void)
{
u8 keyval=0;
if(k1==0)
{
while(k1==0);
keyval=1;
}
if(k2==0)
{
while(k2==0);
keyval=2;
}
if(k3==0)
{
while(k3==0);
keyval=3;
flag=~flag;
}
if(k4==0)
{
while(k4==0);
keyval=4;
}
return(keyval);
}
main()
{
u8 key1,key2,num=0;
u8 led[8]={0xfe,0xfd,0xfb,0xf7,0xef,0xdf,0xbf,0x7f};
while(1)
{
key1=keyscan();
if(key1!=0)key2=key1;
switch(key2)
{
case 1:P0=led[num];delay(10000);P0=0xff;delay(10000);num++;num%=8;break;
case 2:P0=led[num];delay(10000);P0=0xff;delay(10000);num--;if(num==0)num=7;break;
case 3:if(flag)P0=led[num];else P0=0xff;break;
case 4:P0=led[num];while((key1=keyscan())!=4);P0=0xff;key1=key2=0;num=0;break;
default:break;
}
}
}
52单片机独立按键控制LED流水灯
怎么个控制法,按一下,流水灯停下,再按一下开始,
还是按一下对应亮一个或亮下一个
还是想知道怎么用按键
教你用按键的方法,功能你自己去实现。把io口拉高电平后,接按键,如果按键按下,会接地,读出的io口电平会变为低,这样就可以判断说法按下按键,但要一直重复读取io口数据,而且要防抖动。
{
unsigned int temp,k=9;
P2=0xff;//用P2检测键盘
temp=P2;
temp=temp0xff;
if (temp!=0xff)//接地了,有按下
{
delayxms(10);//等键盘稳定,以确认不是误按、抖动
temp=P2;//再次检测
temp=temp0xff; //防抖 ,确认是按下
if (temp!=0xff)//确认不是误按、抖动
{
switch (temp)
{
case 0xfe:k=0;break;
case 0xfd:k=1;break;//不同情况做出不同处理,变为0的是按下的键
case 0xfb:k=2;break;
case 0xf7:k=3;break;
case 0xef:k=4;break;
case 0xdf:k=5;break;
case 0xbf:k=6;break;
case 0x7f:k=7;break;
}
}
}
}
单片机通过按钮控制一个LED小灯的亮灭,请问这个程序怎么写
led应该是一个变量,是代表led灯 亮或者灭的一个变量。 当你按下开关后,s1==0,就执行 led=!led 这条语句。 led=!led
的意思就是取反的意思,即原来led灯亮的话 执行该条语句后就变成灭;原来灭的话 执行该条语句后
就变成亮。按键按下就打控制灯的io取反就可以了。如:if(key1==1){while(key1==1); //
等待按键放开led1=~led1;}
关于单片机独立按键控制led灯程序和单片机按键控制LED灯的介绍到此就结束了,不知道你从中找到你需要的信息了吗 ?如果你还想了解更多这方面的信息,记得收藏关注本站。微信号:ymsc_2016
相关文章
发表评论
评论列表
- 这篇文章还没有收到评论,赶紧来抢沙发吧~