谁能帮我写一个简单的按键检测c语言程序 功能,我想用单片机去检测按键在一秒钟内按键被按下了多少次,

谁能帮我写一个简单的按键检测c语言程序功能,我想用单片机去检测按键在一秒钟内按键被按下了多少次,然后单片机检测一秒钟内按下的次数来点亮对应的LED,比如一秒钟内检测按键按... 谁能帮我写一个简单的按键检测c语言程序
功能,我想用单片机去检测按键在一秒钟内按键被按下了多少次,然后单片机检测一秒钟内按下的次数来点亮对应的LED,比如一秒钟内检测按键按下了3次那么就点亮LED1,一秒钟内检测到5次就点亮LED2,检测到7次就点亮LED3,检测到9次就点亮LED4,检测到11次就点亮LED5,检测到一秒按下13次就点亮LED6,如果检测到次数不是3,5,7,9,11,13的就视为无效,不点亮任何一个LED。只有一秒内检测到3,5,7,9,11,13的次数才点亮对应的LED。请大侠帮忙写一个完整的程序,就是直接就可以使用的,IO口没关系你随便用就可以了,到时我再改一下就可以了,用c语言,注释一下最好,以便我能够读懂,小弟再此跪谢了。
展开
 我来答
916764686
2014-12-10
知道答主
回答量:39
采纳率:0%
帮助的人:22.2万
展开全部

#include <reg51.h>

#define uchar unsigned char

#define uint unsigned int


sbit led1 = P2^0;//定义管脚;

sbit led2 = P2^1;

sbit led3 = P2^2;

sbit led4 = P2^3;

sbit led5 = P2^4;

sbit led6 = P2^5;

sbit key  = P1^0;


uchar tcount=0,count=0;//定义时间变量和按键计数变量;


void Delay(uchar i)//机械延时;

{

while(--i);

}


void LedLight(void)//LED控制函数;

{

switch(count)

{

case 3 : led1 = 0;break;//3下时,LED1亮;

case 5 : led2 = 0;break;//5下时,LED2亮;

case 7 : led3 = 0;break;//7下时,LED3亮;

case 9 : led4 = 0;break;//9下时,LED4亮;

case 11: led5 = 0;break;//11下时,LED5亮;

case 13: led6 = 0;break;//13下时,LED6亮;

default: P2   = 0xff;break;//其余的都不亮;

}

}


void InitTimer0(void)//定时器0初始化;

{

TMOD = 0x00;

TH0 = (65536-50000)/256;

TL0 = (65536-50000)%256;

TR0 = 1;

}


void main(void)//主函数

{

InitTimer0();

while(1)//无限循环;

{

if(key==0)//检查按键是否按下;

{

Delay(10);//机械延时;

if(key==0){count++;}//按键计数;

while(key==0);

}

if(TF0==1)//复位定时器0;

{

TF0=0;

TH0 = (65536-50000)/256;

TL0 = (65536-50000)%256;

tcount++;

if(tcount==20)//1秒的时间;

{

LedLight();

Delay(100);

count=0;//复位按键计数变量;

}

}

}

}

更多追问追答
追问
还有一点补充一下,就是只点亮对应的LED前面,对应LED的后面不需要点亮。
追答
我这个可以的,我已经仿真过,你在一秒内按多少下对应的LED会亮的,其他是不会亮的
百度网友61fd31dfdb
2014-12-10 · 超过37用户采纳过TA的回答
知道答主
回答量:122
采纳率:100%
帮助的人:72.8万
展开全部
按下的键:
#include<conio.h>
#include<stdio.h>
main()
{
while (kbhit())
{
printf("你按下了");
}
}
本回答被网友采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式