基于单片机的环境监测系统_第1页
基于单片机的环境监测系统_第2页
基于单片机的环境监测系统_第3页
基于单片机的环境监测系统_第4页
基于单片机的环境监测系统_第5页
已阅读5页,还剩42页未读 继续免费阅读

下载本文档

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

文档简介

第一章绪论1.1课题研究背景与意义科技的发展与生产力的提高带来的是生活水平的日益提升,于是人民的追求便不止于温饱问题,对高品质的生活也开始了追寻,生活中人体舒适度优良便成了幸福指数之一。而家是人们除工作以外呆的最久的地方,良好的室内气象条件,比如说室内温湿度合适与否,便是影响高品质生活的重要条件之一。气温过高或过低、环境过于潮湿或者干燥,都会让人体感到不适,它间接干扰着人们生活的舒适度与否以及情绪高低。所以就非常需要对室内温湿度进行监测,方便更好的调控。现代生产工业化、生产设备电子化,生产材料也与日惧新,高精度与高效的生产也迫使人们需要数据信号的准确性和时效性,尤其是温度与湿度这两个极为重要的环境因素,很大程度地影响着生产的速度与良品率。从前对于温湿度数据的获取一直靠的是人力手动测量,使用比较过时的设备,如水银温度计之类的。不过这样的测量方式耗时耗力,且容易出现人为的主观的误差。同时这种人力测量方式对于一些需要时刻获取温湿度数据的场景也不适用。所以此时需要一种一体化更高,同时还精准的测量系统代替人力测量方式。这样的时代背景下,传感与单片机等核心器件不禁显得尤为突出。单片机现已广泛运用到人们的生活与工作之中,这也是得益于其稳定且精确的特性。传感器,单片机与显示屏同时出现,我们不由可以想象到一个传感器获取数据,交由单片机处理并输出给显示屏显示的小系统。该系统构思经过确切的代码编写,相应的电路连接,便可以成为一个对于温湿度监测有实用性的系统装置。该系统装置有效的达到了人们追求的可靠性,精准性,时效性和便捷性。1.2课题研究的主要内容课题设计的核心与题目一致,制作一个基于单片机的环境监测系统装置。这里的环境指温湿度,单片机使用的是STM32系列。装置正常工作时,传感器实时获取环境温湿度数据交由单片机处理后输出到显示屏上且数据实时显示。常显的功能方便用户随时获取数据。装置带有温湿度过限报警功能,同时为增强实用性,设有阈值设定功能,用户根据实际情况调整装置。该装置集成性较高,操作简单方便,检测准确高效,且手动设置阈值的人性化操作可以给予用户多样的使用场景。系统以STM32为核心,故给予主控模块,集成传感器模块,显示模块,阈值模块,报警模块必要的辅助电路,最后编写程序烧写入单片机作出实物。成品可以实时显示环境温湿度,环境温湿度超过阈值,装置报警。第二章系统总体设计2.1设计思路系统设计以单片机为主体便以单片机展开设计。传感器实时获取温湿度数据后交由单片机核心处理,处理完成后转输出到显示屏上完成数据常显功能。此外单片机还连接有蜂鸣器,系统默认设置有一定的温湿度限制,超过限制时报警。为方便用户使用增加的阈值模块,应由数颗按键组成模块,通过相应代码,完成阈值模块。此次设计本着简要精炼且低成本的原则,在硬件的选择上也有一定考量。系统核心STM32单片机性价比高,性能强劲同时适应多种复杂环境运行。传感器选择DH11,集成了温度与湿度的检测功能,省去了多个传感器分别采集数据的操作同时还自数模转换,很是方便高效。显示屏采用的是1602液晶屏,也是比较常见价格便宜可操作度也高的一款显示屏。单片机,传感器和显示屏还有部分硬件都是针插式的引脚,连接起来十分方便,不知不觉中就省去了一系列的操作,为后期代码编写剩下大幅时间。连接板选择了普通的树脂板配合一系列的针插式引脚,这样构成的系统简洁明了,系统相互联系各个硬件又相对独立。这样你来的好处便是后期调试时,如果出现部分模块故障,这样检测与换新过程都是行云流水般的,不会出现复杂系统下找不出故障原因的尴尬局面。低成本的维护无疑降低了使用成本,使得该装置进一步提高。精炼高效,价格低廉的装置也遵循了当代社会下的生产工艺要求,也符合新时代的环保理念。2.2系统总体设计框架图依照上边的描述的系统蓝图,确保首先确保所有基础功能的实现,然后尽可能简化精炼系统。确定总体设计方案后,初步描绘系统的方案如图2-1所示,以便于理清设计方向。图2-1系统总体设计从上图2-1可得知,系统主要分为五大模块,STM32单片机作为核心处理,主要输入模块为阈值模块与传感器模块,输出方面为显示和报警模块,加上主控模块共五大模块集成系统,完成温度湿度数据获取,显示屏常显数据,人工设限以及过限报警功能。2.3系统工作原理总体来说,系统需要实现温湿度实时采集显示,人工设限以及过限报警功能。各个模块完成各自功能,通过对应电路连接,实现上述基本功能。主控模块汇总处理所有模块信息。

传感器模块方面传感器选择的是DH11。一次采取两种数据省去了分别采取的重复操作,自带优秀的数模转换,针插引脚简单明了。传感器采集周围温湿度数据,收集的数据传送给STM32处理,如何处理完成的数据被放到各个数组中为后面的显示做准备。此外,传感器一秒采集一次数据输出,很好的保证了系统的稳定性。1602液晶显示模块的作用就是要完成对实时的温湿度以及人工操作设定阈值时等两个界面的显示。系统温湿度实时监测并显示时,显示屏其分两行显示,上行显示温度湿度,下行暂时留空。需要设置温湿度阈值时,按下2号按键,显示屏上面一行显示设置温湿度的提示,下面一行显示温湿度预设置值。注意,第一次按下2号键为设置温度阈值,第2次按下为确定温度阈值设置并开启湿度阈值设置,第三次按下为保存湿度阈值设置并退出阈值设定模块。呼出式的阈值设定界面,不影响系统平时的运行

,构建了良好的人机交互体验。

报警模块的核心便是过限报警。此次设计选择的是有源蜂鸣器,所以在报警频率都是固定的无论是温度还是湿度过限。报警的机制在实际应用可以提醒工作人员及时调整装置,启用升温器、加湿器、降温风扇以及喷雾器等操作来快速有效地调整环境温湿度。阈值设置的存在在此次设计的实用性有了质的飞跃。通过简单的四个按键来设置过限报警的阈值,无需再通过代修改。让一般使用者的面对不同环境时随时可修改系统阈值,从容面对各种复杂环境。第三章系统硬件设计3.1主控模块设计3.1.1STM32单片机简介STM32系列单片机一向以低价高配而闻名。价格实惠,功能齐全,性能高效。它是一款特地为嵌入式开放设计的高能效的高性价比单片机。这次设计采用的是STM32系列中的STM32F103C8T6,它是基于ARMCortex-M内核STM32系列的32位的一款微控制器,带闪存,USB,7个16位定时器,2个ADC和9个通信接口,3个12位的us级的A/D转换器,外设共有12条DMA通道。单片机工作温度为-40°C~85°C,极限的温度适应能力使其应用范围大大增加。其供电电压在低至2.0-3.6v时便可以保证工作效率,功耗为36mA,还拥有三种低功耗模式,这种功耗放在市面上的同类型竞品中也是非常低的了。丰富的外设配置,使得该型号单片机可应用于工业生产、零售数码、人工智能、医疗设备、安防监控等等领域。3.1.2主控模块以STM32单片机为核心的最小系统作为主控模块。具体应用时,将单片机上PA0~PA7口与液晶的数据传输口相连,B11则作为与传感器DHT11通信的数据口,PB13、PB14、PB15分别为E,R/W,RS液晶控制口,PB5、PB6、PB7、PB8作为阈值模块中四个按键的接口,PA12接报警模块蜂鸣器控制端。主控芯片原理图如图3-1

