1,IO11按键问题

和微动没关系。。。本来IO和IE3 按键感觉就是不同。但是我用过这两个 还是IO狙击好使 IE步枪好使 你买的IO是复刻还是什么版本的啊 现在出的鼠标啊 不符合规格 推荐XAI
新微动是这样的,用一段时间就好了
纳尼

IO11按键问题

2,51单片机io输入输出

你完全理解错误,独立按键是这么样的一个电路呢简单的一个例子(多种方式的)按键一端接51的IO口,加上上拉IO口设定输入另外一端接GND按键按下,则检测到IO口电压为0,否者一直为1
输入
最起码得满足最小系统电路,输出呢记得p0口要接上拉电阻,p1p2p3口就不用了!
就8051而言他的P1口是准双向的 即使是需要配置I/O口的单片机 我们在设计按键的时候也需要配置成双向口

51单片机io输入输出

3,单片机键盘扫描

兄弟,你好void key()你如果这样的话就可以了void key()key1=key2=key3=1;这样的话就不会一直在key()中了要想达到效果,估计你还的弄几个按键添几句sbit key1=P3^0; 。。。。。。再把 uchar key1,key2,key3;这一句删了,你试一下,祝你成功
36个按键?恐怕要四十个按键:5×8 个i/o口,就够了如:51的单片机,可以用p0.0-p0.7和p2.0-p2.4 组成矩阵式键盘就可以了。
如楼上所说 没有关联io口void key() if(key1==0) delay(5);....}然后在前面定义一下keysbit key1 = P2 ^ 0; //这里要与之相对应的io口sbit key2 = P2 ^ 1; //这里要与之相对应的io口sbit key3 = P2 ^ 2; //这里要与之相对应的io口
呵呵,你的键盘扫描程序,好像没有和按键相关哪!void key() if(key1==0) delay(5); if(key1==0) miao++; if(miao==60) while(key1==0); 就死在这了,key1永远不会==1。 } }

单片机键盘扫描

4,关于单片机 按键的一个小问题

这样设计? (把VCC 和 地互换一下, 程序里做按键消抖,不用接电容C1。R1可改小点(4.7K、10K.......))如果想这样就只有在读端口电平时把端口电平先拉低在读。void Reak_Io() IO = 0; if (IO == 1) Delay(5); //延时5ms 消抖 if (IO == 1) P1 = 0XFE; //test while (IO); // 等待按键释放 } }}//J1按下前I/O口是低电平吗?J1按下的一瞬间I/O是低电平,因为电容两端的电压不会突变;按下后I/O口是高还是低啊,跟电源直接两连了,但是C1充电过程相当于短路,又是接地了,这样不就是电源直接接地了?按下后I/O口是高,因为随着时间的变化电容开始充电,也就是说电容两端开始有电压。“C1充电过程相当于短路”这个说法没听说过,假设这个结论成立,那么电容怎么会冲上电?就这个电路而言电容短路,VCC就直接与地通了,电容绝对冲不上电。如果想对电容深入了解建议看看电工基础有关电容的章节 和 电路分析中的瞬态分析。
看下引脚内部电路你就懂了,提示一下,有上拉电阻接vcc。没有按的时候。电阻另一个也是vcc值。也就是数字电路“1”
J1按下前:IO1 高电平J1按下后:IO1 低电平不过R1 选值过大,除非IO1的内部上拉电阻为数兆欧姆或无上拉电阻才行J1闭合,无延时效果,断开时,有延时sbit IO1 P1^1;//假设接CPU P1.1端口//第一种if(IO1)..........}else........}//第2种while(IO1)..........}
刚按下按键时给电容C1充电,此时相当于短路,为低电平,当C1充电完成后变为高电平,在这个过程中I/O口电平由低到高慢慢变化,从你电路来看有延时效果。在程序方面没多大影响,你只要检测I/O口状态就可以了。

5,单片机stc12系列用一个io口连接16个按键c语言程序怎么写

用AD转,16个电阻串联在一起,每个节点引出线与按键相连,按键另一端为公共端与P1^n相连。然后AD口采集到的电压也不同,就能判别按的是哪个按键,因此只要写AD采样程序就可以了这是STC12C2052AD的例子/**********************************************************AD转换 **********************************************************/void InitADC() P1=0xff; ADC_CONTR|=0x80; delayNOP(200); P1M0=0x01;//这两个寄存器用来设置 P1口四种状态,每一位对应一个P1引脚 ,按状态组合操作 P1M1=0x01;//设置P1.0为开漏状态 delayNOP(200);}uint ADC() ADC_DATA = 0; //清除结果 ADC_CONTR = 0x60; //转换速度设置 0x60 最快速度 ADC_CONTR = 0xE0; //1110,0000 清 ADC_FLAG, ADC_START 位和低 3 位 ADC_CONTR =0xe0; delayNOP(200); //使输入电压达到稳定 ADC_CONTR = 0xe8; //1110,1000 令 ADCS = 1, 启动A/D转换, while (1) //等待A/D转换结束 if (ADC_CONTR & 0x10) //0001,0000 测试A/D转换结束否 } ADC_CONTR =0xe0; //1110,0111 清 ADC_FLAG 位, 关闭A/D转换, delayNOP(400); return ADC_DATA; //返回 A/D 10 位转换结果 }void ADC_to_key() //ADC数据转换按键信号 V=ADC();。。。。。。。。。你自己完成咯}
这个不是写得很清楚了嘛。。。如果给p1m1赋值0x03,给p1m0赋值0x05,那么p1口各个引脚对应的模式就是:p1m1 p1m0 io口模式0 0 p1.7准双向口0 0 p1.6准双向口0 0 p1.5准双向口0 0 p1.4准双向口0 0 p1.3准双向口0 1 p1.2推挽输出1 0 p1.1高阻1 1 p1.0开漏

