炫酷来袭!用立创 EDA 专业版打造基于 51 单片机的梦幻心形流水灯

文章目录

  • 一、创建工程
  • 1.打开立创EDA
  • 2.创建工程模板
  • 二、原理图绘制
  • 1.导入元器件
  • 2.绘制原理图
  • 三、绘制PCB
  • 1.导入元器件
  • 2.绘制PCB心形边框
  • 3.元器件的布局
  • 4.PCB走线
  • 四、编写程序
  • 一、创建工程

    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);
        }
    }
    

    在这段代码中:

    1. delay函数:通过双层循环实现简单的软件延时,来达到停顿1秒的时间间隔效果。不过这种延时方式不够精准,如果对时间精度要求更高,可考虑使用定时器中断来实现更准确的定时功能。
    2. 灯控制函数
    3. allOn函数:将P0、P1、P2、P3端口都赋值为0xff,即二进制的11111111,对应的所有连接在这些端口的LED灯正极都接收到高电平从而点亮。
    4. allOff函数:把各端口赋值为0x00,使得LED灯熄灭。
    5. leftOnRightOff函数:设置P0和P1端口为0xff让左边灯亮,P2和P3端口为0x00让右边灯灭。
    6. rightOnLeftOff函数:与leftOnRightOff相反操作,达成右边亮左边灭的状态。
    7. main函数:处于一个无限循环中,按顺序依次调用上述函数,不断重复点亮所有灯、熄灭、左边亮右边灭、右边亮左边灭的动作序列,实现所需的灯光动态效果。

    使用Keil软件(参考之前介绍过的创建工程、编译等步骤)将这段代码编译生成HEX文件,再通过相应的烧录工具烧录进51单片机中,即可在硬件上呈现出对应的灯光变化效果。

    作者:奔跑de自由

    物联沃分享整理
    物联沃-IOTWORD物联网 » 炫酷来袭!用立创 EDA 专业版打造基于 51 单片机的梦幻心形流水灯

    发表回复