图3-1主控模块原理图3.2DH11传感器模块设计3.2.1DHT11传感器简介DH11传感器集成温湿度采集功能,同时经过实验室的严苛校准,传感器拥有精确的的已校准数字信号输出。它利用特殊的模拟信号采集、转换技术和温度、温湿度传感技术,确保传感器拥有良好的长时间稳定性和较高的可靠性。传感器包括一个电阻式感湿元件和一个NTC测温元件,并与一个高性能8位单片机相连。实物图如下图3-2所示:

图3-2DH11传感器实物图(1)引脚介绍:Pin1:接电源Pin2:单总线,数据为串行Pin3:空脚,请悬浮。Pin4:接地端(2)接口说明:电路图如下图3-3所示。实际应用时,建议接线长度大于20米时,结合实际使用上拉电阻,小于时则使用5K的上拉电阻。图3-3DHT11应用电路图(3)数据帧的描述:DATA的作用是连接传感器与单片机,并保持它们之间的通讯与数据的同步。具体说明如下:1.遵循高位先出原则,一次传输40bit。2.40bit构成分别为8bi温度整数数据,8bit温度小数数据,数据格式为8bit湿度整数数据和8bit湿度小数数据3.正常的情况下VDD为5伏,T为25度,特别的情况则不同,特殊电气特性具体如下图表3-4所示:图3-4DHT11的电气特性(5)时序描述:首先单片机发送起始信号后,然后传感器接收起始信号后会从低功耗模式变成高效率模式,然后起始信号过后,传感器就会响应,然后发送40位的数据且采集一次信号。反之如果并未接收到信号,则传感器不会采集温湿度。通讯过程如图3-5所示:图3-5DHT11通讯过程图电平在总线空闲时,单片机会等待传感器的响应,总线一定要大于18ms,保证信号能被传感器测量。传感器接收单片机信号后,等待至开始信号结束,发送一个维持80us的低电平响应信号。单片机启动信号后,等待20到40us后,读取传感器的响应信号。另外,单片机信号启动后,客切换到输入模式,或高输出功率、平均总线通过更高的负载电阻。通讯过程如图3-6所示。图3-6

DHT11信号接收发送过程图当总线是低电平的时候,表示此时传感器发送了响应信号,其中数据位是1或者0决定于高电平的长短。传感器0信号表示方法如下图3-7所示:图3-7数字0信号的表示方法数字1信号表示方法如下图3-8所示图3-8数字1信号表示方法3.2.2DH11传感器模块传感器由电阻式湿敏元件和NTC温度测量元件构成,同时连接有一个高性能的8位单片机。因此,该产品质量优良,响应速度快,抗干扰能力强。模块原理图如图3-9所示。图3-9传感器模块原理图3.31602显示屏模块设计3.3.11602显示屏简介1602液晶屏是字符型显示屏,显示屏共有上下两行单行16列,共可显示32个字符(16列2行)。在日常生活中,我们应时常可以见到液晶显示器。液晶显示模块已被广泛应用于需要简显示的电子产品中,如电子门锁,测量仪表等。可显示内容为数字、图形与特殊符号。该显示屏在单片机系统中应用有以下优点:1.此显示屏针插引脚,连接简单方便且更换简单,实用性强。2.液晶屏具有实时显示并能保持色彩与亮度的优势同时还避免了老式阴极管显示的屏闪问题。3.相比于传统的显示屏,液晶屏的耗电量更少,实用性更高,有效的利用了资源。4.液晶显示特性的保证结构简单,保证了故障率低价,延长使用时间,且体积重量较小,优化了系统空间,降低系统整体重量,为用户提供良好体验。(1)此外1602采用标准的16脚接口。说明如下图3-10图3-101602引脚接口说明(2)LCD1602的RAM地址映射及标准字库表显示屏内部已带有60个不同点阵字符图形,分别有有常用的符号、英文字母的大小写、阿拉伯数字等。相对的代码对应着相对的字符。显示屏内部地址显示如下图3-11所示:图3-111602内部显示地址当输入显示地址的时候需要最高的地址D7要保持在高电平1,因而正确的写数据应该是01000000B(40H)+10000000B(80H)=11000000B(C0H)。由于它在显示的时候光标会自动移到最右边,不需要进行其它的操作。显示屏如下图3-12图3-12显示屏正面3.3.21602显示屏模块液晶屏用除了常显主控模块输出的温湿度数据外,还需显示报警器界面和阈值设置界面,报警界面可防止蜂鸣器损坏而未能及时提醒,本系统的显示界面液晶屏显示的原理就是根据液晶显示器E、R/W、RS端口的控制判断D0~D7口输入的是命令还是数据,如果是数据则按照液晶显示器的D0~D7口输入的高低电平(表示1或者0),组成的八位二进制内容根据ASIIC的内容转换并显示出来。1602原理图如图3-13所示。图3-13显示屏模块原理图3.4阈值设置模块设计阈值设置模块主体以四个S1、S2、S3、S4四个按键与R1、R2、R3、R4四个上拉电阻构成。电阻上拉,除了起一个限流的作用外,还将不确定的信号通过电阻保持在高电平。所以由原理图可以知道,按键没有按下去的时候一直是高电平,按键按下去以后想当与引脚接地,电平被拉低。阈值模块想要实现应有功能,至少需实现温湿度阈值设置与取消,退出阈值设置界面等基本操作。S2负担主体功能,第一次按下S2,进入温度阈值设置界面,由S1负责增加温度,S2减少温度,设置完毕,第二次按下S2确认温度设置并进入湿度设置,设置方法同上,设置完毕仍是通过S2确认。S4则负责温湿度阈值设置途中的取消操作,如果在设置的过程中按了取消操作则前面所按到的加减操作的数值都会取消,只有按确定的时候才会对需要设置的温度真正的设置。阈值模块原理图如图3-14所示。图3-14阈值模块原理图3.5报警模块设计蜂鸣器的原理就是利用电来发声,采用集成的电声结构,通以稳定的直流电源即可。它的使用之处更是普遍,像学校的上下课铃声,汽车的喇叭,电子手表的响声等等。在在本次系统中,采用的有源蜂鸣器的实现报警也比较简单。给蜂鸣器通电,蜂鸣器便能以一定频率响起。当环境温湿度超出设定值时,系统报警。值得注意的是,扫描式的按键不能快速连按,否则会按键会失效,按下间隔保持在0.7秒以上才正常响应。报警模块原理图如3-15所示。图3-15报警模块原理图3.6总体设计原理图硬件系统总体设计原理图如图3-16所示图3-16总体设计原理图第四章系统软件设计在对系统整体有了一定把握后,建立系统流程图,区分出各个子模块以及他们相互间的联系,在接下来的编写设计中一一实现子模块的功能,并基于对系统整体的熟悉把相互独立的子模块逐一连接成一个完整的系统。此次软件设计均以C语言编写。子程序主要DHT11数据读取、LCD1602显示、按键输入、报警。系统流程为程序开始并各模块进行初始化,然后读取按键输入数值,若此时没有输入,则读取DHT11数据。读取数值之后,判断DHT11数值的范围是否超出设定的范围,若没有过限,则显示DHTI1的数值,如果过限,则报警电路启动。系统总体设计如图4-1所示。图4-1总体设计流程图4.11602显示模块程序设计LCD1602命令的执行与否,得先通过判断忙标志电平高低。高电平意味着忙,命令执行,否否则反之。字符的显示得先确定字符地址并告知模块。显示模块可与单片机接口直接连接,驱动程序则是按照说明书以及结合单片机的特性来写。1、单片机端口的配置以及使能端口时钟。2、忙等待,当RS为低电平R/W为高电平时可以读取BF的忙信号。设置好RS、R/W后检查D7脚的电平信息,判断是否在忙。3、写入指令或者地址,根据说明书,当RS为高电平R/W为低电平时可以写入地址,配置好RS、R/W后配置数据端(D0~D7)的数据,然后E点由高电平跳变为低电平,液晶模块执行指令或者设置地址。4、数据写入方面,当RS/为高电平R/W为低电平时允许数据写入。配置好控制端口后,配置数据端(D0~D7)的数据,然后E点由高电平跳变为低电平,液晶模块显示数据信息。5、设置显示地址:在3中有关于设置地址的操作,LCD为16字*2行的显示器,第一行初始地址是00H,第二行的地址是40H,根据这些写好地址配置,且要求写入地址时最高位D7恒定为高电平1。6、初始化命令:16*2显示,5*7点阵,8位数据口、开显示,光标关闭、文字不动,地址自动+1、清屏。4.2DH11传感器模块程序设计首先单片机发送起始信号后,然后传感器接收起始信号后会从低功耗模式变成高效率模式,然后起始信号过后,传感器就会响应,然后发送40位的数据且采集一次信号。反之如果并未接收到信号,则传感器不会采集温湿度。主机发送的低电平的启动信号,DHT从低速模式切换到高速模式。等待主机上拉信号结束,发送40bit数据并开始一次信号采集。当一个节点等待完成时,用户可以选择读取部分数据。注意:总线的卡死状态时是高水平的,主机下拉总线等待DHT响应。为了使DHT能够检测启动信号,主机下拉总线时间必须超过18毫秒。主机接收到启动信号后,DHT等待主机完成启动信号并发送低电平响应信号。等待20-40us延时,读取DHT响应信号。主机发出启动信号后,可切换到输入模式或输出高压平均值,总线被上拉电阻拉高。4.3报警模块程序设计 蜂鸣器作为报警装置主体。实现原理也比较简单,传感器采集回数据与设定值比较,不断重复,若超过设定值时,单片机控制蜂鸣器报警。4.4阈值模块程序设计 单片机的四个端口PB5、PB6、PB7、PB8分别接入四个按键。配置好单片机的相应端口为上升沿输入模式后使能时钟。然后不断地扫描PB5、PB6、PB7、PB8,如果检查到其中的一个为低电平,则延时10ms作为按键的去抖,如果还是低电平,则表示按键确实有按下,返回按键的值。第五章系统的调试及分析本设计的程序编写编译是在Keil5软件中完成的,Keil5软件编程这块比较简单易学。在对软件简单的学习之后,再结合C语言,就可以开始编程了。编程好了之后就需要对程序进行烧录,这里使用的是Keil5烧录软件,同时采用ST-LinkV2作为烧写代码以及仿真的硬件,由于是一体的,所以不管是仿真还是烧写都非常的方便。此外keil5使用前要对软件进行一些设置。首先在Optionsfortarget->C/C++->Define中填入两个重要的汇编指令USE_STDPERIPH_DRIVER,STM32F10X_MD;Optionsfortarget->Debug->use:选择ST-LinkDebugger;Optionsfortarget->Debug->use选择Setting->Debug->Port:选择SW;Optionsfortarget->Debug->use选择Setting->FlashDownload中勾选ResetandRun。部分操作如下图图5-1、图5-2、图5-3。图5-1图5-2图5-3程序调试烧录成功后,实物系统进行测试,连接计算机与开发板,设置各个接口,完成供电和下载。完成上述操作后,连接好相应引脚,打开电源,等待数秒,在显示器可以看到正常的温湿度数值显示,具体观察当前温度和湿度的变化检验系统正确性。主要通过阈值设定检验系统正常工作与否。温度未超标时通过简单的摩擦双手并手捂DH11传感器成功激发过限温度报警,通过喷洒水雾激发过限湿度报警。通过检测,系统实时显示环境中温湿度,手动设定阈值与温湿度过限报警皆如预期实现。

