Proteus仿真学习笔记

🎋1. 基操

🌿1.1 Proteus概况

  • 英国Lab Center Electronics公司出版的EDA工具软件
  • 不仅有其它EDA工具软件的仿真功能,还能仿真单片机及外围器件。
  • 是比较好的仿真单片机及外围器件的工具。
  • 从原理图布图、代码调试到单片机与外围电路协同仿真,一键切换到PCB设计,真正实现了从概念到产品的完整设计。
  • 世界上唯一将电路仿真软件、PCB设计软件和虚拟模型仿真软件三合一的设计平台。
  • 其处理器模型支持8051、AVR、ARM、8086等,并持续增加其他系列处理器模型。
  • 在编译方面,它支持IAR、Keil和MATLAB等多种编译器。

🌿1.2 相关书籍

  1. 范海绍,李方园等编著. 零起点学Proteus单片机仿真技术[M]. 北京:机械工业出版社, 2012.02.
  2. 徐亮编. 高等职业教育精品工程系列教材 STM32单片机开发实例 基于Proteus虚拟仿真与HAL\LL库[M]. 北京:电子工业出版社, 2021.01.
  3. 符强. 嵌入式实验与实践教程 基于STM32与Proteus[M]. 西安:西安电子科学技术大学出版社, 2021.12.
  4. 赵广元编著. Proteus辅助的单片机原理实践基础设计课程设计和毕业设计[M]. 北京航空航天大学出版社, 2013.09.

🌿1.3 背景设置

🍃1.3.1 颜色修改

Template–Set Design Defaluts
Paper Colour(背景色)/Grid Colour(网格颜色)
网格线修改
Toggle grid
在这里插入图片描述
有三种:无、格子线、点

🍃1.3.2 元器件查找

直接输入元器件名称查找
右键–Place–Component–From Libraries
在关键字(Keywords)文本框中直接输入你想查找的元器件名称,大小写无关,若该元器件存在,就会在中间的结果(Results)框中出现,然后用鼠标左键双击出现在框中元器件的名称,将该元器件放入“元器件列表窗口”。

🍃1.3.3 器件清单

Proteus关键词元器件
AT89C51AT89C51单片机
RES电阻
LED-YELLOW黄色发光二极管
CRYSTAL晶振
CAP电容【无极性】
CAP-POL电容【有极性】
7SEG-MPX4-CC4位共阴极数码管
COMPIM虚拟串口元件
BUTTON按键
74LS47BCD-7段数码管译码器
KEYPAD-SMALLCALC小型计算器键盘
RESPACK-8排阻
MOTOR电机

🍃1.3.4 器件旋转

选中器件–右键
在这里插入图片描述
Rotate Clockwise:顺时针旋转
Rotate Anti-Clockwise:逆时针旋转
Rotate 180 degrees:旋转180°
X-Mirror:水平对折
Y-Mirror:竖直对折

🎋2. 51单片机Proteus仿真

🌿2.1 点亮一个灯

🍃2.1.1 器件清单

Proteus关键词元器件
AT89C51AT89C51单片机
RES电阻
LED-YELLOW黄色发光二极管

🍃2.1.2 电路

在这里插入图片描述

🍃2.1.3 代码

#include <reg51.h>   //单片机头文件
sbit LED=P0^0;       //定义LED为端口P0^0
void main()          //主程序
{
    while(1)         //无限循环
    {
        LED=0;       //P0^0输出低电平,发光二极管点亮
        //LED=1;       //P0^0输出高电平,发光二极管关闭
    }
}

🌿2.2 流水灯

🍃2.2.1 器件清单

Proteus关键词元器件
AT89C51AT89C51单片机
RES电阻
LED-YELLOW黄色发光二极管

🍃2.2.2 电路

在这里插入图片描述
1、画一条总线
在这里插入图片描述

2、将线路连接到总线
按住ctrl划线,画斜线连接线需要把“自动连接器”按钮放开。
自动连接器

3、将相应节点一一连接
Tool–Property Assignment Tool
在这里插入图片描述

🍃2.2.3 代码

