单片机键盘程式

08、独立键盘检测实验 文章目录1、键盘简介2、键盘分类2.1、独立式键盘2.2、矩阵式键盘2.3、编码式键盘3、键盘消抖4、键盘作用5、开发板集成自定义微动开关5.1、开发板微动开关原理图5.2、自定义微动开关检测方法6、按键检测流程7、代码实现7.1、寄存器版7.2、库函数版 1、键盘简介   键盘是单片机应用系统中使用最广泛的一种数据输入设备。键盘是一组按键的组合。键通常是一种常开型按钮开关,常态下键的两个触点处于断开状态,按下键时它们才闭合(短路)。 2、键盘分类 2.1、独立式键盘   每个按键占用一条I/O口线。特点 阅读详情


///////////////////////////////////////////////////////////////////
#define SIFT_DEEP 2   // SIFT_DEEP>=2  去抖深度
#define KEY_WIDTH (SIFT_DEEP+5)   //一个端口对应KEY_WIDTH 个 TYPE型变量
typedef unsigned char TYPE;
TYPE PubKey_Buff[KEY_WIDTH];

void keySignalScanPort(TYPE *Port,TYPE *KeyBuff)
{
 S16 i;
 /*原理:

a=input  //输入
 c=a&b  //过滤,按下一直有效
 e=e|(c&(~d)); //按下一次有效,直到清除缓冲区,才算第二次有效
 
 f=f|c;  //按下标记  清除次标记下次才有效
 g=(c^f)&f //按下标记已记录  此时已松开 则有效
 
 d=c;
 b=a;*/
 /*
     0--SIFT_DEEP  读入的原始按键
  SIFT_DEEP+0,SIFT_DEEP+1  读入的去抖按键(相邻两次)
  SIFT_DEEP+2  按下按键的 , 按下有效,直到松开并清除缓冲区才进入下次键盘信号采集
  SIFT_DEEP+4  按下做标记
  SIFT_DEEP+3  按下直到松开有效
 
  SIFT_DEEP+1,SIFT_DEEP+2,SIFT_DEEP+3,分别对应3种键盘
 */
 KeyBuff[0]=~(*Port);// a=input  //输入
 KeyBuff[SIFT_DEEP+0]=KeyBuff[0];
 for(i=1;i<SIFT_DEEP;i++){
  KeyBuff[SIFT_DEEP+0]&=KeyBuff[i];// c=a&b  //过滤,按下一直有效
 }
 KeyBuff[SIFT_DEEP+2]|=(KeyBuff[SIFT_DEEP+0]&(~KeyBuff[SIFT_DEEP+1]));// e=e|(c&(~d)); //按下一次有效,直到清除缓冲区,才算第

二次有效
 
 KeyBuff[SIFT_DEEP+4]|=KeyBuff[SIFT_DEEP+0]; //f=f|c;  //按下标记
 KeyBuff[SIFT_DEEP+3]=(KeyBuff[SIFT_DEEP+0]^KeyBuff[SIFT_DEEP+4])&KeyBuff[SIFT_DEEP+4];// g=(c^f)&f //按下记录标记,直到松开

有效
 
 KeyBuff[SIFT_DEEP+1]=KeyBuff[SIFT_DEEP+0];// d=c;
 
 for(i=SIFT_DEEP-1;i>=1;i--){
  KeyBuff[i]=KeyBuff[i-1];// b=a;
 }
 return;
}
void keySignalScan(void)
{//放在中断中
 TYPE *PubPort=(TYPE *)0x1000000;//假设键盘端口
 keySignalScanPort(PubPort,PubKey_Buff);
 return;
}

//----------------------------清键盘缓冲区----------------------------------
void clearkeybuff(S16 msk)
{//获得键值后调用 清除缓冲区
 S16 i;
 if(msk&1){//清除静态键盘
  PubKey_Buff[SIFT_DEEP+2]=0;
 }
 if(msk&2){//清除滞后键盘
  PubKey_Buff[SIFT_DEEP+4]=0;
 }
}
U32 getKey(U32 keytype,S16 later)
{//程序调用
//根据需求分析键盘返回自定义的键值
//分析PubKey_Buff[SIFT_DEEP+1],PubKey_Buff[SIFT_DEEP+2]或  PubKey_Buff[SIFT_DEEP+3] 的每一位

}

