按常规,在51端口(P1、P2、P3)某位用作输入时,必须先向对应的锁存器写入1,使FET截止。一般情况是这样,也有例外。所谓IO口内部与电源相连的上拉电阻而非一常规线性电阻,实质上,该电阻是由两个场效应管并联在一起:一个FET为负载管,其阻值固定;另一个FET可工作在导通或截止两种状态(姑且叫可变FET)。使其总电阻值变化近似为0或阻值较大(20千欧--40千欧)两种情况。当和端口锁存器相连的FET由导通至截止时,该阻值近似为0,可将引脚快速上拉至高电平;当和锁存器相连的FET由截止至导通时,该电阻呈现较大阻值,限制了和端口锁存器相连的FET的导通电流。
51I/O口作为输入端和外部信号相连有时必须考虑上述特性,本人在设计LTP1245热敏打印头驱动板时,资料上推介热敏头“抬头”和“纸尽”信号由头中内嵌检测电路提供,MCU IO口采集该信号时需加缓冲(如74HC04)。当时本人认为51IO口上拉电阻为一较大阻值的固定电阻,对 输入信号无影响,故未加缓冲电路(为降低成本能省则省)。可到调试PCBA时发现,“抬头”、“纸尽”状态变化时,采集信号只在3.90V--5.10V之间变化,应为低电平时无低电平输出。究其原因,打印头的“抬头”、“缺纸”信号输出为一光敏三极管的集电极输出,集电极和电源间原有一个负载电阻,饱和导通设计工作电流仅为450--1100微安,当该集电极直接和MCU IO口某位相连时,IO口上拉电阻和光敏三极管负载电阻并联,当IO口上拉时,上拉电阻极小致使光敏三极管直流负载线斜率陡然增大,工作状态进入放大区而非希望的饱和区。当时在不改硬件的条件下,我几乎无计可施,甚至想到了准备烧断IO口上拉电阻(前两天我曾发帖求救怎么烧断IO口上拉电阻的方法)后来听网友建议该方法风险较大,所以总想用软件方法解决。
后来我的解决方法是:采样信号前不是先向对应锁存器写1,而是先写入0,再写入1,延时约10毫秒以上,然后再采样(当然此法只适应于采样频率很低的情况)。这样作的目的是:先写入0迫使IO口上拉电阻先为一较大值,此时如果外部光敏三极管本来处于截止状态,当完成上述一系列锁存器的写入过程后光敏管仍为截止态,IO口正确采样到高电平;此时如果外部光敏三极管基极电流足够大有容许三极管饱和导通的条件(即基极吸收到充分光强),虽然采样一开始集电极被人为钳位在低电平,但当下一时隙和IO口相连的锁存器被写入1时,在IO口上拉电阻中的可变FET导通之前,光敏三极管已先进入饱和态而又把引脚钳位在实际输出的低电平,此时MCU IO口的上拉电阻仍为较大阻值,同时和原光敏三极管集电极负载电阻并联(考虑并联后阻值变化,原光敏三极管集电极负载电阻需增大到适当阻值)充当饱和导通后光敏三极管的负载电阻,事实上,IO口上拉电阻中的可变FET未来得及导通又被截止了,由此又保证了信号低电平的正确采样。经过波形测试问题得。
关键字:51系列 IO口 上拉电阻
引用地址:
51系列I/O口上拉电阻使用点滴
推荐阅读最新更新时间:2024-03-16 13:02
512GB闪存+40MP相机?华为P20系列硬件配置曝光
本月27日华为在法国巴黎召开P20系列产品发布会,华为终端的高管余承东、何刚等疯狂为其打call,究竟华为的P20系列有什么魅力能够让余承东们自信满满的为其站台,我们从它的硬件配置就能得到答案。 知名爆料人 @Roland Quandt 曾在推特上披露称,华为P20 Pro 的三颗后置摄像头分别是黑白 + 彩色 + 变焦的方案,现在他再次放出猛料,称其中一颗摄像头达到了 4000 万像素。在华为 P20 Pro 后置的三颗摄像头中,主摄像头是 4000 万像素,第二颗摄像头支持 5 倍混合变焦,不过像素只有 800 万,最后一颗摄像头则是 2000 万像素的黑白摄像头。 要知道,以前手机相机像素高达 40MP 的
[手机便携]
51单片机P0口上拉电阻的阻值问题
如果是驱动led,那么用1K左右的就行了。如果希望亮度大一些,电阻可减小,最小不要小于200欧姆,否则电流太大;如果希望亮度小一些,电阻可增大,增加到多少呢,主要看亮度情况,以亮度合适为准,一般来说超过3K以上时,亮度就很弱了,但是对于超高亮度的LED,有时候电阻为10K时觉得亮度还能够用。通常就用1k的。 对于驱动光耦合器,如果是高电位有效,即耦合器输入端接端口和地之间,那么和LED的情况是一样的;如果是低电位有效,即耦合器输入端接端口和VCC之间,那么除了要串接一个1——4.7k之间的电阻以外,同时上拉电阻的阻值就可以用的特别大,用100k——500K之间的都行,当然用10K的也可以,但是考虑到省电问题,没有必要用那么小的
[单片机]
STM32 IO口模拟I2C+驱动MPU6050
一、MPU6050 1. MPU6050介绍 MPU6050 是 InvenSense 公司推出的全球首款整合性 6 轴运动处理组件,相较于多组件 方案,免除了组合陀螺仪与加速器时之轴间差的问题,减少了安装空间。 MPU6050 内部整合了 3 轴陀螺仪和 3 轴加速度传感器,并且含有一个第二 IIC 接口, 可用于连接外部磁力传感器,并利用自带的数字运动处理器( DMP: Digital Motion Processor) 硬件加速引擎,通过主 IIC 接口,向应用端输出完整的 9 轴融合演算数据。有了 DMP,我 们可以使用 InvenSense 公司提供的运动处理资料库,非常方便的实现姿态解算,降低了运 动处理
[单片机]
STM32--GPIO口功能以及寄存器介绍
GPIO口功能介绍 每个GPI/O端口有两个32位配置寄存器(GPIOx_CRL【控制端口0~7】,GPIOx_CRH【如有,控制端口8~15】), 两个32位数据寄存器(GPIOx_IDR,GPIOx_ODR),(直接设置输入输出的状态,高低电平(0,1)) 一个32位置位/复位寄存器(GPIOx_BSRR),(高16位清零,低16位置1,均为1时有效,0不影响) 一个16位复位寄存器(GPIOx_BRR) ,(只清零,使用低16位) 一个32位锁定寄存器(GPIOx_LCKR)。(锁键) 如图为一个端口的基本结构,(具体的每个寄存器位的定义,请一定参考《STM32中文参考手册》)
[单片机]
PIC32单片机IO口操作之LED灯
#include plib.h #define uchar unsigned char #define uint unsigned int /*void delay(uint x) { uint a,b; for(a=x;a 0;a--) for(b=110;b 0;b--); } int main(void) { TRISB=0x00;//设置端口输出;可以参看数据手册 while(1) { PORTB=0x3C00;//四个控制LED的端口输出高电平; delay(100); PORTB=0x00;//关闭LED delay(100); } }//以上代码实现了LED灯的同时闪烁。*/ /*void delay(uint
[单片机]
功率SMD LED --- VLMx51系列(Vishay)
日前,Vishay Intertechnology, Inc.宣布,推出采用小尺寸PLCC2 Plus封装的功率SMD LED --- VLMx51系列,该系列LED具有高光通量和非常低的结至环境热阻,可用于各种照明应用。 VLMR51、VLMK51、VLMY51和VLMW51器件采用高发光效率的InGan和AllnGaP硅上技术,具有8.5lm~30.6lm的光通量和2850mcd~9750mcd的发光强度。这些LED具有低至100k/W的极低结至环境热阻,功率耗散高达738mW,从而使驱动电流高达200mA。 凭借这些优异的性能参数,再加上3.5mmx3.5mmx1.2mm的小尺寸封装外形,使VLMx51系列成为车内
[单片机]
STM8S003F使用IO口模拟串口(四)正真意义上的模拟串口
在前三篇文章中由简到烦的介绍了模拟串口的设计规则,但是在前三篇文章中所实现的方法并不能满足我们在实际工程中的使用。在这篇文章中,我将详细的描述模拟串口的实现,并提供相关代码来供大家参考。 1 原理 为了书写的方便,我将使用我的模版文件,关于模版文件的详细介绍请参考这篇文章。同样的,我们认为一个字节是10个位【起始位(1bit)+数据位(8bit)+停止位(1bit)】。 同样的为了方便,我们先实现发送功能再实现接收功能。为了扩大本文章所述内容的适用性,我将使用MAX3485芯片,关于这款芯片的使用方法我将进行详细介绍,同时也请参见《》。 1.1 设计逻辑 发送数据:串口调试助手1发送数据——调用模拟串口发送——模拟串口
[单片机]
控制器件I/O口单片机的相关知识细解
I/O口单片机作为一个控制器件必定有数据输入和输出。输入量可能是温度、压力、转速等,而输出量可能是开关量和数据,以保证受控过程在规定的范围内运行。数据的输入和输出都需通过单片机内部有关电路,再与引脚构成输入/输出(I/O)端口。PIC16F84单片机芯片有两个I/O端口(PROTA和PORTB)。端口A为5位口,端口B为8位口,共占用13位引脚。每个端口由一个锁存器(即数据存储器中的特殊功能寄存器05H、06H单元)、一个输出驱动器和输入缓冲器等组成。当把I/O口作输出时,数据可以锁存;作输入口时,数据可以缓冲。 16F84 PORTA口中的RA4是斯密特触发输入、漏极开路输出。而其它的RA口引脚都是TTL电平输入和全C
[单片机]