当前位置:首页 >> 电子/电路 >>

温湿度传感器的设计


重庆邮电大学本科毕业设计(论文)





SHT11 是贴片封装型的数字温湿度传感器。可以在一块微型电路板上同时集成传感元件 和信号处理电路,并且输出的数字信号是完全标定。产品的可靠性和稳定性很强。传感器包 括一个电容性聚合体测湿敏感元件、一个用能隙材料制成的测温元件,并在同一芯片上无缝 连接了 14 位的 A/D 转换器以及串行接口电路。因此,该产品具有品质卓越、响应迅速、抗干 扰能力强、性价比高等优点。 AT89C51 单片机是最常用的 51 单片机,并且在日常生活中也有很多的使用,在学习中的 电子制作方面,在工业上的机电控制方面都能见到其身影,用 AT89C51 单片机作为温湿度传 感器的控制部分也是十分的方便实用。使用 AT89C51 单片机的优点在于性价比高,易于掌握 和学习,并且能实现温湿度的测量与控制。 使用 AT89C51 单片机设计温湿度控制系统,可以准确及时的反应出室内的温湿度,还可 以反映出温湿度的变化,并能以直观的数值形式反应在液晶显示屏上。本系统可以用来对温 度和湿度进行监控。 【关键词】 AT89C51 SHT11 温湿度传感器 性价比高

-I-

重庆邮电大学本科毕业设计(论文)

ABSTRACT
SHT11 is a SMD package digital temperature and humidity sensors. Can be simultaneously integrated in a micro- sensor circuit board and the signal processing circuit, and outputs the digital signal is complete standard. Product has a strong reliability and stability. Sensor includes a capacitive polymer humidity measuring sensor, a temperature measurement used by devices band gap material, and seamless connectivity on the same chip 14 -bit A / D converter and a serial interface circuit. Therefore, the product has excellent quality, fast response, anti-interference ability and highly cost-effective. AT89C51 microcontroller is the most common 51 microcontroller, and used in everyday life, there are many uses in electronics manufacturing in learning, in industrial electromechanical control could be seen, use AT89C51 microcontroller for the control temperature and humidity sensor the control section is also very convenient and practical. The advantage of using AT89C51 microcontroller is highly cost-effective, easy to grasp and learn, and be able to achieve measurement and control of temperature and humidity. Using AT89C51 microcontroller design temperature and humidity control system, can accurate and timely responses indoor temperature and humidity, and also can reflect changes in temperature and humidity, are able to react intuitively numerical form on the LCD screen. The system can be used to monitor temperature and humidity. 【Key words】AT89C51 SHT11 Temperature and humidity sensor Highly cost-effective

- II -

重庆邮电大学本科毕业设计(论文)






言 ....................................................... 错误!未定义书签。 第一节 系统实现的主要功能 ................................ 错误!未定义书签。 第二节 系统工作原理 ...................................... 错误!未定义书签。 第三节 总体设计介绍 ....................................................... 3 一、总体设计框图 ....................................................... 3 二、总体设计方法与流程 ................................ 错误!未定义书签。 第四节 本章小结 ........................................... 错误!未定义书签。

第一章 总体设计概述 ......................................... 错误!未定义书签。

第二章 系统模块设计 ......................................... 错误!未定义书签。 第一节 主要控制部分设计 .................................. 错误!未定义书签。 一、单片机的基本特性 .................................. 错误!未定义书签。 二、单片机的引脚介绍 ................................................... 6 三、时钟电路介绍 ...................................... 错误!未定义书签。 第二节 传感器部分设计 ..................................................... 8 一、SHT11 温湿度传感器介绍 .............................................. 8 二、 SHT11 传感器电路设计 .............................................. 11 第三节 液晶显示部分设计 .................................. 错误!未定义书签。 一、 LCD1602 液晶显示屏介绍 ............................ 错误!未定义书签。 二、 LCD1602 液晶显示屏电路设计 ........................................ 15 第四节 本章小结 ........................................................... 16 第三章 系统程序设计 ......................................... 错误!未定义书签。 第一节 总体程序构架 ...................................... 错误!未定义书签。 第二节 主控制模块设计 .................................................... 17 一、 主函数介绍 ....................................................... 17 二、 显示函数介绍 ..................................................... 18 三、 计算函数介绍 ......................................................... 18 第二节 LCD1602 显示模块设计 .............................................. 20 一、 液晶屏初始化函数介绍 ............................................. 20 二、 液晶屏写入指令函数介绍 ........................................... 21 三、 液晶屏写入数据函数介绍 ........................................... 21 第三节 SHT11 传感器模块设计 .............................................. 22
- III -

重庆邮电大学本科毕业设计(论文)

一、 温湿度测量函数介绍 ............................................... 22 二、 温湿度处理函数介绍 ............................................... 23 第四节 本章小结 ........................................................... 23 第四章 系统仿真与调试 ....................................................... 24 第一节 系统仿真 .......................................................... 24 一、 仿真软件介绍 ..................................................... 24 二、 电路图的连接与程序导入 ........................................... 24 三、 系统仿真 ......................................................... 26 第二节 系统调试 .......................................................... 26 第三节 所遇问题与解决方法 ................................................ 29 第四节 本章小结 ........................................................... 30 结 致 附 论 ....................................................................... 31 谢 ....................................................................... 32 录 ....................................................................... 34 一、英文原文: ............................................................ 34 二、英文翻译: ............................................................ 45 三、工程设计图纸: ........................................................ 53 四、源程序:.............................................................. 54

参考文献 ..................................................................... 33

- IV -

重庆邮电大学本科毕业设计(论文)





温度和湿度与人们的生活有着密切的联系。 在一些地方对温度和湿度的要 求很高,必须进过精确的测量和控制,比如在工、农业的生产方面,气象、环 保的探测,还有科研部门都有着严格的要求,在制药和食品加工方面也对温湿 度有特殊的要求。人们常用的温度计是水银温度计,它的优点是结构简单、价 钱低, 但缺点是精度不高而且不宜读数。 常用的湿度计的原理是干湿球显示法, 温度计是用的水银,不仅复杂而且测量精度不高。在这方面单片机就体现出了 优势,用单片机控制进行温湿度的测量,就会使测量变得更简单、灵活,控制 上也更方便,还对温湿度控制的技术指标有大幅提升。用 LCD 显示器来显示温 湿度的数值,看起来更加直观。 为了达到生产和生活的需要, 从古代开始人们就想过很多方法来测量和改 变环境的温湿度。在古代的时候人们通过扇子、雨伞、毛巾等试图去改变和控 制温度和湿度, 而当今人们也通过高科技手段发明出许多控制和改变温湿度的 工具,如风扇、空调、加热器等,这充分反映出人们非常希望能改变温度和湿 度这两个对人们生活生产十分关键的环境因数。随着现代科技的发展,人们将 传感器和单片机应用在了温湿度测量和控制上, 使得系统的测量精度和自动化 程度有了很大程度的提高,并取得了良好的效果。 以前人们对温湿度的控制方法都是人工的, 采取温度计和湿度计测量温湿 度,并用人工读数,然后通过控制一些设备如:升、降温,增加、降低湿度的 设备来实现温湿度的控制,但是这样做的精确性不高,操作人员的劳动强度很 大,而且实时性很差。在有些地方使用半导体二极管作为温湿度传感器,由于 没有达到很好的互换性能,在测量中效果也不是很理想。并且在一些对温湿度 要求很高的行业中,很有可能因为温湿度的超标从而产生危险引发事故。比如 在大型电力系统中,就会由于温度和湿度的过高和过低发生漏电或短路的情 况,这就会产生事故,危机操作人员的生命安全,就需要加装自动控制温湿度 的装置。 在温湿度的测量中起关键作用的是温湿度传感器。 以前测量温湿度都是分 开进行的,随着科技的进步,人们发明了一体式传感器,可以同时测量温度和 湿度。温度传感器的发展大概经历了 3 个阶段,分别是:传统的分立式温度传 感器、模拟集成温度传感器、智能集成温度传感器。现在,温度传感器正从模

-1-

重庆邮电大学本科毕业设计(论文)

拟向数字方向发展并且有逐渐取代模拟器件的可能,向智能化、网络化发展 SHTXX 系列温湿度传感器是一款高度 集成的温湿度传感器芯片, 是现今国 内外用的最广泛的, 全程都是数字标量输出。 产品具有很高的稳定性和可靠性。 其包括一个电容性聚合体湿度敏感元件和一个用能隙材料制成的温度敏感元 件, 并与一个 14 位的 A/D 转换器以及一个串行接口电路设计集成。 SHTXX 系列 传感器有许多方面的优势,比如:品质卓越、响应超快、抗干扰能力强、极高 的性价比。 每个传感器芯片在制作过程中都是在极其精确的温湿度下经行标定 的。通过将标定得到的校准系数以储存在其 OTP 内存中。接口配置很简单,只 需通过两线制的串行接口就可调整内部电压, 使外围系统集成变得快速、 简单、 体积微小、极低功耗等,因此,该类产品成为各类应用中的首选。整体而言, 其如下优点:全标定输出、卓越的长期稳定性、无需额外电路、低能耗、超小 尺寸、自动休眠、超快响应时间等。 在 SHTXX 系列温湿度传感器中, 此次设计选用比较熟悉的 SHT11 数字温湿 度传感器,该芯片在 PROTEUS 中具有仿真原型,同时选用最常用和简单的单片 机 AT89C51,这款传感器与单片机连接的外围电路比较简便。所以本次设计采 用的测量的传感器为 SHT11 数字温湿度传感器,核心控制芯片采用 AT89C51, 再辅助外围电路,构建一套温湿度测量系统。

-2-

重庆邮电大学本科毕业设计(论文)

第一章
第一节

总体设计概述

系统实现的主要功能

这个系统所要实现的主要功能是:实现温度、湿度的测量与显示。 整体设计工作的流程如下: 通过 SHT11 数字温湿度传感器采集当前环境下 的温湿度数据, 然后送入单片机进行数据处理, 进而控制 LCD1602 的显示时序, 将采集到的数据显示出来。

第二节

系统工作原理

从总体角度来说这个设计主要涉及有温度、湿度的测量,显示以及简单的 控制。分为三个部分,即 AT89C51 单片机为主控部分、SHT11 温湿度传感器部 分、LCD1602 显示屏显示部分。还需要加一些外围的驱动电路。 主控部分主要用的是 AT89C51 单片机,在后面会有对单片机的介绍。在这 部分还有时钟电路。 传感器部分是使用的 SHT11 数字温湿度传感器。 通过 SHT11 传感器检测当 前环境下的温湿度,然后把测得的数据送入单片机进行处理,提供给后续的部 分使用。 显示部分是使用的 LCD1602 液晶显示器,显示分为两行,上面一行显示湿 度,下面一行显示温度,后面显示湿度的百分比和温度的单位。

第三节
一、总体设计框图

总体设计介绍

如图 1-1 所示为总体设计框图, 是根据上述部分模块与设计理念画出来的。 并且在保证功能实现的基础上, 尽可能的简化电路, 减少元器件从而降低成本。

-3-

重庆邮电大学本科毕业设计(论文)

图 1-1 总体设计框图

从图中可以看出有单片机处理模块,传感器模块,液晶显示器模块,外围 电路还有时钟电路。整个系统以 AT89C51 单片机为核心,实现温湿度的采集和 温湿度具体数值的显示。

二、总体设计方法与流程
从上一步可以看出, 这次设计分 3 个部分。 首先需要做的就是搞懂 AT89C51 单片机,学习单片机的引脚、端口,功能等基本内容。这是一款十分常见的 51 单片机,可以查到很多资料。然后就是开始学习 LCD1602 液晶显示屏,学习显 示屏的使用方法,连接方法。最后还要对 SHT11 数字温湿度传感器进行研究, 通过查资料、看文献学习传感器的使用。在这 3 个部分掌握了后,再开始学习 Proteus 仿真软件。最后进行程序的编写和系统的仿真。整个流程图如图 1-2 所示。