全面掌握:单片机开发工具包85选 在现代电子工程领域中,单片机开发已经成为一项基础而又重要的技能。单片机,全称为微控制器单元(Microcontroller Unit, MCU),是一种集成了CPU、RAM、ROM、各种I/O端口以及定时器/计数器等其他功能的集成电路芯片。其核心是微处理器,可以执行嵌入式软件。由于单片机具有成本低、体积小、功耗低、控制功能强等特点,被广泛应用于工业控制、智能仪表、家用电器、通信设备以及航空航天等领域。本章将简要介绍单片机开发的历史背景、发展现状以及未来趋势,同时概述单片机的基本工作原理和开发流程。 阅读详情

相关推荐

51单片机模拟拨号电话

基于51单片机的手机电话拨号盘模拟protues仿真 电话键盘中拨出的某一电话号码,显示在LCD显示屏上。电话键盘共有12个键,除了“0”~ “9”10个数字键外,还有“*”键用于实现退格功能,即清除输入的号码;“#”键用于清除显示屏上所有的数字显示。每按下一个键要发出声响,以表示按下该键。

电话拨号器

闲着没事做了一个简单的电话拨号器 代码:   MainActivity类: package cn.my_first_android; import android.net.Uri; import android.os.Bundle; import android.app.Activity; import android.content.Intent; import android.vi

Shadow 1523

电话键盘及拨号模拟

单片机课程实际实验报告,单片机课程设计电话拨号模拟实验报告

基于51单片机手机电话拨号盘模拟proteus仿真

功能简介:1.采用4X4矩阵键盘实现号码输入,并在LCD液晶上显示2.按下enter键,显示calling…,并且蜂鸣器模拟电话拨号发声3.按下*键,退格,按下#键,清楚电话号码4.拨号过程中,长按#取消拨号。

jianghuxiaoge的博客 4064

ubuntu18.04 升级Ubuntu 20.04

Ubuntu 18.04升级20.04指南:首先备份重要数据,更新当前系统并检查新版本可用性(sudo do-release-upgrade -c)。确认升级后执行sudo do-release-upgrade,按提示完成操作。升级过程需耐心等待,完成后重启系统。注意:升级前务必备份数据,确保系统为最新版本,以降低风险。升级后即可使用Ubuntu 20.04系统。

https://ophome.blog.youkuaiyun.com,在IT行业有多年的工作经验,尤其是在Python、Linux、负载均衡、Nginx和服务器运维等领域。 1060

超融合架构实战:如何用3节点搭建企业级分布式存储系统?

本文详细介绍了如何利用3节点搭建企业级分布式存储系统的超融合架构实战指南。从硬件选型、网络配置到存储策略调优,提供了全面的实操建议和性能优化技巧,帮助企业实现高效、弹性的IT基础设施。特别适合需要简化运维、提升存储性能的中型企业参考。

weixin_29200485的博客 326

基于51单片机的手机电话拨号盘模拟protues仿真

硬件设计 (末尾附文件) 电话键盘中拨出的某一电话号码,显示在LCD显示屏上。电话键盘共有12个键,除了“0”~ “9”10个数字键外,还有“*”键用于实现退格功能,即清除输入的号码;“#”键用于清除显示屏上所有的数字显示。每按下一个键要发出声响,以表示按下该键。 代码设计 #include<reg51.h> #define uint unsigned int #define uchar unsigned char uchar keycode,DDram_value=0xc0; sbit rs

weixin_44116175的博客 7715

使用bandersnatch搭建pypi 本地镜像源(20211026)

