前言
希望这条博客能帮助到一些刚入门51单片机的萌新,这完全就是保姆级教程啦!
下面是这个小项目的大致的设计流程图:
提示:以下是本篇文章正文内容
一、原理图设计
A、模块电路设计
做这个项目之前可以先用 Proteus画出仿真电路图,仿真没有问题后;在用嘉立创EDA或者AD20绘制原理图再生成PCB打板。这里的模块设计是提供一个绘制原理图的设计思路:
1.最小系统
提示:如果对最小系统不熟悉或者还不是很了解的,可以点击这里:
最小系统
2.烧录电路
3.LED电路
4.供电电路
A、常用的DC供电电路
B、可自动切换DC供电(时可以给电池充电)和电池供电电的电路
5.其他电路
A、红外电路
B、蜂鸣器电路
B、整体电路设计
方案一:(AD20绘制)
PCB的3D效果展示:
方案二:(立创DEA绘制)
PCB的3D效果展示:
二、写程序仿真
1.Keil 5 编写程序
a.main.c函数
#include#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#include #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 绘制仿真电路
文章来源于:电子工程世界 原文链接
本站所有转载文章系出于传递更多信息之目的,且明确注明来源,不希望被转载的媒体或个人可与我们联系,我们将立即进行删除处理。