独立按键 首先既然是检测输入,对于当然要用到拉电阻,来检测引脚电平变化变化.51单片机中,除了P0口外,P2,P3,P4都是内置上拉电阻的准双向IO口,一般 的 51 P0引脚都外接了上拉电阻,当然也可以用作输入口. 作为输入前需要拉为高电平. 当有按键按下,致使单片机的某个引脚接地,变为低电平时,我们就认为这个按键按下了.当按键松开后,由于输入不会锁存,所以此时拉高的引脚回归到高电平. 独立按键的内部原理. 独立按键的4个引脚中,两两为一组.每一组的2个引脚是连在一起的,当按键按键时,2个组又…
原理:利用数组分压+AD采集: 优点:一个IO口可以做成多个按键,节省IO口(矩阵键盘在>4时优点才能体现出来):可备用作为AD基准输入. 缺点:不能做成组合按键(或者电阻要精确选择):且离IO口越近优先级越高.按键的识别收到精度的影响(消兜:抖动时间几毫秒到几十毫秒,所以连续读4次(每次8ms)直到读到值都相同.按键的识别是靠AD值的容差范围而非具体的AD值来识别).基准电压的获得(IO或TL431) 参考http://www.ednchina.com/ART_46350_11_0_OA_6f…
需求分析 用C51的16个矩阵按键当作两个八度的琴键 按下时发出相应音调的声音,静态数码管显示相应音符的数字. 为了解锁更多曲目,两个多的琴键设计成#4,显示时加上小数点 下图分别为1和#4的显示,其中图一上标明了各按键的对应的音符: 思路 每当按键按下,判断是那个按键, 在按键尚未松开时循环以下内容:启动定时器,计时的时长为"该音调频率的一半",每过这段时间,蜂鸣器所在引脚电平取反 各音符的频率 参考:https://blog.csdn.net/weixin_34724366/art…
矩阵按键 电路 每个按键一端和同行一端相连(JP4的高4位),另一端和同列一端相连(JP4的低4位) 判断按键是否按下: 法一:逐行扫描 for(int i = 8 ; i>3 ; i-- ) { JP4^i = 0; If ( 低四位不全为1) 低四位为0的那一列,第i行 的按键被按下 } 法二:行列扫描 完整代码: #include <reg51.h> typedef unsigned int u16; typedef unsigned char u8; #define delayt…
欢迎收看火星卫视,本期节目咱们严重探讨一下矩阵按键. 所谓矩阵按键,就是一个小键盘(其实一块PCB板),上面有几个 Key(开关),你不按下去的时候,电路是断开的,你按下去电路就会接通.至于说有多少个按钮,这个就看人家工厂怎么弄了,多见的有 3×3=9个键的,有 4×4=16个键的.各个按键排列成阵势,所以称矩阵按键(或矩阵开关).叫法很多,知道是啥玩意儿就行,不必纠结. 先上一张图,以供列位看官鉴赏. 老周家里穷,吃饭成问题,故而买了一块裸板裸键的,连键帽都没有的.有套套的当然好看,但太装13…
1.键盘的分类 编码键盘:键盘上闭合键的识别由专用的硬件编码器实现,并产生键编码号或键值的称为编码键盘,如计算机键盘 非编码键盘:靠软件编程来识别的称为非编码键盘.独立键盘.矩阵键盘 2.按键消抖              如图,理想波形与实现波形之间是有区别的.实际波形在按下和释放的瞬间都有抖动现象,抖动事件的长短与按键的机械特性有关,一般为5~10ms.通常我们手动按下键然后立即释放,这个动作中稳定闭合时间超过20ms.因此检测键盘是否按下时,需加上去抖动操作. 一般有两种消抖方式: 硬件消…
原理:利用数组分压+AD采集: 优点:一个IO口可以做成多个按键,节省IO口(矩阵键盘在>4时优点才能体现出来):可备用作为AD基准输入. 缺点:不能做成组合按键(或者电阻要精确选择):且离IO口越近优先级越高.按键的识别收到精度的影响(消兜:抖动时间几毫秒到几十毫秒,所以连续读4次(每次8ms)直到读到值都相同.按键的识别是靠AD值的容差范围而非具体的AD值来识别).基准电压的获得(IO或TL431) 参考http://www.ednchina.com/ART_46350_11_0_OA_6f…
            c51单片机 51单片机是控制电路系统的开关,当然芯片就是51芯片,现在随着科技的发展,也是出了很多,功能更多,更全的芯片. 51是用c语言做为程序编程的语言 ——我对基本基础硬件的了解 电阻: 降电流电压:                 电容:就像蓄电池一样(但是只能蓄微弱的电量): ——最基本的一个公式 U= I R: ——电平(这是我了解的新的一个知道点) 电平分为高电平和低电平 高电平——3v和5v(单片机工作的电压) 低电平——0v ——只要有高低电平的差,才…
C51单片机中data.idata.xdata.pdata的区别 data: 固定指前面0x00-0x7f的128个RAM,可以用acc直接读写的,速度最快,生成的代码也最小. idata: 固定指前面0x00-0xff的256个RAM,其中前128和data的128完全相同,只是因为访问的方式不同.idata是用类似C中的指针方式访问的.汇编中的语句为:mox ACC,@Rx.(不重要的补充:c中idata做指针式的访问效果很好) xdata: 外部扩展RAM,一般指外部0x0000-0xff…
STARTUP.A51//启动文件. 清理RAM.设置堆栈等.即执行完start.a51后跳转到.c文件的main函数 <reg51.h>  //特殊寄存器的字节地址和位地址,sfr定义字节变量.sbit定义位变量,用通俗名作为变量名,并赋地址值,从而用名称来使用这些特殊寄存器. <intrins.h> //定义了一些外部函数,在C51单片机编程中,头文件INTRINS.H的函数使用起来,就会让你像在用汇编时一样简便. /*-----------------------------…