首页 理论教育 单片机开发工具的使用-单片机原理与接口技术

单片机开发工具的使用-单片机原理与接口技术

时间:2023-11-16 理论教育 版权反馈
【摘要】:单片机不能单指某一特定型号,而没有使用功能。如何正常的使用各个品种的单片机,并且涵盖单片机行业的需要,也使得现在单片机的使用除了硬件开发外,多数已向开发工具的使用上产生了变化。4 Proteus单片机仿真软件开发工具Proteus是英国Labcenter electronics公司研发的世界上著名的EDA工具,从原理图布图、代码调试到单片机与外围电路协同仿真,一键切换到PCB设计,真正实现了从概念到产品的完整设计。

单片机开发工具的使用-单片机原理与接口技术

从1976年起迄今为止,世界各地厂商已相继研制出大约50个系列300多个品种的单片机产品。单片机不能单指某一特定型号,而没有使用功能。因此单片机的发展仍然向各个方向不断变化,新的功能应用、结构搭配变化还在继续。如何正常的使用各个品种的单片机,并且涵盖单片机行业的需要,也使得现在单片机的使用除了硬件开发外,多数已向开发工具的使用上产生了变化。

单片机的发展趋势是高集成度、高性能、低功耗。单片机从SCM结构变化,趋向微控制器MCU,如图1-5所示。

978-7-111-54295-7-Chapter01-9.jpg

图1-5 单片机结构示意图

1 单片机设计应用

单片机使用并非只有一片单片机即可,单片机的设计应用必须根据总体设计中确立的功能特性要求,确定单片机的型号、所需外围扩展芯片存储器、I/O电路、驱动电路等,可能还有A-D和D-A转换电路以及其他模拟电路,由此设计出应用系统的电路原理图。从原理图制作出PCB才能真正实现单个功能或功能模块使用的单片机系统,并最终应用于综合领域,且具有特定的功能和特点。

80C51单片机的P0和P2口作为数据和地址总线,一般可驱动数个外接芯片(视外接芯片要求的驱动电流而异),也即P0和P2口的驱动能力还是有限的。如果外接的芯片过多,负载过重,系统将可能不能正常工作,此时必须加接缓冲驱动器予以解决。通常使用74HC573作为地址总线驱动器,使用74HC245双向驱动器作为数据总线驱动器。

2 单片机硬件应用原理

单片机硬件组成部分的用途都是指定的。单片机硬件几个主要组成部分用途简述如下:

1)程序存储器(ROM):用来存放用户程序,可分为EPROM、Mask ROM、OTP ROM和Flash ROM等。

2)中央处理器(CPU):是单片机的核心单元,通常是由算术逻辑运算部件(ALU)和控制部件构成。

3)随机存储器(RAM):用来存放程序运行时的工作变量和数据,由于RAM的制作工艺复杂,价格比ROM高得多,所以单片机的内部RAM非常宝贵,通常仅有几十到几百字节。

4)并行输入/输出(I/O)端口:通常为独立的双向I/O接口,任何口既可以用作输入方式,又可以用作输出方式,通过软件编程设定。

5)串行输入/输出(I/O)端口:用于单片机和串行设备或其他单片机的通信

6)定时器/计数器(T/C):用于单片机内部精确定时或对外部事件(输入信号如脉冲)进行计数,有的单片机内部有多个定时/计数器。

7)系统时钟:通常需要外接石英晶体或其他振荡源提供时钟信号输入,也有的使用内部RC振荡器,系统时钟相当于PC中的主频。硬件原理如图1-6所示。

978-7-111-54295-7-Chapter01-10.jpg

图1-6 硬件原理(RAM、I/O、T/C、INT、UART)

由于单片机体积小,具有温度范围宽、抗干扰能力强的特点,单片机在实时控制系统有着极为广泛的应用。

3 单片机软件应用

单片机软件应用并不单纯只看见软件界面的应用,系统周边包括了系统资源、应用人员、外围设备(接口、显示等)、通信等。除了可以看到的整体连接,如图1-7所示,整个软件应用系统可分成几个步骤来完成操作。

