多功能电子保姆机的设计与实现毕业设计_第1页
多功能电子保姆机的设计与实现毕业设计_第2页
多功能电子保姆机的设计与实现毕业设计_第3页
多功能电子保姆机的设计与实现毕业设计_第4页
多功能电子保姆机的设计与实现毕业设计_第5页
已阅读5页,还剩66页未读, 继续免费阅读

下载本文档

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

文档简介

内蒙古科技大学毕业设计说明书(毕业论文)PAGEPAGE63题目:多功能电子保姆机的设计与实现—软件设计多功能电子保姆机的设计与实现——软件设计摘要随着生活节奏的加快,社会对于保姆的需求量越来越大,若利用电子技术设计出一款电子化、数字化、智能化的多功能电子保姆机,将被广泛应用于生活和工作当中。本设计以ATmega128单片机为核心处理器,使用DS1302实时时钟芯片提供时钟/日历数据,通过家用电器控制电路来实现电子保姆机的主要功能——家用电器定时开关机控制,利用DS18B20数字化温度传感器测量室内温度,8段LED数码管显示时间、日期、年份和室内温度。此外,本设计中电子保姆机还具有闹钟、温度越限报警功能。因此该电子保姆机具有多功能性。该款多功能电子保姆机可以应用于生活和工作中,此外,人们也可以根据不同场合的要求,在此保姆机上加置其它功能,提高其性能,从而使其应用领域更为广泛。关键词:电子保姆机;家用电器定时控制;ATmega128;DS1302;DS18B20;DesignandImplementationofMulti-functionalelectronicnannyMachine–TheDesignOfTheSoftwareAbstractWiththeacceleratedpaceoflife,thedemandfornanniesisgreatlyincreasinginoursociety.Ifelectronictechnologyisusedinthedesignofanelectronic,digital,intelligentmulti-functionalelectronicnannymachine,multi-functionalelectronicnannymachinewillbewidelyusedinourlifeandwork.

ThedesignusesATmega128asacoreprocessorandreal-timeclockchipDS1302whichprovidesthedateofclock/calendar.ThemainfunctionoftheelectronicnannyMachine,whichisfinishedbythecircuitofappliances,istocontrolappliancesaccordingtothesettingtime.Inthisdesign,DS18B20digitaltemperaturesensormeasurestheindoortemperature,andLEDdigitaldisplaystime,date,year,indoortemperatureandsoon.Moreover,theelectronicNannymachinealsohasanalarmclockandalarmfunctionoftemperature,thereforethemachinehastheversatility.

