按键点灯程序,按一下按键灯亮(一直亮),再按一下灭,51单片机。
求按键点灯程序,51程序,P1^2口为KEY,P2^2口为LED,高电平LED亮,低电平灭,按一下KEY,灯亮(长亮),再轻按一下KEY,灯灭。求程序。...
求按键点灯程序, 51程序, P1^2口为KEY, P2^2口为LED, 高电平LED亮,低电平灭, 按一下KEY,灯亮(长亮),再轻按一下KEY, 灯灭。求程序。
展开
7个回答
展开全部
1、首先打开编程软件Keil uVision4,新建一个工程文件,在菜单栏中Project—— New uVision Project..。
2、然后选择单片机型号是 Atmel 公司的 AT89c52,单击OK。
3、再单击工具栏上新建按钮,新建一个文档,然后再点击保存,输入保存的路径,输入名字。
4、右键单击将这个文件添加到到工程文件夹中。
5、打开新建的文档,在文档中进行写程序。
6、点击下面方框中的图标,在Target项晶振的上写上:12.0代表晶振是12M,然后跳到Output项在生成HEX文件上打勾,点击OK。
7、然后点击三个编译按钮意思分别为:单个文件编译、编译已修改的文件、产生HEX文件,HEX文件用来下载到单片机上的,也可用来做仿真。
8、我们打开ISIS 7 Professional 软件,将程序添加到该电路中,然后按下启动按钮。
展开全部
按键点灯程序,按一下按键灯亮(一直亮),再按一下灭,51单片机。?1、首先打开编程软件Keil uVision4,新建一个工程文件,在菜单栏中Project—— New uVision Project..。
2、然后选择单片机型号是 Atmel 公司的 AT89c52,单击OK。
3、再单击工具栏上新建按钮,新建一个文档,然后再点击保存,输入保存的路径,输入名字。
4、右键单击将这个文件添加到到工程文件夹中。
5、打开新建的文档,在文档中进行写程序。
6、点击下面方框中的图标,在Target项晶振的上写上:12.0代表晶振是12M,然后跳到Output项在生成HEX文件上打勾,点击OK。
7、然后点击三个编译按钮意思分别为:单个文件编译、编译已修改的文件、产生HEX文件,HEX文件用来下载到单片机上的,也可用来做仿真。
8、我们打开ISIS 7 Professional 软件,将程序添加到该电路中,然后按下启动按钮。
2、然后选择单片机型号是 Atmel 公司的 AT89c52,单击OK。
3、再单击工具栏上新建按钮,新建一个文档,然后再点击保存,输入保存的路径,输入名字。
4、右键单击将这个文件添加到到工程文件夹中。
5、打开新建的文档,在文档中进行写程序。
6、点击下面方框中的图标,在Target项晶振的上写上:12.0代表晶振是12M,然后跳到Output项在生成HEX文件上打勾,点击OK。
7、然后点击三个编译按钮意思分别为:单个文件编译、编译已修改的文件、产生HEX文件,HEX文件用来下载到单片机上的,也可用来做仿真。
8、我们打开ISIS 7 Professional 软件,将程序添加到该电路中,然后按下启动按钮。
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
#include<reg52.h>
typedef int u16;
typedef char u8;
sbit led1=P2^0; //D1
sbit led2=P2^1; //D2
sbit led3=P2^2; //D3
sbit led4=P2^3; //D4
sbit k1=P3^1;//定义一个独立按键
sbit k2=P3^2;//定义一个独立按键
sbit k3=P3^3;//定义一个独立按键
sbit k4=P3^4;//定义一个独立按键
//定义延时函数
void delay(u16 i)
{
while(i--);
}
void keypros()//定义独立按键控制
{
if(k1==0)//说明按下去了
{
delay(1000);//消抖
if(k1==0)
{
led1=~led1;//翻转
}
while(!k1);//按键松开
}
if(k2==0)//说明按下去了
{
delay(1000);//消抖
if(k2==0)
{
led2=~led2;//翻转
}
while(!k2);//按键松开
}
if(k3==0)//说明按下去了
{
delay(1000);//消抖
if(k3==0)
{
led3=~led3;//翻转
}
while(!k3);//按键松开
}
if(k4==0)//说明按下去了
{
delay(1000);//消抖
if(k4==0)
{
led4=~led4;//翻转
}
while(!k4);//按键松开
}
}
void main()
{
while(1)
{
keypros();
}
}
typedef int u16;
typedef char u8;
sbit led1=P2^0; //D1
sbit led2=P2^1; //D2
sbit led3=P2^2; //D3
sbit led4=P2^3; //D4
sbit k1=P3^1;//定义一个独立按键
sbit k2=P3^2;//定义一个独立按键
sbit k3=P3^3;//定义一个独立按键
sbit k4=P3^4;//定义一个独立按键
//定义延时函数
void delay(u16 i)
{
while(i--);
}
void keypros()//定义独立按键控制
{
if(k1==0)//说明按下去了
{
delay(1000);//消抖
if(k1==0)
{
led1=~led1;//翻转
}
while(!k1);//按键松开
}
if(k2==0)//说明按下去了
{
delay(1000);//消抖
if(k2==0)
{
led2=~led2;//翻转
}
while(!k2);//按键松开
}
if(k3==0)//说明按下去了
{
delay(1000);//消抖
if(k3==0)
{
led3=~led3;//翻转
}
while(!k3);//按键松开
}
if(k4==0)//说明按下去了
{
delay(1000);//消抖
if(k4==0)
{
led4=~led4;//翻转
}
while(!k4);//按键松开
}
}
void main()
{
while(1)
{
keypros();
}
}
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
按一次1亮,再按一次灭。。。我自己写的检测管脚==0,然后去抖,等待释放什么的都写上了,不过效果是,当按着的时候有效果,放开就没效果了(恢复原来状态)。也就是让他亮,按着就亮,放开就灭了....囧...我需要的是1个按键分别让5个led成流水灯
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
引用小丿緣的回答:
你这个不对,按住按键不动后,程序高速跑起来,无法正确控制led开关,全部凭松开时间决定单片机运行到on位置或off位置
你这个不对,按住按键不动后,程序高速跑起来,无法正确控制led开关,全部凭松开时间决定单片机运行到on位置或off位置
展开全部
你这个不对,按住按键不动后,程序高速跑起来,无法正确控制led开关,全部凭松开时间决定单片机运行到on位置或off位置
本回答被网友采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询