6,一个IO 两个按键这个电路可靠吗

在设计中如果用到IO口不够用,我们肯定第一时间想到的就是通过电阻分压,根据按下不同按键,来让不同阻值的电阻接到分压电路中,然后ADC模块做电压数据读取分析对应按键按下。下文就和大家分享下单片机设计AD按键的内容。AD按键设计硬件部分电路有两种电路形式,一种的电阻串联,您一种是电阻并联,这两种都是通过电阻分压的原理实现的,下面通过电路图一一介绍。电阻并联型AD按键上图有10个按键,不同按键按下,分到的电压值不同,电阻值我已经计算好了,有部分误差,但已经是算成最小误差值了,以后大家可直接使用。对应的分压依次值有0.1Vref、0.2Vref~ 0.9Vref、0.99Vref,共10个档位。单片机ADC通过读取电路中ADCIN处的电压识别对应按键按下。上图电阻并联型AD按键电路有一个缺点就是如果有两个按键同时按下,会有错误识别的可能出现,扛干扰差,所以并联型AD按键电路很少使用。电阻串联型AD按键上图中有10个按键,对应电阻值按照ADCIN处的电压分别为Vref的x/10(x=1,2,3...9,10)倍算好,使用的电阻值也已经按照最小误差定的,可直接使用。不同按键按下,ADCIN处的电压不同,单片机ADC模块读出ADC值,从而识别对应哪个按键按下。上图中电阻使用串联的方式接在电路中,这样也就有一个电阻坏,就会影响到其他按键检测的问题。如果两个按键按下,只会识别一个靠近图中ADCIN处的按键,这样不会有像并联型AD按键电路哪有识别有误的问题存在,但是这里电阻的误差不好控制,所以我对上面电路做了改进。如下图:这个电路的好处就是这里将串联的电阻设计成等值的形式,这样在生产时也不必买更多阻值的电阻了。具体怎么分压的相信大家一看就懂。这里只是巧妙的应用了一个1M的电阻,一个电阻和大于它很多倍(一般理解为10倍以上)的电阻并联,并联后的阻值依然可以理解为和这个电阻值相等。同样的可以将电阻并联型AD按键电路改成等阻值的,这里就不在做出解答,有兴趣的朋友可以发挥下自己的脑力看看怎么设计。使用AD按键时有个需要注意的地方就是,按键尽量选择好些的。因为按键本身按下也是有阻值的,特别是用了久的按键,其按键接触点容易氧化,造成按键按下,有一定的按键阻值接在电路中。从而影响程序的识别,特别是我国南方较潮湿的地区,差一定的按键触电特别容易生锈氧化。所以AD按键也就存在了比单独通过读IO电平识别的按键短的寿命短的问题。所以这种按键也不是很推荐使用的。特别是按键数量越多,出现问题的数量也就越多。AD按键程序设计在程序设计前,首先要明白AD按键设计的原理和程序设计的思路。如果一个8位的ADC模块,要设计成10个按键,就是将8位ADC满值255等分成10份,没份之间有大约25个差值,比如一个按键按下的ADC值在25±11的位置,那么它临近的按键就是50±11的位置。对应的识别这些值,就可以识别那个按键按下了。当然为了抗干扰强,最好等分的数要少,8位的话等分最好不要超过8个按键,否则抗干扰不是很好,如果是8个按键的话每个按键的ADC差值为32,按键间的ADC差值越大,越有利于抗干扰。AD按键程序思路:每隔10ms(这个时间是按键抖动的滤波时间)读一次ADC按键值,根据值的范围,将对应的按键数值加到AD按键FIFO中(这里缓冲区8个字节长),如果AD按键FIFO满了,如果FIFO前4个值是0(对应按键没按下),最后2个值是相等的(对应按键按下),中间的2个值对应按键抖动时的值,不用管,相当于有20ms的抖动滤波时间,那么就人为最后这两个相等的值的对应按键按下了。最后欢迎大家转发评论交流!觉得写的好的话就来个转发吧,让更多人知道。也欢迎大家关注我:单片机嵌入式爱好者。会有源源不断的干货分享哦!
我不会~~~但还是要微笑~~~:)
1、可以采用ARM7或者ARM9设计一个电路。2、通过一块74系列的集成电路或ULN2803电路驱动数码管段码的驱动。3、通过一个三极管8550驱动蜂鸣器。4、一个按键一端直接连接输入引脚,另一端接地。5、安装uC/OS-II系统到ARM中,编写控制软件:按键扫描及消抖软件,计数器、延时及译码等数码管驱动软件。6、最简单的方法是到淘宝买一块开发板,硬件、系统软件、示例软件、说明书都会提供,既方便又快捷。

