基于单片机的仓库温湿度检测系统设计(编辑修改稿)内容摘要:

口线,名称 为 ~ 林思波:基于单片机的仓库温湿度检测系统设计 10 P3 口( Pin10~ Pin17): 8 位准双向 I/O 口线,名称为 ~  P0 端口( ~ , 39~ 32 引脚): P0 口是一个漏极开路的 8 位双向 I/O 口。 作为输出端口,每个引脚能驱动 8 个 TTL 负载,对端口 P0 写入 “1”时,可以作为高阻抗输入。 在访问外部程序和数据存储器时, P0 口也可以提供低 8 位地址和 8 位数据的复用总线。 此时, P0 口内部上拉电阻有效。 在 Flash ROM 编程时, P0 端口接收指令字节;而在校验程序时,则输出指令字节。 验证时,要求外接上拉电阻。  P1 端口( ~ , 1~ 8 引脚): P1 口是一个带内部上拉电阻的 8 位双向 I/O 口。 P1 的输出缓冲器可驱动(吸收或者输出电流方式) 4 个 TTL 输入。 对端口写入 1 时,通过内部的上拉电阻把端口拉到高电位,此时可用作输入口。 P1 口作输入口使用时,因为有内部上拉电阻,那些被外部拉低的引脚会输出一个电流 (I/L )。 此外, 和 分别作定时器 /计数器 2 的外部计数输入( )和时器 /计数器 2 的触发输入( ),具体如下表所示。 在 flash 编程和校验时, p1 口接收低 8 位地址字节。 引脚号第二功能: t2(定时器 /计数器 t2 的外部计数输入),时钟输出 t2ex(定时器 /计数器 t2 的捕捉 /重载触发信号和方向控制) mosi(在线系统编程用) miso(在线系统编程用) sck(在线系统编程用)  P2 端口( ~ , 21~ 28 引脚): P2 口是一个带内部上拉电阻的 8 位双向 I/O 端口。 P2 的输出缓冲器可以驱动(吸收或输出电流方式) 4 个 TTL 逻辑电平输入。 对 p2 端口写入 1 时,通过内部的上拉电阻把端口拉到高电平, 这时可用作输入口。 P2 作为输入口使用时,因为有内部的上拉电阻,那些被外部信号拉低的引脚会输出一个电流。 在访问外部程序存储器和 16位地址的外部数据存储器(如执行 “MOVX @DPTR”指令)时, P2 送出高 8 位地址。 在访问 8 位地址的外部数据存储器(如执行 “MOVX @R1”指令)华科学院本科毕业设计(论文) 11 时, P2 口引脚上的内容(就是专用寄存器( SFR)区中的 P2 寄存器的内容),在整个访问期间不会改变。 在对 Flash ROM 编程和程序校验期间, P2 也接收高位地址和一些控制信号。  P3 端口( ~ , 10~ 17 引脚): P3 是一个具有内部上拉电阻的 8 位双向 I/O 端口。 P3 的输出缓冲器可驱动(吸收或输出电流方式) 4 个 TTL 输入。 对 p3 端口写入 “1”时,通过内部的上拉电阻把端口拉到高电位,这时可用作输入口。 P3 做输入口使用时,因为有内部的上拉电阻,那些被外部信号拉低的引脚会输入一个电流 (I/L )。 p3 口亦作为 STC89C52 特殊功能(第二功能)使用,如下表所示。 在 flash 编程和校验时, p3 口也接收一些控制信号。 引脚号第二功能: rxd(串行输入口 ) txd(串行输出口 ) into(外 中断 0) int1(外中断 1) to(定时 /计数器 0) t1(定时 /计数器 1) wr(外部数据存储器写选通 ) rd(外部数据存储器读选通 )  RST——复位输入。 当振荡器工作时, RST 引脚出现两个机器周期以上高电平将是单片机复位。  ALE/PROG——当访问外部程序存储器或数据存储器时, ALE(地址锁存允许)输出脉冲用于锁存地址的低 8 位字节。 一般情况下, ALE 仍以时钟振荡频率的 1/6 输出固定的脉冲信号,因此它可对外输出时钟或用于定时目的。 要注意的是: 每当访问外部数据存储器时将跳过一个 ALE 脉冲。  对 flash 存储器编程期间,该引脚还用于输入编程脉冲( PROG)。  如有必要,可通过对特殊功能寄存器( SFR)区中的 8eh 单元的 d0 位置位,可禁止 ALE操作。 该位置位后,只有一条 MOVX 和 MOVC 指令才能将 ALE 激活。 此外,该引脚林思波:基于单片机的仓库温湿度检测系统设计 12 会被微弱拉高,单片机执行外部程序时,应设置 ALE 禁止位无效。  PSEN——程序储存允许( PSEN)输出是外部程序存储器的读选通信号,当 STC89C52由外部程序存储器取指令(或数据)时,每个机器周期两次 PSEN 有效,即输出两个脉冲,在 此期间,当访问外部数据存储器,将跳过两次 PSEN 信号。  EA/VPP——外部访问允许,欲使 CPU 仅访问外部程序存储器(地址为 0000hffffh),EA 端必须保持低电平(接地)。 需注意的是:如果加密位 lb1 被编程,复位时内部会锁存 ea 端状态。  如 EA 端为高电平(接 VCC 端), CPU 则执行内部程序存储器的指令。  flash 存储器编程时,该引脚加上 +12v 的编程允许电源 VPP,当然这必须是该器件是使用 12v 编程电压 VPP。 2)、 STC89C52 主要功能如下表所示 表 STC89C52 的主要功能特性 主 要功能特性 兼容 MCS51 指令系统 8K 可反复擦写 Flash ROM 32 个双向 I/O 口 256x8bit 内部 RAM 3 个 16 位可编程定时 /计数器中断 时钟频率 024MHz 2 个串行中断 可编程 UART 串行通道 2 个外部中断源 共 6 个中断源 2 个读写中断口线 3 级加密位 低功耗空闲和掉电模式 软件设置睡眠和唤醒功能 2. DS1302 时钟电路 本电路采用 DS1302 时钟芯片, DS1302 主要特点是采用串行数据传输,可为掉电保护电源提供可编程的充电功能,并且可以关闭充电功能。 采用普通的 32768Hz 晶振,两个电源 Vcc1 及 Vcc2 接电源 VDD,这样如果没有交流电的供电也可以由可充电电池供电,起了掉电保护,防止数据丢失。 2 脚 X1(晶振引脚)及 3 脚 X2(晶振引脚)接 32768Hz 的晶振, DS1302 的 7 脚 CLK(串行时钟输入引脚)与单片机的 相连, 6 脚 I/O(数据输入输出引脚)与单片机的 相连, 5 脚 RET(复位引脚)与单片机的 相连。 DS1302 与单片机的连接仅需要 3 条线: CE 引脚、 SCLK 串行时钟引脚、 I/O 串行数据引脚,华科学院本科毕业设计(论文) 13 Vcc2 为备用电源,外接 晶振,为芯片 提供计时脉冲。 X12X23VCC21GND4RST5I/O6SCLK7VCC18U1DS1302VCC12Y112P2Header 2batterbatterSCLKCS1302电池 图 时钟电路原理图 现在流行的串行时钟电路很多,如 DS130 DS130 PCF8485 等。 这些电路的接口简单、价格低廉、使用方便,被广泛地采用。 本文介绍的实时时钟电路 DS1302 是美国DALLAS 公司推出的一种高性能、低功耗、带 RAM 的实时时钟电路。 它可以对年、月、日、周日、时、分、秒进行计时,具有闰年补偿功能,工作电压为 ~。 采用三线接口与 CPU进行同步通信,并可采用突发方式一次传送多个字节的时钟信号或 RAM 数据。 DS1302 内部有一个 318 的用于临时性存放数据的 RAM 寄存器。 DS1302 是 DS1202 的升级产品,与 DS1202 兼容,但增加了主电源 /后备电源双电源引脚,同时提供了对后备电源进行涓细电流充电的能力。 它可为掉电保护电源提供可编程的充电功能,并且可以关闭充电功能。 采用普通 晶振。  1) 、 DS1302 芯片的引脚说明 图 DS1302 芯片的引脚图 林思波:基于单片机的仓库温湿度检测系统设计 14 Vcc1 、 VCC2( 1) : 其中 Vcc1 为后备电源, VCC2 为主电源。 在主电源关闭的情况下,也能保持时钟的连续运行。 DS1302 由 Vcc1 或 Vcc2 两者中的较大者供电。 当 Vcc2大于 Vcc1+ 时, Vcc2 给 DS1302 供电。 当 Vcc2 小于 Vcc1 时, DS1302 由 Vcc1 供电。 X X2( 3) : X1 和 X2 是振荡源,外接 晶振。 RST( 5) : RST 是复位 /片选线,通过把 RST 输入驱动置高电平来启动所有的数据传送。 RST 输入有两种功能:首先, RST 接通控制逻辑,允许地址 /命令序列送入移位寄存器;其次, RST 提供终止单字节或多字节数据的传送手段。 当 RST 为高电平时,所有的数据传送被初始化,允许对 DS1302 进行操作。 如果在传送过程中 RST 置为低电平,则会终止此次数据传送, I/O 引脚变为高阻态。 上电运行时,在 Vcc 之前, RST 必须保持低电平。 只有在 SCLK 为低电平时,才能将 RST 置为高电平。 I/O (6) : 串行数据输入输出端 (双向 )。 SCLK(7) : 时钟输入端。  2) 、 DS1302 芯片的工作原理 ① DS1302 的控制字节 DS1302 的控制字如图 所示。 控制字节的最高有效位 (位 7)必须是逻辑 1,如果它为 0,则不能把数据写入 DS1302 中,位 6 如果为 0,则表示存取日历时钟数据,为 1 表示存取 RAM 数据。 位 5 至位 1 指示操作单元的地址。 最低有效位 (位 0)如为 0 表示要进行写操作, 位 1 表示进行读操作,控制字节总是从最低位开始输出。 图 DS1302 的控制字节 ② 数据输入输出 (I/O) 在控制指令字输入后的下一个 SCLK 时钟的上升沿时,数据被写入 DS1302,数据输入从低位即位 0 开始。 同样,在紧跟 8 位的控制指令字后的下一个 SCLK 脉冲的下降沿读出 DS1302 的数据,读出数据时从低位 0 位到高位 7。 ③ DS1302 的寄存器 DS1302 有 12 个寄存器,其中有 7 个寄存器与日历、时钟相关,存放数据为 BCD 码形式 ,其日历、时间寄存器及其控制字见表。 华科学院本科毕业设计(论文) 15 表 DS1302 的日历、时间寄存器及其控制字 寄存器名 命令字 取值范围 各位内容 写操作 读操作 7 6 5 4 3 2 1 0 秒寄存器 80H 81H 0059 CH 10SEC SEC 分钟寄存器 82H 83H 0059 0 10MIN MIN 小时寄存器 84H 85H 0112 或 0023 12/24 0 10/AP HR HR 日期寄存器 86H 87H 0128,29,30,31 0 0 10DATE DATE 月份寄存器 88H 89H 0112 0 0 0 IQM MONTH 周日寄存器 8AH 8BH 0107 0 0 0 0 0 DAY 年份寄存器 8CH 8DH 0099 10YEAR YEAR 此外, DS1302 还有年份寄存器、控制寄存器、充电寄存器、时钟突发寄存器及与 RAM相关的寄存器等。 时钟突发寄存器可一次性顺序读写除充电寄存器外的所有寄存器内容。 DS1302 与 RAM 相关的寄存器分为两类:一类是单个 RAM 单元,共 31 个,每个 单元组态为一个 8 位的字节,其命令控制字为 C0H~ FDH,其中奇数为读操作,偶数为写操作;另一类为突发方式下的 RAM 寄存器,此方式下可一次性读写所有的 RAM 的 31 个字节,命令控制字为 FEH(写 )、 FFH(读 )。 ④ DS1302 与 CPU 的连接 DS1302 与 CPU 的连接需要三条线,即 SCLK(7)、 I/O(6)、 RST(5)。 实际上,在调试程序时可以不加电容器,只加一个 的晶振即可。 只是选择晶振时,不同的晶振,误差也较大。 另外,还可以在上面的电路中加入 DS18B20,同时显示实时温度。 只要占用CPU 一个口线即可。 DS1302 存在时钟精度不高,易受环境影响,出现时钟混乱等缺点。 DS1302 可以用于数据记录,特别是对某些具有特殊意义的数据点的记录,能实现数据与出现该数据的时间同时记录。 这种记录对长时间的连续测控系统结果的分析及对异常数据出现的原因的查找具有重要意义。 传统的数据记录方式是隔时采样或定时采样,没有具体的时间记录,因此,只能记录数据而无法准确记录其出现的时间;若采用单片机计时,一方面需要采用计数器,占用硬件资源,另一方面需要设置中断、查询等,同样耗费单片机的资源,而且,某些测林思波:基于单片机的仓库温湿度检测系统设计 16 控系统可能 不允许。 但是,如果在系统中采用时钟芯片 DS1302,则能很好地解决这个问题。 3. 复位。
阅读剩余 0%
本站所有文章资讯、展示的图片素材等内容均为注册用户上传(部分报媒/平媒内容转载自网络合作媒体),仅供学习参考。 用户通过本站上传、发布的任何内容的知识产权归属用户或原始著作权人所有。如有侵犯您的版权,请联系我们反馈本站将在三个工作日内改正。