单片机 系统设计课件_第1页
单片机 系统设计课件_第2页
单片机 系统设计课件_第3页
单片机 系统设计课件_第4页
单片机 系统设计课件_第5页
已阅读5页,还剩159页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、第11章应用系统设计技术与实例 设计自己的单片机系统第11章 应用系统设计技术与实例11.1 单片机应用系统开发流程 11.2 抗干扰设计 11.3 应用举例概述本章从单片机应用开发的一般步骤入手,着重介绍总体设计、硬件设计、软件设计、开发装置的使用与系统调试、编程器的使用与程序固化、产品验收与交付使用等技术环节要完成的任务和实际开发中应注意的问题,软硬件的抗干扰技术,最后给出一个开发实例以便模仿。内容上贴近实际,注意对自上而下的任务逐级分解过程的介绍,力图按工程的要求,使开发进程有条不紊,有理有据,文档齐全。由于篇幅限制,许多地方只能简略介绍。1111 总体设计1用户需求分析对用户提出的功能

2、需求、技术指标等,进行必要的可行性论证。明确设计任务,并以书面形式确定以下几方面的内容,经用户认可,形成设计任务书。(1)产品名称;(2)设计目的;(3)系统功能要求(4)系统性能指标(5)总体要求;(6)设计周期;(7)设计费用;(8)其他。2构建系统总体架构1根据设计任务书的要求,在满足功能、性能等用户需求的基础上,初步提出可选技术路线,并对各方案进行必要的分析,充分听取方方面面的意见,选择一种实施方案。实施方案中的系统总体架构应以用户需求为出发点。主要包括:选择机型;根据需要确定扩展;确定主要的软硬件功能;明确用户界面(键盘、显示、打印等)的形式;确定系统的结构(或建议,经用户确认);单

3、片机内部资源分配及任务分解。2构建系统总体架构2在总体设计阶段应形成总体报告(实施方案)和设计任务书。报告形成后,就可分成两组进行同步设计了。第一组负责硬件,第二组负责软件,两个组由项目负责人协调。有的时候项目较小或者其它原因,只有一个人,就要先设计硬件部分,然后交给线路板厂制版,在此期间开始软件设计。2构建系统总体架构3硬件设计除了主要完成PCB线路板设计外,还应考虑可靠性和保密性,最终形成PCB图、元器件清单、网络表、端口地址表等技术文档;软件设计主要完成软件功能模块划分、出口入口参数定义、最终形成程序(子程序)框图、源程序清单等技术文档。软硬件调试必须由软硬件设计人员共同参与,形成调试报

4、告。最后向用户提交产品、产品说明书等。图11-2 新的产品开发流程图 现在有了proteus软件,不等做出电路板就可以提前进行功能测试,大大节省了时间和金钱成本,其流程可以修改成如上。 1112 硬件设计和制作硬件原理设计是系统设计开始后最重要的第一步。硬件原理设计中存在的缺陷将对整个设计产生影响,所以原理设计要特别细心周到。原理设计完成后,将产生硬件原理图、网络表、元件清单等重要文档,这些文档是后续工作的基础。在硬件原理图基础上,可以采用CAD自动布局、自动布线来自动地完成印制板绘制。通过印制板和原理图各自生成的网络表,可以验证所绘制的线路板与原理图是否一致。网络表还用于检查生产出来的印制板

5、上线路的通断。1 硬件原理设计1硬件原理设计的任务是设计并绘制硬件原理图,主要应从以下几个方面考虑。(1)最小应用系统设计包括微处理器的选择、程序存储器的选择、晶振的选择、总线是否驱动、复位电路的设计、内部资源(如定时、计数、中断)的使用等。(2)I/O通道设计包括开关量I/O通道,接口电路、端口地址等问题,模拟量I/O通道中A/D、D/A转换芯片的选择等。(3)人机界面设计人机界面设计包括键盘、显示和打印电路及其接口设计。1 硬件原理设计2(4)其他系统扩展设计根据系统需要扩展外部RAM、ROM、定时计数、中断管理、串行口扩展等。(5).电源设计根据系统的供电要求和使用环境,确定供电方案。比

6、如手持式设备往往需要电池供电;有的设备需要备用电源等。交流供电也要设计变换电路,可以选择模拟稳压电源或开关稳压电源等。(6)接插件定义确定线路板之间的数据通信形式,包括接插件的类型,接插件管脚定义等。2 资源分配完成了原理设计之后,硬件资源就基本确定了,适时地进行资源分配,对后续工作能起到很好的限定作用。此外,在资源分配时能及时发现资源的利用情况,一方面减少资源浪费,另一方面发现资源不足,及时修正原理设计中的潜在问题。资源分配的主要任务是对单片机内部RAM、2(或3)个定时计数器、5(或6)个中断源、1个全双工异步串行口、4个并行I/O口等单片机内部资源及扩展资源逐个分析其用途、工作方式、工作

7、起止时间和限定条件,分配端口地址等。3 线路板图绘制原理图最终还要通过CAD软件绘制出线路板图才能交付生产,这个工作要在仿真实验完成之后进行,否则可能会白白浪费时间和金钱。在绘制线路板时一定要注意以下几个问题。(1)器件的布局原则器件布局是指在线路板上布置元器件的位置。在电路板设计时应合理地分区,如强、弱信号,数字、模拟信号,输入、输出通道等安排在不同区域,尽可能使干扰源(如电机、继电器)与敏感元件(如单片机)远离,应考虑走线的密度均衡、发热均衡等因素。除了按用户要求的键盘、显示等器件的位置已确定外,其他器件最好是环绕CPU或在CPU引出的总线两侧。(2)布线原则2单片机和大功率器件的地线要单

