✌ 作者简介:盐焗小星球_wyb,一名电子信息大学生.
📑 个人主页:盐焗小星球_wyb的主页👀
📫 如果文章知识点有错误的地方,请指正!和大家一起学习,一起进步
🔥 如果感觉博主的文章还不错的话,还请不吝 关注、点赞、收藏三连哦!
💬人生格言:天行健,君子以自强不息!
文章目录
- 前言
- 一、原理图设计
-
- A、模块电路设计
-
- 1.最小系统
- 2.烧录电路
- 3.LED电路
- 4.供电电路
- 5.其他电路
- B、整体电路设计
-
- 方案一:(AD20绘制)
- 方案二:(立创DEA绘制)
- 二、写程序仿真
-
- 1.Keil 5 编写程序
-
- a.main.c函数
- b.display.c函数
- c.display.h函数
- 2.Proteus 8 绘制仿真电路
- 三、PCB布局
-
- 1.布局、布线和放置Logo
- 2.铺铜和DRC检查
- 3.生成Gerber文件
- 四、打板、采样、焊接和烧录
-
- 1.打板
- 2.采样
- 3.焊接
- 4.烧录
- 五、成品展示
- 总结
前言
提示:这里是本文的前言内容:
希望这条博客能帮助到一些刚入门51单片机的萌新,这完全就是保姆级教程啦!下面是这个小项目的大致的设计流程图:
提示:以下是本篇文章正文内容
一、原理图设计
A、模块电路设计
做这个项目之前可以先用 Proteus画出仿真电路图,仿真没有问题后;在用嘉立创EDA或者AD20绘制原理图再生成PCB打板。这里的模块设计是提供一个绘制原理图的设计思路:
1.最小系统
提示:如果对最小系统不熟悉或者还不是很了解的,可以点击这里:
最小系统
2.烧录电路
3.LED电路
4.供电电路
A、常用的DC供电电路
B、可自动切换DC供电(时可以给电池充电)和电池供电电的电路
5.其他电路
B、整体电路设计
方案一:(AD20绘制)
心形流水灯PCB展示!
方案二:(立创DEA绘制)
【单片机】心形流水灯贴片版为了能免费打板用立创eda又重新画了一遍!新增电源管理模块可以给3.7v锂电池充电供电还有一些个人喜欢的logo
二、写程序仿真
1.Keil 5 编写程序
a.main.c函数
#include <REGX51.H>
#include "display.h"//主函数
void main()
{while(1){disp0_f_3();disp0_f_all();disp0_f_plus();disp0_f_updown();disp0_f_left();disp0_f_diagonal();disp0_f();disp1_CW();disp1_CW_B();disp1_CCW();disp1_CCW_B();disp1_cwcc_4();disp1_CW_4();disp1_CW_4B();disp1_CCW_4();disp1_CCW_4B();disp1_CW_2();disp1_CCW_2();disp1_updown_2();disp1_updown_2B();disp1_updown_2plus();disp1_downup_2();disp1_downup_2B();disp1_Lout();disp1_Rout();disp2_bright_cwout();disp2_bright_ccwout();}
}
b.display.c函数
#include<reg52.h>
#include<intrins.h>
#define uint unsigned int
#define uchar unsigned charuchar i,j,k;
uint tt=70;
uint time=200;
uint time1=80;uchar code table0[]={0xfe,0xfd,0xfb,0xf7,0xef,0xdf,0xbf,0x7f};
uchar code table1[]={0x7f,0xbf,0xdf,0xef,0xf7,0xfb,0xfd,0xfe};uchar code table2[]={0xfe,0xfc,0xf8,0xf0,0xe0,0xc0,0x80,0x00};
uchar code table3[]={0x7f,0x3f,0x1f,0x0f,0x07,0x03,0x01,0x00};uchar code table4[]={0x00,0x01,0x03,0x07,0x0f,0x1f,0x3f,0x7f,0xff};
uchar code table5[]={0x00,0x80,0xc0,0xe0,0xf0,0xf8,0xfc,0xfe,0xff};void delay(uint time)
{uint x,y;for(x=time;x>0;x--)for(y=110;y>0;y--);
}void disp0_f_3()
{for(i=0;i<3;i++){P0=0x00; P2=0x00; P1=0x00; P3=0x00;delay(200);P0=0xff; P2=0xff; P1=0xff; P3=0xff;delay(200);}
}void disp0_f_all()
{for(i=0;i<8;i++){P1=~P1;P3=~P3;P2=~P2;P0=~P0;delay(100);}
}void disp0_f_plus()
{for(i=0;i<9;i++){P0=0x00; P1=0x00; P2=0x00; P3=0x00;delay(time);P0=~P0; P1=~P1; P2=~P2; P3=~P3;delay(time);time=time-22;if(time==2) time=200;}
}void disp0_f_updown()
{for(i=0;i<8;i++){P1=0x00; P0=0x00;P2=0xff; P3=0xff;delay(100);P1=0xff; P0=0xff;P2=0x00; P3=0x00;delay(100);}
}void disp0_f_left()
{for(i=0;i<8;i++){P1=0x00; P3=0x00;P0=0xff; P2=0xff;delay(100);P1=0xff; P3=0xff;P0=0x00; P2=0x00;delay(100);}
}void disp0_f_diagonal()
{for(i=0;i<8;i++){P1=0x00; P2=0x00;P0=0xff; P3=0xff;delay(100);P1=0xff; P2=0xff;P0=0x00; P3=0x00;delay(100);}P0=0xff; P3=0xff;
}void disp0_f()
{P2=0x00;P3=0x00;for(i=0;i<8;i++){P1=table2[i];P0=table2[i];delay(100);}disp0_f_3();P0=0xff;P1=0xff;P2=0xff;P3=0xff;
}void disp1_CW()
{for(i=0;i<8;i++){P0=table0[i];delay(100);}P0=0xff;for(i=0;i<8;i++){P2=table1[i];delay(100);}P2=0xff;for(i=0;i<8;i++){P3=table1[i]; delay(100);}P3=0xff;for(i=0;i<8;i++){P1=table1[i];delay(100);}P1=0xff;
}void disp1_CW_B()
{for(j=0;j<3;j++){for(i=0;i<8;i++){P0=table2[i];delay(time1);}for(i=0;i<8;i++){P2=table3[i];delay(time1);}for(i=0;i<8;i++){P3=table3[i]; delay(time1);}for(i=0;i<8;i++){P1=table3[i];delay(time1);}time1=time1-20;if(time1<30) time1=80;P1=0xff; P3=0xff; P2=0xff; P0=0xff;}
}void disp1_CCW()
{for(i=0;i<8;i++){P1=table0[i];delay(100);}P1=0xff;for(i=0;i<8;i++){P3=table0[i];delay(100);}P3=0xff;for(i=0;i<8;i++){P2=table0[i]; delay(100);}P2=0xff;for(i=0;i<8;i++){P0=table1[i];delay(100);}P0=0xff;
}void disp1_CCW_B()
{for(j=0;j<3;j++){for(i=0;i<8;i++){P1=table2[i];delay(time1);}for(i=0;i<8;i++){P3=table2[i];delay(time1);}for(i=0;i<8;i++){P2=table2[i]; delay(time1);}for(i=0;i<8;i++){P0=table3[i];delay(time1);}time1=time1-20;if(time1<30) time1=80;P1=0xff; P3=0xff; P2=0xff; P0=0xff;}
}void disp1_cwcc_4()
{for(i=0;i<8;i++){P1=table1[i];P3=table1[i];P2=table1[i];P0=table0[i];delay(100);}for(i=0;i<8;i++){P1=table0[i];P3=table0[i];P2=table0[i];P0=table1[i];delay(100);}
}void disp1_CW_4()
{for(i=0;i<8;i++){P1=table1[i];P3=table1[i];P2=table1[i];P0=table0[i];delay(100);}P1=0xff; P3=0xff; P2=0xff; P0=0xff;
}void disp1_CW_4B()
{for(i=0;i<8;i++){P1=table3[i];P3=table3[i];P2=table3[i];P0=table2[i];delay(100);}P1=0xff; P3=0xff; P2=0xff; P0=0xff;
}void disp1_CCW_4()
{for(i=0;i<8;i++){P1=table0[i];P3=table0[i];P2=table0[i];P0=table1[i];delay(100);}P1=0xff; P3=0xff; P2=0xff; P0=0xff;
}void disp1_CCW_4B()
{for(i=0;i<8;i++){P1=table2[i];P3=table2[i];P2=table2[i];P0=table3[i];delay(100);}P1=0xff; P3=0xff; P2=0xff; P0=0xff;
}void disp1_CW_2()
{for(i=0;i<8;i++){P1=table0[i];P2=table0[i];delay(100);}P1=0xff;P2=0xff;for(i=0;i<8;i++){P3=table0[i];P0=table1[i];delay(100);}P3=0xff;P0=0xff;
}void disp1_CCW_2()
{for(i=0;i<8;i++){P3=table1[i];P0=table0[i];delay(100);}P3=0xff;P0=0xff;for(i=0;i<8;i++){P1=table1[i];P2=table1[i];delay(100);}P1=0xff;P2=0xff;
}void disp1_updown_2()
{for(i=0;i<8;i++){P1=table0[i];P0=table0[i];delay(50);}P1=0xff;P0=0xff;for(i=0;i<8;i++){P3=table0[i];P2=table1[i];delay(50);}P3=0xff;P2=0xff;
}void disp1_updown_2B()
{for(i=0;i<8;i++){P1=table2[i];P0=table2[i];delay(50);}for(i=0;i<8;i++){P3=table2[i];P2=table3[i];delay(50);}P1=0xff;P0=0xff;P3=0xff;P2=0xff;
}void disp1_updown_2plus()
{for(j=0;j<5;j++){for(i=0;i<8;i++){P1=table0[i];P0=table0[i];delay(tt);}P1=0xff; P0=0xff;for(i=0;i<8;i++){P3=table0[i];P2=table1[i];delay(tt);}P3=0xff; P2=0xff;tt=tt-10;}for(j=0;j<16;j++){for(i=0;i<8;i++){P1=table0[i];P0=table0[i];delay(20);}P1=0xff; P0=0xff;for(i=0;i<8;i++){P3=table0[i];P2=table1[i];delay(20);}P3=0xff; P2=0xff;}tt=20;for(j=0;j<5;j++){for(i=0;i<8;i++){P1=table0[i];P0=table0[i];delay(tt);}P1=0xff; P0=0xff;for(i=0;i<8;i++){P3=table0[i];P2=table1[i];delay(tt);}P3=0xff; P2=0xff;tt=tt+10;}tt=70; }void disp1_downup_2()
{for(i=0;i<8;i++){P3=table1[i];P2=table0[i];delay(100);}P3=0xff;P2=0xff;for(i=0;i<8;i++){P1=table1[i];P0=table1[i];delay(100);}P1=0xff;P0=0xff;
}void disp1_downup_2B()
{for(i=0;i<8;i++){P3=table3[i];P2=table2[i];delay(100);}for(i=0;i<8;i++){P1=table3[i];P0=table3[i];delay(100);}P1=0xff; P3=0xff; P2=0xff; P0=0xff;
}void disp1_Lout()
{P1=0xff;P0=0xff;P2=0xff;P3=0xff;for(i=0;i<8;i++){P1=table2[i];delay(50);}for(i=0;i<8;i++){P3=table2[i];delay(50);}for(i=0;i<8;i++){P2=table2[i];delay(50);}for(i=0;i<8;i++){P0=table3[i];delay(50);}delay(100);for(i=0;i<8;i++){P1=table4[i];P0=table4[i];delay(50);}P1=0xff;P0=0xff;for(i=0;i<8;i++){P3=table4[i];P2=table5[i];delay(50);}P3=0xff;P2=0xff;delay(100);
}void disp1_Rout()
{P1=0xff;P0=0xff;P2=0xff;P3=0xff;for(i=0;i<8;i++){P0=table2[i];delay(50);}for(i=0;i<8;i++){P2=table3[i];delay(50);}for(i=0;i<8;i++){P3=table3[i];delay(50);}for(i=0;i<8;i++){P1=table3[i];delay(50);}delay(100);for(i=0;i<8;i++){P1=table4[i];P0=table4[i];delay(50);}P1=0xff;P0=0xff;for(i=0;i<8;i++){P3=table4[i];P2=table5[i];delay(50);}P3=0xff;P2=0xff;delay(100);
}void disp2_bright_cwout()
{P1=0x00; P3=0x00; P2=0x00; P0=0x00;for(i=0;i<8;i++){P1=table5[i];P3=table5[i];P2=table5[i];P0=table4[i];delay(100);}P1=0xff; P3=0xff;P2=0xff;P0=0xff;
}void disp2_bright_ccwout()
{P1=0x00; P3=0x00; P2=0x00; P0=0x00;for(i=0;i<8;i++){P1=table4[i];P3=table4[i];P2=table4[i];P0=table5[i];delay(100);}P1=0xff; P3=0xff;P2=0xff;P0=0xff;
}
c.display.h函数
#ifndef __DISPLAY_H__
#define __DISPLAY_H__/*--------闪烁--------*/
void disp0_f_3();
void disp0_f_all();
void disp0_f_plus();
void disp0_f_updown();
void disp0_f_left();
void disp0_f_diagonal();
void disp0_f();/*--------单个流水--------*/
void disp1_CW();
void disp1_CW_B();
void disp1_CCW();
void disp1_CCW_B();
void disp1_cwcc_4();
void disp1_CW_4();
void disp1_CW_4B();
void disp1_CCW_4();
void disp1_CCW_4B();
void disp1_CW_2();
void disp1_CCW_2();
void disp1_updown_2();
void disp1_updown_2B();
void disp1_updown_2plus();
void disp1_downup_2();
void disp1_downup_2B();
void disp1_Lout();
void disp1_Rout();/*--------全亮全灭--------*/
void disp2_bright_cwout();
void disp2_bright_ccwout();#endif
2.Proteus 8 绘制仿真电路
【单片机】Proteus仿真心形流水灯
三、PCB布局
提示:以下虽是AD20画板流程,但用立创EDA画板时同样可以参考绘制流程
1.布局、布线和放置Logo
2.铺铜和DRC检查
3.生成Gerber文件
四、打板、采样、焊接和烧录
1.打板
上传Gerber文件后,选择层数、尺寸和板子数量(默认5片)
确认生产稿选择:不需要(其他默认如图设置)
可以选择自己喜欢的阻焊颜色:这里默认绿色(嘉立创紫色也挺好看的)
选择交期:默认选择免费加急
SMT贴片:选择不需要
激光网选项:选择不需要
填写自己的收货地址和联系方式
2.采样
平台是有优惠券的,可以选择优惠券再下单哦!
3.焊接
准备好焊接工具:电烙铁、锡丝和铁架台(海绵垫)即可
准备好PCB板和元器件:
a、PCB电路板:
b、元器件:
4.烧录
准备好一个烧录器:
用STC-ISP软件把写好得hex文件下载到单片机里面