978-7-111-54295-7-Chapter01-11.jpg

图1-7 单片机软件应用连接示意图

(1)系统资源分配

在单片机应用系统的开发中,软件的设计是最复杂和困难的,大部分情况下工作量都较大,特别是对那些控制系统比较复杂的情况。如果是机电一体化的设计人员,往往需要同时考虑单片机的软硬件资源分配。在考虑一个应用工程项目时就需要先分析该系统要完成的任务,明确软硬件哪个承担哪些工作。

(2)程序结构

在单片机的软件设计中,任务可能很多,程序量很大,在这种情况下一般都需把程序分成若干个功能独立的模块,这也是软件设计中常用的方法,即俗称的化整为零的方法。对于复杂的多任务实时控制系统,一般要求采用实时任务操作系统,并要求这个系统具备优良的实时控制能力。

(3)数学模型

一个控制系统的研制,明确了各部分需要完成的任务后,设计人员必须进一步分析各输入/输出变量的数学关系,即建立数学模型。这个步骤对于较复杂的控制系统是必不可少的,而且不同的控制系统,它们的数学模型也不尽相同。

(4)程序流程

较复杂的控制系统一般都需要绘制一份程序流程图,可以说它是程序编制的纲领性文件,可以有效地指导程序的编写。

(5)编制程序

上述的工作完成后,就可以开始编制程序了。过去单片机应用软件以汇编语言为主,如图1-8所示,因为它简洁、直观、紧凑,使设计人员乐于接受。而现在高级语言在单片机应用软件设计中发挥了越来越重要的角色,性能也越来越好,C语言已成为现代单片机应用系统开发中较常用的高级语言,如图1-9所示。但不管使用何种语言,最终还是需要翻译成机器语言,调试正常后,通过烧录器固化到单片机或片外程序存储器中。

978-7-111-54295-7-Chapter01-12.jpg

图1-8 汇编语言程序示例

978-7-111-54295-7-Chapter01-13.jpg

图1-9 C51语言程序示例

当用户目标系统设计完成后,还需要应用软件支持,用户目标系统才能成为一个满足用户要求的单片机应用系统。但该用户目标系统不具备自开发能力,需要借助于单片机仿真器(也称单片机开发系统)完成该项工作。

4 Proteus单片机仿真软件开发工具

Proteus是英国Labcenter electronics公司研发的世界上著名的EDA工具(仿真软件),从原理图布图、代码调试到单片机与外围电路协同仿真,一键切换到PCB设计,真正实现了从概念到产品的完整设计。Proteus支持8051、AVR、ARM、8086和MSP430等处理器模型,2010年即增加Cortex和DSP系列处理器,并持续增加其他系列处理器模型。在编译方面,它也支持IAR、MPLAB和Keil等多种编译器。

Proteus软件由智能原理图输入系统(Intelligent Schematic Input System,ISIS)和高级布线与编辑软件(Advanced Routing and Editing Software,ARES)两大功能于一体的电子设计系统组成。智能原理图输入系统,用于电路原理图设计、单片机编程调试及仿真运行,如图1-10所示。

978-7-111-54295-7-Chapter01-14.jpg

图1-10 Proteus原理图输入系统(ISIS)界面

高级布线与编辑软件用于印制电路板的设计,如图1-11所示。

978-7-111-54295-7-Chapter01-15.jpg

图1-11 Proteus高级布线与编辑软件(ARES)界面

Proteus可以对基于微控制器的设计连同所有的周围电子器件一起仿真。用户甚至可以实时采用诸如LED/LCD、键盘、RS232终端等动态外设模型来对设计进行交互仿真,如图1-12所示。Proteus支持的微处理芯片(Microprocessors ICs)现已经包括8051系列、AVR系列、PIC系列、HC11系列、ARM7/LPC2000系列以及Z80等,见表1-5。

978-7-111-54295-7-Chapter01-16.jpg

图1-12 软件应用接口系统电路原理图

表1-5 Proteus支持的单片机模型