8、独接地,以减少相互干扰。大功率器件尽可能放在电路板边缘。有条件应尽量采用四层以上印制板,中间两层为电源及地。(2)布线原则3当大电流线宽到一定程度时,由于占用线路板资源太多,一般采用粗导线“跨接”的方法,这样不仅节省了线路板资源,而且避免了由于大电流导致线路板被“加热”。走线应避免出现直角或锐角,以减少高频噪声发射。注意晶振布线,晶振与单片机引脚尽量靠近,用地线把时钟区隔离起来,晶振外壳接地并固定。4.可靠性设计单片机应用系统的可靠性是指在指定的应用环境和条件下,系统稳定工作的能力。单片机应用系统由于具有很高的性能价格比,已逐步深入到各个领域,对单片机系统工作的可靠性也就提出了越来越高的要求。

9、因为系统一旦出现问题,将带来一系列损失,产生严重的后果。提高系统的可靠性可以从两方面入手,一方面从硬件设计角度提高系统抗干扰能力,另一方面从软件角度提高系统的可靠性。具体措施在下一节详述。 5 保密性设计单片机应用产品多数采用双面板,线路板上走线一目了然,很容易将线路板测绘出来。保密设计多采用以下两种方法:(1).程序加密:将程序固化在单片机内部的方法。选用内含程序存储器带“加密”位的单片机,这样做的结果是使得解密变得麻烦,提高解密成本。(2).可编程逻辑阵列加密:PAL、GAL等小规模可编程逻辑阵列在单片机应用系统中很实用,可以直接取代TTL组合逻辑,且多数PAL、GAL器件可以设置加密(不

10、可读),使“仿制”者不能轻易得手。6 硬件线路板的焊接与测试(2).元件焊接对于产品开发,IC多采用焊IC座的方法,便于线路修改。如果是批量生产的产品,除了易损坏的IC之外,为了确保硬件线路的可靠性,应把IC直接焊在线路板上。在元件焊接时,要注意避免漏焊、错焊和虚焊。忠告:手工焊接水平的提高需要很好的训练。(3).局部线路测试局部线路测试是通过编写测试程序,检查局部硬件线路能否正常工作。如果不能正常工作需查找问题并解决。注意:硬件的设计是最基础的,任何一点马虎或疏漏都有可能造成难以挽回的损失.1113 软件设计软件设计是对我们耐心和毅力的考验,许多细节问题是比较繁琐的。首先要进行软件任务划分,

11、数据类型规划,资源使用约定,模块功能定义以及模块接口定义等软件总体设计工作。软件的开发过程可以套用软件工程的要求。除此之外,还有一些单片机系统开发的特殊性。 1 软件设计的前期准备(1).模块功能定义主要是根据项目的功能要求来确定整个程序的功能,并将这些功能分解成若干子功能,确定完成这些功能的程序模块,还要确定各个模块之间的关系和数据传递方式等,使其成为一个有机的整体。模块功能定义包括:单片机的初始化模块、主控程序模块、程序中使用的一些模块子程序中断服务子程序等。规定其执行(触发)条件、入口出口参数、子程序完成的具体功能等。这些计划在具体编程的过程中还有可能进行局部修改。1 软件设计的前期准备

12、(3).内存资源分配的确认硬件设计中已经将单片机的资源基本分配完毕,软件设计中的资源分配主要是将还未具体分配的各RAM单元进行合理分配,尤其是片内RAM。例如,规定工作寄存器的使用。规定需要使用哪些标志,占用从20H开始的几个字节用来存放这些标志位。其余RAM单元可以存放字节信息(包括20H到2FH单元未被用于标志的单元),这些单元的使用还要扣除堆栈区。单片机内部其他RAM单元对多数开发应用来说是够用的。51子系列内部RAM单元不够用可以用52子系列,应确保单片机内部RAM均被用于存放最常用的变量。1 软件设计的前期准备RAM资源初步划定后,工作进程中可能发现某些资源分配不尽合理,需要局部改动

13、或增减。RAM资源的管理最好通过伪指令定位的方法,避免使用直接地址,这样,可以很方便地进行修改。程序规模的估计,因为单片机的存储器数量有限,再好的程序没有地方存放也是不行的。2 系统监控程序设计监控程序其实就是主程序,监控的任务简单地说主要是调度:根据当前单片机内、外部的状态或发生的“事件”,适时决策,执行相应的模块,完成指定的作业。监控程序的结构一般有作业顺序调度、键盘驱动调度等方法。前者适用于顺序控制类应用场合,后者适用于键盘指令型开发场合。监控程序的设计方法常见的有状态分析法、状态转移法和事件驱动法等。3 中断与子程序设计(1)中断在软件总体设计时,合理分配任务,确定哪些任务在主程序中实

14、现,哪些任务在中断服务程序中实现,依据已定义的功能完成中断服务程序的编写。在中断程序中设置一些处理标志,主程序根据标志进行处理,防止中断服务未结束之前,下一中断请求又到来,同级中断得不到及时响应。中断服务程序设计时应注意以下三个问题。3 中断与子程序设计 (1)中断现场保护由于中断服务程序执行时刻的不确定性,如果不保护现场就可能出现中断返回后其他程序的执行受到“莫名其妙”的影响。设计时可以先不考虑现场保护,待中断服务程序编写完成后,列出所有目的操作数,将其中全局变量扣除,其余均需保护和恢复。特殊的工作寄存器要注意“换区”的操作,避免R0R7的冲突。 3 中断与子程序设计 (1)中断及时返回,释

