|
这样是可以,然后你的B0~B7 连接 A~DP部分,理论上需要470R限流电阻。HC245我不熟,你最好查一下手册。如果他内阻大于300R,可以不用限流电阻,小于的话,就必须用了。 但是就像我前面说的, 你不觉得这个74HC245很多余么?如果直接限流电阻连P0口的话,连上拉都不用。 另外,真正需要驱动力的,是公共端P2.x,驱动共阳数码管的话,一般是要三级管的,你这样的实际电路搭出来,会很暗,除非用共阴数码管。 |
188610329 发表于 2021-11-5 20:38 好的,谢谢 |
l156613673 发表于 2021-11-5 20:33 说了,P0只能给低电平(0),不能给高电平(1), 你要P0驱动,就必须给上拉电阻!上拉电阻!上拉电阻!重要的事情说三遍。 记住了么? 要么就换别的口。 |
Hephaestus 发表于 2021-11-5 18:39 是的呀 |
| 限流电阻为什么在单片机和245中间? |
l156613673 发表于 2021-11-5 17:07 你说你是共阳数码管,那么会驱动电流不够,亮度不够的,只能是COM公共端,而不会是段端,正常应该,IO接三级管控制公共端,然后P0.0~P0.7直接1K电阻接数码管段控制。 然后,你的问题,P0.0- P0.7 只能输出0,不能输出1, 所有你如果要用P0.0~P0.7 控制 74HC245就必须用上拉电阻。 |
| 电阻限流限的不是地方哈,更像是防 245 烧了牵连 51 用的 |
angmall 发表于 2021-11-5 14:13 现在没在家,不能看,从p0.0–p0.7接290Ω电阻接sn74hc245n的23456789号引脚,然后从11-18号引脚接数码管的位,p2.0-p2.3直接接数码管com端号 |
188610329 发表于 2021-11-5 14:23 驱动电流不足,亮度不够呀 |
munuc_w 发表于 2021-11-5 12:31 p2.0–p2.7分别接290Ω电阻再接sn74hc245n的23456789号引脚再接数码管位号,sn74hc245n接线正确 |
munuc_w 发表于 2021-11-5 12:31 #define uchar unsigned char #define FLASH_FREQ 100 sbit KEY1 = P1^4; //定义KEY1 分加1 sbit KEY2 = P1^5; //定义KEY2 秒加1 #define COM1_ON (P2=0x01) #define COM2_ON (P2=0x02) #define COM3_ON (P2=0x04) #define COM4_ON (P2=0x08) #define COMS_OFF (P2=0x00) /*数码管全灭宏定义*/ #define SEG_PORT (P0) /*段码数据输出端口*/ uchar code LED_Tab[]={0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90,0xff};//共阳极, #define DISPLAY_BIT 4 //数码管显示位数 uchar DisBuff[DISPLAY_BIT]; //显示缓冲区 bit DisDecemal=0;//是否显示小数点 uchar shi=11,fen=59,miao=49; void delay(uchar ms)//1ms延时,12MHz { uchar i,j; for(i=ms;i>0;i--) for(j=122;j>0;j--); } void LED_DisplayTimer(uchar LED1,uchar LED2,uchar LED3,uchar LED4) { DisBuff[0]=LED_Tab[LED1]; DisBuff[1]=LED_Tab[LED2]; DisBuff[2]=LED_Tab[LED3]; DisBuff[3]=LED_Tab[LED4]; /**************小数点闪烁在这里控制*****/ if(DisDecemal==1) DisBuff[1]&=0x7f; //点亮小数点 /**************************************/ } void |
| 问个题外问题,你用40P的89C51做电子钟,有必要用74HC245么? IO口直接驱动不香么? |
l156613673 发表于 2021-11-5 09:00 仿真上没问题不代表实物上也能正常运行,楼主都没晒实物电路图问题不好找 |
| 位和段都是如何驱动的?没有硬件电路,看不出什么。 |
| proteus模拟没得问题,但是焊接好了就有问题 |