需求背景:公司内网不能联网,同时开发工作需要各种python的模块,因此需要搭建一个pypi的本地镜像源。 参考网上的方法,总结了大致有下面几种方式搭建pypi本地源: devpi: 企业内网利用devpi搭建pypi私服 - 简书 pip2pi: https://yangfannie.com/1439.html pypiserver: https://zhongneng.github.io/2019/02/16/creat-pip/ bandersnatch:基于bandersnatch搭...

liurizhou的博客 6468

找用c语言写的单片机调用号码通过mt5087拨电话程序,智能报警电话系统设计.doc...

智能报警电话系统设计.doc-、八 -1—.刖 S随着电话不断地普及,单片机技术的不断提高,采用单片机技术开发电话报警 器成为可能。电子报警器是以电子元器件和线路构成的电子装置为依托,用來监测外 界各种参景的变化。当参景的变化超过规定的界限时,能精确、及时地发出特定的信 号给人们以警示。报警器能根据监控的对象进行设计,种类繁多,广泛地运用于各行各业及人们的 H常生活。一般而言,报警器的电路可分为单...

weixin_33930436的博客 462

DeepL Pro免费使用技巧与API调用优化方案

机器翻译技术通过神经网络模型实现跨语言语义转换,其核心价值在于保持专业术语准确性的同时实现自然语言流畅度。现代翻译工具如DeepL采用注意力机制等深度学习技术,在医疗、法律等专业领域展现出接近人工翻译的质量。针对API调用场景,开发者可通过请求模拟实现小批量自动化处理,而文档预处理和术语库优化则能显著提升免费额度使用效率。本文重点解析如何通过字符计算优化、临时接口调用等工程实践方法,在合规前提下最大化利用免费翻译资源。

weixin_29038303的博客 266

基于deepseek本地模型的本地知识库构建

通过以上步骤,你已经成功构建了一个基于 AnythingLLM 和 LM Studio 的本地知识库。这个系统不仅能够高效地存储和检索知识,还能结合强大的语言模型生成准确的回答。你可以根据自己的需求进一步扩展和优化这个系统,比如增加更多的文档格式支持、优化检索算法等。

qq_30178745的博客 1383

毕设分享|基于51单片机密码锁的设计

外部串行总线数据通信端口数据输入端口和2条双工串行总线读写输入端口数据连接线,STC89C52总共端口设计主要有三种家用端口类型封装和可设计端口形式,分别为:PDIP、PQFP/TQFP、PLCC,可以根据不同客户需要设计的实际应用产品需求端口类型不同来进行设计可以满足不同的家用电子。不同芯片的内部振荡组成的电路。时有任何的太大改变,此时,电容器的一个负极直接通过连接到接在芯片上的Reset的一个复位稳压。个自激式的振荡器,电容的振荡值同时具有自动微调的控制作用,我们可以取30pf,具体的晶振接法。

Sen_091的博客 1358

完整复现YOLOv8:包括训练、测试、评估、预测阶段【本文源码已开源,地址在文章末尾】

(这里主要是在colab.research.google.com实现的,本地的配置也是类似的方法)YOLOv8是一种用于目标检测的深度学习算法。主要参考:https://github.com/ultralytics/ultralytics/blob/main/README.zh-CN.md。yolov8的权重:https://github.com/ultralytics/assets/releases。yolov8的文档:https://v8docs.ultralytics.com/

源代码杀手的博客 1万+

单片机C语言叮咚门铃设计报告,基于单片机的“叮咚”门铃设计课程设计

基于单片机的'叮咚“门铃设计 摘要:本文设计了一种基于单片机的'叮咚“门铃,主要有键盘,音频功率放大器LM386,AT89S51单片机,扬声器等构成,通过单片机定时/计数器t0来产生700Hz和500Hz的频率来使扬声器发出'叮咚“声音。关键词:AT89C51单片机 ;扬声器 ;频率;前言:1在现代电子产品中,'叮咚“门铃以它成本低,方便快捷等优点占据了很大的市场空间。本课程设计是基于单片机的'叮...

weixin_32349561的博客 1738

