【单片机IO口四种模式】

这篇具有很好参考价值的文章主要介绍了【单片机IO口四种模式】。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。



前言

STC单片机IO口四种工作模式准双向口,推挽输出,高阻输入,开漏输出


一.IO口四种工作模式

STC89C52单片机的IO口都是准双向口,而后期的单片机功能强了IO的工作模式也就多了起来,以STC8G单片机为例,所有IO口有4种工作模式,确切的说所有IO口的每一个位(每一个引脚)都有4种工作模式:准双向口,推挽输出,高阻输入,开漏输出。也可以是不同的引脚有不同的模式。

单片机上电以后:除P3.0和P3.1外,其余所有IO口均为高阻态,用户在使用IO口前必须先设置IO口的工作模式(就是这个要求,让本人吃了多次亏)明明程序没有问题,就是无输出,检查程序一遍,发现未配置IO口,人家是默认高阻态呢,哪里来的输出?

所以之后的程序,写了一个架构,如下(配置IO口工作模式),不管用不用先设置成准双向口模式。

端口模式如何配置

void main()
{   
    P3M0=0x00;
    P3M1=0x00;//设置P3.0-P3.7为准双向口模式
    P5M0=0x00;
    P5M1=0x00;//设置P5.0-P5.7为准双向口模式
    
	while(1)
	{
    	LED=~LED;
    	delay(100);
    }
}

当然我的程序架构是有点问题的,我是将IO口统统准双向,当遇到要让不同的管脚设置不同的模式怎么办?(查看数据手册-知道有模式配置寄存器)

端口模式配置寄存器(PxM0,PxM1)

这是STC15系列的数据手册
io口的四种模式,嵌入式大神之路,C51单片机,单片机,stm32,嵌入式硬件
io口的四种模式,嵌入式大神之路,C51单片机,单片机,stm32,嵌入式硬件
查阅可知:每组IO口是由两组特殊功能寄存器联合控制的(以P1口举例)

io口的四种模式,嵌入式大神之路,C51单片机,单片机,stm32,嵌入式硬件
两个寄存器每一位,组成两位的控制码,00-01-10-11来对应每一位的控制模式
比如控制P1口,即SFR:P1M1/P1M0; 如果控制P5口,即SFR:P5M1/P5M0
这两个寄存器。(STC单片机一共有5组IO口,每组IO口对应两个控制寄存器,即一共有10组SFR端口控制模式寄存器)

要注意一点的是,这些寄存器地址均不支持位寻址,所以配置时,只能采用直接向SFR以十六进制赋值的方式。

io口的四种模式,嵌入式大神之路,C51单片机,单片机,stm32,嵌入式硬件
比如P1.0要求开漏输出模式,P1.1为高阻输入模式等等(如图)…
则对应寄存器P1M1=0x03;P1M0=0x09;对应程序就这样赋值即可(其他端口也是如此)

1.准双向口模式

这个模式又叫弱上拉,是标准的8051输出模式。
STC89C51单片机的P1/P2/P3口都是准双向口,即不但能够输出数据,也能够输入数据,但为什么是“准双向口”,而不是“双向口”?(准双向口电路如下)

io口的四种模式,嵌入式大神之路,C51单片机,单片机,stm32,嵌入式硬件
由一个NPN三极管,外加反相器和一个上拉电阻组成(实际电路是MOS管,但三极管可以实现一样的功能)作为IO口,首先要有输出数据的功能,那么准双向口是怎么输出数据的?

SW1拨向高电平侧,代表输出的内部数据为1(高电平),高电平传递至反相器后,三极管基极即为低电平,低电平使三极管Q1截止,那么准双向口自然是通过上拉电阻那条路(电流流10k电阻至输出端),拉为高电平(即我们想要传递的内部数据高电平这样传递出去),也就是常说的拉电流。受10k电阻限制,拉电流非常弱。

SW0拨向低电平侧(代表输出内部数据为低电平),低电平经反相器后,为高电平,此时三极管导通,输出端则被强行下拉为低电平。输出0时,三极管把输出端和地导通,电流则可以从输出端,经三极管直接到地,这样可以从端口接收很强的电流,也就是我们常说的灌电流能力强。

以上则是把准双向口如何输出数据,提供拉电流,如何接收灌电流说清楚了,下面则是说如何输入了?

io口的四种模式,嵌入式大神之路,C51单片机,单片机,stm32,嵌入式硬件
准双向口的输入线是直接从端口上引出来的,内接干扰抑制,和施密特触发器(不用详解),现在先把按键按下,SW2下拨,接入低电平,即输入0,低电平经过端口线(SW_PORT),输入数据线(U3/U2),传递到内部。

输入高电平,(Vcc经SW2,按键,输入端,再到数据线)即输入内部数据(高电平);那为什么是准双向口呢?此时三极管的集电极为截止状态,截止时,端口线被10k电阻弱上拉,如果此时端口(SW2)接低电平,很容易拉下来,此状态时,准双向口输入没有问题。