15、放资源中断服务子程序有时不可能“一步到位”,以免长时间资源独占。中断的目的之一就是提高响应的实时性。很多工作可以在主程序中排队处理,中断服务程序只需要设置一个任务标志,并将该任务列入主程序任务处理队列,及时释放中断资源。这种方式可以理解为事件驱动程序流程。3 中断与子程序设计 (1)中断避免中断重入在MCS-51系统中,处理器完全依据IE0、TF0、IEl、TFl、RI和TI这些标志位是否为1,触发中断响应。如果用户在中断返回前不清除中断标志,就会造成中断重入,即一次中断请求造成多次、甚至是无休止的中断服务,使中断服务子程序反复执行而导致错误的结果,另一方面也使其他正常的程序执行“举步维艰”(

16、每执行一条指令后就要被中断一次)。避免中断重入的具体方法可见第五章。(2)子程序设计与子程序调用子程序是在功能模块划分完成后,进一步细化分解出来,完成某些功能的程序块。子程序不是在软件总体设计时能够确定下来的。各个软件设计组采用结构化程序设计方法时,可以形成各自软件框图,将重叠部分以子程序的形式提取出来,共同约定其入口、出口参数,这是一种方法。另一种方法是全部程序编制完成后,在优化程序时,将所有可能合并的程序段或子程序合并成一个子程序。(2)子程序设计与子程序调用由于子程序可能在不同的场合被不同的程序段调用,所以子程序的编写要规范,程序结构合理、易读,不能有漏洞(例如某些场合正常,而另一些场合

17、却出错),尽可能少地占用资源。尤其避免制造垃圾,中间变量(用于暂存的寄存器)尽量使用工作寄存器,避免占用直接地址单元。提示:子程序采用何种方式传递参数很重要,需要认真考虑确定。4 软件抗干扰措施与硬件的抗干扰措施一样,软件的抗干扰措施也非常重要,主要包括:软件陷阱、数字滤波等,软件陷阱在下一节说明。5 程序调试程序编写完成后,在软硬件调试之前,应首先进行程序测试,确保程序正常运行。在软硬件联调时,减少故障点的检出时间,提高联调效率。程序设计的全过程分为分析问题、画流程图、编辑程序、程序测试四个步骤。前三步只占总工作量的40左右,60以上工作量在调试上,所以一定要有充分的思想准备。程序测试的方法

18、与软件工程中所述方法是一致的,可以采用白盒测试法、黑盒测试法。5 程序调试单片机的程序调试工具,主要是使用软件仿真器。在软件仿真器上调试通过之后,再进行与硬件联合调试。程序调试的有力工具可以说就是PROTEUS。有很多问题可以在PROTEUS仿真下得以发现和解决。提示:由于程序调试的复杂性,在多数情况下,人们往往满足于能用即可,满足于一时能正常运行,对偶尔的不正常往往不深追细究,这样的产品经不起时间和条件的考验,因而是不可取的。1114 系统调试系统调试一般是指,在软件和硬件调试完成之后,把二者组合在一起,对整个单片机系统进行调试。这个过程就是我们的单片机系统设计制作的最后一步。最终提供给用户

19、的产品就是在系统调试之后定型的。1 一般调试方法开发单片机产品,往往要使用仿真器,也有的称为开发机或开发系统。仿真器通过仿真线,连在用户板的CPU插座上,可以通俗地理解为仿真器将其CPU、程序存储器等资源全部“租借”给了用户系统。用户可以在PC机上编写源程序,通过汇编或编译程序将源程序翻译成机器码,通过PC机接口将机器码传入仿真器内,用户仍可以指定程序运行到哪里,并通过PC机的显示器观察单片机内部资源的变化情况(外部情况通过用户板上的数码管、LED可以观察到)。1 一般调试方法仿真器也可以不连用户板,仅进行软件运行测试。通过设置断点运行、单步运行等方式,可以“跟踪”程序的执行。仿真器将执行结果

20、通过串行口回送PC机,在显示器上,用户可以很明了地看到程序运行的结果(甚至每一步执行的结果),大大地方便了程序的查错、纠错。图11-3是一种典型的仿真器与用户系统连接示意图。图11-3单片机开发系统与用户系统连接方法 2 系统联调虽然软硬件均已经独自完成了各自的测试,系统联调问题相对少得多,但仍不能以为万事大吉,调试的任务仍很艰巨。一般是在仿真器的控制下运行用户程序,测试用户系统的各项功能。系统联调的常见方法有如下两种。2 系统联调(1)由顶向下的系统联调该方法是进行整个系统的全速仿真运行,未出现问题,完成任务;出现问题时,分析问题可能出现在哪里。分析问题主要侧重于软硬件配合时可能引起的问题,

21、如硬件中断等。根据分析,提出解决方案,着手解决问题。2 系统联调(2)自底向上的系统联调该方法是分模块进行局部的仿真运行,排除了局部故障点后,再进行系统全速仿真运行,直到符合要求为止。提示:系统调试是研制工作的最后关口,必须保证所有功能都正确可靠.1115 程序固化在仿真完成后,需要将程序固化在单片机片外或片内。这时候就需要使用编程器了,它的型号很多,档次差别也很大,具体用法请查阅编程器附带的使用说明书.1、程序固化在片外如果采用EPROM(27系列)芯片,一般需要使用EPROM擦除器将原来的内容擦除掉,然后用编程器对EPROM编程。一般EPROM芯片的擦除次数在10次左右。现在有很多EEPR

22、OM芯片可以选用,使用方便,可擦写次数大多在1000次以上。2、程序固化在片内如果单片机是EPROM类型的,同样需要进行前述的“擦除”。FLASH型器件擦除就简单得多了,可以直接在编程器上“擦除”,这也是FLASH型器件被广泛应用的原因之一。2、程序固化在片内由上可知27系列EPROM使用极不方便且无法加密,寿命又短,所以应用越来越少,而片内具有Flash存储器的单片机得到越来越广泛的使用,本书经常使用的AT89C51就是这种。最近几年新推出的AT89S51还可以在系统编程,使用非常简单的下载线就可以完成擦除、写入等工作。顺便提一下,最近几年还有的单片机带有JTAG接口,不但可以在系统编程,还