5.1所遇问题及解决办法本次设计过程总体还算比较顺利,具体实现过程中软件硬件都有些许问题,不过经过查阅资料,请教师友也都顺利解决了。

5.1.1硬件问题及解决方法硬件方面所犯的错误一是犯了理论认知和实际应用没有密切结合的错误再加上相关的硬件说明书没有认真阅读,才导致进度一度停止。(1)问题:阈值设置模块调试时只有1号按键有反应,其他三个按键没有反应。问题分析:回顾设计流程与阅读相应代码发现由于按键按下只是调用一次扫描函数,但由于实际应用中按下不同的按键需要实现不同的功能,使用不能简单通过按键这个变量直接去直接判断按下了哪个按键。解决方案:引入一个新的变量,把按键扫描函数返回值赋予之,再通过这个变量结合实际应用判断具体按下哪个按键。当判断完成后再赋值为零,为下一次按键扫描做准备。(2)问题:温湿度传感器DH11初始化失败,不能读取出数据。问题分析:查阅网上资料,发现传感器DH11的时序需要非常严谨,具体操作时没那么严谨,于是从时序方面着手解决。解决方案:查阅DH11的详细说明书,按照说明书标准严格操作。

5.2.2软件所遇问题及解决方法整个设计过程时间分配还是着重与软件方面,确保系统的稳定运行,虽说过程中也没有遇见特别大的问题,但是对于软件调试工作,我感觉这是一件挺需要耐性与精力同时还要细心的工作。(1)问题:在新建代码模板时出现了非常多的错误和警告,如图5-4所示。解决方案:在Optionsfortarget->C/C++->Define中加入预编译指令USE_STDPERIPH_DRIVER,STM32F10X_MD。图5-4(2)问题:出现了如图5-5所示的错误。解决方案:应该在main.c包含buzzer.h的头文件。图5-5

第六章结论与展望本次课题设计是基于单片机的温湿度环境监测系统。系统设计以单片机STM32为设计核心模块,通过传感器,显示屏与报警器简单高效地实现了对当下环境中温湿度的实时监测与过限报警。简单的使用流程,低功耗且高效地实时监测使他不单单可以用于家中贮食存物的箱柜或起居空间等居家场景,还可以用于工厂,实验,温室大棚等生产环境。不单如此,若能配合上一定的温湿度控制手段,便可实现在一定范围内的温湿度恒定,这应是现代化的生产是十分重要的一环。完成课题设计,不由感慨。小小一个单片机加上传感器与显示屏,组成的温湿度检测系统便可低成本实时监测环境中的温湿度数据,且精度与效率大大超过传统的人力检测。再次印证科技是第一生产力这一真理。当传统作业遇到自动化检测,我们应勇于接受科技发展带来的有益的新事物。高度集成的温湿度管理系统必定能在很大幅度上节省人力与物资,从而让资源更合理的分配,加速发展,形成良性循环发展。参考文献[1]黄巧章佑.气象雷达机房温度短信报警系统的设计与实现[J].科技资讯,2013(16):23-24.

[2]张嵩灏.基于STC89C52单片机的智能家居的设计[J].电子世界,2017(23):2-2.

[3]姜丽飞.温室中无线环境测控系统的设计[J].江苏农业科学,2014(04):368-371.

[4]马惠铖.实验室温湿度控制系统的设计[J].电子测试,2013(09):17-18.

[5]金永波张士金李宗帅费春国.两轮自平衡小车的设计与实现[J].电子制作,2018(8):3-3.

