单片机长按开关机程序 上电计数k1按下计数加1长按k1 1s加1

一个普通IO口,内带弱上拉功能,能识别2个按键|我爱单片机 - 数码之家
查看完整版本: [--
赞助商链接
=740) window.open('https://www.amobbs.com/data/attachment/forum//233943vsyyllrs8odmpamm.png');" style="max-width:100%;" onload="if(is_ie6&&this.offsetWidth>740)this.width=740;" >看到一个电路,一个PIC的单片机确定没有AD功能,一个普通IO口,内带弱上拉功能,能识别2个按键,原理不清楚.
赞助商链接
电路全了,就是这么精简,所以才感兴趣。型号是pic12c508   接6脚,的确没adc功能
赞助商链接
估计是在弱上拉和高阻态(开漏)之间反复切换刷新
打开弱上拉,上拉10K电阻并联单片机内部上拉电阻,上拉阻值就小了。只能识别无电阻的开关。开漏状态,两个按钮都能识别。在两个状态一直切换,就能识别出来。
不明白原理,K2&&&K1,就是说,K2的被识别度远优于K1,要区分两个键,我想不出原理。期待大神再详述一下
:不明白原理,K2&&&K1,就是说,K2的被识别度远优于K1,要区分两个键,我想不出原理。期待大神再详述一下[表情]  ( 10:09) 这个是利用ADC电压检测识别吧。也就是单片机读取电阻的串联的分布端点电压值。 这种方式可以接上百个按钮都可以。
:这个是利用ADC电压检测识别吧。也就是单片机读取电阻的串联的分布端点电压值。 这种方式可以接上百个按钮都可以。 ( 10:41) 看楼主说的,没有AD
这些条件是你臆测的吧,把电路画齐,单片型号贴上。
刚才把图画了一下,可以实现两个按键的辩认。[attachment=]图1是楼主的图,图2是我改的图,改过的图应该更好用。关键 在于2个电阻的值的选择。
样品大批量生产,电阻都是10k
电路全了,就是这么精简,所以才感兴趣。型号是pic12c508&& 接6脚,的确没adc功能
:样品大批量生产,电阻都是10k ( 11:51) 两个电阻都 是10K,不应该,以内上拉47K算,K1按下时,IO还是高电平的。同时不管有没有上拉,K1都测不到。除非你的VDD是更低于1.2V才会让IO的电平在K1按下时为低电平。
:打开弱上拉,上拉10K电阻并联单片机内部上拉电阻,上拉阻值就小了。只能识别无电阻的开关。开漏状态,两个按钮都能识别。在两个状态一直切换,就能识别出来。 ( 00:59) 看不明白,开漏既然都能识别,那怎么判断出是K1还是K2?一直切换,当切换到开漏状态时,接电阻的按键和不接电阻的按键怎么识别??
:看不明白,开漏既然都能识别,那怎么判断出是K1还是K2?一直切换,当切换到开漏状态时,接电阻的按键和不接电阻的按键怎么识别?? ( 23:02) 刚开始我也不明白。好来画一遍图再分析一下,果然可以,从逻辑上来说没什么问题,关键在电阻的取值。。当内上拉电阻没有开启时,无论K1或K2按下,IO均为低,当开启内上拉后,只有一个键按下能让IO变低电平,另一个由于电阻分压的作用尚不能让IO达到电平翻转的门限,就这样来回倒腾内上拉的开与关2次,同时再判断IO的电平,综合一下就出结果了。
:刚开始我也不明白。好来画一遍图再分析一下,果然可以,从逻辑上来说没什么问题,关键在电阻的取值。。当内上拉电阻没有开启时,无论K1或K2按下,IO均为低,当开启内上拉后,只有一个键按下能让IO变低电平,另一个由于电阻分压的作用尚不能让IO达到电平翻转的门限,就这样来回 .. ( 23:46) 你这样理解不对的,&&高阻状态下,一般默认为高,但是也不稳定的, 这样的按键不安全的,再说按下是低的话 ,无法做到了两键区分,这只是个分支而已~&&要做到一个脚两个键不是你这样想的,原图应该还有一个电容没有画 ,只要加入一个电容就很好办 ,无论是辩断充电或放电时间, 就能解决两个键基本上都能用了 ,&&只要在充电或者放电时加入启动计数器,&&取出两个数 ,由于带阻的充电或放电时间不一样,就会出现计数差 ,就能判别了
歡迎探討,10楼已确定了,电路就这么简单。。
:你这样理解不对的,  高阻状态下,一般默认为高,但是也不稳定的, 这样的按键不安全的,再说按下是低的话 ,无法做到了两键区分,这只是个分支而已~  要做到一个脚两个键不是你这样想的,原图应该还有一个电容没有画 ,只要加入一个电容就很好办 ,无论是辩断充电或放 .. ( 10:37) 高阻状态下,没有默认这一说法,想当于开路,此时如果测电平,可能为高,夜可能为低,由外部电路来决定的,高阻即高阻抗,相当于开路,没有上下拉的情况下,接入电路,对电路没有任何影响。你可以问一下度娘。当然如果说非要接一个电容,也是可以的,却离题了。
原理上分析得通(通过内部上拉电阻),但奇怪的是外部分压电阻只有10K,而内部上拉电阻一般是&=47K.我觉得外部分压电阻100K会更好一些.
:你这样理解不对的,  高阻状态下,一般默认为高,但是也不稳定的, 这样的按键不安全的,再说按下是低的话 ,无法做到了两键区分,这只是个分支而已~  要做到一个脚两个键不是你这样想的,原图应该还有一个电容没有画 ,只要加入一个电容就很好办 ,无论是辩断充电或放 .. ( 10:37) LZ这电路可行,原理前面的坛友已说明,但这两个电阻值要根据该型号单片机IO的高低电平电压门限(保留一定余量)来取
那个说法强差人意,1,高阻,无论那个按下都低电平,这就已经是只有一个按键的作用,2一旦高阻,这样的结构是不稳定的,如果你懂模电就知道这样的高阻极易受干扰,3,内部上拉接入,靠电阻分压去区别其中一个电阻,让其中一个建不起作用,实际上这样是多余的,就是说内阻不接就两电阻对地低电平,这已经没法区别两个键分别起作用,内阻不接入,靠分压区别其中一个键没用,你不觉得多余吗?说到底就是仍是其中一个起作用,没办法两个起作用,另一个只不过变了低电平有效,高电平仍是无效,不是说起按键作用,是屏蔽了,这就是说到底两个低电平有效,一个高电平作用下屏蔽一个键,注意是利用分压屏蔽了,而不是说这个键起作用了,
可能单片机内部有比较器,就像89C2051一样,有个脚是有比较器的
可能单片机内部有比较器,就像89C2051一样,有个脚是有比较器的&&&&&&这个认同,这个是最合理解释了。切换在高低电平比比较器状态,这个是真的可以,
然而PIC12C508并没有内部比较器功能。其6脚也只是一个GPIO,没有复用功能。&&https://wenku.baidu.com/view/94231f86bceb19e8b8f6baf0.html[attachment=][attachment=][attachment=]
我感觉是一个比较冒险的电路。一个是直接开关到地。一个是通过电阻到地。应该有一组解。在不打开上拉时,K1 K2都能使管脚低于1/2VCC 打开上拉之后,只有那个直接到地的仍然是0.而那个带电阻的就算是闭合也只能使管脚高于1/2VCC虽然单片机写的是高电平要大于0.7VCC 低电平小于0.3VCC 但实际上,只要在1/2VCC附近就会有翻转了。
类似于电视机按键电路,检测电压的大小
楼主图画错了,应该是Vcc串一个电阻再串一个按键到IO。Gnd串一个电阻串一个按键到IO。IO接个电容到地(保持电平用)。工作原理: IO设置高电平输出,对电容充电,IO判断低电平,真为对地按键按下,否则没有按键按下。IO设置低电平,对电容放电,IO判断高电平,真为接电源按键按下,否则没有按键按下。循环。
:看不明白,开漏既然都能识别,那怎么判断出是K1还是K2?一直切换,当切换到开漏状态时,接电阻的按键和不接电阻的按键怎么识别??&( 23:02)&主要是看IO口的有效电平值,这种类似AD按键。如果是楼主的图,就要假设IO口,大于VCC/2为高电平,小于或等于VCC/2为低电平。分析K2:IO口直接一个上拉电阻,K2按下IO直接到0电平。开漏高阻都一样能识别。分析K1:K1多一个分压电阻。K1按下时在开漏状态,如图上10K上拉电阻,10K分压电阻。K1按下就是VCC\2(这个是分压的稳定电压)。K1按下时在上拉状态,10K电阻要并联单片机内部上拉电阻,那么K1按下IO口收到的电平就 大于VCC\2。这个时候K1是相当于屏蔽了。扫描按键:如设定按键按下20ms有效,那么在20ms内,IO高阻和上拉都至少识别一次。上拉状态:K1按下不能识别,K2按下能识别。开漏状态:K1按下能识别,K2按下能识别。识别按键状态:K1、K2都未按下:上拉为高电平,开漏为高电平。K1按下:上拉为高电平,开漏为低电平。K2按下:上拉为低电平,开漏为低电平。20ms内分别检测上拉和开漏时IO的状态就能区分出K1和K2。这里也能看出K2按键优先,K1、k2同时按下:上拉为低电平,开漏为低电平。
最重要的,这是什么产品上的电路楼主没说明,是玩具类的产品还是什么小家电吧
你好,有用到8位单片机吗?可根据客户要求免费开发,大量现货库存,有自己的烧录厂,42台烧录机,24小时内烧录好出货,台湾远翔(飞凌)一级代理商,价格绝对有优势。QQ 李生
:不明白原理,K2&&&K1,就是说,K2的被识别度远优于K1,要区分两个键,我想不出原理。期待大神再详述一下[表情]  ( 10:09) k1加弱拉是高电平,不加是低电平,k2加不加弱拉都是低电平。
这个构思比较巧妙,推测了一下,应该是利用以下三个特性来做识别:1.K1处的1/2VCC分压2.IO口的施密特触发器迟滞特性3.IO内部弱上拉配合好了,说到这,应该很清楚了
是小家电,成本应该最便宜了吧
没有AD,没有比较器,电阻10k,这是比较疑惑的地方。
K1按下电压是2.5V,K2按下电压是0V,有些单片机可以设置逻辑电平的,检测的时候设置一下逻辑电平就好了。
查看完整版本: [--
Powered by
Time 0.056163 second(s),query:5 Gzip enabled51单片机执行指令的过程的分析解释
单片机执行程序的过程,实际上就是执行我们所编制程序的过程。即逐条指令的过程。计算机每执行一条指令都可分为三个阶段进行,即取指令-----分析指令-----执行指令。
取指令的任务是:根据程序计数器PC中的值从程序存储器读出现行指令,送到指令寄存器。
分析指令阶段的任务是:将指令寄存器中的指令操作码取出后进行译码,分析其指令性质。如指令要求操作数,则寻找操作数地址。
计算机执行程序的过程实际上就是逐条指令地重复上述操作过程,直至遇到停机指令可循环等待指令。
一般计算机进行工作时,首先要通过外部设备把程序和数据通过输入接口电路和数据总线送入到存储器,然后逐条取出执行。但单片机中的程序一般事先我们都已通过写入器固化在片内或片外程序存储器中。因而一开机即可执行指令。
下面我们将举个实例来说明指令的执行过程:
开机时,程序计算器PC变为0000H。然后单片机在时序电路作用下自动进入执行程序过程。执行过程实际上就是取出指令(取出存储器中事先存放的指令阶段)和执行指令(分析和执行指令)的循环过程。
例如执行指令:MOV A,#0E0H,其机器码为&74H E0H&,该指令的功能是把操作数E0H送入累加器,0000H单元中已存放74H,0001H单元中已存放E0H。当单片机开始运行时,首先是进入取指阶段,其次序是:
1、程序计数器的内容(这时是0000H)送到地址寄存器;
2、程序计数器的内容自动加1(变为0001H);
3、地址寄存器的内容(0000H)通过内部地址总线送到存储器,以存储器中地址译码电跟,使地址为0000H的单元被选中;
4、CPU使读控制线有效;
5、在读命令控制下被选中存储器单元的内容(此时应为74H)送到内部数据总线上,因为是取指阶段,所以该内容通过数据总线被送到指令寄存器。
至此,取指阶段完成,进入译码分析和执行指令阶段。
由于本次进入指令寄存器中的内容是74H(操作码),以译码器译码后单片机就会知道该指令是要将一个数送到A累加器,而该数是在这个代码的下一个存储单元。所以,执行该指令还必须把数据(E0H)从存储器中取出送到CPU,即还要在存储器中取第二个字节。其过程与取指阶段很相似,只是此时PC已为0001H。
指令译码器结合时序部件,产生74H操作码的微操作系列,使数字E0H从0001H单元取出。因为指令是要求把取得的数送到A累加器,所以取出的数字经内部数据总线进入A累加器,而不是进入指令寄存器。至此,一条指令的执行完毕。单片机中PC=0002H,PC在CPU每次向存储器取指或取数时自动加1,单片机又进入下一取指阶段。这一过程一直重复下去,直至收到暂停指令或循环等待指令暂停。CPU就是这样一条一条地执行指令,完成所有规定的功能。
原文标题:了解51单片机执行指令的过程,你会理解更深刻!
文章出处:【微信号:mcuworld,微信公众号:嵌入式资讯精选】欢迎添加关注!文章转载请注明出处。
关注电子发烧友微信
有趣有料的资讯及技术干货
下载发烧友APP
打造属于您的人脉电子圈
关注发烧友课堂
锁定最新课程活动及技术直播
发布评论请先
串行口方式0应用编程 8051单片机串行口方式0为移位寄存器方式,外接一个串入并出的移位寄存器,就能....
在单片机中用来存储程序数据及常量数据或变量数据,凡是c文件及h文件中所有代码、全局变量、局部变量、’....
传统的投币电话,都是以几对红外发射、接收对管作传感器,利用硬币遮光原理粗测币的直径。这种方法精度低,....
八段LED数码管显示器由8个发光二极管组成。基中7个长条形的发光管排列成“日”字形,另一个贺点形的发....
当超声波传感器发出的超声波遇到物体返回时,探头接收其反射回波信息,从而可对接收到的反射回波进行分析、....
本文介绍使用8031单片机测量三相电网 功率因数角的原理、接口电路和程序实现。经实践验证,测量准确、....
为了测量时间r,又为使测量的φ角的精度不受电网频率(或周期T)的影响,采用图所示的接口电路。 由变压....
由于单片机具有功能强,使用灵活,体积小,性价比高等特点,近年来在测控系统中得到广泛应用。而在许多场合....
读取一字节数据的程序段如下: 读取数据时,T1先置1,其后的RD信号将行地址送到地址线AB上,并使D....
VD5026 -4的每组串行数据输出波形由同步脉冲、12位加密地址(和控制数据)及1位停止位组成。编....
Python的用途十分广泛,不同的程序员将其用于不用的领域,不同的程序员将自己的代码打包成库,供其他....
点阵式平板图形液晶显示器在各种便携式产品中具有非常广泛的应用。对于不同厂家的产品及不同的运用目的,显....
数字式温度传感器(简称SWC),又称集成数字脉冲式感温探头,是一种新型的三端温度变送器件。该器件采用....
89C51芯片没有自带PWM发生器,如果要用51来产生PWM波就必须要用软件编程的方法来模拟。方法大....
遇到单片机晶振不起振是常见现象,那么引起晶振不起振的原因有哪些呢?
(1) PCB板布线错误;....
三菱 FX 系列plc的基本逻辑指令。  取指令与输出指令(LD/LDI/LDP/LDF/OUT)(....
使用STM32L496的Nucleo板的LPUART 做打印输出时,电脑端始终没法出现任何信息。
说到51单片机的时钟首先想到51时怎么工作的呢?微型控制器要想工作必须要有一个“动力”,对于51单片....
在单片机系统里,按键是常见的输入设备,在本文将介绍几种按键硬件、软件设计方面的技巧。一般的在按键的设....
供应链服务
版权所有 (C) 深圳华强聚丰电子科技有限公司
电信与信息服务业务经营许可证:粤B2-

我要回帖

更多关于 单片机按键长按 的文章

 

随机推荐