矿石收音机论坛

 找回密码
 加入会员

QQ登录

只需一步,快速开始

搜索
查看: 3323|回复: 16

单片机遇到干扰

[复制链接]
     
发表于 2021-3-14 21:11:11 | 显示全部楼层 |阅读模式
本帖最后由 baofu 于 2021-3-14 21:13 编辑

    STC12C5410AD的单片机,晶振25MHz。实验带动一个七段LED数码管,显示从0到9
的数,数字更换间隔时间1秒,不断循环。
   单片机板子和数码管都是自己用洞洞板焊成的,但两者不在一块板子上,用杜邦线连接两者,杜邦线虽然质量不高,但都经过检查是没有问题的。数码管每个LED都有1K的限流电阻。单片机与数码管使用同一个5V电源供电。
    程序烧写后,能显示,但多数时间显示的数字缺少笔画。奇怪的是,当想用万用表测量时,仅仅将黑表笔搭接到板子电源负极,红表笔还在悬空状态,显示的数字就不缺少笔画了。
    现在怀疑两点:
    1.干扰,因为杜邦线长度有十几厘米,相互干扰显然存在,但不知道怎样避免。
    2.IO口模式设置不对。但这难以解释表笔影响现象。
    请教有经验的老师,先谢谢了!
     
发表于 2021-3-14 21:52:32 | 显示全部楼层
线长了不行
回复 支持 反对

使用道具 举报

     
发表于 2021-3-14 22:06:42 | 显示全部楼层
电源换成充电宝试试?
我也不懂,怀疑电源不好。
回复 支持 反对

使用道具 举报

     
发表于 2021-3-14 22:09:59 | 显示全部楼层
干扰的可能性不大,电压低,接触电阻大倒有可能,
一般数码管等LED都用三极管来驱动,直接io驱动可靠性低
回复 支持 反对

使用道具 举报

     
发表于 2021-3-15 00:03:01 | 显示全部楼层
共同探讨
1k限流电阻好像有点大了,另外,如果必须用开关电源供电,就选质量稍好一些的。
假设LED数码压降是1.8V,每段电流5mA(如果是动态显示可设10mA或更高),(5-1.8)/5mA≈560Ω
但不建议用静态显示,因为IO端口负担过重(7x5=35mA)
回复 支持 反对

使用道具 举报

     
发表于 2021-3-15 08:32:25 | 显示全部楼层
1、单片机电源脚以最短路径并联一个 100n 左右电容退耦
2、注意是否接触不良
3、死太惨真烂,换 AVR

评分

2

查看全部评分

回复 支持 反对

使用道具 举报

     
发表于 2021-3-15 08:39:21 | 显示全部楼层
不太可能是干扰的问题,最好配合图纸看,不然没法猜大概是什么原因。
回复 支持 反对

使用道具 举报

     
发表于 2021-3-15 10:43:34 | 显示全部楼层
杜邦线接触不良
回复 支持 反对

使用道具 举报

     
 楼主| 发表于 2021-3-15 14:25:20 | 显示全部楼层
首先,谢谢各位的热心指导。
问题已经解决,但又出现了新问题,并与原来相关;先说解决的。
最初出问题的程序片段:
{   unsigned char  i=0;
while(1)
  {
    P1=Cu8DigTable[i];//显示数字
    Delay(800000) ;  //延时
    i++;             //转下一个数字
  if(i>24)  i=0;     //循环
  }

后来加入了P1=Cu8DigTable[24];
这个Cu8DigTable[24]里面的字符是0x00,就是什么也不显示,效果是P1口每一位都是低电平,相当于统一拉低电平:
{   unsigned char  i=0;
while(1)
  {
    P1=Cu8DigTable[i];//显示数字
    Delay(800000) ;  //延时
  P1=Cu8DigTable[24]; //P1口统一拉低电平
  i++;
  if(i>24)  i=0;
  }
这样显示正常了,问题好像解决了。
  但为什么会这样?是单片机反应慢?跟不上信号的迅速变化?还是数码管电路有什么我还不了解的特性?请有经验的朋友指教。
回复 支持 反对

使用道具 举报

     
发表于 2021-3-15 19:04:02 来自手机 | 显示全部楼层
烧录器显示的MCU频率是多少?
回复 支持 反对

使用道具 举报

     
 楼主| 发表于 2021-3-15 20:01:53 | 显示全部楼层
烧录时显示MCU频率是25.04MHz,和我用的晶振频率是一致的。
回复 支持 反对

使用道具 举报

     
发表于 2021-3-15 20:17:09 | 显示全部楼层
看看是否电源波纹或地布线导致的。
回复 支持 反对

使用道具 举报

     
发表于 2021-3-16 18:07:50 | 显示全部楼层
我看了一下你的程序,是P1口带一个8字LED,属于静态驱动,还是一秒一变化,就算线加到1米长,也不应该出现缺少笔划的现象。P1端口要设置为推挽模式。

评分

1

查看全部评分

回复 支持 反对

使用道具 举报

     
发表于 2021-3-16 19:05:35 | 显示全部楼层
本帖最后由 w6955 于 2021-3-16 19:18 编辑

洞洞板这种东西也能用到25M??PCB打板的都是大傻?把频率放到6M就得了。一个洞洞板可能真上不去那么高。另外一个重要问题,驱动数码管为什么要用高电平驱动??单片机只在低电平才有较强驱动能力。所以应该使用共阳极数码管低电平驱动。
回复 支持 反对

使用道具 举报

     
发表于 2021-3-16 19:43:28 | 显示全部楼层
从你的叙述看,首先输出0就都不亮了说明你用的是高电平驱动数码管发光的,1K限流电阻在5伏时不知道你的数码输出“8”这个时候是多大电流,估计IC里面电路应付这个电流够呛。建议换个共阳极数码管再实验看看,毕竟MCU这个东西拉电流才是正道。

评分

1

查看全部评分

回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 加入会员

本版积分规则

小黑屋|手机版|矿石收音机 ( 蒙ICP备05000029号-1 )

蒙公网安备 15040402000005号

GMT+8, 2025-4-28 06:05

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表