Vue2 - 最新实现接入使用天地图及卫星视图切换功能,在国家天地图上自由切换地图显示类型(卫星视图/地形视图/卫星混合/地形混合/普通视图)vue天地图切换视图显示改成卫星风格,切换地图图层完整代码

vue2,nuxt2,天地图,视图,卫星,地图类型切换,vue天地图,改成卫星视角,在线地图切换,来回切换卫星图,天地图如何实现来回切换卫星图,地形图,卫星视图,vue中使用天地图自定义样式切换地图图层,切换报错,加载出错,卫星图太卡,地图图层更换,vue安装集成天地图详细示例源码,切换地图的样式,在天地图中如何将地图的类型随意更换,提供多种视图模式用户自由点击更换,VUE引入天地图卫星版,详细教程示例源码代码,天地图切换卫星用什么api,卫星视角API方法,vue2卫星天地图,能改地图的显示方式,图层类型

🏆 前端领域优质创作者 4143

23 RAG 为什么答不准:召回、分块、排序的常见坑

RAG 答不准时,不要先怪模型。本文把常见失败拆成召回不到、召回不准、分块不完整、排序靠后、上下文污染和生成不忠实六类,并给出从 Top-K 检查到评估集的排查流程。

老于的笔记的专栏 248

基于51单片机的交通灯控制系统设计课程毕业设计