23、可以在系统调试。1116 产品验收与交付使用固化好的程序在集成电路芯片里,将电路插到用户板,通电运行,如果没有问题,就大功告成;如果有问题,可能就是大问题,必须要找到原因彻底解决,直到没有问题为止。到现场实际使用,没有问题,就可以交付用户了。需要提起注意的一个问题是:有许多行业的仪器设备是有标准的,包括行业标准、国家标准、国际标准等。1116 产品验收与交付使用尽管并非所有的项目均要技术鉴定(取决于合同约定等因素),但产品验收是必要的,验收表明了用户对开发方产品的认可。如果说合同签订是任务的开始,产品验收则标志着任务的结束。在产品验收时,应依据合同规定,逐条落实,并最终向用户交付产品及产品使用

24、说明书等有关文档。忠告:产品开发初期的合同与交付使用时的验收报告,是供需双方签订的非常重要的文件,对于解决未来双方可能产生的纠纷能起到很好的帮助作用。112 抗干扰设计单片机应用系统的可靠性是指在指定的应用环境和条件下,系统稳定工作的能力。单片机应用系统由于具有很高的性能价格比,已逐步深入到各个领域,对单片机系统工作的可靠性也就提出了越来越高的要求。因为系统一旦出现问题,将带来一系列损失,产生严重的后果。单片机应用系统的工作环境(如温度、湿度、电压扰动、电磁干扰、机械振动等)往往是很恶劣的,在系统开发中,应确保不受环境条件的影响。形成干扰的基本要素有三个:1.干扰源:指产生干扰的元件、设备或信

25、号,如雷电、继电器、可控硅、电机、高频时钟等都可能成为干扰源。2.传播路径:指干扰从干扰源传播到敏感器件的通路或媒介。典型的干扰传播路径是通过空间的辐射、导线的传导和过程通道。3.敏感器件:指容易被干扰的对象,如A/D转换器、D/A转换器、单片机、数字1C、弱信号放大器等。11.2.1 硬件抗干扰在硬件设计中,提高系统可靠性的主要措施有:采用抗干扰措施,提高系统的环境适应能力;把好元件质量关,元器件经筛选、老化后使用;印制板设计应充分考虑可靠性等。抑制干扰主要还是要从现场的环境实际出发,认真分析可能的干扰,一定要深入现场考察与分析,避免闭门造车,具体情况还要具体分析。1供电系统-稳压电源在供电

26、系统设计中,一般的应用场合可以采取同时使用工频变压器、全桥、三端稳压的方法,电路如图114所示。三端稳压器件由3个引脚组成,分别为:电源输入、稳压电源输出和地。三端稳压器件通常要求输入电压要比稳压输出电压高23V以上,才能确保输出电压稳定。图114 变压、整流、稳压电路1供电系统-稳压电路一般在三端稳压器件输入、输出端都要使用一个001F的高频瓷片电容和一个几百微法或几千微法的电解电容,使用电解电容时,应注意选择的电容的耐压值应有1倍以上的富余量。采用上述方法电路简单、实用,输出纹波小,但电源效率比较低,对浪涌、过压、欠压等抑制效果比较差。目前较广泛地采用开关电源或电源模块,如AC-DC模块、

27、DC-DC模块等方法。提醒一句,开关电源的纹波系数比较大,特别精密的场合要注意。当系统有多块线路板组成时,尽量采用每块线路板独自稳压的方法。避免线路板电源间的相互干扰,多板结构独自稳压原理如图115所示。图115多板结构独自稳压原理1供电系统-过压欠压保护供电系统过压、欠压的抑制方法可以采用稳压器、电源调节器。对停电可以采用UPS(不间断电源)或用静态RAM辅以可充电电池备份重要运行参数,也有些系统采用E2PROM保存参数。 2过程通道抗干扰-概述由于过程I/O通道是单片机与控制对象联系的纽带,所以避免现场强信号对单片机系统弱信号的干扰是成功开发单片机应用系统的关键。从干扰的分类来说,无外乎串

28、模和共模干扰两种,解决过程I/O通道干扰可以从以下几个方面着手。2过程通道抗干扰-方法1隔离:目前很多的应用场合均采用光耦实现电气隔离。2屏蔽采用屏蔽的方法可以避免空间电磁干扰,注意屏蔽层应接地。3“地”的正确处理单片机应用系统的“地线”有很多,应仔细区分,恰当处理。2过程通道抗干扰-地线(1)数字地:也称为逻辑地,为逻辑芯片如8031、8155等芯片提供工作电源的零电位。(2)模拟地:A/D、D/A转换模拟部分的地,如参考电压、模拟输入等的零电位。(3)功率地:大功率器件的零电位,如大继电器(电流较大时)、接触器等的零电位。(4)信号地:一般常指传感器的地。(5)交流地:50Hz交流电源的地

29、线(对于三相交流电源来说就是中线)。(6)屏蔽地:屏蔽层的接地端。2过程通道抗干扰-接地正确的接地能有效地保证少受干扰。例如,数字地和模拟地应分开走线,可以不共地,共地时,应保证两地线仅在一点处汇合(一点接地),不能形成环路。交流地和信号地不能共用。机壳可接地但不能形成地线环路。特别注意,不良的接地方法可能使系统仅能在实验室试验运行,一到现场就无法工作。2过程通道抗干扰-信号传输在长距离信号传送时,采用双绞线方式传送,或者转换成020mA电流传输方式,还可以使用屏蔽导线,也可以改变信号的传输方式以避开强干扰信号源等等。具体情况比较复杂,要根据情况分别对待,或者采用采用几种方法的综合措施,最终必

