导航:首页 > 操作系统 > 单片机输出口怎么接

单片机输出口怎么接

发布时间:2023-09-03 14:05:49

单片机按键有几种方式_单片机按键连接方法

单片机按键连接方法总结(五种按键扩展方案详细介绍)

单片机在各种领域运用相当广泛,而作为人机交流的按键设计也有很多种。不同的设计方法,有着不同的优缺点。而又由于单片机I/O资源有限,如何用最少的I/O口扩展更多的按键是我所研究的问题。接下来我给大家展示几种自己觉得比较好的按键扩展方案,大家可以在以后的单片机电路设计中灵活运用。

1)、第一种是最为常见的,也就是一个I/O口对应一个按钮开关。

这种方案是一对一的,一个I/O口对应一个按键。这里P00到P04,都外接了一个上拉电阻,在没有开关按下的时候,是高电平,一旦有按键按下,就被拉成低电平。这种方案优点是电路简单可靠,程序设计也很简单。缺点是占用I/O资源多。如果单片机资源够多,不紧缺,推荐使用这种方案携启。

2)、第二种方案也比较常见,但是比第一种的资源利用率要高,硬件电路也不复杂。

这是一种矩阵式键盘,用8个I/O控制了16个按钮开关,优点显而易见。当然这种电路的程序设计相对也还是很简单的。由P00到P03循环输出低电平,然后检测P04到P07的状态。比方说这里P00到P03口输出1000,然后检测P04到P07,如果P04为1则说明按下的键为s1,如果P05为1则说明按下的是s2等等。为了电路的可靠,也可以和第一种方案一样加上上拉电阻。

3)、第三种是我自己搞的一种方案,可以使用4个I/O控制8个按键,电路多了一些二极管,稍微复杂了一点。

这个电路的原理很简单,就是利用二极管的单向导电性。也是和上面的方案一样,程序需要采用轮训的方法。比方说,先置P00到P03都为低电平,然后把P00置为高电平,接着查询P02和P03的状态,如果P02为高则说明按下的是s5,若P03为高则说明按下的是s6,然后再让P00为低,P01为高,同样检测P02和P03的状态。接下来分别让P02和P03为高,其他为低,分别检测P00和P01的状态,然后再做判断。这种方案的程序其实也不难。

4)这是我在一本书上看到的,感觉设计的非常巧妙,同样它也用到了二极管,不过比我的上一种方案的I/O利用率更高,他用4个I/O口控制了12个按盯正键。我相信你了解了之后也会惊奇的。

首先好好品味一下这个方案吧,想想怎么来识别按键呢!

首先,我们让P00到P03全输出高电平。如果这个时候从P00到P03的任意一个端口检测到低电平,很容易知道是按下了那个键,肯定是s13到s16的其中一个。如果没有检测到信号,就进行下一次的检测,让P01到P03为高电平,P00为低电平,然后检测P01到P03的状态。如凯隐悔果P01为低,则按下的是s1,;P02为低,则按下的是s2;P03为低,则按下的是s3。

然后再让P00,P02,P03为高电平,P01为低电平。同理用上面的方法可以检测出按下的那个按键。(部分程序源代码会在后面贴出来,阅读代码可以更好理解电路)

5)、接下来这种方案则更为强大。不过需要用到一个A/D转换器(有的单片机集成有A/D转换器,则更为方便)。如果A/D转化器的分辨率为n位,理论上是可以扩展2^n(2的n次方)个按键。

这是一种接AD转化器的方案,有两种:第一种是并联式;第二种是串联式。在功能上也有些不同。第一种的话各个电阻值各不相同,当按下不同按键时,进入AD的模拟量是不一样的,通过AD转换,就可以得到按下的是哪个按键。方式一还可以同时识别多个按键,即可以设置组合键,只要电阻取得合适。

方式二各个电阻可以取一样的,方便计算,但是不能有组合按键。因为当按下上面的按键后,下面所有按键都会被短路。(在实际运用中,还需要接地,这里没有画出) 。前面说理论上可以扩展2^n个按键,这只是理论,因为这里电阻的精度有限,所以实际是不可能的,两个模拟量之间要有足够大的差值,程序才可能准确的分辨。

上面就是我介绍的五种按键扩展方案,后面几种比较另类,不过也有他们的优点。以上电路我都仿真过,可以实现。

附方案4键盘扫描源代码:

sbit line_1=P0.1;

sbit line_2=P0.2;

sbit line_3=P0.3;

sbit line_4=P0.4

char key=0;

void key_scan()