[6]毛鹏高娴叶楠沈新峰.精确定点环境信息探测的可移动装置设计[J].信息技术,2015(09):91-95.

[7]张富春邵婷婷杨延宁.一种基于DHT11的家用自动浇花电路的设计[J].电子测试,2014(16):32-32.

[8]吴珊花卢贤路丽民王宏玉.智能生理监测护腕设计[J].科技信息,2013(07):62-63.

[9]吴小龙吴杰.基于UDP协议的机房温湿度监控终端设计[J].今日电子,2014(09):39-40.

[10]裴颖娜张湧涛王娜.矿井无线传感器网络设计[J].河北联合大学学报(自然科学版),2013(04):10-14.

[11]丁书亚李百杰石海锋刘欣宁王颖.基于GSM的物联网智能大棚的设计[J].电脑知识与技术,2018(25):283-284.

[12]马苍穹姜兴华李承龙.基于CAN总线的物联网通讯模块设计[J].仪器仪表标准化与计量,2018(1):3-3.

[13]陈英俊.基于单片机的温湿度监测和报警系统设计[J].广东石油化工学院学报,2013(04):46-50.

[14]裴忠诚耿帅.基于STC89C52温湿度显示仪的设计[J].技术与市场,2013(08):21-22.

[15]韩丹翱王菲.DHT11数字式温湿度传感器的应用性研究[J].电子设计工程,2013(13):88-90.

致谢本次设计有幸在吴家铸导师的认真指导下按期完成。从成为我们的毕业指导老师后,老师实时关注着我们设计的每一步。从选题,软硬件设计,再到论文格式,老师无不细心提点。进度快的同学老师会点名表扬,进度稍慢的同学老师同样悉心督促。设计或遇到问题向老师询问时,吴老师的解答总是比较简短,但却总是给人豁然开朗的感觉。简洁明了,干净利落的处理方式很大幅度提高了我们设计的效率。在此十分感谢吴家铸导师这段时间的悉心指导。最后感谢广东东软学院。感谢每一位教师无私的奉献与关爱,在你们的悉心培养下我们才能茁壮成长;感谢每一个同学的指教与督促,大学四年我们共同进步;感谢为这个校园付出,在这个校园收获的每一位,谢谢你们。附录附录一设计装置实物成品如图1,图2所示:图1图2附录二主函数代码#include"delay.h"#include"sys.h"#include"lcd1602.h"#include"dht11.h"#include"Buzzer.h"#include"key.h"u8Tem[9]={'T','e','m',':',0,0,0xdf,'C',0};//只是填两位数字,多一位是为了存放'\0'防止乱显示。,0xdf是℃左边的点,在ASCII码上有。u8Hum[8]={'H','u','m',':',0,0,'%',0};//DHT11其精度湿度+-5%RH,温度+-2℃,量程湿度20-90%RH,温度0~50℃intmain(void){ u8Tip[]="DHT11Initfail"; u8temperature; u8humidity;u8set_temperature=37;//默认温度值u8set_humidity=80;//默认湿度值u8temp_buff=37;//温度缓存u8hum_buff=80;u8S=0;u8modle_flag=0;u8key_value=0; delay_init(); NVIC_Configuration(); GPIO_Configuration(); LCD1602_Init();BUZZER_Init();KEY_Init();LED_Init();delay_ms(1000);//根据说明书要求,传感器上电后,要等待1S以越过不稳定的状态。while(DHT11_Init()){LCD1602_Show_Str(0,0,Tip);//前两面个数字分别表示是列和行,也可以理解成横坐标和纵坐标,从该位置开始显示;}LCD1602_ClearScreen();//清屏幕。while(1){//modle1为修改温度警报值//modle2为修改湿度报警值//左加右减//13//24//1加,3减,2选择模式或者确定,4为取消key_value=KEY_Scan(0);if(modle_flag==0&&key_value==0){DHT11_Read_Data(&temperature,&humidity); //读取温湿度值Tem[4]=(temperature/10)+0x30;//除以10是为了取十位,+0x30是为了对应的ASCII.Tem[5]=(temperature%10)+0x30;//取个位Hum[4]=(humidity/10)+0x30;//同上Hum[5]=(humidity%10)+0x30;LCD1602_Show_Str(0,0,Tem);//显示温度LCD1602_Show_Str(9,0,Hum);//显示湿度if(temperature>set_temperature&&humidity>set_humidity){Buzzer_open;delay_ms(1000);LCD1602_Show_Str(5,1,"Note");Buzzer_close;while(S<5){delay_ms(3000);S++;}S=0;//为下一次循环准备,LCD1602_ClearScreen();}}elseif(modle_flag==1&&key_value==0){Tem[4]=(temp_buff/10)+0x30;//除以10是为取十位,+0x30为对应ASCII.Tem[5]=(temp_buff%10)+0x30;//取个位LCD1602_Show_Str(1,0,"Settempalarm");LCD1602_Show_Str(0,1,Tem);}elseif(modle_flag==2&&key_value==0){Hum[4]=(hum_buff/10)+0x30;Hum[5]=(hum_buff%10)+0x30;LCD1602_Show_Str(1,0,"Sethumalarm");LCD1602_Show_Str(9,1,Hum);}elseif(modle_flag==0&&key_value==2){LCD1602_ClearScreen();modle_flag++;key_value=0;}elseif(modle_flag==1&&key_value==1){LCD1602_ClearScreen();temp_buff++;key_value=0;}elseif(modle_flag==1&&key_value==3){LCD1602_ClearScreen();temp_buff--;key_value=0;}elseif(modle_flag==2&&key_value==1){LCD1602_ClearScreen();hum_buff++;key_value=0;}elseif(modle_flag==2&&key_value==3){LCD1602_ClearScreen();hum_buff--;key_value=0;}elseif(modle_flag==1&&key_value==2){set_temperature=temp_buff;modle_flag++;LCD1602_ClearScreen();key_value=0;}elseif(modle_flag==2&&key_value==2){set_humidity=hum_buff;modle_flag=0;LCD1602_ClearScreen();key_value=0;}elseif(key_value==4){temp_buff=set_temperature;hum_buff=set_humidity;LCD1602_ClearScreen();modle_flag=0;key_value=0;}delay_ms(50);}}