30、须达到使用要求。提示:这一方面的进展很快,新技术、新方法、新器件不断出现,我们要及时跟踪最新进展,采用先进技术,使得我们的单片机系统性能更好,性价比更高。3硬件抗干扰几种常用手段 (1)P监控常用TL7705电源监视芯片来监测电压。TL7705电源监视如图116所示,其中SENSE为电源监视端,当SENSE上的电压小于45V时,RESET输出低电平(产生下降沿),向单片机申请中断,在中断服务程序中进行一些保护重要数据的工作,然后使单片机进入休眠或掉电状态。RESET:复位输出,低电平有效,OC开路,需上拉电阻。RESIN:复位输入端,输入低电平时,强制复位输出端。3硬件抗干扰几种常用手段 (1

31、)P监控图116 TL7705电源监视3硬件抗干扰几种常用手段 (1)P监控随着芯片集成度不断提高,工程技术人员往往热衷于既能提供P监控,又能提供其他功能的芯片。如MAXIM公司的MAX807,它将电源监视与看门狗集成到一起,提供定时、电源切换等多种功能。现在还有的芯片把监控和EEPROM集成在一起,性价比更高。比如X2504系列芯片。3硬件抗干扰几种常用手段(2)硬件看门狗使用硬件看门狗的主要目的是防止程序执行受到干扰,不能按正常的流程执行的一种监视芯片。所谓“看门狗”,就是一个定时器,定时时间到,它就输出一个信号,使单片机复位。所谓“喂狗”,就是把定时器的计数值清除。只要按时喂狗,定时器就

32、不会到达定时时间,单片机就不会复位。如果程序“跑飞”,或者进入死循环,不能按时喂狗,就会复位。使单片机重新开始正常工作。3硬件抗干扰几种常用手段(2)硬件看门狗例如,XICOR公司的X2504345就是将看门狗电路与复位电路(含手动上电复位)以及4KB的串行EEPROM集成在一起的芯片。X25045典型应用如图117 所示。美国DALLAS公司生产的“看门狗(WATCHDOG)”集成电路DS1232具有性能可靠、使用简单、价格低廉的特点,应用在单片机产品中能够很好的提高硬件的抗干扰能力,采用8脚DIP封装。3硬件抗干扰几种常用手段(2)硬件看门狗图117 X25045典型应用 3硬件抗干扰几种

33、常用手段(3)退(去)耦电容每个芯片电源进线处尽可能接一个104(01F)或103(001F)的退耦电容(可以用陶瓷电容,目前使用较多的是独石电容)。每隔5个左右芯片安置一个110F的胆(电解)电容,因为这种电容的高频阻抗很小,对噪声抑制效果很好。3硬件抗干扰几种常用手段(4)续流二极管在继电器线圈两端增加续流二极管,消除线圈断开时产生的反电动势干扰。仅加续流二极管会使继电器的断开时间滞后,若再增加稳压二极管,则可改善响应速度,消除滞后性。在继电器触点两端应并接火花抑制电路,减小电火花影响。3硬件抗干扰几种常用手段(5)瞬态电压抑制器TVS瞬态电压抑制器(TransientVoltageSup

34、pressor,简称TVS),使用TVS二极管进行浪涌保护比使用压敏电阻优越得多,具有响应时间快,瞬态功率大,漏电流低,击穿电压偏差小,箝位电压易于控制,有效地保护电子线路中的精密元器件,免受各种浪涌脉冲对元器件造成的损坏。1122 软件抗干扰措施与硬件的抗干扰措施一样,软件的抗干扰措施也非常重要,软件设计中,可以通过增加系统的自检,重要参数备份,设置软件陷阱,模拟量输入采用软件滤波等手段提高系统的可靠性。这里只对一些常用的方法加以讨论。1软件自检-开机自检软件抗干扰还可以在上电复位后,调用自检子程序,检测单片机内部资源和外部扩展电路能否正常工作,自检正常后才进一步执行其他程序,否则提示故障点

35、。这是检查硬件的情况,需要硬件的配合,在硬件设计的时候就要考虑到自检的需要,以确保电路能正常工作。这一部分比较麻烦,请自行参考有关硬件资料,此不多述。1软件自检-数据备份由于单片机内部RAM单元存放着重要的标志和数据,一旦受扰引起标志数据的改变,势必造成系统运行异常。防止标志位受扰可以采用定期检查标志合法性的方法,发现干扰及时处理,例如发现不可能出现的标志组合及时处理。也可以采用标志冗余的方法,借助冗余标志,进行标志位异常判定和纠错。防止数据受扰可以采用热备份的方法,适时比照、判定并纠错。在保护单片机内部RAM时经常使用双重备份、表决纠错的方法,将单片机内部RAM单元数据作两个热备份,一旦发现

36、三个数不相同就采取表决的方式确定正确的数据。2软件陷阱电磁干扰除了会对测量物理量的结果产生影响之外,还能直接影响程序的正常运行。正常执行程序时,CPU按照PC中的数值(地址)到ROM中去取指令。受到干扰时,一般可能使程序计数器PC的数值改变,或者其输出的地址信号受到干扰而改变,到不该去的地址取指令(称为“跑飞”)。为了防止造成灾难性的后果,在进行系统设计时,可以在硬件和软件方面分别加以考虑。硬件方面前已述及,现在介绍一些软件方面的方法。对于MCS-51系列单片机,其程序存储器的地址空间为64K,通常只使用了部分地址空间存放程序代码和数据,可以把64K的地址空间分为“空闲”和“非空闲”ROM。2

37、软件陷阱(1).空闲的ROM空间对于空闲的ROM空间,正常操作时是不会使用的。但是在强干扰的情况下也可能到空闲的ROM空间去取指令,即“跑飞”。故此应该在空闲的ROM空间存入适当指令,在程序跑飞到那里时能够回到正常区域或者进入错误处理程序,这种方法称为软件陷阱。可以填入的指令代码有以下几种形式:.填入 00 00 00 00 00 00 这是空操作指令,进入此区域时不进行任何操作,逐步执行到FFFFH后,就会回到0000H,这是复位入口地址,重新开始正常程序。2软件陷阱(1).空闲的ROM空间.填入 02 00 00 02 00 00 02 00 00 这是无条件长转移指令,会直接转移到 00

