如何用C语言实现按键功能?

作者&投稿:岳蚁 (若有异议请与网页底部的电邮联系)
怎么一个按键实现三功能C语言程序~

一个按键实现三个功能,可以是点按(按键时间不超过500毫秒),双击(500毫秒内按两次),长按(超过1秒)。具体可以参考马潮老师的按键长短按的程序,或者可以自己研究一下原理。
写一个定时器,每10毫秒读一次按键端口值。如果是按下的值,则在下一个10毫秒时再检测一次按键端口值(消抖)。如果还是按下的值,则开始计数。根据技术值来判断是点按、双击还是长按。

在你的基础上改的
#include<stdio.h>
#include<stdlib.h>

#define LISTSIZE 100
#define ADD 10
typedef struct {
int *elem;
int length;
int listsize;
}List;//定义线性表的结构体
void SqList(List &L)
{

//int i;//C++中C程序的变量定义放在开始

L.elem=(int *)malloc(LISTSIZE*sizeof(int));
if(!L.elem) exit(0);
L.listsize=LISTSIZE;
//printf("请输入线性表长度:");
//scanf("%d",&L.length);
//printf("为线性表赋值:");
//for(i=0;i<=L.length-1;i++)
//scanf("%5d",&L.elem[i]);
L.length =0;//如果是初始化,那么长度就是0
}//初始化线性表

int InsertSq(List &L,int i,int e)
{
int *p=NULL, *q=NULL;//所有变量的定义都必须置前
if(i<0||i>L.length+1) return 0;
if(L.length>=L.listsize)
{
int *newbase;
newbase=(int *)realloc(L.elem,(L.listsize+ADD)*sizeof(int));
if(!newbase) exit(0);
L.elem=newbase;
L.listsize+=ADD;
}

q=&L.elem[i-1];
for(p=&L.elem[L.length-1];p>=q;--p)
*(p+1)=*p;
*q=e;
L.length++;
return 1;
}//在线性表的第i个元素之前插入元素e

