周围环境:

系统环境: win7 64位置

软件平台:Multisim 12.0

目的:

刚毕业,可是模电知识也忘得差点儿相同了,加之自己想搞搞硬件设计。假设仅仅是看模电书。不实践,还是终觉浅。当做兴趣一样学学模电,仿真仿真。

Multisim的MCU少,就拿51来练练手。搭建51单片机仿真系统,配合着记录一下书本的知识。

概述:

最后使用Multisim 12.0搭建出来的最小系统为图1-1所看到的,通过编敲代码能够使LED1循环闪烁。

图1-1

正常来说。51单片机最小系统一般包含单片机、晶振电路、复位电路,我没有加入复位电路,由于仅仅是模电的Hello World而已,先熟悉仿真流程。

步骤:

1、建立一个目录MCUDemo。存放所创建的project。我这里路径是 F:\Multisim\MCUDemo

图1-2

2、打开Multisim 12.0 软件

watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQvbXliZWxpZWYzMjE=/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/SouthEast" alt="">

图1-3

软件的首界面为图1-4。能够再左边project栏看到默认创建了一个名字为 Design1的Multisimproject

图1-4

3、 选择File/Save as或者Ctrl+S,保存一下新project。并改名字为 MCU51Demo。存放在第1步创建的目录,如图1-5所看到的,选择“保存”button

图1-5

保存完后,软件界面截图例如以下

图1-6

4、放置单片机。选择菜单条的 Place/Component,弹出“Select a component”对话框,选择 Group为 “MCU”,Family为“805x”,Component为“8051”。如图1-7所看到的

图1-7

5、在图1-7对话框内,选择好器件后,点击右上角的“OK”button,这时能够将选中的8051器件放置在原理图中。当放置好之后(也即点击鼠标左键)。会弹出MCU Wizard创建向导。如图1-8所看到的

图1-8

6、在图1-8所看到的中。选择工作空间存放的路径,这里为第1步所创建的目录F:\Multisim\MCUDemo\,工作空间名字取名为 MCU51,例如以下图1-9

watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQvbXliZWxpZWYzMjE=/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/SouthEast" alt="">

图1-9

设置好之后,选择 Next

7、这一步是设置MCU的project的类型以及编译语言、名字,Project Type里有Standard和 External Hex File。前者是标准类型(事实上我也没用后者),后者是导入外部HEX文件。在本实验中,我选择“Standard”;编程语言Programming Language里选择“C”。即用C语言; 编译工具Assembler/compiler tool一栏选择默认;project名字Project name设置为“MCU51Debug”。突然感觉起了好多名字。

设置好之后如图1-10所看到的

图1-10

设置好之后,选择“Next”

8、接下来是设置是否创建空project。这里按默认值,直接加入一个main.c文件,如图1-11所看到的

watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQvbXliZWxpZWYzMjE=/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/SouthEast" alt="">

图1-11

选择“Finish”

9、此时Multisim的project结构如图1-11所看到的

watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQvbXliZWxpZWYzMjE=/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/SouthEast" alt="">

图1-11

10、接下来就是要搭建最小系统了。首先搭建晶振电路,先加入晶振,选择菜单条 Place-->Component,在Multisim中,晶振的所属的GROUP为 Misc。Family为CRYSTAL,如图1-12所看到的,选择 晶振“HC-49/U_11MHz”,我没找到12M的。

图1-12

点击右上角的OK。将其放置在合适的位置,这里放置好之后。我右键旋转了一下,放置好之后的如图1-13

图1-13

11、然后放置2个30pf的电容,相同的 Place-->Component,电容的Group为Basic,Family为 CAPACITOR,例如以下图1-14所看到的

watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQvbXliZWxpZWYzMjE=/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/SouthEast" alt="">

图1-14

点击“OK”,放置在合适的位置,依照相同的方法再放置一个30pF的电容,如图1-15所看到的

图1-15

12、然后再放置地 DGND,相同的Place-->Component,如图1-16所看到的

图1-16

放置后的效果如图1-17

图1-17

到此。晶振电路就搭建好了,如今能够先将这一部分用线Wire连接,顺带着把单片机的地线也连接,连接后如图1-18所看到的

