PIC单片机应用开发24例——基于Proteus仿真(txt+pdf+epub+mobi电子书下载)


发布时间:2020-05-11 18:21:42

点击下载

作者:张新

出版社:电子工业出版社

格式: AZW3, DOCX, EPUB, MOBI, PDF, TXT

PIC单片机应用开发24例——基于Proteus仿真

PIC单片机应用开发24例——基于Proteus仿真试读:

前言

一、行业背景

PIC单片机具有体积小、功能强、价格低的特点,在工业控制、数据采集、智能仪表、机电一体化、家用电器等领域有着广泛的应用。其应用可以大大提高生产、生活的自动化水平。近年来,随着嵌入式的应用越来越广泛,PIC单片机的开发也变得更加灵活和高效,PIC单片机的开发和应用已经成为嵌入式应用领域的一个重大课题。

二、关于本书

MPLAB是目前应用最广泛的PIC单片机软件开发环境之一,Proteus是目前应用最广泛的硬件仿真环境之一;本书基于MPLAB和Proteus介绍了24个从简单到复杂的涵盖了PIC单片机从内部资源应用、扩展系统应用到嵌入式操作系统应用的实例。

本书各个章节的组织结构如下:背景介绍、设计思路以及该实例涉及的基础原理、硬件设计、软件设计和仿真与总结等内容。读者既可以了解该应用系统设计的基础知识、电路模块以及对应的代码,也可以在Proteus中进行仿真并且观察仿真结果。

本书各章的实例说明如下:

第1章“呼吸灯”是一个实现发光二极管呼吸效果的应用系统。

第2章“跑步机控制模块”是一个对跑步机的工作状态进行控制的应用系统。

第3章“简易电子琴”是一个可以弹奏的简易电子琴应用系统。

第4章“手机拨号模块”是一个手机的拨号界面应用系统,包括键盘和液晶显示模块。

第5章“单I/O引脚扩展多按键”是一个在PIC单片机应用系统中使用单个引脚完成多按键扩展的模型。

第6章“使用A/D模块进行电阻测量”是一个使用PIC单片机内部的A/D模块来对电阻值进行测量的应用实例。

第7章“手动多电压输出电源”是一个使用PIC单片机内置的电压参考模块来输出指定电压的应用实例。

第8章“旋钮控制模块”是一个使用PIC单片机的内部定时器,利用RC电路充放电来模拟一个旋钮控制系统的应用实例。

第9章“多机远距离通信模型”是一个使用PIC单片机的硬件串口和用户自己拟定的软件协议来实现远距离、多个PIC单片机通信的应用实例。

第10章“云台控制系统”是一个以云台为核心控制系统的应用实例。

第11章“SPI双机通信模型”是两个PIC单片机系统使用SPI接口进行数据通信的应用实例。

第12章“软件模拟串口通信”是使用软件来控制PIC单片机的普通I/O端口来实现串口通信的应用实例。

第13章“PWM控制电动机”是一个使用PIC单片机的CCP模块输出PWM波形来控制直流电动机转速的应用实例。

第14章“货车超重检测系统”是一个使用PIC单片机内部的A/D模块外扩一个压力传感器MPX4115对车辆的载重进行检测的应用实例。

第15章“水位监测系统”是一个使用PIC单片机内部的比较器模块实现水位监测的应用实例。

第16章“手动程控放大器”是根据当前用户选择来对输入信号进行放大的应用系统。

第17章“简易波形发生器”是在用户控制下产生简单波形的模型。

第18章“电子抽奖系统”是一个使用PIC单片机实现的抽奖系统。

第19章“自动换挡数字电压表”是一个根据当前输入电压值自动切换量程并测量当前电压值的应用系统。

第20章“仓库自动通风控制系统”是根据当前仓库的状态来启动和关闭风机达到给仓库适度通风目的的应用系统。

第21章“多点温度监测系统”是使用多个温度传感器对多点温度进行轮训采集的应用系统。

第22章“商场灯光节能控制系统”是使用PIC单片机和外部时钟芯片实现根据当前时间调节灯光能耗的应用实例。

第23章“万年历”是一个可以显示当前时间、日历信息(包括农历信息)的应用实例。

第24章“μCOS-II实时操作系统应用”是在PIC单片机上移植μCOS-II操作系统并且在该操作系统上运行自己的用户软件的应用实例。

三、本书特色

● 应用实例从简单到复杂,涵盖了PIC单片机从内部资源应用、扩展系统应用到用户输入通道、A/D模块信号采集、温度/湿度传感芯片、有线通信模块、操作系统等常用资源和常用模型的应用。

● 基于Proteus硬件开发环境提供了相应的仿真运行实例及其输出结果。

● 对于每个应用实例,都按照背景介绍、设计思路以及该实例涉及的基础原理、硬件设计、软件设计和仿真与总结等内容进行了组织,条理清晰,便于阅读和理解。

● 提供了大量的Proteus应用电路和MPLAB的工程文件,读者可以直接运行仿真。

另外,为了更好理解本书流程图,请仔细阅读图3.1和图3.6后的说明内容。

四、作者介绍

本书由张新、陈跃琴编著。同时参与本书编写和审定工作的还有孙明、唐伟、王杨、顾辉、李成、陈杰、张霁芬、张计、陈军、张强、杨明、李建、张玉兰等。

由于时间仓促、程序和图表较多,受学识水平所限,错误之处在所难免,敬请广大读者批评指正。