ExcelXP的八则快速输入技巧如果我们在用ExcelXP处理庞大的数据信息时,不注意讲究技巧和方法的话,很可能会花费很大的精力。因此如何巧用ExcelXP,来快速输入信息就成为各个ExcelXP用户非常关心的话题,笔者向大家介绍几则这方面的小技巧。1、快速输入大量含小数点的数字如果我们需要在ExcelXP工作表中输入大量的带有小数位的数字时,按照普通的输入方法,我们可能按照数字原样大小直接输入,例如现在要在单元格中输入0.05这个数字时,我们会把“0.05”原样输入到表格中。不过如果需要输入若干个带有小数点的数字时,我们再按照上面的方法输入的话,每次输入数字时都需要重复输入小数点,这样工作量会变大,输入效率会降低。其实,我们可以使用ExcelXP中的小数点自动定位功能,让所有数字的小数点自动定位,从而快速提高输入速度。在使用小数点自动定位功能时,我们可以先在ExcelXP的编辑界面中,用鼠标依次单击“工具”/“选项”/“编辑”标签,在弹出的对话框中选中“自动设置小数点”复选框,然后在“位数”微调编辑框中键入需要显示在小数点右面的位数就可以了。以后我们再输入带有小数点的数字时,直接输入数字,而小数点将在回车键后自动进行定位。例如,我们要在某单元格中键入0.06的话,可以在上面的设置中,让“位数”选项为2,然后直接在指定单元格中输入6,回车以后,该单元格的数字自动变为“0.06”,怎么样简单吧?2、快速录入文本文件中的内容现在您手边假如有一些以纯文本格式储存的文件,如果此时您需要将这些数据制作成ExcelXP的工作表,那该怎么办呢?重新输入一遍,大概只有头脑有毛病的人才会这样做;将菜单上的数据一个个复制/粘贴到工作表中,也需花很多时间。没关系!您只要在ExcelXP中巧妙使用其中的文本文件导入功能,就可以大大减轻需要重新输入或者需要不断复制、粘贴的巨大工作量了。使用该功能时,您只要在ExcelXP编辑区中,依次用鼠标单击菜单栏中的“数据/获取外部数据/导入文本文件”命令,然后在导入文本会话窗口选择要导入的文本文件,再按下“导入”钮以后,程序会弹出一个文本导入向导对话框,您只要按照向导的提示进行操作,就可以把以文本格式的数据转换成工作表的格式了。3、快速输入大量相同数据如果你希望在不同的单元格中输入大量相同的数据信息,那么你不必逐个单元格一个一个地输入,那样需要花费好长时间,而且还比较容易出错。你可以通过下面的操作方法在多个相邻或不相邻的单元格中快速填充同一个数据,具体方法为:首先同时选中需要填充数据的单元格。若某些单元格不相邻,可在按住Ctrl键的同时,点击鼠标左键,逐个选中;其次输入要填充的某个数据。按住Ctrl键的同时,按回车键,则刚才选中的所有单元格同时填入该数据。4、快速进行中英文输入法切换一张工作表常常会既包含有数字信息,又包含有文字信息,要录入这样一种工作表就需要我们不断地在中英文之间反复切换输入法,非常麻烦,为了方便操作,我们可以用以下方法实现自动切换:首先用鼠标选中需要输入中文的单元格区域,然后在输入法菜单中选择一个合适的中文输入法;接着打开“有效数据”对话框,选中“IME模式”标签,在“模式”框中选择打开,单击“确定”按钮;然后再选中输入数字的单元格区域,在“有效数据”对话框中,单击“IME模式”选项卡,在“模式”框中选择关闭(英文模式);最后单击“确定”按钮,这样用鼠标分别在刚才设定的两列中选中单元格,五笔和英文输入方式就可以相互切换了。5、快速删除工作表中空行删除ExcelXP工作表中的空行,一般的方法是需要将空行都找出来,然后逐行删除,但这样做操作量非常大,很不方便。那么如何才能减轻删除工作表中空行的工作量呢?您可以使用下面的操作方法来进行删除:首先打开要删除空行的工作表,在打开的工作表中用鼠标单击菜单栏中的“插入”菜单项,并从下拉菜单中选择“列”,从而插入一新的列X,在X列中顺序填入整数;然后根据其他任何一列将表中的行排序,使所有空行都集中到表的底部。删去所有空行中X列的数据,以X列重新排序,然后删去X列。按照这样的删除方法,无论工作表中包含多少空行,您就可以很快地删除了。6、快速对不同单元格中字号进行调整在使用ExcelXP编辑文件时,常常需要将某一列的宽度固定,但由于该列各单元格中的字符数目不等,致使有的单元格中的内容不能完全显示在屏幕上,为了让这些单元格中的数据都显示在屏幕上,就不得不对这些单元格重新定义较小的字号。如果依次对这些单元格中的字号调整的话,工作量将会变得很大。其实,您可以采用下面的方法来减轻字号调整的工作量:首先新建或打开一个工作簿,并选中需要ExcelXP根据单元格的宽度调整字号的单元格区域;其次单击用鼠标依次单击菜单栏中的“格式”/“单元格”/“对齐”标签,在“文本控制”下选中“缩小字体填充”复选框,并单击“确定”按钮;此后,当你在这些单元格中输入数据时,如果输入的数据长度超过了单元格的宽度,ExcelXP能够自动缩小字符的大小把数据调整到与列宽一致,以使数据全部显示在单元格中。如果你对这些单元格的列宽进行了更改,则字符可自动增大或缩小字号,以适应新的单元格列宽,但是对这些单元格原设置的字体字号大小则保持不变。7、快速输入多个重复数据在使用ExcelXP工作表的过程中,我们经常要输入大量重复的数据,如果依次输入,无疑工作量是巨大的。现在我们可以借助ExcelXP的“宏”功能,来记录首次输入需要重复输入的数据的命令和过程,然后将这些命令和过程赋值到一个组合键或工具栏的按钮上,当按下组合键时,计算机就会重复所记录的操作。使用宏功能时,我们可以按照以下步骤进行操作:首先打开工作表,在工作表中选中要进行操作的单元格;接着再用鼠标单击菜单栏中的“工具”菜单项,并从弹出的下拉菜单中选择“宏”子菜单项,并从随后弹出的下级菜单中选择“录制新宏”命令;设定好宏后,我们就可以对指定的单元格,进行各种操作,程序将自动对所进行的各方面操作记录复制。8、快速处理多个工作表有时我们需要在ExcelXP中打开多个工作表来进行编辑,但无论打开多少工作表,在某一时刻我们只能对一个工作表进行编辑,编辑好了以后再依次编辑下一个工作表,如果真是这样操作的话,我们倒没有这个必要同时打开多个工作表了,因为我们同时打开多个工作表的目的就是要减轻处理多个工作表的工作量的,那么我们该如何实现这样的操作呢?您可采用以下方法:首先按住“Shift"键或“Ctrl"键并配以鼠标操作,在工作簿底部选择多个彼此相邻或不相邻的工作表标签,然后就可以对其实行多方面的批量处理;接着在选中的工作表标签上按右键弹出快捷菜单,进行插入和删除多个工作表的操作;然后在“文件”菜单中选择“页面设置……”,将选中的多个工作表设成相同的页面模式;再通过“编辑”菜单中的有关选项,在多个工作表范围内进行查找、替换、定位操作;通过“格式”菜单中的有关选项,将选中的多个工作表的行、列、单元格设成相同的样式以及进行一次性全部隐藏操作;接着在“工具”菜单中选择“选项……”,在弹出的菜单中选择“视窗”和“编辑”按钮,将选中的工作表设成相同的视窗样式和单元格编辑属性;最后选中上述工作表集合中任何一个工作表,并在其上完成我们所需要的表格,则其它工作表在相同的位置也同时生成了格式完全相同的表格。高效办公Excel排序方法"集中营"排序是数据处理中的经常性工作,Excel排序有序数计算(类似成绩统计中的名次)和数据重排两类。本文以几个车间的产值和名称为例,介绍Excel2000/XP的数据排序方法。一、数值排序1.RANK函数RANK函数是Excel计算序数的主要工具,它的语法为:RANK(number,ref,order),其中number为参与计算的数字或含有数字的单元格,ref是对参与计算的数字单元格区域的绝对引用,order是用来说明排序方式的数字(如果order为零或省略,则以降序方式给出结果,反之按升序方式)。例如图1中E2、E3、E4单元格存放一季度的总产值,计算各车间产值排名的方法是:在F2单元格内输入公式“=RANK(E2,$E$2:$E$4)”,敲回车即可计算出铸造车间的产值排名是2。再将F2中的公式复制到剪贴板,选中F3、F4单元格按Ctrl+V,就能计算出其余两个车间的产值排名为3和1。如果B1单元格中输入的公式为“=RANK(E2,$E$2:$E$4,1)”,则计算出的序数按升序方式排列,即2、1和3。需要注意的是:相同数值用RANK函数计算得到的序数(名次)相同,但会导致后续数字的序数空缺。假如上例中F2单元格存放的数值与F3相同,则按本法计算出的排名分别是3、3和1(降序时)。2.COUNTIF函数COUNTIF函数可以统计某一区域中符合条件的单元格数目,它的语法为COUNTIF(range,criteria)。其中range为参与统计的单元格区域,criteria是以数字、表达式或文本形式定义的条件。其中数字可以直接写入,表达式和文本必须加引号。仍以图1为例,F2单元格内输入的公式为“=COUNTIF($E$2:$E$4,">"&E2)+1”。计算各车间产值排名的方法同上,结果也完全相同,2、1和3。此公式的计算过程是这样的:首先根据E2单元格内的数值,在连接符&的作用下产生一个逻辑表达式,即“>176.7”、“>167.3”等。COUNTIF函数计算出引用区域内符合条件的单元格数量,该结果加一即可得到该数值的名次。很显然,利用上述方法得到的是降序排列的名次,对重复数据计算得到的结果与RANK3.IF函数Excel自身带有排序功能,可使数据以降序或升序方式重新排列。如果将它与IF函数结合,可以计算出没有空缺的排名。以图1中E2、E3、E4单元格的产值排序为例,具体做法是:选中E2单元格,根据排序需要,单击Excel工具栏中的“降序排序”或“升序排序”按钮,即可使工作表中的所有数据按要求重新排列。假如数据是按产值由大到小(降序)排列的,而您又想赋予每个车间从1到n(n为自然数)的排名。可以在G2单元格中输入1,然后在G3单元格中输入公式“=IF(E3=E2,G3,G3+1)”,只要将公式复制到G4等单元格,就可以计算出其他车间的产值排名。二、文本排序选举等场合需要按姓氏笔划为文本排序,Excel提供了比较好的解决办法。如果您要将图1数据表按车间名称的笔划排序,可以使用以下方法:选中排序关键字所在列(或行)的首个单元格(如图1中的A1),单击Excel“数据”菜单下的“排序”命令,再单击其中的“选项”按钮。选中“排序选项”对话框“方法”下的“笔画排序”,再根据数据排列方向选择“按行排序”或“按列排序”,“确定”后回到“排序”对话框(图2)。如果您的数据带有标题行(如图1中的“单位”之类),则应选中“有标题行”(反之不选),然后打开“主要关键字”下拉列表,选择其中的“单位”,选中排序方式(“升序”或“降序”)后“确定”,表中的所有数据就会据此重新排列。此法稍加变通即可用于“第一名”、“第二名”等文本排序,请读者自行摸索。三、自定义排序如果您要求Excel按照“金工车间”、“铸造车间”和“维修车间”的特定顺序重排工作表数据,前面介绍的几种方法就无能为力了。这类问题可以用定义排序规则的方法解决:首先单击Excel“工具”菜单下的“选项”命令,打开“选项”对话框中的“自定义序列”选项卡(图3)。选中左边“自定义序列”下的“新序列”,光标就会在右边的“输入序列”框内闪动,您就可以输入“金工车间”、“铸造车间”等自定义序列了,输入的每个序列之间要用英文逗号分隔,或者每输入一个序列就敲回车。如果序列已经存在于工作表中,可以选中序列所在的单元格区域单击“导入”,这些序列就会被自动加入“输入序列”框。无论采用以上哪种方法,单击“添加”按钮即可将序列放入“自定义序列”中备用(图3)。使用排序规则排序的具体方法与笔划排序很相似,只是您要打开“排序选项”对话框中的“自定义排序次序”下拉列表,选中前面定义的排序规则,其他选项保持不动。回到“排序”对话框后根据需要选择“升序”或“降序”,“确定”后即可完成数据的自定义排序。需要说明的是:显示在“自定义序列”选项卡中的序列(如一、二、三等),均可按以上方法参与排序,请读者注意Excel提供的自定义序列类型。谈谈Excel输入的技巧在Excel工作表的单元格中,可以使用两种最基本的数据格式:常数和公式。常数是指文字、数字、日期和时间等数据,还可以包括逻辑值和错误值,每种数据都有它特定的格式和输入方法,为了使用户对输入数据有一个明确的认识,有必要来介绍一下在Excel中输入各种类型数据的方法和技巧。一、输入文本Excel单元格中的文本包括任何中西文文字或字母以及数字、空格和非数字字符的组合,每个单元格中最多可容纳32000个字符数。虽然在Excel中输入文本和在其它应用程序中没有什么本质区别,但是还是有一些差异,比如我们在Word、PowerPoint的表格中,当在单元格中输入文本后,按回车键表示一个段落的结束,光标会自动移到本单元格中下一段落的开头,在Excel的单元格中输入文本时,按一下回车键却表示结束当前单元格的输入,光标会自动移到当前单元格的下一个单元格,出现这种情况时,如果你是想在单元格中分行,则必须在单元格中输入硬回车,即按住Alt键的同时按回车键。二、输入分数几乎在所有的文档中,分数格式通常用一道斜杠来分界分子与分母,其格式为“分子/分母”,在Excel中日期的输入方法也是用斜杠来区分年月日的,比如在单元格中输入“1/2”,按回车键则显示“1月2日”,为了避免将输入的分数与日期混淆,我们在单元格中输入分数时,要在分数前输入“0”(零)以示区别,并且在“0”和分子之间要有一个空格隔开,比如我们在输入1/2时,则应该输入“01/2”。如果在单元格中输入“81/2”,则在单元格中显示“81/2”,而在编辑栏中显示“三、输入负数在单元格中输入负数时,可在负数前输入“-”作标识,也可将数字置在()括号内来标识,比如在单元格中输入“(88)”,按一下回车键,则会自动显示为“-88”。四、输入小数在输入小数时,用户可以向平常一样使用小数点,还可以利用逗号分隔千位、百万位等,当输入带有逗号的数字时,在编辑栏并不显示出来,而只在单元格中显示。当你需要输入大量带有固定小数位的数字或带有固定位数的以“0”字符串结尾的数字时,可以采用下面的方法:选择“工具”、“选项”命令,打开“选项”对话框,单击“编辑”标签,选中“自动设置小数点”复选框,并在“位数”微调框中输入或选择要显示在小数点右面的位数,如果要在输入比较大的数字后自动添零,可指定一个负数值作为要添加的零的个数,比如要在单元格中输入“88”后自动添加3个零,变成“88000”,就在“位数”微调框中输入“-3”,相反,如果要在输入“88”后自动添加3位小数,变成“0.088”,则要在“位数”微调框中输入“3”。另外,在完成输入带有小数位或结尾零字符串的数字后,应清除对“自动设置小数点”符选框的选定,以免影响后边的输入;如果只是要暂时取消在“自动设置小数点”中设置的选项,可以在输入数据时自带小数点。五、输入货币值Excel几乎支持所有的货币值,如人民币(¥)、英镑(£)等。欧元出台以后,Excel2000完全支持显示、输入和打印欧元货币符号。用户可以很方便地在单元格中输入各种货币值,Excel会自动套用货币格式,在单元格中显示出来,如果用要输入人民币符号,可以按住Alt键,然后再数字小键盘上按“0165”即可。六、输入日期Excel是将日期和时间视为数字处理的,它能够识别出大部分用普通表示方法输入的日期和时间格式。用户可以用多种格式来输入一个日期,可以用斜杠“/”或者“-”来分隔日期中的年、月、日部分。比如要输入“2001年12月1日”,可以在单元各种输入“2001/12/1”或者“2001-12-1七、输入时间在Excel中输入时间时,用户可以按24小时制输入,也可以按12小时制输入,这两种输入的表示方法是不同的,比如要输入下午2时30分38秒,用24小时制输入格式为:2:30:38,而用12小时制输入时间格式为:2:30:38p,注意字母“p”和时间之间有一个空格。如果要在单元格中插入当前时间,则按Ctrl+Shift+;键。了解Excel公式的错误值经常用Excel的朋友可能都会遇到一些莫名奇妙的错误值信息:#N/A!、#VALUE!、#DIV/O!等等,出现这些错误的原因有很多种,如果公式不能计算正确结果,Excel将显示一个错误值,例如,在需要数字的公式中使用文本、删除了被公式引用的单元格,或者使用了宽度不足以显示结果的单元格。以下是几种常见的错误及其解决方法。1.#####!原因:如果单元格所含的数字、日期或时间比单元格宽,或者单元格的日期时间公式产生了一个负值,就会产生#####!错误。解决方法:如果单元格所含的数字、日期或时间比单元格宽,可以通过拖动列表之间的宽度来修改列宽。如果使用的是1900年的日期系统,那么Excel中的日期和时间必须为正值,用较早的日期或者时间值减去较晚的日期或者时间值就会导致#####!错误。如果公式正确,也可以将单元格的格式改为非日期和时间型来显示该值。2.#VALUE!当使用错误的参数或运算对象类型时,或者当公式自动更正功能不能更正公式时,将产生错误值#VALUE!。原因一:在需要数字或逻辑值时输入了文本,Excel不能将文本转换为正确的数据类型。解决方法:确认公式或函数所需的运算符或参数正确,并且公式引用的单元格中包含有效的数值。例如:如果单元格A1包含一个数字,单元格A2包含文本"学籍",则公式"=A1+A2"将返回错误值#VALUE!。可以用SUM工作表函数将这两个值相加(SUM函数忽略文本):=SUM(A1:A2)。原因二:将单元格引用、公式或函数作为数组常量输入。解决方法:确认数组常量不是单元格引用、公式或函数。原因三:赋予需要单一数值的运算符或函数一个数值区域。解决方法:将数值区域改为单一数值。修改数值区域,使其包含公式所在的数据行或列。3.#DIV/O!当公式被零除时,将会产生错误值#DIV/O!。原因一:在公式中,除数使用了指向空单元格或包含零值单元格的单元格引用(在Excel中如果运算对象是空白单元格,Excel将此空值当作零值)。解决方法:修改单元格引用,或者在用作除数的单元格中输入不为零的值。原因二:输入的公式中包含明显的除数零,例如:=5/0。解决方法:将零改为非零值。4.#NAME?在公式中使用了Excel不能识别的文本时将产生错误值#NAME?。原因一:删除了公式中使用的名称,或者使用了不存在的名称。解决方法:确认使用的名称确实存在。选择菜单"插入"|"名称"|"定义"命令,如果所需名称没有被列出,请使用"定义"命令添加相应的名称。原因二:名称的拼写错误。解决方法:修改拼写错误的名称。原因三:在公式中使用标志。解决方法:选择菜单中"工具"|"选项"命令,打开"选项"对话框,然后单击"重新计算"标签,在"工作薄选项"下,选中"接受公式标志"复选框。原因四:在公式中输入文本时没有使用双引号。解决方法:Excel将其解释为名称,而不理会用户准备将其用作文本的想法,将公式中的文本括在双引号中。例如:下面的公式将一段文本"总计:"和单元格B50中的数值合并在一起:="总计:"&B50原因五:在区域的引用中缺少冒号。解决方法:确认公式中,使用的所有区域引用都使用冒号。例如:SUM(A2:B34)。5.#N/A原因:当在函数或公式中没有可用数值时,将产生错误值#N/A。解决方法:如果工作表中某些单元格暂时没有数值,请在这些单元格中输入"#N/A",公式在引用这些单元格时,将不进行数值计算,而是返回#N/A。6.#REF!当单元格引用无效时将产生错误值#REF!。原因:删除了由其他公式引用的单元格,或将移动单元格粘贴到由其他公式引用的单元格中。解决方法:更改公式或者在删除或粘贴单元格之后,立即单击"撤消"按钮,以恢复工作表中的单元格。7.#NUM!当公式或函数中某个数字有问题时将产生错误值#NUM!。原因一:在需要数字参数的函数中使用了不能接受的参数。解决方法:确认函数中使用的参数类型正确无误。原因二:使用了迭代计算的工作表函数,例如:IRR或RATE,并且函数不能产生有效的结果。解决方法:为工作表函数使用不同的初始值。原因三:由公式产生的数字太大或太小,Excel不能表示。解决方法:修改公式,使其结果在有效数字范围之间。8.#NULL!当试图为两个并不相交的区域指定交叉点时将产生错误值#NULL!。原因:使用了不正确的区域运算符或不正确的单元格引用。解决方法:如果要引用两个不相交的区域,请使用联合运算符逗号(,)。公式要对两个区域求和,请确认在引用这两个区域时,使用逗号。如:SUM(A1:A13,D12:D23)。如果没有使用逗号,Excel将试图对同时属于两个区域的单元格求和,但是由于A1:A13和D12:D23并不相交,所以他们没有共同的单元格。在Excel中快速查看所有工作表公式只需一次简单的键盘点击,即可可以显示出工作表中的所有公式,包括Excel用来存放日期的序列值。要想在显示单元格值或单元格公式之间来回切换,只需按下CTRL+`(位于TAB键上方)。EXCEL2000使用技巧十招1、Excel文件的加密与隐藏如果你不愿意自己的Excel文件被别人查看,那么你可以给它设置密码保护,采用在保存文件时用加密的方法就可以实现保护目的,在这里要特别注意的是,自己设定的密码一定要记住,否则自己也将被视为非法入侵者而遭拒绝进入。给文件加密的具体方法为:A、单击“文件”菜单栏中的“保存或者(另存为)”命令后,在弹出的“保存或者(另存为)”的对话框中输入文件名;B、再单击这个对话框中“工具”栏下的“常规选项”按钮,在弹出的“保存选项”的对话框中输入自己的密码;这里要注意,它提供了两层保护,如果你也设置了修改权限密码的话,那么即使文件被打开也还需要输入修改权限的密码才能修改。C、单击“确定”按钮,在弹出的密码确认窗口中重新输入一遍密码,再点击“确认”,最后点“保存”完成文件的加密工作。当重新打开文件时就要求输入密码,如果密码不正确,文件将不能打开。2、对单元格进行读写保护单元格是Excel执行其强大的计算功能最基本的元素,对单元格的读写保护是Excel对数据进行安全管理的基础。对单元格的保护分为写保护和读保护两类,所谓写保护就是对单元格中输入信息加以限制,读保护是对单元格中已经存有信息的浏览和查看加以限制。对单元格的写保护有两种方法:A、对单元格的输入信息进行有效性检测。首先选定要进行有效性检测的单元格或单元格集合,然后从数据菜单中选择“有效数据”选项,通过设定有效条件、显示信息和错误警告,控制输入单元格的信息要符合给定的条件。B、设定单元格的锁定属性,以保护存入单元格的内容不能被改写。可分为以下步骤:(1)选定需要锁定的单元格或单元格集合;(2)从格式菜单中选择“单元格”选项;(3)在设置单元格格式的弹出菜单中选择“保护”标签,在弹出的窗口中,选中“锁定”;(4)从工具菜单中选择“保护”选项,设置保护密码,即完成了对单元格的锁定设置。对单元格的读保护有三种方法:A、通过对单元格颜色的设置进行读保护。例如:将选定单元格或单元格集合的背景颜色与字体颜色同时设为白色,这样,从表面看起来单元格中好像是没有输入任何内容,用户无法直接读出单元格中所存储的信息。B、用其他画面覆盖在需要保护的单元格之上,遮住单元格的本来面目,以达到读保护目的。例如:使用绘图工具,画一不透明矩形覆盖在单元格之上,从格式菜单中选定矩形的“锁定”选项,然后保护工作表,以保证矩形不能被随意移动。这样,用户所看到的只是矩形,而看不到单元格中所存储的内容。C、通过设置单元格的行高和列宽,隐藏选定的单元格,然后保护工作表,使用户不能直接访问被隐藏的单元格,从而起到读保护的作用。3、快速填充相同数据如果你希望在不同的单元格中输入大量相同的数据信息,那么你不必逐个单元格一个一个地输入,那样需要花费好长时间,而且还比较容易出错。我们可以通过下面的操作方法在多个相邻或不相邻的单元格中快速填充同一个数据,具体方法为:A、同时选中需要填充数据的单元格。若某些单元格不相邻,可在按住Ctrl键的同时,点击鼠标左键,逐个选中;B、输入要填充的某个数据。按住Ctrl键的同时,按回车键,则刚才选中的所有单元格同时填入该数据。4、使用Excel中的“宏”功能宏的概念,相信使用过WORD的人都会知道,她可以记录命令和过程,然后将这些命令和过程赋值到一个组合键或工具栏的按钮上,当按下组合键时,计算机就会重复所记录的操作。在实践工作中,它可以代替经常输入大量重复而又琐碎的数据,具体宏的定义方法如下::A、打开工作表,在工作表中选中要进行操作的单元格;B、用鼠标单击菜单栏中的“工具”菜单项,并从弹出的下拉菜单中选择“宏”子菜单项,并从随后弹出的下级菜单中选择“录制新宏”命令;C、设定好宏后,我们就可以对指定的单元格,进行各种操作,程序将自动对所进行的各方面操作记录复制。5、连续两次选定单元格我们有时需要在某个单元格内连续输入多个数值,以查看引用此单元格的其他单元格的效果。但每次输入一个值后按回车键,活动单元格均默认下移一个单元格,非常不便。解决此问题的一般做法是通过选择“工具”\“选项”\“编辑”,取消“按回车键后移动”选项的选定来实现在同一单元格内输入许多数值,但以后你还得将此选项选定,显得比较麻烦。其实,采用连续两次选定单元格方法就显得灵活、方便:单击鼠标选定单元格,然后按住Ctrl键再次单击鼠标选定此单元格。此时,单元格周围将出现实线框。6、在工作表之间使用超级连接首先须要在被引用的其他工作表中相应的部分插入书签,然后在引用工作表中插入超级链接,注意在插入超级链接时,可以先在“插入超级链接”对话框的“链接到文件或URL”设置栏中输入目标工作表的路径和名称,再在“文件中有名称的位置”设置栏中输入相应的书签名,也可以通过“浏览”方式选择。完成上述操作之后,一旦使用鼠标左键单击工作表中带有下划线的文本的任意位置,即可实现中文Excel2000在自动打开目标工作表并转到相应的位置处,这一点与WORD的使用很相似。7、快速清除单元格的内容首先用鼠标选定该单元格,然后按住键盘上的Delete键,此时你会发现你只是删除了单元格内容,它的格式和批注还保留着。那么如何才能彻底清除单元格呢,请看下面的两种操作步骤:A、选定想要清除的单元格或单元格范围;B、选择“编辑”菜单中的“清除”命令,这时显示“清除”菜单;C、选择要清除的命令,可以选择“全部”、“格式”、“内容”或“批注”中的任一个。8、快速修改单元格次序在实际操作的过程中,我们有时需要快速修改单元格内容的次序。在拖放选定的一个或多个单元格至新的位置的同时,按住Shift键可以快速修改单元格内容的次序。具体方法如下:A、首先用鼠标选定单元格,同时按下键盘上的Shift键;B、接着移动鼠标指针到单元格边缘,直至出现拖放指针箭头,然后进行拖放操作。上下拖拉时鼠标在单元格间边界处会变成一个水平“工”状标志,左右拖拉时会变成垂直“工”状标志,释放鼠标按钮完成操作后,单元格间的次序即发生了变化。、在Excel中利用公式来设置加权平均加权平均在财务核算和统计工作中经常用到,并不是一项很复杂的计算,关键是要理解加权平均值其实就是总量值(如金额)除以总数量得出的单位平均值,而不是简单的将各个单位值(如单价)平均后得到的那个单位值。在Excel中可设置公式解决(其实就是一个除法算式),分母是各个量值之和,分子是相应的各个数量之和,它的结果就是这些量值的加权平均值。10、用Excel绘制函数图像函数图像能直观地反映函数的性质,用手工方法来绘制函数图像效果不太好,而用Excel绘制函数图像非常简便,所作图像非常标准、漂亮,具体方法如下:A、首先打开电子表格的操作窗口,然后用鼠标选择菜单栏中的“新建”命令,这时屏幕上会出现一个空白的电子表格;B、然后在A列的A1格输入“X=”,表明这是自变量,再在A列的A2及以后的格内逐次从小到大输入自变量的各个值;实际输入的时候,通常应用等差数列输入法,先输入前三个值,定出自变量中数与数的距离,然后点击A2格,按住鼠标拖到A4格选中这三项,使这三项变成一个黑色矩形,再用鼠标指向这黑色矩形的右下角的小方块,当光标变成“+”后,按住鼠标拖动光标到适当的位置,就完成自变量的输入;C、接着在B列的B1格输入函数式y=f(x)的一般函数表达式,如y=1/x;也可在点击工具栏上的函数图标“fx”后,在出现的不同函数列表的选项中选择需要的一种;输入结束后,点击函数输入对话框旁的勾号,B2格内马上得出了计算的结果。这时,再选中B2格,让光标指向B2矩形右下角的方框,当光标变成“+”时按住光标沿B列拖动到适当的位置即完成函数值的计算。注意一定要把该函数中自变量x的位置输入前面A列自变量的绝对位置A2格,这样下面计算的时候才会对不同的自变量进行计算;D、最后点击工具栏上的“图表向导”图标,在出现的各种图表格式图标中选择“X,Y散点图”,然后在出现的“X,Y散点图”类型中选择“无数据点平滑线散点图”;这时,可按住鼠标察看即将绘好的函数图像。另外,对于自变量仅为正值的函数,也可用“图表向导”中的“折线图”格式绘制。在Excel中自动推测出生年月日及性别的技巧大家都知道,身份证号码已经包含了每个人的出生年月日及性别等方面的信息(对于老式的15位身份证而言,7-12位即个人的出生年月日,而最后一位奇数或偶数则分别表示男性或女性。如某人的身份证号码为420400700101001,它的7-12位为700101,这就表示该人是1970年元月1日出生的,身份证的最后一位为奇数1,这就表示该人为男性;对于新式的18位身份证而言,7-14位代表个人的出身年月日,而倒数第二位的奇数或偶数则分别表示男性或女性)。根据身份证号码的这些排列规律,结合Excel的有关函数,我们就能实现利用身份证号码自动输入出生年月日及性别等信息的目的,减轻日常输入的工作量。Excel中提供了一个名为MID的函数,其作用就是返回文本串中从指定位置开始特定数目的字符,该数目由用户指定(另有一个名为MIDB的函数,其作用与MID完全一样,不过MID仅适用于单字节文字,而MIDB函数则可用于汉字等双字节字符),利用该功能我们就能从身份证号码中分别取出个人的出生年份、月份及日期,然后再加以适当的合并处理即可得出个人的出生年月日信息。提示:MID函数的格式为MID(text,start_num,num_chars)或MIDB(text,start_num,num_bytes),其中Text是包含要提取字符的文本串;Start_num是

温馨提示

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

评论

0/150

提交评论