图1-18

13、放置电源VCC。放置步骤不再啰嗦,如图1-19

图1-19

放置并连线,如图1-20

图1-20,

到这里事实上,51单片机的最最最小系统已经搭建好了,注意当中31脚也和VCC连接了,这是由于对于31脚(EA/Vpp),当接高电平时,单片机在复位后从内部

ROM的0000H開始运行;当接低电平时,复位后直接从外部ROM的0000H開始运行。这一点是刚開始学习的人easy忽略的。

虽然最小系统已经搭建好了,可是也无法通过仿真看有什么效果。这里加入一个LED灯,来显示仿真结果。

14、相同的加入一个LED,如图1-21。器件对话框。这里选择了一个红色LED

图1-21

放置在电路图合适的位置,如图1-22

图1-22

15、此时LED还不能直接连接,须要加入一个电阻。保护二极管LED,加入一个1K的电阻,如图1-23

图1-23

放置并连接,如图1-24

图1-24

我LED灯与单片机连接的引脚是P2.0,引脚能够随便连接。

接下来就是Ctrl+S保存一下,再编写51程序

16、双击图1-25所看到的的main.c

图1-25

此时main.c的内容如图1-26所看到的

图1-26

17、编敲代码,编写完后的main.c内容例如以下图1-27

图1-27

注意 Multisim里的51头文件是8051.h ,不是 reg51.h

18、保存一下文件,然后选择工具栏的 MCU-->MCU 8051 U1-->Build,编译程序。如图1-28所看到的

watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQvbXliZWxpZWYzMjE=/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/SouthEast" alt="">

图1-28

编译的结果例如以下图1-29。

此时 0 Errors 0 Warnings

图1-29

19、回到原理图界面,点击如图1-30红线圈起的開始button。

watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQvbXliZWxpZWYzMjE=/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/SouthEast" alt="">

图1-30

20、此时,按常理来说,LED1应该不停闪烁,可是我的没有闪烁。

这个与LED的工作电流有关系,以下改动一下,首先 停止仿真。即菜单条 Simulator-->Stop。然后双击LED1,弹出LED1的属性对话框,例如以下图1-31

图1-31

将上图的On Current值“5”该低一些。这里改为 “2”,例如以下图1-32所看到的

图1-32

点击OK。然后Ctrl+S保存,再点击“開始仿真”button或者 Simulator-->Start,弹出例如以下对话框

watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQvbXliZWxpZWYzMjE=/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/SouthEast" alt="">

点击“Yes”。此时能够看到LED1闪烁

  

watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQvbXliZWxpZWYzMjE=/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/SouthEast" alt="">

图1-33  LED灭                                                                                  图1-34 LED亮

结语:

到这里,利用Multisim仿真51单片机点亮LED灯的例程差点儿相同完了。中间的一些细节问题还想再写一写。可是到时间去做运动了。

不喜勿喷,纯粹就是个人笔记而已。感觉仿佛回到了初中写博客时,...╮(╯▽╰)╭他来上海是不是easy什么

版权声明:本文博主原创文章,博客,未经同意不得转载。