图 1-2 总体设计流程图

-4-

重庆邮电大学本科毕业设计(论文)

第四节 本章小结
在这章中主要介绍了这次毕业设计要实现的主要功能,和这次毕业设计 的设计方案的大体流程,并对设计的总体设计方法和系统的工作原理做了个 简单的介绍。提出了这次设计的总体思路,在后续的工作中将按照这个流程 把后续的系统设计完成,达到预期的效果。

-5-

重庆邮电大学本科毕业设计(论文)

第二章
第一节

系统模块设计
主要控制部分设计

这次毕业设计的核心控制部分采用的是 AT89C51 单片机, 其中接口连接如 下:将单片机的 P0 口作为数据传输口,P0.0——P0.7 分别与 LCD1602 液晶显 示屏的 D0——D7 端口相连;P2.0~P2.2 分别作为液晶屏的 RS、R/W 和 E,并 与液晶屏的相应端口相连接,以控制液晶显示;P2.6 和 P2.7 分别与 SHT11 的 SCK 和 DATA 端口相连。

一、单片机的基本特性
AT89C51 单片机是一种带 4K 字节闪烁可编程可擦除只读存储器, 也是高性 能 CMOS8 位微处理器,这种储存器俗称单片机。单片机的可擦除只读存储器可 以反复擦除 100 次。该器件采用 ATMEL 高密度非易失存储器制造技术制造,与 工业标准的 MCS-51 指令集和输出管脚相兼容。由于将多功能 8 位 CPU 和闪烁 存储器组合在单个芯片中,ATMEL 的 AT89C51 是一种高效微控制器[1]。AT89C51 单片机为很多嵌入式控制系统提供了一种灵活性高且价廉的方案。 ① 与 MCS-51 兼容 ② 4K 字节可编程闪烁存储器;寿命:1000 写/擦循环;数据保留时间:10 年 ③全静态工作:0Hz-24Hz ④三级程序存储器锁定 ⑤128*8 位内部 RAM ⑥32 可编程 I/O 线 ⑦两个 16 位定时器/计数器 ⑧5 个中断源 ⑨可编程串行通道 ⑩低功耗的闲置和掉电模式

二、单片机的引脚介绍
VCC:供电电压。

-6-

重庆邮电大学本科毕业设计(论文)

GND:接地。 P0 口:P0 口为一个 8 位漏级开路双向 I/O 口,每脚可吸收 8TTL 门电流。 当 P1 口的管脚第一次写 1 时,被定义为高阻输入。P0 能够用于外部程序数据 存储器,它可以被定义为数据/地址的第八位。在 FIASH 编程时,P0 口作为原 码输入口,当 FIASH 进行校验时,P0 输出原码,此时 P0 外部必须被拉高[2]。 P2 口: P2 口为一个内部上拉电阻的 8 位双向 I/O 口, P2 口缓冲器可接收, 输出 4 个 TTL 门电流,当 P2 口被写“1”时,其管脚被内部上拉电阻拉高,且 作为输入。并因此作为输入时,P2 口的管脚被外部拉低,将输出电流。这是由 于内部上拉的缘故[3]。P2 口当用于外部程序存储器或 16 位地址外部数据存储 器进行存取时,P2 口输出地址的高八位。在给出地址“1”时,它利用内部上 拉优势, 当对外部八位地址数据存储器进行读写时, P2 口输出其特殊功能寄存 器的内容。P2 口在 FLASH 编程和校验时接收高八位地址信号和控制信号[4]。 RST:复位输入。当振荡器复位器件时,要保持 RST 脚两个机器周期的高 电平时间。 XTAL1:反向振荡放大器的输入及内部时钟工作电路的输入。 XTAL2:来自反向振荡器的输出。

三、时钟电路介绍
设计用的 AT89C51 单片机有两种产生时钟的方法, 一种是内部电路产生的 方法,还有一种是用外加外围电路产生。内部产生方法就是利用单片机芯片内 部的振荡电路产生时钟。在这次毕业设计中,采用的是外部振荡的方法,其目 的是为了简化电路,也是从实际出发。 对于 AT89C51 单片机来说,要形成时钟,需要有外接元件。所以在实际设 计的电路中,振荡时钟电路的外接部分就是晶振和电容 C1、C2 构成的并联谐 振电路,并接在放大器的反馈回路中。在电容和晶振的选择上并没有严格的要 求。一般要考虑电容的大小和振荡频率的高低,还有振荡器的稳定性、起振反 应速度和温度等特性。大概晶振频率在 1.2MHZ~12MHZ 之间选择,而两个电容 的值一般选取在 20pf~100pf 之间。在本次设计中,考虑到计算和其他方面因 素晶振选取频率为 12MHZ,电容值选择为 20pf。

-7-

重庆邮电大学本科毕业设计(论文)

图 2-1 时钟晶振电路图

图 2-2 晶振频率选择

第二节

传感器部分设计

一、SHT11 温湿度传感器介绍
SHT11 数字温湿度传感器是温湿度传感器家族中的贴片封装系列。传感器 将传感元件和信号处理电路集成在一块微型电路板上, 输出完全标定的数字信 号。传感器采用专利的 CMOSens? 技术,确保产品具有极高的可靠性与卓越的 长期稳定性。传感器包括一个电容性聚合体测湿敏感元件、一个用能隙材料制 成的测温元件,并在同一芯片上,与 14 位的 A/D 转换器以及串行接口电路实 现无缝连接[5]。因此,该产品具有品质卓越、响应迅速、抗干扰能力强、性价 比高等优点。 每个传感器芯片都在极为精确的湿度腔室中进行标定, 校准系数以程序形 式储存在 OTP 内存中, 用于内部的信号校准。 两线制的串行接口与内部的电压 调整,使外围系统集成变得快速而简单[6]。微小的体积、极低的功耗,使 SHT11 成为各类应用的首选。

1、传感器的电学特性
传感器的电学特性如表 2-1 所示。

-8-

重庆邮电大学本科毕业设计(论文)

表 2-1 传感器电学特性

参数 供电电压

条件 休眠状态

Min 2.4

Typ 3.3 2 3 150

Max 5.5 5

单位 V μ W mW μ W

功耗

测量状态 平均

2、传感器接口介绍
传感器的各接口如图 2-3 所示。

图 2-3 传感器接口介绍

(1) 、串行时钟输入(SCK)
SCK 用于微处理器与 SHT11 之间的通讯同步。 由于接口包含了完全静态逻 辑,因而不存在最小 SCK 频率。

(2) 、串行数据 (DATA)
DATA 引脚为三态结构,用于读取传感器数据。当向传感器发送命令时, DATA 在 SCK 上升沿有效且在 SCK 高电平时必须保持稳定,DATA 在 SCK 下降 沿之后改变。为确保通讯安全,DATA 的有效时间在 SCK 上升沿之前和下降沿 之后应该分别延长至 TSU and THO – 参见图 2-4。 当从传感器读取数据时, DATA TV 在 SCK 变低以后有效,且维持到下一个 SCK 的下降沿[7]。

-9-

重庆邮电大学本科毕业设计(论文)

图 2-4 串行数据状态图

注:上图中加重的 DATA 线由传感器控制,普通的 DATA 线由单片机控制。 有效时间依据 SCK 的时序。请注意数据读取的有效时间为前一个切换的下降 沿。其中缩写词解释见表 2-2。
表 2-2 缩写词解释

FSCK SCK 频率

TSCKx SCK 高 /低 时 间

TR/TF SCK 上 升/下 降时间

TFO DATA 下降时 间

TRO DATA 上升时 间

TV DATA 有效时 间

TSU DATA 设置时 间

THO DATA 保持 时间

3、传感器通信
用一组“启动传输”时序,来完成数据传输的初始化。它包括:当 SCK 时 钟高电平时 DATA 翻转为低电平, 紧接着 SCK 变为低电平, 随后是在 SCK 时钟 高电平时 DATA 翻转为高电平。参见图 2-5。

图 2-5 传感器“启动传输”

- 10 -

重庆邮电大学本科毕业设计(论文)

后续命令包含三个地址位(目前只支持 000” ) ,和五个命令位。SHT11 会 以下述方式表示已正确地接收到指令:在第 8 个 SCK 时钟的下降沿之后,将 DATA 下拉为低电平(ACK 位) 。在第 9 个 SCK 时钟的下降沿之后,释放 DATA (恢复高电平)[8]。命令见下表。
表 2-3 SHT11 命令集

命令 预留 温度测量 湿度测量 读状态寄存器 写状态寄存器 预留

代码 0000x 00011 00101 00111 00110 0101x-1110x

4、温湿度测量
发布一组测量命令( ‘00000101’表示相对湿度 RH, ‘00000011’表示温度 T)后,控制器要等待测量结束。这个过程需要大约 20/80/320ms,分别对应 8/12/14bit 测量。 确切的时间随内部晶振速度, 最多可能有-30%的变化。 SHT11 通过下拉 DATA 至低电平并进入空闲模式,表示测量的结束。控制器在再次触 发 SCK 时钟前,必须等待这个“数据备妥”信号来读出数据。检测数据可以先 被存储,这样控制器可以继续执行其它任务在需要时再读出数据。接着传输 2 个字节的测量数据和 1 个字节的 CRC 奇偶校验(可选择读取) 。uC 需要通过 下拉 DATA 为低电平,以确认每个字节。所有的数据从 MSB 开,右值有效(例 如:对于 12bit 数据,从第 5 个 SCK 时钟起算作 MSB;而对于 8bit 数据,首 字节则无意始义) 。 在收到 CRC 的确认位之后, 表明通讯结束。 如果不使用 CRC-8 校验,控制器可以在测量值 LSB 后,通过保持 ACK 高电平终止通讯[9]。在测量 和通讯完成后,SHT11 自动转入休眠模式。

二、 SHT11 传感器电路设计
SHT11 传感器连接 AT89C51 单片机的电路图还是比较简单的,调用出 Protues 里现成的 SHT11 传感器模块, 再把时钟端 SCK 和数据端 DATA 与单片机 对应的端口相连。

- 11 -

重庆邮电大学本科毕业设计(论文)

图 2-6 SHT11 传感器电路图

第三节

液晶显示部分设计

一、 LCD1602 液晶显示屏介绍
LCD1602 是工业字符型液晶显示屏, 可以同时显示 32 个字符 (16 列 2 行) 。 1602 显示屏可以用来显示字母、数字、符号等点阵类型的液晶模块。液晶显示 器在工业和生活中用的很多,如手表、计算器、电子称等地方都有使用,在单 片机学习中也经常用到液晶显示器,常用来显示数字、字母等,在这些显示器 中 LCD1602 是用的最多、最基本、最容易上手液晶显示屏,在这个毕业设计中 就正是采用 LCD1602 液晶显示屏来显示温度和湿度的数值。

1、显示器的主要技术参数
显示容量:16×2 个字符 芯片工作电压:4.5—5.5V 工作电流:2.0mA(5.0V) 模块最佳工作电压:5.0V 字符尺寸:2.95×4.35(W×H)mm

2、显示器的引脚说明
这里采用的是 LCD1602 标准的 14 脚无背光显示器,各引脚说明如下表。

- 12 -

重庆邮电大学本科毕业设计(论文)

表 2-4 LCD1602 显示器引脚说明

符号 VSS VDD VL RS R/W E D0 具体解释:

引脚说明 电源地 电源正极 液晶显示偏压 数据/命令选择 读/写选择 使能信号 数据 VSS 脚:VSS 为地电源。

符号 D1 D2 D3 D4 D5 D6 D7

引脚说明 数据 数据 数据 数据 数据 数据 数据