io口的四种模式,嵌入式大神之路,C51单片机,单片机,stm32,嵌入式硬件
如果SW1接低电平,三极管导通,端口线将被强行下拉至低电平。因为下拉非常强烈,端口SW2即使接高电平,也不能把端口拉高,所以此时不能输入高电平,低电平(SW2拨下)可以正常输入,至输入数据端,至内部数据。

在输入数据前,SW1拨上,把三极管截止,就能顺利的把端口数据输入进来,所以单片机使用准双向口时,为了确保能正常读取端口状态,读前先写1,把三极管截止(即这就是准双向口的由来,准即提前准备的意思)

准双向口的特点

1.拉电流弱
2.能读能写
3.灌电流能力强
4.读前先写1,使三极管(晶体管)截止【否则很可能读不了1】

2.开漏输出模式

此模式,内部上拉电阻断开,加外部上拉电阻,才可读外部状态,也可对外输出高电平。例如STC89C51单片机的P0口;所谓开漏,是指MOS管漏极开路,或三极管集电极开路。
结构如图:

io口的四种模式,嵌入式大神之路,C51单片机,单片机,stm32,嵌入式硬件
与准双向口相比,就差一个上拉电阻,先接入低电平(SW1拨下),低电平经反向变为高电平,高电平使三极管导通,输出端由于经三极管下拉到地,呈低电平,也就把0传递出来了。

将SW1拨上,即高电平经反向为低电平,三极管截止,此时输出端悬空,高电平并没有顺利传输出来,则说明开漏输出只能输出低电平,不能输出高电平。

上述是输出,下面讲解输入:

io口的四种模式,嵌入式大神之路,C51单片机,单片机,stm32,嵌入式硬件
同理,SW1拨上接高电平,三极管截止,输入端接高电平(SW2拨上),高电平沿端口,经输入数据线传入内部(高电平传输没有问题),同理SW2拨下一样能正常传递进来。

若SW1拨下,即三极管导通,,端口线经三极管强下拉至地,所以此时尽管端口接高电平,那么输入数据线为低电平,即外部高电平没有传输进来;现在把端口开关SW2拨低电平侧,低电平通过数据输入线可以顺利传递进来。

由此可见开漏模式在输入的时候和准双向口一样,必须读前先写1,把三极管截止才能读到端口状态。补充一点:若SW1拨下接0时,接收灌电流能力强

开漏输出模式作用

说了半天,感觉开漏输出模式和准双向口差不多呢?而且还不能输出高电平,要它何用?

特长:1.输出端外加上拉电阻,立即变为准双向口模式,功能完全一样,
2.实现电平转换:输出电平完全由外部上拉电阻的电源决定(比如这里36v)

io口的四种模式,嵌入式大神之路,C51单片机,单片机,stm32,嵌入式硬件
3.开漏输出模式具有线与功能:例如多路信号同时输入,只有同时输入高电平(SW2,SW3,SW4,SW5,SW6拨上),才能将高电平输入数据输入端至内部,只要有一路或几路SW拨下,输入数据就是低电平。

io口的四种模式,嵌入式大神之路,C51单片机,单片机,stm32,嵌入式硬件
io口的四种模式,嵌入式大神之路,C51单片机,单片机,stm32,嵌入式硬件

io口的四种模式,嵌入式大神之路,C51单片机,单片机,stm32,嵌入式硬件
总结此模式:

优点:1.电平转换。2.线与功能。3.上拉准双向。4.灌电流能力强
缺点:1.只能输出低电平,不能输出高电平。2.准输入口(读前写1,三极管截止)

3.推挽输出模式

这个模式又叫强上拉,很适合大电流输出,能输出20MA的拉电流,如下
io口的四种模式,嵌入式大神之路,C51单片机,单片机,stm32,嵌入式硬件
单片机管脚的推挽输出由两只三极管(或场效应管)组成,这两只晶体管始终处于一个导通另外一个截止的状态。而三极管又是电流控制元件:以小电流来控制大电流,(如下)左边是P型三极管,当基极有小电流输入,则集电极大电流可以流向发射极;而对于右边N型三极管,只有基极有小电流流出时,那么发射极的大电流可以向集电极流。

io口的四种模式,嵌入式大神之路,C51单片机,单片机,stm32,嵌入式硬件
io口的四种模式,嵌入式大神之路,C51单片机,单片机,stm32,嵌入式硬件
而在推挽电路,单片机给管脚高电平的时候,让上面的NPN型三极管导通,下面的PNP三极管截止,此时单片机管脚有大电流输出Vout,形成“推”,即为拉电流;

io口的四种模式,嵌入式大神之路,C51单片机,单片机,stm32,嵌入式硬件
当单片机给管脚低电平的时候,N型三极管导通,P型三极管截止,此时电流从管脚流入单片机,形成"挽",即灌电流;单片机在此模式时有很强的驱动能力,而拉电流能达到20MA左右;灌电流的驱动能力更强。

4.高阻输入模式

此模式:电流即不能流入也不能流出。

