前言
希望这条博客能帮助到一些刚入门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 绘制仿真电路
文章来源于:电子工程世界 原文链接
本站所有转载文章系出于传递更多信息之目的,且明确注明来源,不希望被转载的媒体或个人可与我们联系,我们将立即进行删除处理。
相关文章

51单片机和52单片机区别是什么?51仿真器有必要买吗?(2022-12-21)
51单片机和52单片机区别是什么?51仿真器有必要买吗?;我们在开发单片机程序的时候,经常会碰到编译没有错误,程序代码反复的检查,但就是找不到问题所在,不知道问题到底出现在哪里了?
这个......

proteus仿真51流水灯和点阵(心形)(2024-08-02)
上调用在codeblocks上编写好的C51代码:
在proteus上双击51单片机或右击51单片机点击编辑属性
浏览到codeblocks编译后的hex文件即可。
现在开始流水灯:
原理......

【MCS-51】内部资源及工作时序(2023-04-23)
各种通用指令和算术运算,并且具有很好的中断处理能力。
(2) 存储器:51单片机内部具有RAM、ROM、EEPROM三种类型的存储器。其中,RAM 可以用于存放变量、栈和寄存器等数据;ROM 存储程序代码......

51单片机上实现的交通灯程序(2023-08-28)
51单片机上实现的交通灯程序; 这是我前几天无聊自己写的交通灯程序,在51单片机上实现的。基本的定时的交通灯转换是实现了,根据时间来改变交通灯的变换。可以下载下来看看的,电路图和原程序都有,代码......

单片机控制花样流水灯原理图及程序(2023-06-06)
就是主函数,包括流水灯的反复循环和j流水灯的方向
6、检查没有错误,编译一下。就可以进行仿真了
单片机32位LED花样流水灯程序及原理图
原理图
LED心形排布图:
程序......

基于K9F5608A的MCS-51单片机驱动程序(2023-08-30)
基于K9F5608A的MCS-51单片机驱动程序;K9F5608A的MCS-51单片机驱动程序主要包括函数声明管脚定义部分、命令操作函数以及数据输出函数。
(1)函数声明管脚定义部分主要完成程序......

基于51单片机的可调频率幅值的波形信号发生器设计(2024-03-18)
基于51单片机的可调频率幅值的波形信号发生器设计;仿真图proteus7.8及以上
程序编译器:keil 4/keil 5
编程语言:C语言
设计编号:S0055
1.主要功能:
基于51单片机......

基于51单片机的路灯自动开关控制仿真设计(2024-03-18)
基于51单片机的路灯自动开关控制仿真设计;仿真图proteus7.8及以上
程序编译器:keil 4/keil 5
编程语言:C语言
设计编号:S0052
1.主要功能:
基于51单片机......

51单片机开发板的主要功能 51单片机开发板能做什么(2024-03-04)
发生器等,可以提供稳定的时钟信号给单片机使用。
存储器管理:开发板通常会搭载闪存、EEPROM、SRAM等各种类型的存储器,用于存储程序代码和数据。
电源管理:开发板通常会提供多种电源供电方式,可以......

基于51单片机的万年历时钟仿真设计(2024-03-19)
基于51单片机的万年历时钟仿真设计;仿真图proteus7.8及以上
程序编译器:keil 4/keil 5
编程语言:C语言
设计编号:S0051
1.主要功能:
基于51单片机......