{

line_1=line_2=line_3=line_4=1;

if(~(line_1&&line_2&&line_3&&line_4)) {

if(line_1==0) {key=13;return;} if(line_2==0) {key=14; return;} if(line_3==0) {key=15;return;} if(line_4==0) {key=16; return;} }

line_2=line_3=line_4=1;

line_1=0;

if(~(line_2&&line_3&&line_4)) {

delay();

if(line_2==0) {key=1;return;} if(line_3==0) {key=2;return;} if(line_4==0) {key=3;return;} }

line_1=line_3=line_4=1;

line_2=0;

if(~(line_1&&line_3&&line_4)) {

delay();

if(line_3==0) {key=5;return;} if(line_4==0) {key=6;return;} }

line_1=line_2=line_4=1;

line_3=0;

if(~(line_2&&line_1&&line_4)) {

delay();

if(line_4==0) {key=9;return;} }

line_4=0;

line_1=line_2=line_3=1;

if(~(line_2&&line_3&&line_1)) {

delay();

if(line_1==0) {key=10;return;} if(line_2==0) {key=11;return;} if(line_3==0) {key=12;return;} }

line_3=0;

line_1=line_2=line_4=1;

if(~(line_2&&line_3&&line_4)) {

delay();

if(line_1==0) {key=7;return; } if(line_2==0) {key=8;return; } }

line_2=0;

line_1=line_3=line_4=1;

if(~(line_2&&line_3&&line_4)) {

delay();

if(line_1==0) {key=4;return; } }

return;

}

Ⅱ 单片机输出端口

这是最基础的东东呀,你还要多看看书才可以,在知道里一句话说不清楚。

P0,P1,P2,P3都可以控制输出高低电平,只要在指令里指定就可以了,比如:MOVP1,#FFH.这样P1口输出全高电平。MOVP3,#0FH,这是P3口高4位为低电平,低4位为高电平。

40个管脚,除了这32个I/O外,电源2个,时钟电路2个,复位一个,EA(选择片内片外程序存储器),PSEN,ALE(后面这两个现在基本不用了,因为我们都常用扩展外部的三总线)。接线见下面的最小系统图。

Ⅲ 求用TPS54331做供给单片机的降压电源详细电路图,12V降到5V,效率精确越高越好,谢谢大神们了

下图是Datasheet中的典型应用电路。


图中,输出电压为3.3V。

输出电压Vout=(1+R5/R6)*0.8

取R6=1kΩ,R5=5kΩ,R4=250Ω,可获取5V输出。

电压是电路中自由电荷定向移动形成电流的原因。

电压在国际单位制中的主单位是伏特(V),简称伏,用符号V表示。1伏特等于对每1库仑的电荷做了1焦耳的功,即1V=1J/C。强电压常用千伏(kV)为单位,弱小电压的单位可以用毫伏(mV)微伏(μv)。

输出电压就是电子元件输出的最大电压:

输出电压就是电子元件输出的最大电压。也就是说,所谓输出电压就是指的电子设备输出电流方向的电压值大小,之所以会有输出电压这个专有名词,是因为所有设备的输入电压与输出电压并不是相等的,这个过程中是有压降的。

输出电压有两个含义:

1.不带负载的时候净输出,就是电路两端,开路压差。

2.是带负载的时候输出两端的压差。

两个不一样 输出值也不相同。

Ⅳ 单片机控制系统中,按键应如何连接不同连接方式,配置gpio工作模式时应如何

在单片机控制系统中,按键通常使用GPIO引脚连接,以便单片机能够读取按键的状态并作出相应的响应。按键连接的方式通常有两种:短接方式和上拉/下拉电阻方式。

阅读全文

与单片机输出口怎么接相关的资料

热点内容
云看地是什么APP 浏览:883
数学指南pdf 浏览:856
phpcurldll64位 浏览:976
程序员脱产一年半 浏览:849
hr招程序员有什么条件 浏览:587
android开源集合 浏览:867
华为云服务器登录密码和账号 浏览:154
中世纪java程序员 浏览:786
什么开发引擎使用python 浏览:176
sh脚本运行命令 浏览:316
广联达加密锁怎么看到期 浏览:173
cad轨迹命令 浏览:979
同事刷到女程序员自媒体视频 浏览:571
校验算法的缺点是什么 浏览:717
PHP商品分类功能实现 浏览:330
php取字符串中间 浏览:432
程序员经常用工具 浏览:837
降服主力指标源码主图 浏览:502
python实用库 浏览:694
电脑默认7个文件夹 浏览:13