前言
最近在上的一门课内容是PCB设计,采用的教学软件是国产的立创EDA,前几节课已经给学生们讲解了基础的理论知识,后面的课程就准备做一些真实的项目,毕竟嘉立创5元包邮的PCB打样还是很香的。
第一个项目肯定不能太难,而且还要有一定的趣味性,能激发学生学习的兴趣。于是我就选择了采用51单片机制作一个心形流水灯。
主控芯片采用的是STC15W404,LED等采用的是5MM的直插式发光二极管,单片机引脚高电平直接驱动,为了节省元器件,没有添加限流电阻。
原理图如下图所示:
STC15W404采用的是SOP16封装,二极管1N4148是为了调整烧录时串口引脚的电压。整个设计已将做的了最简,一个元器件都不能再少。设计好的PCB渲染图如下图所示。
制作过程:
打开立创EDA,创建一个新项目,打开原理图设计页面,点击元件库,搜索 STC15W404,放置下图所示的芯片,
然后放置14可5mm的红色直插LED灯,按照下图方式将其连接起来,注意LED灯的编号是从右下角开始,逆时针方向递增。
51单片机需要使用串口烧录,我们的心形流水灯串口引脚(p3.0,p3.1)上也连接的LED,这些LED会在烧录时干扰串口数据线的电平,所以要用两个1N4148二极管调整一下串口电压,如下图所示:
PCB设计
原理图设计完成后,使用原理图转PCB功能将原理图转成PCB,如下图所示,我们将LED放置在PCB的正面,其他元器件都放在PCB板的背面,并且把LED1放置12点钟方向,其他LED按照顺时针排列成一个心形:
点击边框层,删除原来的边框,使用布线工具,重新给我们的PCB绘制一个心形边框
然后在PCB板背面,将除GND外的所有网络连接起来:
最后添加泪滴,并铺铜
然后再PCB板心形正面添加想要表达的信息
3D预览效果图如下图所示:
设计完成后,导出PCB制版文件,使用嘉立创下单助手下单,5元包邮。
焊接:
将所需要的元器件分装好,发给学生,学生自己在课余时间完成焊接。
软件调试:
软件开发使用的是Keil5,核心代码如下:
#include "STC15W.h"
#include
sbit LED1=P3^0;
sbit LED2=P3^1;
sbit LED3=P3^2;
sbit LED4=P3^3;
sbit LED5=P3^6;
sbit LED6=P3^7;
sbit LED7=P1^0;
sbit LED8=P1^1;
sbit LED9=P1^2;
sbit LED10=P1^3;
sbit LED11=P1^4;
sbit LED12=P1^5;
sbit LED13=P5^4;
sbit LED14=P5^5;
/**
* @description: 51延时函数 @11.0592MHz
* @param {uint ms 毫秒}
* @return: void
*/
void Delay_ms(unsigned int ms)
{
unsigned char i, j;
while(ms--)
{
_nop_();
_nop_();
_nop_();
i = 11;
j = 190;
do
{
while (--j);
} while (--i);
}
}
void Pin_Init()
{
P1M0=P3M0=P5M0 = 0xff; //LED OUT PUT
P1M1=P3M1=P5M1 = 0x00;
P1=P3=P5=0x00;
}
void main()
{
Pin_Init();
while (1)
{
LED1 = 1; Delay_ms(100); LED1 = 0;
LED2 = 1; Delay_ms(100); LED2 = 0;
LED3 = 1; Delay_ms(100); LED3 = 0;
LED4 = 1; Delay_ms(100); LED4 = 0;
LED5 = 1; Delay_ms(100); LED5 = 0;
LED6 = 1; Delay_ms(100); LED6 = 0;
LED7 = 1; Delay_ms(100); LED7 = 0;
LED8 = 1; Delay_ms(100); LED8 = 0;
LED9 = 1; Delay_ms(100); LED9 = 0;
LED10 = 1; Delay_ms(100); LED10 = 0;
LED11 = 1; Delay_ms(100); LED11 = 0;
LED12 = 1; Delay_ms(100); LED12 = 0;
LED13 = 1; Delay_ms(100); LED13 = 0;
LED14 = 1; Delay_ms(100); LED14 = 0;
LED1 = 1; Delay_ms(100);
LED2 = 1; LED14 = 1;
Delay_ms(100);
LED2 = 1; LED14 = 1;
Delay_ms(100);
LED3 = 1; LED13 = 1;
Delay_ms(100);
LED4 = 1; LED12 = 1;
Delay_ms(100);
LED5 = 1; LED11 = 1;
Delay_ms(100);
LED6 = 1; LED10 = 1;
Delay_ms(100);
LED7 = 1; LED9 = 1;
Delay_ms(100);
LED8 = 1;
Delay_ms(1000);
}
}
烧录使用的是STC原厂提供的烧录工具,注意串口引脚上面连接了LED,电平不稳,波特率建议使用2400,如下图所示:
运行效果:
喜欢的话点击下关注吧,以后会发布更多有趣的电子制作哦!
作者:我是鹏老师