您的当前位置:首页正文

基于单片机的室内环境监测仪的设计毕业设计论文

2024-10-18 来源:威能网


基于单片机的室内环境监测仪的设计

摘 要

本系统满足室内环境变量实行全面、实时、长期监测的要求, 实现室内环境温湿度、可燃气体浓度检测的自动化和智能化。系统以单片机为核心,以温度、湿度传感器,气敏传感器作为测量元件,通过单片机与智能传感器相连,采集并存储智能传感器的测量数据,经过分析处理将结果显示于LCD液晶屏。在单片机系统中,还要实现超限报警和数据辅助存储功能。

本设计主要做了如下几方面的工作:一是确定系统的总体设计方案:包括系统应具备的功能、到达的技术指标、系统的设计原则;二是整个系统和各个模块的硬件和软件的设计:传感器的静动态特征分析使用、使用单总线技术的SHT11数字温湿度传感器的测温湿电路以及程序设计、使用气敏传感器MQ211进行数据采集的电路以及程序设计;三是报警、按键的电路和程序设计。

该设计对室内温湿度实现了检测与显示,而对CO和甲烷等有害气体完成超标报警,为人们的生活、娱乐及公共场所的环境提供了一种有效的防护系统。

关键词:单片机,STC89C52,SHT11,温湿度监测,MQ211,室内环境

学习文档 仅供参考

MCU-BASED INDOOR EVENVIRONMENTAI

MONITORING SYSTEM

ABSTRACT

The system meets the implementation of a comprehensive indoor environmental variable, real-time, long-term monitoring requirements. System microcontroller core, temperature, humidity sensors, gas sensors as measuring devices, smart sensors through the MCU and connect smart sensors collect and store measurement data, through analyzing and processing the results shown in the LCD liquid crystal screen. In the SCM system, but also assisted to achieve over-limit alarm and data storage capabilities.

This design made the following main aspects of work:First, determine the system's design program: including system should have functions to the technical specifications, system design principles;Second, the whole system and each module of the hardware and software design: static and dynamic characteristics of the sensor to use, single-bus technology SHT11 digital temperature and humidity sensors measuring temperature and humidity circuit and program design, use of gas sensor data acquisition MQ211 circuit and program design;Third alarm, circuit and button programming.

The design of the indoor temperature and humidity to achieve the detection and display, while CO and methane, and other harmful gases to complete excessive alarm, as the people's life, entertainment and public places to provide an effective environmental protection system.

KEY WORDS:Single-chip microcomputer, STC89C52, SHT11, monitoring of temperature and humidity, MQ211, indoor environment

学习文档 仅供参考

学位论文原创性声明

本人郑重声明:所呈交的论文是本人在导师的指导下独立进行研究所取得的研究成果。除了文中特别加以标注引用的内容外,本论文不包含任何其他个人或集体已经发表或撰写的成果作品。对本文的研究做出重要奉献的个人和集体,均已在文中以明确方式标明。本人完全意识到本声明的法律后果由本人承担。

作者签名: 日期: 年 月 日

学位论文版权使用授权书

本学位论文作者完全了解学校有关保留、使用学位论文的规定,同意学校保留并向国家有关部门或机构送交论文的复印件和电子版,允许论文被查阅和借阅。本人授权 大学可以将本学位论文的全部或部分内容编入有关数据库进行检索,可以采用影印、缩印或扫描等复制手段保存和汇编本学位论文。

涉密论文按学校规定处理。

作者签名: 日期: 年 月 日

导师签名: 日期: 年 月 日

学习文档 仅供参考

目 录

前 言 ................................................................................................ 1 第1章 室内环境的监控系统 ......................................................... 2

课题涵义 ..................................................................................... 2 1.2 方案设计 ............................................................................... 2

1.2.1 硬件设计 ..................................................................... 3 1.2.2 软件设计 ..................................................................... 4

第2章 硬件电路设计 ..................................................................... 6

CPU模块 ................................................................................... 6

2.1.1 芯片管脚连接 ............................................................. 6 2.1.2 芯片管脚说明 ............................................................. 6 2.1.3 晶振和复位电路 ......................................................... 8 2.2 气体传感器与模数转换模块 ................................................ 9

2.2.1 气敏传感器的特点和使用 ........................................ 10 2.2.2 气敏传感器的连接 ................................................... 11 2.3 温度湿度传感器模块设计 ................................................. 12

2.3.1 SHT11温湿度简介 .................................................... 12 2.3.2 SHT11的引脚功能 .................................................... 13 2.3.3 SHT11的内部结构和工作原理 ................................. 13 2.3.4 SHT11应用与连接电路 ............................................ 14 2.3.5 温度和湿度值的计算 ............................................... 15 2.4 LCD显示模块设计 ............................................................. 16

2.4.1 LCD特点 ................................................................... 16 2.4.2 LCD的管脚 ............................................................... 18 2.4.3 LCD的连接电路 ....................................................... 18 2.5 按键电路块 ......................................................................... 19 2.6 报警电路模块设计 ............................................................. 20 第3章 软件设计 ........................................................................... 21

软件系统设计 ............................................................................ 21

学习文档 仅供参考

3.2 主程序设计 ......................................................................... 22 3.3 LCD1602显示模块程序设计 .............................................. 23 3.4 SHT11温湿度测量模块程序设计 ...................................... 24 3.5 系统程序设计 ..................................................................... 24 结 论 .............................................................................................. 25 谢 辞 .............................................................................................. 26 参考文献 .......................................................................................... 27 附 录 .............................................................................................. 28

附录1:系统硬件仿真电路图 .................................................... 28 附录2:程序代码 ........................................................................ 29 外文资料翻译 .................................................................................. 42

学习文档 仅供参考

前 言

随着微电子技术的发展,传感器的性能和种类的不断提高和丰富,使得基于微电脑芯片控制的室内环境实时分析监测系统成为可能。

该设计通过传感器引入数字化的环境信息,通过微电脑的数据分析,如加上控制系统与室内空调、加湿器、照明系统和电动窗帘门窗系统等家居电器配合使用,不仅能给人们带来舒适的生活环境,还能最大程度的节约能源使用。显然在节能减排深入人心,建筑节能和智能化发展得到大力提倡的今天,其不仅能为人们的生活带来便利,更符合可持续发展理念,无论是经济学角度还是社会学角度来看,设计和研究基于数字化的室内环境监测系统辅助家居智能化和节能环保的设备有着重要的现实意义和经济价值。该设计基于上述情况出发,应用8051系列单片机丰富的I/O接口和对数据的采集、处理功能,实现传感器由物理变量到数字化转变,输入到单片机通过微处理器的分析处理给出相应的结果,输出到显示电路。通过七段码LED显示器或者液晶显示设备显示实时的各环境参数的数值,使人们能及时了解各环境参数的情况,并在环境参数变到危害到正常的生理需要的时候给予报警电路报警信号,及时的通知人们离开或加以相应的处理,使得宜于居住。由于相关家居智能化设备的不确定性,这里就不做相应的控制算法的研究和处理,仅把相关参数储存在相应位置或者输出到某个I/O口,供其它相关设备读取数据。