编著者

第1章 呼吸灯

呼吸灯是一种视觉效果,其灯光在PIC单片机的控制之下完成由亮到暗的逐渐变化,感觉像是在呼吸,这种效果广泛被用于数码产品、计算机、音响、汽车等各个领域,能够起到良好的视觉装饰效果。

本应用实例涉及的基础知识如下:PIC单片机基础;RCL滤波电路原理;PWM控制原理;发光二极管应用原理;三极管应用原理;PIC单片机应用系统中常用的电阻、电容、电感应用原理;PIC单片机开发环境MPLAB介绍;Proteus硬件仿真环境应用。

1.1 呼吸灯的背景介绍

呼吸灯最早被应用在苹果公司的相应计算机上,其指示标志灯会缓慢地由暗变亮、又逐步地由亮变暗。其过程类似人的呼吸,由“吸气”和“呼气”两个阶段组成。(1)吸气:灯的亮度曲线上升。(2)呼气:灯的亮度曲线下降。

由于其模拟的是人的呼吸效果,对成人而言,平均每分钟呼吸16~18次;而相对儿童而言,平均每分钟呼吸20次;而且在人的不同状态下,呼吸的频率是不同的,吸气和呼气的长度也是不同的,所以同样可以使用呼吸灯来指示一个系统的工作状态。例如,单片机系统在满负荷工作时其“呼吸”频率可以变快,反之变慢。

1.2 呼吸灯的设计思路

1.2.1 呼吸灯的工作流程

呼吸灯的工作流程如图1.1所示,相当简单,就是一个“明→暗→明”的过程。图1.1 呼吸灯的工作流程图1.2.2 呼吸灯的需求分析与设计

设计呼吸灯系统时需要考虑如下几个方面的内容。(1)要发光,则需要一个合适的光源。(2)需要一个与光源进行相应控制的驱动电路。(3)PIC单片机需要驱动电路进行的接口。(4)需要设计合适的单片机软件。1.2.3“呼吸”效果实现原理

对于PIC单片机的应用系统而言,最常用的发光源是发光二极管(LED)。发光二极管的发光强弱和通过其的电流大小相关,当电流越大时发光二极管越亮。通过对这个电流大小的控制,即可以实现对发光二极管亮度的控制;当这个电流逐步增大时灯光会变亮,反之灯光会变暗。1.2.4 PIC单片机(PIC16F87×A)简介

PIC16F87×A系列是Microchip公司出品的8位Flash精简指令集(RISC)单片机,其采用了数据总线和指令总线分离独立的哈佛结构,具有很高的流水处理速度。

PIC16F87×A系列单片机包括了PIC16F873A、PIC16F874A、PIC16F876A和PIC16F877A等型号,各个型号的参数对比参见表1.1。表1.1 PIC16F87×A系列单片机

PIC16F87×A系列单片机的主要特点如下所述。(1)采用RISC结构,速度快,性能高。(2)仅有35条单字指令,除了程序分支指令需要两个执行周期外,都仅需要一个执行周期。(3)最高支持20MHz的时钟输入频率。(4)内置4KB/8KB的14位宽度的Flash程序存储器、192/368B的2数据存储器、128/256B的EPROM数据存储器。(5)提供了14个中断源的中断系统。(6)内置8级深度的硬件堆栈。(7)内置上电复位(POR)、上电定时器(PWRT)和振荡启动定时器(OST)。(8)内置三个定时/计数器,包括带预分频的8位定时/计数器Timer0;带预分频的,可以使用外部晶体振荡时钟的16位定时/计数器Timer1;带有8位周期寄存器,预分频器和后分频器的8位定时/计数器Timer2。(9)内置2个16位最大分辨率为12.5ns的捕捉器。(10)内置2个16位最大分辨率为200ns的比较器。(11)内置2个最大分辨率为10位的PWM模块。(12)内置5~8通道的10位多通道A/D模块。2(13)内置带有SPI(主模式)和IC(主/从)模式的SSP。(14)内置带有9位地址探测的通用同步异步发送/接收器(USART/SCI)。(15)内置带RD(读)、WR(写)、CS(使能)的并行端口。(16)内置支持降压复位的降压检测模块。(17)内置监视定时器(WDT)和片内RC振荡器。(18)支持在线串行编程ICSP和单5Ⅴ电压供电的内部电路串行编程。(19)支持2.0~5.5Ⅴ的宽电压工作。

PIC16F87×A系列单片机提供了28/40引脚的PDIP、SOIC、PLCC和QFP封装,可供用户选择。如图1.2所示为40引脚PDIP封装的PIC16F874A/PIC16F877A的引脚示意图。图1.2 40引脚PDIP封装的PIC16F874A/PIC16F877A的引脚示意图

图1.2中各引脚详细说明如下所述。(1)外部I/O引脚RA~RE:具有第二或者第三功能的I/O引脚。(2):复位输入、可编程电压输入或者高电压测试模式控制引脚,当用作复位输入时,为Active Low动作。(3)OSC1/CLKI:振荡器输入/外部时钟源输入引脚。(4)OSC2/CLKO:振荡器输出引脚,在振荡模式下该引脚应该连接到外部晶体/晶振。在RC模式下,该引脚输出为OSC1上频率的四分频的时钟信号CLKOUT。(5)Ⅴ:电源地引脚。SS(6)Ⅴ:电源输入引脚。DD

