51单片机直接驱动数码管的四位数码管接上拉电阻多大

查看: 379|回复: 0
关于51单片机的P0口上拉电阻取值问题
下载分260 分
原创币0 点
上传745 次
金币1578 ¥
主题帖子积分
会员等级:
16cebe2fd34.jpg (63.41 KB, 下载次数: 11)
09:27 上传
  有很多朋友在学习51单片机的时候,都会对其P0口上拉电阻阻值的取值问题而头疼。其实,P0口接不接上拉电阻,电阻值该选择多大的都是根据不同的情况来选择的。下面来简单分析下如下的几种情况:
  第一种:P0口作为共阳极LED数码管的驱动端口。这种情况下,P0口主要是以吸收电流来作为有效工作方式,不对外输出高电平,此时,不应接上拉,任何上拉都不要接。接多少丢多少。不仅增加成本,而且增大了工作电流。至于数码管的鬼影问题,那是程序部分的问题,与硬件无关。
  第二种:P0口作为数据传输接口。这种情况下,P0口需要输出高电平,而高电平的输出其实就是来自于上拉电阻。在数据输出状态下,P0口的负载都是逻辑器件,不需要大的输入功率,那么,就可以采用电阻值较大的电阻器作为上拉电阻,电阻过小会导致系统的工作电流加大。常用的5V电压下,其取值范围在4.7K-47K之间。减小电阻有利于提高系统的抗干扰能力,但是会增大系统的功耗,尤其是上拉电阻较多的情况下此现象会更加明显。
  第三种:P0口作为控制接口。这种情况下,P0口需要输出高电平或者低电平作为有效控制信号。如果需要输出高电平作为有效信号,加之一般控制的器件是NPN的,那么,其上拉电阻的取值范围多在470-4.7K之间,取值越小,三极管导通程度越大,三极管本身的损耗就会越小,但是对单片机本身的考验就会越大。取值越大,则单片机负担越小,则三极管的导通程度就会越小,导致三极管本身的损耗加大,甚至会跳出开关状态转至放大状态。如果需要控制的三极管功率过大,那么需要在控制电路中间加一级隔离放大。
  如果单片机的P0口需要输出低电平作为有效控制信号,那么,其上拉电阻的作为就不是用来输出高电平了,而是为了给PNP型被控器件提供一个防止意外导通的电压,此举可以提高抗干扰能力,提高可靠性。那么,其电阻的阻值取值范围多在4.7K-47K之间。同样的,阻值越大,单片机负担越小,抗干扰能力越小,阻值越小,单片机负担越大,抗干扰能力越大。
  常用的电阻阻值主要集中在470欧姆的LED数码管限流电阻,1K的三极管驱动电阻,4.7K的信号上拉电阻这几种。其他的电阻则主要用在模拟电路部分。数字电路对电阻值的挑剔性远小于模拟电路,所以也有很多朋友对模拟电路感到头疼。