VDD 脚:VDD 接 5V 正电源。 VL 脚:VL 为液晶显示器对比度调整端,接正电源时对比度最弱, 接地时对比度最高,对比度过高时会产生“鬼影” ,使用时可以通过一 个 10K 的电位器调整对比度[10]。 RS 脚:RS 为寄存器选择,高电平时选择数据寄存器、低电平时 选择指令寄存器。 R/W 脚:R/W 为读写信号线,高电平时进行读操作,低电平时进 行写操作。当 RS 和 R/W 共同为低电平时可以写入指令或者显示地址, 当 RS 为低电平 R/W 为高电平时可以读取信号,当 RS 为高电平 R/W 为 低电平时可以写入数据。 E 脚:E 端为使能端,当 E 端由高电平跳变成低电平时,液晶模 块执行命令。 D0-D7 脚:D0~D7 为 8 位双向数据线。

3、显示器的指令说明
LCD1602 液晶显示屏的内部控制有 11 条控制指令,见下表。

- 13 -

重庆邮电大学本科毕业设计(论文)

表 2-5 LCD1602 液晶屏控制指令

序号 1 2 3 4 5 6 7 8 9 10 11

指令 清显示 光标返回 置输入模式 显示开/关控制 光标或字符移位 置功能 置字符发生存贮器地 址 置数据存贮器地址 读忙标志或地址 写数到 CGRAM 或 DDRAM) 从 CGRAM 或 DDRAM 读 数

RS R/W D7 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 1 0 0 1 0 1 0

D6 0 0 0 0 0 0 1

D5 D4 D3 D2 D1 D0 0 0 0 0 0 1 0 0 0 0 1 * 0 0 0 1 I/D S 0 0 1 D C B 0 1 S/C R/L * * 1 DL N F * * 字符发生存贮器地址

1 显示数据存贮器地址 BF 计数器地址 要写的数据内容 读出的数据内容

详细解释: 1602 液晶模块的读写操作、 屏幕和光标的操作都是通过指令编程来 实现的。 (说明:1 为高电平、0 为低电平) 指令 1:清显示,指令码 01H,光标复位到地址 00H 位置。 指令 2:光标复位,光标返回到地址 00H。 指令 3:光标和显示模式设置, I/D:光标移动方向,高电平右移, 低电平左移; S:屏幕上所有文字是否左移或者右移。高电平表示有效, 低电平则无效。 指令 4:显示开关控制。 D:控制整体显示的开与关,高电平表示 开显示,低电平表示关显示; C:控制光标的开与关,高电平表示有光 标,低电平表示无光标; B:控制光标是否闪烁,高电平闪烁,低电平 不闪烁[11]。 指令 5:光标或显示移位 S/C:高电平时移动显示的文字,低电平 时移动光标。 指令 6:功能设置命令,DL:高电平时为 4 位总线,低电平时为 8 位总线; N:低电平时为单行显示,高电平时双行显示;F:低电平时 显示 5x7 的点阵字符,高电平时显示 5x10 的点阵字符[12]。 指令 7:字符发生器 RAM 地址设置。 指令 8:DDRAM 地址设置。 指令 9:读忙信号和光标地址 BF:为忙标志位,高电平表示忙,

- 14 -

重庆邮电大学本科毕业设计(论文)

此时模块不能接收命令或者数据,如果为低电平表示不忙。 指令 10:写数据。 指令 11:读数据。

4、显示器的标准字符表
LCD1602 液晶显示器内部的字符储存器存储了 160 个不同的点阵类型的字 符、图形,有阿拉伯数字、常用符号、日语中的平假名片假名。每个字符都有 一个对应的固定代码,只要调用代码,显示器就能把对应的字符显示出来。代 码与字符的对应表见图 2-7。

图 2-7 显示屏代码与字符对应图

二、 LCD1602 液晶显示屏电路设计
上文已经介绍了 LCD1602 液晶显示屏的基本内容和使用方法, 这次毕业设 计的显示部分就是用这个显示屏来实现的。将显示屏的 RS、RW、E 三个端口接 到单片机对应设定的端口,D0-D7 为数据传输端口也接到单片机的数据传输端 并加上个 10K 的排阻,因为单片机 P0 口内部没有上拉电阻,排阻在这里起上 拉电阻的作用,就是给 P0 口提供电流,否则会显示就会异常。显示电路的设 计电路图见图 2-8。

- 15 -

重庆邮电大学本科毕业设计(论文)

图 2-8 显示器设计电路图

第四节 本章小结
在本章中,重点对系统各个模块的设计做了介绍,分别对控制、显示、传 感三个组成模块的线路图与电路连接方法作了阐述。对所用到的单片机、传感 器、显示屏的使用环境,工作电压和各引脚的连接与使用做了详细解释。在传 感器部分,说明了传感器要如何去测量温湿度、传感器的初始化、传感器的信 号和数据的传输的办法。在显示屏部分,说明了显示器的使用方法,简单介绍 了下显示器的命令与字符表。

- 16 -

重庆邮电大学本科毕业设计(论文)

第三章
第一节

系统程序设计
总体程序构架

在对要设计的东西有一个了解后,先建立一个总体框图和流程图,然后分 块进行设计,逐个模块的设计并实现功能,最后再把各个模块连接起来,形成 总程序。流程如图 3-1。

图 3-1 主程序流程图

总体构架的思路就是:检测温湿度,温湿度的计算,温湿度的补偿,温湿 度的处理,最后还要将处理后的值发送给显示器,实现显示器的数值显示。

第二节

主控制模块设计

在主控制部分,主要有一个主函数和一个显示程序。主函数中包括液晶屏 初始化函数、温湿度计算函数、温度和湿度补偿函数。设计图如图 3-2。

图 3-2 主控程序流程图

一、 主函数介绍
主函数是一个循环函数,目的是一直进行温湿度测量并计算,在进行温湿 度补偿,主函数如下:

- 17 -

重庆邮电大学本科毕业设计(论文)