注意:本书的实例通常使用PIC16F877A来作为核心控制器,除了第24章所介绍的“μCOS-II实时操作系统应用”实例。1.2.5 RCL电路

PIC单片机的输出是一个数字信号,只有“0”和“1”两种状态,也就是说只有“大电流”和“小电流”,不能直接对LED进行控制,此时需要一个相应的电路来将这个数字信号转化为模拟信号。

RCL响应电路是一种可以进行储能释放的电路,其电路原理如图1.3所示。如果在电容C1两端加上一个电源,其将对C1进行充电,在C1两端累积电荷;如果此时电源被撤去,C1开始通过R1和L1组成的回路开始放电,但是电感L1会产生逆电动势同时继续给C1充电,所以此时C1处于一个反复的充放电过程,直到最开始存储的电能全部都在电阻R2上消耗掉。图1.3 RCL响应电路原理图

如果在RCL电路的R1和L1之间串联一只发光二极管,而在电容两端加上高低的数字逻辑电平,则可以实现在发光二极管上电流的变化。

注意:这个充放电的过程,被称为RCL的阶跃响应,其充放电的时间是可以通过相关的公式计算得出的,有兴趣的读者可以自行查阅电路方面的相关书籍。1.2.6 PWM控制

虽然RCL电路能够将对应的数字逻辑高低电平转换为模拟信号并且实现电流的大小变化,但是此时还是需要PIC单片机提供这个数字逻辑电平,此时可以应用PWM控制原理。

PWM是脉冲宽度调制(Pulse Width Modulation)的缩写,简称脉宽调制,是一种使用PIC单片机或者其他处理器的数字输出来对模拟电路进行控制的方法。这种方法可以数字方式来控制模拟电路,可以大幅度降低系统的成本和功耗。

在采样控制理论中有一个重要结论:冲量相等而形状不同的窄脉冲加在具有惯性的环节上时,其效果基本相同。PWM控制技术就是以该结论为理论基础,利用PIC单片机的I/O引脚输出一系列幅值相等而宽度不相等的脉冲,用这些脉冲来代替正弦波或其他所需要的波形,按一定的规则对各脉冲的宽度进行调制,既可以改变逆变电路输出电压的大小,也可以改变输出频率。

对于PWM控制来说,其关键的参数有两个:脉冲的频率和脉冲的宽度。在实际的PIC单片机应用系统中,通常可以使用定时器来实现对这两个参数的控制。

在呼吸灯实例中,修改PWM的输出波形,可以改变外加在RCL电路的电源时间长度和对RCL电路进行充电的频率,从而可以达到修改吸气和呼气的分别长度,以及呼吸的频率的目的。1.2.7 PIC单片机的软件开发环境使用

MPLAB是Microchip公司为PIC系列单片机提供的集成开发环境,其是一个集多个应用开发工具为一体、功能完备的软件包。其主要包括的功能如下所述。(1)工程项目管理器(Project Manager):是MPLAB的核心部分,用于创建和管理工程项目。(2)代码编辑器(MPLAB Editor):是一个文本编辑器,给用户提供一个源代码的编辑环境,提供了关键字高亮等功能。(3)汇编器(MPASM Assembler):用于将汇编语言的源文件(.asm文件)转换为单片机可执行的目标文件(.hex文件)。(4)调试器(Debugger):用于对当前用户代码进行调试,允许使用断点、单步调试、Watch窗口以及目前MPLAB IDE调试器中的所有功能。将它与编辑器配合使用,可以将正在调试的目标中的信息与源代码相关联。(5)硬件仿真器(MPLAB-ICE Emulator):这是一个可将仿真器搭配外围电路来进行实时在线仿真和调试的设备。(6)硬件模拟器(PLAB-SIM Software Simulator):这是一种非实时、非在线的纯软件调试工具,可以实现PIC单片机对于用户源程序的模拟运行。(7)编程器(Programmer):用于将对应的代码烧写入PIC单片机,PICSTART Plus、PRO MATE II、MPLAB PM3以及MPLAB ICD 2都可以将代码编程到目标单片机中。MPLAB IDE 提供了对代码和数据编程的完全控制,还可以使用MPLAB IDE 对配置位进行设置来设定目标单片机的各种操作模式。

注意:最新版的MPLAB集成开发环境内置了HI-TECH ANSI C Compiler C语言编译器,可以对PIC单片机的C语言代码源程序进行编译。

1.MPLAB的工作界面

MPLAB集成开发环境提供了丰富的内部工具,常用命令都具有快捷工具栏,并且提供了项目向导(Project Wizard)快速开发工具用于帮助用户快速建立一个应用工程文件。MPLAB集成开发环境的界面是一个可以调整大小的窗口,它的操作独立于其他菜单项。此界面由菜单栏、快捷工具栏、状态栏和任何打开的窗口和/或对话框组成,如图1.4所示。图1.4 MPLAB的工作界面

2.MPLAB的菜单栏

MPLAB的菜单栏包括File、Edit、Ⅴiew、Project、Debugger、Programmer、Tools、Configure、Window、Help菜单项。本节将详细介绍这些菜单的用途。

1)File菜单

如图1.5所示为File(文件)菜单的列表。

