![单片机C语言应用100例(第4版)](https://wfqqreader-1252317822.image.myqcloud.com/cover/774/47548774/b_47548774.jpg)
2.1 仿真软件Proteus的使用
Proteus 软件能对单片机应用系统同时进行软件和硬件的仿真,为设计单片机应用系统提供一个非常好的平台。
2.1.1 Proteus的主要功能特点
本书采用Proteus 8.10英文版,其特点如下。
(1)实现了单片机仿真和SPICE电路仿真的结合。
具有模拟电路仿真,数字电路仿真,单片机及其外围电路组成的系统的仿真,RS-232动态仿真,以及 I2C 调试器、SPI 调试器、键盘和 LCD 系统仿真的功能,还有各种虚拟仪器,如示波器、逻辑分析仪、信号发生器等。
(2)支持主流单片机系统的仿真。
目前支持的单片机类型有68000系列、8051系列、AVR 系列、PIC12系列、PIC16系列、PIC18系列、Z80系列、HC11系列及各种外围芯片。
(3)提供软件调试功能。
Proteus 中提供了全速、单步、设置断点等调试功能,可以观察各个变量、寄存器等的当前状态。同时,还支持第三方的软件编译和调试环境,如Keil C51等软件。
(4)具有强大的原理图绘制功能。
使用Proteus可以快速、方便地绘制出单片机应用系统的原理图。
2.1.2 实例1:功能感受——利用Proteus仿真单片机播放《渴望》主题曲
本节通过一个实例来感受Proteus的强大功能。
(1)打开随书附件中的“仿真实例\第2章\ex1”文件夹,双击“ex1.pdsprj”彩色图标,弹出图2-1所示的Proteus仿真原理图。
(2)用鼠标右键单击单片机AT89C51(标号为U1),则弹出图2-2所示的单片机属性对话框。单击“Program File”文本框右侧的文件打开按钮,选取目标文件ex1.hex。
(3)在“Clock Frequency”(时钟频率)文本框中输入11.0592MHz,使仿真系统以此频率运行。
(4)单击“OK”按钮,再单击“调试”菜单下的“执行”命令,或者按下“F12”键,或者直接单击仿真工具栏中的按钮,系统就会启动仿真。此时,只要计算机上接有音箱,就会听到优美的音乐。
![](https://epubservercos.yuewen.com/F4701F/26947309607546406/epubprivate/OEBPS/Images/44576_30_1.jpg?sign=1738797306-3mEb1PjL3wM8glJYe3i56cwVQruVE6Ky-0-9110d2cb36407849bb99280028361417)
图2-1 播放音乐的Proteus仿真原理图
![](https://epubservercos.yuewen.com/F4701F/26947309607546406/epubprivate/OEBPS/Images/44576_30_2.jpg?sign=1738797306-fgaDYnnzO9SLL1RqlqBFVSENnuR1qM5v-0-df45a1d2b46d284c280b18f481579ef4)
图2-2 单片机属性对话框
注:如果不特别说明,本书所有实例均采用11.0592MHz的频率进行仿真。
2.1.3 Proteus软件的界面与操作介绍
本书只介绍Proteus 智能原理图输入系统(ISIS)的工作环境和基本操作。
单击“File”→“New Project”→“Next”→“Next”→“Next”→“Next”→“Finish”,即可进入图2-3所示的Proteus ISIS集成环境。Proteus ISIS的工作界面是一种标准的Windows界面,下面简单介绍各部分的功能。
![](https://epubservercos.yuewen.com/F4701F/26947309607546406/epubprivate/OEBPS/Images/44576_31_1.jpg?sign=1738797306-GYZ1HlgI84UIQ631vG0vWX2MPmYzfNtm-0-b3bccbb7fe9b44f9d8585c823ac78eef)
图2-3 Proteus ISIS集成环境(Proteus 8 Professional)
1.原理图编辑窗口
原理图编辑窗口用来绘制原理图。它也是各种电路、单片机系统的 Proteus 仿真平台。方框内为编辑区,元器件要放到它里面。
注意:原理图编辑窗口没有滚动条,可通过预览窗口改变原理图的可视范围。
2.预览窗口
预览窗口可显示两部分内容:一部分是在元器件列表中选择一个元器件时,显示该元器件的预览图;另一部分是当鼠标焦点落在原理图编辑窗口时,显示整张原理图的缩略图,并显示一个绿色的方框,绿色方框里面的内容就是当前原理图编辑窗口中显示的内容。通过改变绿色方框的位置,可以改变原理图的可视范围。
3.对象选择器
对象选择器用来选择元器件、终端、图表、信号发生器、虚拟仪器等。对象选择器上方有一个条形标签,用以表明当前所处的模式及其下所列的对象类型。如图2-4所示,当前模式为选择元器件模式,选中的元器件为“BUTTON’”。选中后,该元器件即出现在预览窗口。单击“P”按钮可将选中的元器件放置到原理图编辑区。
![](https://epubservercos.yuewen.com/F4701F/26947309607546406/epubprivate/OEBPS/Images/44576_32_1.jpg?sign=1738797306-ZdUb1tyNYiIdRZ5P1zyhm0a5c3Lbr04F-0-93e4704197d6abd2787477d2e721e086)
图2-4 对象选择器
4.工具栏分类及图标
表2-1列出了Proteus工具栏分类及图标。
表2-1 Proteus工具栏分类及图标
![](https://epubservercos.yuewen.com/F4701F/26947309607546406/epubprivate/OEBPS/Images/44576_32_2.jpg?sign=1738797306-E5ovoqQMiYhXWYow3nVoe4Y2Cbde6Pmk-0-afb944c20dee082cb30fe1b6e85829d9)
下面仅介绍Proteus独有的工具。
(1)显示命令。
➢:显示刷新;
➢:显示/不显示网格点切换;
➢:显示/不显示手动原点;
➢:以鼠标所在点的中心进行显示;
➢:放大;
➢:缩小;
➢:查看整张图;
➢:查看局部图。
(2)主模式选择工具。
➢:即时编辑元器件参数 (先单击该图标,再单击要修改的元器件);
➢:选择元器件(默认选择);
➢:放置连接点;
➢:放置网络标号连接标签(用总线时会用到);
➢:放置文本;
➢:绘制总线;
➢:放置子电路。
(3)小工具箱。
➢:终端接口,有VCC、地、输出、输入等接口;
➢:元器件引脚,用于绘制各种引脚;
➢:仿真图表,用于各种分析,如Noise Analysis;
➢:录音机;
➢:信号发生器;
➢:电压探针,使用仿真图表时要用到(连接电路节点可显示电压);
➢:电流探针,使用仿真图表时要用到;
➢:虚拟仪表,有示波器等(可显示工作波形)。
(4)转向工具。
➢:顺时针旋转90°;
➢:逆时针旋转90°;
➢:显示元器件放置角度;
➢:元器件水平翻转;
➢:元器件垂直翻转。
(5)仿真运行控制按钮。
:从左至右依次是运行、单步运行、暂停和停止。
5.Proteus操作特性
下面列出了Proteus不同于其他Windows软件的操作特性,必须熟练掌握。
(1)在元器件列表中用鼠标左键选择后可放置元器件。
(2)用鼠标右键单击元器件后可弹出编辑菜单。
(3)双击鼠标右键可删除元器件。
(4)先用鼠标右键单击后用鼠标左键单击,可编辑元器件属性。
(5)连线使用鼠标左键,而通过双击鼠标右键可删除画错的连线。
(6)先用鼠标右键单击连线,再用鼠标左键拖动,可更改连接线走线方式。
(7)滚动鼠标滑轮可放缩原理图。
2.1.4 实例2:Proteus仿真设计快速入门
本实例采用 Proteus 软件绘制仿真原理图,如图2-5所示。将编译好的流水灯控制程序ex2.hex载入单片机。启动仿真,观察流水灯点亮效果。实例所需的元器件见表2-2。
![](https://epubservercos.yuewen.com/F4701F/26947309607546406/epubprivate/OEBPS/Images/44576_34_1.jpg?sign=1738797306-bJHUYEsjm17pcQ5hrJVGM9HwbwIAkm8g-0-bd8d4b32df302126155276957f68ee07)
图2-5 单片机控制流水灯的仿真原理图
表2-2 实例所需元器件表
![](https://epubservercos.yuewen.com/F4701F/26947309607546406/epubprivate/OEBPS/Images/44576_34_2.jpg?sign=1738797306-igP1kYkhcfjK0KTmRXdbbfQnpYhggjfd-0-00b58fe87b9f3f22126b63b7ccd9db09)
1.新建设计文件
打开Proteus 8 Professional工作界面,执行菜单命令“File”→“New Project”,在弹出的“New Project Wizard:Start”对话框中设置好保存路径,并在其上方“Name”处输入“ex2”后,再单击“Next”按钮,如图2-6所示。此时弹出选择模板对话框,选择DEFAULT模板,继续单击“Next”按钮三次,最后单击“Finish”按钮,即可完成新建设计文件的保存,文件自动保存为“ex2.pdsprj”。
2.从元器件库中选取元器件
单击图2-4所示的对象选择器上的“P”按钮,弹出元器件库选择对话框,如图2-7所示。
![](https://epubservercos.yuewen.com/F4701F/26947309607546406/epubprivate/OEBPS/Images/44576_35_1.jpg?sign=1738797306-MUu6F3Z1Pb5yn1B0qnitJZRM8UUMrGpC-0-d6f2857662eb086c7894a0fe7596e773)
图2-6 原理图文件保存对话框
![](https://epubservercos.yuewen.com/F4701F/26947309607546406/epubprivate/OEBPS/Images/44576_35_2.jpg?sign=1738797306-IvT4UOCsWPc9jBwIrmttYim1ezPmoBg2-0-1baf710cdcbc553d155dde39fd1c694f)
图2-7 元器件库选择对话框
1)添加单片机
在“Keywords”(关键字)文本框中输入“AT89C51”,则在元器件预览窗口中分别显示出元器件的类型及相应的原理图符号和封装,如图2-8所示。在预览结果中选中“AT89C51”,再单击“OK”按钮,或者直接双击“AT89C51”,均可将元器件添加到对象选择器中。
2)添加电阻
打开元器件库选择对话框,在“Keywords”文本框中输入“resistors”,在结果中可以看到各种类型的电阻,在“resistors”后接着输入“470r”,结果中显示出各种功率的470Ω电阻。因为这里只需小功率电阻,因此在元器件描述窗口双击“470R0.6W”电阻,将其添加到对象选择器中。
![](https://epubservercos.yuewen.com/F4701F/26947309607546406/epubprivate/OEBPS/Images/44576_36_1.jpg?sign=1738797306-COI8Cut1XeP5ZN4TrEBlmtL50K3gGadA-0-88c90fb2a749ceb7481a546dbb423df8)
图2-8 元器件预览对话框
![](https://epubservercos.yuewen.com/F4701F/26947309607546406/epubprivate/OEBPS/Images/44576_36_2.jpg?sign=1738797306-T41VSAVuOTT1KC5Eh3CSZbbRGKThGhc4-0-edcc05e4634f0993739b32b36fd387fa)
图2-9 添加470Ω电阻
用同样方法添加10kΩ电阻(0.6W)到对象选择器中。
3)添加发光二极管
打开元器件库选择对话框,在“Keywords”文本框中输入“led-yellow”(黄色)。结果中只有一种黄色发光二极管类型,双击该器件,将其添加到对象选择器中。
4)添加晶振
打开元器件库选择对话框,在“Keywords”文本框中输入“crystal”,结果中只有一种晶振类型,双击该器件,将其添加到对象选择器中。
5)添加电容
(1)添加33pF电容。
打开元器件库选择对话框,先在“Keywords”文本框中输入“capacitors”,可在结果中看到各种类型的电容,在“capacitors”后接着输入“30pF”,结果中显示出各种型号的30pF电容。在元器件描述窗口任选一个“50V”电容,双击它将其添加到对象选择器中。
(2)添加10μF电解电容。
打开元器件库选择对话框,先在“Keywords”文本框中输入“capacitors”,可在结果中看到各种类型的电容,接着输入“10u”(不要输入10μF),结果中显示出各种型号的10μF 电容。在元器件描述窗口选择“50V Radial Electrolytic”(圆柱形电解电容),双击它将其添加到对象选择器中。
元器件添加完毕后对象选择器中的元器件列表如图2-10所示。
![](https://epubservercos.yuewen.com/F4701F/26947309607546406/epubprivate/OEBPS/Images/44576_37_1.jpg?sign=1738797306-kPs4ZPxVcmhJuhN30jkSVKmqS36oMudu-0-07b235c3564480871af1725a51d6247c)
图2-10 对象选择器中的元器件列表
3.放置、移动、旋转、删除和设置元器件
下面以单片机“AT89C51”的放置为例来说明元器件的放置与编辑方法。
1)放置
在元器件列表中,选择“AT89C51”,再将光标移到原理图编辑区,在任意位置单击鼠标左键,即可出现一个随光标浮动的单片机符号,如图2-11所示。移动光标到适当位置单击即可完成该单片机的放置。放置后的单片机符号如图2-12所示。
![](https://epubservercos.yuewen.com/F4701F/26947309607546406/epubprivate/OEBPS/Images/44576_37_2.jpg?sign=1738797306-JpkgXm0QUESyXzgNHWkGvWcUbBHstRLM-0-81cfe676376fc49b70838bfa9a8aef8e)
图2-11 随光标浮动的单片机符号
![](https://epubservercos.yuewen.com/F4701F/26947309607546406/epubprivate/OEBPS/Images/44576_37_3.jpg?sign=1738797306-XiupG8jqtpnJUKY0bvu5r9pg7Kymfzz1-0-9bff2ee5415ba9e31c2e9fc1381ec58d)
图2-12 放置后的单片机符号
2)移动和旋转
用鼠标右键单击“AT89C51”,弹出图2-13所示的快捷菜单。从中选择菜单项即可进行相应的编辑。例如,本例需要对单片机进行垂直翻转操作,所以单击“Y-Mirror”,即可实现单片机的垂直翻转。
3)删除
使用下面3种方法可将原理图上的单片机删除。
(1)用鼠标右键双击单片机AT89C51,可将其删除。
(2)用鼠标左键框选AT89C51,再按“Delete”键,可将其删除。
(3)用鼠标左键按住AT89C51不放,同时按“Delete”键,可将其删除。
![](https://epubservercos.yuewen.com/F4701F/26947309607546406/epubprivate/OEBPS/Images/44576_38_1.jpg?sign=1738797306-JHDe8Rn6rQgTI1zEZaU9mZ5rsBFuQfMI-0-2256d8471e10dd404ca35d90547062a8)
图2-13 在元器件上单击鼠标右键弹出的快捷菜单
4)属性设置
本例需要对单片机AT89C51进行属性设置。
单击图2-13中的“Edit Properties”命令,弹出元器件属性设置对话框,如图2-14所示。例如,在“Clock Frequency”文本框中输入“11.0592MHz”,即可将单片机的时钟频率设置为11.0592MHz。
![](https://epubservercos.yuewen.com/F4701F/26947309607546406/epubprivate/OEBPS/Images/44576_38_2.jpg?sign=1738797306-Wf8pLvSGWDAy7Mz5UEQbmZAor48HAZxn-0-8ef473cd5f60ee9b8ad4203edee85741)
图2-14 单片机AT89C51的属性设置
用类似的方法放置和编辑其他元器件,放置后各元器件的位置如图2-5所示。
4.网格单位
Proteus 编辑环境默认的网格单位是100th(1th=0.01mm),这也是移动元器件的步长单位,可根据需要进行修改。如图2-15所示,执行菜单命令“View→“Snap1mm”即可将网格单位设置为100th。若需要对元器件进行更精确的移动,可用同样的方法将网格单位设置为50th或10th。
![](https://epubservercos.yuewen.com/F4701F/26947309607546406/epubprivate/OEBPS/Images/44576_39_1.jpg?sign=1738797306-XhmGp8y6l9x4FDVaDirtIPvyHB2BbrDR-0-251b31de6b9c45905a236a45496697cf)
图2-15 网格单位的设置
5.放置电源和地(终端)
单击图2-16所示小工具箱的终端按钮,则在对象选择器中显示出各种终端符号,从中选择“POWER”,可在预览窗口看到电源的符号。此时,将光标移到原理图编辑区,即可看到一个随光标浮动的电源终端符号。将光标移动到适当位置,单击即可将电源终端符号放置到原理图中。然后在电源终端符号上双击鼠标左键,弹出“Edit Terminnal Label”对话框,如图2-17所示。在“String”文本框中输入“VCC”,最后单击“OK”按钮完成电源终端的放置。
![](https://epubservercos.yuewen.com/F4701F/26947309607546406/epubprivate/OEBPS/Images/44576_39_2.jpg?sign=1738797306-aESEqMOZUDt2Nb4fcxVbkvESAaTlGMTD-0-2497b6b76de17d87df4cec7f61469577)
图2-16 电源终端的放置
![](https://epubservercos.yuewen.com/F4701F/26947309607546406/epubprivate/OEBPS/Images/44576_40_1.jpg?sign=1738797306-TkPpiCoOm6D6DP8Mn7jXpqKvn6npEbxJ-0-09d8347473a34dd44d4977e7a91a7317)
图2-17 电源终端的编辑
用同样的方法放置“地”终端。
6.放制总线
单击主模式选择工具中的总线图标,可在原理图中放置总线。其放置方法及位置如图2-18所示。
![](https://epubservercos.yuewen.com/F4701F/26947309607546406/epubprivate/OEBPS/Images/44576_40_3.jpg?sign=1738797306-6Zp0CnK3YlvUndwUJ39Lyy3OOOBK8c72-0-13effd378e76b8bc1ffa2afa6dca1af6)
图2-18 放置总线
7.电路图布线
系统默认自动捕捉功能有效,只要将光标放置在要连线的元器件引脚附近,就会自动捕捉到引脚,单击鼠标左键就会自动生成连线。当连线需要转弯时,只要单击鼠标左键即可。图2-19所示为在电源和电阻R8之间进行布线操作。
![](https://epubservercos.yuewen.com/F4701F/26947309607546406/epubprivate/OEBPS/Images/44576_41_1.jpg?sign=1738797306-xaKnL1HAF3ZZA5vKxHcBEocnXyHscnD2-0-b94d1a2d470d5cfc5e42dab9f4b592eb)
图2-19 在电源和电阻R8之间进行布线操作
用类似的方法完成其他元器件之间的布线,布线效果如图2-5所示。
8.添加网络标号连接标签
图2-5中各元器件引脚与单片机引脚通过总线的连接并不表示真正意义上的电气连接,需要添加网络标号。在Proteus仿真时,系统会认为网络标号相同的引脚是连接在一起的。
单击主模式选择工具,在需要放置网络端口的元器件引脚附近单击鼠标左键,弹出如图2-20所示的对话框。在“String”文本框中输入网络标号“P10”,单击“OK”按钮即完成网络标号的添加。
![](https://epubservercos.yuewen.com/F4701F/26947309607546406/epubprivate/OEBPS/Images/44576_41_3.jpg?sign=1738797306-WCWQsddYawQtfypBQYokwXSgTjg5RKAg-0-247f663b08523d323d81d77eb8ab9994)
图2-20 添加网络标号
其他网络标号的添加与此类似,添加效果如图2-5所示。
9.电气规则检查
设计完电路图后,执行菜单命令“Tool”(工具)→“Electricd Rules Check”(电气规则检查),则弹出图2-21所示的电气规则检查结果对话框。如果没有错,则系统给出“No ERC errors found”的信息。
![](https://epubservercos.yuewen.com/F4701F/26947309607546406/epubprivate/OEBPS/Images/44576_42_1.jpg?sign=1738797306-5G2XrGe984gwCUgar7kFoi8Vgxf4J67c-0-afaa86b478d401e949e1f806818832d0)
图2-21 电气规则检查结果
10.仿真运行
由于目前还没有学习单片机的程序设计,因此这里先使用一个编译好的流水灯控制程序来验证仿真效果。将随书附件“仿真实例\第2章\ex2”文件夹内的 ex2.hex 载入单片机AT89C51(U1),再将其时钟频率设置为11.0592MHz。最后单击仿真运行按钮,系统就会启动仿真,仿真原理图搭建效果如图2-22所示。从图中可以看出,在某一时刻发光二极管D4被点亮。
![](https://epubservercos.yuewen.com/F4701F/26947309607546406/epubprivate/OEBPS/Images/44576_42_3.jpg?sign=1738797306-9pJ4MxUE6fnmr8kSPLUrrIhxLbW5iGFU-0-5d22fc8ecbb240096f21d9f554f4c5f8)
图2-22 流水灯控制电路的仿真原理图搭建效果
这个例子表明,Proteus 仿真软件可以获得几乎和真实硬件电路一样的实验效果,这为学习单片机提供了一个非常好的虚拟实验平台,节约了不少硬件成本。本书的绝大多数实验都将基于Proteus软件平台进行。