978-7-111-54295-7-Chapter01-17.jpg

Proteus能够对多种系列众多型号的单片机进行实时仿真、协调仿真、调试与测试,见表1-6。

表1-6 Proteus支持的单片机模型功能

978-7-111-54295-7-Chapter01-18.jpg

Proteus软件的ISIS界面如图1-13所示。

978-7-111-54295-7-Chapter01-19.jpg

图1-13 ISIS操作窗口

如图1-13所示,窗口内各部分的功能用中文作了标注。Proteus的ISIS系统大部分操作与Windows的操作类似。

主菜单包括File菜单项、View菜单项、Edit菜单项和Design菜单项等。每个菜单项的打开与关闭,可通过View/Toolbars...命令进行设置。

快捷工具栏分为主工具栏和元器件工具栏:主工具栏包括文件工具、视图工具、编辑工具、设计工具4个部分,每个工具栏提供若干个快捷按钮;元器件工具栏包括方式选择、配件模型、绘制图形3个部分,每个工具栏提供若干个快捷按钮。

添加元件操作如图1-14所示,选取元器件可以通过菜单栏或快捷按钮等方式操作,元器件选择添加完成后可通过属性选项卡编辑其属性,如图1-15和图1-16所示。(www.xing528.com)

978-7-111-54295-7-Chapter01-20.jpg

图1-14 元器件选取对话框

978-7-111-54295-7-Chapter01-21.jpg

图1-15 Edit Component对话框

978-7-111-54295-7-Chapter01-22.jpg

图1-16 选择AT89C52属性并加载程序文件

Proteus ISIS自动写出直线路径,线路自动路径器为用户省去了必须标明每根线的具体路径的麻烦,自动接线功能默认是打开的,只需单击连接点相连,如果用户只在两个连接点单击,自动接线将选择一个合适的走线方式。但是如果已选择了一个连接点,用户在走线过程中,单击了一个或多个非连接点后,Proteus ISIS会认为用户是在手工定线。

5 Keil C51软件

Keil C51软件是目前最流行的C51集成开发环境(IDE),它支持众多的MCS-51架构的芯片,集编辑、编译、仿真于一体。Keil C51提供了包括C编译器、宏汇编、连接器、库管理和一个功能强大的仿真调试器等在内的完整开发方案,然后通过一个集成开发环境(μVision IDE)将这些部分组合在一起。Keil μVision集成开发环境是Keil Software公司发布的,Keil μVision4还支持软件模拟仿真(Simula-tor)和用户目标板调试(Monitor51)两种工作方式。在软件模拟仿真方式下不需任何51单片机及其外围硬件即可完成用户程序仿真调试。

Keil C51支持C51及汇编编程,界面友好,易学易用。Keil μVision3的工作界面如图1-17所示。下面通过简单的编程、调试,说明Keil C51软件的基本使用方法和基本的调试技巧。

Keil C51是Windows版的软件,不管使用汇编语言还是C语言编程,也不管是一个还是多个文件的程序,都先要建立一个工程文件。没有工程文件,将不能进行编译和仿真。新建项目对话框如图1-18所示。

978-7-111-54295-7-Chapter01-23.jpg

图1-17 Keil μVision3软件工作界面

978-7-111-54295-7-Chapter01-24.jpg

图1-18 新建项目对话框

这时会弹出一个对话框,要求选择单片机的型号,如图1-19所示。先选择Atmel公司,再选择AT89C51。然后单击“确定”按钮,弹出将8051初始化代码复制到项目中的询问窗口,单击“Y”按钮。如果使用汇编语言,又不需要初始化51内存,选择“否”。如果使用C语言,需要初始化内存,硬件设计时添加了扩展内存,要精心调整启动代码参数,选择“是”。

新建项目后软件出现Keil μVision3界面图,新建一个源程序文件。建立一个汇编或C文件,如果已经有源程序文件,可以忽略这一步。选择File/New命令,在弹出的程序文本框中输入一个简单的程序,保存文件。如果用C语言编写程序,则扩展名为“.c”;如果用汇编语言编写程序,则扩展名必须为“.asm”。STC单片机编译的目标文件为HEX文件,该文件包含了在单片机上可执行的机器代码,这个文件经过烧写软件下载到单片机Flash ROM中就可以运行了。