该菜单包含了用于文件操作的相关菜单命令,详细说明如下所述。(1)New(新建):显示一个文件名为“Untitled”(未命名)的空编辑器窗口。(2)Add New File to Project(将文件加入项目):将一个文件加入当前项目。图1.5 File菜单(3)Open(打开):打开现有的源文件。可以通过在按下CTRL键或Shift键的同时单击文件名,在“打开”对话框中选择多个文件。(4)Close(关闭):关闭当前的编辑器窗口,如果文件自上一次保存之后已经被更改,会提示用户保存更改。(5)Save(保存):将当前的编辑器窗口保存到磁盘上它的原始文件名下。(6)Save As(另存为):将文件另存为其他名称。(7)Save All(保存所有):将所有打开的编辑器窗口保存到磁盘。(8)Open Workspace(打开工作区):打开工作区会在打开一个新的工作区之前关闭前面的工作区。(9)Save Workspace(保存工作区):保存工作区将保存当前的工作区。可以通过在Configure→Settings中的Workspace(工作区)选项卡下设置相关项以在关闭时自动保存工作区。(10)Save Workspace As(将工作区另存为):将工作区另存为其他名称。(11)Close Workspace(关闭工作区):关闭工作区将返回默认的启动工作区配置。(12)Import(导入):将调试文件或.hex文件导入到MPLAB集成开发环境的项目。(13)Export(导出):从MPLAB集成开发环境的项目导出.hex文件。(14)Print(打印):打印当前的编辑器窗口。将弹出“打印”对话框,可在此设置打印机和打印选项。(15)Recent Files(最近使用文件):显示在当前的MPLAB集成开发环境会话过程中打开过的文件的列表。可在Configure→Settings的Workspace选项卡中设置所显示的文件数。(16)Recent Workspaces(最近的工作区):显示在当前的MPLAB集成开发环境会话过程中打开过的工作区的列表。可在Configure→Settings的Workspace选项卡中设置所显示的工作区数。(17)Exit(退出):关闭MPLAB集成开发环境。

2)Edit菜单

如图1.6所示为Edit(编辑)菜单的列表。

该菜单包含了编辑操作的相关菜单命令,其详细说明如下所述。(1)Undo(撤销):撤销对当前窗口所进行的上一次更改。当没有编辑操作可撤销时,此菜单命令将灰掉且不能选择。(2)Redo(重复):恢复上一次Undo操作对当前窗口所进行的更改。当没有编辑操作可恢复时,此菜单命令将灰掉且不能选择。(3)Cut(剪切):删除当前窗口中选定的文本并将它放在剪贴板中。在这个操作之后,可将所删除的文本粘贴到另一个MPLAB编辑器窗口、同一MPLAB编辑器窗口中的另一个位置或另一个Windows应用程序中。(4)Copy(复制):将当前窗口中选定的文本复制到剪贴板上。在这个操作之后,可将所复制的文本粘贴到另一个MPLAB编辑器窗口、同一MPLAB编辑器窗口中的另一个位置或另一个Windows应用程序中。图1.6 Edit菜单(5)Paste(粘贴):将剪贴板上的内容粘贴到当前窗口的插入点上。仅可当剪贴板包含文本格式的数据时执行此操作,MPLAB编辑器不支持位图粘贴或其他剪贴板格式。(6)Delete(删除):删除选定的文本。(7)Select All(全选):选择Edit窗口中的所有文本和图形。(8)Find(查找):弹出“Find”对话框。(9)Find Next(查找下一个):查找“查找文本”的下一个实例,此时使用“F3按键”重复上一次查找;使用“Shift+F3”组合键按照上一次查找的相反方向查找。(10)Replace(替换):弹出“Replace”对话框。(11)Go to(转到指定行):转到编辑器窗口中指定的文本行。(12)Advanced(高级):高级编辑功能,包括使选定的文本全部变为大写或小写、将文本或常规代码注释掉或者缩进文本或不缩进文本。除此之外还有一个Match(匹配)功能。该功能可转到与光标处的括号相匹配的括号处。该功能适用于大括号、圆括号、尖括号和方括号的匹配查找。(13)Bookmarks(书签):使用书签进行工作。切换书签(交替的启用/禁止书签)、转到下一个或上一个书签或者禁止所有书签。(14)Properties(属性):弹出“Editor Options”(编辑器选项)对话框。

3)Ⅴiew菜单

如图1.7所示为Ⅴiew(视图)菜单的列表。

该菜单包含了用于视图操作的相关菜单命令,其详细说明如下所述。(1)Project(项目窗口):打开和关闭项目管理器窗口。(2)Output(输出窗口):打开和关闭输出窗口。(3)Toolbars(工具栏):打开和关闭相应的工具栏。(4)CPU Registers(处理器寄存器):打开和关闭处理器寄存器窗口。(5)Call Stack(调用堆栈):打开和关闭调用堆栈窗口。(6)Disassembly Listing(汇编列表):打开和关闭汇编列表窗口。图1.7 Ⅴiew菜单22(7)EEPROM(EPROM):打开和关闭EPROM窗口。(8)File Registers(文件寄存器):打开和关闭文件寄存器窗口。(9)Flash Data(Flash数据存储器):打开和关闭Flash数据存储器窗口。(10)Hard Stack(硬件堆栈):打开和关闭硬件堆栈窗口。(11)LCD Pixel(LCD液晶面板):打开和关闭LCD液晶面板窗口。(12)Locals(当地):打开和关闭当地窗口。(13)Memory(内存):打开和关闭内存窗口。(14)Program Memory(程序内存):打开和关闭程序内存窗口。(15)SFR/Peripherals(特殊寄存器和外围器件):打开和关闭特殊寄存器和外围器件窗口。(16)Special Function Registers(特殊功能寄存器):打开和关闭特殊功能寄存器窗口。(17)Watch(观察):打开和关闭观察窗口。(18)Memory Usage Gauge(内存使用统计):打开和关闭内存使用统计。

