proteus如何添加stm32_电路仿真软件详谈(六),Proteus电路仿真软件的超级应用

一款优秀的电路仿真软件,可帮助用户更好实现相应功能,而Proteus电路仿真软件便是这样一款利器。本文中,将讲解基于Proteus电路仿真软件的SPI接口的设计与实现。通过本文,希望大家对Proteus电路仿真软件的应用具备深层次的理解。

1、Proteus简介

Proteus软件是英国Labcenter electronics公司的EDA工具软件,是一个电子设计的教学平台、实验平台和创新平台,涵盖了电工电子实验室、电子技术实验室、单片机应用实验室等的全部功能。它运行于Windows操作系统上,可以仿真、分析(SPICE)各种模拟器件和集成电路。该软件的特点是:

①实现了单片机仿真和SPICE电路仿真相结合。具有模拟电路仿真、数字电路仿真、单片机及其外围电路组成的系统的仿真、RS232动态仿真、I2C调试器、SPI调试器、键盘和LCD系统仿真的功能;有各种虚拟仪器,如示波器、逻辑分析仪、信号发生器等。

②支持主流单片机系统的仿真。目前支持的单片机类型有:68000系列、8051系列、AVR系列、PIC12系列、PIC16系列、PIC18系列、Z80系列、HC11系列以及Phil-lips公司的arm(LPC系列)等。

③提供软件调试功能。在硬件仿真系统中具有全速、单步、设置断点等调试功能,同时可以观察各个变量、寄存器等的当前状态,因此在该软件仿真系统中,也必须具有这些功能;同时支持第三方的软件编译和调试环境,如Keil、ADS等软件。

④具有强大的原理图绘制功能。能够进行SCH(原理图)和PCB(印刷板)电路的设计。

2、Proteus环境下的原理图设计

Proteus和Protel、EWB等软件相似,绘制原理图都要先从器件库里取出所需的元器件符号并在绘图区布局好,同时编辑好元件的参数,接着进行连线,添加必要的网络标号等步骤。下面通过一个简单的实例说明如何使用Proteus软件实现arm(以LPC2106为例)系统的设计与仿真。实例以 LPC2106控制器为核心,使用硬件SPI接口与74HC595进行连接,添加必要的外围电路,控制74HC595驱动LED数码管显示。电路原理如图 1所示。LPC2106的P0.4(/SCK/CAP0.1)、P0.6(/MOSI/CAP0.2)和P0.8(/TxD1/PWM4)分别与 74HC595的SH_CP、DS和ST_CP相连来控制74HC595,74HC595的输出Q0~Q6分别与数码管和LED相连,控制它们的实时显示。

63848cc15d23005dcb60e864366e3620.png

3、程序代码的编写

程序代码的编写主要分4个部分进行:

①LPC2106的初始化代码;

②LPC2106异常向量入口及异常向量与C语言代码的接口,包括初始化堆栈的代码;

③LPC2106目标板特殊的代码,包括异常处理程序和目标板初始化程序;

④根据实例要求并结合原理图,编写实现预期功能的代码,即通常的执行代码,代码文件保存为“main.C”。

通常为了节省开发的时间,一般用设计好的工程模板,这里使用LPC2100系列工程模板。模板中包含LPC2100系列ARM7微控制器的启动文件,包括 STACK.S、HEAP.S、STARTUP.S和TARGET.C;模板还包含LPC2100系列arm7微控制器的头文件,分散加载描述文件(如 mem_a.scf、mem_b.scf和mem_c.scf)等等。这样在以后的程序代码编写时就可以直接使用这些工程模板,而不用再编写初始、启动等程序代码了,只需根据不同的要求编写“main.C”就行了,因而节省了大量时间,大大提高了工作效率。

这里主要说明“main.C”的编写,要实现的功能是使用硬件SPI接口输出0~F的数据,通过74HC595控制LED数码管显示0~F字符,同时控制4个LED显示对应的十六进制数。程序源代码如下:

d04d710136c33b45461050d9836c2335.png
5b4166cfe842dd313f4b2175f25568aa.png
fbfc58b48faab71efdfd7b30c92d232c.png

4、仿真

用ADS集成开发环境进行程序的编译连接设置,ADS集成开发环境是ARM公司推出的ARM核微控制器集成开发工具,英文全称为ARM Developer Suite,成熟版本为ADS1.2。ADS1.2支持ARM10以前的所有arm系列微控制器,支持软件调试,支持汇编、C和C++源程序,具有编译效率高、系统库功能强等特点。打开ADS1.2集成开发环境CodeWarrior IDE,使用事先加入的工程模板建立一个新的工程spi.mcp,把以上编好的代码文件main.c添加进工程。进行相关设置后,选择 Projeet→Make命令,编译并连接工程,生成spi.hex文件。

