使用查询标志位的方法通过串行口发送C语言的经典语句“hello World!”,在PC上运行串口调试助手软件接收此消息并在屏幕上显示出来。单击“打开串口”按钮,这时会发现在串口调试助手的接收区有“hello World!”图9-29 串口调试助手向单片机发送数字单片机接收到来自PC发送的信息后,用LED灯显示该数字的状态,系统板的具体状态如图9-30所示。......
2023-11-17
Proteus是世界上著名的EDA工具(仿真软件),从原理图布图、代码调试到单片机与外围电路协同仿真,一键切换到PCB设计,真正实现了从概念到产品的完整设计。是目前世界上唯一将电路仿真软件、PCB设计软件和虚拟模型仿真软件三合一的设计平台,其处理器模型支持8051、HC11、PIC10/12/16/18/24/30/DsPIC33、AVR、ARM、8086和MSP430等,2010年又增加了Cortex和 DSP系列处理器,并持续增加其他系列处理器模型。在编译方面,它也支持IAR、Keil和 MATLAB等多种编译器。
2.3.1 Proteus简介
Proteus软件是英国Lab Center Electronics公司出版的EDA工具。它不仅具有其他EDA工具的仿真功能,还能仿真单片机及外围器件。它是目前比较好的仿真单片机及外围器件的工具,目前已受到单片机爱好者、从事单片机教学的教师、致力于单片机开发应用的科技工作者的青睐。
Proteus可以用于模拟电路与数字电路的教学实验、单片机与嵌入式系统的教学实验、微控制器系统的综合实验、创新实验与毕业设计等。
在Proteus家族里,Proteus8.0是目前较新的版本,如果计算机上正确安装了Proteus软件,在桌面上会出现其快捷图标,双击它就可以启动Proteus8.0。启动后的界面如图2-29所示。
在图2-29所示的界面上单击“IsIs”图标,启动Proteus电路原理图设计,弹出的界面如图2-30所示。
图2-29 Proteus 8.0
图2-30 Proteus电路原理图设计
2.3.2 Proteus8.0的使用过程
打开Proteus 8 Professional软件,首先需要新建一个工程,由于本书是与PCB绘制教程相关联的,所以此时的工程是一个带有原理图、PCB和源代码编译部分的工程。
点击“File”,选择“New Project”,将出现新建工程向导部分,如图2-31所示。在此可以设置文件名(Name)和保存路径(Path),点击“Next”,在下一页的顶部选项卡中,选择“从选中的模板中创建原理图”(Create a Schematic from the selected template),在此可选择默认(DFAULT)。如果不需要绘制原理图,可直接选择“Do not create a schematic”,如图2-32所示。
图2-31 新建工程向导(一)
图2-32 新建工程向导(二)
继续点击“Next”,选择“从选择的模板中创建PCB设计”(Create a PCB layout from the selected template),在此可继续选择默认(DFAULT)。如果不需要进行PCB设计,可直接选择“Do not create a PCB layout”,如图2-33所示。
图2-33 新建工程向导(三)
由于本书需要仿真,所以继续点击“Next”,在仿真页面选择“Create Firmware Project”,并设置Family(系列)为8051,Contoller(控制器)为AT89C52,Compiler(编译器)为Keil for 8051,即在此设计外部代码编译器。如果不需要进行仿真,则可直接选择“No Firmware Project”即可,如图2-34所示。
图2-34 新建工程向导(四)
点击“Next”,出现Summary信息(见图2-35),点击“Finish”,新工程便创建完毕。此时的新工程包含原理图设计部分(见图2-36)、PCB 绘制部分(见图2-37)和源代码部分(见图2-38)。
图2-35 新建工程向导(五)
图2-36 原理图设计部分
图2-37 PCB绘制部分
2.3.3 在Proteus 中进行C语言代码的调试
Proteus8.0版本自身支持汇编语言、Keil for 51等,本书主要以Keil for 51为主,故先以Keil for 51语言为例。
Proteus8.0或以上版本自带源代码编辑、编译器,所以不再需要外部文本编辑器,具体操作界面如图2-38所示,在指定位置(Write your code here)进行编码。
图2-38 源代码部分
此时,编译器、原理图、源代码都已准备好,点击“Build”,选择“Build”下的“Build Project”或者“Rebuild Project”编译固件。
如果代码错误,系统会自动提示哪行代码出现错误,这和Keil软件是一样的。
同时,Proteus 8.0或以上版本支持C51语言的编译和调试,这需要计算机本身已经安装Keil或者IAR 等可以编译C51语言的软件。Proteus 自带汇编语言的编译器,如果想编译C51,则需要找到计算机中安装的编译环境,也可以到网上下载。
点击“Config”,在下拉菜单中选择“Compilers Configuration”,自动弹出如图2-39所示的界面。
图2-39 编译器配置
该对话框列出了所有支持的编译器,并指示是否被安装和配置。按下对话框底部的检查全部按钮(Check all),Proteus 将扫描计算机,检查安装好的编译器。如果找到Proteus支持的编译器,Proteus 将自动进行配置并在Proteus 中调用这些编译器编译源代码。其余的编译器,Proteus自动给出下载(Download)或者下载链接(Goto Website),读者可根据自身要求选择下载。值得注意的是,其中有些编译器的下载是需要收费的。
编译成功后,如果想观察代码的单步运行,则需要进行如下操作:
首先要确定Proteus 没有运行仿真,处于停止状态。然后通过“仿真控制面板”(见图2-40)暂停按钮启动仿真或暂停。
图2-40 仿真控制面板
2.3.4 Proteus8.0与Keil连接调试
Keil 是德国Keil 公司(现已被ARM公司收购)开发的 8051单片机软件开发平台,经过不断升级,现已经成为一个重要的单片机开发平台。Keil界面不复杂,操作也不困难,很多优秀程序都是在Keil的平台上编写出来的。Keil是一个重要的单片机语言开发软件平台,用户群极为庞大。
(1)Keil的uVision4可进行纯粹的软件仿真(仿真软件程序,不接硬件电路);也可以利用硬件仿真器,搭接上单片机硬件系统,在仿真器中载入项目程序后进行实时仿真;还可以使用uVision4的内嵌模块Keil Monitor-51,在不需要额外的硬件仿真器的条件下,搭接单片机硬件系统对项目程序进行实时仿真。
(2)uVision4调试器具备所有常规源代码级调试、符号调试特性及历史跟踪、代码覆盖、复杂断点等功能。Keil uVision4可以编辑、编译汇编语言、C51语言,连接定位目标文件和库文件,创建.hex文件,调试目标程序等。
在Proteus下完成原理图设计文件后,再在keil uVision4下编写C51程序,经过调试、编译最终生成.hex文件后,在Proteus下把.hex 文件载入虚拟单片机中,然后进行系统联调。如果要修改程序,需再回到keil uVision4界面下修改,再经过调试、编译,重新生成.hex文件,重复上述过程,直至系统正常运行为止。但是对于较为复杂的程序,如果没有达到预期效果,这时可能需要Proteus与Keil uVision4进行联合调试,联合调试的设置过程相对简单,读者可参考相关资料自行设置。
用Proteus软件进行单片机系统仿真设计,是虚拟仿真技术和计算机多媒体技术相结合的综合运用,有利于培养学生的电路设计能力及仿真软件的操作能力。在单片机课程设计和全国大学生电子设计竞赛中,使用Proteus 开发环境对学生进行培训,在不需要硬件投入的条件下,学生普遍反映,对单片机的学习比单纯学习书本知识更容易接受,更容易提高。实践证明,在使用Proteus进行系统仿真开发成功之后再进行实际制作,能极大提高单片机系统的设计效率。
2.3.5 简单实例掌握Proteus ISIS的用法
Proteus 8.0版本在新建项目时,默认是打开“原理图设计ISIS”“PCB布板ARES”和“源程序设计”的。对初学者来说,开始只学习“原理图设计ISIS”,在后期才学习“PCB布板ARES”,所以下面以完成任务2.1为例来学习Proteus ISIS的用法。
Proteus是一种集单片机仿真和SPICE分析于一身的仿真软件。其功能非常强大,不仅能仿真模拟电路、数字电路及模拟数字混合电路,更重要的是可以仿真51系列、AVR、PIC等常用主流单片机。
Protues提供了丰富的资源:
(1)Proteus拥有的元器件资源:Proteus可提供30多种元件库,超过8000种模拟、数字元器件。
(2)Proteus可提供的仿真仪表资源 :仿真仪器仪表的数量、类型和质量是衡量仿真实验室是否合格的一个关键因素。Proteus可提供常用的示波器(本文的实例中示波器被用来观察产生的波形)、逻辑分析仪、虚拟终端、SPI调试器、I2C调试器、信号发生器、模式发生器、交直流电压表、交直流电流表。
以下简要介绍Proteus中常用元器件和仿真仪表中英文对照表,见表2-1,使用时可通过查表快速输入元器件关键字来找到所需器件。
表2-1 proteus中常用元器件和仿真仪表中英文对照表
续表
(1)启动Proteus 8.0主页面,如图2-41所示。
图2-41 Proteus 8.0主页面(www.chuimin.cn)
(2)点击图2-41中的“ISIS”按钮,启动原理图绘制模式,如图2-42所示。
图2-42中,区域①为菜单栏,区域②为工具栏,区域③为对象选择器窗口和元器件预览区,区域④为编辑窗口,区域⑤为绘图工具栏,区域⑥为仿真运行工具条。
图2-42 Proteus原理图绘制主界面
(3)在图2-42 Proteus原理图绘制主界面中单击“保存(S)”按钮,弹出图2-43所示的“保存Proteus工程”对话框,在文件名称框内输入“2位信号灯交替闪烁控制电路原理图”,再单击保存,Proteus 8.0 ISIS的后缀名为.pdsprj。
图2-43 保存ISIS工程文件
(4)选取元器件。此简单实例需要下列元器件:
单片机:AT89C51。
发光二极管:LED-RED。
瓷片电容:CAP*。
电阻:RES*。
晶振:CRYSTAL。
按钮:BUTTON。
单击图2-42中的“P”按钮,弹出如图2-44所示的选取元器件对话框,在此对话框左上角“keywords(关键词)”一栏中输入元器件名称,如“AT89C51”,系统在对象库中进行搜索查找,并将与关键词匹配的元器件显示在“结果(Results)”中。在“结果(Results)”栏中的列表项中,双击“AT89C51”,则可将“AT89C51”添加至对象选择器窗口。按照此方法完成其他元器件的选取,如果忘记关键词的完整写法,可以用“*”代替,如“CRY*”可以找到晶振。被选取的元器件都加入ISIS对象选择器中,如图2-45所示。对一些常用器件,如果忘记关键词,还可以对照表2-1进行查阅。
图2-44 选取元器件
图2-45 选取的元器件均加入ISIS对象选择器中
(5)放置元器件至图形编辑窗口。
在对象选择器窗口中,选中“AT89C51”,将鼠标置于图形编辑窗口该对象欲放置的位置,单击鼠标左键,该对象被完成放置。同理,将BUTTON、RES等放置到图形编辑窗口中,如图2-46所示。
若元器件方向需要调整,先在ISIS对象选择器窗口中单击选中该元器件,再单击工具栏上相应的转向按钮,把元器件旋转到合适的方向后再将其放置于图形编辑窗口。
若对象位置需要移动,将鼠标移到该对象上,单击鼠标右键,此时我们已经注意到,该对象的颜色已变至红色,表明该对象已被选中,按下鼠标左键,拖动鼠标,将对象移至新位置后,松开鼠标,完成移动操作。
通过一系列的移动、旋转、放置等操作,将元器件放在ISIS编辑窗口中合适的位置,如图2-46所示。
图2-46 各元器件放在ISIS编辑窗口中合适的位置
(6)放置终端(电源、地)。
放置电源操作:单击工具栏中的终端按钮,在对象选择器窗口中选择“POWER”,再在编辑区中要放电源的位置单击完成。放置地(GROUND)的操作与此类似,如图2-47所示。
图2-47 放置终端符号
(7)元器件之间的连线。
Proteus的智能化可以在想要画线的时候进行自动检测。下面,我们来操作将电阻R1的右端连接到LED1显示器的左端,如图2-48所示。当鼠标的指针靠近R1右端的连接点时,跟着鼠标的指针就会出现一个符号,表明找到了R1的连接点,单击鼠标左键,移动鼠标(不用拖动鼠标),将鼠标的指针靠近LED1的左端的连接点时,跟着鼠标的指针就会出现一个
符号,表明找到了LED1显示器的连接点,单击鼠标左键完成电阻R1和LED1的连线。
图2-48 元器件之间连线
Proteus具有线路自动路径功能(WAR),当选中两个连接点后,WAR将选择一个合适的路径连线。WAR可通过使用标准工具栏里的“WAR”命令按钮来关闭或打开,也可以在菜单栏的“Tools”下找到这个图标。
同理,我们可以完成其他连线。在此过程的任何时刻,都可以按Esc键或者单击鼠标的右键来放弃画线。
(8)修改、设置元器件的属性。
Proteus库中的元器件都有相应的属性,要设置修改元器件的属性,只需要双击ISIS编辑区中的该元器件。例如,发光二极管的限流电阻R1,双击它将弹出如图2-49所示的属性窗口,在窗口中已经将电阻的阻值修改为330 Ω。图2-50是编辑完成的“简单实例”的电路。
图2-49 设置限流电阻为330Ω
图2-50 完成的实例电路图
(9)源程序设计与生成目标代码。
在Keil uVision中,我们已经学习了如何建立一个工程,并生成了.HEX文件,这个文件就是单片机仿真和实际下载所需要的文件。在这个案例中,要实现两个LED灯的闪烁控制,要在一个LED灯控制基础上进行修改,这样可以不断复习旧知识,学习新知识,在现有认知的基础上学习比从陌生基础上学习要容易得多。
另外,编写程序要从学习画程序流程图开始,从简单程序流程图开始画起,画得多了,慢慢就会编程了。
① 程序流程图(见图2-51)。
图2-51 2位LED灯闪烁控制流程图
② 源程序设计。
建立“flash2led.uvproj”项目,选择单片机型号,输入源程序(见任务 2.1),编译调试,生成.HEX文件,最终调试结果如图2-52所示。
图2-52 2位LED灯闪烁控制程序调试结果
(10)Proteus仿真。
① 加载目标代码文件。
在Proteus ISIS编辑窗口中,双击编辑窗口的“AT89C52”器件,在弹出的如图2-53所示的属性编辑对话框Program File一栏中单击打开按钮,出现文件浏览对话框,找到flash2 led.hex文件,单击“打开”按钮,完成添加文件。在“Clock frequency”栏中把频率设置为12 MHz,仿真系统则以12 MHz的时钟频率运行。因为单片机运行的时钟频率以属性设置中的“Clock frequency”为准,所以在编辑区设计MCS-51系列单片机系统电路时,可以略去单片机振荡电路,并且复位电路也可以略去。因此,后续项目开始就将振荡电路和复位电路省略。
图2-53 加载目标代码文件
② 仿真。
单击按钮,启动仿真,仿真运行片段如图2-54所示。发光二极管间隔500 ms闪烁。
图2-54 仿真运行片段
查看彩图:仿真运行片段
有关单片机原理与应用 基于C语言的文章
使用查询标志位的方法通过串行口发送C语言的经典语句“hello World!”,在PC上运行串口调试助手软件接收此消息并在屏幕上显示出来。单击“打开串口”按钮,这时会发现在串口调试助手的接收区有“hello World!”图9-29 串口调试助手向单片机发送数字单片机接收到来自PC发送的信息后,用LED灯显示该数字的状态,系统板的具体状态如图9-30所示。......
2023-11-17
表4-3 C51支持的数据类型续表注:数据类型中加底色的部分为C51语言扩展的数据类型。C51语言中使用的数据类型包括C语言中标准的数据类型和C51语言扩展的数据类型。C51语言扩展的数据类型有位类型、可位寻址的位类型、特殊功能寄存器和16位特殊功能寄存器型等。另外,C51语言还支持由基本数据类型组成的数组、结构体、联合体和枚举类型等结构类型数据。......
2023-11-17
其实,keil C51的调试模式间接地提供了程序延时的方法,下面通过实验来说明。因为Keil软件本身具备程序优化的功能,如果想在所有的代码位置都能设置断点,可以在工程选项里把优化等级设置为0,就是告诉Keil不要进行优化,如图4-29所示。......
2023-11-17
A.8 KBB.16 KBC.32 KBD.64 KB三、判断题1.8位二进制无符号数的大小范围是0~256。()2.CPU的时钟周期为振荡器频率的倒数。()4.计算机中机器码就是由若干位二进制数构成的。()5.51系列单片机的产品8051与8031的区别是:8031片内无ROM。()9.8位二进制数原码的大小范围是-127~+127。为什么在计算机系统中广泛使用二进制数?......
2023-11-17
在学习单片机的过程中,必须要强调动手的重要性。本节将从搭建8051单片机的最小系统开始,带你步入学习制作单片机的旅程。在单片机学习时常用的基础电路板有面包板、万能板和PCB板。镊子是用来夹住导线或元器件的引脚送入面包板指定位置的。要根据电路图确定元器件在面包板上的排列方式,目的是走线方便。......
2023-11-17
最小系统板上J1是预留的ISP下载接口,兼供电功能。表1-10 最小系统材料清单图1-45 最小系统板所用材料搭建最小系统所用的材料在电子市场上不难买到,价格也不贵。......
2023-11-17
要想在Proteus中对单片机的C程序进行调试与跟踪,单片机加载的程序必须要有可供调试的信息。Proteus软件支持的单片机仿真调试程序的格式有很多种,如ELF/DWARF、COFF、UBROF格式等,HEX格式的文件可以加载运行,但不能单步执行。请以上节中的仿真练习为例,初步学习Proteus中AVR单片机的C程序调试与跟踪,并在后面的编程学习过程中,能主动地通过C程序调试与跟踪来发现和解决程序中的问题。......
2023-11-26
ISP即在系统可编程,用几根下载线就可以对单片机进行程序下载,无需编程器,也不用将单片机取下,因此称之为在系统可编程。目前国内常用的下载软件可分为STC官方软件和开发板自己开发的软件。官方STC下载软件的下载过程如图2-26所示。图2-26 STC官方下载软件界面选择开发板上单片机的型号,这里选择STC90C516。......
2023-11-17
相关推荐