4)Project菜单

如图1.8所示为Project(项目)菜单的示意图,其中包含了对当前工程项目进行管理的相应操作菜单命令。

● Project Wizard(项目创建向导):用于引导用户一步步创建工程项目。

● New(新建):新建一个工程项目。

● Open(打开):打开一个已经存在的工程项目。

● Close(关闭):关闭一个指定的工程项目。

● Set Active Project(设置当前项目):在同时打开了多个项目的情况下设置其中一个为当前项目。

● Quickbuild(快速编译):对当前项目进行快速编译,通常来说不支持.asm汇编文件。

● Package in.zip(建立zip压缩包):将当前项目打包成zip压缩包。

● Clean(清除):清除当前项目。

● Build(编译):编译当前项目。

● Rebuild(重编译):对当前项目进行再次编译。图1.8 Project菜单

● HI-TECH C Manual(HI-TECH C语言帮助手册):打开HI-TECH C语言帮助手册。

● Build Configuration(编译配置):对编译的生成结果进行配置。

● Build Options(编译选项):对编译中的一些选项进行设置。

● Save Project(保存项目):保存当前项目。

● Save Project As(保存项目为):将当前项目保存为一个指定项目。

● Add Files to Project(将文件添加到项目):添加文件到当前项目。

● Add New File to Project(将新文件添加到项目):添加一个新文件到当前项目。

● Remove File From Project(移除文件):将一个指定文件从项目中移除。

● Select Language Toolsuite(选择语言工具):选择项目编译环境的语言。

● Set Language Tool Locations(设置语言工具位置):设置语言工具的位置。

● Ⅴersion Control(版本控制):版本控制工具。

5)Debugger菜单

如图1.9所示为Debugger(调试器)菜单的列表。图1.9 Debugger菜单(1)Select Tool(选择工具):选择一个调试工具。默认选择为None。可用的调试器列表根据已安装的调试工具而定。(2)Clear Memory(清空存储器):清空全部或仅清空在此项目2中使用的特定类型的MPLAB IDE存储器,例如程序、数据、EPROM和配置。

一旦选择了调试工具,Debugger菜单就会添加以下选项命令。

● Run(运行):执行程序代码直到遇到断点或者选择了“Halt”。程序从当前的程序计数器开始执行(如状态栏中所示)。当前程序计数器的位置也可以由Program Memory窗口中的一个箭头表示。在运行程序时,将禁止几个其他功能。

● Animate(单步连续):单步连续运行使得调试器在运行程序时实际执行单步运行,在运行时会更新寄存器的值。Animate比Run功能运行要慢,但是这样做允许在Special Function Register窗口或Watch窗口中查看寄存器值的变化过程。要暂停单步连续运行,请使用菜单选项Debugger→Halt而不是工具栏上的Halt或快捷键F5。

● Halt(暂停):暂停程序代码的执行。当单击“Halt”按键时,将更新状态信息。

● Step Into(单步运行):单步运行整个程序代码。对于汇编代码来说,此命令执行一条指令(单周期或多周期指令),然后暂停。在执行了一条指令之后,所有窗口都被更新。对于C代码来说,此命令执行一行C代码,这可能意味着执行一条或多条汇编指令,然后停止。在执行完之后,所有窗口将被更新。

● Step Over(单步通过):在当前程序计数器处执行指令。当遇到CALL指令时,单步跳过调用的子程序并在CALL之后的地址处暂停。如果单步跳过太长或者显示出已经“挂起”,单击Halt按键。

● Step Out(单步跳过):单步跳出子程序。如果正在单步运行子程序代码,可以使用Step Out在完成执行子程序的剩余部分后在CALL之后的地址处暂停。

● Reset(复位):执行指定的复位,可以是MCLR、Watchdog Timer(看门狗定时器)、BrownOut(欠压)或Processor(处理器)复位。Reset选项和操作取决于选定的器件。

● Breakpoints(断点):弹出“Breakpoint”对话框。在此对话框中设置多个断点。

● Settings(设置):打开特定于工具的设置窗口。在此设置工具功能,并查找工具限制。

6)Programmer菜单

如图1.10所示为Programmer(项目)菜单列表。该菜单包含了用于对PIC单片机进行编程操作的选项命令,其详细说明如下所述。图1.10 Programmer菜单

● Select Programmer:(选择编程器)选择一个编程器。默认选择为None,可用的编程器列表取决于已安装的调试工具,列表中条目的顺序与安装顺序一致。

根据所选择的编程器,出现在Programmer菜单上的选项可能有所不同。一般出现的基本项有:

✧ Enable Programmer(启用编程器)。在MPLAB集成开发环境和编程器之间建立通信,如果该编程器已经被启用,此选项会灰掉。

✧ Disable Programmer(禁止编程器)。结束MPLAB集成开发环境和编程器之间的通信,如果该编程器已经被禁止,此选项会灰掉。

✧ Program(编程)。编程指定的存储区,即程序存储器、配置2位、ID单元和/或EPROM数据存储器。

✧ Verify(校验)。校验对指定的存储区的编程,这些存储区包2括:程序存储器、配置位、ID单元和/或EPROM数据存储器。

✧ Read(读)。读指定的存储区,即程序存储器、配置位、ID单2元和/或EPROM数据存储器。