Powered by Discuz! X3.4 -ALicensed
& 2017 Comsenz Inc.我想做个16*16的LED点阵,用51单片机控制,请问是否要外加电压电源已达到亮度,是不是还要加上拉电阻.
我想做个16*16的LED点阵,用51单片机控制,请问是否要外加电压电源已达到亮度,是不是还要加上拉电阻.我还想问下,怎么才能排除在组成的图形中的“鬼影”,就是排除闪烁的暗灯.最好有设计例子.本人最近做了个模拟实验,用51单片机控制8*8led,用P2端的高电平控制行,用P1端的低电平控制列,并且用了锁存器控制行,但就是在做实验时倒数第2行和倒数第3行,不亮.程序如下:#include#include#define unchar unsigned char#define unint unsigned intunchar code tab[]={0xf3,0xf1,0xf3,0xf3,0xf3,0xf3,0xe1,0xe1};//为“1”字模图形unchar code tab1[]={0x01,0x02,0x04,0x08,0x10,0x20,0x40,0x80};//行扫描的数组unint j,k,i;sbit kong=P3^6;//锁存器的控制unchar *p;void delay(unchar t){while(t--);}void main(){kong=0;while(1){ for(j=0;j
单片机采用MSC-51或其兼容系列芯片,采用24MHZ或更高频率晶振,以获得较高的刷新频率,时期显示更稳定.单片机的串口与列驱动器相连,用来显示数据.P1口低4位与行驱动器相连,送出行选信号;P1.5~P1.7口则用来发送控制信号.P0口和P2口空着,在有必要的时候可以扩展系统的ROM和RAM.2列驱动电路列驱动电路有集成电路74HC595构成.它具有一个8位串入并出的移位寄存器和一个8位输出锁存器的结构,而且移位寄存器和输出锁存器的控制是各自独立的,可以实现在显示本行列数据的同时,传送下一行的列数据,既达到重叠处理的目的.74HC595的外形及内部结构如图3所示.它的输入侧有8个串行移位寄存器,每个移位寄存器的输出都连接一个输出锁存器.引脚SI是串行数据的输入端.引脚SCK是移位寄存器的移位时钟脉冲,在其上升沿发生移位,并将SI的下一个数据打入最低位.移位后的各位信号出现在各移位寄存器的输出端,也就是输出锁存器的输入端.RCK是输出锁存器的打入信号,其上升沿将移位寄存器的输出打入输出锁存器.引脚G是输出三态门的开放信号,只有当其为低时锁存器的输出才开放,否则为高组态.SCLR信号是移位寄存器清零输入端,当其为低时移位寄存器的输出全部为零.由于SCK和RCK两个信号是互相独立的,所以能够做到输入串行移位与输出锁存互不干扰.芯片的输出端为QA~QH,最高位QH可作为多片74HC595级联应用时,向上一级的级联输出.但因为QH受输出锁存器的打入控制,所以还从输出锁存器前引出QH,作为与移位寄存器完全同步的级联输出.
QB 1 16 Vcc QC 2 15 QA QD 3 14 SI QE 4 13 G QF 5 12 RCK QG 6 11 SCK QH 7 10 SCLR GND 8 9 QH
图3. 74HC595外形及引脚4.1.3行驱动器单片机P1口低4位输出的行号经4/16线译码器74LS154译码后生成16条行选通信号线,再经过驱动器驱动对应的行线.一条行线上要带动16列的LED进行显示,按每一LED器件20MA电流计算,16个LED同时发光时,需要320MA电流,选通三极管8550作为驱动管可满足要求.4.2.系统程序的设计显示屏软件的主要功能是向屏体提供显示数据,并产生各种控制信号,使屏幕按设计的要求显示.根据软件分层次设计的原理,可以把显示屏的软件系统分为两层;第一层是底层的显示驱动程序,第二层是上层的系统应用程序.显示驱动程序负责向屏体送显示数据,并负责产生行扫描信号和其他控制信号,配合完成LED显示屏的扫描显示工作.显示驱动器程序由定时器T0中断程序实现.系统应用程序完成系统环境设置(初始化)、显示效果处理等工作,由主程序来实现.从有利于实现较复杂的算法(显示效果处理)和有利于程序结构化考虑,显示屏程序适宜采用C语言编写.4.2.1显示驱动程序显示驱动程序在进入中断后首先要对定时器T0重新赋初值,以保证显示屏刷新率的稳定,1/16扫描显示屏的刷新率(帧频)计算公式如下: 刷频率(帧频)=1/16×T0溢出率 =1/16×f/12(65536-t) 其中f位晶振频率,t为定时器T0初值(工作在16位定时器模式).然后显示驱动程序查询当前燃亮的行号,从显示缓存区内读取下一行的显示数据,并通过串口发送给移位寄存器.为消除在切换行显示数据的时候产生拖尾现象,驱动程序先要关闭显示屏,即消隐,等显示数据打入输出锁存器并锁存,然后再输出新的行号,重新打开显示.图4为显示驱动程序(显示屏扫描函数)流程图. 4.2.2系统主程序本文设计的系统软件能使系统在目测条件下LED显示屏各点亮度均匀、充足,可显示图形和文字,显示图形和文字应稳定、清晰无串扰.图形或文字显示有静止、移入移出等显示方式.系统主程序开始以后,首先是对系统环境初始化,包括设置串口、定时器、中断和端口;然后以“卷帘出”效果显示图形,停留约3s;接着向上滚动显示“我爱单片机”这5个汉字及一个图形,然后以“卷帘入”效果隐去图形.由于单片机没有停机指令,所以可以设置系统程序不断的循环执行上述显示效果.单元显示屏可以接收来自控制器(主控制电路板)或上一级显示单元模块传输下来的数据信息和命令信息,并可将这些数据信息和命令信息不经任何变化地再传送到下一级显示模块单元中,因此显示板可扩展至更多的显示单元,用于显示更多的显示内容.5性能分析与总结5.1 性能分析LED显示屏硬件电路只要硬件质量可靠,引脚焊接正确,一般无需调试即可 正常工作.软件部分需要调试的主要有显示屏刷新频率及显示效果两部分.显示屏刷新率由定时器T0的溢出率和单片机的晶振频率决定,表5.1给出了实验调试时采用的频率及其对应的定时器T0初值.
表5.1 显示平刷新率与T0初值关系表(24MHz晶振)刷新率 25 50 62.5 75 85 100 120T0初值 0Xec78 0Xf63C 0Xf830 0xF97E 0XFA42 0XFB1E 0xFBEE从理论上来说,24Hz以上的刷新频率就能看到稳定的连续的显示,刷新率越高,显示越稳定,同时刷新频率越高,显示驱动程序占用的CPU时间越多.试验证明,在目测条件下刷新频率40Hz一下的画面看起来闪烁较严重,刷新频率50Hz以上的已基本察觉不出画面的闪烁,刷新频率达到85Hz以上时再增加画面闪烁没有明显的改善.显示效果处理程序的内容及方法非常广泛,其调试过程在此不作具体讨论,读者可以照源程序自行分析.这个方案设计的16x16的点阵LED图文显示屏,电路简单,成本较低,且较容易扩展成更大的显示屏;显示屏各点亮度均匀、充足;显示图形或文字稳定、清晰无串扰;可用静止、移入移出等多种显示方式显示图形或文字.5.2 总结本文设计的一个室内用16x16的点阵LED图文显示屏,能够在目测条件下LED显示屏各点亮度均匀、充足,可显示图形和文字,显示图形和文字应稳定、清晰无串扰.图形或文字显示有静止、移入移出等显示方式.本系统具有硬件少,结构简单,容易实现,性能稳定可靠,成本低等特点. 总结本文的研究工作,主要做了下面几点较突出的工作: 一、通过查阅大量的相关资料,详细了解了LED的发光原理和LED显示屏的原理,了解了LED的现状,清楚地了解了LED显示屏与其它显示屏相比较有那些优点,明确了研究目标.二,本文设计的LED显示屏能够实现在目测条件下LED显示屏各点亮度均匀、充足,可显示图形和文字,显示图形和文字应稳定、清晰无串扰.图形或文字显示有静止、移入移出等显示方式.三,文章给出了系统具体的硬件设计方案,硬件结构电路图,软件流程图和具体汇编语言程序设计与调试等方面.四,在这次毕业设计的过程中学会了 Protel 99se 的基本使用,感到Protel 99se 对自动化专业的同学来说是一门很有用的课程.五,通过这次毕业设计,重新复习并进一步学习了MCS-51;熟练掌握了WORD软件的使用.六,存在缺陷:没有考虑抗干扰的问题.
与《我想做个16*16的LED点阵,用51单片机控制,请问是否要外加电压电源已达到亮度,是不是还要加上拉电阻.》相关的作业问题
有公式一个LED(12V-3v) /0.02=440欧姆0.02是普通LED的电流.三颗:(12—3.2)÷(0.02×3)=146可以用150欧姆的电阻五颗:(12—3.2)÷(0.02×5)=88可以用100欧姆的电阻电阻可以全部用2W的,如果电流过大需要考虑电阻的功率.至于说并多少个这就要看你的电压的供电能力了.
因为这个管子额定电压是4V,所以你可以用3个管串联成一组,9个管子可以做成三组,把三组再并联起来,直截接在12V上.接个510欧电阻
很欣赏你的想法.不要开关,5个元件2K电阻、光敏电阻、 100或150欧电阻、自闪发光二极管颜色自选、9014三极管.
不知道你要怎样连接这些LED呀,如果是直接都串联连接,恐怕不会亮!如果是分两路并联,每路由19个串联,则要分别串入150欧姆电阻
可以用自闪的七彩LED,也可以直接接电源,你应说出你的具体计划,才能给你提供具体帮助.
你搜索555触摸开关就可以找到了.
我现在大一,初中到现在我都很喜欢厨师,但是家里说一个女孩子没出息,我一个同学也是这样,学都不想上了,我以前学音乐的,我现在学的是会计,我的妈啊,我一点都不会,数学什么的最坑爹了,你现在才初中想的肯定和我不太一样,因为我以前也是不想上学,被父母臭骂啊.我倒是不同意大学生没前途怎么样,现在的社会啊,一个初中生和一个大学生的
流量看你单个摇臂喷头流量以及数量.两者相乘,摇臂喷头一般要求工作压力是3公斤左右.管道太长的话扬程要大点.45 50米扬程.然后按照这个流量扬程规格选水泵.
1.广告媒体业注重复合型人才 2.制药业人才难觅3.物流业急需三类人才 物流规划咨询人才、物流外向型国际人才和物流科研人才是目前物流业急需的人才.4.汽车行业高级人才备受关注 汽车和房地产行业依旧炙手可热.汽车行业不仅关注应届毕业生,更需要各种高级人才,包括研发、生产、销售、质量控制等各个环节的人才.而目前国内汽车企业
模拟串口方式0:#include"reg52.h"#define uint unsigned int #define uchar unsigned charsbit P3_2=P3^2; //模拟接受sbit P3_3=P3^3; //模拟发送uchar code smg[11]={0x03,0x9f,0x25,0x0
北京艺丰玻璃隔断公司不错,我们公司的玻璃隔断墙就是北京艺丰玻璃隔断公司做的,当时我们选择了三家北京隔断公司对比,最后选择和北京艺丰玻璃隔断公司签订了隔断装修合同,质量做的果然不错,隔音效果也好,美观实用,服务很专业,价格也合理,顶一下
吲哚丁酸钾主要作用是促主根的,由叶片种子等部位传到进入植物体,并集中在生长点部位,促进细胞分裂,诱导形成不定根,表现为根多,根直,根粗,根毛多.易溶于水,活性比吲哚乙酸高,在强光下会缓慢分解,在遮光条件下储存苗林扦插一般都是用吲哚丁酸钾和萘乙酸钠复配效果比较好,楼主可以去试用一下,有需要了解的可拨我用户名!
够了,12V 1A的输入是12W,两个5W是10W.输入大于负载即可. 再问: 但是发热量太大 好烫 碰都不敢碰 12V 1A的电源点了两个月 烧了 再答: 热不是因为电源不够的问题,而是目前LED的电光转换效率只有20%~30%,也就是说有70%~80%的电能转化成热能。所以LED产品对散热的设计要求很高。 有一个经
你的的设计存在致命问题,单片机死机是无法避免的,如果单片机死机你的DAC输出电压将存在不确定性.LM的芯片最低输出电压有限制,你还不如用场效应管直接来做,性能与电路都有优势.你可以去东明电子看看他们的成品,很成熟.其实你的电源我感觉就是一想法而已,使用起来没有优势,网上做数字电源的人多了,最成熟的方案不是你讲的这样子的
从您说的结构上看,电机结构为U型槽电机,这种电机的出力本来就不大,主要特点在于高加速和高精度.如想增加推力可以增大轴向长度试试.
本人空间具有555时基电路的振荡器.只要改变脉宽可以得到一个周期内任意变化开关时间比例.只要改变定时电容的数字就可以驱动一个两刀两置的继电器,就好了.
《中国学生趣味实验365》《游戏中的科学》《有趣的科学实验:日用化学·热和能的奥妙》
你需要一个基准电压,把这个基准电压接在一个分压电阻和这个热敏电阻串联的电路上,然后用一个运放做一个电压跟随器测量热敏电阻上的电压.送到0809,然后用51单片机实时读取模拟信号,在51单片机内要提前按照热敏电阻的温度与电阻阻值变化对照参数表做成固定的数据,方便单片机读取到模拟信号计算热敏电阻阻值后查找当前温度.有了温度74LS49外接上拉电阻驱动半导体数码管
发布时间: 21:14:59
访问次数:2049
&& & 七段字形译码器的输出YA~Yg为集电极开路(OC)输出,使用时必须外接电阻。图7.2.24所示就是由741。S49和半导体数码管LED构成的译码显示电路原理示意图,它能完成BCD码的译码和显示功能。&&& 常用的BCD-7段译码/驱动器还有74LS47、74LS48、74HC4511等,74LS47用来驱动共阳极发光二极管显示器,而74LS48、74HC4511用来驱动共阴极发光二极管显示器。与74LS49 -样,74LS47为集电极开路输出,用时要外接电阻;而74LS48、74HC4511的内部有升压电阻,因此无须外接电阻(可直接与显示器相连)。此外,74LS48、74HC4511有灯测试输入使能端、动态灭零输入使能端、静态灭零输入使能端、动态灭零输出使能端,用于检查芯片的好坏、高位或低位零时显示器全灭等控制,使用时请查阅相关资料。&&& 图7.2. 24&& 74LS49外接上拉电阻驱动半导体数码管
&&&&&&&&& &&& 数据选择器&&& 数据选择器又称多路选择器,英文缩写为MUX。其基本逻辑功能是:在,z个选择信号控制下,可从2”个榆入数据中,选择一个作为输出。例如,当n-2时,即有两个选择信号,可从22 =4个输人数据中,选择一个作为输出,称为4选1 MUX。当n-3时,即有3个选择信号,可从23 =8个输入数据中,选择一个作为输出,则称为8选1 MUX,以此类推。&&& 数据选择器应用广泛,也已经作为标准器件,制成了中规模集成电路。图7.2. 25所示为双4选1数据选择器74LS153的引脚排列图。在同一个封装中有两个4选1 MUX。图中,Ai、Ao是选择输入端,为两个MUX所共有,D3、D2、Di、Do为数据输入端,Y为数据输出端.
相关技术资料
相关IC型号
推荐技术资料查看: 12846|回复: 11
51单片机中使用DS18B20要不要上拉电阻?
本帖最后由 tx 于
14:51 编辑
我今天搭了个只有串口的51最小系统,DS18B20三条腿用杜邦线插接,测试了一下,正负极接+5V和地,数据线接P2.2,不用上拉电阻也可以测出温度嘛,测出的温度通过串口送到PC机,用串口调试助手查看.
主要的程序是网上找来滴,偶只加了一小段串口发送部分(没贴出来),大家分析分析,到底要不要上拉电阻?
;这是关于DS18B20的读写程序,数据脚P2.2,晶振11.0592mhz
;温度传感器18B20汇编程序,采用器件默认的12位转化,最大转化时间750微秒
;可以将检测到的温度直接显示到AT89C51开发实验板的两个数码管上
;显示温度00到99度,很准确哦
;单片机内存分配申明!
TEMPER_L EQU 29H;用于保存读出温度的低8位
TEMPER_H EQU 28H;用于保存读出温度的高8位
FLAG1 EQU 38H;是否检测到DS18B20标志位
a_bit equ 20数码管个位数存放内存位置
b_bit equ 21数码管十位数存放内存位置
LCALL GET_TEMPER;调用读温度子程序
;进行温度显示,这里我们考虑用网站提供的两位数码管来显示温度
;显示范围00到99度,显示精度为1度
;因为12位转化时每一位的精度为0.0625度,我们不要求显示小数所以可以抛弃29H的低4位
;将28H中的低4位移入29H中的高4位,这样获得一个新字节,这个字节就是实际测量获得的温度
;这个转化温度的方法可是我想出来的哦~~非常简洁无需乘于0.0625系数
MOV C,40H;将28H中的最低位移入C
LCALL DISPLAY;调用数码管显示子程序
; 这是DS18B20复位初始化子程序
INIT_1820:
;主机发出延时537微秒的复位低脉冲
TSR1:MOV R0,#107
DJNZ R1,TSR1
SETB P2.2;然后拉高数据线
MOV R0,#25H
JNB P2.2,TSR3;等待DS18B20回应
DJNZ R0,TSR2
LJMP TSR4 ; 延时
SETB FLAG1 ; 置标志位,表示DS1820存在
CLR P1.7;检查到DS18B20就点亮P1.7LED
CLR FLAG1 ; 清标志位,表示DS1820不存在
MOV R0,#117
DJNZ R0,TSR6 ; 时序要求延时一段时间
; 读出转换后的温度值
GET_TEMPER:
LCALL INIT_1820;先复位DS18B20
JB FLAG1,TSS2
RET ; 判断DS1820是否存在?若DS18B20不存在则返回
CLR P1.3;DS18B20已经被检测到!!!!!!!!!!!!!!!!!!
MOV A,#0CCH ; 跳过ROM匹配
LCALL WRITE_1820
MOV A,#44H ; 发出温度转换命令
LCALL WRITE_1820
;这里通过调用显示子程序实现延时一段时间,等待AD转换结束,12位的话750微秒
LCALL DISPLAY
LCALL INIT_1820;准备读温度前先复位
MOV A,#0CCH ; 跳过ROM匹配
LCALL WRITE_1820
MOV A,#0BEH ; 发出读温度命令
LCALL WRITE_1820
LCALL READ_18200; 将读出的温度数据保存到35H/36H
;写DS18B20的子程序(有具体的时序要求)
WRITE_1820:
MOV R2,#8;一共8位数据
MOV P2.2,C
MOV R3,#21
DJNZ R2,WR1
; 读DS18B20的程序,从DS18B20中读出两个字节的温度数据
READ_18200:
MOV R4,#2 ; 将温度高位和低位从DS18B20中读出
MOV R1,#29H ; 低位存入29H(TEMPER_L),高位存入28H(TEMPER_H)
MOV R2,#8;数据一共有8位
DJNZ R3,RE10
MOV C,P2.2
MOV R3,#21
DJNZ R3,RE20
DJNZ R2,RE01
DJNZ R4,RE00
;显示子程序
display: mov a,29H;将29H中的十六进制数转换成10进制
mov b,#10 ;10进制/10=10进制
mov b_bit,十位在a
mov a_bit,个位在b
mov dptr,#指定查表启始地址
dpl1: mov r1,#250 ;显示1000次
dplop: mov a,a_取个位数
MOVC A,@A+DPTR ;查个位数的7段代码
mov p0,送出个位的7段代码
clr p2.7 ;开个位显示
acall d1显示1ms
mov a,b_取十位数
MOVC A,@A+DPTR ;查十位数的7段代码
mov p0,送出十位的7段代码
clr p2.6 ;开十位显示
acall d1显示1ms
djnz r1,100次没完循环
djnz r0,dpl1 ;4个100次没完循环
D1MS: MOV R7,#80
;实验板上的7段数码管0~9数字的共阴显示代码
numtab: DB 0CFH,03H,5DH,5BH,93H,0DAH,0DEH,43H,0DFH,0DBH
51,出了P0口,都带弱的内部上拉
偷电方式不得行
加上拉并不是很复杂的问题~而是可以让程序少写一部~加上拉后就可以省去初始化给数据脚置高电平,因为单片机上电就是高电平而且加了上拉后该数据线几个点上都是高电平~i2c我都是加上拉!
还真有人用汇编写程序。
加个上拉没关系,更加稳定。
以前做过是加上拉的,很稳定。
加上拉吧!顺便一提,DS18B20可以显示负温度的,在接受到的高位数据的最高位上~如果是1就是负温度。
一般来说不用的,双线运行最好加个上拉
没用过,来学习!!!
加上拉会更稳定吧
微信:caoyin513 E-mail:
Powered by

我要回帖

更多关于 数码管连接单片机 的文章

 

随机推荐