在原理图中双击微控制器LPC2106,出现一属性设置窗口Edit Component,如图2所示。在其中的ProgramFile中添加上面生成的spi.hex文件的路径,单击OK完成设置。

c326b3b0f600ece64caa035819e8cd96.png

点击原理图左下角的运行按钮即开始仿真运行。数码管显示SPI发送的O~F的数据,LED显示的是相对应的十六进制值。仿真结果完全符合设计要求。

本文结合一个简单的SPI接口实验详细说明了ProteuS在ARM开发中的应用。可以看出,Proteus功能十分强大,能仿真各种数字模拟电路,且操作简单,使用方便。使用Proteus进行arm的虚拟开发,不仅可以减少实验硬件资本的投入,还突破了实际开发板中实验内容的局限性,使开发者能够充分发挥自身的主动性。使用Pro—teus仿真进行系统虚拟开发成功之后再进行实际制作,无疑可以提高开发效率、降低开发成本、提升开发速度,具有较高的推广应用价值。

好了,以上便是小编此次带来的有关电路仿真软件的分享,希望大家喜欢此次小编带来的文章。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/473139.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

LeetCode 803. 打砖块(并查集)

文章目录1. 题目2. 解题1. 题目 有一个 m x n 的二元网格,其中 1 表示砖块,0 表示空白。 砖块 稳定(不会掉落)的前提是: 一块砖直接连接到网格的顶部,或者至少有一块相邻(4 个方向之一&#x…

python设计模式之享元模式

一、享元模式定义: 享元模式是一种用于解决资源和性能压力时会使用到的设计模式,它的核心思想是通过引入数据共享来提升性能。 在开发3D游戏时,例如有成千上万的士兵或者有成千上万棵树,如果一个3D地带的每个对象都单独创建&…

allegro多版本安装_Homebrew 安装旧版本软件包马克

大家好我叫乌图米,我会在这里陆续跟大家分享一些有的没的数码体验、软件技巧、系统知识,欢迎大家留言与我交流~如果你喜欢文章的内容,可以在文末点个赞 ,你的支持就是我最大的动力 !这篇文章介绍一下 Homeb…

利用Python实现PDF转文本,就是如此简单!

一、前言 对很多人来说,将PDF转换为可编辑的文本是个刚需,却苦于没有简单的方法。发现 pdf 幻灯片,效果还不错。 传统的讲座通常伴随有很多pdf幻灯片。一般来说,想要对自己的讲座做笔记,需要从pdf复制、补充大量内容…

LeetCode 1725. 可以形成最大正方形的矩形数目

文章目录1. 题目2. 解题1. 题目 给你一个数组 rectangles &#xff0c;其中 rectangles[i] [li, wi] 表示第 i 个矩形的长度为 li 、宽度为 wi 。 如果存在 k 同时满足 k < li 和 k < wi &#xff0c;就可以将第 i 个矩形切成边长为 k 的正方形。 例如&#xff0c;矩形…

Qt pro文件语法

在Qt下做开发的时候.pro文件就是工程的配置文件&#xff0c;虽然很多时候里面的选项是工具自动生成的&#xff0c;但是难免会需要手动修改的时候&#xff0c;下面就记录一下它的基本语法 #&#xff1a;在.pro文件中表示注释&#xff0c;注释当前行 TEMPLATE&#xff1a;模板 IN…

Python实现给指定的微信朋友发信息

一、环境准备 1、Python3.6 2、itchat第三方库 pip install itchat-uos 3、pyinstaller第三方库 pip install pyinstaller 二、核心代码 import itchatimport timeprint("请扫描弹出的扫二维码")itchat.auto_login(hotReloadTrue)boom_name input("请输…

LeetCode 1726. 同积元组(排列组合)

文章目录1. 题目2. 解题1. 题目 给你一个由 不同 正整数组成的数组 nums &#xff0c;请你返回满足 a * b c * d 的元组 (a, b, c, d) 的数量。其中 a、b、c 和 d 都是 nums 中的元素&#xff0c;且 a ! b ! c ! d 。 示例 1&#xff1a; 输入&#xff1a;nums [2,3,4,6] 输…

vuedraggle choose_如何拆分员工工资条,教你一招一学就会。(五)函数CHOOSE

作为人事管理者&#xff0c;我们最重要的一个工作就是工资表&#xff0c;那么如何将工资表拆分成工资条呢&#xff1f;我们最后看一下函数CHOOSE对函数MOD、ROW、OFFSET 、INT的嵌套使用。第一步&#xff0c;我们输入函数CHOOSE&#xff0c;第一个值是序号&#xff0c;我们将之…

about window.onload

在前几天一次练习中因为我要在页面加载完成后调用一个函数&#xff0c;于是我在javascript中用了window. onload&#xff0c;这个方法以前从学习js就在使用&#xff0c;有时还用来调用多个函数。然而我在这次想偷懒&#xff0c;就这样写了一段代码&#xff1a; window.οnlοad…

用pythone画棵圣诞树,祝大家圣诞快乐

一、python环境&#xff1a; 根据电脑的情况去下载对应的python安装包&#xff0c;我使用的是python3.7.0的版本 二、python编译器&#xff1a; 打开pycharm&#xff0c;然后我们创建一个project&#xff0c;在project下创建一个python file&#xff0c;建议取名字不要使用中…

LeetCode 1727. 重新排列后的最大子矩阵(前缀和+排序)

文章目录1. 题目2. 解题1. 题目 给你一个二进制矩阵 matrix &#xff0c;它的大小为 m x n &#xff0c;你可以将 matrix 中的 列 按任意顺序重新排列。 请你返回最优方案下将 matrix 重新排列后&#xff0c;全是 1 的子矩阵面积。 示例 1&#xff1a; 输入&#xff1a;ma…

亚马逊出的平板电脑_亚马逊Fire HD 8 Plus评测:适合看视频和轻度游戏的廉价平板...

导语&#xff1a;近日&#xff0c;亚马逊升级了旗下的Fire HD 8和Fire HD 8 Plus平板电脑&#xff0c;使其具有更多的内存&#xff0c;更快的处理器和USB-C充电功能。亚马逊Fire HD 8 Plus是Fire HD 8 的一个增强版本&#xff0c;它提供了较HD8更快的速度&#xff0c;拥有一些通…

利用python转换图片格式

前言 常见的图像任务通常需要把照片统一成相同的格式&#xff0c;所以此文章正是为了统一格式而生&#xff0c;常见的主要有cv2和PIL.Image的相关操作&#xff0c;照片格式是一串数字加上后缀名 工具一&#xff1a;cv2 pip install opencv-python 之后就可以 import cv2 1.…

C# 6.0语法新特性体验(二)

之前我在文章通过Roslyn体验C# 6.0的新语法中介绍了一些C# 6.0的语法特性&#xff0c;现在随着Visual Studio 14 CTP3的发布&#xff0c;又陆续可以体验一些新的特性了&#xff0c;这里简单的介绍一下之前没有介绍的新语法。 属性表达式&#xff08;Property Expressions&#…

TensorFlow 2.0 - 张量/自动求导/梯度下降

文章目录1. 张量2. 自动求导、梯度下降学习于&#xff1a;简单粗暴 TensorFlow 2 1. 张量 import tensorflow as tf print(tf.__version__) # 2.3.1random_float tf.random.uniform(shape()) # tf.Tensor(0.80420315, shape(), dtypefloat32) zero_vec tf.zeros(shape(2)) …

苹果台式机_苹果史上最强台式机来了:顶配售价45万

12月11日消息&#xff0c;国行版Mac Pro正式在苹果官网上架开售。根据苹果官网显示&#xff0c;Mac Pro最基础版本需要花费47999元&#xff0c;基础版Mac Pro配置上采用3.5GHz 8核Intel Xeon W处理器&#xff0c;32GB (4x8GB) DDR4 ECC内存&#xff0c;Radeon Pro 580X图形处理…

Python多进程及多参数的处理方法

一、多进程pool.map()方法一 import time from multiprocessing.pool import Pooldef numsCheng(i):return i * 2if __name__ __main__:time1 time.time()nums_list [1, 2, 3, 4, 5, 6, 7, 8, 9]pool Pool(processes5)result pool.map(numsCheng, nums_list)pool.close()…

【floyd】HDU 1874 畅通project续

之后的题解偏重有用/总结性质&#xff0c;尽量理解算法本身而不是题&#xff0c;时间复杂度什么的也能够放放。 非常久之前做过这个题&#xff0c;当时使用dijkstra做的&#xff0c;关于几个最短路算法&#xff0c;分类的话能够分为下面几种。 1、单源最短路&#xff1a;已知起…

利用python寻找列表中相邻元素之差绝对值为1的所有最长链

一、前言&#xff1a; 今天工作遇到一个问题&#xff0c;根据不同的柜子选取能连接在一起的所有柜子&#xff0c;有可能一组&#xff0c;也有可能几组&#xff1b;把这个问题简单化&#xff0c;就是给你一组列表[2, 1, 3, 4, 5, 7, 9, 8, 12, 13, 14, 15]&#xff0c;得到相邻…