✧ Blank Check All(完全空白检查)。检查所有器件存储区是否被擦除或者为空白。

✧ Blank Check OTP(OTP空白检查)。检查OTP器件,查看程2序存储器、数据存储器和EPROM存储器是否被擦除或者为空白。

✧ Erase Flash Device(擦除闪存器件)。擦除PIC micro闪存MCU器件上的所有数据,包括存储器、ID和配置位。

✧ Reset Program Statistics(复位编程统计)。将编程统计(例如错误数)设置为默认值。

✧ Download OS(下载OS)。为编程器下载最新的固件系统。

注意:必须升级了PICSTART Plus之后才可使用此功能,请遵循该工具的帮助中的说明。

● About(关于):在此对话框中查看与工具相关的信息。

● Settings(设置):打开工具特定的设置对话框。在此对话框中设置与工具相关的信息,即Memory Ranges(存储区范围)和Communications Port Setup(通信端口设置),如果可用的话,还可设置Ⅴoltages(电压)和SQTP。

7)Tools菜单

Tools工具菜单可以调用MPLAB中集成的大量实用工具,读者可以参考其他相应的资料。

8)Configure菜单

如图1.11所示为Configure(配置)菜单的列表。

该菜单中包含了用于对MPLAB进行配置的相应操作命令,其详细说明如下所述。图1.11 Configure菜单(1)Select Device(器件选择):为开发模式选择器件并且在Debugger或Programmer菜单下选择开发工具。(2)Configuration Bits(位配置):选择器件配置位的值,设置这些值将影响调试器和编程器的操作。(3)External Memory(外部存储器选择):选择是否使用外部存储器。同时也指定外部存储器的范围。(4)ID Memory(ID 存储区):输入值到ID存储区。(5)Settings(设置):输入工作区、调试器、程序装载、热键和项目的默认设置。

9)Windows菜单

如图1.12所示为Windows(窗口)菜单的列表。

该菜单中包含了用于对MPLAB的窗口进行管理的相应操作命令,其详细说明如下所述。(1)Close All(关闭所有):关闭所有打开的窗口。(2)Cascade(层叠):层叠排列打开的窗口以便看到每个标题栏。图1.12 Windows菜单(3)Tile Horizontally(水平平铺):一个接一个的用较小的尺寸、水平排列打开的窗口。(4)TileⅤertically(垂直平铺):一个接一个的用较小的尺寸、垂直排列打开的窗口。(5)Arrange Icons(排列图标):在集成开发环境的底部排列所有已最小化为图标的窗口。(6)Windows Sets(窗口状态):显示当前所有窗口状态。(7)Create Window Set…(创建窗口状态):激活一个窗口。(8)Destroy Window Set…(摧毁窗口状态):撤销激活的窗口。

10)Help菜单

Help菜单是MPLAB软件的相关信息、帮助手册、升级以及注册帮助等操作的菜单,如图1.13所示。在此不再赘述。图1.13 Help菜单

3.MPLAB的快捷工具栏

1)工具栏的功能

根据正在使用的功能或工具,MPLAB集成开发环境会显示不同的工具栏,工具栏中的图标提供执行常规任务的快捷方式,工具栏的功能说明如下所述。

● 单击并拖动工具栏可以让它变成浮动的工具栏。

● 单击并将工具栏拖动到MPLAB集成开发环境界面的顶部或者边上来停驻它。

● 单击并将工具栏拖出MPLAB集成开发环境界面。

● 将鼠标悬停在图标上就会弹出图标名称。

● 右击工具栏,更改内容或显示/隐藏工具栏。

2)工具栏的内容

MPLAB可用的工具栏包括如下:

● 标准工具栏;

● 项目管理器工具栏;

● 调试工具栏;

● 编程器工具栏;

● 校验和工具栏。(1)标准(编辑)工具栏目前包含具有以下功能的按钮图标。

●New File:打开新建文件窗口。

●Open File:在窗口中打开现有的文件。

●Save File:将当前文件窗口的内容保存到一个文件中。

●Cut:将选定的文本剪切到剪贴板。

●Copy:将选定的文本复制到剪贴板。

●Paste:粘贴来自剪贴板的文本。

●Print File:打印当前文件窗口中的内容。

●Find:打开Find对话框,在当前文件窗口中查找文本。

●Help:显示MPLAB集成开发环境Help选择对话框。(2)项目管理器工具栏目前包含具有以下功能的按钮图标。

●New Project:设置新项目的名称和位置。

●Open Project:打开现有的项目。

●Save Workspace:将当前项目和工作区保存为文件。

●Build Options:查看或更改项目设置。

●Find in Project Files:打开Find对话框,在所有项目文件中搜索文本。

注意:如果已经装载了项目,还可能找到其他项目。

●Make:仅编译当前项目中已经更改的文件。

●Build All:编译当前项目中的所有文件。(3)调试工具栏目前包含具有以下功能的按钮图标。

●Run:运行程序。

●Halt:暂停程序执行。

●Animate:连续单步运行指令,使用Debugger→Halt执行暂停。

●Step Into:单步跳入下一条指令。

●Step Over:单步跳过下一条指令。

●Step Out:单步跳出子程序。

●Reset:执行MCLR复位。

注意:根据选定的调试工具,还可能出现其他图标。(4)根据所选择的编程器,编程器工具栏上出现的按钮图标也会有所不同,通常出现以下几个基本图标。