伴随着人们生活水平的不断提高,越来越多的人们更加关注居住生活环境的质量安全〔主要包括温度,湿度,有害气体浓度等〕问题,所以对室内环境做实时监测和数据分析显得尤为必要。

学习文档 仅供参考

第1章 室内环境的监控系统

课题涵义

近来环境问题特别是有害气体对人类的危害也越来越来引起人们的关注,而其中对有害气体的浓度检测是解决问题的关键对于大量使用以天然气和甲烷气体作为家庭燃料气体的用户来说,选择安装一款简易、可靠和便携的气体浓度检测装置也是很重要的,这样不仅可以防止气体泄露,也可以保证人员和财产的安全。基于微电脑芯片控制的室内环境实时分析监测系统成通过传感器引入数字化的环境信息,通过微电脑的数据分析,如加上控制系统与室内空调、加湿器、照明系统、和电动窗帘门窗系统等家居电器配合使用,不仅能给人们带来舒适的生活环境,还能最大程度的节约能源使用。显然在节能减排深入人心,建筑节能和智能化发展得到大力提倡的今天,其不仅能为人们的生活带来便利,更符合可持续发展理念,无论是经济学角度还是社会学角度来看,设计和研究基于数字化的室内环境监测系统辅助家居智能化和节能环保的设备有着重要的现实意义和经济价值。系统少做程序设计部分的调整,就能实现对二氧化碳的浓度显示,加上温度和湿度显示的功能,就能用于温室大棚环境监测,利于及时发现和改变温室内环境参数,为作物提供最正确的生成环境,提高产量。

方案设计

设计原则:要求单片机系统应具有可靠性高、操作维护方便、性价比高等特点。

〔1〕可靠性

高可靠性是单片机系统应用的前提,在系统设计的每一个环节,都应将可靠性作为首要的设计准则。提高系统的可靠性通常从以下几个方面考虑:使用可靠性高的元器件;设计电路板时布线和接地要合理;对供电电源采用抗干扰措施;输入输出通道抗干扰措施;进行软硬件滤;系统自诊断功

学习文档 仅供参考

能等。

〔2〕操作维护方便

在系统的软硬件设计时,应从操作者的角度考虑操作和维护方便,尽量减少对操作人员专用知识的要求,以利于系统的推广。因此在设计时,要尽可能减少人机交互接口,多采用操作内置或简化的方法。同时系统应配有现场故障诊断程序,一旦发生故障能保证有效地对故障进行定位,以便进行维修。

〔3〕性价比

单片机除体积小、功耗低等特点外,最大的优势在于高性能价格比。一个单片机应用系统能否被广泛使用,性价比是其中一个关键因素。因此,在设计时,除了保持高性能外,尽可能降低成本,如简化外围硬件电路,在系统性能和速度允许的情况下尽可能用软件功能取代硬件功能等。

设计要具备以下功能:

