主函数中扫描该函数即可,需要注意按键按下时程序会停留在该函数中,知道松手或时间到0.8s,大于0.8秒为长按,小于为短按,可以自己根据需要修改,初始化函数因板子而异,这里就不列出来了
u8 KEY_N; //在头文件中声明一下外部变量,用于主函数中判断哪个按键按下
u8 KEY_Scan(void) //返回值temp代表按键按下的时间(=temp*10 MS)
{
static u8 flag=1;
u8 temp=0;
if(flag==1)
{
if(KEY1_IN==0) //下面四个按键相似操作
{
flag=0;
while(KEY1_IN==0&&temp<85)
{
temp++;
Delay_Ms(10);
}
KEY_N=1;
return temp;
}
if(KEY2_IN==0)
{
flag=0;
while(KEY1_IN==0&&temp<85)
{
temp++;
Delay_Ms(10);
}
KEY_N=2;
return temp;
}
if(KEY3_IN==0)
{
flag=0;
while(KEY1_IN==0&&temp<85)
{
temp++;
Delay_Ms(10);
}
KEY_N=3;
return temp;
}
if(KEY4_IN==0)
{
flag=0;
while(KEY1_IN==0&&temp<85)
{
temp++;
Delay_Ms(10);
}
KEY_N=4;
return temp;
}
}
if(KEY1_IN==1&&KEY2_IN==1&&KEY3_IN==1&&KEY4_IN==1)
{
flag=1;
KEY_N=0;
}
return 0;
}
还有就是怎么利用上面这个扫描函数实现按键长按时某个量连续增减,下面以时钟的小时位长按连加为例:
从上面扫描函数代码中可以看到当按键按下时间到0.85s程序就会返回了,也就是主程序会往下执行了,但是KEY_N还不为0,直到按键松开后才会变为0,所以在主函数中就可以通过判断这个变量来判断按键是否松开,未松开则每隔50ms自增一次,延时不能太短,不然眼睛看不出来。
while(KEY_N)
{
Time_Hour++;
if(Time_Hour==24) Time_Hour=0;
sprintf((char*)LCD_String," %d:%d:%d ",Time_Hour,Time_Min,Time_Sec);
LCD_DisplayStringLine(Line3 ,LCD_String);
Delay_Ms(50);
KEY_Scan();
}
上一篇:stm32中非阻塞式多按键状态检测函数
下一篇:STM32按键长短按:超强移植性,回调函数按键处理机制
推荐阅读
史海拾趣
随着全球环保意识的提高,对于环保型电子材料的需求也日益增长。DuPont公司积极响应这一趋势,致力于环保型电子材料的研发和生产。公司采用先进的环保技术和生产工艺,开发出了一系列低污染、低能耗的电子材料。这些材料不仅具有良好的性能,而且对环境友好,符合可持续发展的要求。DuPont公司的这一举措,不仅提升了公司的竞争力,也为电子行业的可持续发展做出了积极贡献。
为了进一步拓展电子市场,DuPont公司积极寻求与全球知名电子企业的合作。通过与国际知名品牌的战略合作,DuPont成功进入了多个重要的电子市场领域,如智能手机、平板电脑、汽车电子等。这些合作不仅为DuPont公司带来了广阔的市场空间,也促进了公司在电子领域的技术创新和产品升级。
进入21世纪后,Etco Inc公司意识到全球化趋势的不可逆转。为了拓展国际市场,公司决定实施全球化战略。首先,公司在美国本土之外建立了多个生产基地和研发中心,以便更好地满足全球客户的需求。其次,Etco加强了与国际客户的合作与交流,积极参与国际展览和研讨会,提高了品牌知名度和影响力。这些举措使Etco在全球电子连接器市场中的份额不断攀升。
面对数字化转型的浪潮,Etco Inc公司主动拥抱变革,积极推进数字化转型。公司利用大数据、云计算等先进技术优化生产流程和管理模式,提高了生产效率和管理水平。同时,Etco还加强了与客户的数字化连接和交流,提供了更加便捷和高效的服务体验。这些举措使Etco在数字化时代中保持了领先地位并实现了持续增长。
自1947年成立以来,Etco Inc公司一直致力于电子连接技术的研发与创新。在20世纪70年代,公司成功研发出一款新型的高性能连接器,该产品凭借其卓越的性能和可靠性,迅速在汽车电子行业中占据了一席之地。这一技术突破不仅为Etco带来了可观的市场份额,还奠定了其在电子连接器领域的技术领先地位。
随着智能手机市场的快速发展,C&H Technology意识到单纯的芯片制造已经不能满足市场需求。于是,公司开始加大研发投入,致力于在5G通信、人工智能等前沿技术领域取得突破。经过多次试验和失败,C&H Technology的研发团队终于成功开发出了一款集成5G通信功能的手机芯片,并获得了多项专利。这一技术突破不仅提升了公司在行业内的地位,也为公司的未来发展奠定了坚实的基础。
程序如下BRLO(line 36)指令是根据进位标志C跳转的,它前面的CPI指令是如何影响到进位标志位C和零标志位Z来影响程序 流程的?r1初始值为0 avr034C: ldi YL, 0x5F &nb ...… 查看全部问答∨ |
|
随着亮度和能效的提升,延长使用寿命已经为促进基于高亮度发光二极管(HB-LED)的固态照明设计快速发展的主要因素之一。然而,并非所有HB-LED在这些方面都旗鼓相当,制造商应用静电放电(ESD)保护的方式可能是影响HB-LED现场使用寿命的一个至关键 ...… 查看全部问答∨ |
|
香水城,再请教你2个问题,cosmicc的环境st72324 问题1:I2Cms 是定义的全局变量,I2Cms 在1毫秒定时器里累加,现在的问题 I2Cms = 0; while(I2Cms<=10) { }这个while根 ...… 查看全部问答∨ |
【TI技术文章】:TI KeyStone架构支持L2及传输处理 无线技术的持续演进发展、全球无线用户的激增,以及市场对更强大数据承载能力的需求,全面催生了各种新标准的不断涌现,如宽带码分多址- 高速分组接入 (WCDMA-HSPA)、WCDMA-HSPA+ 以及长期演进技术 (LTE) 等。基于无线服务网络的数据使用呈指数级 ...… 查看全部问答∨ |
Altera的芯片管脚被焊断了,导致芯片的AS模式不能正常下载,怎么办? Altera的EP3C40的芯片负责下载模式选择的管脚被焊断了,导致芯片的AS模式不能正常下载,怎么办???? 因为本块板还要使用Niosii实现以太网口的收发,怎么办?????急求~~~~~… 查看全部问答∨ |