●Blank Check All/Blank Check(完全空白检查/空白检查):检查器件存储器是否为空。

●Read:读取在Programmer→Settings的Program选项卡中指定的器件存储区。

●Program:为在Programmer→Settings的Program选项卡中指定的器件存储区编程。

●Ⅴerify:验证目标存储器是否已经被正确编程。

●Erase Flash Device(擦除闪存器件):如果器件具有闪存程序存储器,则将其擦除。

●Program Statistics(编程统计):显示编程统计数据,如编程成功、失败的次数以及尝试编

程的总次数。

此工具栏仅显示校验和的值,可以在该器件的编程规范中找到校验和的算法,当器件有代码保护时,可以使用未受保护的校验和来确定器件的校验和。以前,此项在状态栏上,现在它在状态栏中的位置被存储区信息占用了。

4.MPLAB的状态栏

状态栏用于提供用户和MPLAB集成编程环境会话状态相关的最新信息,当当前项目在运行中时会显示“Running”和一个进度条;当当前项目没有处于运行状态时会提供如下信息。

● 当前调试工具——显示当前选定的调试工具。

● 当前编程器——显示当前选定的编程器。

● 当前处理器——显示当前选定的处理器。

● 当前程序计数器——显示当前的程序计数器。

● W寄存器的当前值——显示W寄存器的当前值。

● 状态位——当为大写状态时为“置位”,当为小写状态时为“复位”。

● 全局断点使能——显示全局断点使能的当前状态。

● 处理器频率——显示处理器的当前频率。

● 存储信息——显示数据存储器中的当前存储区。

● 打开窗口中的行号和列号——显示文件中的当前行号和列号。

● 插入/改写——在插入和改写之间切换输入模式,“INS”表示插入字符,“OⅤR”表示改写字符。

● 写/只读——显示写/只读状态,“WR”表示可编辑文件,“RO”表示只读文件。

5.MPLAB的库函数

MPLAB也提供了相当的现成库函数以供用户调用,使用这些函数可以大大提高代码编写效率,在使用这些库函数之前必须先引用如下所列的相对应的头文件。(1)io*.h:IO寄存器操作函数的头文件。(2)macros.h:宏和定义声明的头文件。(3)assert.h:宏声明的头文件(4)ctype.h:字符类型函数头文件。(5)float.h:浮点数原型头文件。(6)limits.h:数据类型的大小和范围头文件。(7)math.h:浮点运算函数头文件。(8)stdarg.h:变量参数表头文件。(9)stddef.h:标准定义头文件。(10)stdio.h:标准输入/输出IO函数头文件。(11)stdlib.h:内存分配函数的标准库头文件。(12)string.h:字符串处理函数头文件。(13)pic.h:PIC单片机的头文件。

6.MPLAB的使用

由于MPLAB自带项目管理器,所以用户不需要在项目管理上花费过多的精力,只需要按照以下步骤操作即可建立一个属于自己的项目。(1)启动MPLAB,建立工程文件并且选择器件。(2)建立源文件、头文件等相应的文件。(3)将工程需要的源文件、头文件、库文件等添加到工程中。(4)修改启动代码并且设置工程相关选项。(5)编译并且生成HEX/COFF或者LIB文件。

注意:MPLAB不支持中文路径名,一定要注意这个问题。

1.3 呼吸灯的硬件设计

呼吸灯的硬件设计重点是如何使用RCL电路对发光二极管进行驱动。1.3.1 呼吸灯的硬件模块划分

呼吸灯的硬件模块划分如图1.14所示,由PIC单片机,三极管开关电路、RCL驱动电路和LED构成。

其各个部分详细说明如下所述。图1.14 呼吸灯的硬件模块划分(1)PIC单片机:这是呼吸灯系统的核心控制器。(2)三极管开关电路:受到PIC单片机的PWM输出波形驱动,当输出为高电平时,三极管打开,电源给RCL电路驱动充电;当输出为低电平时,三极管截止,电源从RCL驱动电路上断开,RCL驱动电路开始放电。(3)RCL驱动电路:利用充放电原理将PIC单片机输出的数字信号转换为模拟信号,用于对发光二极管进行控制。(4)发光二极管(LED):发光器件。1.3.2 呼吸灯的硬件电路图

呼吸灯的硬件电路原理图如图1.15所示,PIC16F877A单片机使用引脚RC0驱动了一个由PNP和NPN三极管构成的三极管开关电路(Q1和Q2);一个5Ⅴ的电源通过这个开关电路给由L1、C4和R3构成的RCL电路供电,在R3上串联了一个用于显示的发光二极管D1。图1.15 呼吸灯的硬件电路原理图

呼吸灯涉及的典型元器件说明参见表1.2。表1.2 呼吸灯中的典型元器件说明1.3.3 硬件基础——发光二极管(LED)

发光二极管(LED)是构成呼吸灯的基础元件,也是最常见的PIC单片机人机交互通道器件,通常用于指示单片机系统的工作状态,其有红、黄、绿等多种不同颜色以及不同的大小(直径),还有高亮等型号,它们主要的差别在于外形大小、发光功率和价格。

发光二极管LED和普通二极管一样,具有单向导电性,当加在发光二极管两端的电压超过了它的导通电压(一般为1.7~1.9Ⅴ)时就会导通,当流过它的电流超过一定时间时(一般2~3ms)则会发光。