void main() { lcd_init(); while(1) { text_jishuan_temp11(); TEM0=xianzhi_t+10;//修正温度补偿 HUM0=xianzhi_h-30;//修正湿度补偿 display();//定时中断 显示一次改变的数据 } } //调用液晶屏初始化子函数 //无限循环下面的语句:

二、 显示函数介绍
后面跟上一个液晶显示屏的显示数据函数,并设定从指定地方开始显示, 还要将得到的数据分开成十位数据和个位数据,在从指定地方开始显示,函数 如下: void display() { write_1602com(yh+12);// 显示从第一行第 12 个位置之后开始显示 write_1602dat(HUM0/100+0X30); write_1602dat(HUM0/10%10+0X30); write_1602com(er+12); 示 write_1602dat(TEM0/100+0X30); write_1602dat(TEM0/10%10+0X30); } 在上述两个主函数中都调用到了许多自己定义的函数, 这些函数有些是用 来显示的,有些是用来计算数据的,还有的是测量用的,这些函数后面都会有 所介绍[13]。 //数据显示写入位置, 从第 12 个位置后开始显 //0X30: “0”字符的 ask 码

三、 计算函数介绍
在主控函数里还调用了一个计算函数,这个函数是用来计算温湿度的。因 为传入单片机的温度和湿度的数据是分两次传入的, 分为高八位和低八位传入

- 18 -

重庆邮电大学本科毕业设计(论文)

的,这里要将数据进行重新整合,并对数据进行处理,最后给出提供给显示器 的显示值。

1、温度计算
温度计算函数如下: void text_jishuan_temp() { float aa=0,bb=0,temp_zi; int 起 temp_zi=0.01*aa-40; // if (temp_zi<0) { temp_zi=0; } temp_zi=temp_zi*10; xianzhi_t=(int)temp_zi;//给显示值 abcd=0; //把高八位和低八位和在一 aa=(float)temp_h*256+(float)temp_LL;

2、湿度计算
湿度计算函数如下: void 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; xianzhi_h=(int)humi_zi; }

- 19 -

重庆邮电大学本科毕业设计(论文)

第二节

LCD1602 显示模块设计

在设计显示器的程序时,在初始化时首先设计恒定显示的温度、湿度单词 和单位符号,确定要变化的那 4 位,然后定义写入指令,再定义写入数据,最 后就能显示了。设计流程如下图。

图 3-3 LCD1602 显示屏程序流程图

在显示模块的设计中主要用到了 3 个函数:一个液晶屏初始化函数,一个 液晶屏写入指令函数,一个液晶屏写入数据函数

一、 液晶屏初始化函数介绍
液晶屏初始化函数,用处是初始化液晶屏,定义温湿度表示符号,温湿度 的单位符号,并确定它们的显示位置和哪些位置用来显示温湿度的数值,程序 如下: lcd_init()//***液晶初始化函数**** { write_1602com(0x38);//设置液晶工作模式,意思:16*2 行显示,5*7 点 阵,8 位数据 write_1602com(0x0c);//开显示不显示光标 write_1602com(0x06);//整屏不移动,光标自动右移 write_1602com(0x01);//清显示 write_1602com(yh+0);//温度显示固定符号从第一行第 1 个位置之后开始 显示 for(a=0;a<16;a++) { write_1602dat(tab1[a]); } write_1602com(er+0);//湿度显示固定符号写入位置,从第 0 个位置后开 始显示 for(a=0;a<16;a++)

- 20 -

重庆邮电大学本科毕业设计(论文)

{ write_1602dat(tab2[a]); } }

二、 液晶屏写入指令函数介绍
写入指令函数的作用是发给显示器一个指令告诉显示器要显示数据, 准备 接收数据,并确定把数据显示在哪个位置。大体程序如下: write_1602com(uchar com)//****液晶写入指令函数**** { rs=0;//数据/指令选择置为指令 rw=0; //读写选择置为写 P0=com;//送入数据 delay(1); en=1;//拉高使能端,为制造有效的下降沿做准备 delay(1); en=0;//en 由高变低,产生下降沿,液晶执行命令 } //在哪写

三、 液晶屏写入数据函数介绍
写入数据函数的作用是告诉显示屏显示的具体数据是啥, 传输数据给显示 屏,程序如下: write_1602dat(uchar dat)//***液晶写入数据函数**** { rs=1;//数据/指令选择置为数据 rw=0; //读写选择置为写 P0=dat;//送入数据 delay(1); en=1; //en 置高电平,为制造下降沿做准备 delay(1); en=0; //en 由高变低,产生下降沿,液晶执行命令 } //写啥

- 21 -

重庆邮电大学本科毕业设计(论文)

第三节

SHT11 传感器模块设计

SHT11 数字温湿度传感器是这次设计选用的传感器,在启动和初始化传感 器后,使用传感器测量温湿度,再将测量的数据分为高 8 位和低 8 为传入单片 机,并进行温湿度值的补偿计算,流程图如图 3-4。

图 3-4 SHT11 传感器流程图

传感器的模块设计有初始化函数、驱动函数、温湿度测量函数、温湿度处 理函数、传输函数[14]。下面对其中几个函数进行简单介绍。

一、 温湿度测量函数介绍
温湿度测量函数的作用是测量温度或湿度,并返回校验值,程序如下: void text_a(unsigned char ml) { unsigned int i; start_sht11(); write(ml);//写入测温度 if (ack==1) { sht_rest() ;//复位 write(ml);//写入测温度 } for (i=0;i<55535;i++){ if(DATA==0) break;} read();//读温度 } //启动

- 22 -

重庆邮电大学本科毕业设计(论文)

二、 温湿度处理函数介绍
温湿度处理函数主要是调用的前面所设计过的计算函数, 对测量的温湿度 值进行处理,主要程序如下: void text_jishuan_temp11() { error=0; ack=0; sht_rest() ;//复位 text_a(TEMP_ML); text_jishuan_temp(); text_a(HUMI_ML); text_jishuan_humi(); }

第四节 本章小结
在这一章中主要对这次设计的软件部分做了介绍, 软件部分的设计分为了 三大模块,其中也有些函数在几大模块中都有使用到。本章中也对用到的基本 函数程序做了介绍, 在下一章将会把这些代码导入单片机中, 进行系统的仿真。

- 23 -

重庆邮电大学本科毕业设计(论文)

第四章

系统仿真与调试
系统仿真

第一节
一、 仿真软件介绍

这次毕业设计使用的仿真软件是 Proteus,Proteus 是著名的 EDA 工具, 软件可以将代码调试与原理电路图协同起来再加上单片机和外围电路实现仿 真,并可以经行 PCB 软件设计,也支持 51 系类的单片机的仿真[15]。是最实用、 最简单的单片机仿真软件,也很容易上手。 在软件安装完成后,就可以进入软件主界面,如图 4-1。

图 4-1 仿真软件界面

二、 电路图的连接与程序导入
在软件中新建工程、文件,然后就开始画电路,在软件中找到所需的元 器件, 包括: AT89C51 单片机、 SHT11 数字温湿度传感器、 LCD1602 液晶显示屏、 排阻、电容、电阻、晶振,在用导线将元器件按需要的电路连接起来,并加上 高电位和接地。连接好的电路图如图 4-2 所示。

- 24 -

重庆邮电大学本科毕业设计(论文)

图 4-2 系统连接电路图

连接好后在 Keil 中生成能为 Proteus 仿真使用的文件如图 4-3。

图 4-3 生成程序仿真文件

然后再进入 Proteus 里,双击单片机模块,将仿真用的程序文件导入到系 统里(见图 4-4) ,到此,仿真的前期准备就都完成了。

- 25 -

重庆邮电大学本科毕业设计(论文)

图 4-4 仿真程序导入

三、 系统仿真
电击左下角的开始按钮,软件开始仿真,可以看见电路图中的管脚处出现 了表示高低电位的红蓝点,SHT11 有了显示,LCD1602 上也显示出了温湿度, 系统出现效果,如图 4-5。

图 4-5 仿真效果

第二节

系统调试

在仿真出效果后,现在对系统进行测试,看是否如设计的一样能实时的反 应温湿度的数值变化。

- 26 -

重庆邮电大学本科毕业设计(论文)

对 SHT11 模块进行调节,用来模拟外接温湿度变化传感器的反应。用鼠标 点击 SHT11 左下角的两个按钮可以对数值大小进行调节(左边是减少,右边是 增加) , 右下角的那个按钮是切换调节的数值是温度还是湿度。 现在将 SHT11 调节到温度调节,可以看见有一个红箭头指向温度的数值, 点击温度增加按钮,可以看见每点一下,SHT11 显示的温度就增加一度,如图 4-6。

图 4-6 温度调节

在温度调节的过程中观察 LCD1602 液晶显示屏的变化, 可以看到显示屏管 脚的红蓝色点颜色在变化, 并且屏上 temperature 后面显示的温度数值也一直 在变化 (见图 4-7) , 通过观察发现显示屏上的温度值与传感器上的温度值是一 样,并且保持同步的变化。进过验证温度测量成功,系统能成功实现温度的实 时测量与显示。

图 4-7 温度变化

同理,将 SHT11 传感器的调节按钮选定为湿度,用同样的方法进行湿度变 化, 并观察显示屏。 发现湿度测量也实现了实时、 准确的变化并显示出数值 (见

- 27 -

重庆邮电大学本科毕业设计(论文)

图 4-8) 。再多次变化温湿度观察变化(见图 1-10,图 4-11) 。到此为止,系统 成功实现设定功能,成功的实现对温湿度的实时变化的测量并显示,设计仿真 取得成功。

图 4-8 湿度变化调节与显示

- 28 -

重庆邮电大学本科毕业设计(论文)

图 4-9 温湿度变化调节

第三节

所遇问题与解决方法

在这次毕业设计中也遇到了许多问题,其中有软件编程方面的,也有仿真 方面的。在编程方面就遇到了函数没定义等问题,由于要调用的自定义函数很 多,顺序又放的不是很整齐,就会碰到一编译就弹出错误说有哪些函数没定义

- 29 -

重庆邮电大学本科毕业设计(论文)

就直接调用了;在仿真时遇到过 Keil 软件无法生成能供 Proteus 使用的程序 文件。这些问题后来都在查阅资料,请教老师和同学的帮助下完成了。

第四节 本章小结
在本章中详细的介绍了系统的仿真过程,和仿真结果,变化初始条件检测 系统的实时性与准确性。通过仿真系统达到了最初要求的设计功能,实现了温 湿度的实时测量与数字化显示。也对遇到的问题做了反思与修改。

- 30 -

重庆邮电大学本科毕业设计(论文)





测量温湿度对人们的生产生活是十分重要的, 在农业上的恒温恒湿蔬菜大 棚,工业上的恒温恒湿,还有很多高精尖的实验室对温湿度的要求也是很严格 的。随着经济的发展,人们生活水平的提高和电子技术的应用。已经不能像原 来一样使用老式的人工读数温度、湿度计,这即浪费了时间也不方便电子自动 化控制。在这个信息和计算机飞速发展的时代,要把传感器数字化,这样才能 方便与电子系统联系,才能方便后续的自动化管理。而这次的毕业设计所做正 是温湿度传感器,也是一个很贴近生活的题目。 在这段做毕业设计的时间里所得到的最大感触就是“纸上得来终觉浅,绝 知此事要躬行” 。刚开始看看书认为还不算难,但是经过自己动手做之后才发 现平时学习知识中的不足之处,看着都会的东西,自己一做就会被很多小问题 卡住,以为没问题的程序结果运行就报错,在设计方面也会遇到些平时不注意 的细节。 经过这一段时间的努力,从确定题目,到查阅资料,学习基础理论知识, 查看并了解芯片、传感器、显示器的使用方法和功能,学习编程并调试程序, 这都使我的理论知识和动手能力有了很大的提升。 也对单片机的功能和运用有 了更深一步的掌握,同时,对一些外围的设备和电路,如:传感器、显示屏、 时钟电路也有了一定的了解。 最后也仿真成功,达到预期设定目的,完成了毕业设计所要求的仿真实现 的要求。但我知道这毕竟不是实物,离实物的实现还是有一段距离,想要完成 实物并且在生活生产中应用还有很长的一段路要走。 通过这次毕业设计,实现了从理论到实际的跨度,知道了理论与实际的差 距,并加强了动手能力,为以后的工作和学习打下了坚实的基础。

- 31 -

重庆邮电大学本科毕业设计(论文)





毕业设计成功的完成,在这个过程中我学到了很多的东西。首先我要感谢 我的导师朱治国老师, 朱老师在我毕业设计和论文的撰写过程中给予了我很大 的帮助,从设计初期的基本思路构架,到最后设计的完成,从论文结构和文献 的选取,到后来的论文修订与定稿我都或多或少的出现了问题和疑惑,朱老师 都耐心的帮我解答问题, 最后在老师的指导下我顺利的完成了毕业设计和论文 的撰写。其次,我也要感谢我的同学们,他们也在我的设计过程中给予了我帮 助,他们帮我查找了资料,在我不懂时给予了我解答。最后,还要感谢学校给 我们提供的像图书馆之类的学习与查阅环境,在其中我查阅到了很多书籍,对 完成毕业设计也有很大的帮助。

- 32 -

重庆邮电大学本科毕业设计(论文)

参考文献
[1] 巧 媛.单片机原理及应用(第二版)[M].北京:电子工业出版社,2003. [2] 刘 刚. FPGA 与单片机的接口设计[J]. 电子世界, 2004,(9):32 -32.

[3] 胡晓颖. 基于单片机的 LCD 的滚动显示[J]. 硅谷, 2012,(3):58 -59. [4] 于会山. 一种新型红外线遥控智能密码锁[J]. 电子技术(上海), 2005, 32(10):45 -49. [5] 钱显毅. 传感器原理与应用[M]. 南京:东南大学出版社,2008. [6] 陈华龙. 基于 USB 接口的多路温湿度采集系统设计[J]. 硅谷, 2010,(11): 83 -83. [7] Nikolay Kakanakov. Measurement Of Temperature And Humidity Using

SHT11/71 Intelligent Sensor[R]. Technical University – branch Plovdiv, 2005. [8] 焦斌亮. 仓库温湿度监测与 nRF905 无线传输系统的设计[J]. 传感器与微 系统, 2011,30(5):101 -103.

[9] V. Yu. Teplov,A. Thermostatting System Using a Single-Chip Microcomputer and Thermoelectric Modules Based on the Peltier Effec[J]. IEEE , 2002. [10] 皮大能. LCD 显示器与 PIC16F877 单片机连接[J]. 微计算机信息, 2004,

20(10):94 -95. [11] Gene Bogdanov. Microcontroller Theory and Systems [M]. Publishing House of Electronics Industry,2003. [12] Chandra M.Kudsia. Application VIS LCD1602 Module [J]. Electrical Technology, 2009,32(3):21 -23. [13] 谭浩强. C 程序设计[M]. 北京:清华大学出版社,2005.

[14] David M. Principles and Applications of Temperature and Humidity Sensors SHT10[J]. Microcontroller and Embedded Systems, 2009,(4):52 -54. [15] 赵伟军. Protel99SE 原理图与 PCB 仿真[M]. 北京: 机械工业出版社, 2005.

- 33 -

重庆邮电大学本科毕业设计(论文)


一、英文原文:



Structure and function of the MCS-51 series
Structure and function of the MCS-51 series one-chip computer MCS-51 is a name of a piece of one-chip computer series which Intel Company produces. This company introduced 8 top-grade one-chip computers of MCS-51 series in 1980 after introducing 8 one-chip computers of MCS-48 series in 1976. It belong to a lot of kinds this line of one-chip computer the chips have such as 8051, 8031, 8751, 80C51BH, 80C31BH, etc., their basic composition, basic performance and instruction system are all the same. 8051 daily representatives-51 serial one-chip computers . An one-chip computer system is made up of several following parts: ( 1) One microprocessor of 8 (CPU). ( 2) At slice data memory RAM (128B/256B),it use not depositing not can reading /data that write, such as result not middle of operation, final result and data wanted to show, etc. ( 3) Procedure memory ROM/EPROM (4KB/8KB ), is used to preserve the procedure , some initial data and form in slice. But does not take ROM/EPROM within some one-chip computers, such as 8031 , 8032, 80C ,etc.. ( 4) Four 8 run side by side I/O interface P0 four P3, each mouth can use as introduction , may use as exporting too. ( 5) Two timer / counter, each timer / counter may set up and count in the way, used to count to the external incident, can set up into a timing way too, and can according to count or result of timing realize the control of the computer. ( 6) Five cut off cutting off the control system of the source . ( 7) One all duplexing serial I/O mouth of UART (universal asynchronous receiver/transmitter (UART) ), is it realize one-chip computer or one-chip computer and serial communication of computer to use for. ( 8) Stretch oscillator and clock produce circuit, quartz crystal finely tune electric capacity need outer. Allow oscillation frequency as 12 megahertas now at most. Every the above-mentioned part was joined through the inside data bus .Among them, CPU is

- 34 -

重庆邮电大学本科毕业设计(论文)

a core of the one-chip computer, it is the control of the computer and command centre, made up of such parts as arithmetic unit and controller , etc.. The arithmetic unit can carry on 8 persons of arithmetic operation and unit ALU of logic operation while including one, the 1 storing device temporalities of 8, storing device 2 temporarily, 8's accumulation device ACC, register B and procedure state register PSW, etc. Person who accumulate ACC count by 2 input ends entered of checking etc. temporarily as one operation often, come from person who store 1 operation is it is it make operation to go on to count temporarily , operation result and loopback ACC with another one. In addition, ACC is often regarded as the transfer station of data transmission on 8051 inside. The same as general microprocessor, it is the busiest register. Help remembering that agreeing with A expresses in the order. The controller includes the procedure counter, the order is depositted, the order deciphers the oscillator and timing circuit, etc. The procedure counter is made up of counter of 8 for two, amounts to 16. It is a byte address counter of the procedure in fact, the content is the next IA that will carried out in PC. The content which changes it can change the direction that the procedure carries out. Shake the circuit in 8051 one-chip computers, only need outer quartz crystal and frequency to finely tune the electric capacity, its frequency range is its 12MHZ of 1.2MHZ. This pulse signal, as 8051 basic beats of working, namely the minimum unit of time. 8051 is the same as other computers, the work in harmony under the control of the basic beat, just like an orchestra according to the beat play that is commanded. There are ROM (procedure memory , can only read ) and RAM in 8051 slices (data memory, can is it can write ) two to read, they have each independent memory address space, dispose way to be the same with general memory of computer. Procedure 8051 memory and 8751 slice procedure memory capacity 4KB, address begin from 0000H, used for preserving the procedure and form constant. Data 8051- 8751 8031 of memory data memory 128B, address false 00FH, use for middle result to deposit operation, the data are stored temporarily and the data are buffered etc.. In RAM of this 128B, there is unit of 32 bytes that can be appointed as the job register, this and general microprocessor is different, 8051 slice RAM and job register rank one formation the same to arrange the location. It is not very the same that the memory of MCS-51 series one-chip computer and general computer disposes the way in addition. General computer for first address space, ROM and

- 35 -

重庆邮电大学本科毕业设计(论文)

RAM can arrange in different space within the range of this address at will, namely the addresses of ROM and RAM, with distributing different address space in a formation. While visiting the memory, corresponding and only an address Memory unit, can ROM, it can be RAM too, and by visiting the order similarly. This kind of memory structure is called the structure of Princeton. 8051 memories are divided into procedure memory space and data memory space on the physics structure, there are four memory spaces in all: The procedure stores in one and data memory space outside data memory and one in procedure memory space and one outside one, the structure forms of this kind of procedure device and data memory separated from data memory, called Harvard structure. But use the angle from users, 8051 memory address space is divided into three kinds: (1) in the slice, arranges blocks of FFFFH, 0000H of location, in unison outside the slice (use 16 addresses). (2) The data memory address space outside one of 64KB, the address is arranged from 0000H 64KB FFFFH (with 16 addresses) took to the location. (3) Data memory address space of 256B (use 8 addresses). Three above-mentioned memory space addresses overlap, for distinguishing and designing the order symbol of different data transmission in the instruction system of 8051: CPU visit slice, ROM order spend MOVC , visit block RAM order uses MOVX outside the slice, RAM order uses MOV to visit in slice. 8051 one-chip computer have four 8 walk abreast I/O port; call P0, P1, P2 and P3. Each port is 8 accurate two-way mouths, accounts for 32 pins altogether. Every one I/O line can be used as introduction and exported independently. Each port includes a latch (namely special function register), one exports the driver and a introduction buffer. Make data can latch when outputting, data can buffer when making introduction, but four function of pass way these self-same. Expand among the system of memory outside having slice, four ports these may serve as accurate two-way mouth of I/O in common use. Expand among the system of memory outside having slice, P2 mouth see high 8 address off; P0 mouth is a two-way bus, send the introduction of 8 low addresses and data / export in timesharing Output grade, P3 of mouth , P1 of P1 , connect with inside have load resistance of drawing , every one of they can drive 4 Model LS TTL load to output. As while inputting the mouth, any TTL or NMOS circuit can drive P1 of 8051 one-chip computers as P3 mouth in a normal way. Because draw resistance on output grade

- 36 -

重庆邮电大学本科毕业设计(论文)

of them have, can open a way collector too or drain-source resistance is it urge to open a way, do not need to have the resistance of drawing outerly. Mouths are all accurate two-way mouths too. When the conduct is input, must write the corresponding port latch with 1 first. As to 80C51 one-chip computer, port can only offer milliampere of output electric currents, is it output mouth go when urging one ordinary basing of transistor to regard as, should contact a resistance among the port and transistor base, in order to the electricity while restraining the high level from exporting P1~P3 Being restored to the throne is the operation of initializing of an one-chip computer. Its main function is to turn PC into 0000H initially, make the one-chip computer begin to hold the conduct procedure from unit 0000H. Except that the ones that enter the system are initialized normally, as because procedure operate it make mistakes or operate there aren't mistake, in order to extricate oneself from a predicament , need to be pressed and restored to the throne the key restarting too. It is an input end which is restored to the throne the signal in 8051 China RST pin. Restore to the throne signal high level effective, should sustain 24 shake cycle (namely 2 machine cycles ) the above its effective times. If 6 of frequency of utilization brilliant to shake, restore to the throne signal duration should exceed 4 delicate to finish restoring to the throne and operating. Produce the logic picture of circuit which is restored to the throne the signal: Restore to the throne the circuit and include two parts outside in the chip entirely. Outside that circuit produce to restore to the throne signal (RST) hand over to Schmitt's trigger, restore to the throne circuit sample to output, Schmitt of trigger constantly in each S5P2 , machine of cycle in having one more , then just got and restored to the throne and operated the necessary signal insidly. Restore to the throne resistance of circuit generally, electric capacity parameter suitable for 6 brilliant to shake, can is it restore to the throne signal high level duration greater than 2 machine cycles to guarantee. Being restored to the throne in the circuit is simple, its function is very important. Pieces of one-chip computer system could normal running, should first check it can restore to the throne not succeeding. Checking and can pop one's head and monitor the pin with the oscillograph tentatively, push and is restored to the throne the key, the wave form that observes and has enough range is exported (instantaneous), can also through is it restore to the throne circuit group holding value carry on the experiment to change.

- 37 -

重庆邮电大学本科毕业设计(论文)

Description The AT89C51 is a low-power, high-performance CMOS 8-bit microcomputer with 4K bytes of Flash Programmable and Erasable Read Only Memory (PEROM) and 128 bytes RAM. The device is manufactured using Atmel’s high density nonvolatile memory technology and is compatible with the industry standard MCS-51? instruction set and pin out. The chip combines a versatile 8-bit CPU with Flash on a monolithic chip; the Atmel AT89C51 is a powerful microcomputer which provides a highly flexible and cost effective solution to many embedded control applications. Features: ? Compatible with MCS-51? Products ? 4K Bytes of In-System Reprogrammable Flash Memory ? Endurance: 1,000 Write/Erase Cycles ? Fully Static Operation: 0 Hz to 24 MHz ? Three-Level Program Memory Lock ? 128 x 8-Bit Internal RAM ? 32 Programmable I/O Lines ? Two 16-Bit Timer/Counters ? Six Interrupt Sources ? Programmable Serial Channel ? Low Power Idle and Power Down Modes The AT89C51 provides the following standard features: 4K bytes of Flash, 128 bytes of RAM, 32 I/O lines, two 16-bit timer/counters, a five vector two-level interrupt architecture, a full duplex serial port, on-chip oscillator and clock circuitry. In addition, the AT89C51 is designed with static logic for operation down to zero frequency and supports two software selectable power saving modes. The Idle Mode stops the CPU while allowing the RAM, timer/counters, serial port and interrupt system to continue functioning. The Power Down Mode saves the RAM contents but freezes the oscillator disabling all other chip functions until the next hardware reset. Pin Description: VCC Supply voltage. GND Ground.

- 38 -

重庆邮电大学本科毕业设计(论文)

Port 0 Port 0 is an 8-bit open drain bidirectional I/O port. As an output port each pin can sink eight TTL inputs. When are written to port 0 pins, the pins can be used as high impedance inputs. Port 0 may also be configured to be the multiplexed loworder address/data bus during accesses to external program and data memory. In this mode P0 has internal pullups. Port 0 also receives the code bytes during Flash programming, and outputs the code bytes during program verification. External pullups are required during program verification. Port 1 Port 1 is an 8-bit bidirectional I/O port with internal pullups. The Port 1 output buffers can sink/source four TTL inputs. When 1s are written to Port 1 pins they are pulled high by the internal pullups and can be used as inputs. As inputs, Port 1 pins that are externally being pulled low will source current (IIL) because of the internal pullups. Port 1 also receives the low-order address bytes during Flash programming and verification. Port 2 Port 2 is an 8-bit bidirectional I/O port with internal pullups. The Port 2 output buffers can sink/source four TTL inputs. When 1s are written to Port 2 pins they are pulled high by the internal pullups and can be used as inputs. As inputs, Port 2 pins that are externally being pulled low will source current (IIL) because of the internal pullups. Port 2 emits the high-order address byte during fetches from external program memory and during accesses to external data memory that uses 16-bit addresses (MOVX @ DPTR). In this application it uses strong internal pull-ups when emitting 1s. During accesses to external data memory that uses 8-bit addresses (MOVX @ RI), Port 2 emits the contents of the P2 Special Function Register. Port 2 also receives the high-order address bits and some control signals during Flash programming and verification. Port 3 Port 3 is an 8-bit bidirectional I/O port with internal pullups. The Port 3 output

- 39 -

重庆邮电大学本科毕业设计(论文)

buffers can sink/source four TTL inputs. When 1s are written to Port 3 pins they are pulled high by the internal pullups and can be used as inputs. As inputs, Port 3 pins that are externally being pulled low will source current (IIL) because of the pullups. Port 3 also serves the functions of various special features of the AT89C51 as listed below: Port 3 also receives some control signals for Flash programming and verification. RST Reset input. A high on this pin for two machine cycles while the oscillator is running resets the device. ALE/PROG Address Latch Enable output pulse for latching the low byte of the address during accesses to external memory. This pin is also the program pulse input (PROG) during Flash programming. In normal operation ALE is emitted at a constant rate of 1/6 the oscillator frequency, and may be used for external timing or clocking purposes. Note, however, that one ALE pulse is skipped during each access to external Data Memory. If desired, ALE operation can be disabled by setting bit 0 of SFR location 8EH. With the bit set, ALE is active only during a MOVX or MOVC instruction. Otherwise, the pin is weakly pulled high. Setting the ALE-disable bit has no effect if the microcontroller is in external execution mode. PSEN Program Store Enable is the read strobe to external program memory. When the AT89C51 is executing code from external program memory, PSEN is activated twice each machine cycle, except that two PSEN activations are skipped during each access to external data memory. EA/VPP External Access Enable. EA must be strapped to GND in order to enable the device to fetch code from external program memory locations starting at 0000H up to FFFFH. Note, however, that if lock bit 1 is programmed, EA will be internally latched on reset. EA should be strapped to VCC for internal program executions.

- 40 -

重庆邮电大学本科毕业设计(论文)

This pin also receives the 12-volt programming enable voltage(VPP) during Flash programming, for parts that require 12-volt VPP. XTAL1 Input to the inverting oscillator amplifier and input to the internal clock operating circuit. XTAL2 Output from the inverting oscillator amplifier. Oscillator Characteristics XTAL1 and XTAL2 are the input and output, respectively, of an inverting amplifier which can be configured for use as an on-chip oscillator, as shown in Figure 1. Either a quartz crystal or ceramic resonator may be used. To drive the device from an external clock source, XTAL2 should be left unconnected while XTAL1 is driven as shown in Figure 2. There are no requirements on the duty cycle of the external clock signal, since the input to the internal clocking circuitry is through a divide-by-two flip-flop, but minimum and maximum voltage high and low time specifications must be observed. Idle Mode In idle mode, the CPU puts itself to sleep while all the on chip peripherals remain active. The mode is invoked by software. The content of the on-chip RAM and all the special functions registers remain unchanged during this mode. The idle mode can be terminated by any enabled interrupt or by a hardware reset. It should be noted that when idle is terminated by a hard ware reset, the device normally resumes program execution, from where it left off, up to two machine cycles before the internal reset algorithm takes control. On-chip hardware inhibits access to internal RAM in this event, but access to the port pins is not inhibited. To eliminate the possibility of an unexpected write to a port pin when Idle is terminated by reset, the instruction following the one that invokes Idle should not be one that writes to a port pin or to external memory. Power Down Mode In the power down mode the oscillator is stopped, and the instruction that invokes power down is the last instruction executed. The on-chip RAM and Special Function Registers retain their values until the power down mode is terminated. The only exit from power down is a hardware reset. Reset redefines the SFRs but does

- 41 -

重庆邮电大学本科毕业设计(论文)

not change the on-chip RAM. The reset should not be activated before VCC is restored to its normal operating level and must be held active long enough to allow the oscillator to restart and stabilize. Program Memory Lock Bits On the chip are three lock bits which can be left unprogrammed (U) or can be programmed (P) to obtain the additional features listed in the table below: When lock bit 1 is programmed, the logic level at the EA pin is sampled and latched during reset. If the device is powered up without a reset, the latch initializes to a random value, and holds that value until reset is activated. It is necessary that the latched value of EA be in agreement with the current logic level at that pin in order for the device to function properly. Programming the Flash: The AT89C51 is normally shipped with the on-chip Flash memory array in the erased state (that is, contents = FFH) and ready to be programmed. The programming interface accepts either a high-voltage (12-volt) or a low-voltage (VCC) program enable signal. The low voltage programming mode provides a convenient way to program the AT89C51 inside the user’s system, while the high-voltage programming mode is compatible with conventional third party Flash or EPROM programmers. The AT89C51 is shipped with either the high-voltage or low-voltage programming mode enabled. The respective top-side marking and device signature codes are listed in the following table. The AT89C51 code memory array is programmed byte-by byte in either programming mode. To program any nonblank byte in the on-chip Flash Programmable and Erasable Read Only Memory, the entire memory must be erased using the Chip Erase Mode. Programming Algorithm: Before programming the AT89C51, the address, data and control signals should be set up according to the Flash programming mode table and Figures 3 and 4. To program the AT89C51, take the following steps. 1. Input the desired memory location on the address lines. 2. Input the appropriate data byte on the data lines. 3. Activate the correct combination of control signals.

- 42 -

重庆邮电大学本科毕业设计(论文)

4. Raise EA/VPP to 12V for the high-voltage programming mode. 5. Pulse ALE/PROG once to program a byte in the Flash array or the lock bits. The byte-write cycle is self-timed and typically takes no more than 1.5 ms. Repeat steps 1 through 5, changing the address and data for the entire array or until the end of the object file is reached. Data Polling: The AT89C51 features Data Polling to indicate the end of a write cycle. During a write cycle, an attempted read of the last byte written will result in the complement of the written datum on PO.7. Once the write cycle has been completed, true data are valid on all outputs, and the next cycle may begin. Data Polling may begin any time after a write cycle has been initiated. Ready/Busy: The progress of byte programming can also be monitored by the RDY/BSY output signal. P3.4 is pulled low after ALE goes high during programming to indicate BUSY. P3.4 is pulled high again when programming is done to indicate READY. Program Verify: If lock bits LB1 and LB2 have not been programmed, the programmed code data can be read back via the address and data lines for verification. The lock bits cannot be verified directly. Verification of the lock bits is achieved by observing that their features are enabled. Chip Erase: The entire Flash Programmable and Erasable Read Only Memory array is erased electrically by using the proper combination of control signals and by holding ALE/PROG low for 10 ms. The code array is written with all “1”s. The chip erase operation must be executed before the code memory can be re-programmed. Reading the Signature Bytes: The signature bytes are read by the same procedure as a normal verification of locations 030H, 031H, and 032H, except that P3.6 and P3.7 must be pulled to a logic low. The values returned are as follows. (030H) = 1EH indicates manufactured by Atmel (031H) = 51H indicates 89C51 (032H) = FFH indicates 12V programming (032H) = 05H indicates 5V programming Programming Interface Every code byte in the Flash array can be written and the entire array can be erased by using the appropriate combination of control signals. The write operation cycle

- 43 -

重庆邮电大学本科毕业设计(论文)

is selftimed and once initiated, will automatically time itself to completion. Program Memory Lock Bits On the chip are three lock bits which can be left unprogrammed (U) or can be programmed (P) to obtain the additional features listed in the table below: Power Down Mode In the power down mode the oscillator is stopped, and the instruction that invokes power down is the last instruction executed. The on-chip RAM and Special Function Registers retain their values until the power down mode is terminated. The only exit from power down is a hardware reset. Reset redefines the SFRs but does not change the on-chip RAM. The reset should not be activated before VCC is restored to its normal operating level and must be held active long enough to allow the oscillator to restart and stabilize. Absolute Maximum Ratings Operating Temperature.................................. -55° C to +125° C Storage Temperature ..................................... -65° C to +150° C Voltage on Any Pin with Respect to Ground .....................................-1.0V to +7.0V Maximum Operating Voltage............................................. 6.6V DC Output Current...................................................... 15.0 mA DC Characteristics TA = otherwise noted)

- 44 -

重庆邮电大学本科毕业设计(论文)

二、英文翻译: 51 系列单片机的功能和结构
51 系列单片机是 Intel 公司设计的单片机产品。这家公司于 1976 年推出 8 位 MCS-48 系列之后又在 1980 年推出了 MCS-51 系列单片机。 它属于这一类型 很多行一个芯片的电脑芯片都如 8051、8031、8751、80c51bh,80c31bh 等,其 基本组成、性能和基本教学制度,都是一样的。8051 通常是 51 系列的代表。 每个单片机系统是由以下几个方面构成: (1)18 微处理器(CPU);(2)片中 内数据存储器 RAM(128B/256B)中如果结果不在操作过程中,结果也要显示出来 (3)存储器存储程序/可擦写可编程只读存储器(4KB/8KB),用于保存程序和数 据,初步形成片; 但并不存储器/可擦写可编程只读存储器在一些人的电脑芯片, 如 8031、8032、80c 等;(4)四个 8 路运行的 I/O 口,p0,p1,p2,p3,每个口既 可用作输入也可用作出口; (5)两个定时/计数器,每个计时器/计数器可设立 不同计数方式,用来计数外部事件,可以设置定时方式也可以和根据计算结果 或定时控制实现控制计算;(6)五个中断控制系统;(7)一个全双工串行 UART (异步接收世界/发送(UART)),它是实现一个计算机芯片和一个计算机芯片之 间通讯的一种串口;(8)振荡器和时钟产生电路,需要考虑石英晶体微调能力, 允许震荡平率位 12MHZ,上述每个部分都是通过片内数据总线连接。其中 CPU 是计算机芯片的核心,他是计算机的指挥中心,由算数单元和控制单元组成算 术单元可进行 8 位算术运算和逻辑运算,ALU 单元是一种运算器,18 个存储设 备,暂存设备进行存储协调,PSW 积累了两个输入端等检查时作为一个操作由 人来操纵存储,另有一个操纵的结果回环协调。此外,协调往往是作为对 8051 的数据传输运转站考虑。作为一般的微处理器,他是最繁忙的。振荡器和定时 器是由 2 个 8 位计数器组成,总位数为 16 位。这是一个字节的地址,其实是 程序计数器,将在个人电脑内部有运行,从而改变程序的运行顺序。在 8051 的电路中,只需增加外部石英晶体和频率微调电容,这就保证计算机各部件的 工作就像管弦乐队和谐工作。 在 8051 中有 ROM(程序存储器, 只能读取)和 RAM(数据存储器, 可读可写), 他们有各自独立的内存地址空间,也有相同的处理方式。8051 和 8751 的程序 存储器的存储容量为 4KB,地址从 0000H 开始,在使用过程中其中数据不变。

- 45 -

重庆邮电大学本科毕业设计(论文)

8051,8751,8031 数据存储器的内存为 128B, 默认地址是 00FH,用于保存中间数 据和缓存。在这 128B 的内存中,有 32byteses,被称作工作寄存器,和常用的 微处理器不同的是,8051 的 RAM 是按功能来划分模块的。MCS – 51 系列单片 机和和一般电脑的处理方式不同。一般电脑会自动分配地址空间,ROM 和 RAM 的计算机可以安排在不同的空间内, 地址范围会根据 ROM 和 RAM 的位置分配不 同的地址空间。在访问的内存,不管是 ROM 和 RAM,只有一个地址对应一个内 存单元,都要按这个顺序访问。这种内存结构是所谓的普林斯顿结构。8051 的存储结构按物理结构划分可分为程序存储空间和数据存储空间, 共有四个内 存空间,按结构位置的不同分为内部程序存储空间,外部程序存储空间,内部 数据存储空间,外部数据存储空间。但从用户的使用角度来看,8051 存储器地 址空间可分为三类:(1)片内,安排 FFFFH 的块,片外的(使用 16 个地址) 串口 0000H 地址。 (2) 外部数据存储器地址空间为 64KB, 地址从 0000H 到 FFFFH (含 16 个地址)的位置排列。(3)256B 的数据存储器(使用 8 个地址)的地 址空间。上述三个重叠的内存空间地址,用 8051 指令系统的传输不同的数据 和使用的功能区分。CPU访问内存时,访ROM使用MOVEC语句,访问 RAM块顺序使用片外操作的MOVX语句,访问内存片段使用MOV语句。 8051 单片机有四个 8 并行的 I/O 端口,分别为 p0,p1,p2 和 p3.每个端口 是 8 位精确的双向口,共占 32 针。每个 I/O 线可作为独立的入口和出口。每 个端口包括一个锁存器, 一个出口驱动器和引进缓冲器, 是数据能够锁存输出, 数据可以及时缓冲, 其余四个具有相同的功能。 接外部存储扩大他们的内存时, 这四个口就可作为双向口常用的 I/O 口,这时 P2 口看到高 8 位地址,p0 口是 一个公共两用口,传送输出低 8 的地址和数据。P3 口输出级别小于 p1 口,可 以在里面绘制负载电阻,每一个能驱动 4 个 LS 型 TTL 负载输出。作为输入口 时,所有的 TTL 或 NMOS 电路都可以驱动一个正常的方式。P3 口作为单片机的 P1 口。可以利用改变电阻的输出大小,直接的充当震荡开路,不需要添加外部 电阻。其中每个口都是标准的双向口。在当做输入口时,必须把相应的端口置 1 来锁闭输出。比如 8051 单片机,所有端口提供的输出电流只能几毫安,用作 输出口时接一个普通的晶体管,要稳定使用,还要接一定电阻。其主要功能是 把初始地址设为 0000H,使单片机从 0000H 的地址开始运行程序。除了正常进 入系统的初始化,由于操作失误或者操作过程错误,也要能够解决错误,重新 运行。在 8051 中 RST 引脚是一个输入复位键,复位键高电平信号有效,要保 证 24 倍以上的时钟周期(即 2 个时钟周期)。如果收到高频的 6v 输入信号, 单片机就会复位。

- 46 -

重庆邮电大学本科毕业设计(论文)

初始化时,需要两部分外部电路。外部电路采用施密特触发方式触发了复 位键(RST),形成了复位信号输出电路,并把信号传送到每个引脚,按顺序 到了复位引脚,就会迅速响应信号指令。复位功能的可靠性,适合 6v 电压的 电容震荡电路,复位信号的周期可以大于两个机器周期。虽然复位电路的结构 简单,但他的功能是非常重要的。一个单片机系统是否正常运行,应先检查他 有没有正确的复位电路。检查和检测启发出的信号,用示波器显示时,结合复 位电路,观察波形时,输出口(瞬时)的波动范围很大的,也可以通过复位电 路对其进行必要的改变。 描述: AT89C51 是美国 ATMEL 公司生产的低电压、高性能 CMOS8 位单片机,片内 含 4Kbytes 的快速可擦写的只读程序存储器(PEROM)和 128 bytes 的随机存 取数据存储器 (RAM) , 器件采用 ATMEL 公司的高密度、 非易失性存储技术生产, 兼容标准 MCS-51 产品指令系统,片内置通用 8 位中央处理器(CPU)和 flash 存储单元,功能强大 AT89C51 单片机可为您提供许多高性价比的应用场合,可 灵活应用于各种控制领域。 主要性能参数: 与 MCS-51 产品指令系统完全兼容 4K 字节可重复写 flash 闪速存储器 1000 次擦写周期 全静态操作:0HZ-24MHZ 三级加密程序存储器 128*8 字节内部 RAM 32 个可编程 I/O 口 2 个 16 位定时/计数器 6 个中断源 可编程串行 UART 通道 低功耗空闲和掉电模式 功能特性概述 AT89C51 提供以下标准功能: 4K 字节 flash 闪速存储器, 128 字节内部 RAM, 32 个 I/O 口线,两个 16 位定时/计数器,一个 5 向量两级中断结构,一个全 双工串行通信口,片内振荡器及时钟电路。同时,AT89C51 可降至 0HZ 的静态 逻辑操作,并支持两种软件可选的节电工作模式。空闲方式停止 CPU 的工作, 但允许 RAM,定时/计数器,串行通信口及中断系统继续工作。掉电方式保存

- 47 -

重庆邮电大学本科毕业设计(论文)

RAM 中的内容,但振荡器停止工作并禁止其它所有部件工作直到下一个硬件复 位。 引脚功能说明 VCC:电源电压 GND:地 P0 口:P0 口是一组 8 位漏极开路型双向 I/O 口,也即地址/数据总线复位 口。作为输出口用时,每位能吸收电流的方式驱动 8 个逻辑门电路,对端口写 “1”可 作为高阻抗输入端用。 在访问外部数据存储器或程序存储器时, 这组口线分时转换地址 (低 8 位) 和数据总线复用,在访问期间激活内部上拉电阻。 P1 口:P1 是一个带内部上拉电阻的 8 位双向 I/O 口,P1 的输出缓冲级可 驱动(吸收或输出电流)4 个 TTL 逻辑门电路。对端口写“1” ,通过内部的上 拉电阻把端口拉到高电平,此时可做熟出口。做输出口使用时,因为内部存在 上拉电阻,某个引脚被外部信号拉低时会输出一个电流。 Flash 编程和程序校验期间,P1 接受低 8 位地址。 P2 口:P2 是一个带有内部上拉电阻的 8 位双向 I/O 口,P2 的输出缓冲级 可驱动(吸收或输出电流)4 个 TTL 逻辑门电路。对端口写“1” ,通过内部上 拉电阻把端口拉到高电平,此时可作为输出口,作输出口使用时,因为内部存 在上拉电阻,某个引脚被外部信号拉低时会输出一个电流。 在访问外部程序存储器获 16 位地址的外部数据存储器(例如执行 MOVX @DPTR 指令)时,P2 口送出高 8 位地址数据。在访问 8 位地址的外部数据存储 器 (如执行 MOVX @RI 指令) 时,P2 口线上的内容(也即特殊功能寄存器(SFR) 区中 R2 寄存器的内容) ,在整个访问期间不改变。 Flash 编程或校验时,P2 亦接受高地址和其它控制信号。 P3 口:P3 口是一组带有内部上拉电阻的 8 位双向 I/O 口。P3 口输出缓冲 级可驱动(吸收或输出电流)4 个 TTL 逻辑门电路。对 P3 口写入“1”时,他 们被内部上拉电阻拉高并可作为输出口。做输出端时,被外部拉低的 P3 口将 用上拉电阻输出电流。 P3 口除了作为一般的 I/O 口线外, 更重要的用途是它的 第二功能。 P3 口还接收一些用于 flash 闪速存储器编程和程序校验的控制信号。 RST:复位输入。当振荡器工作时,RST 引脚出现两个机器周期以上高电平 将使单片机复位。 ALE/PROG:当访问外部程序存储器或数据存储器时,ALE(地址所存允许)

- 48 -

重庆邮电大学本科毕业设计(论文)

输出脉冲用于所存地址的低 8 位字节。即使不访问外部存储器,ALE 仍以时钟 振荡频率的 1/6 输出固定的正脉冲信号, 因此它可对外输出时钟或用于定时目 的。要注意的是:每当访问外部数据存储器时将跳过一个 ALE 脉冲。 对 flash 存储器编程期间,该引脚还用于输入编程脉冲(^PROG) 。 如有不要, 可通过对特殊功能寄存器 (SFR) 区中的 8EH 单元的 D0 位置位, 可禁止 ALE 操作。 置位后, 只有一条 MOVX 和 MOVC 指令 ALE 才会被激活。 此外, 该引脚会被微弱拉高,单片机执行外部程序时,应设置 ALE 无效。 ^PSEN:程序存储允许(^PSEN)输出是外部程序存储器的读选通信号,当 AT89C51 由外部程序存储器取指令(或数据)时,每个机器周期两个^PSEN 有 效,即输出两个脉冲。在此期间,当访问外部数据存储器,这两次有效的^PSEN 信号不出现。 EA/VPP: 外 部 访 问 允 许 。 欲 使 CPU 仅 访 问 外 部 程 序 存 储 器 ( 地 址 为 0000H---FFFFH) , EA 端必须保持低电平 (接地) 。 需注意的是; 如果加密位 LB1 被编程,复位时内部会锁存 EA 端状态。 如 EA 端为高电平(接 VCC 端) ,CPU 则执行内部程序存储器中的指令。 Flash 存储器编程时,该引脚加上+12V 的编程允许电源 VPP,当然这必须 是该器件是使用 12V 编程电压 VPP. XTAL1: 振荡器反相放大器的及内部时钟发生器的输出端。 XTAL2: 振荡器反相放大器的输出端。 时钟振荡器: AT89C51 中有一个用于构成内部振荡器的高增益反相放大器,引脚 XTAL1 和 XTAL2 分别是该放大器的输入端和输出端。 这个放大器与作为反馈的片外石 英晶体或陶瓷谐振器一起构成自激振荡器。 外接石英晶体(或陶瓷谐振器)及电容 C1、C2 接在放大器的反馈回路中 构成并联振荡电路。对外接电容 C1、C2 虽然没有十分严格的要求,但电容容 量的大小会轻微影响振荡频率的高低、振荡器的稳定性、起振的难易程度及温 度稳定性,如果使用石英晶体,我们推荐电容使用 30PF+10PF,而如使用陶瓷 谐振器建议选择 40PF+10PF。 用户也可以采用外部时钟。这种情况下,外部时钟脉冲接到 XTAL1 端,即 内部时钟发生器的输入端,XTAL2 则悬空 由于外部时钟信号是通过一个 2 分频触发器后作为内部时钟信号的,所以 对外部时钟信号的占空比没有特殊要求, 但最小高电平持续时间和最大的低电 平持续时间应符合产品技术要求。

- 49 -

重庆邮电大学本科毕业设计(论文)

空闲模式 在空闲工作模式状态,CPU 保持睡眠状态而所有片内的外设仍保持激活状 态,这种方式由软件产生。此时,片内 RAM 和所有特殊功能寄存器的内容保持 不变。空闲模式可由任何允许的中断请求或硬件复位终止。 终止空闲工作模式的方法有两种, 其一是任何一条被允许中断的事件被激 活,即可终止空闲工作模式。程序会首先响应中断,进入中断服务程序,执行 完中断服务程序并仅随终端返回指令, 下一条要执行的指令就是使单片机进入 空闲模式那条指令后面的一条指令。 其二是通过硬件复位也可将空闲工作模式 终止,需要注意的是,当由硬件复位来终止空闲模式时,CPU 通常是从激活空 闲模式那条指令的下一条指令开始继续执行程序的,要完成内部复位操作,硬 件复位脉冲要保持两个机器周期(24 个时钟周期)有效,在这种情况下,内部 禁止 CPU 访问片内 RAM,而允许访问其它端口。为了避免可能对端口产生以外 写入, 激活空闲模式的那条指令后一条指令不应该是一条对端口或外部存储器 的写入指令。 掉电模式 在掉电模式下,震荡器停止工作,进入掉电模式的指令是最后一条被执行 的指令,片内 RAM 和特殊功能寄存器的内容在终止掉电模式前被冻结。退出掉 电模式的唯一方法是硬件复位, 复位后将重新定义全部特殊功能寄存器但不改 变 RAM 中的内容,在 VCC 恢复到正常工作电平前,复位应无效,且必须保持一 定时间以使振荡器重启动并稳定工作。 程序存储器的加密 : AT89C51 可使用对芯片上的 3 个加密位进行编程(P)或不编程(U)来得 到如下表所示的功能: 当加密位 LB1 被编程时,在复位期间,EA 端的逻辑电平被采样并锁存,如 果单片机上电后一直没有复位,则锁存起的初始值是一个随机数,且这个随机 数会一直保持到真正复位为止。为使单片机能正常工作,被锁存的 EA 电平值 必须与该引脚当前的逻辑电平一致。此外,加密位只能通过整片擦除的方法清 除。 FLASH 闪速存储器的编程: AT89C51 单片机内部有 4K 字节的 FLASH PEROM,这个 FLASH 存储阵列出厂 时已处于擦除状态 (即所有存储单元的内容均为 FFH) , 用户随时可对其进行编 程。编程接口可接收高电平(+12V)或低电平(VCC)的允许编程信号,低电 平编程模式适合于用户再线编程系统, 而高电平编程模式可与通用 EPROM 编程

- 50 -

重庆邮电大学本科毕业设计(论文)

器兼容。 AT89C51 单片机中,有些属于低电压编程方式,而有些则是高电平编程方 式,用户可从芯片上的型号和读取芯片内的签名字节获得该信息。 AT89C51 的程序存储器阵列是采用字节写入方式编程的,每次写入一个字 节,要对整个芯片内的 PEROM 程序存储器写入一个非空字节,必须使用片擦除 的方式将整个存储器的内容清除。 编程方法: 编程前,设置好地址,数据及控制信号, AT89C51 编程方法如下: 1. 在地址线上加上要编程单元的地址信号。 2. 在数据线上加上要写入的数据字节。 3. 激活相应的控制信号。 4. 在高电压编程方式时,将^EA/VPP 端加上+12V 编程电压。 5. 每对 FLASH 存储阵列写入一个字节或每写入一个程序加密位, 加上一个 ALE/^PROG 编程脉冲,改变编程单元的地址和写入的数据, 重复 1—5 步骤,直到全部文件编程结束。每个字节写入周期是自身 定时地,通常约为 1.5ms。 数据查询: AT89C51 单片机用数据查询方式来检测一个写周期是否结束,在一个写周 期中,如需要读取最后写入的那个字节,则读出的数据的最高位(P0.7)是原 来写入字节最高位的反码。写周期完成后,有效的数据就会出现在所有输出端 上,此时,可进入下一个字节的写周期,写周期开始后,可在任意时刻进行数 据查询。 READY/^BUSY: 字节编程的进度可通过“RDY/^BSY”输出信号监测,编程期间,ALE 变为 高电平“H”后 P3.4(RDY/^BSY)端电平被拉低,表示正在编程状态(忙状态) 。 编程完成后,P3.4 变为高电平表示准备就绪状态。 程序校验: 如果加密位 LB1、LB2 没有进行编程,则代码数据可通过地址和数据线读 回原编写的数据。加密位不可能直接变化。证实加密位的完成通过观察它们的 特点和能力。 芯片擦除: 利用控制信号的正确组合 (表 1) 并保持 ALE/^PROG 引脚 10ms 的低电平脉 冲宽度即可将 PEROM 阵列(4k 字节)整片擦除,代码阵列在擦除操作中将任何

- 51 -

重庆邮电大学本科毕业设计(论文)

非空单元写入“1” ,这步骤需要再编程之前进行。 读片内签名字节: AT89C51 单片机内有 3 个签名字节,地址为 030H、031H 和 032H。用于声 明该器件的厂商、型号和编程电压。读签名字节的过程和单元 030H、031H 和 032H 的正常校验相仿,只需将 P3.6 和 P3.7 保持低电平,返回值意义如下: (030H)=1EH 声明产品由 ATMEL 公司制造。 (031H)=51H 声明为 AT89C51 单片机。 (032H)=FFH 声明为 12V 编程电压。 (032H)=05H 声明为 5V 编程电压。 编程接口: 采用控制信号的正确组合可对 FLASH 闪速存储阵列中的每一代码字节进行 写入和存储器的整片擦除,写操作周期是自身定时的,初始化后它将自动定时 到操作完成。 AT89C51 的极限参数: 极限参数 操作温度 储藏温度 最高工作电压 ............................... -55°C to +125°C ................................. -65°C to +150°C ........................... 6.6V

任意引脚对地电压 ..............................-1.0V to +7.0V 支流输出电流 ................................... 15.0 mA

- 52 -

重庆邮电大学本科毕业设计(论文)

三、工程设计图纸:

- 53 -

重庆邮电大学本科毕业设计(论文)

四、源程序:
#include<reg52.h> #include <intrins.h> #include <math.h> #include <stdio.h> //Keil library //Keil library

#define uchar unsigned char //定义一下方便使用 #define uint unsigned int //定义一下方便使用

#define ulong unsigned long //定义一下方便使用 uchar a,key1n; //flag 用于读取头文件中的温度值,和显示温度值 uint TEM0,HUM0; #define yh 0x80 //LCD 第一行的初始位置,因为 LCD1602 字符地址首位

D7 恒定为 1(100000000=80) #define er 0x80+0x40 //LCD 第二行初始位置(因为第二行第一个字符位置地 址是 0x40)

//液晶屏的与 C51 之间的引脚连接定义(显示数据线接 C51 的 P0 口) sbit rs=P2^0; sbit en=P2^2; sbit rw=P2^1; //如果硬件上 rw 接地,就不用写这句和后面的 rw=0 了

#define TEMP_ML 0x03 #define HUMI_ML 0x05

//000 //000

0001 0010

1 温度命令 1 湿度命令

//#1 unsigned char error unsigned char ack ;//全局错误变量 ;//全局应答变量

- 54 -

重庆邮电大学本科毕业设计(论文)

unsigned char temp_h unsigned char temp_LL

;//全局应答变量 ;//全局应答变量

unsigned unsigned

int int

xianzhi_t=0;//温度显值 xianzhi_h=0;//湿度显值

void text_jishuan_temp(); void text_jishuan_humi(); sbit DATA =P2^7;//数据 sbit SCK=P2^6;//时钟 void text_jishuan_temp11(); void display(); /**************************************************************/ uchar code tab1[]={"humidity 00 %"};//显示的固定字符

uchar code tab2[]={"temperature 00 C"}; //显示的固定字符

//延时函数,后面经常调用 void delay(uint xms)//延时函数,有参函数 { uint x,y; for(x=xms;x>0;x--) for(y=110;y>0;y--); }

/********液晶写入指令函数与写入数据函数,以后可调用**************/

/*在这个程序中,液晶写入有关函数会在 DS1302 的函数中调用,所以液晶程

- 55 -

重庆邮电大学本科毕业设计(论文)

序要放在前面*/

write_1602com(uchar com)//****液晶写入指令函数**** { rs=0;//数据/指令选择置为指令 rw=0; //读写选择置为写 P0=com;//送入数据 delay(1); en=1;//拉高使能端,为制造有效的下降沿做准备 delay(1); en=0;//en 由高变低,产生下降沿,液晶执行命令 }

//在哪写

write_1602dat(uchar dat)//***液晶写入数据函数**** { rs=1;//数据/指令选择置为数据 rw=0; //读写选择置为写 P0=dat;//送入数据 delay(1); en=1; //en 置高电平,为制造下降沿做准备 delay(1); en=0; //en 由高变低,产生下降沿,液晶执行命令 }

//写啥

lcd_init()//***液晶初始化函数**** {

- 56 -

重庆邮电大学本科毕业设计(论文)

write_1602com(0x38);//设置液晶工作模式,意思:16*2 行显示,5*7 点 阵,8 位数据 write_1602com(0x0c);//开显示不显示光标 write_1602com(0x06);//整屏不移动,光标自动右移 write_1602com(0x01);//清显示

write_1602com(yh+0);//温度显示固定符号从第一行第 1 个位置之后开始 显示 for(a=0;a<16;a++) { write_1602dat(tab1[a]);

} write_1602com(er+0);//湿度显示固定符号写入位置,从第 0 个位置后开 始显示 for(a=0;a<16;a++) { write_1602dat(tab2[a]); }

} //-------------------------------

//*******************主函数************************** //*************************************************** void main() { lcd_init(); //调用液晶屏初始化子函数

- 57 -

重庆邮电大学本科毕业设计(论文)

while(1) {

//无限循环下面的语句:

text_jishuan_temp11(); TEM0=xianzhi_t+10;//修正温度补偿 HUM0=xianzhi_h-30;//修正湿度补偿 display();//定时中断 显示一次改变的数据 } } void display() { write_1602com(yh+12);// 显示从第一行第 12 个位置之后开始显示 write_1602dat(HUM0/100+0X30); write_1602dat(HUM0/10%10+0X30); //0X30: “0”字符的 ask 码

write_1602com(er+12); 示

//数据显示写入位置,从第 12 个位置后开始显

write_1602dat(TEM0/100+0X30); write_1602dat(TEM0/10%10+0X30);

}

//*******************************1 ///////////////// //////////////////////

号 传 感 器

基 本 驱 动 程 序

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

- 58 -

重庆邮电大学本科毕业设计(论文)

----------------// 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) { SCK=1; if (DATA) val=(val | i); //释放数据总线 //位移 8 位 //上升沿读入 //确定值

SCK=0; } DATA=0; //读应答信号,有应答为 1,为应答为 0 通过 CPU 下拉为应答 SCK=1; _nop_(); _nop_(); _nop_(); SCK=0; DATA=1; temp_h=val; val=0; //释放数据总线 //第 9 个脉冲

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

