第3章 CHAPTER 3 单片机编程软件与仿真软件 本章介绍单片机编程软件Keil Cx51和仿真软件Proteus。通过本章的学习,应该达到以下目标。 (1) 了解单片机编程软件Keil Cx51的功能,熟悉Keil Cx51的工作环境,掌握Keil Cx51的使用方法。 (2) 了解单片机仿真软件Proteus的功能,熟悉Proteus的工作环境,掌握Proteus的使用方法。 3.1单片机编程软件Keil Cx51 3.1.1Keil Cx51简介 以单片机作为控制核心的单片机应用系统是硬件系统与软件系统的结合,二者缺一不可。单片机应用系统的硬件系统设计、制作完成之后,接下来就需要进行相应的软件系统设计,即编写、编译、调试程序。就基于51系列兼容单片机的单片机应用系统而言,可以在Keil Cx51、CodeWarrior、IAR等软件开发平台上编写、编译、调试程序。 目前,应用最广泛的51系列兼容单片机应用程序开发平台是美国Keil Software公司的Keil Cx51。Keil Cx51提供了包括C编译器、宏汇编、连接器、库管理和仿真调试器等部件在内的完整开发方案,通过集成开发环境μVision,把这些部件组合在一起。如果使用C语言进行单片机应用程序设计,那么,Keil Cx51一定是很多工程师的首选。 3.1.2Keil Cx51的工作界面 本节以Keil C51 V9.54为例,介绍Keil Cx51的工作界面。 下载软件Keil C51 V9.54,在文件夹“keilc51v9.54”中找到“c51v954a.exe”文件,双击该文件,开始安装。依照安装向导,完成Keil Cx51的安装。安装完成后,在桌面上将出现Keil μVision5图标。 在桌面上双击Keil μVision5图标,或者选择“开始”→“所有程序”→Keil μVision5选项,进入Keil μVision5的工作界面,如图3.1所示。Keil μVision5的工作界面是一个标准的Windows窗口,包括标题栏、菜单栏、工具栏、工程窗格、程序编辑区、编译输出窗格和状态栏等。 图3.1Keil μVision5的工作界面 1. 标题栏 Keil μVision5工作界面的最上面一行是标题栏,用于显示当前打开的工程文件的存储路径与文件名。 2. 菜单栏 标题栏的下面一行是菜单栏。Keil μVision5的菜单栏包括File、Edit、View、Project、Flash、Debug、Peripherals、Tools、SVCS、Window、Help等11个主菜单,各个主菜单包含若干个菜单命令。常用的主菜单有File、View、Project、Debug等。 (1) File菜单。File菜单包含的菜单命令如图3.2所示。 (2) View菜单。View菜单包含的菜单命令如图3.3所示。 图3.2File菜单包含的菜单命令 图3.3View菜单包含的菜单命令 (3) Project菜单。Project菜单包含的菜单命令如图3.4所示。 图3.4Project菜单包含的菜单命令 (4) Debug菜单。Debug菜单包含的菜单命令如图3.5所示。 图3.5Debug菜单包含的菜单命令 3. 工具栏 图3.6编译(Build)工具栏的悬浮窗口 把Keil μVision5的常用命令集中起来,以图标的形式显示出来,就构成了工具栏。工具栏包括文件(File)工具栏和编译(Build)工具栏。工具栏一般位于菜单栏的下面,也可以把它们提取出来作为悬浮窗口。例如,编译工具栏的悬浮窗口如图3.6所示。 Keil μVision5常用工具的功能说明如下。 : 开始/停止调试。 : 插入断点。 : 移除断点。 : 禁止所有断点。 : 移除所有断点。 : 编译当前文件。 : 编译对象文件。 : 编译所有对象文件。 : 设置对象的选项。 4. 工程窗格 工程窗格用于显示当前打开的工程文件,其中包含头文件、源程序文件等。通过工程窗格,可以清楚地看出本工程文件所包含的文件以及各种文件的层次结构,便于文件管理。在View菜单中,可以选择显示/隐藏工程窗格,一般选择显示工程窗格。 5. 程序编辑区 程序编辑区是Keil μVision5工作界面的主要部分,用于编写头文件、源程序文件等。在工程窗格中,双击某个头文件或源程序文件,就在程序编辑区打开这个文件。在程序编辑区选中某个头文件或源程序文件,单击鼠标右键,在弹出的快捷菜单中选择Close选项,就关闭了这个文件。 选择Edit→Configuration选项,弹出Configuration对话框,如图3.7所示。在这个对话框中,可以设置源程序代码的字体、字形、字号、颜色等。 图3.7Configuration对话框 6. 编译输出窗格 选择View→Build Output Window选项,可以选择显示/隐藏编译输出窗格。如果选择显示编译输出窗格,那么,在Keil μVision5工作界面的下部,将出现编译输出(Build Output)窗格。在编译工程之后,Build Output窗格将会显示编译结果。如果程序有错误,系统将给出错误或警告提示,并指示错误或警告所在的行。程序员可以按照提示信息进行修改,然后重新编译,直至没有错误为止。如果在Build Output窗格中显示“0 Error(s), 0 Warning(s)”,说明编译成功。 7. 状态栏 状态栏位于Keil μVision5工作界面的底部,用于显示当前系统的状态,以及当前光标所在位置的行号与列号。 3.1.3Keil Cx51的使用方法 基于Keil μVision5设计单片机应用系统的控制程序,一般包括新建工程、新建C文件、把C文件添加到工程中、编译工程等。下面以数码管轮流显示控制程序设计为例,介绍单片机应用系统程序设计的过程。 为了使设计文件结构清晰,应该对设计文件进行归类管理,为此,在桌面新建一个文件夹“例3.1”,在这个文件夹中,再新建一个文件夹“例3.1控制程序”,用于保存本程序设计的相关文件。 1. 新建工程 新建一个工程的步骤如下。 (1) 在Keil μVision5工作界面,选择Project→New μVision Project选项,弹出Create New Project对话框,如图3.8所示。在该对话框中,选择存放工程文件的路径,输入工程文件名。这里,把工程文件存放在“例3.1控制程序”文件夹中,把工程文件命名为“例3.1”。 图3.8Create New Project对话框 (2) 单击“保存”按钮,弹出Select Device for Target 'Target 1'对话框,如图3.9所示。在该对话框中,选择单片机的种类及型号。 图3.9Select Device for Target'Target 1'对话框 (3) 单击OK按钮,弹出μVision对话框,如图3.10所示。 图3.10μVision对话框 (4) 单击“否”按钮,就在桌面文件夹“例3.1”的子文件夹“例3.1控制程序”中新建了一个工程文件“例3.1”。 2. 新建C文件 新建一个C文件的步骤如下。 (1) 在文件工具栏中,单击New按钮,在程序编辑区新建一个空白文档Text1,如图3.11所示。 图3.11新建一个空白文档Text1 (2) 编写程序代码。在新建的空白文档中编写程序代码。程序代码是单片机应用系统控制程序的核心,应该根据具体单片机应用系统的功能进行编写。本例程序为数码管轮流显示程序,如图3.12所示。 图3.12编写程序代码 (3) 在文件工具栏中,单击Save按钮,弹出Save As对话框,如图3.13所示。 图3.13Save As对话框 (4) 在地址栏中选择存放C文件的文件夹“例3.1\例3.1控制程序”,在“文件名”输入框中输入文件名“例3.1控制程序.C”。注意,这里的文件扩展名必须是“.C”或“.c”。 (5) 单击“保存”按钮,保存C文件。 3. 把C文件添加到工程中 (1) 在工程窗格右击Source Group1文件夹,在弹出的快捷菜单中,选择Add Existing Files to Group 'Source Group 1'选项,如图3.14所示。 (2) 在弹出的Add Files to Group 'Source Group 1'对话框中,选择新建的C文件“例3.1控制程序.C”,如图3.15所示。 图3.14选择Add Existing Files to Group 'Source Group 1'选项 图3.15Add Files to Group 'Source Group 1'对话框 (3) 单击Add按钮,再单击Close按钮。这时,在工程窗格的Source Group1文件夹中出现文件“例3.1控制程序.C”,表明已经成功地把这个C文件添加到工程中了。 4. 设置对象选项 C文件中的程序是用C语言编写的高级语言程序,单片机不能直接执行,必须用编译软件把它转换成单片机能够直接执行的机器语言,即生成HEX文件。为此,在编译程序之前,需要设置对象选项,选择生成HEX文件。 在编译工具栏中,单击Options for Target按钮,弹出Options for Target 'Target 1'对话框,如图3.16所示。单击Output标签,勾选Create HEX File复选框。单击OK按钮,回到Keil μVision5工作界面。 图3.16Options for Target 'Target 1'对话框 5. 编译工程 在工程窗格的Source Group1文件夹中,双击“例3.1控制程序.C”,打开这个C文件。在编译工具栏中,单击Rebuild all target files按钮,编译工程。编译工程之后,在Build Output窗格中显示“0 Error(s), 0 Warning(s)”,说明编译成功,如图3.17所示。 图3.17编译工程 此时,在文件夹“例3.1\例3.1控制程序\Objects”中出现了一个文件“例3.1.hex”,这就是可以下载到单片机供单片机直接执行的HEX文件。 保存Keil工程文件“例3.1”,备用。 3.2单片机仿真软件Proteus 3.2.1Proteus简介 Proteus是英国Labcenter Electronics公司开发的电子设计自动化(Electronic Design Automation,EDA)软件,集成了电路仿真软件、PCB设计软件和虚拟模型仿真软件。在Proteus平台,可以进行电路原理图设计、单片机与外围电路协同仿真,还可以一键切换到PCB设计,涵盖了从概念设计到产品制作的整个过程。Proteus的特色功能主要体现在电路原理图设计、电路仿真、PCB设计这3方面。 1. 在电路原理图设计方面 (1) 系统自带的元件库包含五万多种元件,并且允许设计者自己创建新元件。 (2) 在设计电路原理图时,通过模糊搜索,可以快速找到所需的元件。 (3) 智能连线功能使导线连接更加简单快捷,缩短了电路原理图设计时间。 (4) 使用总线设计方法,可以使电路简洁明了。 (5) 使用子电路设计方法,可以使电路原理图的结构更加清晰。 (6) 在修改电路原理图之后,通过同步操作,能够使材料清单(Bill of Material,BOM)与电路原理图保持一致。 (7) 通过个性化设置,可以生成高质量的图纸,方便同行交流。 (8) 通过设计浏览器,可以观察设计过程中各阶段的情况。 2. 在电路仿真方面 (1) 系统自带的元件库包含三万五千多个仿真元件,Labcenter Electronics公司还在不断发布新的仿真元件,也可以导入第三方的仿真元件。另外,设计者还可以通过内部原型或使用厂家的SPICE文件,自行设计仿真元件。 (2) 系统带有多种激励源,包括直流、正弦、脉冲、分段线性脉冲、音频、指数信号、单频FM和数字时钟等,支持文件形式的信号输入,还可以用脚本编程语言EasyHDL生成特殊的激励信号,用于电路测试与调试。 (3) 系统配置丰富的虚拟仪器,包括示波器、逻辑分析仪、信号发生器、直流电压/电流表、交流电压/电流表、数字图案发生器、频率计/计数器、SPI调试器、I2C调试器等。 (4) 基于工业标准SPICE3F5,可以实现模拟电路、数字电路、模数混合电路、单片机及其外围电路组成的单片机应用系统的仿真。支持UART/USART/EUSARTs仿真、中断仿真、SPI仿真、I2C仿真、MSSP仿真、PSP仿真、RTC仿真、ADC仿真、CCP/ECCP仿真; 支持多处理器协同仿真; 支持单片机汇编语言、C语言源码级仿真; 还能够与Keil Cx51等软件进行联合仿真。 (5) 支持主流单片机的仿真。目前支持的单片机类型有8051/52、AVR、PIC10/12/16/18/24/33、HC11、Basic Stamp、MSP430、8086、DSP Piccolo、ARM7、CortexM0、CortexM3、Arduino等。随着版本的不断更新,Proteus将支持更多类型单片机的仿真。 (6) 支持多种通用外部器件的仿真,例如,键盘/按键、LED点阵、LED数码管、字符型/图形型LCD模块、直流/步进/伺服电机、RS232虚拟终端、电子温度计等。 (7) 提供全速运行、单步运行、设置断点等多种调试方式。 (8) 提供直观、动态的显示方式。例如,用色点显示引脚的电平,以不同颜色表示导线对地电压的大小,使仿真效果更加直观。结合使用电机、显示器、按钮等动态器件,使仿真过程更加生动。 (9) 基于图形化的分析工具,可以精确分析电路的多项指标,包括瞬态特性、频率特性、传输特性、噪声、失真、傅里叶频谱等。 3. 在PCB设计方面 (1) 电路原理图设计完成之后,可以一键进入PCB设计工作界面。 (2) 自带PCB设计模板,允许对PCB设计进行标注。 (3) 系统自带元件封装库,包括主流的直插元件封装、贴片元件封装等。如果需要,也可以从其他工程导入元件封装,或由设计者自己创建封装。 (4) 具有完整的PCB设计功能,支持16个铜箔层、2个丝印层和4个机械层,允许以任意角度放置元件,用户可以灵活设置布线策略,能够自动进行设计规则检查。 (5) 支持自动/人工布局,支持自动/人工布线,支持泪滴生成、等长匹配。 (6) 可以设置贯通孔、盲孔和埋孔等三种类型的过孔。 (7) 可以对电路进行精确分析,还可以进行信号一致性分析。 (8) 可以三维展示设计效果,系统提供大量3D封装库,也可在Proteus中创建新的3D元件封装,或者从第三方导入3D元件封装。 (9) 支持输出多种格式的文件,包括Gerber X2、ODB++、MCD,方便PCB制作。 3.2.2Proteus的工作界面 本节以Proteus 8.6 SP2 Professional为例,介绍Proteus的工作界面。 下载软件Proteus 8.6 SP2 Professional,在文件夹中找到Proteus_8.6_SP2_Pro.exe文件,双击该文件,开始安装。依照安装向导,完成Proteus软件的安装。安装成功之后,在桌面上将出现Proteus 8 Professional图标。 双击桌面上的Proteus 8 Professional图标,或者选择“开始”→“所有程序”→Proteus 8 Professional→Proteus 8 Professional选项,打开Proteus首页,如图3.18所示。Proteus首页是一个Windows窗口,包括标题栏、菜单栏、工具栏、Home Page标签等。Proteus首页的功能较少,主要包括新建工程、打开工程、保存工程、关闭工程等命令,在菜单栏和工具栏中,分别以菜单命令和工具按钮的形式罗列了这些命令。 图3.18Proteus首页 单击Schematic Capture按钮,切换到电路原理图工作界面,如图3.19所示。 图3.19电路原理图工作界面 电路原理图工作界面是一个标准的Windows窗口,包括标题栏、菜单栏、工具栏、Schematic Capture标签等。 1. 菜单栏 菜单栏包括File、Edit、View、Tool、Design、Graph、Debug、Library、Template、System、Help等11个主菜单。 (1) File菜单。File菜单包含的菜单命令如图3.20所示。 (2) Edit菜单。Edit菜单包含的菜单命令如图3.21所示。 图3.20File菜单包含的菜单命令 图3.21Edit菜单包含的菜单命令 (3) View菜单。View菜单包含的菜单命令如图3.22所示。 (4) Tool菜单。Tool菜单包含的菜单命令如图3.23所示。 (5) Design菜单。Design菜单包含的菜单命令如图3.24所示。 (6) Graph菜单。Graph菜单包含的菜单命令如图3.25所示。 (7) Debug菜单。Debug菜单包含的菜单命令如图3.26所示。 (8) Library菜单。Library菜单包含的菜单命令如图3.27所示。 图3.22View菜单包含的菜单命令 图3.23Tool菜单包含的菜单命令 图3.24Design菜单包含的菜单命令 图3.25Graph菜单包含的菜单命令 图3.26Debug菜单包含的菜单命令 图3.27Library菜单包含的菜单命令 (9) Template菜单。Template菜单包含的菜单命令如图3.28所示。 (10) System菜单。System菜单包含的菜单命令如图3.29所示。 2. 工具栏 为了使操作更加简便,把一些常用的菜单命令集合起来,构成工具栏。工具栏包括文件工具栏、视图工具栏、编辑工具栏、设计工具栏和元件工具栏。 3. Schematic Capture标签 在电路原理图工作界面,Schematic Capture标签占据大部分空间,包括对象选择工具栏、对象方向控制工具栏、预览窗格、对象选择器窗格、电路原理图设计区、仿真进程控制工具栏、状态栏等。 图3.28Template菜单包含的菜单命令 图3.29System菜单包含的菜单命令 (1) 对象选择工具栏。对象选择工具栏位于Schematic Capture标签的左侧。在该工具栏中,可以选择常用的元件、节点、网络标号、虚拟仪表、图形等。 (2) 对象方向控制工具栏。在对象选择工具栏的右边,有一组对象方向控制按钮。通过这些按钮,可以设置所选对象的方向。 (3) 预览窗格。通常情况下,该窗格显示整个电路原理图的缩略图。在预览窗格上单击鼠标左键,将出现一个绿色矩形框,标出电路原理图设计区中当前显示的区域。在预览窗格上单击鼠标左键后,在预览窗格上移动鼠标,可以改变电路原理图设计区中当前显示的区域。 (4) 对象选择器窗格。在设计电路原理图时,经常需要放置特定的元件,而在放置元件之前,需要把所需的元件从元件库加载到对象选择器窗格。若在对象选择器窗格中选中一个对象,则预览窗格显示该对象的预览。 (5) 电路原理图设计区。在电路原理图设计区,可以进行放置元件、编辑元件属性、布局、布线等操作。该窗格没有滚动条,需要通过预览窗格来改变电路原理图的可视范围。在电路原理图设计区单击鼠标的滚轮,然后移动鼠标,也可以改变电路原理图的可视范围。滚动鼠标的滚轮,可以对电路原理图进行缩放。 (6) 仿真进程控制工具栏。在Schematic Capture标签的左下角,有一组仿真进程控制按钮。通过这些按钮,可以进行全速、单步仿真,也可以暂停、终止仿真。 (7) 状态栏。状态栏位于Schematic Capture标签的右下角,用于显示当前图纸信息、当前光标坐标等。 3.2.3电路原理图设计方法 1. 电路原理图设计区的基本操作 在预览窗格中,在希望显示的位置单击,在电路原理图设计区,将显示以鼠标单击处为中心的内容。 图纸的默认坐标原点在电路原理图设计区的中央,也可以为图纸设置一个假定坐标原点。选择View→Toggle False Origin选项,把光标移到电路原理图设计区的某点,单击,就把该点设置为假定坐标原点。如果设置了假定坐标原点,那么,在状态栏中显示的就是当前光标相对于假定坐标原点的坐标值。再次选择View→Toggle False Origin选项,可以取消假定坐标原点。 在设计电路原理图时,图纸中的栅格有助于元件对齐,提高设计效率。选择View→Toggle Grid选项,可以在无栅格、点状栅格和实线栅格三种状态中进行切换。栅格间距是由当前设置的捕捉尺寸决定的。Proteus坐标系统的最小识别单位为1thou。thou是英制长度单位,1thou=0.001inch=0.0254mm。 当光标在原理图编辑窗格内移动时,坐标值以固定步长变化,这就是捕捉。选择View→XCursor选项,将在光标上显示一个交叉十字,准确显示捕捉点。当光标指向某元件引脚末端或某导线时,系统将捕捉到这些对象,称为实时捕捉。实时捕捉功能可以方便地实现元件引脚或导线的连接。 选择View→Redraw Display选项,将刷新电路原理图设计区中的显示内容,同时,预览窗格中的内容也被刷新。当执行一些操作导致电路原理图设计区显示错乱时,可以使用该命令来刷新显示内容。 2. 添加对象到对象选择器窗格 单击对象选择器窗格上方的选择按钮,弹出Pick Devices对话框,如图3.30所示。 图3.30Pick Devices对话框 通过该对话框,可以从元件库中选择对象,并加载到对象选择器窗格,供绘制电路原理图使用。 3. 放置对象 在设计电路原理图时,最基本的操作是放置对象。放置对象的步骤如下。 (1) 根据对象的类别,在对象选择工具栏中选择相应模式的图标。此时,在对象选择器窗格中将显示该模式的各个对象的名称。 (2) 从对象选择器窗格中选择需要放置的对象。 (3) 把光标移到电路原理图设计区,光标变成铅笔形状。单击,就在光标所在位置放置了一个对象。 (4) 如果还需要放置这个对象,把光标移到另一个位置,单击,在该位置又放置了一个对象。此时,对象的序号会自动加1。 (5) 如果不需要再放置这个对象了,把光标移到对象选择工具栏的箭头按钮上,单击,光标从铅笔形状变成箭头形状,结束对象的放置操作。 4. 选择对象 在电路原理图设计区,把光标指向对象,单击,就选中了该对象。选中的对象将高亮显示。选中某个对象时,与该对象相连的所有导线也被选中。拖动鼠标,可以选中一组对象。在电路原理图设计区的空白处单击,将取消对所有对象的选择。 5. 移动对象 用鼠标左键拖曳选中的对象,可以移动该对象。如果错误地移动了一个对象,那么,连线可能变得一团糟。此时,可以选择Edit→Undo Changes选项,撤销本次操作,恢复电路原理图原来的状态。 6. 删除对象 光标指向对象,双击,就删除了该对象,同时删除与该对象相连的所有导线。 7. 移动标签 许多类型的对象都附着一个或多个标签,用于标明对象的属性。例如,电阻就有一个Part Reference标签和一个Resistance标签。可以移动这些标签,使电路图看起来更加美观。选中对象,使光标指向标签,按住鼠标左键,拖动标签到新的位置,松开鼠标左键,就移动了标签。 8. 调整对象的大小 在电路原理图设计区,可以调整子电路、图表、直线、边框、圆弧等对象的大小。选中某个对象,在该对象周围将出现句柄,拖动句柄,就可以调整对象的大小。 9. 改变对象的方向 在电路原理图设计区,可以改变对象的方向。选中某个对象,单击鼠标右键,在弹出的快捷菜单中,选择旋转的方向和角度,就可以改变对象的方向。 10. 编辑对象的属性 对象一般都具有文本属性,可以通过对话框编辑这些属性。选中某个对象,双击,将弹出一个对话框,通过这个对话框,可以编辑对象的属性。 11. 复制对象 选中对象,单击鼠标右键,在弹出的快捷菜单中,选择Copy To Clipboard选项; 把光标移到目标位置,单击鼠标右键,在弹出的快捷菜单中,选择Paste From Clipboard选项。这样,就在目标位置复制了一个对象。 12. 自动布线器 在绘制导线时,如果自动布线器是开启的,那么系统将自动在两个连接点之间选择一条合适的布线路径。可以选择Tool→Wire Autorouter选项,打开或关闭自动布线器。 13. 绘制导线 每个元件引脚的末端都有连接点,Proteus把导线视作连续的连接点。把光标移到第一个连接点,单击; 再把光标移到另一个连接点,单击。这样,就在两个连接点之间连接了导线。 在绘制导线的过程中,常常需要改变导线的方向,此时,只要在转折点单击即可。 14. 绘制总线 为了简化电路原理图,可以用一条导线代表数条并行的导线,这就是所谓的总线。当电路中有多根并行的地址线、数据线、控制线时,一般应该使用总线。 在总线的起点单击鼠标右键,在弹出的快捷菜单中,选择Place→Bus选项,沿着总线的路径移到光标,在总线的终点双击,一条总线就绘制好了。 15. 绘制总线分支线 总线分支线用来连接总线和元件引脚。为了区分与其他导线,一般用斜线来表示总线分支线。此时,必须关闭自动布线器。 16. 放置电路节点 若导线的交叉点有电路节点,则两条导线在电气上是相连的; 否则,它们在电气上是不相连的。在绘制导线时,系统自动判断是否需要放置节点。例如,当三条导线汇于一点时,系统会自动放置节点。在两条导线交叉时,系统不会自动放置节点。此时,若要使两条导线电气相连,就必须手工放置电路节点。 单击对象选择工具栏中的“放置节点”按钮,把光标移到电路原理图设计区,指向两条导线的交叉点,光标上出现一个“×”号,单击,就放置了一个电路节点。 3.3电路仿真系统设计实例 例3.1如图3.31所示,以AT89C51为控制核心,以6位数码管作为显示器,设计6位LED数码管控制系统的仿真电路。基于Keil Cx51软件设计控制程序,实现6位数码管的轮流选通,并分别显示字符0,1,…,5。 图3.316位LED数码管控制系统 分析: 单片机应用系统包括硬件系统和软件系统,因此,在桌面新建一个文件夹“例3.1”,在这个文件夹中再新建两个文件夹“例3.1仿真电路”和“例3.1控制程序”,分别用于保存本例的硬件系统和软件系统。 设计过程包括仿真原理图电路设计、控制程序设计、电路原理图与控制程序联合仿真等。仿真原理图电路设计包括新建Proteus工程、绘制电路原理图,控制程序设计包括新建Keil工程、编写与编译控制程序。 AT89C51是仿真电路的核心,P1的8个引脚P1.0~P1.7分别连接数码管的段码引脚a~dp,P2的6个引脚P2.0~P2.5分别连接数码管的位选引脚1~6; 6个电阻起限流作用; 为了使电路图简洁明了,采用总线结构。 解详细设计过程如下。 1) 新建Proteus工程 Proteus是以工程的形式管理文件的,因此,在设计仿真电路之前,必须新建一个工程。新建一个Proteus工程的步骤如下。 (1) 打开Proteus软件。在Proteus首页,选择File→New Project选项,弹出New Project Wizard: Start对话框,如图3.32所示。在该对话框中,选择存放工程文件的路径,输入工程文件名。这里,把工程文件存放在“例3.1仿真电路”文件夹,并把工程文件命名为“例3.1.pdsprj”。 图3.32New Project Wizard: Start对话框 (2) 单击Next按钮,弹出New Project Wizard: Schematic Design对话框,如图3.33所示。在该对话框中,选择一种设计模板Landscape A4,并选中Create a schematic from the selected template单选按钮。 图3.33New Project Wizard: Schematic Design对话框 (3) 下面一路单击Next按钮,直至最后一个对话框,单击Finish按钮,就新建了一个工程,并进入Proteus的工作界面,如图3.34所示。 图3.34Proteus的工作界面 2) 绘制电路原理图 (1) 把设计电路原理图所需的元件加到对象选择器窗格。本例用到的元件有单片机AT89C51、6位7段数码管和电阻。 在对象选择器窗格中,单击选择按钮,弹出Pick Devices对话框,如图3.35所示。在Keywords文本框中输入“AT89C51”,系统在设备库中进行搜索,并将搜索结果显示在Results列表框中,如图3.35所示。在Results列表框中双击AT89C51,把单片机AT89C51添加到对象选择器窗格。 图3.35Pick Devices对话框 在Keywords文本框中重新输入“7SEG”。在Results列表框中双击7SEGMPX6CABLUE,把6位共阳极蓝色7段数码管添加到对象选择器窗格。 在Keywords文本框中重新输入“RES”,勾选Match Whole Words复选框。在Results列表框中显示与RES完全匹配的搜索结果。在Results列表框中双击RES,将电阻RES添加到对象选择器窗格。 单击OK按钮,结束元件选择。经过以上操作,在对象选择器窗格中就有了AT89C51、7SEGMPX6CABLUE和RES三个元件。 (2) 放置元件。在对象选择器窗格中,选中AT89C51; 把光标移到电路原理图设计区,在准备放置元件的位置单击,即在该位置放置了一个AT89C51。 用同样的方法,可以把7SEGMPX6CABLUE和RES放置到电路原理图设计区。本例的电路原理图中有8个电阻,可以连续放置8个电阻,以提高效率。 (3) 电路原理图布局。电路原理图布局常常是通过移动元件实现的。在电路原理图中,如果某个元件的位置不合适,可以移动该元件。将光标移到元件上,右击,选中该元件。拖动鼠标,将元件移至新位置后,松开鼠标,即完成移动操作。布局之后的电路原理图如图3.36所示。 图3.36布局之后的电路原理图 (4) 绘制总线。单击对象选择工具栏中的“总线”按钮,使之处于选中状态; 将光标移到电路原理图设计区,单击,确定总线的起始位置; 沿着总线的路径移动鼠标,电路原理图设计区将出现一条蓝色的粗线,这就是总线; 在总线转弯处,单击; 到达总线的终止位置,双击,确认并结束绘制总线操作。 (5) 元件引脚连线。Proteus具有智能连线功能,在可能需要画线的地方进行自动检测。下面以电阻R1的右端连接到数码管的A端的操作为例,说明元件引脚连线的过程。 单击对象选择工具栏中的箭头按钮,把光标切换成箭头。此时,系统处于放置导线状态。当光标靠近R1右端的连接点时,光标上出现一个“×”号,表明捕捉到了R1的连接点,单击; 移动鼠标(不用拖动鼠标),当光标靠近数码管A端的连接点时,光标上出现一个“×”号,表明捕捉到了数码管的连接点; 单击,此时,就在两个引脚之间建立了连接。 用同样的方法,可以完成其他引脚的连线。在连线过程的任何时刻,按Esc键或单击鼠标右键,将放弃连线操作。 (6) 元件与总线的连线。元件与总线连线的关键是绘制总线分支线。首先关闭自动布线器,然后绘制总线分支线。 绘制导线之后的电路原理图如图3.37所示。 图3.37绘制导线之后的电路原理图 (7) 给总线分支线添加标签。单击对象选择工具栏中的“导线标签”按钮,使之处于选中状态; 将光标移到总线分支线上,光标上出现一个“×”号,表明捕捉到了可以标注的总线分支线; 单击,弹出Edit Wire Label对话框,如图3.38所示。 图3.38Edit Wire Label对话框 在String下拉列表框中输入标签名称,单击OK按钮,就给该总线分支线添加了标签。用同样的方法,可以给其他导线加标签。注意,在给导线加标签时,相互连接的导线必须具有相同的标签名称。 添加总线分支线标签之后的电路原理图如图3.39所示。 图3.39添加总线分支线标签之后的电路原理图 至此,整个电路原理图便绘制完成了。 3) 控制程序设计 在3.1.3节已经设计了6位数码管轮流显示的控制程序,并把Keil工程文件保存在文件夹“例3.1控制程序”。此处略。 4) 电路原理图与控制程序联合仿真 进入Proteus工作界面,打开工程“例3.1.pdsprj”。在电路原理图设计区,把光标移到AT89C51,双击,弹出Edit Component对话框,如图3.40所示。 图3.40Edit Component对话框 单击Program File文本框右侧的“打开”按钮,在弹出的对话框中,选择在Keil μVision5中生成的HEX文件“例3.hex”,单击OK按钮,把HEX文件添加到单片机中,作为仿真电路的控制程序。此时,便可实现电路原理图与控制程序的联合仿真了。 单击“仿真运行开始”按钮,观察每个引脚的电平变化,红色代表高电平,蓝色代表低电平。数码管轮流显示的运行结果如图3.41所示,6个数码管轮流显示0,1,…,5。 图3.41数码管轮流显示的运行结果 本例第一次使用数码管,读者只需初步了解其使用方法即可。关于数码管的详细介绍,参见7.2节。 习题 1. 自己动手,在计算机上安装Keil Cx51软件。 2. 自己动手,在计算机上安装Proteus软件。 3. 设计仿真电路原理图,并编写控制程序,使连接在P1.0上的LED点亮。