io口的四种模式,嵌入式大神之路,C51单片机,单片机,stm32,嵌入式硬件
相当于开关全部断开…文章来源地址https://www.toymoban.com/news/detail-797185.html

到了这里,关于【单片机IO口四种模式】的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 【51单片机】IO 扩展(串转并)--74HC595

    参考: 普中 51 单片机开发攻略 第12章 【51单片机入门教程-2020版 程序全程纯手打 从零开始入门】 https://www.bilibili.com/video/BV1Mb411e7re/?p=21share_source=copy_webvd_source=77e36f24add8dc77c362748ffb980148 nop ()是什么语句? and 位运算操作符 【51单片机入门教程-2020版 程序全程纯手打 从零开始入

    2024年01月22日
    浏览(48)
  • 51单片机——IO拓展(串转并)-74HC595 小白详解

    74HC595 芯片介绍 74HC595 是一个 8 位串行输入、并行输出的位移缓存器,其中并行输出为三 态输出(即高电平、低电平和高阻抗)。芯片管脚及功能说明如下:图1 上面两张都是 74HC595 芯片管脚图,细心的朋友就会发现左侧的 1 脚是 QB, 而右侧芯片的 1 脚是 Q1,左侧芯片的 11

    2024年02月04日
    浏览(47)
  • C语言面试之旅:掌握基础,探索深度(面试实战之单片机——IO)

            梦想和自由一样,都有代价,但都值得。                                                                                                                                                ----小新         单片机是一种微控制器,它包含一个处

    2024年02月05日
    浏览(41)
  • 单片机IO口控制12V电压通断,MOS和三极管电路

    POWER_EN为高电平时,Q2导通,使得Q1sg两端有压差,达到Q1的导通电压,此时Vin输出到Vout,这个Vin可以是12V POWER_EN为低电平时,Q2截止,使得Q1sg两端没有压差,Q1截止,此时Vout没有电压。 这样就达到了控制12V通断的要求,当然这个Q1的选型需要参考这个12V的供电电流来选型,如

    2024年02月13日
    浏览(52)
  • keil软件调试查看语句运行时间,单片机IO口状态,变量窗口设置,晶振设置。

    上一篇文章介绍了keil软件调试(Debug)仿真教程(软件调试和硬件调试的区别)及常用调试按键详解,本篇文章主要学习的是软件调试里面,如何设置单片机晶振( 用来确定单片机工作频率 ),如何查看单片机IO口引脚( 用来观察IO口当前高低电平 )如何查看单条语句运行

    2024年02月09日
    浏览(52)
  • 单片机(二):3个IO扩展n*8个IO,基于74hc595与74hc165的8x8矩阵键盘

    3个IO通过一片74hc595扩展8个输出IO,3个IO通过一片74hc1655扩展8个输入IO,最终成为8X8的矩阵键盘。对于普通的矩阵键盘,再加入防止鬼键、消抖和按下与松开识别。 74HC595是一个8位串行输入、并行输出的移位缓存器。通俗的来讲就是在输入时钟的上升沿数据输入端的数据可以位

    2024年02月10日
    浏览(56)
  • 【51单片机】点亮LED灯(四种形式)

    💖作者简介:大家好,我是泽奀。全栈领域新星创作者🥇  📝个人主页:weixin_52632755的博客_泽奀_CSDN博客 🎉点赞➕评论➕收藏 == 养成习惯 😋 💬本系列哔哩哔哩江科大51单片机的视频为主以及自己的总结梳理📚  https://blog.csdn.net/weixin_52632755/category_11316267.html 介绍两个比

    2023年04月13日
    浏览(39)
  • 【期末不挂科-单片机考前速过系列P11】(第十一章:15题速过串行口的工作原理和应用)经典例题盘点(带图解析)

    前言 大家好吖,欢迎来到 YY 滴单片机速过系列 ,热烈欢迎! 本章主要内容面向接触过单片机的老铁 主要内容含: 欢迎订阅 YY 滴C++专栏!更多干货持续更新!以下是传送门! YY的《C++》专栏 YY的《C++11》专栏 YY的《Linux》专栏 YY的《数据结构》专栏 YY的《C语言基础》专栏

    2024年02月01日
    浏览(50)
  • 20、基于51单片机的函数发生器四种波形频率系统设计

    设计了一个基于DAC0832的信号发生器,使之输出不同频率的正弦波、三角波、锯齿波和方波,并通过按键切换不同的波形,也可以改变频率以及频率变化的步进。本方案选择了DAC0832作为核心芯片,并与51单片机结合,设计出一款建议的高精度频率信号发生器,具有体积小功率等

    2024年02月04日
    浏览(52)
  • 【51单片机入门】实现流水灯的原理及四种方法(详细易上手型)

    初学单片机,流水灯的实现是必不可少的,下面将介绍流水灯的原理及使用STC-ISP软件延时计算器生成的延时代码实现流水灯的四种方法,最后介绍如何将延时函数模块化。 目录  一、流水灯原理  二、循环 三、移位运算符 四、库函数 五、数组          六、延时函数模块

    2024年02月05日
    浏览(57)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包