键盘处理程序。完成从按键扫描、去抖到按键类型判断的全过程。
上传时间: 2016-12-22
上传用户:徐孺
按键K1控制指示灯的实验例程(经过软件消抖动处理]
上传时间: 2013-12-19
上传用户:evil
只要流程及功能:判断按键是否按下、是否弹 起、是否多按键按下、去抖、按键值送给KEYIN
上传时间: 2017-05-11
上传用户:zmy123
以PLD器件实现自动扫描去抖的编码键盘设计:键盘在单片机控制系统中是最常用的输入设备之一。虽然非编码键盘的硬件电路较为简单,但按键的识别及键值的计算则需软件来完成,因此需要耗费宝贵的机时;而编码键盘虽然程序简单且易于使用,但硬件比较复杂。因此,设计人员常常难以决定采用哪一类键盘。本文以GAL6002为例,介绍了一种用PLD器件来实现4X4键盘自动扫描去抖的编码键盘电路及其设计方法。
上传时间: 2013-10-17
上传用户:yangbo69
按键扫描的程序,优化还需要加双重防抖,解释按键的值或者名称
上传时间: 2015-09-09
上传用户:李梦晗
1.6个数码管动态扫描显示驱动 2.按键模式选择(时\分\秒)与调整控制 3.用硬件描述语言(或混合原理图)设计时、分、秒计数器模块、按键控制状态机模块、动态扫描显示驱动模块、顶层模块。要求有闹钟定闹功能,时、分定闹即可,无需时、分、秒定闹。要求使用实验箱左下角的6个动态数码管(DS6 A~DS1A)显示时、分、秒;要求模式按键和调整按键信号都取自经过防抖处理后的按键跳线插孔。
上传时间: 2016-08-02
上传用户:thuyenvinh
1.6个数码管静态显示驱动 2.按键模式选择(时\分\秒)与调整控制 3.用硬件描述语言(或混合原理图)设计时、分、秒计数器模块、按键控制状态机模块、显示译码模块、顶层模块。要求使用实验箱右下角的6个静态数码管(DS8C, DS7C, DS4B, DS3B, DS2B, DS1B)显示时、分、秒;要求模式按键和调整按键信号都取自经过防抖处理后的按键跳线插孔。
上传时间: 2013-12-09
上传用户:lili123
一个通用嵌入式产品按键处理程序,包含去抖,快进键,长按键,可方便的做成各种组合键。
上传时间: 2013-11-29
上传用户:change0329
该程序的功能是把演示板当做一个按键计数器。接通电源时,按下IDE软软件的运行键6只数码管全显示000000。 每按下开关S3(RB0)时,计数器的值加1,数码管显示也增加1,然后松开按钮;以些类推,反复循环。 2、程序中包含按键按下检测跟释放检测,并且都伴有一定的延时去抖功能,只有在一次按键被释放后才进行第2次按键的判断 3、程序中需开启B口的内部弱上拉功能,因DEMO板上无上拉电阻;并把A口全部设置为普通I/O口,上电复位后A口为模拟输入口
上传时间: 2016-08-30
上传用户:frank1234
在本课中,我们要用一个按键来实现跑马灯的 10 级调速。这又会涉及到键的去抖的问 题。 本课的试验结果是,每按一次按键,跑马速度就降低一级,共 10 级。 这里我们又增加了一个变量 speedlever,来保存当前的速度档次。 在按键里的处理中,多了当前档次的延时值的设置。 请看程序: ―――――――――――――――― #define uchar unsigned char //定义一下方便使用 #define uint unsigned int #define ulong unsigned long #include <reg52.h> //包括一个 52 标准内核的头文件 sbit P10 = P1^0; //头文件中没有定义的 IO 就要自己来定义了 sbit P11 = P1^1; sbit P12 = P1^2; sbit P13 = P1^3; sbit K1= P3^2; bit ldelay=0; //长定时溢出标记,预置是 0 uchar speed=10; //设置一个变量保存默认的跑马灯的移动速度 uchar speedlever=0; //保存当前的速度档次 char code dx516[3] _at_ 0x003b;//这是为了仿真设置的 //一个按键控制的 10 级变速跑马灯试验 void main(void) // 主程序 { uchar code ledp[4]={0xfe,0xfd,0xfb,0xf7};//预定的写入 P1 的值 uchar ledi; //用来指示显示顺序 uint n; RCAP2H =0x10; //赋 T2 的预置值 0x1000,溢出 30 次就是 1 秒钟 RCAP2L =0x00; TR2=1; //启动定时器 ET2=1; //打开定时器 2 中断 EA=1; //打开总中断 while(1) //主程序循环 { if(ldelay) //发现有时间溢出标记,进入处理 { ldelay=0; //清除标记 P1=ledp[ledi]; //读出一个值送到 P1 口 ledi++; //指向下一个 if(ledi==4) { ledi=0; //到了最后一个灯就换到第一个 } } if(!K1) //如果读到 K1 为 0 { for(n=0;n<1000;n++); //等待按键稳定 while(!K1); //等待按键松开 for(n=0;n<1000;n++); //等待按键稳定松开 speedlever++; if(speedlever==10)speedlever=0; speed=speedlever*3; //档次和延时之间的预算法则,也可以用查表方法,做出 不规则的法则 } } } //定时器 2 中断 timer2() interrupt 5 { static uchar t; TF2=0; t++; if((t==speed)||(t>30)) //比较一个变化的数值,以实现变化的时间溢出,同时限制了最慢速 度为 1 秒 { t=0; ldelay=1;//每次长时间的溢出,就置一个标记,以便主程序处理 } } ―――――――――――――――――――――― 请打开 lesson11 目录的工程,编译,运行,看结果: 按 K1,速度则降低一次,总共 10 个档次。
上传时间: 2017-11-06
上传用户:szcyclone