Thismulti-functionalelectronicnannymachinecanuseinthelifeandwork.Inaddition,itcanalsobeaddedotherfunctionsonvariousoccasions,toimproveitsperformance,makingithavebroaderapplications.Keyword:electronicnannymachine;thecontrolofdomesticelectricappliances;ATmega128;DS1302;DS18B20;目录TOC\o"1-4"\h\z\u摘要 IAbstract II第一章引言 11.1多功能电子保姆机研究的背景及意义 11.2多功能电子保姆机功能 1第二章多功能电子保姆机设计方案选择 32.1555定时器方案 32.2FPGA方案 32.3单片机设计方案 4第三章多功能电子保姆机硬件设计 63.1主要芯片选择 63.1.1单片机 6单片机选择 6ATmega128特点 6ATmega128引脚配置 73.1.2实时时钟芯片 9实时时钟芯片选择 9时钟芯片DS1302简介 9DS1302引脚功能 9DS1302内部结构及工作原理 10DS1302寄存器和控制命令及读写时序 113.1.3温度传感器 13温度传感器选择 13DS18B20简介 13DS18B20引脚功能 13DS18B20内部结构 14DS18B20工作过程 153.2多功能电子保姆机硬件设计 163.2.1实时时钟电路 173.2.2家用电器控制电路 173.2.3闹铃电路 183.2.4温度检测电路 193.2.5温度越限报警电路 193.2.6LED显示电路 203.2.7按键电路 21第四章多功能电子保姆机软件设计 234.1主程序设计 234.2子程序设计 244.2.1初始化子程序 244.2.2DS1302子程序 254.2.3家用电器控制子程序 264.2.4闹铃子程序 274.2.5DS18B20子程序 274.2.6温度越限报警子程序 294.2.7显示子程序 294.2.8键盘子程序 30第五章系统调试 325.1硬件调试 325.1.1单片机基础电路调试 325.1.2显示电路调试 335.1.3家用电器控制及闹铃电路调试 335.1.4温度检测及报警电路调试 335.1.6按键电路调试 345.2软件调试 34结论 36参考文献 37附录A多功能电子保姆机硬件电路图 38附录B程序 39附录C调试程序 58致谢 61第一章引言1.1多功能电子保姆机研究的背景及意义随着电子技术产业结构的调整,生产工艺的飞速发展,人们生活水平不断提高,家用电器逐渐普及,市场对智能控制系统的需求也越来越大。人们都希望拥有一台多功能的电子保姆机,来自动地完成一些家务或自动控制家用电器。电子保姆机自动控制家用电器就是在无人操控的环境下,家用电器能够在设定的时间内工作。炎热的夏天,人们就想在未回家时空调工作,室内保持凉爽。如果一直开着空调,这样会十分浪费电。若有了多功能电子保姆机,就可以根据个人要求使空调在设定的时间内工作。家用电器定时控制功能实现的前提是准确的知道当前时间,在日常生活中时间对人们来说是相当宝贵的,学生上课得按时,工人上班得准时,和别人约会或召开会议得守时,火车到达得准点,航班起飞得准点;工业生产中,很多环节都需要用时间来确定工序替换时刻。然而,生活节奏的加快,工作的忙碌和繁杂容易使人们忘记当前时间。但是,当遇到重大事情的时候,一旦忘记时间,就会给自己或他人造成很大麻烦,所以说能随时准确的知道时间并利用时间,是我们生活和工作中必不可少的。最早能够定时、报时的时钟属于机械式钟表,但这种时钟受到机械结构、动力和体积的限制,在功能、性能以及造价上都没办法与电子时钟相比。随着电子产品的发展,在现代社会中,电子钟已成为人们日常生活中的必需品。电子时钟主要是利用电子技术将时钟电子化、数字化,拥有时间精确、体积小、接口良好、可扩展性能强等特点,被广泛应用于生活和工作当中。由于电子钟具有可扩展性,所以可在电子钟的基础上增加一些性能,便能够实现多功能电子保姆机的主要功能——家用电器定时控制。此外,温度实时显示系统应用同样越来越广泛,比如空调遥控器上当前室温的显示、热水器温度的显示等等。医药卫生、工农业、化工生产上也有很多场合需要测量环境温度。鉴于温度对人们生活的重要性,多功能电子保姆机也应具有环境温度检测显示及温度越限报警功能。1.2多功能电子保姆机功能以Atmega128单片机为核心部件,以实时时钟芯片,数字化温度传感器和家用电器控制电路为外围电路设计出的多功能电子保姆机具有以下功能:(1)家用电器定时开关机控制功能;(2)时间显示和手动校对功能,24小时制;(3)年、月、日显示和手动校对功能;(4)室内温度检测及显示功能;(5)闹铃功能;(6)温度越限报警功能;(7)时间、日历、室内温度切换显示功能;(8)掉电后无需重新设置时间和日期功能。第二章多功能电子保姆机设计方案选择为了实现多功能电子保姆机的主要功能——家用电器定时开关机控制,该电子保姆机必须具有能够提供时间的电子钟部分,电子钟既可以通过纯硬件电路实现,也可以通过软硬件相结合实现,根据电子钟的核心部分——秒信号的产生原理,通常有以下几种设计方案。2.1555定时器方案555定时器是美国Signetics公司1972年研制的用于取代机械式定时器的中规模集成电路,因输入端设计有三个5KΩ的电阻而得名。目前生产的定时器有双极型和CMOS两种类型,其型号分别有NE555(或5G555)和C7555等多种。它们的结构和工作原理基本相同。通常,双极型定时器具有较大的驱动能力,而CMOS定时器具有低功耗、输入阻抗高等优点。555定时器工作的电源电压很宽,并可承受较大的负载电流。双极型定时器的电源电压范围为5~16V,最大负载电流可达200mA;CMOS定时器电源电压范围为3~18V,最大负载电流在4mA以下[1]。555定时器是一种多用途的数字-模拟混合集成电路,利用它能够方便地构成施密特触发器、单稳态触发器和多谐振荡器。由于使用灵活、方便,所以555定时器在波形的产生与变换、测量与控制、家用电器、电子玩具、定时器、脉冲信号发生器等许多领域中得到了应用[2]。采用555定时器产生秒脉冲信号,作为秒加法电路的时钟信号或微处理器的外部中断输入信号,可构成电子钟。采用555定时器设计电子时钟,成本低,容易实现。但是受芯片引脚数量和功能限制,不容易实现电子时钟的多功能性。2.2FPGA方案FPGA是英文FieldProgrammableGateArray(现场可编程门阵列)的缩写。它属于半制定的ASIC产品。是20世纪70年代发展起来的一种可编程逻辑器件,是目前数字系统设计的主要硬件基础。FPGA的出现使传统的电子器件和传统的电路设计受到了巨大的挑战。一片FPGA可以替代几十片,甚至上百片数字集成电路。FPGA内部包括可编程逻辑模块CLB(ConfigurableLogicBlock)、输出输入模块IOB(InputOutputBlock)和互连资源(InterconnectResource)三个部分。FPGA是由存放在片内RAM中的程序来设置其工作状态的,因此,工作时需要对片内的RAM进行编程。用户可以根据不同的配置模式,采用不同的编程方式。加电时,FPGA芯片将EPROM中数据读入片内编程RAM中,配置完成后,FPGA进入工作状态。掉电后,FPGA恢复成白片,内部逻辑关系消失,因此,FPGA能够反复使用。FPGA的编程无须专用的FPGA编程器,只须用通用的EPROM、PROM编程器即可。当需要修改FPGA功能时,只需换一片EPROM即可。这样,同一片FPGA,不同的编程数据,可以产生不同的电路功能。因此,FPGA的使用非常灵活。同一片FPGA通过不同的编程数据可以产生不同的电路功能。FPGA在通信、数据处理、网络、仪器仪表、工业控制、军事和航空航天等众多领域得到了广泛应用。随着功耗和成本的进一步降低,FPGA还将进入更多的应用领域。通过一种标准化的硬件描述语言VHDL语言编写代码,然后用仿真器验证其功能,再将设计代码综合成门级电路,最后下载到可编程逻辑器件FPGA中即可实现电子钟的设计。2.3单片机设计方案单片机是在通用微机中央处理器的基础上,将输入/输出接口电路、时钟电路以及一定容量的内存等部件集成在同一芯片上,再加上必要的外围器件,如晶体振荡器。单片机主要面向工业控制,除了具有通用微机CPU的数值计算功能外,还必须具有较灵活、强大的控制功能,以便实时的检测系统的输入量,控制系统的输出量,从而实现自动控制功能。其特点有:(1)抗干扰性强,工作温度范围宽;(2)可靠性高;(3)电磁辐射量小;(4)控制功能很强,但数值计算能力较差;(5)指令系统比通用微机的指令系统简单;(6)单片机芯片往往不是单一的数字电路芯片,而是数字、模拟混合电路系统,即单片机芯片内常常集成了一定数量的模拟比较器、A/D及D/A转换电路;(7)采用嵌入式结构。尽管同一系列的单片机品种、规格繁多,但彼此差异却不大。随着人们对智能化设备的要求越来越高,各种智能设备发展越来越快,单片机作为当前应用广泛的嵌入式系统的核心部分之一,在工业、教育、日用生活等诸多领域得到了广泛的应用。例如,在冰箱、微波炉、洗衣机等家用电器中使用单片机控制系统,使它们更加智能地工作;电话、传真、打印机中可使用单片机系统控制拨号、打印;单片机可以在工业控制和机电一体化系统中作为核心部件。单片机均具有时钟振荡系统,利用系统时钟借助微处理器的定时器/计数器可方便地实现电子钟功能。考虑到时钟的精度问题,还可以在单片机的基础上利用实时时钟芯片。第三章多功能电子保姆机硬件设计3.1主要芯片选择3.1.1单片机单片机选择自从1976年Intel公司推出MCS-48系列单片机以来,单片机技术得到了迅速的推广,已被广泛应用于自动测量、智能仪表、工业控制及家用电器各个方面。AVR单片机是Atmel公司1997年推出的一种具有双总线结构的RISC(ReducedInstructionSetComputer的缩写,即精简指令系统计算机)单片机。RISC优先选取使用频率最高的简单指令,避免复杂指令;并固定指令宽度,减少指令格式和寻址方式的种类,从而缩短指令周期,提高运行速度。由于AVR采用了RISC的这种结构,使AVR系列单片机都具备了1MIPS/MHz(百万条指令每秒/兆赫兹)的高速处理能力。传统的MCS-51系列单片机所有的数据处理都是基于一个累加器的,因此累加器与程序内存、数据存储器之间的数据转换就成了单片机的瓶颈;在AVR单片机中,寄存器由32个通用工作寄存器组成,并且任何一个寄存器都可以充当累加器,从而有效地避免了累加器的瓶颈效应,提高了系统的性能。AVR单片机还支持Basic、C等高级语言编程。采用高级语言对单片机系统进行开发是单片机应用的发展趋势。对单片机用高级语言编程可很容易地实现系统移植,并加快软件的开发过程。AVR单片机具有多个系列,包括ATtiny、AT90、ATmega。每个系列又包括多个产品,它们在功能和内存容量等方面有很大的不同,但基本结构和原理都类似,而且编程方法也相同[3]。仅仅为了完成多功能电子保姆机的主要功能——家用电器定时开关机控制,应用AVR任意一款单片机完全可以实现。若要实现时间/日历、温度显示,温度检测和温度越限报警功能,就需要更多的I/O端口,故本设计采用具有53个可编程I/O端口的ATmega128。ATmega128特点ATmega128是目前AVR中配置最全、功能最强的一款。它的引脚数最多(64个引脚),在片内集成了4K的SRAM、128K的Flash、4K的E2PROM,支持64K空间的外部并行扩展,其具体特点如下:(1)高性能、低功耗的AVR8位微处理器;(2)先进的RISC精简指令结构;(3)非易失性的程序和数据存储器;(4)JTAG接口(与IEEE1149.1标准兼容);(5)外设特点–实时计数器(RTC),4个具有比较模式和PWM的定时器计数器(两个带预分频器和一种比较模式的8位定时/计数器、两个扩充的带预分频器和比较模式捕获模式的16位定时/计数器);–两个USART、一个两线((I2C(6)特殊的处理器特点–上电复位和可编程的低电压检测,内部可校准的RC振荡器,外部和内部中断源,可软件选择时钟频率,全局上拉禁止;–6种可通过软件选择的省电模式;(7)I/O和封装–53个可编程的I/O脚;–64引脚TQFP封装与64引脚MLF封装;(8)工作电压:4.5~5.5V;(9)速度等级:0~16MHz[4]。ATmega128引脚配置ATmega128的引脚图如图3.1所示。图3.1ATmega128引脚图其引脚功能如表3.1所示。表3.1ATmega128引脚功能说明VCC电源GND地端口A、B、C、D、E端口A、B、C、D、E都为8位的双向I/O口,并具有可编程的内部上拉电阻。其输出缓冲器具有对称的驱动特性,可以输出和吸收大电流。作为输入使用时,若内部上拉电阻使能,则端口被外部电路拉低时将输出电流。复位发生时端口A、B、C、D、E为三态。端口F端口F为ADC的模拟输入引脚。如果不作为ADC的模拟输入,端口F可作为8位的双向I/O口,并具有可编程的内部上拉电阻。其输出缓冲器具有对称的驱动特性,可以输出和吸收大电流。作为输入使用时,若内部上拉电阻使能,则端口被外部电路拉低时将输出电流。复位发生时端口F为三态。如果使能了JTAG接口,则复位发生时引脚PF7(TDI)、PF5(TMS)和PF4(TCK)的上拉电阻使能。端口GPG0~PG4端口G为5位的双向I/O口,并具有可编程的内部上拉电阻。其输出缓冲器具有对称的驱动特性,可以输出和吸收大电流。作为输出使用时,若内部上拉电阻使能,则端口被外部电路拉低时将输出电流。复位发生时端口G为三态。RESET复位输入引脚。超过最小门限时间的低电平将引起系统复位,XTAL1反向振荡器放大器及片内时钟操作电路的输入。XTAL2反向振荡器放大器的输出。AVCCAVCC为端口F以及ADC转换器的电源,需要与Vcc相连接,即使没有使用ADC也应该如此。使用ADC时应该通过一个低通滤波器与Vcc连接。AREFAREF为ADC的模拟基准输入引脚。PENPEN是SPI串行下载的使能引脚。在上电复位时保持PEN为低电平将使器件进入下载模式。在正常工作过程中PEN引脚没有其它功能。3.1.2实时时钟芯片实时时钟芯片选择常用的实时时钟芯片有串行和并行两种类型,其中串行接口的时钟芯片包括I2C接口和三线接口。常见的串行接口时钟芯片有Phlilps的PCF8563、PCF8583,EPSON的RX8025、MAXIM-DALLAS的DS1305、DS1302、DS1307,美国Xicor公司的X1203等;并行接口的有MAXIM-DALLASDS12C887系列、DS12887每种芯片的主要时钟功能基本相同,只是在引脚数量、备用电池的安装方式、计时精度和扩展功能等方面略有不同。对时间精度要求很高的情况下,典型的时钟芯片有:DS1302,DS12887,X1203等都可以满足高精度要求。考虑到DS1302芯片读写靠时序控制且具有写保护位,抗干扰效果好,日历及RAM中的数据不再改变,同时体积小,联机少,外围只有一个32768Hz晶振[5]。所以本设计选用实时时钟芯片DS1302。时钟芯片DS1302简介DS1302是DALLAS公司推出的涓流充电时钟芯片,内含一个实时时钟/日历和31字节静态RAM。实时时钟/日历电路提供秒、分、时、日、星期、月、年信息,每个月的天数和闰年的天数可自动调整,时钟操作可通过AM/PM标志位决定采用24或12小时格式。DS1302与单片机之间能简单地采用同步串行的方式进行通信,仅需三根I/O线:复位RST、I/O数据线、串行时钟SCLK。时钟内部RAM的读/写数据以一字节或多达31字节的字符组方式通信。DS1302工作时功耗很低,保持数据和时钟信息时,功耗小于1mw[6]。DS1302引脚功能DS1302芯片引脚如图3.2所示:图3.2DS1302芯片引脚图其引脚功能如表3.2所示。表3.2DS1302引脚功能说明引脚号名称功能1VCC2主电源2、3X1、X2接32.768KHz晶振4GND地5RST复位6I/O数据输入/输出7SCLK串行时钟8VCC1后备电源输入DS1302内部结构及工作原理DS1302的内部结构如图3.3所示:图3.3DS1302内部结构图DS1302内部结构包括:移位寄存器、命令和控制逻辑、振荡器、实时时钟和RAM。为了初始化任何数据传送。通过把RST输入驱至高电平来启动所有的数据传送。RST有两种功能:首先,RST接通控制逻辑,允许地址/命令序列送入移位寄存器;其次,RST提供了单字节或多字节数据传送的手段。时钟SCLK是上升沿后继以下降沿的序列。数据输入时,在时钟的上升沿前必须有效,而数据位在时钟的下降沿之后输出。如果RST输入为低电平,则I/O引脚变为高阻状态,中止数据传送[7]。DS1302寄存器和控制命令及读写时序对DS1302的操作就是对其内部寄存器的操作,DS1302内部共有12个寄存器,其中有7个寄存器与日历、时钟相关,存放的数据位为BCD码形式。此外,DS1302还有年份寄存器、控制寄存器、充电寄存器、时钟突发寄存器及与RAM相关的寄存器等。时钟突发寄存器可一次性顺序读写除充电寄存器以外的寄存器。日历、时间寄存器及控制字如表3.3所示,内部寄存器列表如表3.4所示。DS1302内部的RAM分为两类:一类是单个RAM单元,共31个,每个单元为一个8位的字节,其命令控制字为C0H-FDH,其中奇数为读操作,偶数为写操作;另一类为突发方式下的RAM,可一次性读写所有的RAM的31个字节。命令控制字分别为FEH(写)、FFH(读)。表3.3日历、时钟寄存器与控制字的对照表寄存器名称765432101RAM/CKA4A3A2A1A0RD/W秒寄存器1000000分寄存器1000001小时寄存器1000010日寄存器1000011月寄存器1000100星期寄存器1000101年寄存器1000110写保护寄存器1000111慢充电寄存器1001000时钟突发寄存器1011111注:最后一位RD/W为“0”时表示进行写操作,为“1”时表示读操作。表3.4DS1302内部主要寄存器分布表寄存器名称命令字取值范围各位内容写读76543210秒寄存器80H81H00-59CH10SECSEC分寄存器82H83H00-59010MINMIN小时寄存器84H85H01-12或00-2312/240AHRHR日期寄存器86H87H01-28,29,30,310010DATEDATE月份寄存器88H89H01-1200010MMONTH周寄存器8AH8BH01-0700000DAY年份寄存器8CH8DH00-9910YEARYEAR单片机是通过简单的同步串行接口与DS1302通讯的,每次通讯都必须由单片机发起,无论是读还是写操作,单片机都必须先向DS1302写入一个命令字。这个命令字的格式如表3.3所示。最高位BIT7固定为1,BIT6决定操作是针对RAM还是时钟寄存器,接着的5个BIT是RAM或时钟寄存器在DS1302的内部地址,最后一个BIT表示这次操作是读操作或是写操作。图3.4DS1302数据读/写时序物理上,DS1302的通讯接口由3个接口线组成,即RST、SCLK、I/0。其中,RST从低电平变成高电平,启动一次数据传输过程,SCLK是时钟线,I/O是数据线。具体的读写时序如图3.4所示。3.1.3温度传感器温度传感器选择温度测量在实际的生产、生活中具有十分重要的意义。温度作为一种最基本的环境条件参数,与工业、农业、养殖业的生产以及医学乃至人们的日常生活都是紧密相关的。大多单片机接口输入的信号是数字信号,或有带A/D转换的高端单片机也可以输入模拟信号。由单片机获取非电信号的温度信息,必须通过温度传感器。传统的温度测量多以热敏电阻作为温度传感器,但是,热敏电阻的可靠性较差、测量温度精度低,而且还需经A/D转换成数字信号后才能由单片机进行处理。因此,使用数字温度传感器可简化硬件设计,方便单片机读取数据、节约成本。本设计选用一种基于“一线式”技术的数字温度传感器DS18B20,此温度传感器集温度测量和A/D转换于一体,直接输出数字量,接口几乎不需要外围组件,硬件电路结构简单,传输距离远,可以很方便的实现多点测量。DS18B20简介DS18B20是美国DALLAS半导体公司继DS1820之后最新推出的一种改进型智能温度传感器。它具有以下8种特性:(1)独特的单线接口方式:DS18B20与微处理器连接时仅需要一条接口线即可实现微处理器与DS18B20的双向通讯;(2)在使用中不需要任何外围组件;(3)可用数据线供电,电压范围:+3.0V~+5.5V;(4)测温范围:-550C(5)通过编程可实现9~12位的数字符读数方式;(6)用户可自设定非易失性的报警上下限值;(7)支持多点组网功能,多个DS18B20可以并联在惟一的总线上,实现多点测温;(8)负压特性,电源极性接反时,温度计不会因发热而烧毁,但不能正常工作[8]。DS18B20引脚功能DS18B20的引脚分布如图3.5所示:图3.5DS18B20引脚分布引脚功能描述如表3.5所示。表3.5DS18B20引脚功能引脚号名称引脚功能描述1GND地信号2DQ数据输入/输出引脚;开漏单总线接口引脚;当被用在寄生电源下,也可以向器件提供电源。3VDD可选择的VDD引脚;当工作于寄生电源时,此引脚必须接地。DS18B20内部结构DS18B20的内部结构如图3.6示。图3.6DS18B20内部结构图DS18B20主要由4部分组成:配置寄存器主要用于确定温度转换的分辨率、ROM中的64位序列号是出厂前被光刻好的,它是该DS18B20的地址识别码,每个DS18B20的64位识别码不相同。这样就可以实现1根总线上挂接多个DS18B20的目的,温度传感器、非易失性温度报警触发器TH和TL,可通过软件写入用户报警上下限值。高速缓存器内有八个字节,从低到高分别是温度低字节、温度高字节、上限报警温度TH、下限报警温度TL、结构寄存器、三个保留字节。DS18B20的温度数据用高低两个字节的补码来表示如图3.7所示(以12位转换为例)。S为符号位,S=1时表示温度为负,S=0时表示温度为正。图3.7DS18B20温度数据字节表示DS18B20工作过程由于DS18B20单总线通信功能是分时完成的,它有严格的时序概念,因此读写时序很重要。主机对DS18B20的各种操作必须按协议进行。由于DS18B20是一个典型的单总线传感器,其命令序列如下:第一步:初始化;第一步:ROM命令(跟随需要交换的数据);第二步:功能命令(跟随需要交换的数据)。初始化时首先单片机发出一个复位脉冲,使DS18B20复位:先将数据线拉低并保持480~960μs,再释放数据线,由上拉电阻拉高15~60μs后由DS18B20发出60~240μs的低电平作为应答信号。在主机检测到应答脉冲后,就可以发出ROM命令。当主机在单总线上连接多个从机设备时,可指定操作某个从机设备。这些命令还允许主机能够检测到总线上有多少个从机设备,以及其设备类型或者有没有设备处于报警状态。主机在发出功能命令之前,必须发送适当的ROM命令。当主机发出ROM命令以访问某个指定的DS18B20,接着就可以发出某个功能命令。这些命令允许主机写入或读出DS18B20缓存器,启动温度转换以及判断其供电方式等。对DS18B20访问是由主机发出特定的读写时间片来完成。写时间片时主机将数据线从高电平拉低1μs以上,紧接送出写数据(“0”或“1”)保持60μs,DS18B20在数据线拉低15μs对数据线采样。在两次写时间片中必须有一个最小lμs的恢复时间(高电平),并且一个写时间片的周期不能小于60μs。读时间片时主机将数据线从高电平拉低lμs以上,DS18B20在拉低信号线15μs后送出有效数据,为了读取正确数据,主机必须停止将数据线拉低,然后在15μs的时刻内将数据读走。两次读时间片的恢复时间和写时间片要求一致[9]。3.2多功能电子保姆机硬件设计多功能电子保姆机硬件电路包括家用电器控制电路、实时时钟电路、温度检测电路、显示电路、按键电路、闹铃电路等几部分,此外本设计还要求电子保姆机具有温度越限报警功能,所以还需要设计温度越限报警电路。其硬件方框图如图3.8所示。图3.8多功能电子保姆机硬件方框图本设计中以ATmega128为微处理器,通过实时时钟电路和家用电器控制电路来完成多功能电子保姆机的主要功能——家用电器定时开关机。闹铃电路是为了完成闹铃功能,当所设定的时间和当前时间相同时,闹铃就响,铃响时间为1分钟。温度检测电路主要是检测室内的温度,并通过LED数码管进行显示。为了使室内的温度保持在人体最舒适的温度下,所以设计了温度越限报警电路,当检测的温度高于人体最舒适温度时,此电路就会工作,使发光二极管闪烁,提醒人们采取相应措施。按键电路为了完成时间/日期的校对、显示选择、闹铃时间设定、家用电器开关机时间设定和报警温度值设定等功能。显示电路采用4位最常用的共阳LED数码管,在默认的状态下显示时间,根据按键选择显示日期、年份和室内温度。该系统使用两种电源,主电源为+5V为整个系统供电,而备用电源+3V仅为DS1302供电。当+5V电源被切断后,DS1302采用+3V备用电源供电,使DS1302继续工作。当+5V主电源恢复供电时,依旧显示当前时间,因而不会因为系统掉电使DS1302停止工作。多功能电子保姆机硬件电路图见附录A。3.2.1实时时钟电路本设计采用实时时钟芯片DS1302来采集时间/日历数据,实时时钟电路如图3.9所示。图3.9实时时钟电路DS1302采用I2C通信方式,可以用单片机的通用I/O口模拟I2C通信。其中RST为复位引脚,低电平有效,与单片机ATmega128的PC0相连;SCLK和I/O分别为同步时钟和数据I/O引脚,分别与ATmega128的PC2、引脚X1和X2连接32.768KHz晶振,与内部振荡器组成时钟。晶振的精度直接影响着芯片时间的准确与否。DS1302采用双电源供电。+5V的电源为主电源,+3V的电源为备用电源。当Vcc2低于Vcc1时,芯片由Vcc1供电;Vcc2高于Vcc10.2V时,将由备用电池为芯片供电[11]。3.2.2家用电器控制电路该电子保姆机要实现的主要功能是家用电器定时开关机控制,通过键盘设定家用电器开关机时间,定时地控制家用电器开关机。家用电器控制电路如图3.10所示。图3.10家用电器控制电路当设定的家用电器开机时间和当前时间相同时,单片机的PD3给出高电平,使NPN三极管导通,继电器吸合,此时家用电器工作;当设定的家用电器关机时间和当前时间相同时,单片机的PD3给出低电平,使NPN三极管截止,继电器释放,此时家用电器停止工作。图中1K的电阻是限制从I/O流出的电流太大,保护I/O端口,称为限流电阻。此外,三极管集电极的负载继电器吸合线圈在三极管截止时会产生一个很高的反峰电压,在吸合线圈两端并接一个二极管D,其用途是释放反峰电压,保护三极管和I/O口不会被反峰电压击穿,提高系统的可靠性。设计中还要考虑系统在上电时的状态。由于AVR在上电时,DDRx和PORTx的值均初始化为“0”,I/O引脚呈高阻输入方式,因此200K电阻的作用是确保三极管的集电极电位在上电时为“0”电平,三极管截止,保证了家用电器控制在上电时不会误动作。3.2.3闹铃电路图3.11闹铃电路闹铃电路如图3.11所示。蜂鸣器接在单片机的PD2引脚上,该引脚上接一个上拉电阻,三极管起驱动作用,当时间到达设定的闹铃时间时,PD2给出高电平使三极管导通,蜂鸣器通电后就发出有节奏的提示音,未到达设定的时间时,PD2给出低电平,蜂鸣器不发音[12]。3.2.4温度检测电路本设计中采用DS18B20将被测的室内温度转化成数字信号送单片机处理,温度检测电路如图3.12所示。图3.12温度检测电路ATmega128的PC3接DS18B20的I/O引脚,作为数据的输入和输出端口。同时I/O引脚还要接一个4.7K的上拉电阻,使数据线在空闲状态下能自动上拉为高电平[10]。GND与VDD之间接一个0.1μF的去耦电容。在外部电源供电方式下,DS18B20工作电源由VDD引脚接入。注意:在外部供电方式下,DS18B20的GND引脚不能悬空,否则不能转换温度,读取的温度总是850C[93.2.5温度越限报警电路为了使室内温度保持在人体最舒适的温度下,所以该系统设计了温度越限报警电路,如图3.13所示。在本设计中温度越限报警采用LED发光报警。图3.13温度越限报警电路通过键盘可设定人体最舒适的温度,此温度和DS18B20检测到的室内温度进行比较,当室内温度高于设定温度时,单片机PD0输出一定频率的方波信号,使发光二极管闪烁。当发光二极管闪烁时,便提醒人们采取相应的降温措施。3.2.6LED显示电路LED数码管是单片机控制系统中最常用的显示器件之一,它在单片机应用系统中的地位类似于阴极射线管显示器在台式微机系统中的地位。根据LED数码管内各笔段LED发光二极管的连接方式,可以将LED数码管分为共阴和共阳两大类。本设计中采用了四位共阳LED数码管。根据按键选择,选择显示时间、日期、年、室温。多位LED数码管显示电路按驱动方式可分为静态显示和动态显示两种方法。采用静态显示方式时,除了改变显示数据时期外,所有的数码管均处于通电发光状态,每个数码管通电占空比为100%。静态显示的优点有:显示稳定,亮度高,程序设计相对简单,MCU负担小。缺点是:占用硬件资源多(如I/O口、驱动锁存电路等),耗电量大。而所谓动态显示方式,就是一位一位地轮流点亮各个数码管(动态扫描方式)。对于每一位数码管来说,每隔一定时间点亮一次,所以当扫描的时间间隔足够小时,观察者就不会感到数码管的闪烁,看到的现象是所有的数码管一起发光(同看电影的道理一样)。动态显示的优点有:占用硬件资源少(如I/O口、驱动锁存电路等)耗电量小。缺点是:显示稳定性不易控制,程序设计相对复杂,MCU负担重。本设计采用动态显示。由单片机PA口给出待显示数据的显示码,PB0~PB3给出位选码。循环点亮各个LED数码管。其电路图如图3.14所示。图3.14LED显示电路3.2.7按键电路根据电子保姆机所要实现的功能要求,本设计需要8个功能按键,分别是显示选择键、校对键、闹铃设定键、家用电器开关机时间设定键、温度设定键、闹铃开/关键、确认键和加1键。根据键盘与单片机的连接方式可分为独立式键盘和矩阵式键盘。独立式按键就是各按键相互独立,每个按键各占用一位I/O的口线,它们之间状态是独立的,相互之间没有影响,只要单独测试端口电平的高低就能判断键的状态。独立式按键电路简单、配置灵活,软件结构也相对简单。此种接口方式适用于系统需要按键数目较少的场合。在按键数量较多的情况下,采用独立式接口方式就会占用太多的I/O口。因为本设计需要八个按键,为了减少键盘电路占用的I/O引脚数,所以采用矩阵式键盘。键盘电路如图3.15所示。图3.15键盘电路该矩阵式键盘为4×2键盘,PE0~PE3接行线,PE4、PE5接列线。各个按键对应的功能如图3.16所示。图3.16键盘分布各个按键说明如下:DISPLAY键:显示选择键。在默认的状态下显示当前时间。当第一次按下该键进入显示日期状态;第二次按下该键进入显示年份状态;第三次按下该键进入显示温度状态;再次按下该键时返回显示时间。MODIFY键:校对键。根据按键次数依次校对分、时、日、月、年。当在校对期间,确认键YES按下后就会返回到正常显示状态下。Nao_Time键:设定闹铃时间键。第一次按下该键设定闹铃分,第二次按下该键设定闹铃时。再次按下该键时,返回到正常显示状态。Elec_Time键:设定家用电器开关机时间键。根据按键次数依次设定开机分、开机时、关机分、关机时。Set_Temp键:设定报警温度键。按下此键进入设定温度状态。ON/OFF键:闹铃开/关键。INC键:加1键。在校对和设定时按下此键,所要校对或者设定的值加1。Yes键:确认键。在校对和设定期间,按下此键退出校对和设定状态,进入正常显示状态。第四章多功能电子保姆机软件设计计算机的指令系统是一套控制计算机操作的代码,称之为机器语言。计算机只能识别和执行机器语言的指令。为了便于人们理解、记忆及使用,通常用汇编语言指令来描述计算机的指令系统。汇编语言指令可通过汇编器翻译成计算机能识别的机器语言。C语言是一种编译型的结构化程序设计语言,具有简单的语法结构和强大的处理功能,具有运行速度快、编译效率高、移植性好的可读性强等多种优点,可以实现对系统硬件的直接操作。C语言支持自顶向下的结构化程序设计方法,支持模块化程序设计结构。因此,用C语言来编写目标系统软件,可以大大缩短开发周期,且明显的增加软件的可读性,便于改进和扩充【3】。比较几种编程语言,本设计采用C语言编程。4.1主程序设计本设计的主程序流程图如图4.1所示。图4.1主程序流程图系统上电时,先初始化单片机的I/O端口(设定各个端口为输入或输出端口),再初始化DS1302,并开启时钟。DS1302的初始时间为15:30,初始日期为2009年初始化后,依次调用DS1302子程序、家用电器控制子程序、闹铃子程序、DS18B20子程序、温度越限报警子程序、键盘扫描子程序、显示子程序,再经过一定的延时,返回到DS1302子程序循环运行。4.2子程序设计4.2.1初始化子程序初始化子程序包括单片机各个端口的初始化、实时时钟芯片DS1302的初始化。初始化子程序流程图如图4.2所示。4.2初始化子程序流程图单片机每个端口引脚都具有三个寄存器位:DDxn、PORTxn和PINxn,DDxn位于DDRx寄存器,PORTxn位于PORTx寄存器,PINxn位于PINx寄存器。DDxn用来选择引脚的方向。当DDxn为“1”时,Pxn配置为输出;否则为输入。当引脚配置为输入时,若PORTxn为“1”,上拉电阻将使能。如果需要关闭这个上拉电阻,可以将PORTxn清零,或者将这个引脚配置为输出。复位时各引脚为三态,即使此时没有时钟在运行。当引脚配置为输出时,若PORTxn为“1”,引脚输出高电平(“1”),否则输出低电平(各个端口的连线如表4.1所示。表4.1端口连线说明端口号连线说明端口号连线说明PA0~PA7LED数码管笔段码PD0温度越限报警灯PB0~PB3LED数码管位选码PD1闹铃开标志灯PC0DS1302-RSTPD2蜂鸣器PC1DS3102-I/OPD3继电器PC2DS1302-SCLKPE0~PE3键盘行线PC3DS18B20-I/OPE4、PE5键盘列线如果有引脚未被使用,应给这些引脚赋予一个确定电平。在深层休眠模式下大多数数字输入被禁用,但还是需要避免因引脚没有确定的电平而造成悬空引脚在其它数字输入使能模式(复位、工作模式、空闲模式)消耗电流。最简单的保证未用引脚具有确定电平的方法是使能内部上拉电阻。端口初始化程序包括选择各个端口的引脚方向,PORTx和PINx寄存器赋初值。端口A接LED数码管的各个笔段码,所以DDRA应初始化为输出端口,且该系统使用共阳LED数码管,PORTA应初始化为0xFF;PB0~PB3作为LED数码管的位选输出端口,所以DDRB初始化为输出端口,PORTB为0x00;PC0~PC2依次接DS1302的RST、I/O、SCLK,PC3接DS18B20的数据线,在初始化时先将C端口各位设置为输出端口,PORTC和PINC都为0x00,在后面的使用中根据情况,再改变各位的引脚方向和输入/出值;DDRD初始化为0xFF,设置为输出端口,且PORTD初始化为0x00;端口E、F、G都初始化为输出端口,输出值为0x00。端口初始化源程序见附录B。DS1302初始化程序包括禁止写保护,初始化时间、日期、年寄存器,使实时时钟运行,开启写保护。源程序见附录B。4.2.2DS1302子程序在初始化程序中已经对DS1302进行了初始化,所以该程序主要是读取时钟芯片当前时间、日期、年份数据并将其送到待显示数组中,以便家用电器控制子程序和以后的程序使用。该程序流程图如图4.3所示。源程序见附录B。图4.3DS1302子程序流程图单片机对DS1302进行读写操作,每次操作都必须由单片机发起。RST从低电平变成高电平,启动一次数据传输过程。每次读写操作必须先向DS1302写入命令字,即选中所要读写的寄存器,再向所选中的寄存器读/写数据。为了方便对DS1302进行读写操作,可分别设计读/写DS1302单字节子程序。在对DS1302进行写操作时,应先禁止写保护,当写完数据后,开启写保护。4.2.3家用电器控制子程序家用电器控制子程序包括家用电器开机子程序和家用电器关机子程序。该程序流程图如图4.4所示。源程序见附录B。图4.4家用电器控制子程序流程图家用电器开机子程序就是不断地将当前时间和设定的家用电器开机时间进行比较,只要当前时间同设定的开机时间相同,PD3就给出高电平,使继电器吸合,家用电器开始工作。家用电器关机子程序就是不断地将当前时间和设定的关机时间进行比较,只要当前时间和设定的家用电器关机时间相同,PD3就给出低电平,继电器释放,家用电器停止工作。4.2.4闹铃子程序闹铃子程序就是不断地将当前时间和设定的闹铃时间进行比较,在Nao_flag=1,即闹铃开的情况下,当当前时间和设定的闹铃时间相同时,PD2就会给出高电平使蜂鸣器发音,闹铃响1分钟。该程序流程图如图4.5所示。源程序见附录B。图4.5闹铃子程序流程图4.2.5DS18B20子程序DS18B20是单线器件,要在一根数据线上实现数据的双向传输,需要一定的协议来实现读写数据的严格时序要求。单片机对DS18B20的读写操作时序如图4.6所示。图4.6DS18B20读写时序单片机读取DS18B20温度数据程序的流程如图4.7所示。源程序见附录B。图4.7DS18B20子程序流程图4.2.6温度越限报警子程序此程序最主要的任务就是将设定的人体最舒适的温度与DS18B20采集到的温度进行比较,当采集的温度高于设定的温度时,PD0就会输出一定频率的方波信号,使发光二极管闪烁。该程序流程图如图4.8所示,源程序见附录B。图4.8温度越限报警子程序流程图4.2.7显示子程序本设计利用4个共阳极LED数码管来选择显示时间、日期、年份和温度,PA口输出笔段码,PB口的低四位输出位选码。显示子程序流程图如图4.9所示,源程序见附录B。图4.9显示子程序流程图本设计中采用数码管动态扫描方式,在任何时刻,PB0-PB3中只能有一个I/O口输出高电平,即只有一个数码管亮。而且,单片机必须循环轮流控制PB0-PB3中的一位输出“1”,同时PA口要输出该位相应的显示码。即使显示的内容没有变化,单片机也要进行不停的循环扫描处理。在通常状态下Dis_Code=0显示时间,DISPLAY键按下,Dis_Code的值变化,从而显示的数据也发生变化。Dis_Code=0,显示时间;Dis_Code=1,显示日期;Dis_Code=2,显示年份;Dis_Code=3,显示温度。此外,在单片机嵌入式系统软件设计中,经常要考虑二进制、十六进制BCD码、压缩BCD码、八段码、ASCII码之间的相互转换问题。由于待显示的数据是无符号字符型,以ASCII码形式存储在各个待显示数组中,所以在显示前应先将其转换成二进制形式的整型数据,再转换成相应的笔段码。4.2.8键盘子程序键盘子程序包括键盘扫描子程序和键盘处理子程序。键盘扫描程序流程图如图4.10所示。在单片机应用系统中,可采用查询方式(包括随机扫描方式和定时中断扫描方式)或硬件中断方式扫描键盘有无按键输入。硬件中断方式就是在键盘电路的键盘输入线上增加一个与门电路,与门电路的输出端接单片机的外部中断输入端口。当键盘上某一按键按下时就会产生中断,表明键盘有按键按下。这种方式除了需要增加与非门芯片,还要占用CPU一个外部中断源,因此一般不采用【12】。在随机扫描方式和定时中断扫描方式中,CPU常处于空扫描状态,这在一定程度上降低了CPU的利用率。但由于本设计中ATmega128在系统中的主要任务是家用电器定时开关机控制,时间/日历显示温度越限报警等,所以即使随机扫描方式,系统也能够正常运行。本设计中采用4×2的矩阵式键盘,在扫描程序中采用列扫描方法,先扫描第一列,再扫描第二列,扫描完后返回键值。在按键被按下或释放的瞬间,由于机械触点存在弹跳现象,即存在按键抖动现象,所以必须在硬件或软件上采取去抖动措施,避免一次按键输入一串数码。硬件上,可利用单稳态电路或RS触发器消除按键抖动现象,但在单片机应用系统中最常见的方法是利用软件延时方法消除按键抖动问题,这样可以不增加硬件成本。本设计采用软件延时方法消除按键抖动。图4.10键盘扫描子程序流程图键盘处理程序是根据键盘扫描程序返回的键值进行相应的按键处理。返回键值和相应的键盘处理子程序的对应关系如表4.2所示。键盘扫描和键盘处理源程序见附录B。表4.2键值和键盘处理子程序对应关系键值键盘处理子程序键值键盘处理子程序0x01切换显示程序Display_FUN()0x10设置闹铃时间程序Set_Nao()0x02校对程序MOD_FUN()0x20设定家用电器开关机时间子程序Set_Electric()0x04闹铃开关处理程序0x40设定越限温度程序Set_T()0x08加按键处理程序Updone()0x80确认键处理程序第五章系统调试当硬件和软件设计好后,就可以进入系统调试了。系统调试分为硬件调试和软件调试。调试过程是一个软硬件相结合调试的过程,硬件电路是基础,软件是检测硬件电路和实现其功能的关键【13】。系统的调试往往要经过多次的反复。硬件系统设计的不足、软件程序中的漏洞,都有可能造成系统调试出现问题。本设计的调试过程介绍如下:5.1硬件调试硬件电路系统调试检查分为静态检查和动态检查。硬件的静态检查主要检查电路制作的正确性,如路线、焊接等。动态检查一般首先要使用仿真系统(对于采用ISP技术的系统可直接)输入各单元部分的系统调试和诊断程序,检查系统的各部分的功能是否能正常工作。在调试前先明确系统硬件调试的顺序。本设计是在ATmega128的基础上建立起来的,所以必须先确定单片机基础电路是否正常工作。为了保证能够正确地按照设定的时间定时地控制家用电器,最主要进行家用电器电路调试。此外,在本设计中还利用了DS1302、DS18B20、键盘等外围器件,为了保证其能够正常工作,还要对这些器件进行调试。进行硬件调试前要准备好调试的工具。本设计中硬件调试需要万用表、示波器等。5.1.1单片机基础电路调试单片机基础电路包括单片机、电源、外部振荡电路、复位电路等,在调试过程中需要注意以下几点:(1)使用万用表检查电路中是否出现断路或者短路情况,检查外部所用的连接线是否完好。在调试的过程中有可能因为外部连线问题使系统不能按预期目的运行;(2)连线要正确;(3)单片机电源连接要正确。AVCC为端口F以及ADC转换器的电源,需要与Vcc相连接,即使没有使用ADC也应该如此;(4)对于没有被引用的引脚,应该给这些引脚赋予一个确定电平,最简单的保证未用引脚具有确定电平的方法是使能内部上拉电阻。在调试过程中编写一个使八个发光二极管循环点亮的程序并下载到单片机中,上电运行,来检查单片机基础电路是否正常工作。PA口循环点亮8个发光二极管的程序代码见附录C。将此调试程序下载到单片机中,观察运行结果,八个发光二极管循环点亮,证明此部分电路正确。5.1.2显示电路调试本设计显示电路采用4位共阳LED数码管进行数据显示,使用NPN三极管驱动。在连线时应注意:(1)4个NPN三极管的集电极并联接Vcc,各个三极管发射集接各个数码管的公共端,PB0-PB3分别接各个三极管的基极作为位选码输入;(2)各个数码管的笔段码输入端a、b、c、d、e、f、g、dp并联,分别与PA0-PA7相连。在调试过程中编写一段能够显示1234的程序并下载进单片机,上电后检查显示电路是否正确。显示1234的调试程序代码见附录C。将此调试程序下载进单片机中,观察运行结果,LED数码管能够正常显示1234,证明此电路是正确的。5.1.3家用电器控制及闹铃电路调试该电路部分包括DS1302实时时钟电路、家用电器控制电路、闹铃电路三部分。在调试过程中应注意:(1)应清楚DS1302与单片机连接的引脚。在本设计中DS1302的RST连PC0、I/O连PC1、SCLK连PC2、闹铃开标志灯连PD1、蜂鸣器连PD2、继电器连PD3;(2)注意电源正负极连接;(3)DS1302接32.768KHz的晶振;(4)继电器部分要分清公共端、常开触点和常闭触点。编写一段DS1302时钟程序,设置其初始时间为17:30,初始日期为2009年5月26日,设定闹铃时间为17:32,家用电器开机时间为17:34,关机时间为17:36。在调试过程中用继电器控制一个发光二极管的亮灭。将程序下载进单片机,上电后显示17:30,到17:32闹铃响1分,17:345.1.4温度检测及报警电路调试本部分电路调试包括DS18B20温度检测电路和温度越限报警电路,所用器件包括DS18B20芯片、4.7K上拉电阻、0.1μF去耦电容和发光二极管。在调试过程中应注意:(1)清楚DS18B20与单片机连线的引脚。在本设计中DS18B20的数据线和单片机的PC3相连,PD0接发光二极管,作为温度越限报警灯。(2)DS18B20数据线上接一个4.7K的上拉电阻,使数据线在空闲状态下能自动上拉为高电平;(3)注意电源正负极连接,Vcc和GND之间接一个0.1μF的去耦电容。编写一段DS18B20温度检测程序并下载进单片机,上电后,显示当前室温29oC,用手给DS18B20加热,显示的温度会上升;当设定的报警温度为25oC时,报警灯闪烁,当设定的报警温度为35oC时,报警灯不亮,证明该电路是正确的。源程序见附录B。5.1.6按键电路调试本设计采用4×2矩阵式按键,在调试时应注意:(1)应分清楚行线和列线,在本设计中PE0-PE3连四根行线,PE4和PE5连列线。(2)应分清楚各个按键的功能;在调试过程中编写一段8个按键控制8个发光二极管点亮程序,并下载进单片机,检查按键电路是否正确。按键控制发光二极管程序代码见附录C。当按下某个键时相应的发光二极管亮,证明该部分电路正确。5.2软件调试软件调试也分为静态和动态调试。所谓静态调试就是写好一个程序后,不要匆忙用编译器编译,应对写好的源程序进行人工检查。动态调试就是上机调试,根据编译器提示的语法错误,将编译器提示的全部错误一一改正,直到通过编译,生成下载文件或调试文件,还应该仔细检查编译器的警告信息,确认所有的警告信息并不会影响编译结果的正确性。本设计软件调试中利用的C编译器是ICCAVR。ICCAVR就是ATMEL公司推荐的第三方C编译器之一,是一个综合了编辑器和工程管理器的集成工作环境(IDE),工程管理器还能直接生成可以直接使用的INTELHEX格式文件,该格式的文件可被大多数编程器所支持,用于下载到芯片。本设计软件调试主要分为三大部分:实时时钟和家用电器控制部分、温度检测和温度越限报警部分、键盘部分。在硬件调试部分已经将这前两部分调试通过,源程序见附录B,这里不再赘述。只需要在主程序中调试键盘子程序即可。依据本设计所要实现的功能,键盘子程序主要完成对时间/日期的校对、闹铃时间设定、家用电器开关机时间设定、温度越限值设定、时间/日期/年/温度选择显示和闹铃的开关,为了方便调用按键处理程序各个按键都设置了标志位和标志代码。如Nao_flag,当Nao_flag=1时,表示闹铃开;当Nao_flag=0时,表示闹铃关。Mod_flag=1表示校对键按下,Mod_Code=1,校对分;Mod_Code=2,校对时;Mod_Code=3,校对日;Mod_Code=4,校对月等。键盘子程序见附录B。结论本设计以ATmega128为核心,充分利用了实时时钟芯片DS1302硬件结构的简单性,方便的实现了家用电器定时开关机控制。利用数字化温度传感器DS18B20检测室内温度,并结合温度越限报警电路,使室内的温度保持在人体最舒适的温度之下。在编程时应注意DS1302和DS18B20的时序问题。多功能电子保姆机的实现方案有多种,能够实现的功能也很多。本设计选用了单片机方案实现,且通过软硬件调试,实现家用电器定时开关机控制、温度越限报警、时间/日历的显示、闹铃等功能。由于能力有限,提供的程序还可以进一步优化。参考文献1.康光华.电子技术基础(数字部分)[M],北京:高等教育出版社,2000.62.阎石.数字电子技术基础[M],北京:高等教育出版社,1998.113.金春林等.AVR系列单片机C语言编程与应用实例[M],北京:清华大学出版社,2003.114.耿德根等.AVR高速嵌入式单片机原理与应用[M],北京:北京航空航天大学出版社,2002.105.丁金华.串行时钟芯片DS1302的应用[J],大连轻工业学院学报,1998年3月第17卷(1)6.庄建清等.51单片机综合学习系统——DS3102时钟应用篇[J],电子制作,2008年(10)7.李元斌.DS18B20数字传感器温度检测显示系统[J],软件导刊,2008年1月第7卷(1)8.柴世红.基于AT89C51单片机与DS18B20的温度测量系统[J],甘肃科技,2008年5月第24卷(9)9.张天鹏等.“一线式”数字温度计DS18B20原理与应用[J],办公自动化杂志,2009年2月(150)10.孙雪梅等.实时时钟芯片在单片机系统中的应用[J],沈阳教育学院学报,2005年6月第7卷(2)11.刘盛雄等.基于单片机的数字式电子钟的设计与制作[J],重庆工学院学报,2006年8月第20卷(8)12.潘永雄.新编单片机原理与应用[M],西安:西安电子科技大学出版社,2007.213.刘军等.单片机原理与接口技术[M],上海:华东理工大学出版社,2006.2.14.沈文等.AVR单片机C语言开发入门指导[M],北京:清华大学出版社,2003.515.丁化成、耿德根等.AVR单片机应用设计[M],北京:北京航空航天大学出版社,2003.316.RichardBarnett等.嵌入式C语言与AtmelAVR[M],北京:清华大学出版社,2003.917.何力民.单片机应用技术选编[M],北京:北京航空航天大学出版社,1997.1018.冯育长.单片机系统设计与实例分析[M],西安:西安电子科技大学出版社,2007.519.刘海英等.基于单片机的电热水器定时控制器设计[J],电子器件应用,2007年8月第9卷(8)附录A多功能电子保姆机硬件电路图附录B程序#include<iom128.h>/******************DS1302端口定义********************/#defineds1302_rstPC0//RST引脚接PC0#defineds1302_ioPC1//IO引脚接PC1#defineds1302_sclkPC2//SCLK引脚接PC2#defineset_ds1302_rst_ddr()DDRC|=0x01//RST相关定义#defineset_ds1302_rst()PORTC|=0x01#defineclr_ds1302_rst()PORTC&=~0x01#defineset_ds1302_io_ddr()DDRC|=0x02//IO相关定义#defineclr_ds1302_io_ddr()DDRC&=~0x02#defineset_ds1302_io()PORTC|=0

温馨提示

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

最新文档

评论

0/150

提交评论