温度监控:(1〕利用温度传感器将检测到的数据传给单片机并显示。

(2〕通过键盘设置温度上下限,超过上限或低于下限后报警。

湿度监测:利用湿度传感器将检测到的数据传给单片机并显示。 CO浓度监控:(1〕利用气敏传感器检测CO浓度传给单片机。

(2〕通过键盘设置浓度上限,超过上限后报警。 硬件设计

在室内环境监测硬件设计上,由单片机〔STC89C52〕控制整个系统的运作、MQ211气敏传感器模块实现监测室内可燃气体功能、SHT11温湿度传感器模块实现检测室内的温度和湿度功能、按键模块实现设置报警上限功能、LCD液晶模块实现显示功能、蜂鸣器报警功能。这六大模块组成的原理图来实现家庭环境检测系统的各项功能。

在该设计中,选用了AT89C52单片机作为控制芯片。该芯片有丰富的内部资源,丰富的I/O接口,低电压,低功耗等优点;并且内置看门狗电路,支持串口程序烧录,使用方便快捷,可以进行C语言编写程序,易于实现。温湿度测量方面选用瑞士SHT11芯片,该芯片内置A/D转换芯片,

学习文档 仅供参考

管脚接线简单,测量精度高等优点,气敏传感器使用多气体测量传感器MQ211,其具有多种可燃气体的测试功能,简单高效。A/D转换模块选用ADC0831,具有接口电路简单,成本低等优点,能够满足该设计的设计,该芯片为一路八位数转换芯片需求。环境监测系统硬件结模构图如图1-1:

温湿度传感器 STC89 A/D模数转换 C52 单 片 机 LCD显示器 气敏传感器 报警电路 模拟键盘

图1-1系统硬件结构图

与传统监测系统相比,本系统具有以下优点:

〔1〕传感器设计成智能型,可以增加系统数据采集速度。

〔2〕增加了辅助存储功能, 利于其与其他设备的连接共享环境参数信息。

〔3〕单片机的设计提高了系统的监测速度,系统的可靠性、实时性都有很大提高。

〔4〕超限报警,设置简单。

软件设计

在上述硬件基础之上,编写系统程序,实现以下几项功能: 〔1〕通电时蜂鸣器响一声,LCD液晶显示室内温度、湿度、可燃气体浓度状态。

〔2〕当室内温度大于设定的温度、湿度〔例如温度28度、湿度80%〕、检测到可燃气体超标时,蜂鸣器报警。

学习文档 仅供参考

〔3〕当第一次按设置按键:温度值闪烁,这时可以通过按“+”或者“-”按键设定温度上限值,4秒钟无键按下停止闪烁,按“+”或“-”设置温度下限值;第二次按设置按键:湿度值闪烁,这时可以通过按“+”或者“-”设置湿度上限值,4秒钟无键按下停止闪烁,按“+”或“-”设置湿度下限值;第三次按设置按键,退出设置状态。

学习文档 仅供参考

第2章 硬件电路设计

CPU模块

在该室内环境监测系统中选用STC89C52单片机作为主控芯片,实现系统设计要求的各项功能。在该设计中其为系统的核心部分,STC系列单片机是基于AT89C51系列单片机内核位核心单元,封装时加入了看门狗电路和串口程序烧录的功能,使用更加方便。

芯片管脚连接

在该设计电路中,用单片机I/O口中的P1口作为LCD液晶屏的数据口,采用并口数据传输模式,P2口中的P2.0、P2.1、P2.2作为控制信号输出口,分别接LCD的RS、R/W、E控制端;P2.3和P2.4分别接温湿度传感器SHT11的SCK和DATA,P2.5、P2.6、P2.7接按键电路。P1口的P1.0、P1.1、P1.2分别接ADC0831的控制端,P1.4接报警的蜂鸣器。

芯片管脚说明

单片机有4个I/O端口,每个端口都是8位双向口,共占32根引脚。每个端口都包括一个锁存器(即专用寄存器PO~P3)、一个输入驱动器和输入缓冲器。通常把4个端口称为PO~P3, 见图2-1。在无片外扩展的存储器的系统中,这4个端口的每一位都可以作为双向通用I/O端口使用。在具有片外扩展存储器的系统中,P2口作为高8位地址线,PO口分时作为低8位地址线和双向数据总线。在作为一般的通用I/O输入时,都必须先向锁存器写入“1”,使输出驱动场效应管FET截止,以免误读数据。各自特点如下:

1. P0口为双向8位三态I/O口,它既可作为通用I/O口,又可作为外部扩展时的数据总线及低8位地址总线的分时复用口。作为通用I/O口时,输出数据可以得到锁存,不需外接专用锁存器;输入数据可以得到缓冲,增加了数据输入的可靠性。每个引脚可驱动8个TTL负载。

2. P1口为8位准双向I/O口,内部具有上拉电阻,一般作通用I/O口使

学习文档 仅供参考

用,它的每一位都可以分别定义为输入线或输出线,作为输入时,锁存器必须置1。每个引脚可驱动4个 TTL负载。

3. P2口为8位准双向I/O口,内部具有上拉电阻,可直接连接外部I/O设备。它与地址总线高8位复用,可驱动4个TTL负载。一般作为外部扩展时的高8位地址总线使用。

4. P3口为8位准双向I/O口,内部具有上拉电阻,它是双功能复用口,每个引脚可驱动4个TTL负载。作为通用I/O口时,功能与Pl口相同,常用第二功能。控制线一共有6条:

(1) ALE/PROG:地址锁存允许/编程线,配合P0口引脚的第二功能使用。在访问片外存储器时,8051CPU在P0.7~P0.0引脚上输出片外存储器低8位地址的同时在ALE/PROG上输出一个高电位脉冲,用于把这个片外存储器低8位地址锁存到外部专用地址锁存器,以便空出P0.7~P0.0引脚线去传送随后而来的片外存储器读写数据。在不访问片外存储器时,8051自动在ALE/PROG上输出频率为fosc/6的脉冲序列。该脉冲序列可用作外部时钟源或作为定时脉冲源使用。

(2) EA/Vpp:允许访问片外存储器/编程电源线,可以控制89c52使用片内ROM还是使用片外ROM。假设EA=1,则允许使用片内ROM;假设EA=0,则允许使用片外ROM。

学习文档 仅供参考

图2-1 STC89C52管脚分布图

晶振和复位电路

时钟电路用于产生时钟信号,时钟信号是单片机内部各种微操作的时间基准。复位对单片机来说,是程序还没有开始执行,是在做准备工作。

晶振电路和复位电路见图2-2

学习文档 仅供参考

图 2-2 晶振和复位电路

2.2 气体传感器与模数转换模块

在该设计中,为了实现家庭环境检测系统中可以检测到室内的可燃气体,所以使用了MQ211气敏传感器来实现这个功能。

1. 检测原理

可燃性气体(H2、CO、CH4等)与空气中的氧接触,发生氧化反应,产生反应热(无焰接触燃烧热),使得作为敏感材料的铂丝温度升高,电阻值相应增大。一般情况下,空气中可燃性气体的浓度都不太高(低于10%),可燃性气体可以完全燃烧,其发热量与可燃性气体的浓度有关。空气中可燃性气体浓度愈大,氧化反应(燃烧)产生的反应热量(燃烧热)愈多,铂丝的温度变化(增高)愈大,其电阻值增加的就越多。因此,只要测定作为敏感件的铂丝的电阻变化值(ΔR),就可检测空气中可燃性气体的浓度。但是,

学习文档 仅供参考

使用单纯的铂丝线圈作为检测元件,其寿命较短,所以,实际应用的检测元件,都是在铂丝圈外面涂覆一层氧化物触媒。这样既可以延长其使用寿命,又可以提高检测元件的响应特性。 2. 接触燃烧式气敏元件的结构

用高纯的铂丝绕制成线圈,为了使线圈具有适当的阻值(1Ω~2Ω),一般应绕10圈以上。在线圈外面涂以氧化铝或氧化铝和氧化硅组成的膏状涂覆层,干燥后在一定温度下烧结成球状多孔体。将烧结后的小球,放在贵金属铂、钯等的盐溶液中,充分浸渍后取出烘干。然后经过高温热处理,使在氧化铝(氧化铝一氧化硅)载体上形成贵金属触媒层,最后组装成气体敏感元件。除此之外,也可以将贵金属触媒粉体与氧化铝、氧化硅等载体充分混合后配成膏状,涂覆在铂丝绕成的线圈上, 直接烧成后备用。另外,作为补偿元件的铂线圈, 其尺寸、阻值均应与检测元件相同。并且,也应涂覆氧化铝或者氧化硅载体层,只是无须浸渍贵金属盐溶液或者混入贵金属触媒粉体,形成触媒层而已。

气敏传感器的特点和使用

1. MQ211型气敏元件特点:

这是一种通用性较强的气敏元件,气敏传感器的敏感元件是气敏电阻器,气敏电阻器的阻值随吸附气体的浓度变化而变化,利用这一特性检测气体浓度。适用于一般可燃气体〔如氢气、液化石油气、煤气、一氧化碳、烷烃类等及酒精、乙醚、汽油、烟雾等有害气体的检测,是制作换气扇、脱排油烟机自动开关、气体报警器,防止环境污染的理想气体敏感器件〕。 MQ211气敏传感器管脚排列如图2-6所示:

A B

F

F

A B 图2-6 MQ211管脚分布图

学习文档 仅供参考

A—A两脚短接,构成测量极一端。B—B两脚短接,构成测量极另一端。f—f加热丝。

2. MQ型气敏器件的使用注意事项如下:

〔1〕器件开始工作时需加热几分钟后方可正常工作。

〔2〕加热电压5V是对丁烷气选择的最正确加热电压,测量其他气体时,为获得R2上最大电压降,可按允许工作条件重新选择。 〔3〕回路电压根据电路要求允许范围办任意调节。

〔4〕防止油浸各油垢污染,长期使用要防止灰尘堵住不锈钢网。 〔5〕不要长期在腐蚀性气氛下工作。

〔6〕长期停止使用要放置在干燥无腐蚀性气体的环境中。 3. MQ211型气敏元件技术参数如表2-4:

表2-4 MQ211型气敏元件技术参数

元件阻值参数型号恢阻值比加热响应复R0RS1000(S=RS3000/功率时间时Rs1000(KΩ)KΩ)间100-40040-10018-408~184~8≦20≦10≦6≦3≦2≦0.9≦≦≦5750301052 工作条件 VcVhRLABMQ211CDE注: 1〕R0——元件在清洁空气中的阻值;

2〕Rs1000——元件在1000ppm丁烷气中的动态阻值; 3〕Rs3000——元件在3000ppm丁烷气中的动态阻值; 4〕Vc——测试电压,Vh——加热电压 在该设计中选用B型传感器。

气敏传感器的连接

气敏传感器的连接方法如图2-7所示,MQ211气敏传感器的1号脚接5V电源, 3号脚经R12〔起分压作用〕接地线。 6号脚经R13电阻接到ADC0831的数据采集端VIN〔+〕上,该脚具备ADC功能。R14电阻起到分

学习文档 仅供参考

压作用。

A—A两脚短接,构成测量极一端 B—B两脚短接,构成测量极另一端 f—f加热

图 2-7 气敏传感器的连接

2.3 温度湿度传感器模块设计

SHT11温湿度简介

SHT11是瑞士Scnsirion公司推出的一款数字温湿度传感器芯片。该芯片广泛应用于暖通空调、汽车、消费电子、自动控制等领域。共主要特点如下:

◆高度集成,将温度感测、湿度感测、信号变换、A/D转换和加热器等功能集成到一个芯片上;

◆提供二线数字串行接口SCK和DATA,接口简单,支持CRC传输校验,传输可靠性高;

◆测量精度可编程调节,内置A/D转换器(分辨率为8~12位,可以通过对芯片内部寄存器编程来选择);

◆测量精确度高,由于同时集成温湿度传感器,可以提供温度补偿的湿度测量值和高质量的露点计算功能;

◆封装尺寸超小(××),测量和通信结束后,自动转入低功耗模式;

学习文档 仅供参考

◆高可靠性,采用CMOSens工艺,测量时可将感测头完全浸于水中。

SHT11的引脚功能

SHT11温湿度传感器采用SMD(LCC)外表贴片封装形式,接口非常简单 引脚名称及排列顺序如图2-3所示:

DATA NC SHT11 SCK NC VDD NC 图2-3 SHT11引脚 ◆脚1和脚4--信号地和电源,其工作电压范围是2.4~5.5 V; ◆脚2和脚3--二线串行数字接口,其中DATA为数据线,SCK为时钟线; ◆脚5~8--未连接。

SHT11的内部结构和工作原理

传感器SHT11将温度感测、湿度感测、信号变换、A/D转换和加热器等功能集成到一个芯片上,其内部结构如图2-4所示。该芯片包括一个电容性聚合体湿度敏感元件和一个用能隙材料制成的温度敏感元件。这两个敏感元件分别将湿度和温度转换成电信号,该电信号首先进入微弱信号放大器进行放大;然后进入一个14位的A/D转换器;最后经过二线串行数字接口输出数字信号。SHT11在出厂前,都会在恒湿或恒温环境中进行校准,校准系数存储在校准寄存器中;在测量过程中,校准系数会自动校准来自传感器的信号。此外,SHT11内部还集成了一个加热元件,加热元件接通后可以将SHT11的温度升高5℃左右,同时功耗也会有所增加。此功能主要为了比较加热前后的温度和湿度值,可以综合验证两个传感器元件的性能。在高湿(>95%RH)环境中,加热传感器可预防传感器结露,同时缩短响应时间,提高精度。加热后SHT11温度升高, 相对湿度降低,较加热前,测量值会

学习文档 仅供参考

略有差异。 校准寄存器 温度传感器 运二线串 A/D转换器 放 接口和CRC 校验 湿度传感器 图2-4 温湿度传感器内部结构 微处理器是通过二线串行数字接口与SHT11进行通信的。通信协议与通用的I2C总线协议是不兼容的,因此需要用通用微处理器I/O口模拟该通信时序。微处理器对SHT11的控制是通过5个5位命令代码来实现的,命令代码的含义如表2-1所列 表2-1温湿度传感器指令代码 命令代码X00011X00101X00111X00110X11110其他含义测量温度测量湿度读内部状态寄存器写内部状态寄存器复位命令保留 SHT11应用与连接电路

微处理器采用二线串行数字接口和温湿度传感器芯片SHT11进行通信,所以硬件接门设计非常简单;然而,通信协议是芯片厂家自己定义的,所以在软件设计中,需要用微处理器通用I/O口模拟通信协议。需要注意的地方是:DATA数据线需要外接上拉电阻,时钟线SCK用于微处理器和SHT11之间通信同步,由于接口包含了完全静态逻辑,所以对SCK最低频

学习文档 仅供参考

率没有要求;当工作电压高于4.5V时,SCK频率最高为10MHz,而当工作电压低于4.5V时,SCK最高频率则为1MHz。硬件连接如图2-5所示

图2-5 温湿度传感器电路

温度和湿度值的计算

1. 湿度线性补偿和温度补偿

SHT11可通过DATA数据总线直接输出数字量湿度值。该湿度值称为相对湿度,需要进行线性补偿和温度补偿后才能得到较为准确的湿度值。由于相对湿度数字输出特性呈一定的非线性,因此为了补偿湿度传感器的非线性,可按下式修正湿度值:

式中:RHlinear为经过线性补偿后的湿度值,SORH为相对湿度测量值,C1、C2、C3为线性补偿系数,取值如表2-2所列。

由于温度对湿度的影响十分明显,而实际温度和测试参考温度25℃有所不同,所以对线性补偿后的湿度值进行温度补偿很有必要。补偿公式如下:

RHlinearC1C2*SORHC3*SORH (1-1)

表2-2 度线性补偿系数

学习文档 仅供参考

2

SORH 12位 8位 C1 -4 -4 C2 C3 ×10 ×104 4 2. 温度值输出

由于SHT11是采用PTAT能隙材料制成的温度敏感元件,因而具有很好的线性输出。实际温度值可由下式算得:

Temperature=d1+d2×SOT (1-2) 式中:d1和d2为特定系数,d1的取值与SHT11工作电压有关,d2的取值则与SHT11内部A/D转换器采用的分辨率有关,其对应关系分别如表2-3所列。

表2-3 D1与工作电压的对于关系

Vd0/V 5 4 3 D1/ ۫C 40 D1/ ۫F -40

2.4 LCD显示模块设计

在该设计中,LCD要显示温度、湿度、可燃气体是否超标的功能。所以使用了一块行列点阵数为128*64, 每行可以显示8个字符,共显示2行字的LCD。该LCD的型号为ST7920系列。

LCD特点 1.LCD工作条件:

学习文档 仅供参考

〔2〕电源地(GND):0V

〔3〕工作温度(Ta):0~60℃(常温) 2.外形尺寸如表2-5:

表2-5 外形尺寸

ITEM模块体积视域行列点阵数点距离NOMINAL DIMEN93×78×12.570.7×38.8128×640.52×0.520.48×0.48UNITmmmmdotsmmmm

点大小

3.ST7920系列产品硬件特性如下:

〔1〕提供8位,4位并行接口及串行接口可选 〔2〕并行接口适配M6800时序 〔3〕自动电源启动复位功能 〔4〕内部自建振荡源

〔5〕64*16位半宽字符显示最多16字符*4行,LCD显示范围(16*2 行〕 〔6〕2M位中文字型ROM〔CGROM〕,总共8192个中文字型〔16*16点阵〕 〔7〕16K位半宽字型ROM〔HCGROM〕,总共126个西文字型〔16*8点阵〕 〔8〕64*16位字符产生〔CGROM〕

〔9〕15*16位总共240点的ICON RAM (ICONRAM) 4.中文字库选择:

ST7920—0A内建BIG—5码繁体中文字型库 ST7920—0B内建GB码简体中文字型库 5.电气特性:〔测试条件Ta=25,Vdd=5.0+10%〕 〔1〕输入高电平〔V i h〕: 0.7Vdd~Vdd

〔3〕输出高电平〔V o h〕:0.8Vdd~Vdd

〔5〕模块工作电流: 1.14~1.18mA(不含背光) 〔6〕测白光工作电流: ——

学习文档 仅供参考

6.PSB电路:

PSB接高时选择并口,接低时选项择串口。模块上一般都有跳线方式将PSB接高或接低,用户可以不处理PSB脚也可以选择不在模块上处理,而由客户自己选择并口还是串口。

LCD的管脚

管脚名称和功能如表2-6:

表2-6 管脚名称和功能

名称VCCGNDV0VEEPSBRSTRS(CS)R/W(SID)ED0-D3D4-D7AK

型态IIIIIIIIII/OI/OII电平........H/LH/LH/LH/LH/LH/LH/L....功能描述并口串口模块电源输入电源地对比度调节液晶驱动电压并口/串口选择复位信号 低有效H数据 L指令片选低有效H读 L写串行数据线使能信号串行时钟输入数据总线低四位空接数据总线高四位空接背光正背光负

LCD的连接电路

当LCD选择并口时,要把8个数据送到芯片,而LCD选择串口时,只需要把3个数据送到芯片。由于芯片的管脚丰富够用,所以LCD的连接方式选择并口。LCD的连接方法如图2-8所示,LCD的1号管脚接地线,2号和3号管脚接5V电源,4号管脚RS接STC89C52的P2.0上。5号管脚R/W接STC89C52的管脚P2.1上。6号管脚E接STC89C

学习文档 仅供参考

图2-8 LCD连接电路

注:VSS是电源引脚;VDD是地引脚;VEE是显示偏压信号引脚, 假设对显示效果无特殊要求可将其接地;RS为数据/命令选择输入端;RW为读写选择端; E 为使能信号,高电平有效;D0~D7 为数据线。

2.5 按键电路块

图2-9是按键输入的典型电路,按键S1、S2、S3断开时,端口P2.5、P2.6、P2.7上的信号为高电平,按键S1、S2、S3合上时,端口P2.5、P2.6、P2.7上的信号为低电平。电阻起到分压、限流作用。当按键电路设计成这种硬件连接时,按键可以采用中断的形式进行读取,也可以采用循环扫描的形式读取,为程序的编写提供了选择的余地。

学习文档 仅供参考

图2-9 按键电路

2.6 报警电路模块设计

如图2-10,在本系统中,采用P1.4口为报警电路输出口,当有报警信号时,蜂鸣器鸣叫,提醒安全指标超标或不正常,须采取安全措施改变室内环境质量,如配合智能建筑系统,可实现自动化无人操作,方便又安全。

图2-10 报警电路

学习文档 仅供参考

第3章 软件设计

系统的软件设计采用C语言编程, 软件结构为模块化结构, 由主程序、自检程序、SHT11数据采集与处理程序、ADC0831数据采集处理程序、报警控制程序及显示程序等模块组成, 其软件模块结构如图3-1所示。

图3-1 软件结构方框图

主控程序完成对各程序模块的控制和协调。

自检程序对温湿度传感器、ADC模数转化、LCD显示、键盘及工作状态进行自检。

数据采集程序完成对各路传感信号的数据采集, 每隔4秒调用数据采样子程序对气体进行一次信号采样。

报警控制程序完成气体浓度超标时或者温湿度超出设置的范围时的声光报警、气体浓度和温湿度恢复正常时, 取消报警。

显示程序根据数据处理结果, 将实测气体值、温度、湿度值和位置代码分别送到相应的显示位置进行循环显示。

学习文档 仅供参考

主程序 自检初始化 湿采集处理 温体采集处理 气警子程序 报示子程序 显键子程序 按

3.2 主程序设计

有键按下? Y N 按键处理子程序 系统初始化 开 始 N 定时中断时间到? Y Y SHT11 忙? N

图3-2 主程序流程

LCD显示子程序 数据储存报警判断 SHT11温湿度读取子程序 气体检测子程序 学习文档 仅供参考

3.3 LCD1602显示模块程序设计

图3-3 显示程序流程

返 回 送显示数据 送显示地址 设置输入模式 设 置 显 示 模 式 定 义 管 脚 开 始 学习文档 仅供参考

3.4 SHT11温湿度测量模块程序设计

启动传输 开 始

发测量命令

N

P2.4=0? Y

图3-4 温湿度测量流程

返 回 读取数据 3.5 系统程序设计

图3-2到3-4是系统部分程序设计的流程,原程清单见附录2内容。

学习文档 仅供参考

结 论

在本系统中,采用模块化、层次化设计。单片机监测信息的采集、报警和处理,能够迅速、全面、准确地获取系统的各种特征量,完成室内环境温湿度参数、有害气体浓度参数的实时监测。同时LCD液晶屏显示得到的数据,供人们浏览、查询和进行控制,满足了系统监测的要求。本系统的优良功能可实现对室内环境温湿度的全面、实时、自动的监测,及时发现问题,采取有效防护措施,减少或防止灾难性事故的发生。

由于时间限制,本系统还不够完善,尚需进一步改良。例如系统硬件电路的设计还需进一步简化; 系统监测程序还有待进一步优化处理;系统监测目前还只能实现对被监测量的实时采集、显示、超限报警等对数据的最基本处理。在下一阶段的工作中本系统将致力于开发室内环境诊断和决策系统,实现预测报警和信息发送,并能与家电系统配合联动,实现家庭室内环境的自动化场景化的模式控制,提高人们的生活质量,减少能源消耗,真正做到人性化和智能化。

通过本次毕业设计的学习与实践,我逐渐对单片机产生了兴趣,并且对于温度气敏传感器、LED显示器等都有了一定的了解,在设计过程中通过图书馆、网上查阅资料,自己的专业知识也有了一定的提高,相信这次设计对于即将走上工作岗位的我会有很大的帮助。

学习文档 仅供参考

谢 辞

首先,我感谢高海涛老师。本设计是在高老师的精心指导和大力支持下完成的。她平日里工作繁多,但在我们毕业设计的每个阶段,从确定命题查阅资料,设计草案确实定和修改,中期检查,后期详细设计,论文写作的整个过程中都给予了我们悉心的指导。我对高老师的感激之情是无法用言语表达的。

本课题在选题及研究过程中高老师询问研究进程,并为我们指点迷津,帮助我们开拓研究思路,精心点拨、热忱鼓励。高老师一丝不苟的作风,严谨求是的态度,踏踏实实的精神,不仅授我以文,而且教我做人,给以终生受益无穷之道。

高老师以其严谨求实的治学态度、高度的敬业精神、兢兢业业、孜孜以求的工作作风和大胆创新的进取精神对我产生重要影响。她渊博的知识,开阔的视野和敏锐的思维给了我深深的启迪。在她的引导下,我逐渐有了毕业设计的思路,极大的开拓了我的学术视野,也为本次论文写作打下了理论基础。

最后感谢在大学三年期间,传授我知识的老师们,感谢在学习和生活上给予我帮助的同学们,没有他们的帮助就没有我今天的骄人成绩。经过三个月的忙碌和工作,本次毕业设计已接近尾声,作为一个专科生的毕业设计,由于经验的匮乏,难免有许多考虑不周全的地方,毕竟这次设计是我第一次进行全面和系统的设计,疏漏和不足之处在所难免,请老师们多多指正,以帮助我不断提高,不断进步。我相信通过这次全面系统的设计以及在这个过程中各位老师的不断点拨,在今后的工作中我一定会做到更好。

谢谢!

学习文档 仅供参考

参考文献

【1】李朝青.单片机原理及接口技术. 北京:北京航空航天大学出版社,2006年版.

【2】杨素行.模拟电子技术基础简明教程〔第三版〕. 北京:高等教育出版社,2006年版.

【3】徐安,陈耀,李锐华,郭其一.微型电脑控制技术. 北京:电子工业出版社,2008年版.

【4】杨文龙.单片机原理与应用.陕西:西安电子科技大学出版社,2001年版.

【5】夏路易等.电路原理图与电路板设计教程.北京:北京希望电子出版社, 2002年版.

【6】潘名莲.微电脑控制原理〔第二版〕.北京:电子工业出版社,2003年版.

【7】余永权.单片机应用系统的功率接口技术. 北京:北京航空航天大学出版社,1993年版.

【8】谭浩强.C程序设计〔第三版〕.北京:清华大学出版社,2008年版.

【9】陈建元.传感器技术.北京:机械工业出版社,2008年版. 【10】范风强等.单片机语言C51应用实战集锦. 北京:电子工业出版社,2005年版.

【11】王红文.自动化专业英语教程. 北京:机械工业出版社. 2009年版.

【12】王俊杰.检测技术与仪表. 武汉:武汉理工大学出版社. 2002年版.

【13】白旭灿.电子实习教程. 武汉:武汉理工大学出版社. 2006年版. 【14】胡寿松.自动控制原理. 北京:科学出版社. 2008年版. 【15】路明礼,李明伟,江姝妍.数字电子技术〔第二版〕. 武汉:武汉理工大学出版社. 2008年版.

学习文档 仅供参考

附 录

附录1:系统硬件仿真电路图

学习文档 仅供参考

附录2:程序代码

系统显示主程序: #include #include #include #include #include #define uchar unsigned char #define uint unsigned int unsigned char TempBuffer[5] ; uchar humibuffer[4]; uchar qitibuffer[3];

///////////////显示主程序/////////// //////////////////////////////// void main wendu_to_str() { int i;

int TempBuffer[5]; for(i=0;i<5;i++) TempBuffer[i] =i;

TempBuffer[0]=(SHUO[xts_zi]); TempBuffer[1]=(SHUO[xtg_zi]); TempBuffer[2]=0xdf; TempBuffer[3]='C'; TempBuffer[4]='\\0'; Printf(“%d”, TempBuffer[i]); Printf(“\\n”); }

Void main shidu_to_str() {int i;

for(i=0;i<4;i++)

学习文档 仅供参考

humibuffer[i] =i;

humibuffer[0]=(SHUO[xss_zi]) humibuffer[1]=(SHUO[xsg_zi]) humibuffer[2]='%'; humibuffer[3]='\\0';

printf(“%d”, humibuffer[i] ); Printf(“\\n”); }

Void main qiti_to_str() {int i;

for(i=0;i<3;i++) qitibuffer[i]=i ; qitibuffer[0]=b1; qitibuffer[1]=b2; qitibuffer[2]=b3; printf(“%d”, qitibuffer[i]); Printf(“\\n”); }

void show_LCD() {

LCD_Initial(); text_jishuan_temp11(); data_pro();

wendu_to_str(); GotoXY(6,1); Print(TempBuffer); GotoXY(0,1); Print(\"Wendu\"); shidu_to_str(); GotoXY(11,1) ;

学习文档 仅供参考

Print(\"shidu\"); GotoXY(17,1); Print(humibuffer); GotoXY(0,0); Print(\"qitizhibiao:\"); GotoXY(13,0); Print(qitibuffer); } csh() { P2.0=0; } main() { csh(); show_LCD(); delay_n10us(100000); }

LCD显示屏驱动程序 1602.h

#ifndef LCD_CHAR_1602_2005_4_9 #define LCD_CHAR_1602_2005_4_9 #include sbit LcdRs = P2^0; sbit LcdRw= P2^1; sbit LcdEn = P2^2; sfr DBPort = 0x80;

unsigned char LCD_Wait(void) {

LcdRs=0;

学习文档 仅供参考

}

LcdRw=1; _nop_(); LcdEn=1; _nop_(); //while(DBPort&0x80); LcdEn=0; return DBPort;

//向LCD写入命令或数据 #define LCD_COMMAND

0 // Command #define LCD_DATA

1 // Data

#define LCD_CLEAR_SCREEN 0x01 // 清屏 #define LCD_HOMING 0x02 // 光标返回原点 void LCD_Write(bit style, unsigned char input) { }

//设置显示模式****************************

#define LCD_SHOW #define LCD_HIDE

#define LCD_CURSOR

0x02 //显示光标

0x04 //显示开 0x00 //显示关

LcdEn=0; LcdRs=style; LcdRw=0;

_nop_();

DBPort=input; _nop_();//注意顺序 LcdEn=1; LcdEn=0; LCD_Wait();

_nop_();//注意顺序 _nop_();

#define LCD_NO_CURSOR 0x00 //无光标

学习文档 仅供参考

#define LCD_FLASH 0x01 //光标闪动 0x00 //光标不闪动

#define LCD_NO_FLASH

void LCD_SetDisplay(unsigned char DisplayMode) { }

//设置输入模式*********************** #define LCD_AC_UP

0x02

0x00 // default 0x01 // 画面可平移 0x00 //default

LCD_Write(LCD_COMMAND, 0x08|DisplayMode);

#define LCD_AC_DOWN #define LCD_MOVE

#define LCD_NO_MOVE

void LCD_SetInput(unsigned char InputMode) { }

//移动光标或屏幕************************** /*

#define LCD_CURSOR #define LCD_SCREEN #define LCD_LEFT

0x02 0x08 0x00 0x04

LCD_Write(LCD_COMMAND, 0x04|InputMode);

#define LCD_RIGHT

void LCD_Move(unsigned char object, unsigned char direction) { }

学习文档 仅供参考

if(object==LCD_CURSOR)

LCD_Write(LCD_COMMAND,0x10|direction);

if(object==LCD_SCREEN)

LCD_Write(LCD_COMMAND,0x18|direction);

*/

//初始化LCD********** void LCD_Initial() { }

void GotoXY(unsigned char x, unsigned char y) { }

void Print(unsigned char *str) { }

void LCD_LoadChar(unsigned char user[8], unsigned char place) {

unsigned char i;

LCD_Write(LCD_COMMAND,0x40|(place*8));

学习文档 仅供参考 while(*str!='\\0') { }

LCD_Write(LCD_DATA,*str); str++; if(y==0)

LCD_Write(LCD_COMMAND,0x80|x); LcdEn=0;

LCD_Write(LCD_COMMAND,0x38); LCD_Write(LCD_COMMAND,0x38);

LCD_SetDisplay(LCD_SHOW|LCD_NO_CURSOR); LCD_Write(LCD_COMMAND,LCD_CLEAR_SCREEN); LCD_SetInput(LCD_AC_UP|LCD_NO_MOVE);

if(y==1)

LCD_Write(LCD_COMMAND,0x80|(x-0x40));

}

for(i=0; i<8; i++)

LCD_Write(LCD_DATA,user[i]);

#endif

温湿度传感器驱动程序:

#include //头文件 #include #include //

#include //Keil library //**************************************

sbit DATA =P2^4;//数据 sbit SCK=P2^3;//时钟

#define TEMP_ML 0x03 //000 0001 1 温度命令 #define HUMI_ML 0x05 //000 0010 1 湿度命令 unsigned char error ;//全局错误变量 unsigned char ack ;//全局错误变量 //float temp_zi ;//全局应答变量 //float humi_zi ;//全局应答变量 unsigned char temp_h ;//全局应答变量 unsigned char temp_LL ;//全局应答变量 unsigned char humi_h unsigned char humi_LL

#define uchar unsigned char //定义一下方便使用 #define uint unsigned int #define ulong unsigned long unsigned int recs=0;//接收次数 uchar TempBuffer[5]; uchar humibuffer[4];

const unsigned char SHUO[15]=\"0123456789.%RH\"; int xts_zi=0 ;//温度值

学习文档 仅供参考

int xtg_zi=0 ;//温度个位值 int xtd_zi=0 ;//温度点值 int xss_zi=0 ;//湿度值 int xsg_zi=0 ;//湿度个位值 int xsd_zi=0 ;//湿度点值 sbit soud =P1^4;// 声音

/*******************************基本驱动程 //**************************系统初始化 void start(void) //启动

//-------------------------------------------------------- {

DATA=1; SCK=0; //数据为1,SCK=0 _nop_();

SCK=1; //第一个脉冲 _nop_();

DATA=0; //数据跌落 _nop_ ();

SCK=0; //完成一个脉冲 _nop_(); _nop_(); _nop_();

SCK=1; //再一个脉冲 _nop_();

DATA=1; //数据变为1 _nop_();

SCK=0; //完成该脉冲 }

void sht_rest(void) //复位 {

unsigned char i;

学习文档 仅供参考

DATA=1; SCK=0; //数据为1 时钟为0 for(i=0;i<9;i++) //9 个脉冲为 复位 { SCK=1; SCK=0; }

start(); //启动 }

char write(unsigned char value) //写一个字节 返回应答信号 //--------------------------------------------------------- {

unsigned char i ; ack=0;

for (i=0x80;i>0;i/=2) //释放数据总线 { if (i & value) DATA=1; //写入值 else DATA=0; SCK=1; //上升沿写入 _nop_(); _nop_(); _nop_(); //延时 SCK=0; }

DATA=1; //释放数据总线 SCK=1; //第9个脉冲 if (DATA==1) ack=1; //读应答信号 SCK=0;

return ack; //error=1 表示没有应答 }

char read() //读一个字节 返回应答信号

//---------------------------------------------------------------------------------- // reads a byte form the Sensibus and gives an acknowledge in case of \"ack=1\"

{

学习文档 仅供参考

unsigned char i,val=0; temp_LL=0; temp_h=0;

DATA=1; //释放数据总线 for (i=0x80;i>0;i/=2) //位移8位 { SCK=1; //上升沿读入 if (DATA) val=(val | i); //确定值 SCK=0; }

DATA=0; //读应答信号,有应答为1,为应答为0 通过CPU下拉为应答

SCK=1; //第9个脉冲

_nop_(); _nop_(); _nop_(); //pulswith approx. 5 us SCK=0;

DATA=1; //释放数据总线 temp_h=val; val=0;

////低8位//////////////////////////

DATA=1; //释放数据总线 for (i=0x80;i>0;i/=2) //位移8位 { SCK=1; //上升沿读入 if (DATA) val=(val | i); //确定值 SCK=0; }

DATA=1;//0; //不需要应答 通过CPU下拉为应答 SCK=1; //第9个脉冲

_nop_(); _nop_(); _nop_(); //pulswith approx. 5 us SCK=0;

DATA=1; //释放数据总线 temp_LL=val;

学习文档 仅供参考

return val; }

//测量温度或者是温度,返回校验值

text_a(unsigned char ml) {

unsigned int i;

start(); //启动

write(ml);//写入测温度 if (ack==1) {

sht_rest() ;//复位

write(ml);//写入测温度

}

// DATA=1;//释放数据总线

for (i=0;i<65535;i++) if(DATA==0) break; read();//读温度

}

text_jishuan_temp() {

float aa=0,bb=0,temp_zi;

int abcd=0;

aa=(float)temp_h*256+(float)temp_LL; temp_zi=0.01*aa-40; if (temp_zi<0) {

temp_zi=-temp_zi ; }

temp_zi=temp_zi*10; abcd=(int)temp_zi;

学习文档 仅供参考

xts_zi=abcd/100; abcd=abcd%100; xtg_zi=abcd/10; abcd=abcd%10; xtd_zi=abcd/1; }

text_jishuan_humi() {

float aa=0,bb=0,humi_zi;

int abcd=0;

aa=(float)temp_h*256+(float)temp_LL; bb=aa*aa*2.8/1000000; aa=0.0405*aa; aa=aa-4-bb; humi_zi=aa;

humi_zi=humi_zi*10;

abcd=(int)humi_zi; xss_zi=abcd/100; abcd=abcd%100; xsg_zi=abcd/10; abcd=abcd%10; xsd_zi=abcd/1; }

text_jishuan_temp11() {

error=0; ack=0;

sht_rest() ;//复位 text_a(TEMP_ML);

text_jishuan_temp();

学习文档 仅供参考

text_a(HUMI_ML);

text_jishuan_humi();

} //////////////

unsigned int wendu,shidu;

void delay_n10us(uint n) //延时n个10us@12M晶振 {

uint i; for(i=n;i>0;i--) {

_nop_();_nop_();_nop_();_nop_();_nop_();_nop_(); }

学习文档 仅供参考

外文资料翻译

SCM Application And Development Techniques

SCM now permeate all areas of our lives, which is almost difficult to find traces of the field without SCM. The SCM system as the core system, with intelligent sensors connected to intelligent sensors collect and store measurement data, through analyzing and processing the results displayed in the LCD liquid crystal screen, in order to achieve the indoor environment monitoring. Therefore, the MCU learning, development and application is very important.

1. The Characteristics Of SCM Applications

MCU features are: high integration, small size, high reliability; controlling function; low voltage, low power consumption, ease of production of portable products; easy to expand; excellent cost performance. At present, the MCU applications include: Office automation equipment; MCU in Mechatronics Application;In real-time process control application; SCM in the field of application of daily life and household appliances; In the introduction of various instruments MCU to make intelligent instrumentation to improve the automation and precision test and simplify the hardware structure of instruments, improve their cost performance; In the field of computer networks and communications applications; Commercial marketing facilities; SCM in the field of medical devices applications; Automotive electronics; military aerospace and defense systems, sophisticated weapons and other fields, the application of SCM is self-evident.

2. Microcontroller Development Of A Few Basic Skills

In the MCU application development, the code efficiency issues, single chip interference and reliability problems still plagued many developers. MCU development are summarized in a few basic skills to be mastered.

1) How to reduce the program's bug. Procedures for how to reduce the bug, should first consider the system operation should be considered out of

学习文档 仅供参考

range management parameters are as follows. Physical parameters: These parameters are the input parameters, which include incentive parameters, acquisition and processing of the operating parameters and processing parameters of the end result. Resource parameters: These parameters are system circuit, device, functional unit resources, such as memory, storage unit length,

stack

depth.

Application

parameters:

these

parameters

Changbiaoxianwei Some SCM applications, functional unit of application conditions. Process parameters: the orderly operation of that system changes in the parameters.

2) How to improve the efficiency of C language programming code. Microcontroller using C language programming is the development and application of microcontroller inevitable trend. If you use the C programming, to achieve maximum efficiency, the best familiar with the use of C compiler. First to test after each C compiler assembly language statements corresponding to the number of rows, so that efficiency can be very clear. When programming in the future, the most efficient use of compiled statements. Various C-compilers are some differences in the efficiency of it will be different compiler, excellent C compilers for embedded system code size and execution time than by just the same function written in assembly language 5-20% long Chengdu. For complex and tight project development time, you can use C language, but only ask you for the MCU system C language and C compilers are very familiar with, with particular attention to the C compiler system can support data types and algorithms. Although the C language is the most common form of high-level language, but because of their different MCU C compiler system manufacturers have some differences, especially in some special function module operation. So, do not know if these characteristics, then the problem would be a lot of debugging them, but lead to the implementation efficiency is lower than assembly language.

3) How to solve the single chip interference issues. The most effective way to prevent interference is to remove the interference source, cut off the

学习文档 仅供参考

interference path, but often difficult to achieve, we can only enough anti-interference ability of the SCM strengthened. Hardware system to improve anti-jamming ability, interference with its flexible design software, saving hardware resources, reliability and more and more attention. The most common phenomenon of SCM is the interference reduction; The Runaway, in fact, can also use the software to process traps and watchdog reset back to the state; so SCM software, the most important interference handle reset state. General SCM will have some signs registers can be used to determine the reasons for reduction; Alternatively you can bury themselves in the RAM in a number of signs. Reset every time processes, through judging these signs, you can determine the reasons for the different reset; also can jump directly to different signs corresponding program. This allows a continuous run, users will not notice when using procedures had to be reset again.

4) How to test the reliability of microcomputer systems. When a single chip system design is completed, microcomputer systems for different products have different test items and methods, but some must be tested: Test SCM software features perfection; on electricity, power-down test; aging test; ESD and EFT and other tests. Sometimes, we can simulate the human use, the possible destruction. For example, deliberately using the human body or clothing fabric friction contact port MCU system, thus testing the ability of anti-static.

In summary, the SCM has become a computer development and application of an important aspect of the application of the important significance of SCM is that it fundamentally changes the traditional control system design and design methods. Former must be analog or digital circuits to achieve most of the functions now can use SCM software approach to reality. This software instead of hardware control technology, also known as micro-control technology, control technology is a revolution in the traditional. In addition, in the development and application process, we must master the skills, improve efficiency in order to fulfill its broader use.

学习文档 仅供参考

单片机的应用与开发技巧

目前单片机渗透到我们生活的各个领域,几乎很难找到哪个领域没有单片机的踪迹。本系统以单片机系统为核心,通过与智能传感器相连,采集并存储智能传感器的测量数据,经过分析处理将结果显示于LCD液晶屏,从而实现了室内环境的监测。因此,单片机的学习、开发与应用显得尤为重要。

一、单片机的特点应用

单片机的特点主要有:高集成度,体积小,高可靠性;控制功能强;低电压,低功耗,便于生产便携式产品;易扩展;优异的性能价格比。目前,单片机的应用领域主要包括:办公自动化设备;单片机在机电一体化中的应用;在实时过程控制中的应用;单片机在日常生活及家用电器领域的应用;在各类仪器仪表中引入单片机,使仪器仪表智能化,提高测试的自动化程度和精度,简化仪器仪表的硬件结构,提高其性能价格比;在电脑网络和通信领域中的应用;商业营销设备;单片机在医用设备领域中的应用;汽车电子产品;航空航天系统和国防军事、尖端武器等领域,单片机的应用更是不言而喻。

二、单片机开发中的几个基本技巧

在单片机应用开发中,代码的使用效率问题、单片机抗干扰性和可靠性等问题仍困扰着许多研发者。现归纳出单片机开发中应掌握的几个基本技巧。

1、如何减少程序中的bug。对于如何减少程序的bug,应该先考虑系统运行中应考虑的超范围管理参数如下。物理参数:这些参数主要是系统的输入参数,它包括激励参数、采集处理中的运行参数和处理结束的结果参数。资源参数:这些参数主要是系统中的电路、器件、功能单元的资源,如记忆体容量、存储单元长度、堆叠深度。应用参数:这些应用参数常表现为一些单片机、功能单元的应用条件。过程参数:指系统运行中的有序变化的参数。

2、如何提高C语言编程代码的效率。用C语言进行单片机程序设计是单片机开发与应用的必然趋势。如果使用C编程时,要到达最高的效率,

学习文档 仅供参考

最好熟悉所使用的C编译器。先试验一下每条C语言编译以后对应的汇编语言的语句行数,这样就可以很明确的知道效率。在今后编程的时候,使用编译效率最高的语句。各家的C编译器都会有一定的差异,故编译效率也会有所不同,优秀的嵌入式系统C编译器代码长度和执行时间仅比以汇编语言编写的同样功能程度长5-20%。对于复杂而开发时间紧的项目时,可以采用C语言,但前提是要求你对该MCU系统的C语言和C编译器非常熟悉,特别要注意该C编译系统所能支持的数据类型和算法。虽然C语言是最普遍的一种高级语言,但由于不同的MCU厂家其C语言编译系统是有所差异的,特别是在一些特殊功能模块的操作上。所以如果对这些特性不了解,那么调试起来问题就会很多,反而导致执行效率低于汇编语言。 3、如何解决单片机的抗干扰性问题。防止干扰最有效的方法是去除干扰源、隔断干扰路径,但往往很难做到,所以只能看单片机抗干扰能力够不够强了。在提高硬件系统抗干扰能力的同时,软件抗干扰以其设计灵活、节省硬件资源、可靠性好越来越受到重视。单片机干扰最常见的现象就是复位;至于程序跑飞,其实也可以用软件陷阱和看门狗将程序拉回到复位状态;所以单片机软件抗干扰最重要的是处理好复位状态。一般单片机都会有一些标志寄存器,可以用来判断复位原因;另外你也可以自己在RAM中埋一些标志。在每次程序复位时,通过判断这些标志,可以判断出不同的复位原因;还可以根据不同的标志直接跳到相应的程序。这样可以使程序运行有连续性,用户在使用时也不会发觉到程序被重新复位过。 4、如何测试单片机系统的可靠性。当一个单片机系统设计完成,对于不同的单片机系统产品会有不同的测试项目和方法,但是有一些是必须测试的:测试单片机软件功能的完善性;上电、掉电测试;老化测试;ESD和EFT等测试。有时候,我们还可以模拟人为使用中,可能发生的破坏情况。例如用人体或者衣服织物故意摩擦单片机系统的接触端口,由此测试抗静电的能力。

综上所述,单片机已成为电脑发展和应用的一个重要方面,单片机应用的重要意义还在于,它从根本上改变了传统的控制系统设计思想和设计方法。从前必须由模拟电路或数字电路实现的大部分功能,现在已能用单片机通过软件方法来实现了。这种软件代替硬件的控制技术也称为微控制

学习文档 仅供参考

技术,是传统控制技术的一次革命。此外在开发和应用过程中我们更要掌握技巧,提高效率,以便于发挥它更加广阔的用途。

学习文档 仅供参考

因篇幅问题不能全部显示,请点此查看更多更全内容