38、00H,立即进入复位状态。.填入 02 02 02 02 02 02 02 02 02 这是无条件长转移指令,当从此区域取指令时,直接转移到0202H。在0202H单元,我们应该编写“跑飞”处理程序,或者在此处放置一条转移指令,转移到跑飞处理程序。如果正常程序用到0202H单元,必须在0202H单元之前编写转移指令,越过0202H即其以后的若干单元,留出作为“非常处理”的程序入口。2软件陷阱(1).空闲的ROM空间如果程序“跑飞”到没有安装ROM芯片的地址单元,取到的代码将是FFH,这是指令 MOV R7,A 继续执行的结果是,一段时间后,回到0000H,进入复位程序。2软件陷阱(2).非空闲

39、的ROM单元对于非空闲ROM单元,一般已经存放了程序代码和数据,处理起来比较困难。可以在关键程序段中加入一些校验的程序段,检查当前的外部环境状态,如果不是属于本段程序处理的范围,就可能是程序跑飞到这里,应该转移到处理跑飞的程序段。2软件陷阱(2).非空闲的ROM单元另外,由于有些指令是23个字节,当PC内数值跑飞时,也有可能把这种指令的一部分当作完整的指令来执行,同理也有可能把数据部分当作指令代码来执行,这样执行起来,程序就面目全非了。当我们在任意地址对机器代码进行反汇编时,经常可以看到这种不可理解的现象。为了尽量减少这种现象的发生,可以在指令中间加入一些NOP指令使CPU取几条指令以后,一般

40、可以纳入正轨,按照原来的指令位置取指令。3、重复输出指令一般单片机的扫描周期为几个毫秒,万一某个输出指令受到干扰出现错误动作,重复的输出指令会在短时间内纠正这个错误,一般的外设动作速度比较慢,可能是错误的动作还没有执行就被纠正了。这种方法对于电磁类执行机构效果很好。注意:使用任何一种抗干扰措施,都要与当时的客观环境相适应,才会取得理想的结果,不可生搬硬套。往往需要几种方法综合应用会取得互补的作用。113 应用举例本节以自动打铃器为例,讲解MCS51系列单片机的一个应用项目的设计过程。这只是一个非常小的应用项目,电路比较简单,功能比较简单,程序规模也不大,要求也不是很严格,工作环境也比较好,所以

41、设计起来也容易。但是,只要你能够完成这个简单的项目,就算是入门了,也就可以完成更复杂的项目。这里给出的只是一个示例,并不一定是最好的方案,更不是唯一的方案。1131用户需求分析和总体设计大多单位都有比较固定的作息时间,尤其是学校,要按时打铃,以指挥师生员工上课、下课等统一行动。现在我们可以利用单片机设计自动打铃器,在预定的时间打铃。这项设计涉及到单片机的定时器、中断、键盘输入、LCD数码和字符显示、I2C总线、单总线、开关量输出等内容。考虑实训时间和篇幅限制,这里只要求自动打铃。如果觉得内容不够,还可以增加环境温度的测量、显示以及语音报时等等。1、根据用户要求确定设计任务书根据实际情况,(经过

42、用户认可)我们确定的设计任务书如下:产品名称:自动打铃器产品功能:1、每天一次循环,按照作息时间表自动打铃;2、每次打铃电铃响十秒(最好可以修改);3、每天打铃次数在32次以内;4、作息时间输入修改要方便;1、根据用户要求确定设计任务书15、实时钟对表和快慢调整;6、实时显示时分秒;7、平时使用220V交流电,停电时要有备用电池保持时间和作息时间表;8、输出继电器控制,最大控制电流5安培(220V交流);9、临时打铃( 手动)。设计周期:2周设计费用:其 它:2、总体设计总体设计,其中最主要的就是原理设计。根据设计任务书的要求和现有的技术条件,在满足功能、性能等用户需求的基础上,初步提出可选技

43、术路线,并对各方案进行必要的分析,充分听取方方面面的意见,选择一种实施方案。本项目的实施方案如下:2、总体设计1选用机型:AT89C51(可以使用简化版AT89C2051)。这是美国ATMEL公司生产的与INTEL公司的MCS51系列全兼容的单片机产品,指令兼容,引脚兼容,可以直接代换。其优点是片内程序存储器是电擦写的,使用方便,耗电少,价格低。时间显示:16位2行的液晶显示模块1602,显示内容比较多。并行口连接。键盘输入:4个独立式按键,分别是对表、定时、临时打铃和上、下、左、右调整键2、总体设计2打铃输出:经二级晶体管放大驱动12V直流继电器,控制220V电源通、断电铃。系统扩展:不需要

44、扩展RAM、ROM、和其它I/O接口,只需要通过I2C总线扩展一片24LC16B,用于保存打铃时间,以保证掉电不丢失,免得重新设置之麻烦。2、总体设计3电源部分:220V交流电经降压、整流、滤波、稳压,提供12V和5V两种直流电源,再加可充电电池作备用电源,停电时保持时钟和作息时间表。交流供电时给电池充电。现在,专用的日历时钟芯片很多,性能也很好,尤其是精度可以很高,省电,使用方便。如果采用这类芯片,程序会减少很多。但是考虑为了更好的熟悉定时器的使用,我们还是利用单片机本身的定时器来产生时间。本设计的仿真文件:自动打铃器.DSN本设计的简要功能说明:1、开机后自动进入走时状态,打铃时间到自动接

45、通电铃电路10秒。2、按K0键进入对表状态,设置方法: 按向左或向右移动光标 按增加或减少修改光标处数值 星期的数值1-7,7代表星期日 星期的英文字符不用修改 5秒钟不操作自动保存修改并返回本设计的简要功能说明1:3、按K1键进入定时打铃时间设定状态:001表示第一个设定打铃时间,最多可以设置127个时间。后面的是小时、分和启用标志,启用标志设为1表示时间有效,到时打铃,启用标志设为0表示到达这个时间也不打铃。每次时间到打铃10秒,同时蜂鸣器响。打铃时间设置方法:按向左或向右移动光标,按增加或减少修改光标处数值,启用标志的值大于1也算启用,5秒钟不操作自动保存修改并返回1132 硬件设计1、