void PrintList(List L)
{
printf("顺序表中的元素:
");
for(int k=0;k<=L.length-1;k++)
printf("%5d",L.elem[k]);
printf("
");
}

void main()
{

//void SqList(List &L);
//int InsertSq(List &L,int i,int e);使用之前已经定义了,可以不用函数说明
List L;
int i,e; //函数调用前,变量必须定义

SqList(L);
printf("输入顺序表中元素的个数:");
scanf("%d",&i);

printf("请输入元素:");
for(int j=1;j<=i;j++)
{
scanf("%d",&e);
InsertSq(L,j,e);
}

PrintList(L);
printf("输入插入的元素及其位置:");
scanf("%5d%5d",&e,&i);
InsertSq(L,i,e);
PrintList(L);
}

主要就是按键检测,防抖呗。
首先给出检测按键代码:(我这个事4*4键盘。具体你要根据实际情况编写)
uchar TestKey()
{
uchar cord_h,cord_l;
P6=0x0f;
cord_h=P6&0x0f;
if(cord_h!=0x0f)
{
Delay_Xms(1);
if(cord_h!=0x0f)
{
cord_h=P6&0x0f;
P6=cord_h|0xf0;
cord_l=P6&0xf0;
return(cord_h+cord_l);
}
}return(0xff);
}

--------------------------------------
然后你在Main函数里编写循环,检测按键然后做你想做的事情。。。
while(1)
{
key=TestKey();//调用键盘扫描,
switch(key)
{
case 0x7e:P4=0xa1;break;//0 按下相应的键显示相对应的码值
case 0x7d:Show1Menu();break;//1
case 0x7b:P4=0x83;break;//2
case 0x77:P4=0x88;break;//3
case 0xbe:P4=0x99;break;//4
case 0xbd:P4=0x90;break;//5
case 0xbb:P4=0x82;break;//6
case 0xb7:P4=0xb0;break;//7
case 0xde:P4=0xc0;break;//8
case 0xdd:P4=0x80;break;//9
case 0xdb:P4=0x92;break;//a
case 0xd7:P4=0xa4;break;//b
case 0xee:P4=0xc6;break;//c
case 0xed:P4=0xf8;break;//d
case 0xeb:P4=0x99;break;//e
case 0xe7:P4=0xf9;break;//f
}
}


如何用c#编写程序,实现按键功能
1、创建项目文件。2、按键:S1=P3^2,点亮: led=P1^5。3、创建C语言主函数。4、创建循环效果,检测效果。while(1){ } 5、创建选择效果。6、当按下时,即暂停与恢复。

如何用C语言实现按键功能?
主要就是按键检测,防抖呗。首先给出检测按键代码:(我这个事4*4键盘。具体你要根据实际情况编写)uchar TestKey(){ uchar cord_h,cord_l;P6=0x0f;cord_h=P6&0x0f;if(cord_h!=0x0f){ Delay_Xms(1);if(cord_h!=0x0f){ cord_h=P6&0x0f;P6=cord_h|0xf0;cord_l=P6&0xf0;return...

C语言怎么捕捉按键
include<stdio.h>#include<conio.h>int main(){ int key; while(1) { key=getch(); if(key==27) break; if(key>31 && key<127) \/*如果不是特殊键*\/ { printf("按了 %c 键 按 ESC退出!\\n",key); continue; } key=getch(); if(key==...

C语言中如何实现按任意键退出
C语言中可以使用函数system()、getch()实现按键退出。1、直接调用系统函数 system(“pause”):system()会调用fork()产生子进程, 由子进程来调用\/bin\/sh-c string 来执行参数string 字符串所代表的命令, 此命令执行完后随即返回原调用的进程。system(“pause”)可以实现冻结屏幕,便于观察程序的执行结...

C语言如何模拟键盘输入?
\/\/作用:实现在窗口中显示按键信息 voidShowKey(HWNDhwnd,intiType,char*szMessage,WPARAMwParam,LPARAMlParam){ staticchar*szFormat[2]={"%-14s%3d%c%6u%4d%5s%5s%6s%6s","%-14s%3d%c%6u%4d%5s%5s%6s%6s"};charszBuffer[80];HDChdc;ScrollWindowEx(hwnd,0,-yChar,&rc,&rc,NULL,...

用C语言实现计算器,要有按键功能!(+-*\/即可)
{ int date;struct node *next;};typedef struct node *link;link number=NULL;link symble=NULL;\/\/把数据放入栈中\/\/ link push(link stack ,int num,int k){ link newnode;newnode=(link)malloc(sizeof(struct node));if(newnode==NULL)cout<<"out of space"<<endl;else { if(k...

按键短按三次,短按两次实现不同功能,C语言怎么写?
\/\/ 定义一个功能模式的变量,=0:功能1 =1:功能2 等等 void main( void ){ while( 1 ){ if( KeyPort & KeyID != KeyID )\/\/ 就是功能模式选择键按下的意思 { DelayMs(30); \/\/ 短延时消抖 if( KeyPort & KeyID != KeyID )\/\/ 按键按下 { Funtion_Mode ++; \/\/ 按下一次,...

怎么用C语言\/C51程序实现单片机按键长按开机与长按关机?
首先需要硬件支持,也就是单片机某个引脚可以控制断电和维持上电 按键的的作用也可以给单片机供电,并且还要有个专门的引脚检测按键状态。软件:首先是长按判断。这个最好用按键扫描。就是检测按键按下时候,定时器计时,如果松开就立即清零。在设置一个功能函数检测定时值,大于两秒后,就表示长按。按键按...

在51单片机中用c语言写程序实现用一个按键控制8个灯的亮和灭(按下按 ...
)\\r\\n2、按第一个键:原理就是按键中断,直接跳到中断程序里,中断程序就是显示12345678(程序里是二进制码,单片机只认识0和1)。\\r\\n3、数码管移动显示,其实就是data脚的数据给的不一样,这个地方注意延时,你可以尝试改变延时时间看看效果。\\r\\n4、同3;\\r\\n5、12345678和ABCDEFGH的二进制码不...

用单片机p2口扩展一个4*4键盘,用c语言实现按键识别程序
return 0; \/\/无键按下,返回0 } void getkey(void){ unsigned char key;key=kbscan();if(key==0){keyval=0xff;return;} switch(key){ case 0x11:keyval=7;break;case 0x12:keyval=4;break;case 0x14:keyval=1;break;case 0x18:keyval=10;break;case 0x21:keyval=8;break;case 0x...

贵溪市13816167285: 如何用C语言实现按键功能? -
郸闸降脂: 主要就是按键检测,防抖呗. 首先给出检测按键代码:(我这个事4*4键盘.具体你要根据实际情况编写) uchar TestKey() {uchar cord_h,cord_l;P6=0x0f;cord_h=P6&0x0f;if(cord_h!=0x0f){Delay_Xms(1);if(cord_h!=0x0f){cord_h=P6&0x0f...

贵溪市13816167285: C语言实现单片机按键? -
郸闸降脂: 这个很好实现,设置一个音调的参数,这个参数由2键改变,每次变化后,保存在EEPROM里面,而每次按1时,判断当前的音调是什么,然后发出相应的音调即可,你只要找一个带EEPROM的单片机就可以了,比如STC系列的单片机.

贵溪市13816167285: 如何写一个用C语言模拟按键的源代码 -
郸闸降脂: keybd_event(VK_LEFT, 0, 0, 0); //键盘方向左键按下 keybd_event(VK_LEFT, 0, KEYEVENTF_KEYUP, 0); //左键释放 同样,右键的虚键为 VK_RIGHT 注意要加头文件 "windows.h"

贵溪市13816167285: C语言写一个自动按键程序 -
郸闸降脂: 用循环语句实现1秒的延时,跳出循环后再延时(如2秒)如无结束键按下再跳转回1秒延时循环.

贵溪市13816167285: c语言怎么实现模拟按键 -
郸闸降脂: 循环检测按键,根据不同按键输入进行功能跳转.没有按键输入,就去执行时间显示等待.

贵溪市13816167285: 如何利用c语言添加button按钮 -
郸闸降脂: Windows 窗体程序是基于消息机制的,所有控件,它的本质都是一个窗体,都是使用 CreateWindows 函数来创建,不过类名,则需要指定为系统预先注册的控件类,比如,你要创建一个按钮控件,就要这样子 CreateWindows( "BUTTON", "按钮标题" ),CreateWindows 这个函数你应该用了不少了吧,其余的参数可以参考 MSDN,但是类名我们指定了 “BUTTON”,说明我们要创建一个按钮,每个按钮都有一个唯一的 ID,通过你的消息处理函数,可以知道哪个按钮发生了什么事件,详细讲的话,非常多,你可以参考 MSDN,或者《Windows 程序设计》这本书 .

贵溪市13816167285: 怎么用C语言写出一个让程序自动按键的,只要按两个键就够了 -
郸闸降脂: c语言完成这个有点难,用按键精灵吧,实现这个很简单的.退出程序的话,用编程来说,你可以先选定你程序的窗口句柄,然后直接关掉这个窗口,你要是想纯模拟键盘操作的话,你还得考虑当前焦点在不在你的程序窗口上.

贵溪市13816167285: 请问怎样实现c语言的模拟按键? -
郸闸降脂: 调win32api函数SendMessage实现模拟按键 #include <windows.h> ... SendMessage(hWnd,WM_KEYDOWN,键值,0); ... 其中hWnd是目标窗口的句柄值是被宏定义过的,VK_ENTER回车,VK_ESC是ESC,VK_A是A键等目标窗口句柄可以通过HWND hwnd=FindWindow("窗口名");获得

贵溪市13816167285: 我想知道用C语言怎么写一个控制键盘输入的程序,比如让键盘自动执行ctrl或shift功能等.请哪位高手帮帮忙 -
郸闸降脂: 可以用普通的C语言来写.调用User32.lib 的函数:void keybd_event(BYTE bVirturalKey,BYTE bScanCode, DWORD dwFlags,DWORD dwExtraInfo) ctrl 键是 VK_CONTROL bScanCode = 0x9d shift键是 VK_SHIFT 0xaa 揿键是 0,0 键弹上来是:...

贵溪市13816167285: C语言,或者C++实现按键的函数 -
郸闸降脂: 明确的说c库里没有,c一般用来做底层的,c++的基础类可以实现,但是要自己画,自己添加响应,没人这么做.有人用c++开发了进行Gui开发的工具包,不只是widows的MFC,VC那一套,还有跨平台的Qt,widget等,java在上层应用方面也挺不错的,尤其是网络方面,开发很方便.

本站内容来自于网友发表,不代表本站立场,仅表示其个人看法,不对其真实性、正确性、有效性作任何的担保
相关事宜请发邮件给我们
© 星空见康网