焊接自己打板的心形LED出现的问题
一、AD导出PDF文件
1. 导出文件后AD16的界面
2. 导出的PDF工程
原理图
PCB工程图片
BOM表图片
二、心形灯的焊接步骤
- 先决定焊接的顺序:先焊接贴片,再焊接插件
原因:插件焊接后,会由于引脚修剪不整齐导致放在桌面上不稳,这样子在后面焊接贴片的时候板子就会晃动,不容易焊接
- 从中间往四周焊接
原因:四周焊接完成后,再焊接中间的器件容易被周围的器件挡掉,就不好焊接了
- 先把最小系统焊接好
原因:焊接了最小系统可以先保证单片机可以正常工作,单片机正常工作程序才可以正常运行
- 其他部分按照模块来焊接
条理清晰,不容易乱,更方便理清电路的思路
- 总的焊接步骤
贴片排阻(一个个引脚测阻值,确定没有虚焊)->LED->芯片座->杂七杂八的东西
三、焊接时出的问题
1. 晶振位置摆放不正确
- PCB里面看着没什么问题,位置也够
- 然而实际接线起来,晶振太大了!!!😲😲😲芯片座放不下去
解决办法:
1. 把晶振焊接到板子的背面
当时是先从中间开始焊接的晶振,所以想要焊接芯片座必须把晶振弄下来,真的弄了好久,最后背面的焊盘都给烫掉了
解决办法:
1.把晶振焊接到板子的背面影响:后面焊接贴片排阻的时候,板子老是左右摇晃,排阻的位置老是偏掉☹️☹️☹️☹️
2. 掰引脚,把它掰成横的
解决办法
2. 掰引脚,把它掰成横的
看起来还行
3. 下次更改:在PCB里面把晶振横着放
下次更改:在PCB里面把晶振横着放(我真的不知道位置是不够的)😭😭😭😭😭
废掉的晶振:引脚已经被搞断了
4. 检测是否焊接上去
检测是否焊接上去:用万用表测与晶振相连的单片机两个引脚是否导通了,我测的是会响的,所以没问题(正反面测这四个引脚都是可以的)
2. 电容位置太挤了,差点挡到芯片座
3. 排阻的焊接
这八个排阻我真的焊接了四五遍,老是连锡😵😵😵焊接了两天,最后掌握了技巧
- 用助焊膏
- 连锡了的话用焊锡+烙铁头去连锡的地方拖(我就是这样,因为当时我不知道助焊膏怎么用😏😏😏当然,这种方法比较奢侈)
- 最开始出现连锡我会去搞那几个连锡的引脚,不过最后我觉得还是直接重新焊接比较好
我就把焊锡溶解在焊盘上面,加上烙铁头,一下子就把焊好的排阻取下来了
- 先在焊盘上弄上焊锡,再把排阻放上去,用镊子固定,最后用烙铁头去融化焊盘上面的焊锡,就可以把排阻焊接上去了
排阻没有那么的脆弱,没有那么容易烧坏的!!!!!!
1. 教程
一分钟教你认识各种烙铁头
一分钟教你处理连锡
焊锡技巧:烙铁焊锡时松香是如何使用的 松香怎么放到焊点上
2. 检测是否焊接上去——拿万用表来测
测焊盘和LED那边对应引脚可以测出电阻来
LED那边的引脚:
排阻对应在单片机的引脚:
我是先焊接了LED再焊接排阻,所以测排阻有没有虚焊时要到背面去测电阻(正面的焊盘已经被LED盖住了😠😠😠😠😠😠)
改进:先把排阻焊接好,测量没有虚焊,再焊接LED,32个接口一个个去测量,不要偷懒😡😡😡😡
四、LED正负极检测
数字万用表检测常用元器件5LED测量
万用表选到蜂鸣器挡位,红表笔接正,黑表笔接负,二极管会发光
五、写调试程序、烧录程序
1. 调试程序,亲测可用😃😃😃😃
#include <reg52.h> //51头文件
#include <intrins.h>//包含循环右移函数_cror头文件
#define uint unsigned int
#define uchar unsigned char
uchar temp,x,y;//全局变量,赋值时变量的类型要和被赋值的值类型一样,P1口是八位寄存器,uchar也是八位
void Delay100ms();
sbit LED1=P0^0;
sbit LED2=P0^1;
sbit LED3=P0^2;
sbit LED4=P0^3;
sbit LED5=P0^4;
sbit LED6=P0^5;
sbit LED7=P0^6;
sbit LED8=P0^7;
sbit LED9=P1^0;
sbit LED10=P1^1;
sbit LED11=P1^2;
sbit LED12=P1^3;
sbit LED13=P1^4;
sbit LED14=P1^5;
sbit LED15=P1^6;
sbit LED16=P1^7;
sbit LED25=P3^0;
sbit LED26=P3^1;
sbit LED27=P3^2;
sbit LED28=P3^3;
sbit LED29=P3^4;
sbit LED30=P3^5;
sbit LED31=P3^6;//后面自己补上去的
sbit LED32=P3^7;
sbit LED20=P2^0;
sbit LED19=P2^1;
sbit LED18=P2^2;
sbit LED17=P2^3;
sbit LED24=P2^4;
sbit LED23=P2^5;
sbit LED22=P2^6;
sbit LED21=P2^7;
void main()
{
while(1)
{
x=0;
LED1=0;
Delay100ms();
LED2=0;
Delay100ms();
LED3=0;
Delay100ms();
LED4=0;
Delay100ms();
LED5=0;
Delay100ms();
LED6=0;
Delay100ms();
LED7=0;
Delay100ms();
LED8=0;
Delay100ms();
LED21=0;
Delay100ms();
LED22=0;
Delay100ms();
LED23=0;
Delay100ms();
LED24=0;
Delay100ms();
LED17=0;
Delay100ms();
LED18=0;
Delay100ms();
LED19=0;
Delay100ms();
LED20=0;
Delay100ms();
LED32=0;
Delay100ms();
LED31=0;
Delay100ms();
LED30=0;
Delay100ms();
LED29=0;
Delay100ms();
LED28=0;
Delay100ms();
LED27=0;
Delay100ms();
LED26=0;
Delay100ms();
LED25=0;
Delay100ms();
LED16=0;
Delay100ms();
LED15=0;
Delay100ms();
LED14=0;
Delay100ms();
LED13=0;
Delay100ms();
LED12=0;
Delay100ms();
LED11=0;
Delay100ms();
LED10=0;
Delay100ms();
LED9=0;
for(x;x<8;x++)
{
Delay100ms();
P0=0xff;
P1=0xff;
P2=0xff;
P3=0xff;
Delay100ms();
P0=0x00;
P1=0x00;
P2=0x00;
P3=0x00;
}
Delay100ms();
Delay100ms();
P0=0xff;
P1=0xff;
P2=0xff;
P3=0xff;
Delay100ms();
}
}
void Delay100ms() //@11.0592MHz
{
unsigned char i, j;
i = 180;
j = 73;
do
{
while (--j);
} while (--i);
}
2. 烧录程序
以前烧录程序:
现在烧录程序
我直接四个接头先接好
烧录排针:
烧录时候的骚操作:在烧录时先点击下载,再把排针放在引出的脚的焊盘上面,烧录完就拿走,下次再烧录程序再这样子搞,完美,这样子就不会因为排针焊死在PCB板子上影响板子的美观的
疏忽:在打板前,应该在排针四个焊盘周围标上丝印,要不然别人不认识啊!!!!!!现在才想起来!!!
烧录前:
烧录时:看我排针位置变化😯😯😯
六、调试程序
调试
灯的问题
最后
只有LED31一直不点亮,去检查程序,发现写程序时把LED31漏掉了
关于延时时间的问题:
第一次:
延时200ms--------程序走完41s
理论上:程序走完约需要10s(多了四、五倍)
延时程序:
第二次
延时1000ms------程序走完3min30s
理论上:程序走完约需要55s(多了四、五倍)
延时程序:
第三次
延时100ms------程序走完30s
理论上:程序走完约需要6s(多了四、五倍)
延时程序:
8051指令
无论我怎么调代码,延迟程序都是理论时间的4-5倍,可能是延时程序自身就是有问题的,一个个查最后发现了8051指令错误
改正
最后:终于正常了!!!!
七、其他
七彩LED
不同颜色LED灯工作电流和压降是多少,限流电阻咋算
如何用stc-isp软件计算C程序函数的延时时间?
我终于知道为什么商家宁可放弃好看的排版用直插电阻也不用贴片排阻了,买家大部分不会焊吧,所以为了焊接的方便性,再丑也得搞直插
改进后的PCB/原理图
原文所在: