一、集成开发环境Keil C51
Keil C51是51单片机开发应用平台之一,它集编辑、编译、仿真于一体,支持汇编和C语言等程序设计语言,界面友好,易学易用。下面以闪光灯为例来介绍Keil μVision4程序编译和仿真过程。
图1.25 8051单片机最小系统的构成
1.运行Keil μVision4
屏幕显示如图1.26所示,几秒钟后出现编辑界面如图1.27所示。
图1.26 启动Keil C51时的屏幕
图1.27 进入Keil C51后的编辑界面
2.建立一个新项目
(1)创建新项目。
单击“Project”菜单,在弹出的下拉菜单中选中“New μVision Project”选项,如图1.28所示。
图1.28 New Project菜单
(2)保存项目。
选择要保存的路径,输入项目文件的名字,比如保存到Keil目录里,项目文件的名字为LED1如图1.29所示,然后点击保存。
图1.29 保存项目
(3)选择单片机型号。
在弹出的对话框中选择单片机的型号。Keil支持所有51内核的单片机,但在芯片选择对话框中找不到STC89C52,由于51内核的单片机具有通用性,在这可以选择Atmel公司的AT89C52(如图1.30所示)。选择AT89C52之后,右边一栏是对这个单片机的基本的说明,然后点确定,完成上一步骤后显示的项目窗口如图1.31所示。
图1.30 选取芯片
图1.31 项目窗口
3.编译程序
(1)创建源程序。
单击“File”菜单,再在下拉菜单中单击“New”选项如图1.32所示。
图1.32 新建文件
新建文件后出现程序编辑窗口如图1.33所示,此时的Text是系统默认文件名。
图1.33 新建文件窗口
(2)保存源程序。
单击“保存”按钮,若为C语言源程序扩展名必须为“.c”,如图1.34所示。先保存后编辑,Keil C51会自动识别关键字,并以不同的颜色提示用户加以注意,这样会使用户少犯错误,有利于提高编程效率。
(3)在项目中添加源程序文件。
回到编辑界面后,单击“Target 1”前面的“+”号,然后在“Source Group 1”上单击右键,在弹出的快捷菜单中选择“Add File to Group‘Source Group 1’”,如图1.35所示。
选中C源程序文件,然后单击“Add”,再点击“close”按钮,如图1.36所示。
图1.34 保存文件
图1.35 添加程序文件到项目文件中选项
图1.36 添加文件
程序文件添加到项目中后,如图1.37所示。
图1.37 添加程序文件到项目中
(4)编辑程序。
在程序编辑窗口中输入源程序后,保存程序文件。
(5)编译源程序。
①目标设置。用鼠标右键单击Target 1,在弹出的快捷菜单中选择“Option For Target‘Target 1’”选项,如图1.38所示。
之后弹出“Option For Target‘Target 1’”对话框,在Output选项中,选中“Create HEX File”,即编译时生成hex文件,用于烧写到芯片中,如图1.39所示。
②编译程序。在编辑窗口中输入程序,单击“Project”菜单,再在下拉菜单中单击“Built Target”选项(或者使用快捷键F7),编译程序直至成功,如图1.40所示。
4.仿真调试
单击“Debug”菜单,在下拉菜单中选择“Start/Stop Debug Session”选项,再单击“Peripherals”菜单,在此下拉菜单中选择“I/O-Port”中选择“Port2”,再单击“Debug”菜单,选择“Go”选项全速运行程序,可观察到图1.41所示的结果。
图1.38 Option For Target“Target 1”选项
图1.39 Output选项卡
图1.40 编译程序
二、仿真软件Proteus
Proteus软件是英国LabCenter Electronics公司开发的EDA工具软件,由ISIS和ARES两个软件构成,其中ISIS是一款电子系统仿真平台软件,ARES是一款布线编辑软件。Proteus集成了高级原理布线图、混合模式电路仿真、PCB设计以及自动布线来实现一个完整的电子设计。
图1.41 运行结果的I/O口仿真显示
1.Proteus主要功能及特点
(1)原理图绘制。
①有多个元器件库,拥有数千种元器件仿真模型;有形象生动的动态器件库、外设库。支持的单片机类型有:68000系列、8051系列、AVR系列、PIC系列、MSP430系列、Z80系列、HC11系列以及各种外围芯片。还可创建新元件,也可导入第三方发布的仿真器件。
②具有自动连线功能,使连接导线简单快捷。
③支持总线结构,使用总线器件和总线布线使电路设计简明清晰,节省了绘图所需要的时间和空间。
④ISIS的ERC报告可以列出可能的连线错误,如未连接的输入、矛盾的输出及未标注的网络标号。
(2)电路仿真。
①混合仿真:实现数字/模拟电路的混合仿真。
②单片机与外围电路的协同仿真:可以仿真51系列、AVR、PIC、ARM等常用主流单片机;还可以直接在基于原理图的虚拟原型上编程,再配合显示及输出,能看到运行后输入输出的效果。
③仿真显示:用色点显示引脚的数字电平,导线以不同颜色表示其对地电压大小,电机、显示、键盘等动态器件显示直观、生动。
④有多样的激励源:如直流、正弦、脉冲信号,用于电路的测试。
⑤提供了多种虚拟仪器:面板操作逼真,如示波器、信号发生器、直流电压/电流表、交流电压/电流表等。
⑥图形仿真功能:能够将线路上变化的信号,以图形的方式实时地显示出来,可以精确分析电路的多项指标。
⑦在编译及调试方面:能够支持单片机汇编语言的编辑、编译、源码级仿真,内带8051、AVR、PIC的汇编编译器,也可以与第三方集成编译环境(如Keil)结合,进行高级语言的源码级仿真和调试。
(3)PCB设计。
原理图设计完成后,一键便可进入ARES的PCB设计环境,Proteus库中数千种仿真模型是依据生产企业提供的数据来建模的,因此,Proteus设计与仿真极其接近实际。
Proteus不仅可将电路功能形象化,也可将电路运行过程形象化。实践证明:Proteus是单片机应用产品研发的灵活、高效的设计与仿真平台,它明显提高了研发效率,缩短了研发周期,节约了研发成本。
2.Proteus工作界面
运行ISIS Professional,就进入了Proteus ISIS的工作界面,如图1.42所示。Proteus ISIS的工作界面是一种标准的Windows界面,包括标题栏、主菜单、标准工具栏、模式选择工具栏、方向控制工具栏、对象选择工具栏、仿真控制工具栏、状态栏、预览窗口、对象列表窗口、编辑窗口。
图1.42 ISIS启动界面
(1)主菜单。
Proteus ISIS的主菜单包括如下12个菜单项,分别是:文件(File)、浏览(View)、编辑(Edit)、工具(Tools)、设计(Design)、图形(Graph)、源文件(Source)、调试(Debug)、库文件(Library)、模板(Template)、系统(System)、帮助(Help)等。
(2)模式选择工具栏。
操作之前,必须选择相应的模式。
①主要模式(Main Modes)。
·选择模式;
·选择元件(Components)(默认选择的);
·放置节点;
·标注线段或网络名;
·输入文本;
·绘制总线;
·放置子电路。
②配件(Gadgets)。
·终端接口:在对象选择器中列出各终端;
·器件引脚:用于绘制各种引脚;
·仿真图表:用于各种分析;
·录音机;
·信号发生器:在对象选择器中列出各种激励源;
·电压探针:电路进行仿真时可显示各探针处的电压值;
·电流探针:电路进行仿真时可显示各探针处的电流值;
·虚拟仪器:在对象选择器中列出各种虚拟仪器。
③2D图形(2D Graphics)。
·画各种直线;
·画各种方框;
·画各种圆;(www.daowen.com)
·画各种圆弧;
·画各种多边形;
·画各种文本;
·画符号;
·画原点等。
(3)对象选择工具栏。
通过对象选择按钮P,从元件库中选择对象,并置入对象选择器窗口,供今后绘图时使用。
库管理按钮L,对元器件进行删减编辑。
(4)对象列表窗口。
用于显示所选的元器件(Components)或所要选择的终端接口(Terminals)、虚拟仪器、仿真图表(Graph)等。
(5)原理图编辑窗口。
蓝色方框内为可编辑区,电路要绘制在此区域内,否则系统不识别。
(6)预览窗口。
它可显示两个内容,一个是:当你在元件列表中选择一个元件时,它会显示该元件的预览图;另一个是:当你的鼠标焦点落在原理图编辑窗口时,它会显示整张原理图的缩略图,并会显示一个绿色的方框,绿色方框里面的内容就是当前原理图窗口中显示的内容,因此,你可通过用鼠标在它上面点击来改变绿色方框的位置,从而改变原理图的可视范围。
(7)方向工具栏。
旋转:旋转角度只能是90的整数倍。
翻转:完成水平翻转和垂直翻转。
使用方法:先右键单击元件,再点击(左击)相应的旋转图标。
(8)仿真工具栏。
仿真控制按钮:分别是运行、单步运行、暂停、停止。
(9)状态栏。
显示仿真信息、鼠标的状态、鼠标的坐标等。
3.绘制原理图
(1)元器件的添加和放置。
点击模式选择工具栏中的元器件选择按钮,再点击对象选择器左边中间的P按钮,出现“Pick Devices”对话框。
在这个对话框里我们可以选择元器件。选择元器件的方法有两种,一种是通过种类选择,以添加单片机AT89C52为例来说明怎么把元器件添加到编辑窗口。在“Gategory”(器件种类)下面,找到“MicoprocessorIC”选项,用鼠标左键点击一下,在对话框的右侧有大量常见的各种型号的单片机,找到AT89C52单片机,双击“AT89C52”。这样在对象列表中就有了AT89C52这个元件。如图1.43所示,另一种是输入关键字选择,以选择按钮为例,在Keywords中输入button,则在results窗口中点击一下这个元件确定,这样被选中的就会出现在对象列表中,供以后绘制原理图时使用。
图1.43 选取元器件窗口中的元器件列表
在对象列表窗口中选中要放置的元器件后,把鼠标指针移到右边的原理图编辑区的适当位置,点击鼠标左键,就放到了原理图区中。
(2)放置电源及接地符号。
单击工具箱的终端按钮,对象选择器中将出现一些接线端,如图1.44所示。
在器件选择器里分别点击图1.44左侧的“TERMNALS”栏下的“POWER”与“GROUND”,再将鼠标移到原理图编辑区,单击左键即可放置电源符号,同样也可以把接地符号放到原理图编辑区。放置的元器件及电源和地符号如图1.45所示。
图1.44 放置电源和接地符号
图1.45 元器件及电源和地布置图
(3)对象的编辑。
调整对象的位置和放置方向以及改变元器件的属性等,有选中、删除、拖动等基本操作。
拖动标签:许多类型的对象有一个或多个属性标签附着。可以很容易地移动这些标签使电路图看起来更美观。移动标签的步骤如下:首先点击鼠标右键选中对象,然后用鼠标指向标签,按下鼠标左键。一直按着左键就可以拖动标签到需要的位置,释放鼠标即可。
编辑对象的属性:对象一般都具有文本属性,这些属性可以通过一个对话框进行编辑。编辑单个对象的具体方法是:先点击鼠标右键选中对象,然后用鼠标左键点击对象,此时出现属性编辑对话框。也可以点击工具箱的按钮,再点击对象。编辑对话框如图1.46所示。在电阻属性的编辑对话框里,可以改变电阻的标号、电阻值、PCB封装以及是否把这些东西隐藏等,修改完毕,点击“OK”按钮即可(其他元器件操作方法相同)。
图1.46 电阻的属性对话框
(4)连接电路。
①元器件之间的连线。
当鼠标的指针靠近元器件管脚时,鼠标的指针就会出现一个“×”号,表明找到了导线起点。单击鼠标左键,移动鼠标至另一元器件的连接管脚时,鼠标的指针就会出现一个“×”号,表明找到了导线终点,单击鼠标左键即可完成元器件之间的连线。绘制的单片机最小系统如图1.47所示。Microproccessor ICs类芯片的引脚与实际的芯片基本相同,唯一的差别是隐去了GND和VCC引脚,系统默认的是把它们分别连接到地和+5V直流电源。故在电路连线时可以不考虑电源和地的连接。为了快速进行仿真,系统所需的时钟电路,复位电路可以省略。
图1.47 单片机最小系统
②放置总线和总线连接。
单击绘图工具栏中的总线按钮,使之处于选中状态。将鼠标置于图形编辑窗口,单击鼠标左键,确定总线的起始位置;移动鼠标,屏幕出现粉红色细直线,找到总线的终点位置,单击鼠标左键,再单击鼠标右键,以表示确认并结束画总线操作。
总线与元件管脚之间的连线称为总线分支线,画总线分支线的时候为了和一般的导线区分,一般可选择斜线来表示分支线,只需在想要拐点处单击鼠标左键即可。
总线分支线需要添加导线标签才能保证连接有效。单击绘图工具栏中的导线标签按钮,找到要标注的导线,单击鼠标左键,弹出编辑导线标签窗口,在“string”栏中,输入标签名称,如图1.48中的“a”,单击“OK”按钮即可。注意,相互接通的导线必须标注相同的标签名。
图1.48 总线连接
③放置线路节点。
如果在交叉点有电路节点,则认为两条导线在电气上是相连的,否则就认为它们在电气上是不相连的。PROTEUS ISIS在画导线时能够智能地判断是否要放置节点。但在两条导线交叉时是不放置节点的,这时要想两个导线电气相连,只能手动放置节点。点击工具箱的节点放置按钮“+”,当把鼠标指针移到编辑窗口,指向一条导线的时候,会出现一个“×”号,点击左键就能放置一个节点。
4.Proteus仿真
(1)加载可执行程序文件。
在Proteus中,电路连接完成后,选中AT89C52单击鼠标左键,打开“Edit Component”对话窗口,如图1.49所示,可以直接在“Clock Frequency”后进行频率设定,如设置单片机的时钟频率为12MHz。在“Program File”栏中选择已经生成的*.hex文件(如闪光灯控制程序LED1.hex),然后单击“OK”按钮保存设计。
图1.49 单片机属性的设定
(2)仿真运行。
Proteus ISIS主界面左下角的仿真进程控制按钮。点击“运行”按钮,可启动仿真观察电路工作情况。
5.Keil与Proteus仿真联调
Keil与Proteus可以实现联合调试,联合调试之前需要先安装vdmag.exe,之后在Proteus和Keil中进行相应设置。过程如下:
(1)在Proteus的菜单栏中,选择Debug→Use Remote Debug Monitor。
(2)在Keil的菜单栏中,选择Project→Options for Target'Target,打开项目选项对话框,选中“Debug”选项卡,再选择该选项卡右边的“Use”,并选中下拉框中的“Proteus VSM Simulator”。
(3)在Keil的菜单栏中,选择Debug→Start/Stop Debug Session,就进入了程序调试状态。
Keil和Proteus两个软件是学习单片机时常用的两个软件,至此我们学习了它们的使用及联合调试的步骤。这两个软件的联合使用可使我们把单片机硬件和程序编写紧密结合起来,对单片机应用系统的开发过程进一步熟悉。
三、程序下载
ISP(In-System Programming)即在线系统编程。具有ISP功能的单片机芯片,可以通过简单的下载线直接在电路板上给芯片写入或者擦除程序,并且支持在线调试。
本下载部分采用了两种ISP下载线接口,分别是USB-TTL(4线)和USBASP(10线)接口,用于STC89C和AT89S系列单片机的程序下载。
1.STC-ISP下载
(1)下载器。
采用标准的USB-TTL下载接口,转换芯片为CH340,TTL接口由VCC、TXD、RXD、GND四根输出排针组成,可以用来下载STC系列单片机,下载器如图1.50所示。
下载前要将下载器VCC、GND与STC单片机的目标系统板的VCC、GND对应连接,下载器的TXD、RXD与STC与单片机的目标系统板的TXD、RXD要交叉连接,同时要保证单片机系统板完善无功能性异常。
(2)程序下载。
STC-ISP是宏晶科技开发的用于STC单片机下载的软件,使用简单、方便,已被广泛使用。运行STC-ISP软件(如stc-isp v6.85),会弹出如图1.51所示的软件界面。程序下载步骤如下:
第一步,选择单片机型号。在“单片机型号”下拉列表框中选择相应的芯片型号,这里选择了制作中使用的单片机STC89C52RC,如图1.52所示。
图1.50 STC单片机下载器
图1.51 STC-ISP软件界面
图1.52 选择单片机型号
图1.53 查看串行口
第二步,查看串行口号。安装完驱动,下载器接入的COM口本软件能自动识别,如果出现问题,点击“扫描”按钮可查看选择,如图1.53所示。
第三步,打开程序文件。此处点击“打开文件”按钮选择需要下载的.hex目标文件,如这里打开的是本项目已生成的LED1.hex文件,如图1.54所示。
图1.54 加载hex文件
第四步,将程序下载到单片机中。接通目标板电源,点击“下载/编程”按钮,这时在下载提示框中会显示下载进程提示,若下载程序后,显示“操作成功!”,则说明已经给单片机成功下载了程序,如图1.55所示。
图1.55 STC-ISP下载成功界面
闪光灯LED1.hex程序下载后,系统运行图如图1.56所示。
图1.56 闪光灯程序下载后的运行图
2.USBASP下载器
支持AT89S系列及AVR芯片的烧录,使用IDC10接口,在对芯片编程时,可以使用目标板本身电源,也可用USB电源和目标板一起给目标板供电,下载完成不影响目标板的运行。
接口定义如图1.57、表1.8所示。
图1.57 IDC10接口定义
表1.8 AT89S51相关引脚与下载线对应连接定义
USB接口的下载线如图1.58所示。
图1.58 USBISP接口的下载线
下载前,将下载线一端与计算机USB口相连,另一端10PIN插头插入目标电路板的ISP口,然后给目标板上电。连接过程一定要保证目标板和计算机可靠连接。
AVR_fighter是超强的AVR、AT系列单片机ISP下载编程软件,它支持所有的AVR芯片的编程,支持AT89S51/AT89S52。使用AVR_fighter下载软件操作步骤:
第一步,运行AVR_fighter,主界面如图1.59所示,在芯片选择框选择跟目标板一样的MCU型号,如AT89S52。
第二步,点击左上角的“装flash”按钮,将要下载的文件加载到软件中。装入flash以后可以在软件界面中看到flash大小,最下面状态栏显示有flash的绝对路径。
第三步,点击“编程”按钮。如果看到进度条移动,那么说明USB下载线及其跟目标板的连接正确无误,程序正在下载到目标芯片中,完成之后会有声音提示,至此整个下载过程完成。
图1.59 USBASP下载程序
免责声明:以上内容源自网络,版权归原作者所有,如有侵犯您的原创版权请告知,我们将尽快删除相关内容。