7,C51单片机用IO口做为几个按键的控制现在想用4X4键盘控制请问

// 4*4矩阵键盘/********************************************************连接: ------------------------------------ P1.0 P1.1 P1.2 P1.3 p1.4 S1 S5 S9 S13 P1.5 S2 S6 S10 S14 P1.6 S3 S7 S11 S15 P1.7 S4 S8 S12 S16 ------------------------------------实现原理:当高电平端口与低电平端口短接时,高电平端口会被拉成低电平------------------------算法分析:1,检查是否有键按下: P1=f0h (即0-3置1,4-7置0) 检查P1口是否是0F0H 是,则无键按下 否,则有键按下2,扫描按下的键值: 循环(依次将4至7口单独置0) 检查0-3口是否有低电平端 确定被按下的键 返回键值3,键盘防抖:抖动原因:键按下时,会产生电压的波动,持续约10MS去抖方法:10MS扫描一次,使前后两次均有键按下********************************************************/#include<ytc51.h>uchar jps,ks; //键盘缓存/*键盘扫描程序1,检查是否有按键*/uchar keyfun() uchar key_c; P2 = P2 & 0x03; P2 = P2 | 0x3c; key_c = P2; if((key_c & 0xfc) == 0x3c) return (0); else return(1);}/*键盘扫描程序2,确定按键数值*/uchar keyscan() uchar i,k; P2 = P2 & 0x03; P2 = P2 | 0xbc; if((P2 & 0x3c) != 0x3c) i = 0; k = (~P2) & 0x3c; } else P2 = P2 & 0x03; P2 = P2 | 0x7c; if((P2 & 0x3c) != 0x3c) i = 1; k = (~P2) & 0x3c; } } k = k>>3; if( k==4 ) k=3; k=i*4+k+1; return(k);}/**********************************************************************函数功能: 定时器中断函数(扫描键盘)(10ms 16位定时)入口参数: 无出口参数: 无***********************************************************************/void Time0_Func() interrupt 3 /*当定时器中断时执行此函数*/ TH1=(0xffff-9259)/256; /*T0初始化*/ TL1=(0xffff-9259)%256; WR = 1; if((ks == 0) && ( keyfun() )) jps = keyscan(); } ks = keyfun();}/**********************************************************************函数功能: 上电初始化函数入口参数: 无出口参数: 无***********************************************************************/void Power_Up(void) TMOD = 0x10;/*Time0/1为16计数器*/ TH1=(0xffff-9216)/256;/*10ms*/ TL1=(0xffff-9216)%256;/*10ms*/ TR1=1; SCON = 0x00;//串口工作模式设置 IE=0x88; /*EA=1 ET1=1*/ P0=0xff; P2=0xff;}
// 4*4矩阵键盘/********************************************************连接: ------------------------------------ P1.0 P1.1 P1.2 P1.3 p1.4 S1 S5 S9 S13 P1.5 S2 S6 S10 S14 P1.6 S3 S7 S11 S15 P1.7 S4 S8 S12 S16 ------------------------------------实现原理:当高电平端口与低电平端口短接时,高电平端口会被拉成低电平------------------------算法分析:1,检查是否有键按下: P1=f0h (即0-3置1,4-7置0) 检查P1口是否是0F0H 是,则无键按下 否,则有键按下2,扫描按下的键值: 循环(依次将4至7口单独置0) 检查0-3口是否有低电平端 确定被按下的键 返回键值3,键盘防抖:抖动原因:键按下时,会产生电压的波动,持续约10MS去抖方法:10MS扫描一次,使前后两次均有键按下********************************************************/#includeuchar jps,ks; //键盘缓存 /*键盘扫描程序1,检查是否有按键*/ uchar keyfun() { uchar key_c; P2 = P2 & 0x03; P2 = P2 | 0x3c; key_c = P2; if((key_c & 0xfc) == 0x3c) return (0); else return(1); } /*键盘扫描程序2,确定按键数值*/ uchar keyscan() { uchar i,k; P2 = P2 & 0x03; P2 = P2 | 0xbc; if((P2 & 0x3c) !

文章TAG:1个1个io多少按键  IO11按键问题  
下一篇