46、原理图设计根据设计任务书和整体设计方案,经过比较和计算,设计原理图如图118直到图11-11所示。单片机选用AT89C51,DIP40封装,内部有128字节的随机存储器,有4K字节的电擦写的程序存储器,可以反复擦写1000次。图118 自动打铃器硬件原理图(主机板)图11-9 打铃器按键图11-10 打铃器电源(通用电源模块)图11-11 打铃器继电器输出2、原理图设计说明(1)电源:(如图11-10)这是一个通用电源模块,以前用在其它单片机测控系统中,用在自动打铃器也很合适。自动打铃器消耗电流最大的时候是打铃时间到,12V直流继电器接通同时打铃指示LED亮和讯响器响,电流在100毫安以下(约

47、80毫安),不打铃的时候消耗电流只有十几个毫安,给蓄电池充电的电流控制在50毫安以下,选择220V5W电源变压器容量足够,输入220V交流电,输出12V交流。如果数码显示用LED数码管,则电源变压器容量应该选10W左右。2、原理图设计说明(1)电源:(如图11-10)整流滤波之后输出电压在13V左右,供給继电器使用,不需要稳压。后备电源使用6V免维护铅酸蓄电池,价格便宜容量大,可以支持较长的停电时间,只是重量大些。为了保护蓄电池,不使其过充和过放,分别加了保护电路,当电池电压高于7V时停止充电,当电池电压低于5V时停止放电。蓄电池的输出直流电源(57V)经三端稳压电路7805后输出5V经二极管

48、降压后变成4.3V供给单片机,AT89S51的工作电压在4V-5.5V之间。2、原理图设计说明 (2)输出(如图11-11)打铃器的输出由12V直流继电器控制。继电器既起到功率放大的作用也起到强弱电隔离作用。与继电器线圈并联的红色LED起到打铃指示作用,与线圈反并联的二极管是起续流作用。P1.1的输出是低电平有效,可以防止单片机复位时的高电平自动响铃。P1.1的输出经2级晶体管放大驱动直流继电器工作。讯响器的工作电压在35V,电流10mA左右,通电就响。AT89C51的并行口可以直接驱动,低电平有效。它的作用也是打铃指示,同时它可以在停电的时候也工作,提醒时间到。这就使得这个自动打铃器在不接电

49、铃的时候成为闹钟。2、原理图设计说明 (3)按钮(如图11-9)从图上看总共有5个按钮,一个是复位按钮,手动复位用;其余4个各占用一位I/O口线,属于独立式键盘,按下是低电平,接在P0.0P0.3上,其作用见图11-9中标注。2、原理图设计说明 (4)接插件由于电源、按键、LCD显示器等部分不在一块电路板上,他们之间通过对应的接插件相连。需要使用具有定位结构的接插件,以免插错。2、原理图设计说明 (5)显示本设计采用LCD显示模块FM1602。这是一种常见的字符型LCD显示模块,可以显示2行,每行16个字符。具体使用方法请参见第九章人机接口LCD显示部分。打铃器工作于室内,环境也比较好,没有强

50、烈的干扰,看门狗电路就省略了。、PCB板图设计说明在原理图中选中了元件的封装,产生了网络表,就可以直接转到PCB板设计。设计中考虑了PCB板的设计原则和注意事项:比如地线,输入输出,线宽等。此外还要考虑安装、维修的方便等。初步设计采用双面板布线,布线之后的板图如图11-12所示,图中所示是正面能看到的图线,背面的走线没有显示。这只是初步设计,还有一些需要根据实际安装的情况来调整。Proteus软件提供了3D预览功能,见图11-13所示。图1112 布线之后的PCB板图(主机板,焊接面的走线没有显示)图11-13 3D预览图(主机板) 、PCB板图设计说明电路板上的一些文字和符号,说明元件的性质

51、,数值等。PCB板3D预览图上的汉字在这里显示成一串 “?”。按键电路和电源电路板单独设计,液晶显示器要安装在前面板上,它们与主机板的连接通过接插件和电线相连,安装位置要符合用户的要求,这里没有给出板图,主机板上只给出了接头。1133 软件设计软件设计是个需要耐心和细致的工作,也是能体现工作成果的工作。我们的软件采用MCS-51的汇编语言编写,这对我们来说是个锻炼。C51有编写方便的优点,但是代码较大,需要较多的程序存储器,执行速度慢。同时,C51也需要有汇编语言的基础才行。1、整体功能描述和主程序设计软件的整体功能就是要在硬件的配合下完成项目的整体功能,还要界面友好,方便实用。自动打铃器的主

52、要功能是在规定的时间接通电铃电路,让电铃响起来。这个功能实现起来比较容易。为了使用方便,还需要:随时显示当前时间,方便的对表功能,方便的输入和修改定时打铃的时间,如有特殊情况可以手动临时打铃。还有环境温度的测量和显示。还要符合人们的习惯,有适当的提示信息等等。1、整体功能描述和主程序设计1一般程序设计大都把整体功能分解为一些子功能,每个子功能用一个或者几个子程序来实现,然后在主程序中根据需要来调用子程序,也有些功能通过中断来实现。我们的程序也是按照这个思路来编写。1、整体功能描述和主程序设计2所有程序清单略。可以参看光盘文件:软件设计.DOC。还可以参看光盘文件:自动打铃器.DSN。那里有全部

