目录
[2 Protues电路原理图仿真](#2 Protues电路原理图仿真)
[2.1 220V交流电转5V直流电稳压电路仿真原理图](#2.1 220V交流电转5V直流电稳压电路仿真原理图)
[2.1.1 仿真原理图分析](#2.1.1 仿真原理图分析)
[2.1.2 仿真结果分析](#2.1.2 仿真结果分析)
[2.2 仿真过程中示波器的调出](#2.2 仿真过程中示波器的调出)
[3 Protues和Keil联合仿真](#3 Protues和Keil联合仿真)实现点亮小灯和流水灯
[3.0 烧录程序实现](#3.0 烧录程序实现)
[3.0.1 Keil生成程序](#3.0.1 Keil生成程序)
[3.0.2 Protues烧录程序](#3.0.2 Protues烧录程序)
[3.1 点亮一个小灯](#3.1 点亮一个小灯)
[3.1.1 电路原理图](#3.1.1 电路原理图)
[3.1.2 小灯闪烁控制程序(高电平点亮小灯)](#3.1.2 小灯闪烁控制程序(高电平点亮小灯))
[3.2 流水灯](#3.2 流水灯)
文章概述
本文系统介绍了Proteus仿真软件的使用方法,包括:1. 工程创建与界面操作,详细说明了元器件添加、终端模式、激励源模式等基本功能;2. 220V交流转5V直流稳压电路的仿真实现,分析原理图设计及示波器调试技巧;3. Proteus与Keil联合仿真应用,通过实例演示了点亮单个LED和实现流水灯效果的全过程。文章重点讲解了Keil程序编写、HEX文件生成、Proteus程序烧录等关键步骤,并提供了共阴极/共阳极两种接法的电路原理图和完整控制程序代码。
1Protues介绍及新建工程
1.1进入软件
双击软件快捷键------>点击:新建工程

1.2文件创建
依次:
填写:工程名称------>选择:工程路径------>选择:新工程

1.3默认选项
DEFAULT------>Next

不创建PCB布板设计------>Next

没有固件项目------>Next

原理图------>Finish

1.5设计面板

设计界面如上图所示,主要由菜单栏、工具栏、输入模式选择栏、选择目录、仿真控制按键和设计面板组成。不同栏模块又可以进行细分,如上图所示。
1.6添加元器件
点击P(进入器件选择界面)

1:器件名称------>2:对应器件------>3:器件原理图------>4:PCB封装图------>确认

常用元器件对应缩写表
|-------------|---------------------|---------------|----------------|
| 类别 | 缩写/ 关键词 | 中文名称 | 说明/ 备注 |
| 电源类 | BATTERY | 电池/直流电源 | 提供直流电压源 |
| 电源类 | POWER | 电源符号 | 用于供电节点 |
| 电源类 | GROUND | 地 | 接地符号 |
| 电阻类 | RES / RESISTOR | 电阻 | 固定阻值电阻 |
| 电阻类 | POT / POT-LIN | 可调电阻/电位器 | 三端可调电阻 |
| 电阻类 | RESPACK | 排阻 | 多个电阻封装在一起 |
| 电容类 | CAP / CAPACITOR | 无极性电容 | 普通电容 |
| 电容类 | CAPACITOR POL | 有极性电容 | 电解电容 |
| 电容类 | ELECTRO | 电解电容 | 大容量电容 |
| 电容类 | CAPVAR | 可调电容 | 用于调谐电路 |
| 电感类 | INDUCTOR | 电感 | 普通电感 |
| 电感类 | INDUCTOR IRON | 带铁芯电感 | 低频大电感 |
| 电感类 | INDUCTOR3 | 可调电感 | 可调磁芯电感 |
| 晶体类 | CRYSTAL | 晶振 | 提供时钟信号 |
| 二极管类 | DIODE | 普通二极管 | 整流/开关用 |
| 二极管类 | ZENER | 稳压二极管 | 电压稳压 |
| 二极管类 | DIODE SCHOTTKY | 肖特基二极管 | 高速开关 |
| 二极管类 | DIODE VARACTOR | 变容二极管 | 用于调谐电路 |
| 三极管类 | NPN / PNP | NPN/PNP三极管 | 普通三极管 |
| 三极管类 | MOSFET | MOS管 | 场效应管 |
| 三极管类 | JFET N / JFET P | N沟道/P沟道结型场效应管 | 低噪声放大 |
| 逻辑门 | AND / OR / NOT | 与门 / 或门 / 非门 | 基本逻辑门 |
| 逻辑门 | NAND / NOR | 与非门 / 或非门 | 组合逻辑门 |
| 显示类 | LED | 发光二极管 | 指示灯 |
| 显示类 | DPY_7-SEG | 7段数码管 | 显示数字 |
| 显示类 | DPY_7-SEG_DP | 带小数点7段数码管 | 显示浮点数 |
| 显示类 | LM016L | 1602液晶 | 2行16字符LCD |
| 开关与按钮 | SWITCH | 开关 | 普通开关 |
| 开关与按钮 | SW-SPST | 单刀单掷开关 | 通断开关 |
| 开关与按钮 | SW-DPDT | 双刀双掷开关 | 切换电路 |
| 开关与按钮 | SW-PB / BUTTON | 按钮 | 手动触发 |
| 电机类 | MOTOR | 直流电机 | 普通电机 |
| 电机类 | MOTOR AC | 交流电机 | AC电机 |
| 电机类 | MOTOR SERVO | 伺服电机 | 可控角度 |
| 传感器类 | MICROPHONE | 麦克风 | 声音输入 |
| 传感器类 | THERMISTOR | 热敏电阻 | 温度传感 |
| 传感器类 | PHOTO | 光敏二极管 | 感光元件 |
| 继电器类 | RELAY-DPDT | 双刀双掷继电器 | 控制电路通断 |
| 变压器类 | TRANS1 | 普通变压器 | 电压变换 |
| 变压器类 | TRANS2 | 可调变压器 | 输出可调 |
| 调试与虚拟仪器 | VTERM | 虚拟串口终端 | 串口通信调试 |
| 调试与虚拟仪器 | LOGIC ANALYSER | 逻辑分析仪 | 数字信号调试 |
| 调试与虚拟仪器 | VOLTMETER / AMMETER | 电压表 / 电流表 | 实时测量电路参数 |
器件可移动状态

器件放置好状态

双击器件:编辑器件内容

1.7终端模式
1:终端模式图标 2:终端模式包含内容 3:终端模式内容对应的图标

"终端模式"(Terminal Mode)提供了一组非常常用的电路节点标识符号,用于表示电源、地、输入 / 输出端口、信号流向等。
|-----------|---------------------------------|
| 名称 | 含义 |
| DEFAULT | 默认终端,无特殊定义,通常用于自定义标签或连接点。 |
| INPUT | 输入端口,表示信号从外部进入电路(如传感器输入)。 |
| OUTPUT | 输出端口,表示信号从电路输出到外部(如LED、电机)。 |
| BIDIR | 双向端口,既可输入也可输出(如I2C、UART引脚)。 |
| POWER | 电源正极(如 +5V、+3.3V),用于给电路供电。 |
| GROUND | 地线(GND),电路参考点,所有电压相对它测量。 |
| CHASSIS | 机壳地,用于接地保护,常见于金属外壳设备。 |
| RETURN | 返回信号线,常用于模拟电路或差分信号回流路径。 |
| DYNAMIC | 动态终端,用于仿真中临时变化的节点(较少用)。 |
| BUS | 总线终端,用于连接多条信号线(如数据总线 D0-D7)。 |
| TESTPOINT | 测试点,便于仿真时测量电压、电流或波形。 |
| NC | 未连接(No Connect),明确标识某引脚不连接任何信号。 |
1.8激励源模式
"激励模式"(Generator Mode )用于向电路提供各种仿真信号源。

|----------------|----------------------------------------|
| 名称 | 含义说明 |
| DC | 直流电压源,输出恒定电压(如 5V、3.3V)。 |
| SINE | 正弦波发生器,可设置频率、幅度、相位等。 |
| PULSE | 脉冲信号源,方波或矩形波,可设置占空比、周期等。 |
| EXP | 指数信号源,产生指数上升或下降波形。 |
| SFFM | 单频调频信号源(Single Frequency FM),用于模拟调制信号。 |
| PWLIN | 分段线性信号源,通过多个时间点定义任意波形。 |
| FILE | 从外部文件读取波形数据(如CSV或WAV文件)。 |
| AUDIO | 音频信号源,可导入WAV文件作为输入信号。 |
| RANDOM | 随机噪声信号源,用于测试电路抗干扰能力。 |
| DSTATE | 数字状态信号源,输出高/低电平(逻辑0/1)。 |
| DEDGE | 数字边沿信号源,产生单个上升沿或下降沿。 |
| DPULSE | 数字脉冲信号源,用于测试数字电路响应。 |
| DCLOCK | 数字时钟信号源,产生周期性方波(如1kHz时钟)。 |
| DPATTERN | 数字模式信号源,可自定义多位数字序列(如101101)。 |
| SCRIPTABLE | 可编程信号源,使用脚本语言(如Lua)自定义复杂波形。 |
1.9探针模式
1:探针模式图标 2:探针模式包含内容 3:探针模式内容对应的图标


探针模式包含电压探针、电流探针和信号探针
1.10仪表
1:虚拟仪表图标 2:虚拟仪表包含内容 3:虚拟仪表内容对应的图标


虚拟仪表(Virtual Instruments)是一组可交互的软件仿真工具,用于在电路仿真过程中实时测量、生成或调试信号。
|--------------------------|---------------------------------------|------------------------------|
| 名称 | 功能 | 用途 |
| 示波器(Oscilloscope) | 显示模拟信号的电压-时间波形,支持多通道(如双踪示波器)。 | 观察信号波形、测量频率/幅值、检查噪声或失真。 |
| 逻辑分析仪 (Logic Analyser) | 捕获并显示数字信号的高低电平状态(0/1),支持多通道(通常16或更多)。 | 调试数字电路时序(如SPI、I2C、UART通信)。 |
| 计数器/定时器(Counter Timer) | 测量信号的频率、周期、脉冲宽度或作为事件计数器。 | 分析时钟信号、PWM波形参数。 |
| 虚拟终端 (Virtual Terminal) | 模拟串口终端(如UART),支持ASCII码收发。 | 调试单片机的串口通信(如发送AT指令或接收传感器数据)。 |
| SPI调试器 (SPI Debugger) | 监控SPI总线通信(MOSI、MISO、SCK、SS信号),解码数据帧。 | 验证SPI Flash、传感器等设备的通信协议。 |
| I²C调试器 (I²C Debugger) | 捕获I²C总线的起始/停止条件、地址和数据帧。 | 调试EEPROM、RTC等I²C设备。 |
| 信号发生器 (Signal Generator) | 输出可调的正弦波、方波、三角波等模拟信号。 | 测试放大器、滤波器频率响应。 |
| 模式发生器(Pattern Generator) | 生成自定义数字信号序列(如8位并行数据)。 | 模拟数字输入(如键盘扫描信号)。 |
| 直流电压表(DC Voltmeter) | 测量电路中某点的直流电压值。 | 检查电源电压、分压电路输出。 |
| 直流电流表 (DC Ammeter) | 测量直流电流(需串联在电路中)。 | 验证功耗或负载电流。 |
| 交流电压表 (AC Voltmeter) | 测量交流信号的有效值(RMS)电压。 | 检查交流电源或信号幅度。 |
| 交流电流表 (AC Ammeter) | 测量交流电流的RMS值。 | 分析交流负载(如电机)的电流。 |
| 功率计 (Wattmeter) | 计算瞬时功率(P=VI)及能量消耗。 | 评估电路效率或功耗。 |
1.11二维直线
1:二维直线图标 2:二维直线包含内容 3:二维直线内容对应的图

1.12字符
双击字符模式

依次填写一下内容
1:文本字符串内容 2:位置 3:变量类型 4:字体 5:字高

2 Protues电路原理图仿真
2.1 220V交流电转5V直流电稳压电路仿真原理图
2.1.1 仿真原理图分析

如上图所示,220V交流电转5V直流稳压电路实现220V交流转换为5V直流电的功能,整个电路由220V交流输入、变压器、整流桥和线性电源电路组成。其中220V交流电作为电路输入,变压器实现降压,整流桥实现整流、电容C1、C2、C3和C4实现滤波功能,7805组成线性电源电路实现5V电压的输出。
2.1.2 仿真结果分析

如上图所示,示波器为四通道实时显示输入、整流、滤波和输出的波形变化,黄色线表示输入波形、蓝色线表示整流波形、红色线表示滤波波形和绿色表示输出波形。
2.2 仿真过程中示波器的调出
仿真过程中会出现示波器界面不显示的情况,解决方法如下:
点击仿真开始:此时未出现示波器界面

依次点击:调试------>3.Digital Oscilloscope

出现示波器界面

3 Protues和Keil联合仿真
Protues和Keil联合仿真以点亮一个小灯和流水灯为例进行说明,仿真使用Protues进行仿真电路的绘制,使用Keil进行控制程序的编写,然后通过Protues和Keil联合仿真实现单个小灯闪烁和流水灯的功能。
3.0 烧录程序实现
3.0.1 Keil生成程序
新建项目:项目------> 新uVision 项目

命名及保存:选择文件夹------> 命名------> 保存

选择芯片过程如下图所示
Legacy Device...------>芯片型号------>选定芯片型号------>ok

如果没有想用芯片,解决方法:
1 官网下载数据包(速度慢): C51 Version 9.61 Evaluation Software Request

2 以下载好的数据包( 直接安装)( 速度快) :https://download.csdn.net/download/XU157303764/91664454
选择是否都可以

新建控制程序文件
Source Group(鼠标右键)------>.C------>命名------>add

编写程序

设置编译文件
点击魔术棒------>Output------>勾选Create HEX File------>ok

.HEX文件生成
重构------>成功

3.0.2 Protues烧录程序
双击单片机

选择程序文件按钮

找到程序------> 选中------> 打开

确定

运行仿真

3.1 点亮一个小灯
3.1.1 电路原理图
高电平点亮小灯

如上图所示,流水灯仿真电路原理图主要由51单片机、晶振电路、复位电路和LED灯点亮电路组成,其中LED灯为高电平点亮,低电平熄灭,当P1.0为高电平时LED点亮,当P1.0为低电平时LED熄灭。
低电平点亮小灯

如上图所示,流水灯仿真电路原理图主要由51单片机、晶振电路、复位电路和LED灯点亮电路组成,其中LED灯为低电平点亮,高电平熄灭,当P1.0为高电平时LED熄灭,当P1.0为低电平时LED点亮。
3.1.2 小灯闪烁控制程序(高电平点亮小灯)
控制程序主要包含头文件、延时函数和主函数,控制程序如下所示:
objectivec
//小灯闪烁
#include <reg52.h>//库文件
#define uint unsigned int//预处理宏命令 进行短命名
#define uchar unsigned char
sbit L1=P1^0;//将P1赋值给L1
void delay(uint n)//延时函数ms/
{
uchar i;
uint j;
for(j=0;j<n;j++)
for(i=0;i<123;i++);
}
void flash()//LED灯亮2s后熄灭1秒
{
L1=1;//LED亮
delay(2000);//2秒
L1=0;//LED灭
delay(1000);//1秒
}
//主函数实现死循环
void main (void)
{
while(1)
{
flash();
}
}
3.2 流水灯
3.2.1电路原理图
流水灯共阴极接法

如上图所示,流水灯仿真电路原理图主要由51单片机、晶振电路、复位电路和流水灯电路组成,其中流水灯电路中的8个LED灯采用共阴极接法,即当P1.n(n=1、2、3...5、6、7)管脚为高电平时LED灯点亮,初始化阶段P1.n全部置于高电平即上电后所有亮灯全部点亮。
流水灯共阳极接法

如上图所示,流水灯仿真电路原理图主要由51单片机、晶振电路、复位电路和流水灯电路组成,其中流水灯电路中的8个LED灯采用共阳极接法,即当P1.n(n=1、2、3...5、6、7)管脚为低电平时LED灯点亮,初始化阶段P1.n全部置于高电平即上电后所有亮灯全部熄灭。
3.2.2控制程序(共阴极接法)
控制程序主要包含头文件、延时函数和主函数,控制程序如下所示:
objectivec
//流水灯(8个)
#include <reg52.h>//库文件
#define uchar unsigned char//预处理宏 进行短命名
#define uint unsigned int
sbit L1=P1^0;//将P1赋值给变Ln(1、2、3...7、8)
sbit L2=P1^1;
sbit L3=P1^2;
sbit L4=P1^3;
sbit L5=P1^4;
sbit L6=P1^5;
sbit L7=P1^6;
sbit L8=P1^7;
void delay(uint n)//延时函数ms
{
uchar i;
uint j;
for(j=0;j<n;j++)
for(i=0;i<500;i++);
}
void flash1()//LED灯亮1s后熄灭
{
L1=1;//LED亮
delay(1000);
L1=0;//LED灭
}
void flash2()
{
L2=1;
delay(1000);
L2=0;
}
void flash3()
{
L3=1;
delay(1000);
L3=0;
}
void flash4()
{
L4=1;
delay(1000);
L4=0;
}
void flash5()
{
L5=1;
delay(1000);
L5=0;
}
void flash6()
{
L6=1;
delay(1000);
L6=0;
}
void flash7()
{
L7=1;
delay(1000);
L7=0;
}
void flash8()
{
L8=1;
delay(1000);
L8=0;
}
//实现流水灯功能
void main (void)
{
while(1)
{
flash1();
flash2();
flash3();
flash4();
flash5();
flash6();
flash7();
flash8();
flash8();
flash7();
flash6();
flash5();
flash4();
flash3();
flash2();
flash1();
}
}