<模拟电子学习1>Multisim 12.0 结构和仿真51最小的单芯片系统的更多相关文章

  1. 深度学习与CV教程(12) | 目标检测 (两阶段,R-CNN系列)

    作者:韩信子@ShowMeAI 教程地址:http://www.showmeai.tech/tutorials/37 本文地址:http://www.showmeai.tech/article-det ...

  2. Python学习--04条件控制与循环结构

    Python学习--04条件控制与循环结构 条件控制 在Python程序中,用if语句实现条件控制. 语法格式: if <条件判断1>: <执行1> elif <条件判断 ...

  3. 用Advanced Installer制作DotNetBar for Windows Forms 12.0.0.1_冰河之刃重打包版详解

    关于 DotNetBar for Windows Forms 12.0.0.1_冰河之刃重打包版 --------------------11.8.0.8_冰河之刃重打包版-------------- ...

  4. Zend Studio 12.0.2正式版发布和破解方法,zend studio 12.0.1汉化,相式设置为Dreamweaver,空格缩进为4个, 代码默认不折叠的设置,Outline中使用的图形标志,代码颜色之eot设置。

    背景:zend studio 12.0.2 修复了一个12.0.1的:  Fixed problem with referenced variables marked as undefined,我都说 ...

  5. Navicat Premium 12.1.12.0安装与激活

    转载自:Navicat Premium 12.1.12.0安装与激活 作者:丿记忆灬永殇丨 链接:https://www.jianshu.com/p/5f693b4c9468 navicat12112 ...

  6. Tensorflow平台快速搭建:Windows 7+TensorFlow 0.12.0

    Tensorflow平台快速搭建:Windows 7+TensorFlow 0.12.0 1.TensorFlow 0.12.0下载 2016年11月29日,距离TensorFlow 宣布开源刚刚过去 ...

  7. ubuntu 12.0.4 下python3.x web环境搭建

    ubuntu 12.0.4 安装python3.x 1. $ sudo add-apt-repository ppa:fkrull/deadsnakes$ sudo apt-get update$ s ...

  8. Navicat Premium 12.1.12.0破解版激活

    声明:本文所提供的所有软件均来自于互联网,个人存放在此作为备用,以备将来不时之需,同时作为大家的分享和学习成果,仅供个人研究和学习使用,请勿用于商业用途,下载后请于24小时内删除,请支持正版! 附:二 ...

  9. “未在本地计算机上注册“Microsoft.ACE.OLEDB.12.0”提供程序”的解决方案

    不论是连接Access数据库或是SQL Server数据库,"未在本地计算机上注册"Microsoft.ACE.OLEDB.12.0"提供程序."这个问题从Of ...

随机推荐

  1. Android android.database.CursorIndexOutOfBoundsException:Index -1 requested, with a size of 1

    Android中数据库处理使用cursor时,游标不是放在为0的下标,而是放在为-1的下标处开始的. 也就是说返回给cursor查询结果时,不能够马上从cursor中提取值. 下面的代码会返回错误 U ...

  2. JavaScript系列--JavaScript数组高阶函数reduce()方法详解及奇淫技巧

    一.前言 reduce() 方法接收一个函数作为累加器,数组中的每个值(从左到右)开始缩减,最终计算为一个值. reduce() 可以作为一个高阶函数,用于函数的 compose. reduce()方 ...

  3. JVM学习:方法重载的优先级

    重载:方法名一致,参数长度或者类型不一致. 先放总结,下面为例子 参数具有继承.实现关系,优先考虑子类: 在不考虑对基本类型自动装拆箱(auto-boxing,auto-unboxing),以及可变长 ...

  4. jquery实现ajax提交form表单的方法总结(转)

    方法一: 复制代码 代码如下: function AddHandlingFeeToRefund() {            var AjaxURL= "../OrderManagement ...

  5. [AngularFire 2] Joins in Firebase

    Lets see how to query Firebase. First thing, when we do query, 'index' will always help, for both SQ ...

  6. Django 学习笔记(二) 《models》

    python 2.7.6 Django1.8.3 IDE eclipse+pydev Django开发的模式就是MTV(c)模式(model. template, view(urls)). 对于mod ...

  7. /bin/bash^M: bad interpreter: 没有那个文件或文件夹

    执行脚本时出现了这样一个错误,打开之后并没有找到所谓的^M,查了之后才知道原来是文件格式的问题,也就是linux和windows之间的不全然兼容... 详细细节无论,假设验证: vim test.sh ...

  8. js进阶 12-6 监听鼠标滚动事件和窗口改变事件怎么写

    js进阶 12-6 监听鼠标滚动事件和窗口改变事件怎么写 一.总结 一句话总结:滚动事件scroll(),浏览器窗口调整监听resize(),思考好监听对象. 1.滚动事件scroll()的监听对象是 ...

  9. 【u237】分数化小数

    Time Limit: 1 second Memory Limit: 128 MB [问题描述] 写一个程序,输入一个形如N/D的分数(N是分子,D是分母),输出它的小数形式.如果小数有循环节的话,把 ...

  10. 详解springmvc控制登录用户session失效后跳转登录页面

    springmvc控制登录用户session失效后跳转登录页面,废话不多少了,具体如下: 第一步,配置 web.xml <session-config> <session-timeo ...