




版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
单⽚机双击长按c语⾔,51单⽚机按键检测源程序(实现单击、双击、长按等功能)...原理:将按键这⼀事件的过程划分成如下⼏个状态://stata函数运⾏状态//0:初始状态//1:第⼀洗按键按下//2:第⼀次长按抬起//3:第⼀次短按抬起//4:第⼆次按键按下//5:第⼆次按键抬起利⽤定时器记录系统运⾏时间,根据系统运⾏时间来确定按键时间间隔,根据不同的时间间隔来判断当前按键事件处于哪⼀过程以及是否结束该事件。主函数中应循环调⽤按键检测函数,调⽤间隔不超过100ms,此函数不会阻塞程序运⾏。版本说明:............................................................版本号Beta0.0本驱动⼯具包主要包含以下驱动(xxx.c⽂件和xxx.h⽂件共同使⽤,下⾯不再写后缀)1“define.h”----包含了类型定义与开发板属性的设置(如晶振频率等)2“delay”----定义了两个延时函数,⽀持STC⼤多数芯⽚(除15H系列..)【提⽰】本函数库中驱动多数依赖于"delay.c""delay.h"和"define.h"⽂件3“digital_display”----数码管显⽰驱动(硬件是基于两个373锁存器分别⽤作段数据和位数据)4“digital_to_string”----包含了浮点数转换成字符串的函数5“DS18B20”----温度传感器驱动6“DS1302”----时钟芯⽚驱动7“I2C”----软件模拟I2C总线驱动8“Keyboard”----矩阵键盘驱动9“LCD_1602_display”----1602液晶屏驱动(并⼝)10“LCD_12864_display”----12864液晶屏驱动(并⼝带中⽂字库)(只是显⽰⽂字,不包含画图)11“NEC_IR_coding”----⽤⼀个红外LED实现红外编码发射的驱动12“NEC_IR_decoding”----红外解码驱动13“NRF24L01”----2.4G⽆线通讯模块驱动14“Uart”----串⼝驱动相关函数未完待续...............................................................
............................................................版本号Beta0.1修复了数码管有关残影的bug取消了矩阵键盘的松⼿检测,检测不到键按下时返回0代替未完待续...........................................................................................................................版本号Beta0.2加⼊了独⽴按键的检测,兼容矩阵按键,修复了矩阵键盘关于不同开发板兼容性的bug增加了串⼝不同波特率的初始化程序未完待续...........................................................................................................................版本号Beta0.3调整了数码管显⽰驱动的结构代码,⽅便不同开发板移植调整了红外解码阈值,提⾼解码效率未完待续...........................................................................................................................版本号Beta0.41602液晶驱动的代码更改为区域刷新,字符串长度不够显⽰空格,避免出现显⽰残留调整了若⼲驱动⽂件名字修复了数字转字符串函数在显⽰0时有负号的bug添加了QMC5883地磁场传感器驱动未完待续...............................................................核⼼代码如下:/*按键检测返回值:0⽆结果1短按2长按3双击*/
u8key_scan(){//stata函数运⾏状态//0:初始状态//1:第⼀洗按键按下//2:第⼀次长按抬起//3:第⼀次短按抬起//4:第⼆次按键按下//5:第⼆次按键抬起u8res=0;staticu8key_sta,stata=0;staticu32time=0,time1=0,time2=0;if(key==0)//按下消抖{delay_10ms(1);if(key==0)key_sta=0;elsereturn0;}else//松开消抖{delay_10ms(1);if(key==1)key_sta=1;elsereturn0;}if(stata==0)//0:初始状态{if(key_sta==0){stata=1;time=system_time;
}return0;}elseif(stata==1)//1:第⼀洗按键按下{time1=system_time;time2=time1-time;if(time2>60){stata=2;}elseif(key_sta==1){time=system_time;stata=3;}return0;}elseif(stata==2)//2:第⼀次长按抬起{if(key_sta==1){stata=0;return2;}return0;}elseif(stata==3)//3:第⼀次短按抬起{time1=system_time;time2=time1-time;if(time2>30){stata=0;
return1;}elseif(key_sta==0){stata=4;}return0;}elseif(stata==4)//4:第⼆次按键按下{if(key_sta==1)//5:第⼆次按键抬起{stata=0;return3;}return0;}elsereturn0;}voidtime0_irq()interrupt1using1//系统时间定时器10ms+1{TL0=0x00;TH0=0xDC;system_time++;}//设置定时初值//设置定时初值说明:该⼯程使⽤了STC头⽂件,请在STC-ISP软件中将头⽂
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 招聘策略优化的相关试题及答案
- 提升基金分析能力的试题及答案
- 全媒体运营师职场经验分享:试题及答案
- 二零二四年份第三季度离婚协议中个人隐私数据删除条款
- 电子信息行业电磁辐射防护手册
- 新型智能配送网络设计与建设方案
- 市场营销渠道选择与执行作业指导书
- 项目成本核算与利润分析表
- 医疗行业智慧医疗平台建设与运营方案
- 工业制造工业40智能制造升级方案
- 公路工程施工现场安全检查手册
- 幼儿园绘本故事:《十二生肖》 课件
- (完整版)人教版小学3-6年级英语单词表-可直接打印
- 一例心肌梗塞患者的病例讨论培训课件
- GB∕T 13171.2-2022 洗衣粉 第2部分:试验方法
- 楷书(课件)课件
- 工程监理部人员分工与职责
- 课程设计 CA6140拨叉说明书
- 成语故事杞人忧天PPT教案
- 部编版三年级上册音乐知识点汇总
- 生命体征的测量PPT幻灯片课件
评论
0/150
提交评论