978-7-111-54295-7-Chapter01-25.jpg

图1-19 Select Device for Target对话框

然后要将程序文件加入到项目中,右击左边项目窗口中的“Source Group 1”,在弹出的快捷菜单中选择Add Files to Group‘Source Group 1’命令,如图1-20所示。选择刚才建立的文件,如图1-21所示。这时在Source Group 1里就有程序汇编或者C文件和事先建立项目时已经加入的文件STARTUP.A51。

分别设置Output选项卡和Debug选项卡,如图1-22和图1-23所示,产生执行文件,并选择仿真的方式。

生成可执行代码文件(Creat Hex File)默认情况下没有被选中,用于生成编程器写入单片机芯片的HEX格式文件,如果要写片进行硬件实验,就必须选中该项。这一点是初学者易疏忽的。

978-7-111-54295-7-Chapter01-26.jpg

图1-20 添加文件到Group

978-7-111-54295-7-Chapter01-27.jpg

图1-21 选择文件类型

978-7-111-54295-7-Chapter01-28.jpg

图1-22 产生执行文件

978-7-111-54295-7-Chapter01-29.jpg

图1-23 选择仿真方式

编译连接程序,选择Project/Rebuild all target files命令,如果没有错误,则编译连接成功,开发环境右下角信息框会显示编译连接成功的信息。

编译完毕之后,选择Debug/Start/Stop Debug Session命令,即进入Debug调试环境。

行的代码的编译和连接,只能确定源程序没有语法错误。至于源程序中是否存在错误,必须通过反复调试才能发现,这样使调试过程变得麻烦。为此Keil软件提供了在线汇编的功能。把光标放在需要修改的程序行上,选择Debug/Inline Assembly…命令。在Enter New后面的编辑框内输入新的程序语句,输入完后按Enter键将自动指向下一条语句,可以继续修改。如果不再需要修改,单击右上角的关闭按钮关闭窗口。

程序调试时,一些程序行必须满足一定的条件才能被执行到,这时就要用到程序调试中一种非常重要的方法——断点设置。断点设置的方法有多种,常用的是在某一程序行设置断点,设置好断点后可以全速运行程序,一直执行到该程序行即停止,可再次观察有关变量值,以确定问题所在。

获得了名为∗.hex的文件,可被编程器读入并写到芯片中,同时还产生了一些其他相关文件,可被用于Keil的仿真与调试,这时可以进入下一步调试的工作。

用MCS-51使用C51编程必须与单片机存储器结构相关联,否则编译器就不能正确地映射定位。这是用C51编写的程序与标准C程序编写的不同之处。

51系列单片机的生产厂家有多个,它们的差异在于内部资源如定时器、中断、I/O等数量以及功能的不同,而对使用者来说,只需要将相应的功能寄存器的头文件加载在程序内,就可实现所具有的功能。因此,C51系列的头文件集中体现了各系列芯片的不同资源及功能。

Keil软件在调试程序时提供了多个窗口,主要包括输出窗口(Output Windows)、观察窗口(Watch&Call Stack Windows)、存储器窗口(Memory Windows)、反汇编窗口(Dissambly Windows)和串行窗口(Serial Windows)等,如图1-24所示。

存储器窗口中可以显示和修改系统中各种内存中的值,如图1-25所示。通过在Address编辑框内输入“字母:数字”即可显示相应内存值,其中字母可以是C、D、I、X,分别代表程序存储空间、直接寻址的片内存储空间、间接寻址的片内存储空间、扩展的外部RAM空间,数字代表想要查看的地址。例如,输入“D:0”即可观察到地址0开始的片内RAM单元值;输入“C:0”即可显示从0开始的ROM单元中的值,即查看程序的二进制代码。该窗口的显示值可以以各种形式显示(如十进制十六进制字符型等),改变显示方式的方法是单击鼠标右键,在弹出的快捷菜单中选择。该菜单用隐形线条分隔成上中下三部分(见图1-25),其中第一部分与第二部分的三个选项为同一级别。