53、的程序清单,注释很详细。1、整体功能描述和主程序设计(一)I/O接口和内存分配软件是要与硬件配合工作的,硬件设计时接线已经确定,数据的输入输出接口地址也已经确定,这些是软件工作的基础。同时我们也把内存的分配一并考虑。这部分内容是利用伪指令定义一些I/O接口、内存单元,以便合理使用。1、整体功能描述和主程序设计(二)主程序设计主程序的主要功能是:初始化;检查按键,并调用功能子程序;根据情况调用显示子程序、测温子程序、比较判断打铃时间等子程序,并根据结果控制继电器的动作;控制临时打铃。主程序框图如图1114所示 主程序框图如图11142、中断服务程序设计根据自动打铃器功能需要,本设计只使用了定时器

54、0的中断。定时器0中断服务程序 ,T0方式1,初值15536,每100毫秒中断一次,高优先级。定时器0中断的功能是实现实时时钟。如果使用专用的实时时钟芯片,程序会更简单。为了熟悉定时器的使用,没有使用专用的时钟芯片。2、中断服务程序设计1这个程序不太复杂,执行时间也不长,设成高优先级,也不会被其它中断所打断,一气呵成,保证时间变化及时完成。本来只要计算到24小时就可以,考虑使用方便,增加了月日星期的计算。如果需要,还可以设计农历的显示,这里从略。还有为了显示的方便,每秒钟设置一个显示标志DSP(20H.1),由主控程序识别并调用显示子程序,同时清除此标志。程序的其它功能和技巧在前面章节讲过,不

55、再重复。程序清单:(略。可以参看光盘文件:软件设计.DOC。还可以参看光盘文件:自动打铃器.DSN。那里有全部的程序清单。)3、子程序主程序通过调用子程序来实现各种功能,这里的子程序主要有显示、对表、打铃时间设定、测温等,这里用到的子程序,多数都在前面的章节里讲过,有的进行了少量的修改,但是基本思路是一样的,为了节约篇幅,所以都没有给出程序框图。3、子程序(1)显示子程序这个子程序的作用是,将显示缓冲区中的ASCII码,发送到LCD显示模块1602,使其显示出相应的字符。这里还用到了许多辅助子程序。关于LCD显示模块的内容请参阅第九章9.2.2节,所讲述的内容就是我们在这个设计中的使用的程序。

56、3、子程序(2)测温子程序我们使用DS18B20来测量温度,关于它的使用方法和程序,请参阅第十章10.3.3节,所讲述的内容就是来自于我们在这个设计中的使用的程序。3、子程序(2)测温子程序从DS18B20中读出来的数据存放在TEMPER_L(低字节)和TEMPER_H(高字节)两个字节中,低字节中的高4位和高字节的8位(共12位)是温度数据的整数部分,低字节中的低4位是小数部分,二进制数补码(参见第十章的读温度子程序READ_1820和图10-24)。我们先用子程序TEMPER_COV把它们转换成便于显示和识别的形式,然后被另一个子程序转换成便于LCD显示的ASCII码送到显示缓冲区(参见:

57、填充LCD显示屏映像区 (显示缓冲区)子程序FILLLCD)。3、子程序(3)对表子程序对表子程序的功能就是将自动打铃器的实时时钟调整到与当地标准时间一致。由主控程序调用。当用户按动对表按键(K0),主控程序会检测到并消除抖动,蜂鸣器响,然后等待按键释放,调用对表子程序。3、子程序(3)对表子程序进入对表子程序后,首先显示当前的机器时间,并且有闪动的光标(默认是在年份闪动),如果要修改这个数字,直接按增加或减少键,直到出现你希望的数字即可;如果你要修改的数字现在没有闪动,可以按向左或向右键,使下一个数字闪动,然后开始修改,直到年月日星期时分秒都修改好,等待5秒,就可以自动保存修改并退出对表功能

58、,回到正常显示。如果在对表过程中停止按键,5秒后也是自动保存并返回。这时候你可以再次按对表键继续对表。在对表期间,除了定时器中断可以正常发生,不执行主程序的其它功能。3、子程序(3)对表子程序对表过程中修改的时间数据,是显示缓冲区中的数据,是ASCII码,所以还要将这里的数据转换成二进制,送回时间计数单元。所以这里有2个子程序,D2T和HEBING分别完成转换和回送功能。其余的子程序与显示有关,这里不再重复。顺便说一句,往往一个项目中最麻烦的地方就在人机接口这部分。对表程序流程图如图11-15所示图11-15 对表程序流程图3、子程序(4)打铃时间设定子程序自动打铃器就是事先设置好打铃时间,等

59、到了设定的打铃时间就自动接通电铃,每次响10秒。这个子程序就是用来设定打铃时间。设定的打铃时间存储在串行接口的EEPROM 24LC16中,可以保证断电不丢。3、子程序(4)打铃时间设定子程序在正常走时情况下,按 “向下减少 定时设定” 键(K1),进入设定功能。主程序检测到K1键按下,延时10毫秒以消除抖动并使蜂鸣器响,然后等待按键释放,进入定时打铃设定子程序。LCD屏幕第一行显示:Jow time seting(打铃时间设置),第二行显示:001 00:00 0(序号 小时:分钟 启用标志)。3、子程序(4)打铃时间设定子程序序号 也是存储的顺序号,最多可以存储127个记录,最先设定的时间

60、序号是001。小时:分钟 就是需要打铃的时间,只能精确到分钟,不能到秒,24小时制。启用标志 这里设置为1到这个时间就打铃,设为0到这个时间也不打铃。设定程序执行期间,T0中断继续允许,其他功能暂停。3、子程序(4)打铃时间设定子程序设置程序中用到了几个子程序,和显示有关的请参看第九章,和串行EEPROM有关的请参看第八章,数制转换请参看第四章,其余的都很简单。这个程序用到了串行EEPROM 24LC16B的写入子程序,可以参看第八章有关内容。3、子程序(4)打铃时间设定子程序使用方法:进入设定后,按向左、向右键移动光标,按增加、减少键修改数值。5秒钟无操作,自动记录设定值并返回正常走时状态。

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论