PIC单片机系统中发光二极管的典型应用电路可以分为“灌电流”和“拉电流”两种,如图1.16所示。图1.16 发光二极管的典型应用电路示例

图1.16中RE0引脚上的发光二极管D2驱动方式称为“灌电流”驱动方式。当RE0引脚输出高点平时,D2两端无电压差,不发光;当RE0输出低电平时,D2两端有5Ⅴ电压差,发光。图1.16中RA1引脚上的发光二极管D1的驱动方式为“拉电流”驱动方式。当RA1输出高电平时,D1相对地有5Ⅴ的电压差,发光;当RA1输出低电平时,5Ⅴ电压差将落在上拉电阻R4上,D1两端无电压差,不发光。图1.16中的R3和R4都是限流电阻,当电阻值较小时,电流较大,发光二极管亮度较高;当该电阻值较大时,电流较小,发光二极管亮度较低。1.3.4 硬件基础——三极管

呼吸灯中使用两个三极管构成了一个开关电路,用于控制电源对RCL电路的充电,三极管是一种用电流来控制电流的半导体器件,是PIC单片机系统中最常用的功率驱动器件,其作用是把微弱信号放大成幅值较大的电信号,也常常用作无触点开关(如用作多位数码管的选择控制器件)。

三极管可以按材料分为锗管和硅管,而每一种按照电流结构又有NPN和PNP两种形式,但使用最多的是硅NPN管和锗PNP管两种。

三极管有多种型号,但是其都有三个引脚,分别为发射极(Emitter,E)、基极(Base,B)和集电极(Collector,C),如图1.17所示。

可以把三极管看作一个电子开关,其中基极是电子开关的控制端,当基极输出高电平时,三极管导通,在被控物体两端形成电压差;当控制端输出低电平时,被控物体两端的电压差消失。图1.17 三极管的引脚示意图

注意:控制端上的电阻必须选取合适,因为较小的电流将不足以使三极管导通。1.3.5 硬件基础——电阻、电容和电感

电阻、电容和电感是构成RCL电路的基础,同时也是PIC单片机中最常用的基础元件。

1.电阻

电阻是用电阻材料制成的、有一定结构形式、能在电路中起限制电流通过作用的二端电子元件,其中阻值不能改变的称为固定电阻器,而阻值可变的称为电位器或可变电阻器。

电阻可限制通过它所连支路的电流大小,例如图1.16中的R3就是用于限制发光二极管上的电流大小。

电阻的最主要参数是其电阻值和功率大小。

2.电容

电容是用于存储电荷能量的元件,其最主要的参数是工作电压和电容值的大小。

3.电感

电感是利用当线圈通过电流后,在线圈中形成磁场感应,感应磁场又会产生感应电流来抵制通过线圈中的电流原理制成的元件,其包括自感和互感两种完全不同的效应。(1)自感是指当线圈中有电流通过时,线圈的周围就会产生磁场,当线圈中电流发生变化时,其周围的磁场也产生相应的变化,此变化的磁场可使线圈自身产生感应电动势(感生电动势)的效应。(2)互感是指当两个电感线圈相互靠近时,一个电感线圈的磁场变化将影响另一个电感线圈的效应,互感的大小取决于电感线圈的自感与两个电感线圈耦合的程度,利用此原理制成的元件称为互感器。

电感最主要的参数是电感值的大小。1.3.6 Proteus硬件仿真环境的使用

Proteus软件是英国Lab Center Electronics公司出品的EDA工具软件,其可以对PIC单片机应用系统进行仿真,并且支持和MPLAB进行联合调试,本章将介绍其基础使用方法。

Proteus是一个基于ProSpice混合模型仿真器的、完整的嵌入式系统软/硬件设计仿真平台,其由ISIS和ARES两大应用功能软件组成,前者是一个原理图输入软件,用于电路原理设计和仿真,后者则用于PCB电路图布线。Proteus可以实现从原理图设计、PIC单片机编程、PIC单片机应用系统仿真到应用系统PCB设计的流程化工作,具体功能模块组成如图1.18所示。图1.18 Proteus的功能模块组成

1.Proteus的界面

如图1.19所示为Proteus的运行界面,可以看到其由预览窗口、编辑窗口、器件显示窗口等窗口,以及菜单栏、快捷工具栏、工具箱、仿真工具栏等组成。(1)Proteus的窗口可以分为编辑窗口、预览窗口、器件显示窗口三大区域,每个窗体都有自己独特的作用,其详细说明如下所述。

● 编辑窗口(Editing Window):编辑窗口用于放置元器件,进行连线,绘制原理图,输出运行和仿真结果等,这是Proteus的主要操作和显示区域。

● 预览窗口(Overview Window):预览窗口用于显示当前的图纸布局和正在操作的器件相关情况。

● 器件显示窗口(Components Window):器件显示窗口用于在当前项目加载的各个器件的相关情况,包括器件名称、引脚分布等。(2)除了三个常用的窗口,Proteus还有菜单栏、快捷工具栏、工具箱、仿真工具栏等常用的辅助操作栏,其详细说明如下所述。

● 菜单栏:提供相应的操作菜单,单击任何一个菜单选项后都会弹出子菜单选项。

● 快捷工具栏:提供相应的操作快捷按钮,单击后会启动对应的快捷操作。

● 工具箱:提供诸如虚拟仪器等工具的启动操作,单击后会启动对应的工具。

试读结束[说明:试读内容隐藏了图片]

下载完整电子书


相关推荐

最新文章


© 2020 txtepub下载