历史上的今天
今天是:2025年01月21日(星期二)
2021年01月21日 | 51单片机总结—上拉电阻
2021-01-21 来源:eefocus
上拉电阻的作用:
(1) 用于为OC和OD门电路,提供驱动能力。
以OC(集电极开路)电路为例:
例如,达林顿管(其实就是复合三级管)集成块ULN2003. 内部一路的电路如图,就是一个集电极开路电路。

如果不加上拉电阻是无法高电平驱动其他器件的。因为当三极管截至市没有电流流通的路径,更谈不上驱动了。这个跟单片机P0口加上拉电阻的原理一样。
(2)提高高电平电位:
单片机P1口外接4×4矩阵键盘。另外复用P1.0~P1.3外接ULN2003控制驱动步进电机。
实验中遇到的问题:当接入ULN2003时键盘无法工作,去掉ULN2003后键盘工作正常。ULN2003工作正常。(注,两个部分不同时工作)
问题分析:由于键盘的结构,无非就是两个金属片的接通或断开。但是接入ULN2003 后无法正常工作,说明是接入ULN2003影响到了P1口电平的变化。用万用表测的电压,当单片机输出高电平时,P1.0~P1.3电压1V左右,P1.4~P1.7电压4.3V左右,于是测AT89s52高低电平的判决电位,在1.3V左右。这样P1.0~P1.3始终是低电平,键盘根本无法实现扫描功能。
解决方法,只要抬高P1口高电平时的电位,就可以正常工作,
1. 在P1口到ULN2003上串接电阻,起到分压的作用,就可以抬高电平。
2. 给P1口接上拉电阻,跟P1口内部电阻并联,减小上拉电阻阻值,减小分得的电压,从而抬高P0口高电平电位。
采用第二种方案可以抬高电平到2.5V左右。键盘工作正常。
另外:我在做液晶显示实验的时候,数据线用的P0口,无法正常工作,不显示字符。但是乱动一下数据线就可以完成显示,但是显示现象并不正常,字符不是一次写入,而是乱动几次才能写完全部内容,正常应该一次全部显示 。原因是由于,我的P0口中有六个端口都外接并联三个发光二极管。,因为从资料上查到,P0口每一个端口最大可以吸收10MA电流,总电流不能超过26MA电流。这样算我的总电流已经到了40MA,呵呵。见笑了。所以怀疑是驱动的问题。于是去掉了几个二极管。显示一切正常。似乎问题已经解决,但总觉得还是有点问题,于是又经过几次试验,发现只有当P0.7端口的并联二极管去掉一个,再在其他端口接上一个发光二极管。此时也可以正常显示。但是这样P0口吸收电流在38MA,也超过了26MA不少。所以不是吸收电流太大的问题。仔细分析当端口并联外接三个二极管的时候等效于加了一个700欧左右的电阻,于是把二极管去掉换成一个1k电阻,液晶也无法显示。
经过仔细分析,我认为,由于P0.7是液晶忙信号的返回线路当这个端口返回高电平时说明,液晶正在处理数据,无法接收新的数据,返回0时说明空闲,可以接收新数据。
这样当上拉电阻太小了,液晶返回低电平时就有可能高过1.3V(AT89s52高低电平的判决电位),单片机接收到后,不会当作低电平,当然也就无法显示了。(程序设计的时检测到忙信号,继续检测)
总结:上拉电阻选择也有要求,既不是越高越好也不是越低越好。根据需要选择。
史海拾趣
|
Altium Designer 6 中,制件的原理图文件中若有中文字,用自带的\"智能PDF\"导出时,则在产生的PDF中显示不了中文字符.本人用Altium Designer 6.3~Altium Designer 6.9都试过,均有此问题,不知能否解决,请哪位大侠指点,若不能人为修改,是否要等待A ...… 查看全部问答> |
|
下面的六个程序片段主要完成这些事情: 输出Hello, World混乱C语言的源代码下面的所有程序都可以在GCC下编译通过,只有最后一个需要动用C++的编译器g++才能编程通过。 hello1.c 01 #define _________ } 02 ...… 查看全部问答> |
|
请教Modbus高手makesoft:实现Modbus协议一定需要超时检测吗? 首先声明,我对Modbus不熟悉,尤其是如何实现它,最近才从网上下载了协议研究了一下,特此向高手请教。搞清楚这些问题,才能有效地在芯片中实现相应的功能,满足大家的需要。此帖的目的是继续另一帖的讨论:建议STM32的芯片加上串口超时功能, ...… 查看全部问答> |
|
在STM32的DS里面,管脚介绍的表格中Main function(after reset)一栏中,大部分的IO口都是如PA7样式的口 ...… 查看全部问答> |
|
我用CCS编程调试时,出现了“error: identifier \\"sinwt\\" is undefined”的错误信息,请请教一下是怎么回事?是不是需要加入某个头文件?还是我的写法有问题啊?谢谢大家~~~… 查看全部问答> |
|
在使用CCS的过程中,我发现在有关于有软件延时的程序中会出现问题,感觉延时没起到作用,比如一个简单的例子,让灯闪烁,使用delay函数(函数体内用两个for循环嵌套那种),这种延时就不会有效果,而用i=50000; while ...… 查看全部问答> |
|
全部代码都已测试通过,若发现有什么问题请和我联系。因为时间仓促,基本上都是一些硬件测试程序。记得要把例程和固件库放在同一目录下,全部工程共用一个库的。至于SD卡里的文件只是几个测试图片和音 ...… 查看全部问答> |
|
在EK-LM4F120XL Launchpad中, 我分别用 AIN0(PE3口)采样1.3V电压 AIN1(PE2口)采样0.65V电压, AIN8(PE5口)采样1.95V电压, AIN9(PE4口)采样2.6V电压, 假如以3.0V作为参考电压,那么在数据寄存器中采样结果应该是: 1775,对应1.3V电压 ...… 查看全部问答> |