978-7-111-54295-7-Chapter01-30.jpg

图1-24 Keil μVision3的窗口界面

978-7-111-54295-7-Chapter01-31.jpg

图1-25 存储器窗口及数据显示方式的下拉菜单

选中第一部分的任一选项,内容将以整数形式显示,其中,Decimal项是一个开关,如果选中该项,则窗口中的值以十进制的形式显示,否则按默认的十六进制方式显示。Unsigned和Signed分别代表无符号、有符号形式,其后均有三个选项,即Char、Int、Long,分别代表以用户设置的单元开始,以单字节、整数型、长整数型数方式显示。以整型为例,如果输入的是I:0,那么00H和01H单元的内容将会组成一个整型数。默认以无符号单字节方式显示。

第二部分有三项:Ascii项是字符形式显示;Float项是将相邻4字节组成浮点数形式显示;Double是将相邻8字节组成双精度形式显示。

第三部分的Modify Memory at X:xxx用于更改鼠标处的内存单元值。选中该项即出现对话框,可以在对话框内输入新的值、单个字符加单引号、字符串加双引号,从指定单元开始存放。

由于工程窗口中仅可以观察到工作寄存器和有限的寄存器,如A、B、DPTR等,如果需要观察其他寄存器的值或者在高级语言编程时需要直接观察变量时,就要借助于观察窗口。选择View/Watch and call stack Windows命令即可弹出观察窗口,如图1-26所示,按功能键F2可输入观察对象的名称。一般情况下,仅在单步执行时才对变量值的变化感兴趣,全速运行时,变量的值是不变的,只有在程序停下来之后,才会将这些值最新的变化反映出来。但是,若选择View/Pe-riodic Windows Update(周期更新窗口)命令,则在全速运行时也能观察到变量的变化,但其将使程序模拟执行的速度变慢。

工程寄存器页的内容包括了当前的工作寄存器组和系统寄存器组。系统寄存器组有一些是实际存在的寄存器,如a、b、dptr、sp、psw等,有一些是实际中并不存在或虽然存在却不能对其操作的,如PC、states等。每当程序中执行到对某寄存器的操作时,该寄存器会以反色显示,用鼠标左键双击即可修改该值。

978-7-111-54295-7-Chapter01-32.jpg

图1-26 工程窗口

通过Peripherals菜单项,Keil提供了单片机中的定时器、中断、并行端口、串行口等常用外设接口对话框。这些对话框只有在调试模式才能使用,且内容与用户建立项目时所选的CPU有关。打开这些对话框,列出了外围设备的当前使用情况、各标志位的情况等,可以在这些对话框中直观地观察和更改各外围设备的运行情况,还可对它们的工作模式进行修改,如图1-27~图1-30所示。

978-7-111-54295-7-Chapter01-33.jpg

图1-27 单片机P1口窗口

978-7-111-54295-7-Chapter01-34.jpg

图1-28 单片机定时器窗口

978-7-111-54295-7-Chapter01-35.jpg

图1-29 单片机串行口窗口

978-7-111-54295-7-Chapter01-36.jpg

图1-30 单片机中断窗口

Proteus VSM与Keil μVision3的联调步骤为:在Proteus中绘制原理图后,选择Debug/Use Remote Debug Monitor命令。在Keil菜单中新建项目后,选择Project/Build Target命令,设置选项框,并编译汇编程序,产生HEX文件。选择Project/Options for Target‘Target1’命令,选择Debug/use remote debug-ger monitor命令,设置Debug选项卡中的Proteus VSM Simulator选项和Output选项卡,在Keil中进行调试。将Keil产生的HEX文件加载到Proteus ISIS绘制的硬件电路中,同时在Proteus ISIS中查看结果。

免责声明:以上内容源自网络,版权归原作者所有,如有侵犯您的原创版权请告知,我们将尽快删除相关内容。

我要反馈