DATA=1; for (i=0x80;i>0;i/=2) { SCK=1;

//释放数据总线 //位移 8 位 //上升沿读入

- 59 -

重庆邮电大学本科毕业设计(论文)

if (DATA) val=(val | i); SCK=0; } DATA=1;//0; 答 SCK=1; _nop_(); _nop_(); _nop_(); SCK=0; DATA=1; temp_LL=val;

//确定值

//不需要应答 通过 CPU 下拉为应

//第 9 个脉冲

//释放数据总线

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

char write(unsigned char value) //写一个字节 返回应答信号 //--------------------------------------------------------{ unsigned char i ; ack=0; //发送一个字节 8bits 数据 for (i=0x80;i>0;i/=2) // { if (i & value) DATA=1; else DATA=0; SCK=1; _nop_(); _nop_(); _nop_(); SCK=0; //上升沿写入 //延时 //写入值 //释放数据总线

- 60 -

重庆邮电大学本科毕业设计(论文)

}

DATA=1; SCK=1; if (DATA==1) ack=1;

//释放数据总线 //第 9 个脉冲

//读应答信号 SCK=0; return ack; } //////// //error=1 表示没有应答

void start_sht11(void)

//启动

//-------------------------------------------------------{ DATA=1; SCK=0; _nop_(); SCK=1; _nop_(); DATA=0; _nop_ (); SCK=0; _nop_(); _nop_(); _nop_(); SCK=1; _nop_(); DATA=1; _nop_(); SCK=0; } //完成该脉冲 //数据变为 1 //再一个脉冲 //完成一个脉冲 //数据跌落 //第一个脉冲 //数据为 1,SCK=0