而每一种又有NPN和PNP两种结构形式,使用最多的是硅NPN和PNP两种,两者除了电源极性不同外,其工作原理都是相同的,三极管工作在放大区时,三极管发射结处于正偏而集电结处于反偏,集电极电流Ic受基极电流Ib的控制,Ic 的变化量与Ib变化量之比称作三极管的交流电流放大倍数β(β=ΔIc/ΔIb, Δ表示变化量。全部控制程序实际上分为若干模块:键盘设置处理程序,状态灯控制程序,LED显示程序,消抖动延时程序,次状态判断及处理程序,紧停或违规判断程序,中断服务子程序,车流量计数程序,红绿灯时间调整程序等。

叶绿体不忘呼吸 9863

WINCC7.3破解文件

WINCC7.3硬件够破解文件,有需要的下载!WINCC7.3硬件够破解文件,有需要的下载!

单片机机器人

当生活中的快递种类越来越多,配送速度越来越快的时候,人们的生活也越来越方便快捷。从开始的网购衣物、美妆、食品等,到后来的电子产品、家电、生鲜等,再到如今的药品、外卖、同城配送等服务,越来越多的物品在快递行业内展开快速配送服务,让生活更便捷。面对如此大量的物品分拣压力,智能化的分拣机器人需求越来越大,逐渐趋于高效、轻便、智能的方向发展。面对小区、高校、商场等小规模场景,为其提供快递、外卖、果蔬等物品的分拣,故设计该自动分拣智能小车机器人。该分拣机器人包括单片机系统、传感器识别系统、电源系统、分拣装置等几部分,

qq_61303236的博客 3240

VB摄像头监控

该VB模块可对摄像头捕获的画面进行录像等,可在创建的窗口进行控制

怀旧版电脑GBC模拟器

再现原版GBC掌机的界面,电脑运行连游戏界面都一样大小,很怀旧,很真实,(英文版)强烈推荐,很小的文件,很难才找到的。

零成本学Arduino单片机之入门

图1 Arduino单片机的Proteus仿真  我的Arduino博客:http://www.eefocus.com/zhang700309/blog/ 一、前言           Arduino是由Massimo Banzi,David Cuartielles,Tom Igoe,Gianluca Martino,David Mellis 和Nicholas Zambetti共同

xyjikl 5383

NTscan扫描工具

ntscan是一个扫描器,可以扫描没有密码和弱密码的共享,先到配置文件中填写猜测的用户名和密码,扫描过程中右侧出现的是扫描日志。

基于单片机的智能门禁系统的设计与实现

本文设计了一种基于STC89C51单片机的智能门禁系统,采用刷卡与按键密码双重认证方式,提升了安全性和便捷性。系统由主控模块、RFID读卡模块、矩阵键盘、LCD显示屏、报警模块和执行机构组成,可实现IC卡登记/删除、密码验证、非法入侵报警等功能。通过模块化程序设计,实现了刷卡开锁、密码开锁、新卡注册等核心功能,具有操作简便、安全性高、成本低廉等特点。硬件设计采用独立模块化方案,软件使用.h和.c文件构建模块化程序,支持功能扩展。测试表明,该系统能有效识别已注册IC卡,对非法卡进行声光报警,满足现代门禁管理需

m0_73485055的博客 1181

基于单片机的智能灯光控制系统

本文设计了一种基于AT89S52单片机的智能灯光控制系统。系统通过热释电传感器检测人体存在,结合光敏电阻感知环境光线强度,实现室内灯光的自动开关控制。硬件部分采用模块化设计,包括主控单元、传感器模块和报警系统;软件部分包含主程序、数据采集处理、定时中断等模块。系统具有超时报警功能,能在无人时自动关闭灯光以节约能源。测试表明,该系统能有效实现灯光智能化管理,具有良好的实用性和节能效果。

QQ1928499906的博客 965

基于单片机的交通信号灯控制系统设计

本系统采用STC89C51单片机以及单片机最小系统和74HC245驱动电路以及外围的按键和数码管显示等部件,设计一个基于单片机的交通灯设计。设计通过两位一体共阴极数码管显...

理论结合实践,开启你的电子学习新方案! 1万+

单片机程序求助

本人需要编作以下程序,请各位高手帮忙!      应用AT89C2051单片,(20脚MCS51芯片)P1.0--P1.7组成3*4键盘矩阵输入电路。P3.4为控制输出端.P3.3,P3.7为设置指示灯.P3.2为声讯指示端。具体程式如下:加电复位--输入密码--确定--(是)正常开机(否)反回重输入密码.再次确定.正确开机(开机为P3.4脚输出4秒高电平.)如重置密码正常开机后按设定键.P3.3

lgfyhx的专栏 327

单片机消抖c语言程序,单片机中按键消抖程序

写在前面:按键去抖:由上图可以看出理想波形与实际波形之间是有区别的,实际波形在按下和释放的瞬间都有抖动的现象,抖动时间的长短和按键的机械特性有关,一般为5~10ms。通常我们手动按键然后释放,这个动作中稳定闭合的时间超过了20ms。因此单片机在检测键盘是否按下时都要加上去抖动操作,有专用的去抖动电路,也有专门的去抖动芯片,但通常我们采用软件延时的方法就可以解决抖动问题。1、单片机中按键消抖程序1....

weixin_36006615的博客 6325

基于单片机的温湿度检测及远程控制系统设计

本设计就是利用STC89C52单片机对温湿度参量进行实时监测并实现对温湿度的超限报警功能的系统。本设计基于STC89C52单片机,在软件设计过程中,采用模块化设计,程式化设计,现在是在硬件中使用最新型的智能温湿度传感器dht11,通过对温湿度的测量,来实现对温湿度的监控功能,温湿度传感器能够把温湿度信号转化为电信号,然后进行输出,再运用主控制芯片,地形接收数据,并对数据实时显示和监控处理,当温度值超过报警值时,发送报警信息。

weixin_45905610的博客 1020

python从键盘输入一个字符串将小_在Python 3.x中,input()函数把用户的键盘输入作为字符串返回。...

【单选题】“ 更招竹林人, 枕藉糟与 曲 。 ” 的“曲”用繁体字创作时写作:【名词解释】哲理小说【简答题】职业的 adj.【填空题】气体的粘度随温度升高而( ),水的粘度随温度升高而( )。【单选题】简单零件划线,划线基准的选择一般为【判断题】在Python 3.x中,input()函数把用户的键盘输入作为字符串返回。【简答题】钢结构的优缺点?【简答题】欢迎【简答题】简述国内外钢结构的发展历程...

weixin_39949889的博客 1638
上一篇: c语言列出文件夹中的文件
下一篇: 在EditPlus中配置PALASM
gotoxy
博客等级 码龄20年 0粉丝 6原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值