#include <reg51.h>   //单片机头文件
void Delay();		 //延时子程序说明
void main()          //主程序
{    
    unsigned char i; 
    unsigned char temp;
    P0=0xff;		 //二进制11111111
    while(1)         //无限循环
    {
        temp=0x80;   //二进制10000000
        for(i=0;i<8;i++)
        {
            P0=~temp;         //取反
            Delay();		  //延时
            temp=temp>>1      //右移一位
        }
    }
}
/*延时子程序使LED在变化时有一个停留时间,通过一个外循环和内循环的空操作,*
 *共循环255×255次                                                   */
void Delay()
{
    unsigned char i,j; 
    for(i=0;i<255;i++)		//外循环255次
        for(j=0;j<255;j++); //内循环255次
}

时钟频率 Clock Frequency 12MHz

🌿2.3 一位数码管计数电路

🍃2.3.1 器件清单

Proteus关键词元器件
AT89C51AT89C51单片机
RES电阻
BUTTON按键
7SEG-COM-AN-GRN数码管(绿色)

在这里插入图片描述

🍃2.3.2 电路

自动:
在这里插入图片描述


手动:
在这里插入图片描述

🍃2.3.3 代码

一位数码管自动计数代码

#include <reg51.h>

unsigned char code Tab[]={0xC0,0xF9,0xA4,0XB0,0x99,0x92,0x82,0xF8,0x80,0x90};
                                    //0-9,共阳数码管码段表

void Delay()//简单延时子程序
{
	unsigned char i,j;
	for(i=0;i<255;i++)
		for(j=0;j<255;j++);
}
void main()//主程序
{
	unsigned char i=1;
	while(1)
	{
		P0=Tab[i];//送相应码段表值
		Delay();
		i++;
		if(i>9) i=0;
	}
}

一位数码管手动计数代码

#include <reg51.h>

unsigned char code Tab[]={0xC0,0xF9,0xA4,0XB0,0x99,0x92,0x82,0xF8,0x80,0x90};
                                    //0-9,共阳数码管码段表
unsigned char p=1;

void Delay()//简单延时子程序
{
	unsigned char i;
	for(i=300;i>0;i--);
}
void main()//主程序
{
	EA=1;//开总允许开关
	IT0=1;EX0=1;//开外部中断0和外部中断0允许分开关
	IT1=1;EX1=1;//开外部中断1和外部中断1允许分开关
	while(1)
	{
		P0=Tab[p]; //输出码段表
		Delay();
	}
}
void intersvr0(void) interrupt 0 using 1 //外部中断0处理子程序
{
	p++;
	if(p>9) p=9;
}
void intersvr1(void) interrupt 2 using 1 //外部中断1处理子程序
{
	p--;
	if(p<1) p=1;
}

🌿2.4 四位数码管计时器

🍃2.4.1 器件清单

Proteus关键词元器件
AT89C51AT89C51单片机
RES电阻
7SEG-MPX4-CA4位数码管

🍃2.4.2 电路

在这里插入图片描述

🍃2.4.3 代码

0~500自动计数,循环往复

#include <reg51.h>

unsigned char code Tab[]={0xC0,0xF9,0xA4,0XB0,0x99,0x92,0x82,0xF8,0x80,0x90};
                                    //0-9,共阳数码管码段表
unsigned char Dat[]={0,0,0,0};
unsigned char tmp,i,j;
unsigned char p=0
void Delay()//简单延时子程序
{
	unsigned char i;
	for(i=0;i<n;i++);
}
void main()//主程序
{
	while(1)
	{
		p++;
		if(p>500) p=0;
		Dat[0]=p/100; //百位
		Dat[1]=p%100/10;//十位
		Dat[2]=p%10;//个位
		tmp=0x01;
		for(i=0;i<3;i++)
		{
			P2=tmp;
			P0=Tab[Dat[i]];
			tmp=tmp<<1;
			Delay(250);
		}
		for(i=0;i<150;i++)
			for(j=0;j<100;j++)
				Delay(60000);
	}
}

🎋3. 遇到的一些errors

🌿3.1 No power supply specified for net VDDA…

No power supply specified for net VDDA in Power Rail Configuration.
No power supply specified for net VDDA in Power Rail Configuration.
解决方法:
Design->Powe Rail Configuration
将VDDA、VSSA移入右边,并取消勾选“use default power rail connections”
在这里插入图片描述


  • 9
    点赞
  • 56
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值