资源描述
作息时间控制系统
51
2020年6月23日
资料内容仅供参考,如有不当或者侵权,请联系本人改正或者删除。
目 录
第一章 绪论 1
1.1单片机作息时间控制系统设计的目的和意义 1
1.2 方案比较 1
1.3 整体设计方框图 2
第二章 模块电路设计 3
2.1 单片机核心控制模块 3
2.2 键盘模块 5
2.3实时时钟模块 6
2.4 数据存储模块 9
2.5 温度传感器模块 15
2.6 红外模块 17
2.7 电机模块 20
2.8 显示模块 23
2.9 外围驱动模块 25
第三章 系统软件设计 27
3.1 系统实现工作流程 27
3.2 系统流程图 27
结论与体会 31
主要参考材料: 32
附录1: 元器件表 33
附录2: 总电路原理图 34
第一章 绪论
1.1单片机作息时间控制系统设计的目的和意义
随着计算机技术的发展和在控制系统中的广泛应用, 以及设备向小型化、 智能化发展, 作为高新技术之一的单片机以其体积小、 功能强、 价格低廉、 使用灵活等优势, 显示出了很强的生命力。进入21世纪以来, 开发推出单片机的公司很多, 各种高性能单片机芯片市场也异常活跃, 新技术的不断采用, 更加使单片机的种类、 性能以及应用领域不断扩大和提高。因其功耗低, 超高型, 低成本, 功能完整, 在国内越来越受到用户的重视和广泛使用。
本设计是一个具有打铃、 当前环境温度显示、 教室灯光、 广播、 校门开关的自动控制等功能的作息时间控制系统。同时该系统也是一可调式万年历, 采用SG12864液晶具有良好的菜单式人机界面更使本系统增色不少。它利用PCF8563实时时钟芯片计时, 进行年历计算, 并用SG12864将当前日期、 星期、 时间出来; 在进行时间计算, 分每加一时, 都与规定的作息时间比较, 如果相等则进行相应的控制或动作。由单片机核心控制模块、 键盘模块、 电机模块、 实时时钟模块、 红外模块、 液晶显示模块、 温度传感器模块、 数据存储模块、 外围驱动模块九部分组成, 系统扩展16个矩阵按键用于打铃时间调整及时间校正。现代机关企业, 特别是学校要求对时间加以控制, 要按时打铃及播放广播, 以保证学习与工作的正常运行。本设计实现了这些功能, 给学校及其它机关企业带来方便, 整体性好, 人性化强、 可靠性高, 实现了对时间控制的智能化。
1.2 方案比较
作息时间控制系统的设计有很多方案能够实现, 其主流技术主要有以下几种:
( 1) 用可编程逻辑器件( 如CPLD、 FPGA) 来实现, 而在本设计中如要实现功能相对来说比较复杂, 必须得用到FPGA来实现, 而FPGA的价格相对较贵, 且系统设计比较困难。
( 2) 用PLC来实现, PLC其实就是一被封装起来的单片机, 里面设有监控程序, 并对I/O端口进行了光电隔离。这样一来使得PLC性能稳定且容易使用, 且只需简单外围电路就能够实现该系统功能, 但PLC比较昂贵, 这样会使成本增高而失去市场竞争。
( 3) 就是用555定时器产生时钟脉冲和数字芯片( 如74LS14) 来实现, 但要来实现本设计需要大量的数字芯片, 使得系统稳定性下降, 生产难度加大, 而且成本会增加。
( 4) 就是应用单片充当主控器来再加上适量的外围实现此功能, 且单片机价格便宜, 性能稳定。应用的外围器件相对较少, 这就提高了系统的稳定性, 且单片机控制简易, 开发工具简单, 很容易大批量生产。
经过以上比较, 最终我们选择第( 4) 种方案来实施。
1.3 整体设计方框图
第二章 模块电路设计
2.1 单片机核心控制模块
2.1.1核心器件的选择
单片机是本设计的核心器件, 因此单片机的选择决定了该设计的稳定和性能, 当前单片机市场种类繁多, 有几千种不同型号, 单片机的选择应遵循在能满足性能条件下尽可能的选择功耗小资源少价格低, 而且货源充分的。现在主流单片机种类有以下几类:
①PIC单片机: 是MICROCHIP公司的产品,其突出的特点是体积小,功耗低,精简指令集,抗干扰性好,可靠性高,有较强的模拟接口,代码保密性好,大部分芯片有其兼容的FLASH程序存储器的芯片。
②EMC单片机: 是台湾义隆公司的产品,有很大一部分与PIC 8位单片机兼容,且相兼容产品的资源相对比PIC的多,价格便宜,有很多系列可选,但抗干扰较差。
③ATMEL单片机(51单片机): ATMEL公司的8位单片机有AT89、 AT90两个系列,AT89系列是8位Flash单片机,与8051系列单片机相兼容,静态时钟模式;AT90系列单片机是增强RISC结构、 全静态工作方式、 内载在线可编程Flash的单片机,也叫AVR单片机。
④PHLIPIS 51PLC系列单片机(51单片机): PHILIPS公司的单片机是基于80C51内核的单片机,嵌入了掉电检测、 模拟以及片内RC振荡器等功能,这使51LPC在高集成度、 低成本、 低功耗的应用设计中能够满足多方面的性能要求。
⑤HOLTEK单片机: 台湾盛扬半导体的单片机,价格便宜,种类较多,但抗干扰较差,适用于消费类产品。
⑥TI公司单片机(51单片机): 德州仪器提供了TMS370和MSP430两大系列通用单片机.TMS370系列单片机是8位CMOS单片机,具有多种存储模式、 多种外围接口模式,适用于复杂的实时控制场合;MSP430系列单片机是一种超低功耗、 功能集成度较高的16位低功耗单片机,特别适用于要求功耗低的场合。
最后我们决定选用ATMEL公司的AT89S51单片机, AT89S51是ATMEL公司生产的低功耗, 高性能、 高性价比的CMOS 8位单片机, 片内含4K bytes的可系统编程的Flash只读程序存储器, 器件采用ATMEL公司的高密度、 非易失性存储技术生产, 兼容标准8051指令系统及引脚。它集Flash程序存储器既可在线编程( ISP) 也可用传统方法进行编程及通用8位微处理器于单片芯片中, AT89S51含有128×8字节内部RAM、 32个可编程I/O口线、 2个16位定时/计数器、 6个中断源和全双工串行UART通道, 已能满足系统控制需求。
2.1.2模块电路设计
单片机运行需要满足几个条件, 首先必须提供电源, 还时钟振荡源, 还有复位。由于十二个时钟周期构成一个机器周期, 在这里为方便计算我们选取晶振频率为12M HZ的晶振, 因为晶振产生的信号比较弱, 电容选取范围只能是小于30PF, 在这里我们选取C1、 C2为22PF。当单片机的复位端持续为两个机器周期高电平时产生复位, 因此复位电路的参数需要根据晶振来决定, 单片机控制系统一般都要求达到上电复位, 因此这就对电容和电阻的选择有一定的要求, 这能够经过计算来得出元件参数, 但单片机最小系统的参数有一个经验值, 在这里我们选用取R2 100Ω、 R1 10K, C3取10UF。由于单片机的P0口结构的特殊性, 需加上拉电阻, 这里我们选取阻值为10K的电阻, 而耐压值的选择我们则只须选择大于7.5V就行了。
2.1.3 模块电路图
如图2.1所示
图2.1 单片机核心控制模块电路图
2.2 键盘模块
2.2.1 键盘电路选择
键盘能够有几种选择: 一种是利用键盘LED芯片( 如HD7279、 HD8279、 MAX7219等) , 一种则是直接利用单片机I/O口搭建键盘电路。
采用键盘LED芯片, 具有编程简单, 抗干扰能力强、 稳定性好、 功能强大等特点, 但其成本比较高, 而且占用额外的功耗和空间, 一般见在对键盘读取要求较高的场合。
而普通的键盘电路, 则有电路简单, 成本低等特点, 但其抗干扰能力较前者弱。而键盘电路结构又分为直接型和矩阵型, 直接型具有编程、 电路简单等特点, 但占用的I/O口比较多, 适用于只需少量键盘的场合。矩阵型具有电路、 编程复杂等特点, 但占用I/O口少, 比较适应于要求键盘比较多的场合。
而本设计的显示电路是采用的LCD显示, 且对键盘读取要求也不是太高, 采取键盘芯片不能充分利用其功能, 有点浪费。且单片机I/O口比较紧张, 因此决定采用普通矩阵键盘。
2.2.2 模块电路设计
在本设计中有用到数字键0-9, 且还有上、 下、 左、 右、 确定、 取消键。一共十六个键, 刚好可用8个I/O口组成4*4矩阵键盘。而矩阵键盘的搭建比较简单, 只需遵循行列相交搭建就行, 而必须在行或列添加上拉电阻, 而上拉电阻的选取就只需遵循上拉电流小于单片机最大灌电流就行, 在这里我们选取10K的电阻来充当上拉电阻。
2.2.3 模块电路图
如图2.2所示
图2.2 键盘模块电路
2.3实时时钟模块
2.3.1核心器件选择
在单片机内部, 能够利用定时器进行计时, 也能够实现功能, 但利用内部定时器进行计时会产生计时不精确, 且增加了CPU的负担和编程的难度, 再就是掉电重启后时间会全部被初始化。因此我们采用实时时钟芯片, 实时时钟芯片的种类繁多。在这里我们选用PCF8563实时时钟芯片。
PCF8563 是低功耗的CMOS 实时时钟/日历芯片, 它提供一个可编程时钟输出, 一个中断输出和掉电检测器, 所有的地址和数据经过I2C 总线接口串行传递。最大总线速度为400Kbits/s, 每次读写数据后, 内嵌的字地址寄存器会自动产生增量, 可编程时钟输出刚好能够为红外发射管提供载波信号。
其主要特性为:
1) 低工作电流: 典型值为0.25μA( VDD=3.0V, Tamb=25℃时) 。
2) 世纪标志
3) 大工作电压范围: 1.0~5.5
4) 低休眠电流; 典型值为0.25μA(VDD=3.0V,Tamb=25℃)
5) 400KHz 的I2C 总线接口( VDD=1.8~5.5V 时) 。
6) 可编程时钟输出频率为: 32.768KHz, 1024Hz, 32Hz, 1Hz。
7) 报警和定时器。
8) 掉电检测器。
9) 内部集成的振荡器电容。
10) 片内电源复位功能。
11) I2C 总线从地址: 读, 0A3H; 写, 0A2H。
12) 开漏中断引脚。
PCF8563 有16 个8位寄存器: 一个可自动增量的地址寄存器, 一个内置32.768KHz 的振荡器( 带有一个内部集成的电容) , 一个分频器( 用于给实时时钟RTC 提供源时钟) , 一个可编程时钟输出, 一个定时器, 一个报警器, 一个掉电检测器和一个400KHz I2C总线接口。
所有16 个寄存器设计成可寻址的8 位并行寄存器, 但不是所有位都有用。前两个寄存器( 内存地址00H, 01H) 用于控制寄存器和状态寄存器, 内存地址02H~08H 用于时钟计数器( 秒~年计数器) , 地址09H~0CH 用于报警寄存器( 定义报警条件) , 地址0DH 控制CLKOUT 管脚的输出频率, 地址0EH 和0FH 分别用于定时器控制寄存器和定时器寄存器。秒、 分钟、 小时、 日、 月、 年、 分钟报警、 小时报警、 日报警寄存器, 编码格式为BCD, 星期和星期报警寄存器不以BCD 格式编码。
当一个RTC 寄存器被读时, 所有计数器的内容被锁存, 因此, 在传送条件下, 能够禁止对时钟/日历芯片的错读。
一个或多个报警寄存器MSB( AE=Alarm Enable 报警使能位) 清0时, 相应的报警条件有效, 这样, 一个报警将在每分钟至每星期范围内产生一次。设置报警标志位AF( 控制/状态寄存器2的位3) 用于产生中断, AF 只能够用软件清除。
8位的倒计数器( 地址0FH) 由定时器控制寄存器( 地址0EH) 控制, 定时器控制寄存器用于设定定时器的频率( 4096, 64, 1, 或1/60Hz) , 以及设定定时器有效或无效。定时器从软件设置的8 位二进制数倒计数, 每次倒计数结束, 定时器设置标志位TF, 定时器标志位TF 只能够用软件清除, TF 用于产生一个中断( /INT) , 每个倒计数周期产生一个脉冲作为中断信号。TI/TP控制中断产生的条件。当读定时器时, 返回当前倒计数的数值。
管脚CLKOUT 能够输出可编程的方波。CLKOUT 频率寄存器( 地址0DH; 参见表2.1) 决定方波的频率, CLKOUT 能够输出32.768KHz( 缺省值), 1024, 32, 1Hz 的方波。CLKOUT为开漏输出管脚, 通电时有效, 无效时为高阻抗。
表2.1 PCF8563寄存器结构
地址
寄存器名称
D7
D6
D5
D4
D3
D2
D1
D0
00H
控制/状态寄存器1
TEST
0
STOP
0
TTESTC
0
0
0
01H
控制/状态寄存器2
0
0
0
TI/TP
AF
TF
AIE
TIE
02H
秒寄存器
VL
00~59 BCD码格式数
03H
分寄存器
-
00~59 BCD码格式数
04H
时寄存器
-
00~23 BCD码格式数
05H
日寄存器
-
00~31 BCD码格式数
06H
星期寄存器
-
00~06 BCD码格式数
07H
月/世纪寄存器
C
00~12 BCD码格式数
08H
年寄存器
00~99 BCD码格式数
09H
分钟报警寄存器
AE
00~59 BCD码格式数
0AH
时钟报警寄存器
AE
00~23 BCD码格式数
0BH
日报警寄存器
AE
00~31 BCD码格式数
0CH
星期报警寄存器
AE
00~06 BCD码格式数
0DH
CLKOUT频率寄存器
FE
-
-
-
-
-
FD1
FD0
0EH
定时控制寄存器
TE
-
-
-
-
-
TD1
TD0
0FH
定时器倒计时数值寄存器
定时器倒数计数数值
2.3.2.模块电路设计
本模块电路比较简单, 只需注意一个地方, 那就是实时时钟芯片一般装有后备电池, 以保证当断电时仍继续计时, 这就需要考虑一个当断电时电流反灌而损坏电源的问题, 还有就是当从断电状态进入上电电压的瞬时上升会造成电池寿命的缩短, 因此我们在电源和地之间需加一二极管和缓冲电容, 二极管的选取只须考虑最大正向整流电流和最大反向电压, 在这里们选取4148, 而缓冲电容则选取0.047F。而晶振必须选取32.768KHZ, 在晶振和地之间须串联一耦合电容, 耦合电容只须小于35P就能够了, 在这里我们先取18P。
2.3.3 模块电路图
如图2.3所示
图2.3 实时时钟模块电路
2.4 数据存储模块
2.4.1核心器件选择
本模块的设计是为了增加在线调整作息时间, 以更适应现实生活中的需要。而数据存储芯片, 我们采用非掉电易失的串行EEPROM芯片进行存储。
串行EEPROM中, 较为典型的有ATMEL公司的AT24CXX系列以及该公司生产的AT93CXX系列, 较为著名的半导体厂家, 包括Microchip, 国家半导体厂家等, 都有AT93CXX系列EEPROM产品。
AT24CXX系列的串行电可改写及可编程只读存储器EEPROM有10种型号, 其中典型的型号有AT24C01A/02/04/08/16等5种, 它们的存储容量分别是1024/2048/4096/8192/16384位, 也就是128/256/512/1 024/2048字节。这个系列一般用于低电压, 低功耗的工业和商业用途, 而且能够组成优化的系统。信息存取采用2线串行接口。这里我们就24C02的结构特点, 其它系列比较类似。
AT24C02有地址线A0~A2, 串行时钟引脚SDA, 串行时钟输入引脚SCL, 写保护引脚WP等引脚。很明显, 其引脚较少, 对组成的应用系统能够减少布线, 提高可靠性。
各引脚的功能和意义如下:
① VCC引脚, 电源+5V。
② GND引脚, 地线。
③ SCL引脚, 串行时钟输入端。在时钟的正跳沿即上升沿时把时钟写入EEPROM; 在时钟的负跳沿即下降沿时把数据从EEPROM中读出来。
④ SDA引脚, 串行数据I/O端, 用于输入和输出串行数据。这个引脚是漏极开路的埠, 故能够组成”线或”结构。
⑤ A0,A1,A2引脚, 是芯片地址引脚。在型号不同时意义有些不同, 但都要接固定电平。
⑥ WP引脚, 写保护端。这个端提供了硬件数据保护。当把WP接地时, 允许芯片执行一般读写操作; 当把WP接VCC时, 则对芯片实施写保护。
内存的组织: 对于不同的型号, 内存的组织不一样, 其关键原因在于内存容量存在差异。对于AT24CXX系列的EEPROM, 其典型型号的内存组织如下。
AT24C01A: 内部含有128个字节, 故需要7位地址对其内部字节进行寻址
AT24C02: 内部含有256个字节, 故需要8位地址对其内部字节进行读写。
起始状态: 当SCL为高电平时, SDA由高电平变到低电平则处于起始状态。起始状态应处于任何其它命令之前。
停止状态: 当SCL处于高电平时, SDA从低电平变到高电平则处于停止状态。在执行完读序列信号之后, 停止命令将把EEPROM置于低功耗的备用方式(Standby Mode)。
应答信号: 应答信号是由接受资料的器件发出的。当EEPROM接受完一个写入资料之后, 会在SDA上发一个”0”应答信号。反之, 当单片机接受完来自EEPROM的资料后, 单片机也应向SDA发ACK信号。ACK信号在第9个时钟周期时出现。
备用方式(Standby Mode): AT24C01A/02/04/08/16都具有备用方式, 以保证在没有读写操作时芯片处于低功耗状态。在下面两种情况中, EEPROM都会进入备用方式: 第一, 芯片通电的时候; 第二, 在接到停止位和完成了任何内部操作之后。
AT24C01等5种典型的EEPROM在进入起始状态之后, 需要一个8位的”器件地址字”去启动内存进行读或写操作。在写操作中, 它们有”字节写”, ”页面写”两种不同的写入方法。在读操作中, 有”现行地址读”, 随机读和”顺序读”种各具特点的读出方法。下面分别介绍器件寻址, 写操作和读操作。
① 器件寻址: 所谓器件寻址(Device Addressing)就是用一个8位的器件地址字(Device Address Word)去选择内存芯片。在逻辑电路中的AT24CXX系列的5种芯片种, 即AT24C01A/02/04/08/16中, 如果和器件地址字相比较结果一致, 则读芯片被选中。下面对器件寻址的过程和意义加以说明。
② 芯片的操作地址
表2.2 器件地址字
D7
D6
D5
D4
D3
D2
D1
D0
1
0
1
0
A2
A1
A0
R/W
用于内存EEPROM芯片寻址的器件地址字如表2.2所示。它有4种方式, 分别对应于1K/2K,4K,8K和16K位的EEPROM芯片。
从表2.2中看出: 器件地址字含有3个部分, 第一部分是高4位, 它们称为EEPROM AT24C01A/02/04/08/16的标识第二部分称为硬布线地址, 它们是标识后的3位。第三部分是最低位, 它是读/写操作选择位。
第一部分: 器件标识, 器件地址字的最高4位。这4位的内容恒为”1010”, 用于标识EEPROM器件AT24C01A/02/04/08/16。
第二部分: 硬布线地址, 是与器件地址字的最高4位相接的低3位。硬布线地址的3位有2种符号: Ai(i=0~2),Pj(j=0~2)其中Ai表示外部硬布线地址位。
对于AT24C10A/02这两种1K/2K位的EEPROM芯片, 硬布线地址为”A2,A1,A0”。在应用时, ”A2,A1,A0”的内容必须和EEPROM芯片的A2,A1,A0的硬布线情况, 即逻辑连接情况相比较, 如果一样, 则芯片被选中; 否则, 不选中。AT24C01/02:真正地址=字地址。
第三部分: 读/写选择位, 器件地址字的最低位, 并用R/W表示。当R/W=1时, 执行读操作; 当R/W=0时, 执行写操作。
当EEPROM芯片被选中时, 则输出”0”; 如果EEPROM芯片没有被选中, 则它回到备用方式。被选中的芯片。其以后的输入, 输出情况视写入和读出的内容而定。
③ 写操作: AT24C01A/02/04/08/16这5种EEPROM芯片的写操作有2种: 一种是字节写, 另一种是页面写。
字节写: 这种写方式只执行1个字节的写入。字节写的过程如图所示, 其写入过程分外部写和内部写两部分, 分别说明如下:
在起始状态中, 首先写入8位的器件地址。则EEPROM芯片会产生一个”0”信号ACK输出作为应答; 接着, 写入8位的字地址, 在接受了字地址之后, EEPROM芯片又产生一个”0”应答信号ACK; 随后, 写入8位资料, 在接受了资料之后, 芯片又产生一个”0”信号ACK作为应答。到此为止, 完成了一个字节写过程, 故应在SDA端产生一个停止状态, 这是外部写过程。
在这个过程中, 控制EEPROM的单片机应在EEPROM的SCL, SDA端送入恰当的信号。当然在一个字节写过程结束时, 单片机应以停止状态结束写过程。在这时, EEPROM进入内部定时的写周期, 以便把接受的数据写入到存储单元中。在EEPROM的内部写周期中, 其所有输入被屏蔽, 同时不响应外部信号直到写周期完成。这是内部写过程。内部写过程大约需要10ms时间。内部写过程处于停止状态与下一次起始状态之间。
页面写: 这种写入方式执行含若干字节的1个页面的写入。对于AT24C01A/02, 它们的1个页面含8个字节; 页面写的开头部分和字节写一样。在起始状态, 首先写入8位器件地址; 待EEPROM答当了”0”信号ACK之后, 写入8位字地址; 又待芯片应答了”0”信号ACK之后, 写入8位资料。
随后页面写的过程则和字节写有区别; 当芯片接受了第一个8位资料并产生应答信号ACK之后, 单片机能够连续向EEPROM芯片发送共为1页面的资料。对于AT24C01A/02, 可发送共1个页面的8个字节( 连第一个8位资料在内) 。对于AT24C04/08/16, 则共可发送1个页面共16个字节( 连第一个8位资料在内) 。当然, 每发一个字节都要等待芯片的应答信号ACK。
之因此能够连续向芯片发送1个页面资料, 是因为字地址的低3~4位在EEPROM芯片内部可实现加1, 字地址的高位不变, 用于保持页面的行地址。页面写和字节写两者一样可, 都分为外部写和内部写过程。
应答查询: 应答查询是单片机对EEPROM各种状态的一种检测。单片机查询到EEPROM有应答”0”信号ACK输出, 则说明其内部定时写的周期结束, 能够写入新的内容。单片机是经过发送起始状态及器件地址进行应答查询的。由于器件地址能够选择芯片, 则检测芯片送出到SDA的状态就能够知道其是否有应答了。
④读操作: 读操作的启动是和写操作类同的。它一样需要图所示的器件地址字。和写操纵不同的就是信号为时执行读操作。
读操纵有3种方式, 即现行地址读, 随机读和顺序读。下面分别说明它们的工作过程。
现行地址读: 在上次读或写操纵完成之后。芯片内部字地址计数器会加1, 产生现行地址。只要没有再执行读或写操作, 这个现行地址就会在EEPROM芯片保持接电的期间一直保存。一旦器件地址选中EEPROM芯片, 而且有R/W=1, 则在芯片的应答信号ACK之后把读出的现行地址的资料送出。现行地址的资料输出时, 就由单片机一位一位接受, 接收后单片机不用向EEPROM发应答信号ACK”0”电平, 但应保证发出停止状态的信号以结束现行地址读操作。现行地址读会产生地址循环覆盖现象, 但和写操纵的循环覆盖不同。在写操纵中, 地址的循环覆盖是现行页面的最后一个字节写入之后, 再行写入则覆盖同一页面的第一个字节。而在现行地址读操纵中, 地址的循环覆盖是在最后页面的最后一个字节读出之后, 再行读出才覆盖第一个页面的第一个字节。
随机读: 随机读和现行地址读的最大区别在于随机读会执行一个伪写入过程以把字地址装入EEPROM芯片中, 然后执行读出, 显然, 随机读有2个步骤。 第一, 执行伪写入——把字地址送入EEPROM, 以选择需读的字节; 第二, 执行读出——根据字地址读出对应内容。
当EEPROM芯片接收了器件地址及字地址时, 在芯片产生应答信号ACK之后, 单片机必须再产生一个起始状态, 执行现行地址读, 这时单片机再发出器件地址而且令R/W=1, 则EEPROM应答器件地址并行输出被读数据。在资料读出时由单片机执行一位一位接收, 接收完毕后, 单片机不用发”0”应答信号ACK, 但必须产生停止状态以结束随机读过程。 应该注意, 在随机读的第二个步骤是执行现行地址读的, 由于第一个步骤时芯片接收了字地址, 故现行地址就是所送入的字地址。
顺序读: 顺序读能够用现行地址读或随机读进行启动。它和现行地址读。随机读的最大区别在于: 顺序读在读出一批资料之后才由单片机产生停止状态结束读操作; 而现行地址读和随机读在读出一个资料之后就由单片机产生停止状态结束读操作。
执行顺序读时, 首先执行现行读或随机读的有关过程, 在读出第一个资料之后, 单片机输出”0”应答信号ACK。在芯片接收应答信号ACK后, 就会对字地址进行计数加1, 随后串行输出对应的字节。当字地址计数达到内存地址的极限时, 则字地址会产生覆盖, 顺序读将继续进行。只有在单片机不再产生”0”应答信号ACK, 而在接收资料之后马上产生停止状态, 才会结束顺序读操作。
2.4.2模块电路设计
本模块电路简单, 只须将三地址端和写保护接地就能够了。
2.4.3模块电路图
如图2.4所示
图2.4 数据存储模块电路
2.5 温度传感器模块
2.5.1 核心器件选择
Dallas 半导体公司的数字化温度传感器DS1820是世界上第一片支持 ”一线总线”接口的温度传感器。现场温度直接以”一线总线”的数字方式传输, 大大提高了系统的抗干扰性。适合于恶劣环境的现场温度测量, 如: 环境控制、 设备或过程控制、 测温类消费电子产品等。与前一代产品不同, 新的产品支持3V~5.5V的电压范围, 使系统设计更灵活、 方便。
DS18B20测量温度范围为 -55℃~+125℃, 在-10℃~+85℃范围内,精度为±0.5℃。DS18B20能够程序设定9~12位的分辨率, 及用户设定的报警温度存储在EEPROM中, 掉电后依然保存。
DS18B20内部结构主要由四部分组成: 64位光刻ROM、 温度传感器、 非挥发的温度报警触发器TH和TL、 配置寄存器。DS18B20的管脚排列如下: DQ为数字信号输入/输出端; GND为电源地; VDD为外接供电电源输入端( 在寄生电源接线方式时接地) 。
光刻ROM中的64位序列号是出厂前被光刻好的, 它能够看作是该DS18B20的地址序列码。64位光刻ROM的排列是: 开始8位( 28H) 是产品类型标号, 接着的48位是该DS18B20自身的序列号, 最后8位是前面56位的循环冗余校验码( CRC=X8+X5+X4+1) 。光刻ROM的作用是使每一个DS18B20都各不相同, 这样就能够实现一根总线上挂接多个DS18B20的目的。
DS18B20中的温度传感器可完成对温度的测量, 以12位转化为例:用16位符号扩展的二进制补码读数形式提供, 以0.0625℃/LSB形式表示, 其中S为符号位。
LS Byte:
Bit7
Bit6
Bit5
Bit4
Bit3
Bit2
Bit1
Bit0
23
22
21
20
2-1
2-2
2-3
2-4
MS Byte:
Bit15
Bit14
Bit13
Bit12
Bit11
Bit10
Bit9
Bit8
S
S
S
S
S
26
25
24
这是12位转化后得到的12位数据, 存储在18B20的两个8比特的RAM中, 二进制中的前面5位是符号位, 如果测得的温度大于0, 这5位为0, 只要将测到的数值乘以0.0625即可得到实际温度; 如果温度小于0, 这5位为1, 测到的数值需要取反加1再乘以0.0625即可得到实际温度。
例如+125℃的数字输出为07D0H, +25.0625℃的数字输出为0191H, -25.0625℃的数字输出为FF6FH, -55℃的数字输出为FC90H, 对于关系如表2.3所示。
表2.3 温度与数字输出关系
温度
数据输出( 二进制)
数据输出( 十六进制)
+125℃
0000 0111 1101 0000
07D0h
+85℃
0000 0101 0101 0000
0550h
+25.0625℃
0000 0001 1001 0001
0191h
+10.125℃
0000 0000 1010 0010
00A2h
+0.5℃
0000 0000 0000 1000
0008h
0℃
0000 0000 0000 0000
0000h
-0.5℃
1111 1111 1111 1000
FFF8h
-10.125℃
1111 1111 0101 1110
FF5Eh
-25.0625℃
1111 1110 0110 1111
FE6Fh
-55℃
1111 1100 1001 0000
FC90h
DS18B20温度传感器的内部存储器包括一个高速暂存RAM和一个非易失性的可电擦除的E2RAM,后者存放高温度和低温度触发器TH、 TL和结构寄存器。
暂存存储器包含了8个连续字节, 前两个字节是测得的温度信息, 第一个字节的内容是温度的低八位, 第二个字节是温度的高八位。第三个和第四个字节是TH、 TL的易失性拷贝, 第五个字节是结构寄存器的易失性拷贝, 这三个字节的内容在每一次上电复位时被刷新。第六、 七、 八个字节用于内部计算。第九个字节是冗余检验字节。
该字节各位的意义如下:
TM
R1
R0
1
1
1
1
1
低五位一直都是1 , TM是测试模式位, 用于设置DS18B20在工作模式还是在测试模式。在DS18B20出厂时该位被设置为0, 用户不要去改动。R1和R0用来设置分辨率, 如下表所示: ( DS18B20出厂时被设置为12位)
分辨率设置如表2.4所示:
表2.4 分辨率设置
R1
R0
分辨率
温度最大转换时间
0
0
9位
93.75ms
0
1
10位
187.5ms
1
0
11位
375ms
1
1
12位
750ms
根据DS18B20的通讯协议, 主机控制DS18B20完成温度转换必须经过三个步骤: 每一次读写之前都要对DS18B20进行复位, 复位成功后发送一条ROM指令, 最后发送RAM指令, 这样才能对DS18B20进行预定的操作。复位要求主CPU将数据线下拉500微秒, 然后释放, DS18B20收到信号后等待16~60微秒左右, 后发出60~240微秒的存在低脉冲, 主CPU收到此信号表示复位成功。
2.5.2 模块电路设计
本模块接口电路简单, 在这里不对电路进行讲解了。
2.5.3 模块电路图
如图2.5所示
图2.5 温度传感器模块电路
2.6 红外模块
2.6.1 核心元件选择
红外通信是利用950nm近红外波段的红外线作为传递信息的媒体, 即通信信道。发送端采用脉时调制( PPM) 方式, 将二进制数字信号调制成某一频率的脉冲序列, 并驱动红外发射管以光脉冲的形式发送出去; 接收端将接收到的光脉转换成电信号, 再经过放大、 滤波等处理后送给解调电路进行解调, 还原为二进制数字信号后输出。
红外发送器电路包括脉冲振荡器、 驱动管Q1和Q2、 红外发射管Q3等部分。其中脉冲振荡器用以产生38kHz的脉冲序列作为载波信号; 红外发射管Q3用来向外发射950nm的红外光束。
红外发送器的工作原理为: 串行数据由单片机的串行输出端DATA送出并驱动Q1管, 数位”0”使Q1管导通, 经过Q2管调制成38kHz的载波信号, 并利用红外发射管Q3以光脉冲的形式向外发送。数位”1”使Q1管截止, 红外发射管Q3不发射红外光。若传送的波特率设为1200bps, 则每个数位”0”对应32个载波脉冲调制信号的时序, 如图2.6所示。
图2.6 调制信号时序图
红外接收电路选用专用红外接收模块。该接收模块是一个三端元件, 使用单电源+5V电源, 具有功耗低、 抗干扰能力强、 输入灵敏度高、 对其它波长( 950nm以外) 的红外光不敏感的特点, 其内部结构框图如图2.7所示。
图2.7 红外接收模块内部结构框图
接收模块的工作原理为: 首先, 经过红外光敏元件将接收到的载波频率为38kHz的脉冲调制红外光信号转化为电信号, 再由前置放大器和自动增益控制电路进行放大处理。然后, 经过带通滤波器和进行滤波, 滤波后的信号由解调电路进行解调。最后, 由输出级电路进行反向放大输出。
为保证红外接收模块接收的准确性, 要求发送端载波信号的频率应尽可能接近38kHz, 因此在设计脉冲振荡器时, 要选用精密元件并保证电源电压稳定。再有, 发送的数位”0”至少要对应14个载波脉冲, 这就要求传送的波特率不能超过2400bps。
2.6.2 模块电路设计
红外发射二极管的额定电流为5-50mA在这里我选取限流电阻R10 470Ω, 而从PCF8563产生的信号比较微弱, 须加上拉电阻, 在这里选取R8 10K的上拉电阻。为减少噪声影响我们在基极和载波信号间加一抗干扰电阻R9, 阻值为1K。在接收管处为增加输出信号强度和减少噪声影响, 输出端也加一拉电阻R11, 阻值为10K, 由于本设计是利用单片机中断以做出及时响应, 在这里输出需加一反向器然后再送入单片才能达到控制功能, 在这里我采用74LS04。
2.6.3模块电路图
如图2.8所示
图2.8 红外模块电路
2.7 电机模块
2.7.1 核心器件选择
电机分直流电机和步进电机, 而步进电机力矩大且便于精准控制,
步进电动机的励磁方式可分为全步励磁及半步励磁, 其中全步励磁又有1相励磁及2相励磁之分, 而半步励磁又称1-2相励磁。图为步进电动机的控制等效电路, 适应控制A、 B、 /A、 /B的励磁信号, 即可控制步进电动机的转动。每输出一个脉冲信号, 步进电动机只走一步。因此, 依序不断送出脉冲信号, 即可步进电动机连续转动。
1相励磁法: 在每一瞬间只有一个线圈导通。消耗电力小, 精确度良好, 但转矩小, 振动较大, 每送一励磁信号可走18度。若欲以1相励磁法控制步进电动机正转, 其励磁顺序如图所示。若励磁信号反向传送, 则步进电动机反转。
励磁顺序: A→B→C→D→A ( 如下表所示)
STEP
A
B
C
展开阅读全文