- 61 -

重庆邮电大学本科毕业设计(论文)

////////////////////////////////// void sht_rest(void) //复位

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

////////////////////////////////

//测量温度或者是温度,返回校验值 void text_a(unsigned char ml) { unsigned int i;

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

//启动

- 62 -

重庆邮电大学本科毕业设计(论文)

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

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

}

/////////温湿度处理//////

void text_jishuan_temp11() { error=0; ack=0; sht_rest() ;//复位

text_a(TEMP_ML);

text_jishuan_temp();

text_a(HUMI_ML);

text_jishuan_humi(); }

/////

- 63 -

重庆邮电大学本科毕业设计(论文)

//////////计算温度//// void 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=0; } temp_zi=temp_zi*10; xianzhi_t=(int)temp_zi;//给显示值

} ///////计算湿度////// void text_jishuan_humi() { float aa=0,bb=0,humi_zi; int abcd=0;

aa=(float)temp_h*256+(float)temp_LL;

- 64 -

重庆邮电大学本科毕业设计(论文)

bb=aa*aa*2.8/1000000; aa=0.0405*aa; aa=aa-4-bb; humi_zi=aa;

// humi_zi=humi_zi*10; xianzhi_h=(int)humi_zi; }

- 65 -


相关文章:
基于单片机的家用温湿度传感器设计
设计由单片机 AT89C51,LM016L 显示器,温湿度传感器 SHT11 和温度传感器 DS18B20 为核心,辅以必要 的电路,构成一个家用气象系统,其具有测量准确,显示直观等...
温度传感器的设计_图文
进而考虑到用温度传感器, 在单片机电路设计中, 大多都是使用传感器, 所以这是非常容易想到的,所以可以采用一只温度传感器 DS18B20,此传感器,可以很容易直接读取被测...
温度传感器设计
《基于 DS18B20 传感器温度测量》摘要:本文介绍了基于单片机 STC89C52 的温度测量系统的设计方案与硬件实现,采用温度传感器 DS18B20 采集温度数据,数码管显示温度数据...
温湿度传感器的毕业设计
(5)选择适合的传感器,设计相应的信号采集和处理电路。 1.2.2 本设计的意义 传统的方法,人们主要采用温度计、湿度计来采集温度值和湿度值,通过人工操 作加热、...
温湿度传感器系统的原理和设计优秀毕业论文
温湿度传感器系统的原理和设计优秀毕业论文_工学_高等教育_教育专区 暂无评价|0人阅读|0次下载|举报文档 温湿度传感器系统的原理和设计优秀毕业论文_工学_高等教育...
温湿度传感器课程设计
传感器原理设计与应用 温湿度测试系统 姓名 学号 专业 测控技术与仪器 组长 组员 (1) 设计目的: 设计制作一个温湿度, 温度测量范围为-10-50℃, 湿度为 0-100...
AT89C51温度传感器设计_图文
电子系统综合设计报告字体 2 单元模块设计 2.1 各单元模块功能介绍及电路设计 2.1.1 温度传感器电路的设计 实现温度 T 和电阻 R 的对应关系。 第 5 页共 ...
基于单片机的湿度传感器设计
基于单片机的湿度传感器设计与实现 基于单片机的湿度传感器设计一 系统方案 1.1 系统功能本文设计的湿度传感器应具备以下功能: (1) 能够感受环境中的湿度变化。 (2...
温度传感器设计
温度传感器设计_信息与通信_工程科技_专业资料。温度传感器应用介绍 温度传感器设计温度传感器应用介绍在科技日新月异的今天,传感器技术已经日益成熟和普及,其中,温度...
基于SHT11温湿度传感器课程设计
课程设计报告书课程名称: 《传感器原理及应用》课程设计 题目:基于 SHT11 温湿度传感器的湿度 计设计 系 (院) :学期: 电子工程学院测控系 2013-2014-1 测控 ...
更多相关标签: