版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
摘要随着国民经济和科学技术水平的提高,特别是计算机技术、通信技术、网络技术、控制技术的迅猛发展与提高,促使家庭实现了现代化、居住环境舒适化、安全化。这些高科技已经影响到人们生活的方方面面,改变了人们生活习惯,提高了人们生活质量,智能家居就是在这种形势下应运而生。而且随着作为智能家居控制器的电子产品向智能化和微型化的不断发展,单片机已经成为电子产品研制和开发中首先选择的控制器。基于以上思路,使用ATMEL公司的AT89S52实现基于单片机的智能家居的设计,其主要具有如下功能:红外遥控选择功能,按下相应的按键选择进入相应的功能。密码锁设置有6位密码,密码通过矩阵键盘输入,输入过程中发现错误可进行逐个删除的操作。若密码正确,则LED液晶屏显示锁开,否则会有错误提示,三次输入错误则锁关且伴随蜂鸣器发出警告。此外,在密码正确的情况下可以进行更改密码操作。步进电机实现正转和反转运行,并延时3秒。温度感应装置,可以在数码管显示当前温度。当超过一定温度时,蜂鸣器发出声响予以警告。本次设计以ATMEL公司的单片机AT89S52为核心控制器件,选用上海浩豚电子科技公司开发的MINI80开发板模拟智能家居环境。同时使用KeviluVision3软件来编写单片机的C语言程序,继而完成软件调试,然后下载到开发板进行硬件调试。最后联合软、硬件调试电路板,完成本次毕业设计。关键词:智能家居,单片机,AT89S52,红外遥控ABSTRACTAsthenationaleconomyandraisethelevelofscienceandtechnology,especiallytherapiddevelopmentofthecomputertechnology,communicationtechnology,networktechnology,controltechnologyandtheimprovementofthefamilytorealizethemodernization,tolivingenvironmentcomfortablechange,secure.Thesehigh-techhasaffectallaspectsofpeople'slives,changedpeoplelivinghabits,improvedpeoplelifequality,SmartHomeisalsothissituationarisesatthehistoricmoment.Andasintelligenthouseholdcontrollerelectronicproductstointelligentandthecontinuousdevelopmentofminiaturization,microcontrolunit(MCU)havebecomethefirstchoiceforcontrollersinthedevelopmentofelectronicproducts.BaseonthethinkingofSmartHome,thisdesignusesAT89S52ofATMELcompany.tocarryoutthedesignoftheSmartHome,itsmainfunctionasfollow:1.ThecorrespondingfunctionofIRremotecontrol.whenpressthebuttoncanenterrelevantfunctionrespectively.2.Codelockissetsixpasswords,andpasswordsareinputthroughthekeyboard.Whenfounderrorsintheprocessofiuputing,youcanrunaoperationofdeletingeachpassword.Ifthecorrectpassword,thenLCDscreendisplaythelockopen,otherwisetherewillbeerror.Andthreetimesrelistedandinputerrorsarelockedwithbuzzerwarned.Inaddition,inthecorrect,itcanchangethepassword.3.Stepmotorcanundertakeareturningandreverse,anddelaythreeseconds.4.Temperaturesensingdevice,canbeindigitaltubedisplaythecurrenttemperature.Whenmorethanacertaintemperature,italarmstobuzzertips.ThisdesignselectsAT89S52ofATMELcompanyanduseMINI80developmentboardofShanghaiHaoTunelectronictechnologydevelopmentcompanyasenvironmentsimulationoftheSmartHomeandcompilewithsoftwareofkeiluVision3.Andthendowanloadtheprogramtothedevelopmentboard.Last,testthecircuitboardwithedthesoftwareandhardwaretofinishthedesign.KEYWORDS:SmartHome,MCU,AT89S52,IRRemote目录TOC\o"1-2"\h\z\u第1章绪论 1第2章智能家居系统总体设计 22.1系统设计任务和要求 22.2课题分析 22.3系统可行性分析 22.4设计原理 42.5系统组成 5第3章智能家居系统的硬件电路设计 63.1单片机AT89S52简介 63.2红外遥控简介 83.34×4矩阵键盘 103.4步进电机 113.5LCD1602显示器 133.6DS18B20数字温度传感器 163.7数码管显示电路 193.8复位电路 203.9振荡电路 213.10蜂鸣器 21第4章软件程序设计 234.1软件设计 234.2C语言的特点 234.3具体软件模块实现 24软件抗干扰技术 29第5章系统调试 31部分模块电路调试 315.2调试分析 325.3故障分析 32结论 33致谢 34参考文献 35附录1:部分系统程序清单 36附录2:系统实物照片 43第1章绪论20世纪八十年代初,20世纪八十年代初,随着大量采用电子技术的家用电器面市,住宅电子化出现,80年代中期,将家用电器、通信设备与安全防范设备各自独立的功能综合为一体后,形成了住宅自动化概念。80年代末,通信与信息技术的发展,出现了通过总线技术对住宅中各种通信、家电、安防设备进行监控与管理的商用系统,这在美国称为SmartHome,也就是现在智能家居的原型。智能家居最初的定义是这样的,将家庭中各种与信息相关的通信设备、家用电器和家庭安防装置,通过家庭总线技术HBS(HomeBusSystem)连接到一个家庭智能系统上,进行集中或异地监视、控制和家庭事务性管理,并保持这些家庭设施与住宅环境的和谐与协调,HBS是智能住宅的基本单元也是智能住宅的核心。目前通常把智能家居被定义为利用电脑、网络和综合布线技术,通过家庭信息管理平台将与家居生活有关的各种子系统有机地结合的一个系统。也就是说,首先,它们都要在一个家居中建立一个通讯网络,为家庭信息提供必要的通路,在家庭网络的操作系统的控制下,通过相应的硬件和执行机构,实现对所有家庭网络上的家电和设备的控制和监测。其次,它们都要通过一定的媒介平台,构成与外界的通讯通道,以实现与家庭以外的世界沟通信息,满足远程控制监测和交换信息的需求。最后,它们的最终目的都是为满足人们对安全、舒适、方便和符合绿色环境保护的需求。由此可见,智能家居是一个系统层次概念,它涵盖了在建筑环境层次能够影响人们生活的诸多方面,就实际应用而言往往有以下系统:可视对讲系统,家庭安防系统,网络通讯系统,家电控制系统等等。目前,虽然智能家居有一定的发展,出现了一定数量的研究机构和公司,尤其是经历了2000年的智能家居概念炒作之后,智能家居得到空前的发展。但智能家居在中国还处于初始阶段,缺乏统一的标准和权威的产品。本人想设计一款基于MCS-51单片机的智能家居系统。该系统由密码锁模块、红外线遥控系统、步进电机,温控系统构成。该系统的安装无需改变家庭原有的布线,只对原有布线稍加修改即可,可有效的解决单个家庭对智能家居产品的需求,且成本小、安装周期短,在国内有很大的市场潜能。但是由于本人能力,时间以及芯片内存的限制,要做整个系统显然是不可能的。对整个分系统而言,可以发现有很明显的相似性,只是在某些细节上需要做不同的分析。故而做好其中一个便可触类旁推。基于此,本设计仅对仅对一部分智能控制系统做简要设计。该智能家电可以进一步进行拓展,可以通过GSM网络完成与控制系统间的信息交换,进而传递控制信息;可以再室内安装光控系统自动控制窗帘的开闭;也可以通过ARM嵌入式的控制实现一键遥控多个电器的功能等等。本设计第二章介绍了本系统的设计原理,第三章为系统硬件设计,第四章系统软件设计。第2章智能家居系统总体设计2.1系统设计任务和要求本系统由单片机控制,使用无线红外遥控技术进行一定距离的数据传输,电子密码锁的键盘输入及LCD显示,步进电机的定时转动,温度传感器数码管显示实时温度并高温警告。测量温度范围:-40℃~+125℃;传输距离:大约为1-3米2.2课题分析首先,对于智能家居系统,基础的功能是必须满足的,同时还要满足易于控制的条件,但单片机的内存是有一定的限度的。因此选择合适的内存的单片机控制成为本次设计的重中之重。再次,对于每一个独立的功能,都需要做到最大可能的精确定时,这就要求用到定时器。每一个功能选用合适的定时器而且不会和其他功能的定时器产生冲突,也是一个需要认真考虑的地方。2.3系统可行性分析两种设计方案方案一:以AT89S52为核心的单片机控制方案。利用单片机灵活的编程设计和丰富的I/O端口,及其控制的准确性,来设计实现基本的密码锁功能。在单片机的外围电路上接输入键盘用于密码的输入和一些功能的控制,可以使用红外进行短距离的无线遥控,接LCD1602显示器用于显示作用,以及接其他设备。方案二:以74LS112双JK触发器构成的数字逻辑电路控制方案。由两块74LS112双JK触发器组成的逻辑电路,采用分立元件组成电子密码锁,其构造简单,可以方便的实现密码控制和报警电路控制等功能。但采用该方案使用的元件数量会过多,不仅不易进行修改设置,无法根据环境的改变而适时修改功能,而且升级能力不够强大,当板制成后只能固定的实现一种特定功能。考虑到数字电路方案原理过于简单,而且不能满足现实的安全需求,而采用单片机控制的智能家居系统不仅升级方便,而且程序修改简单,所以本系统采用方案一完成电子密码锁的功能。键盘的选择方案一:采用独立式按键来控制使用独立式按键来控制液晶的显示需要很多的按键。该方案每一个按键实现一个功能,有易于控制,程序编写简单的优点,但是每个按键都需要接上拉电阻,这样占用了单片机大量的I/O接口资源,不仅要对单片机外扩I/O口,并且在电路焊接方面很不方便,浪费了大量的资源,提高了系统成本。方案二:采用矩阵式按键来控制矩阵式键盘用于按键数目较多的场合,它由行线和列线组成,按键位于行、列的交叉点上。把按键按行、列组成矩阵,在行列交点上都对应有一个键,这样使用的按键要少,这种判定有无键被按下以及确定被按键的位置的方法称为键扫描法。该方案虽然提高了编程的难度,但是节约了单片机大量的I/O口资源,免去了为焊接上拉电阻带来了麻烦,提高了整块电路板的美观度。基于实际考虑,本系统选择方案二来设计按键。单片机的选择方案一:采用AT89C51单片机AT89C51单片机是一种低电压、高性能CMOS8位微处理器,可以与其它51系列的单片机兼容,其内部ROM全部采用FLASH,ROM最高时钟频率可以达到24MHz,且能以3V的超低电压工作。但AT89C51内部ROM仅为4KB,不利于功能的扩展。方案二:采用AT89S52单片机AT89S52单片机具有AT89C51的全部功能,最高外接晶振可达33MHz,而且内部ROM为8KB,有利于功能的扩展。基于实际考虑,本系统选择方案二来设计单片机。报警模块的选择方案一:采用语音报警采用语音报警,虽然可以使整个系统更加完美,但是会使程序更加复杂,而且提高了整个系统的造价。方案二:采用发光二极管和蜂鸣器来报警采用发光二极管和蜂鸣器来报警,可以发出声光报警,降低了成本。基于实际考虑,本系统选择方案二来设计密码锁。电源模块的选择方案一:采用干电池作为系统的电源采用干电池作为单片机电子密码锁的电源,由于调试时间较长,干电池需要经常更换,不符合节约社会资源的要求,并且带方案需要有一个硬件将3节电池串联在一起以产生足够的电压,若如此,将造成携带的不便。方案二:采用5V直流稳压电源作为系统电源采用5V直流稳压电源作为系统电源,不仅功率上可以满足系统需要,而且不需要更换电源,比较轻便,使用更加安全可靠。基于以上分析,我们决定采用方案二。2.4设计原理结合整个系统的功能、成本、美观度等方面的综合考虑,本系统主要由单片机、矩阵键盘、液晶显示器和密码存储、红外遥控等部分组成。其中红外遥控部分用于系统启动时的功能选择;矩阵键盘用于输入数字密码和一些功能的实现。用户通过连接在单片机的矩阵键盘输入密码,单片机接收键入的代码,并与存贮在ROM中的密码进行比较,从而判断密码是否正确,然后控制引脚的高低电平传到开锁电路或者报警电路控制开锁还是报警。如果密码正确,则开锁;如果密码不正确,则允许操作人员重新输入密码,并且报警提示,对于信息,则通过LCD显示器及发出声光报警来显示;步进电机可以进行定时的正转和发转;数码管则可以根据数码采集模块显示当前的温度,并且在高于一定温度值是予以警示。系统共有两部分构成,即硬件部分与软件部分。其中硬件部分由电源输入部分、键盘输入部分、红外遥控部分、复位部分、晶振部分、蜂鸣器报警部分、LCD显示部分、步进电机部分、温度采集部分、数码管显示部分组成。软件部分对应的由主程序、初始化程序、LCD显示程序、键盘扫描程序、键功能程序、延时程序、温度采集程序、数码管显示程序、步进电机驱动程序、红外遥控程序等组成。其原理框图如图2-1所示。Lcd显示电路复位电路Lcd显示电路复位电路数码管显示电路红外遥控电路数码管显示电路红外遥控电路步进电机电路步进电机电路键盘扫描电路AT89S52键盘扫描电路AT89S52报警电路晶振电路报警电路晶振电路电源电路温度采集电路电源电路温度采集电路图2-1智能家居系统原理框图2.5系统组成 在确定了选用什么型号的单片机后,就要确定外围电路。其外围电路包括电源输入部分、红外遥控、键盘输入部分、复位部分、晶振部分、温度采集部分、数码管显示部分、步进电机部分、报警部分、LCD部分,根据实际情况,键盘输入部分选择4*4矩阵键盘,显示部分选择液晶显示LCD1602,步进电机采用MP28GA,温度采集使用DS18B20数字温度传感器。根据以上器件,选取了上海浩豚电子科技公司生产的MINI80单片机开发板作为基本的模拟环境。该开发板器件优良,做工精细,完全可以满足本次设计需求。其原理图如图2-2所示。图2-2开发板硬件电路原理图第3章智能家居系统的硬件电路设计 3.1单片机AT89S52简介主要特性AT89S52是一种低功耗、高性能CMOS8位微控制器,具有8K
在系统可编程Flash
存储器。使用Atmel
公司高密度非易失性存储器技术制造,与工业80C51
产品指令和引脚完全兼容。片上Flash允许程序存储器在系统可编程,亦适于常规编程器。在单芯片上,拥有灵巧的8
位CPU
和在系统可编程Flash,使得AT89S52为众多嵌入式控制应用系统提供高灵活、超有效的解决方案。
AT89S52具有以下标准功能:
8k字节Flash,256字节RAM,32
位I/O
口线,看门狗定时器,2
个数据指针,三个16
位定时器/计数器,一个6向量2级中断结构,全双工串行口,片内晶振及时钟电路。另外,AT89S52
可降至0Hz
静态逻辑操作,支持2种软件可选择节电模式。空闲模式下,CPU停止工作,允许RAM、定时器/计数器、串口、中断继续工作。掉电保护方式下,RAM内容被保存,振荡器被冻结,单片机一切工作停止,直到下一个中断或硬件复位为止。主要性能1.与MCS-51单片机产品兼容;2.8K字节在系统可编程Flash存储器;3.1000次擦写周期;4.全静态操作:0Hz-33MHz;5.三级加密程序存储器;6.32个可编程I/O口线;7.三个16位定时器/计数器;8.六个中断源;9.全双工UART串行通道;10.低功耗空闲和掉电模式;11.掉电后中断可唤醒;12.看门狗定时器;13.双数据指针;14.掉电标识符。管脚说明管脚如图3-1所示。图3-1AT89S52管脚图P0口:一个8位漏极开路的双向I/O口。作为输出口,每位能驱动8个TTL逻辑电平。对P0端口写“1”时,引脚用作高阻抗输入,当访问外部程序和数据存储器时,P0口也被作为低8位地址/数据复用。在这种模式下,P0不具有内部上拉电阻。在flash编程时,P0口也用来接收指令字节;在程序校验时,输出指令字节。程序校验时,需要外部上拉电阻。P1口:一个具有内部上拉电阻的8位双向I/O口,p1输出缓冲器能驱动4个TTL逻辑电平。对P1端口写“1”时,内部上拉电阻把端口拉高,此时可以作为输入口使用。作为输入使用时,被外部拉低的引脚由于内部电阻的原因,将输出电流(IIL)。此外,P1.0和P1.1分别作定时器/计数器2的外部计数输入(P1.0/T2)和定时器/计数器2的触发输入(P1.1/T2EX)。在flash编程和校验时,P1口接收低8位地址字节。引脚号第二功能:P1.0T2(定时器/计数器T2的外部计数输入),时钟输出;P1.1T2EX(定时器/计数器T2的捕捉/重载触发信号和方向控制);P1.5MOSI(在系统编程用);P1.6MISO(在系统编程用);P1.7SCK(在系统编程用);P2口:一个具有内部上拉电阻的8位双向I/O口,P2输出缓冲器能驱动。P3口:一个具有内部上拉电阻的8位双向I/O口,P3输出缓冲器能驱动4个TTL逻辑电平。对P2端口写“1”时,内部上拉电阻把端口拉高,此时可以作为输入口使用。作为输入使用时,被外部拉低的引脚由于内部电阻的原因,将输出电流(IIL)。在访问外部程序存储器或用16位地址读取外部数据存储器时,P2口送出高八位地址。在这种应用中,P2口使用很强的内部上拉发送1。在使用8位地址访问外部数据存储器时,P2口输出P2锁存器的内容。在flash编程和校验时,P2口也接收高8位地址字节和一些控制信号。端口引脚第二功能:P3.0RXD(串行输入口);P3.1TXD(串行输出口);P3.2INTO(外中断0);P3.3INT1(外中断1);P3.4TO(定时/计数器0);P3.5T1(定时/计数器1);P3.6WR(外部数据存储器写选通);P3.7RD(外部数据存储器读选通);此外,P3口还接收一些用于FLASH闪存编程和程序校验的控制信号。RST:复位输入。当振荡器工作时,RST引脚出现两个机器周期以上高电平将是单片机复位。ALE/PROG:当访问外部程序存储器或数据存储器时,ALE(地址锁存允许)输出脉冲用于锁存地址的低8位字节。一般情况下,ALE仍以时钟振荡频率的1/6输出固定的脉冲信号,因此它可对外输出时钟或用于定时目的。要注意的是:每当访问外部数据存储器时将跳过一个ALE脉冲。对FLASH存储器编程期间,该引脚还用于输入编程脉冲(PROG)。如有必要,可通过对特殊功能寄存器(SFR)区中的8EH单元的D0位置位,可禁止ALE操作。该位置位后,只有一条MOVX和MOVC指令才能将ALE激活。此外,该引脚会被微弱拉高,单片机执行外部程序时,应设置ALE禁止位无效。SEN:程序储存允许(PSEN)输出是外部程序存储器的读选通信号,当AT89S52由外部程序存储器取指令(或数据)时,每个机器周期两次PSEN有效,即输出两个脉冲,在此期间,当访问外部数据存储器,将跳过两次PSEN信号。EA/VPP:外部访问允许,欲使CPU仅访问外部程序存储器(地址为0000H-FFFFH),EA端必须保持低电平(接地)。需注意的是:如果加密位LB1被编程,复位时内部会锁存EA端状态。如EA端为高电平(接Vcc端),CPU则执行内部程序存储器的指令。FLASH存储器编程时,该引脚加上+12V的编程允许电源Vpp,当然这必须是该器件是使用12V编程电压Vpp。XTAL1:振荡器反相放大器和内部时钟发生电路的输入端。XTAL2:振荡器反相放大器的输出端。3.2红外遥控简介红外遥控使用方便,功能多.目前已广泛应用在电视机、VCD、DVD、空调等各种家用电器中,且价格便宜,市场上非常容易买到。如果能将遥控器上许多的按键解码出来.用作单片机系统的输入.则解决了常规矩阵键盘线路板过大、布线复杂、占用I/O口过多的弊病。而且通过使用遥控器,操作时可实现人与设备的分离,从而更加方便使用。本设计采用TC9012为编码芯片的遥控器。编码格式1.0和1的编码遥控器发射的信号由一串0和1的二进制代码组成.不同的芯片对0和1的编码有所不同。通常有曼彻斯特编码和脉冲宽度编码。TC9012的0和1采用PWM方法编码,即脉冲宽度调制。0码由0.56ms低电平和0.56ms高电平组合而成.脉冲宽度为1.12ms.1码由0.56ms低电平和1.69ms高电平组合而成.脉冲宽度为2.25ms。在编写解码程序时.通过判断脉冲的宽度,即可得到0或1。2.按键的编码当我们按下遥控器的按键时,遥控器将发出一串二进制代码,我们称它为一帧数据。根据各部分的功能。可将它们分为5部分,分别为引导码、地址码、地址码、数据码、数据反码。遥控器发射代码时.均是低位在前。高位在后。由分析可以得到,引导码高电平为4.5ms,低电平为4.5ms。当接收到此码时,表示一帧数据的开始。单片机可以准备接收下面的数据。地址码由8位二进制组成,共256种。图中地址码重发了一次。主要是加强遥控器的可靠性。如果两次地址码不相同,则说明本帧数据有错,应丢弃。不同的设备可以拥有不同的地址码。因此,同种编码的遥控器只要设置地址码不同,也不会相互干扰。图中的地址码为十六进制的0EH(注意低位在前)。在同一个遥控器中.所有按键发出的地址码都是相同的。数据码为8位,可编码256种状态,代表实际所按下的键。数据反码是数据码的各位求反,通过比较数据码与数据反码.可判断接收到的数据是否正确。如果数据码与数据反码之间的关系不满足相反的关系.则本次遥控接收有误,数据应丢弃。在同一个遥控器上.所有按键的数据码均不相同。数据码为十六进制的0CH,数据反码为十六进制的0F3H(注意低位在前),两者之和应为0FFH。遥控信号的解码算法及程序编制当遥控器无键按下。红外发射二极管不发出信号,遥控接收头输出信号1。有键按下时,0和1编码的高电平经遥控头倒相后会输出信号0。由于与单片机的中断脚相连,将会引起单片机中断(单片机预先设定为下降沿产生中断)。单片机在中断时使用定时器0或定时器1开始计时,到下一个脉冲到来时,即再次产生中断时,先将计时值取出。清零计时值后再开始计时,通过判断每次中断与上一次中断之间的时间间隔。便可知接收到的是引导码还是0和1。如果计时值为9ms。接收到的是引导码,如果计时值等于1.12ms,接收到的是编码0。如果计时值等于2.25ms.接收到的是编码1。在判断时间时,应考虑一定的误差值。因为不同的遥控器由于晶振参数等原因,发射及接收到的时间也会有很小的误差。在本设计中我们采用红外一体化接收头HS0038,红外发射的信号编码如图3-2所示。图3-2红外发射编码示意图由图3-2可以看出,红外发射出的码通过38K载波,一体化的接收头信号端出的码则通过内部电路解调并整形,输出的则是数据波形。利用这种性能可以做出红外遥控器解码。解码方法如下:(1)设外部中断0(或者1)为下降沿中断,定时器0(或者1)为16位计时器.初始值为0。(2)第一次进入遥控中断后,开始计。(3)从第二次进入遥控中断起,先停止计时。并将计时值保存后,再重新计时。如果计时值等于前导码的时间,设立前导码标志。准备接收下面的一帧遥控数据,如果计时值不等于前导码的时间,但前面已接收到前导码,则判断是遥控数据的0还是1。(4)继续接收下面的地址码、数据码、数据反码。(5)当接收到32位数据时,说明一帧数据接收完毕。此时可停止定时器的计时,并判断本次接收是否有效.如果两次地址码相同且等于本系统的地址,数据码与数据反码之和等0FFH,则接收的本帧数据码有效。否则丢弃本次接收到的数据。(6)接收完毕,初始化本次接收的数据,准备下一次遥控接收。3.34×4矩阵键盘由于本系统所用到的按键数量较多而不适合用独立按键式键盘,采用的是矩阵式按键键盘。它由行线和列线组成,也称行列式键盘,按键位于行列的交叉点上,密码锁的密码由键盘输入完成,与独立式按键键盘相比,要节省很多I/O口。每一条水平(行线)与垂直线(列线)的交叉处不相通,而是通过一个按键来连通,利用这种行列式矩阵结构只需要N条行线和M条列线,即可组成具有N×M个按键的键盘。首先辨别键盘中有无按键按下,通过单片机I/O口向键盘送全扫描字,然后读入行线状态来判断。方法是:向行线输出全扫描字FFH,把全部列线置为低电平,然后将列线的电平状态读入累加器A中。如果有按键按下,总会有一根行线电平被拉至低电平从而使行线不全为1。判断键盘中哪一个键被按下是通过将列线逐列置低电平后,检查行输入状态来实现的。方法是:依次给列线送低电平,然后查所有行线状态,如果全为1,则所按下的键不在此列;如果不全为1,则所按下的键必在此列,而且是在与零电平行线相交的交点上的那个键。接线如图3-3。图3-3行列式矩阵键盘电路示意图本设计中使用的这个4*4键盘不但能完成密码的输入还能作特别功能键使用。按键的操作面板如表3-1所示。表3-1按键操作面板示意表048159修改26删除37确定3.4步进电机步进电机作为执行元件,是机电一体化的关键产品之一,广泛应用在各种自动化控制系统中。随着微电子和计算机技术的发展,步进电机的需求量与日俱增,在各个国民经济领域都有应用。步进电机是一种将电脉冲转化为角位移的执行机构。当步进驱动器接收到一个脉冲信号,它就驱动步进电机按设定的方向转动一个固定的角度(称为“步距角”),它的旋转是以固定的角度一步一步运行的。可以通过控制脉冲个数来控制角位移量,从而达到准确定位的目的;同时可以通过控制脉冲频率来控制电机转动的速度和加速度,从而达到调速的目的。步进电机可以作为一种控制用的特种电机,利用其没有积累误差(精度为100%)的特点,广泛应用于各种开环控制。现在比较常用的步进电机包括反应式步进电机(vr)、永磁式步进电机(pm)、混合式步进电机(hb)和单相式步进电机等。本次设计选用的是感应子式四向四拍步进电机。反应式步进电机原理下面通过三相反应式步进电机原理来了解步进电机的一般工作原理。(1)结构如图3-4所示。电机转子均匀分布着很多小齿,定子齿有三个励磁绕阻,其几何轴线依次分别与转子齿轴线错开。0、1/3て、2/3て,(相邻两转子齿轴线间的距离为齿距以て表示),即A与齿1相对齐,B与齿2向右错开1/3て,C与齿3向右错开2/3て,A’与齿5相对齐,(A’就是A,齿5就是齿1)图3-4反应时步进电机结构(2)旋转如A相通电,B,C相不通电时,由于磁场作用,齿1与A对齐,(转子不受任何力以下均同)。如B相通电,A,C相不通电时,齿2应与B对齐,此时转子向右移过1/3て,此时齿3与C偏移为1/3て,齿4与A偏移(て-1/3て)=2/3て。如C相通电,A,B相不通电,齿3应与C对齐,此时转子又向右移过1/3て,此时齿4与A偏移为1/3て对齐。如A相通电,B,C相不通电,齿4与A对齐,转子又向右移过1/3て这样经过A、B、C、A分别通电状态,齿4(即齿1前一齿)移到A相,电机转子向右转过一个齿距,如果不断地按A,B,C,A……通电,电机就每步(每脉冲)1/3て,向右旋转。如按A,C,B,A……通电,电机就反转。由此可见:电机的位置和速度由导电次数(脉冲数)和频率成一一对应关系。而方向由导电顺序决定。不过,出于对力矩、平稳、噪音及减少角度等方面考虑。往往采用A-AB-B-BC-CCA-A这种导电状态,这样将原来每步1/3て改变为1/6て。甚至于通过二相电流不同的组合,使其1/3て变为1/12て,1/24て,这就是电机细分驱动的基本理论依据。不难推出:电机定子上有m相励磁绕阻,其轴线分别与转子齿轴线偏移1/m,2/m……(m-1)/m,1。并且导电按一定的相序电机就能正反转被控制——这是步进电机旋转的物理条件。只要符合这一条件我们理论上可以制造任何相的步进电机,出于成本等多方面考虑,市场上一般以二、三、四、五相为多。(3)力矩电机一旦通电,在定转子间将产生磁场(磁通量Ф)当转子与定子错开一定角度产生力F与(dФ/dθ)成正比S其磁通量Ф=Br*SBr为磁密,S为导磁面积F与L*D*Br成正比L为铁芯有效长度,D为转子直径Br=N·I/RN·I为励磁绕阻安匝数(电流乘匝数)R为磁阻。力矩=力*半径力矩与电机有效体积*安匝数*磁密成正比(只考虑线性状态)因此,电机有效体积越大,励磁安匝数越大,定转子间气隙越小,电机力矩越大,反之亦然。感应子式步进电机特点感应子式步进电机与传统的反应式步进电机相比,结构上转子加有永磁体,以提供软磁材料的工作点,而定子激磁只需提供变化的磁场而不必提供磁材料工作点的耗能,因此该电机效率高,电流小,发热低。因永磁体的存在,该电机具有较强的反电势,其自身阻尼作用比较好,使其在运转过程中比较平稳、噪音低、低频振动小。感应子式步进电机某种程度上可以看作是低速同步电机。一个四相电机可以作四相运行,也可以作二相运行。(必须采用双极电压驱动),而反应式电机则不能如此。例如:四相,八相运行(A-AB-B-BC-C-CD-D-DA-A)完全可以采用二相八拍运行方式.不难发现其条件为C=,D=.一个二相电机的内部绕组与四相电机完全一致,小功率电机一般直接接为二相,而功率大一点的电机,为了方便使用,灵活改变电机的动态特点,往往将其外部接线为八根引线(四相),这样使用时,既可以作四相电机使用,可以作二相电机绕组串联或并联使用。感应子式步进电机分类感应子式步进电机以相数可分为:二相电机、三相电机、四相电机、五相电机等。以机座号(电机外径)可分为:42BYG(BYG为感应子式步进电机代号)、57BYG、86BYG、110BYG、(国际标准),而像70BYG、90BYG、130BYG等均为国内标准。3.5LCD1602显示器现在的字符型液晶模块已经是单片机应用设计中最常用的信息显示器件了。1602型LCD显示模块具有体积小,功耗低,显示内容丰富等特点。1602型LCD可以显示2行16个字符,有8位数据总线D0~D7和RS,R/W,EN三个控制端口,工作电压为5V,并且具有字符对比度调节和背光功能。LCD器件引脚如图3-5所示。图3-51602LCD引脚示意图显示地址如图3-6所示。图3-61602LCD显示地址示意图接口信号说明1602型LCD的接口信号说明如表3-2所示。表3-21602型LCD的接口信号说明编号符号引脚说明编号符号引脚说明1VSS电源地9D2DataI/O2VDD电源正极10D3DataI/O3V0液晶显示偏压信号11D4DataI/O4RS数据/命令选择端(H/L)12D5DataI/O5R/W读写选择端(H/L)13D6DataI/O6E使能信号14D7DataI/O7D0DataI/O15BLA背光源正极8D1DataI/O16BLK背光源负极主要技术参数1602型LCD的主要技术参数如表3-3所示所示。表3-31602型LCD的主要技术参数显示容量16X2个字符芯片工作电压工作电流2.0mA(5.0V)模块最佳工作电压字符尺寸2.95X4.35(WXH)mm基本操作程序读状态:输入:RS=L,RW=L,E=H 输出:D0~D7=状态字读数据:输入:RS=H,RW=H,E=H 输出:无写指令:输入:RS=L,RW=L,D0~D7=指令码,E=高脉冲输出:D0~D7=数据写数据:输入:RS=H,RW=L,D0~D7=数据,E=高脉冲输出:无RAM地址映射图控制器内部带有80B的RAM缓冲区,对应关系如图3-7所示:图3-71602RAM地址映射当我们向图中的00~0F、40~4F地址中的任一处写入显示数据时,液晶都可以立即显示出来,当写入到10~27或50~67地址处时,必须通过移屏指令将它们移入可显示区域方可正常显示。状态字说明如图3-8所示:图3-8状态字注意:原则上每次对控制器进行读、写操作之前,都必须进行读写检测,确保STA7为0。实际上,由于单片机的操作速度慢于液晶控制器的反应速度,因此可以不进行读写检测,或只进行简短延时即可。初始化设置显示模式设置如图3-9所示。图3-9显示模式设置显示开关及光标设置如图3-10所示。图3-10显示开关及光标设置3.6DS18B20数字温度传感器本设计中采用的是Dallas半导体公司制造的数字化温度传感器DS18B20,它是世界上第一片支持"一线总线"接口的温度传感器。一线总线独特而且经济的特点,使用户可轻松地组建传感器网络,为测量系统的构建引入全新概念。DS18B20"一线总线"数字化温度传感器同DS1820一样,DS18B20也支持"一线总线"接口,测量温度范围为-55°C~+125°C,在-10~+85°C范围内,精度为±0.5°C。DS1822的精度较差为±2°C.1(1)
可用数据线供电,电压范围:3.0~5.5V;(2)
测温范围:-55~+125℃,在-10~+85℃时精度为±0.5℃;(3)
可编程的分辨率为9~12位,对应的可分辨温度分别为0.5℃、0.25℃、0.125℃和0.0625℃;(4)
12位分辨率时最多在750ms内把温度值转换为数字;(5)
负压特性:电源极性接反时,温度计不会因发热而烧毁,但不能正常工作。3.6.2DS18B20的外形和内部结构
DS18B20内部结构主要由四部分组成:64位光刻ROM、温度传感器、非挥发的温度报警触发器TH和TL、配置寄存器。DS18B20的管脚排列如图3-11
图3-11DS18B20外形图引脚定义:(1)
DQ为数字信号输入/输出端;(2)
GND为电源地;(3)
VDD为外接供电电源输入端(在寄生电源接线方式时接地)。内部结构如图3-12所示。图
3-12
DS18B20内部结构图.3
(1)光刻ROM中的64位序列号是出厂前被光刻好的,它可以看作是该DS18B20的地址序列码。64位光刻ROM的排列是:开始8位(28H)是产品类型标号,接着的48位是该DS18B20自身的序列号,最后8位是前面56位的循环冗余校验码(CRC=X8+X5+X4+1)。光刻ROM的作用是使每一个DS18B20都各不相同,这样就可以实现一根总线上挂接多个DS18B20的目的。(2)
DS18B20中的温度传感器可完成对温度的测量,以12位转化为例:用16位符号扩展的二进制补码读数形式提供,以0.0625℃/LSB形式表达,其中S为符号位。如图3-13所示。
图3-13DS18B20温度值格式表
这是12位转化后得到的12位数据,存储在18B20的两个8比特的RAM中,二进制中的前面5位是符号位,如果测得的温度大于0,这5位为0,只要将测到的数值乘于0.0625即可得到实际温度;如果温度小于0,这5位为1,测到的数值需要取反加1再乘于0.0625即可得到实际温度。(3)DS18B20温度传感器的存储器DS18B20温度传感器的内部存储器包括一个高速暂存RAM和一个非易失性的可电擦除的EEPRAM,后者存放高温度和低温度触发器TH、TL和结构寄存器。(4)配置寄存器该字节各位的意义如表3-4所示。表3-4配置寄存器结构TMR1R011111
低五位一直都是1,TM是测试模式位,用于设置DS18B20在工作模式还是在测试模式。在DS18B20出厂时该位被设置为0,用户不要去改动。R1和R0用来设置分辨率,如下表所示:(DS18B20出厂时被设置为12位)
分辨率设置如表3-5所示。表3-5温度值分辨率设置表R1R0分辨率温度最大转换时间009位0110位1011位375ms1112位750ms3.7数码管显示电路本设计中温度采用共阴极数码管显示。数码管是一种半导体发光器件,其基本单元是发光二极管。数码管按段数分为七段数码管和八段数码管,八段数码管比七段数码管多一个发光二极管单元(多一个小数点显示);按能显示多少个“8”可分为1位、2位、4位等等数码管。一支七段数码管实际由8个发光二极管构成,其中7个组形构成数字8的七段笔画,所以称为七段数码管,而余下的1个发光二极管作为小数点。通常分别给8个发光二极管标上记号:a,b,c,d,e,f,g,h。对应8的顶上一画,按顺时针方向排,中间一画为g,小数点为h。如图3-14所示。图3-14数码管示意图我们通常又将各二极与一个字节的8位对应,a(D0),b(D1),c(D2),d(D3),e(D4),f(D5),g(D6),h(D7),相应8个发光二极管正好与单片机一个端口Pn的8个引脚连接,这样单片机就可以通过引脚输出高低电平控制8个发光二极的亮与灭,从而显示各种数字和符号;对应字节,引脚接法为:a(Pn.0),b(Pn.1),c(Pn.2),d(Pn.3),e(Pn.4),f(Pn.5),g(Pn.6),h(Pn.7)。如果将8个发光二极管的负极(阴极)内接在一起,作为数码管的一个引脚,这种数码管则被称为共阴数码管,共同的引脚则称为共阴极,8个正极则为段极。否则,如果是将正极(阳极)内接在一起引出的,则称为共阳数码管,共同的引脚则称为共阳极,8个负极则为段极。以单支共阴数码管为例,可将段极接到某端口Pn,共阴极接GND,则可编写出对应十六进制码的七段码表字节数据如图3-15所示。图3-15七段码表字节数据3.8复位电路单片机复位是使CPU和系统中的其他功能部件都处在一个确定的初始状态,并从这个状态开始工作,例如复位后PC=0000H,使单片机从第—个单元取指令。无论是在单片机刚开始接上电源时,还是断电后或者发生故障后都要复位。在复位期间(即RST为高电平期间),P0口为高组态,P1-P3口输出高电平;外部程序存储器读选通信号PSEN无效。地址锁存信号ALE也为高电平。根据实际情况选择如图3-16所示的复位电路。该电路在最简单的复位电路下增加了手动复位按键,在接通电源瞬间,电容C1上的电压很小,复位下拉电阻RST上的电压接近电源电压,即RST为高电平,在电容充电的过程中RST端电压逐渐下降,EMBEDEquation.3当RST端的电压小于某一数值后,CPU脱离复位状态,由于电容C1足够大,可以保证RST高电平有效时间大于24个振荡周期,CPU能够可靠复位。增加手动复位按键是为了避免死机时无法可靠复位。当复位按键按下后电容C1通过R放电。当电容C1放电结束后,RST端的电位由R分压比决定。RST为高电平,CPU处于复位状态,松手后,电容C1充电,RST端电位下降,CPU脱离复位状态。图3-16复位电路示意图3.9振荡电路 晶体振荡器,简称晶振,其作用在于产生原始的时钟频率,这个频率经过频率发生器的放大或缩小后就成了各种不同的总线频率。石英晶体振荡器是利用石英晶体(二氧化硅的结晶体)的压电效应制成的一种谐振器件,它的基本构成大致是:从一块石英晶体上按一定方位角切下薄片(简称为晶片,它可以是正方形、矩形或圆形等),在它的两个对应面上涂敷银层作为电极,在每个电极上各焊一根引线接到管脚上,再加上封装外壳就构成了石英晶体谐振器,简称为石英晶体或晶体、晶振。其产品一般用金属外壳封装,也有用玻璃壳、陶瓷或塑料封装的。只要在晶体振子板极上施加交变电压,就会使晶片产生机械变形振动,此现象即所谓逆压电效应。当外加电压频率等于晶体谐振器的固有频率时,就会发生压电谐振,从而导致机械变形的振幅突然增大。单片机内部有一个用于构成振荡器的高增益反相放大器,该高增益反相放大器的输入端为引脚XTAL1,输出端为引脚XTAL2。这两个引脚跨接石英晶体振荡器和微调电容C7、C9,按图3-7所示方式连接。晶振、电容C7/C9及片内与非门(作为反馈、放大元件)构成了电容三点式振荡器,振荡信号频率与晶振频率及电容C7、C9的容量有关,但主要由晶振频率决定,范围在1.2~12MHz之间,电容C7、C9取值范围在5~30pF之间。根据实际情况,本设计中采用11MHZ做为系统的外部晶振。电容取值为30pF。其示意图图3-17所示。图3-17震荡电路示意图3.10蜂鸣器 采用蜂鸣器来控制开锁显示,当输入密码后,单片机向蜂鸣器送出低电平,驱动蜂鸣器响铃。采用蜂鸣器闹铃结构简单,只需要单路信号控制,发出的闹铃声音可以根据响和不响的不同的软件延时时间来控制。电磁式蜂鸣器由振荡器、电磁线圈、磁铁、振动膜片及外壳等组成。接通电源后,振荡器产生的音频电流信号通过电磁线圈产生磁场。振动膜片在电磁线圈和磁铁的相互作用下,周期性地振动发声。开锁声音控制模块如图3-18所示。图3-18蜂鸣器电路报警控制电路的功能是控制系统的报警装置。报警是用单片机的P,由继电器控制扬声器发出报警声。第4章软件程序设计4.1软件设计 软件设计(Programming)是指设计、编制、调试程序的方法和过程。它是目标明确的智力活动。由于程序是软件的本体,软件的质量主要通过程序的质量来体现,在软件研究中,程序设计的工作非常重要,内容涉及到有关的基本概念、工具、方法以及方法学等。软件设计通常分为问题建摸,算法设计,编写代码和编译调试四个阶段。软件设计一般根据系统中功能模块进行分割,首先应确定主程序框图,然后划分软件功能模块。程序设计中应实现模块化,子程序化。所谓模块化就是把一个完整的程序分解成完整的程序分解成若干个功能上相对独立的较小程序块,各小程序进行单独设计和调试,最后将各程序模块连接起来进行总调试。这种方法思路清楚,软件故障容易排除,便于移植及修改。当软件各功能模块分别调试完毕后,即可进行主程序调试。主程序调试主要是排除各个功能模块之间连接中可能出现的问题,如各个功能使用的RAM区域有否重叠现象,寄存器有否发生冲突,堆栈区域有否溢出等等。系统的应用软件是根据系统功能要求设计的。一般地讲,软件的功能可分为两大类。一类是执行软件,它能完成各种实质性的功能,如测量、计算、显示、打印、输出控制等;另一类是监控软件,它是专门用来协调各执行模块和操作者的关系,在系统软件中充当组织调度角色。设计人员在进行程序设计时应从以下几个方面加以考虑:(1)根据软件功能要求,将系统软件分成如干个相对独立的部分。设计出合理的软件总体结构,使其清晰、简洁、流程合理。(2)各功能程序实行模块化、子程序化。既便于调试、链接,又便于移植、修改。(3)在编写应用软件之前,应绘制出流程图。这不仅是程序设计的一个重要组成部分,而且是决定成败的关键部分。从某种意义上讲,多花一份时间来设计流程图,就可以节约几倍源程序的编辑调试时间。(4)要合理分配系统资源,包括ROM、RAM、定时器/计数器、中断源等。其中最关键的是片内RAM分配。4.2C语言的特点C是中级语言。它把高级语言的基本结构和语句与低级语言的实用性结合起来。C语言可以像汇编语言一样对位、字节和地址进行操作。并且是结构式语言。结构式语言的显著特点是代码及数据的分隔化,即程序的各个部分除了必要的信息交流外彼此独立。这种结构化方式可使程序层次清晰,便于使用、维护以及调试。C语言是以函数形式提供给用户的,这些函数可方便的调用,并具有多种循环、条件语句控制程序流向,从而使程序完全结构化。.C语言功能齐全。具有各种各样的数据类型。4.3具体软件模块实现在本系统中,软件结构应采用模块化设计方法,主要包括主程序,红外遥控选择,密码锁输入程序,步进电机程序,温控显示程序等等。上电复位后,初始化各端口,标志位和有关寄存器,接着开始检测遥控器是否有输入,如没有就不断检测,如果有输入就转到相应处理程序。.1主程序主要完成初始化、设置中断向量、检查遥控器有无按键按下以及调用红外遥控选择等等。流程图如图4-1所示。4-1主程序流程图开发板上电后,系统开始工作,首先是对系统的初始化,包括定时器0的初始化和允许中断控制,由于TMOD=0x02,表示采用定时器0工作方式2,TH0是重装值,TL0是初值,TL=0x00表示初值为0。.然后开始检测是否接收到红外信号,接收到红外信号的标志是irok,用irtime来计数2个下降沿之间的时间,irtime<42&&irtime>=33表示,TC9012从9ms时开始记录引导码即TC9012的头码,因为红外接收头默认为高电平,TC9012在载波头码前还有一段9ms的低电平,所以会产生一次中断,载波头码发送完ms。而定时是根据(2^n+初值)*12*周期得出的。接下来用irdata[]表示一次行存储32位电平宽度,其中irdata[0]中存放的是引导码的时间长度,所以下面的程序从irdata[1]开始判断,接收完毕后,irok置1,进入码值处理程序Ircordpro(),码值处理是将剩下的4个字节分别处理,然后将每个字节的8位分别处理,cord>7表示大于某值为1即时间大于1.792ms认为发射的是1,因为在TC9ms的当做是0,考虑一定的误差,将cord设为7。value=value|0x80说明是1,value=value说明是0,value=value>>1表示将数据右移一位,因为先接受到得时数据的低字节位,然后将得到的value即1或0装入按键记录IRcord[]中,处理完毕标志位irpro_ok置1,转入红外键值散转程序Ir_work()中,判断第三个数码值,因为处理后,IRcord[0]、IRcord[1]中存放是地址码,IRdata[2]中存放数据。根据按键,系统会算出键值,转入相应的程序当中。其中最为重要的红外遥控解码程序如下所示。……for(i=0;i<4;i++)//处理4个字节,即一帧32位数据{for(j=1;j<=8;j++)//处理1个字节8位{cord=irdata[k];//irdata[k]为一次存储32位数据的电平宽度if(cord>7)//大于某值为1 {value=value|0x80; }else {value=value; }if(j<8) { value=value>>1; }k++;}IRcord[i]=value;//记录按键值value=0;…….2键盘采用查询的方式,放在主程序中,当没有按键按下的时候,单片机循环主程序,一旦有按键按下,便转向相应的子程序处理,处理结束再返回。并在LCD液晶屏显示。流程图如图4-2所示。4-2密码锁流程图当用户按键选择进入密码锁功能时,首先对于密码锁功能进行初始化,主要是对LCD1602的初始化,接下来进入键盘扫描函数,要求用户输入开锁密码,当则判断是否为确认键,按下确认键后进入对比密码,密码正确则LCD会予以提示,不正确则要求重新输入,三次输入不成功则报警提示。在此过程中可选择修改和删除,便可对密码进行相应的修改和删除。其删除代码部分如下所示。……voiddelete(){ ucharw=0;//局部变量很重要 init(); for(r=0;r<9;r++) { delayms(5); write_data(table10[r]); } do { flag=0;//按键标志 keyscan(); write_com(0x80+9+w); if(flag==1&&num<=9) { pswd[w]=num; write_data(table3[w]);//输入密码时用“*”代替 w++; if(w==6) write_com(0x0c); } if(flag==1&&num==14) //删除键则删除误输入的密码,即返回上一步. { w--; if(w==255) w=w+1; write_com(0x80+9+w); write_data(table13[w+1]); if(flag==1&&num<=9) { pswd[w]=num; write_data(table3[w]); } }} while(w<=5);}…….3遥控器选定步进电机程序,步进电机会根据按键选择的功能进行正转和反转。根据其硬件特性,四相步进电机正转和反转均为通过依次调用数组中的值便可实现。其中正转表格为{0x02,0x04,0x08,0x10},反转表格为{0x10,0x08,0x04,0x02}。其控制程序如下所示。……for(j=0;j<12*n;j++){for(i=0;i<4;i++){P1=B_Rotation[i];delayms(15);//改变这个参数可以调整电机转速…….4遥控器选择温控程序,DS18B20温度传感器根据外界温度,把数据写入RAM中,然后调用温控数字转换子程序,将传感器读入的温度数据转换成数字并在数码管显示出来。控制程序代码主要如下。流程图如4-3所示。图4-318B20温度传感器流程图……read_temp(){ow_reset();//总线复位delay(200);write_byte(0xcc);//发命令write_byte(0x44);//发转换命令ow_reset();delay(1);write_byte(0xcc);//发命令write_byte(0xbe);temp_data[0]=read_byte();//读温度值的第字节temp_data[1]=read_byte();//读温度值的高字节temp=temp_data[1];temp<<=8;temp=temp|temp_data[0];//两字节合成一个整型变量。returntemp;//返回温度值}/****************温度数据处理函数************************///二进制高字节的低半字节和低字节的高半字节组成一字节,这个//字节的二进制转换为十进制后,就是温度值的十、个位值,而剩//下的低字节的低半字节转化成十进制后,就是温度值的小数部分/********************************************************/work_temp(uinttem){ucharn=0;if(tem>6348)//温度值正负判断{tem=65536-tem;n=1;}//负温度求补码,标志位置1display[4]=tem&0x0f;//取小数部分的值display[0]=ditab[display[4]];//存入小数部分显示值display[4]=tem>>4;//取中间八位,即整数部分的值display[3]=display[4]/100;//取百位数据暂存display[1]=display[4]%100;//取后两位数据暂存display[2]=display[1]/10;//取十位数据暂存display[1]=display[1]%10;/******************符号位显示判断************************/if(!display[3]){display[3]=0x0a;//最高位为0时不显示if(!display[2]){display[2]=0x0a;//次高位为0时不显示}}if(n){display[3]=0x0b;}//负温度时最高位显示"-"if(display[4]==4){beep();//当温度高于40°时开始报警}}在软件设计时采用如下措施可以有效提高系统的抗干扰能力。增加系统信息管理模块。与硬件相配合,对系统信息进行保护。其中包括防止信息被破坏,出故障时保护信息,故障排除之后恢复信息等。提高软件自身的可靠性。通常要编制一个可靠运行的应用软件,应考虑采用以下几项措施。程序设计时,将程序分成若干个具有独立功能的子程序模块。各个程序模块可以单独使用,也可与其他程序模块共同使用。各程序模块之间可通过固定的通信区和一些指定的单片进行信息传递。每个程序模块都可单独进行调整和修改,不会影响其他程序模块。采用可测试性设计。软件抗干扰以其设计灵活、节省硬件资源、降低成本等优势越来越得到广泛采用。软件抗干扰技术主要有“软件陷阱技术”和“软件看门狗技术”。软件调试由于系统干扰可能破坏程序指针一旦失控程序就会“乱飞”,可能进入非程序,造成系统运行错误。设置软件陷阱,可防止程序“乱飞”。设置软件陷阱可以采用在ROM和RAM中,每隔一些指令,就把连续几个单元设置成空操作(所谓陷阱)。当失控的程序掉入“陷阱”,连续执行几个空操作后,程序自动恢复正常,继续执行后面的程序。将程序芯片没有被程序指令字节使用的部分全部置成空操作振荡器返回指令代码,一旦程序飞出到非程序区,能够顺利跳回到程序初始状态,重新执行程序,不至于因此造成死循环。软件看门狗技术利用设置软件陷阱虽在一定程序上解决了程序“乱飞”的失控问题,但在程序执行过程中若进入死循环,无法撞上陷阱,就会使程序长时间运行不正常。因此,设置陷阱的办法并不能彻底有效地解决死循环问题。设置程序监视器即看门狗可比较有效地解决死循环问题。程序监视器系统有的采用软件解决,大部分都是采用软、硬件相结合的办法。在程序地大循环中,一开始就启动定时器工作,在主程序中增设定时器赋值指令,使该定时器维持在非溢出工作状态。定时时间要稍大于程序循环一次的执行时间。程序正常循环执行一次给定时器送一次初值,重新开始计数而不会产生溢出。但若程序失控,没能按时给定时器赋初值,定时器就会产生溢出中断,在中断服务中使主程序回到初始状态。第5章系统调试单片机系统经过总体设计,完成了硬件和软件设计开发。元器件安装后,在系统的程序存储器中写入编制好的应用程序,系统即可运行。但编制好的程序或焊接好的线路不能按预计的那样正常工作是常见的事,多少会出现一些硬件、软件上的错误。这就需要通过调试来发现错误并加以改正。调试可分为硬件调试和软件调试。在允许的条件下,根据本设计系统的需求性首先采用在PC机上用模拟开发软件进行检测和调试,然后进行硬件的组装与调试。在该设计中,由于本系统采用C语言编写,所以利用Keil软件对系统进行调试。KeilC51是美国KeilSoftware公司出品的51系列兼容单片机C语言软件开发系统。与汇编相比,C语言在功能上、结构性、可读性、可维护性上有明显的优势。本设计采取分模块调试,将每个子程序在调试成功后并在开发板上成功演示后,将三个模块综合起来调试。软件调试软件调试采用脱机调试的方法,即完全用仿真器软件在PC机上对目标电路原理图和程序进行检测和调试。调试过程中单片机相应输入端由通用键盘和鼠标设定,运行状态、各寄存器状态、端口状态等都可以在CRT指定的窗口区域显示出来,以确定程序运行有无错误。按下列步骤进行调试:(1)目标程序纠错该阶段工作通常在目标程序编辑时就完成。一般来说,仿真器软件能给用户输入的程序指令纠错,包括书写格式、标号未定义或多重定义、转移地址溢出等错误。(2)子程序功能调试程序设计通常采用模块程序设计,调试时可对一个个子程序分别进行调试,设置好入口条件,然后采用单步运行或断点运行方式,检查系统CPU现场、RAM和I/O口状态,看程序执行结果是否符合设计要求。(3)整体程序综合调试即把各子程序整体连起来进入到综合电路调试,看是否能实现预计的功能显示。在这阶段若发生故障,可以考虑各子程序在运行时是否破坏现场,数据缓冲单元是否发生冲突,标志位的建立和清除在设计上是否失误,堆栈是否溢出,输入输出状态是否正常等。用软件模拟器调试不需任何在线仿真器,也不需要用
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 部门经理竞聘试题及答案
- 妊娠SLE患者妊娠期体重管理策略
- 妇科中医AI辨证论治的个体化伦理策略
- 大数据驱动的神经外科精准化
- 考试常见积分问题及答案
- 象棋考试卷及答案
- 多组学数据驱动下卵巢癌标志物临床转化策略
- 2025年中职第二学年(茶叶加工)绿茶制作阶段测试题及答案
- 2025年大学农业资源与环境(农业资源)试题及答案
- 2025年中职会计电算化(会计凭证处理)试题及答案
- DB43-T 2438-2022 党政机关治安反恐防范要求
- 城市生命线工程监测设备质量管理标准
- 商务谈判实务-形考任务二-国开(ZJ)-参考资料
- 青春期小学生教育课件
- 2025年铁路车辆钳工(高级)职业技能鉴定参考试题库(含答案)
- 买卖合同法律知识及风险防范培训课件
- 江苏省2024年普通类本科批次平行志愿投档线(物理等科目类)
- 3S集成技术与应用-全面剖析
- 吉林省“BEST合作体”2024-2025学年高一上学期期末考试数学试卷(图片版含答案)
- 关于项目进展讨论会议记录
- 地理(A卷)-浙江省温州市2024学年高一第一学期期末教学质量统一检测
评论
0/150
提交评论