炫酷来袭!用立创 EDA 专业版打造基于 51 单片机的梦幻心形流水灯
文章目录
一、创建工程
1.打开立创EDA
2.创建工程模板
按照图示操作,打开并创建工程。
使用SHIFT+F快捷键,快速打开器件搜索界面。
二、原理图绘制
1.导入元器件
选择合适的元器件,将其导入到原理图中
在最下方的器件类型中输入“Supplier Part”一栏中的编号,即可搜索到对应的元器件
点击该器件右侧的“放置”按键,即可将其放置在原理图中
放置原件后,可以使用空格键进行翻转,找到合适的角度
在这里我使用了立创商城里的在线库进行绘制,部分元器件可根据自己的实际进行更换。
2.绘制原理图
将元器件进行导线连接,这里可以使用Alt+W进行快捷连接,因为器件摆放好后,连接较简单,具体连接步骤这里略过,连接完成后如图:
三、绘制PCB
1.导入元器件
完成原理图的绘制后,点击上方“设计”→“更新/转换原理图到PCB”
进度条读取完成后,点击“应用修改”
元器件的PCB就全部导入进来了
2.绘制PCB心形边框
设置栅格尺寸,方便进行绘制
设置完成后
绘制1010边框,因为嘉立创1010以内打板免费
点击“板框”按键,选择“矩形”进行绘制,尽量选择放在中心,方面计算
直接输入宽和高各为100mm
选中刚绘制的矩形,修改其“类型”和“图层”
选择“图层”中的文档层,进行辅助线的绘制
选择“折线”和“两点画弧”进行绘制
使用辅助线,将圆弧的范围锁定在10*10的边框内,进行心形的绘制
绘制完成后,将所需要的边框变更为板框层,线条变更为板框
删除辅助线
3.元器件的布局
将元器件按照自己想要的布局将其摆放好,期间可使用“对齐”等指令调整其间距
绘制完成后,如图,可参照器件坐标进行下微调,使左右对齐
4.PCB走线
在这里,我将电源线宽度设置为25mil,信号线宽度设置为10mil进行的绘制,GND使用的铺铜
四、编写程序
以下是基于51单片机实现你所需功能的C语言代码示例,代码中对相应端口进行操作以控制LED灯的亮灭状态切换来达到指定效果,这里只是实现了简单的亮灭操作。根据个人的理解,可以解锁各种各样的花式操作。这里只是举个例子:
#include <reg51.h>
#include <stdio.h>
// 延时函数,用于产生1秒的延时,这里根据12MHz晶振大致估算循环次数,可按需调整精度
void delay(unsigned int t) {
unsigned int i, j;
for (i = 0; i < t; i++)
for (j = 0; j < 120; j++);
}
// 点亮所有灯
void allOn() {
P0 = 0xff;
P1 = 0xff;
P2 = 0xff;
P3 = 0xff;
}
// 熄灭所有灯
void allOff() {
P0 = 0x00;
P1 = 0x00;
P2 = 0x00;
P3 = 0x00;
}
// 左边亮右边灭
void leftOnRightOff() {
P0 = 0xff;
P1 = 0xff;
P2 = 0x00;
P3 = 0x00;
}
// 右边亮左边灭
void rightOnLeftOff() {
P0 = 0x00;
P1 = 0x00;
P2 = 0xff;
P3 = 0xff;
}
void main() {
while (1) {
allOn();
delay(1000); // 停顿1秒
allOff();
delay(1000);
leftOnRightOff();
delay(1000);
rightOnLeftOff();
delay(1000);
}
}
在这段代码中:
delay
函数:通过双层循环实现简单的软件延时,来达到停顿1秒的时间间隔效果。不过这种延时方式不够精准,如果对时间精度要求更高,可考虑使用定时器中断来实现更准确的定时功能。- 灯控制函数:
allOn
函数:将P0、P1、P2、P3端口都赋值为0xff
,即二进制的11111111
,对应的所有连接在这些端口的LED灯正极都接收到高电平从而点亮。allOff
函数:把各端口赋值为0x00
,使得LED灯熄灭。leftOnRightOff
函数:设置P0和P1端口为0xff
让左边灯亮,P2和P3端口为0x00
让右边灯灭。rightOnLeftOff
函数:与leftOnRightOff
相反操作,达成右边亮左边灭的状态。main
函数:处于一个无限循环中,按顺序依次调用上述函数,不断重复点亮所有灯、熄灭、左边亮右边灭、右边亮左边灭的动作序列,实现所需的灯光动态效果。
使用Keil软件(参考之前介绍过的创建工程、编译等步骤)将这段代码编译生成HEX文件,再通过相应的烧录工具烧录进51单片机中,即可在硬件上呈现出对应的灯光变化效果。
作者:奔跑de自由