Proteus是嵌入式工程师比较喜欢用的,可以实现从原理图布图、代码调试到单片机与外围电路协同仿真。作为一款功能强大的电子电路仿真软件,Proteus为电子爱好者和工程师们提供了一个理想的平台,用于设计、测试和验证各种电子电路。对于初学者来说,掌握Proteus的基本操作可以帮助他们更好地理解电子电路的原理和工作方式。在本文中,我们将介绍一些初学者在使用Proteus时的体验和技巧。
一. 下载和安装
首先,需要下载并安装Proteus软件及破解包。安装完成后,打开软件,你将会看到一个直观友好的用户界面,其中包含了各种工具和功能选项。具体安装教程参考文章:Proteus快速入门(最详细教程)
二. 常用元器件
PS:文末可以获取学习Proteus的学习教程!主要内容包括,Proteus使用教程和Keil5 结合Proteus 的使用相关内容。
三. 使用步骤
1. 打开软件
双击桌面上的Proteus图标或从开始菜单中打开Proteus。
2. 创建新工程
选择“File”菜单中的“New Project”选项,并给工程命名,然后点击“OK”。
3. 添加元件
-
从元件库中选择需要的元件,例如电阻、电容、电感、晶体管等,然后将它们拖放到工作区。
-
使用连线工具连接元件之间的引脚,确保连接正确,以建立电路图的连通性。
4. 编辑元件参数
双击元件可以打开属性对话框,可以编辑元件的参数,如数值、型号等。
5. 调整布局
根据需要调整元件的位置和布局,使电路图更加清晰和易于理解。
6. 添加标签和注释
可以使用标签和注释工具添加文字说明,帮助理解电路的功能和设计意图。
7. 保存电路图
完成电路图设计后,记得保存工程,以便后续的仿真和修改。
8. 进行仿真
-
完成电路图设计后,点击仿真按钮(通常是绿色的播放按钮),开始仿真过程。
-
观察元件的工作情况,测量电压、电流等参数,并且可以通过改变参数来调整电路的性能。
9. 代码调试
如果你的电路包含微控制器或其他需要编程的元件,你可以按照以下步骤进行代码调试:
-
编写代码:使用Proteus附带的集成开发环境(如ISIS)或外部开发环境(如Keil、MPLAB等)编写程序代码。
-
编译代码:将编写好的代码进行编译,生成HEX文件或其他格式的可执行文件。
-
加载代码:在Proteus中,双击微控制器元件,打开属性对话框,将编译生成的HEX文件加载到微控制器中。
-
设置断点:在代码中需要调试的位置设置断点,这样在仿真过程中可以暂停并检查程序状态。
-
运行仿真:开始仿真,程序会在断点处暂停,此时可以查看寄存器、内存等状态,进行调试。
-
单步执行:可以逐步执行代码,检查每一步的执行结果,找出并解决问题。
10. 调试和优化
在仿真过程中,如果发现电路存在问题,可以通过调试工具(如示波器、逻辑分析仪)分析电路的工作情况并找出问题所在。通过调试和优化,可以不断改进电路的设计,使其更加稳定和可靠。
四. 电路
1、晶振电路和复位电路
时钟电路
芯片:AYM89C51
晶振:CRY,12M
电容:CAP,22pf
作用:晶振电路是给单片机提供时钟信号的。晶振电路产生单片机必须要用到的时钟频率,单片机发送的所有指令都是建立在这个基础上的
晶振的时钟频率越高,单片机的运行速度越快。它是一条条的从ROM中获取指令,然后再去执行。单片机每访问一次存储的时间叫做机器周期,机器周期又被分为12个时钟周期
复位电路:上电复位,按键复位
电阻:RES
作用:利用它把电路恢复到起始状态,像计算器的清零按钮的作用一样,以便回到原始状态,重新进行计算。
2、LED流水灯的实现
2.1、LED原理
LED,选带ACTIVE的,可以看得到元器件的可视化,是亮还是灭 电流方向:P ----> N 如果是硅,0.7V,如果是锗,0.3V
2.2、供阳极接法和供阴极接法
==供阳极接法==:将所有LED的P极接一起,此时N极需要接低电平,低电平亮,高电平灭,==低电平有效== ==供阴极接法==:将所有LED的N极接一起,此时P极需要接高电平,==高电平有效== 单片机可以吸入的电流为20mA,所以阳极接法需要有电阻(电阻阻值不得小于250)才能与单片机相连
2.3、呼吸灯实现闪烁的代码
#include"reg51.h"
// sbit 表示对位进行控制
sbit LED0 = P2^0;
/*
* 延时函数
* 延时函数`delay()`的本质:通过空语句占用程序的时间,从而达到延时的效果
*/
void delay(unsigned int n)
{
unsigned int i=0,j=0;
for(i=0;i<n;i++)
{
for(j=0;j<120;j++);
}
}
void main()
{
while(1)
{
LED0 = 0;//亮
delay(5);//加入延时函数
LED0 = 1;//灭
delay(5);//加入延时函数
}
}
2.4、呼吸灯实现代码(供阳极和供阴极接法)
#include"reg51.h"
// sbit 表示对位进行控制
sbit LED0 = P2^0;
/*
* 延时函数
*/
void delay(unsigned int n)
{
unsigned int i=0,j=0;
for(i=0;i<n;i++)
{
for(j=0;j<120;j++);
}
}
/*
* 实现流水灯效果
*/
void led()
{
int i=0;
for(i=0;i<8;i++)
{
/*
* 因为是低电平亮,所以进行取反操作,
* 因为实现流水灯操作,所以进行移位操作
* P2 为供阳极接法
* P1 为供阴极接法
*/
P2=~(0x01<<i);//~0000 0001 ->0000 0010 -> 0000 0100
P1=(0x01<<i);//~0000 0001 ->0000 0010 -> 0000 0100
delay(50);
}
}
void main()
{
while(1)
{
led();
}
}
2.5、通用流水灯的操作
#include"reg51.h"
// 轮流滚动的小灯数据
unsigned char leddat[]={0x01,0x02,0x04,0x08,0x10,0x20,0x40,0x80};
void delay(unsigned int n)
{
unsigned int i=0,j=0;
for(i=0;i<n;i++)
{
for(j=0;j<120;j++);
}
}
void led()
{
int i=0;
for(i=0;i<8;i++)
{
P2=~leddat[i];
delay(100);
}
}
void main()
{
// 保证程序能够不断运行
while(1)
{
led();
}
}
3、数码管
3.1、LED数码管的静态电路
3.2、代码
#include"reg51.h"
unsigned char s[]={0x3F,0x06,0x5B,0x4F,0x66,0x6D,0x7D,0x07,0x7F,0x6F};// 供阴0--9
/*
* 延迟函数
*/
void delay(unsigned int n)
{
unsigned int i=0,j=0;
for(i=0;i<n;i++)
{
for(j=0;j<120;j++);
}
}
/*
* 显示函数
*/
void seg()
{
//P2 = 0x3F;//0011 1111
int i =0;
for(i=0;i<10;i++)
{
P2 = s[i];
delay(300);
}
}
void main()
{
while(1)
{
seg();
}
}
3.3、LED数码管的动态电路
3.3、代码
#include"reg51.h"
unsigned char s[]={0x3F,0x06,0x5B,0x4F,0x66,0x6D,0x7D,0x07,0x7F,0x6F};// 供阴0--9
unsigned char str[]={0x76,0x79,0x38,0x38,0x3F};// HELLO
unsigned char wei[]={0x00,0x01,0x02,0x03,0x04,0x05,0x06,0x07};//显示不同的位
// 若将显示器1-8直接与单片机10-17连接,显示不同的位使用以下这种
// unsigned char wei[]={0x01,0x02,0x04,0x08,0x10,0x20,0x40,0x80};
/*
* 延迟函数
*/
void delay(unsigned int n)
{
unsigned int i=0,j=0;
for(i=0;i<n;i++)
{
for(j=0;j<120;j++);
}
}
/*
* 显示函数
*/
void seg()
{
//P2 = 0x3F;//0011 1111
int i =0;
for(i=0;i<5;i++)
{
P3=wei[i];
P2 = str[i];//0011 1111
delay(5);
}
}
void main()
{
while(1)
{
seg();
}
}
如果对Proteus感兴趣的可以关注下方公众号,公众号中扣“PTV”即可获取