基于单片机的作息时间控制系的设计与实现毕业论文Word格式文档下载.docx
《基于单片机的作息时间控制系的设计与实现毕业论文Word格式文档下载.docx》由会员分享,可在线阅读,更多相关《基于单片机的作息时间控制系的设计与实现毕业论文Word格式文档下载.docx(97页珍藏版)》请在冰豆网上搜索。
因其功耗低,超高型,低成本,功能完整,在国内越来越受到用户的重视和广泛使用。
本设计是一个具有打铃、当前环境温度显示、教室灯光、广播、校门开关的自动控制等功能的作息时间控制系统。
同时该系统也是一可调式万年历,采用SG12864液晶具有良好的菜单式人机界面更使本系统增色不少。
它利用PCF8563实时时钟芯片计时,进行年历计算,并用SG12864将当前日期、星期、时间出来;
在进行时间计算,分每加一时,都与规定的作息时间比较,如果相等则进行相应的控制或动作。
由单片机核心控制模块、键盘模块、电机模块、实时时钟模块、红外模块、液晶显示模块、温度传感器模块、数据存储模块、外围驱动模块九部分组成,系统扩展16个矩阵按键用于打铃时间调整及时间校正。
现代机关企业,特别是学校要求对时间加以控制,要按时打铃及播放广播,以保证学习与工作的正常运行。
本设计实现了这些功能,给学校及其他机关企业带来方便,整体性好,人性化强、可靠性高,实现了对时间控制的智能化。
1.2方案比较
作息时间控制系统的设计有很多方案可以实现,其主流技术主要有以下几种:
(1)用可编程逻辑器件(如CPLD、FPGA)来实现,而在本设计中如要实现功能相对来说比较复杂,必须得用到FPGA来实现,而FPGA的价格相对较贵,且系统设计比较困难。
(2)用PLC来实现,PLC其实就是一被封装起来的单片机,里面设有监控程序,并对I/O端口进行了光电隔离。
这样一来使得PLC性能稳定且容易使用,且只需简单外围电路就可以实现该系统功能,但PLC比较昂贵,这样会使成本增高而失去市场竞争。
(3)就是用555定时器产生时钟脉冲和数字芯片(如74LS14)来实现,但要来实现本设计需要大量的数字芯片,使得系统稳定性下降,生产难度加大,而且成本会增加。
(4)就是应用单片充当主控器来再加上适量的外围实现此功能,且单片机价格便宜,性能稳定。
应用的外围器件相对较少,这就提高了系统的稳定性,且单片机控制简易,开发工具简单,很容易大批量生产。
经过以上比较,最终我们选择第(4)种方案来实施。
二.整体设计方框图
三.模块电路设计
3.1单片机核心控制模块
A.核心器件的选择
单片机是本设计的核心器件,因此单片机的选择决定了该设计的稳定和性能,目前单片机市场种类繁多,有几千种不同型号,单片机的选择应遵循在能满足性能条件下尽可能的选择功耗小资源少价格低,而且货源充足的。
现在主流单片机种类有以下几类:
PIC单片机:
是MICROCHIP公司的产品,其突出的特点是体积小,功耗低,精简指令集,抗干扰性好,可靠性高,有较强的模拟接口,代码保密性好,大部分芯片有其兼容的FLASH程序存储器的芯片。
EMC单片机:
是台湾义隆公司的产品,有很大一部分与PIC8位单片机兼容,且相兼容产品的资源相对比PIC的多,价格便宜,有很多系列可选,但抗干扰较差。
ATMEL单片机(51单片机):
ATMEL公司的8位单片机有AT89、AT90两个系列,AT89系列是8位Flash单片机,与8051系列单片机相兼容,静态时钟模式;
AT90系列单片机是增强RISC结构、全静态工作方式、内载在线可编程Flash的单片机,也叫AVR单片机。
PHLIPIS51PLC系列单片机(51单片机):
PHILIPS公司的单片机是基于80C51内核的单片机,嵌入了掉电检测、模拟以及片内RC振荡器等功能,这使51LPC在高集成度、低成本、低功耗的应用设计中可以满足多方面的性能要求。
HOLTEK单片机:
台湾盛扬半导体的单片机,价格便宜,种类较多,但抗干扰较差,适用于消费类产品。
TI公司单片机(51单片机):
德州仪器提供了TMS370和MSP430两大系列通用单片机.TMS370系列单片机是8位CMOS单片机,具有多种存储模式、多种外围接口模式,适用于复杂的实时控制场合;
MSP430系列单片机是一种超低功耗、功能集成度较高的16位低功耗单片机,特别适用于要求功耗低的场合。
最后我们决定选用ATMEL公司的AT89S51单片机,AT89S51是ATMEL公司生产的低功耗,高性能、高性价比的CMOS8位单片机,片内含4Kbytes的可系统编程的Flash只读程序存储器,器件采用ATMEL公司的高密度、非易失性存储技术生产,兼容标准8051指令系统及引脚。
它集Flash程序存储器既可在线编程(ISP)也可用传统方法进行编程及通用8位微处理器于单片芯片中,AT89S51含有128×
8字节内部RAM、32个可编程I/O口线、2个16位定时/计数器、6个中断源和全双工串行UART通道,已能满足系统控制需求。
B.模块电路设计
单片机运行需要满足几个条件,首先必需提供电源,还时钟振荡源,还有复位。
由于十二个时钟周期构成一个机器周期,在这里为方便计算我们选取晶振频率为12MHZ的晶振,因为晶振产生的信号比较弱,电容选取范围只能是小于30PF,在这里我们选取C1、C2为22PF。
当单片机的复位端持续为两个机器周期高电平时产生复位,因此复位电路的参数需要根据晶振来决定,单片机控制系统一般都要求达到上电复位,因此这就对电容和电阻的选择有一定的要求,这可以通过计算来得出元件参数,但单片机最小系统的参数有一个经验值,在这里我们选用取R2100Ω、R110K,C3取10UF。
由于单片机的P0口结构的特殊性,需加上拉电阻,这里我们选取阻值为10K的电阻,而耐压值的选择我们则只须选择大于7.5V就行了。
C.模块电路图
3.2键盘模块
A.键盘电路选择
键盘可以有几种选择:
一种是利用键盘LED芯片(如HD7279、HD8279、MAX7219等),一种则是直接利用单片机I/O口搭建键盘电路。
采用键盘LED芯片,具有编程简单,抗干扰能力强、稳定性好、功能强大等特点,但其成本比较高,而且占用额外的功耗和空间,通常用在对键盘读取要求较高的场合。
而普通的键盘电路,则有电路简单,成本低等特点,但其抗干扰能力较前者弱。
而键盘电路结构又分为直接型和矩阵型,直接型具有编程、电路简单等特点,但占用的I/O口比较多,适用于只需少量键盘的场合。
矩阵型具有电路、编程复杂等特点,但占用I/O口少,比较适应于要求键盘比较多的场合。
而本设计的显示电路是采用的LCD显示,且对键盘读取要求也不是太高,采取键盘芯片不能充分利用其功能,有点浪费。
且单片机I/O口比较紧张,所以决定采用普通矩阵键盘。
B.模块电路设计
在本设计中有用到数字键0-9,且还有上、下、左、右、确定、取消键。
一共十六个键,刚好可用8个I/O口组成4*4矩阵键盘。
而矩阵键盘的搭建比较简单,只需遵循行列相交搭建就行,而必需在行或列添加上拉电阻,而上拉电阻的选取就只需遵循上拉电流小于单片机最大灌电流就行,在这里我们选取10K的电阻来充当上拉电阻。
C.模块电路图
3.3实时时钟模块
A.核心器件选择
在单片机内部,可以利用定时器进行计时,也可以实现功能,但利用内部定时器进行计时会产生计时不精确,且增加了CPU的负担和编程的难度,再就是掉电重启后时间会全部被初始化。
因此我们采用实时时钟芯片,实时时钟芯片的种类繁多。
在这里我们选用PCF8563实时时钟芯片。
PCF8563是低功耗的CMOS实时时钟/日历芯片,它提供一个可编程时钟输出,一个中断输出和掉电检测器,所有的地址和数据通过I2C总线接口串行传递。
最大总线速度为400Kbits/s,每次读写数据后,内嵌的字地址寄存器会自动产生增量,可编程时钟输出刚好可以为红外发射管提供载波信号。
特性
*低工作电流:
典型值为0.25μA(VDD=3.0V,Tamb=25℃时)。
*世纪标志
*大工作电压范围:
1.0~5.5
*低休眠电流;
典型值为0.25μA(VDD=3.0V,Tamb=25℃)
*400KHz的I2C总线接口(VDD=1.8~5.5V时)。
*可编程时钟输出频率为:
32.768KHz,1024Hz,32Hz,1Hz。
*报警和定时器。
*掉电检测器。
*内部集成的振荡器电容。
*片内电源复位功能。
*I2C总线从地址:
读,0A3H;
写,0A2H。
*开漏中断引脚。
PCF8563有16个8位寄存器:
一个可自动增量的地址寄存器,一个内置32.768KHz的振荡器(带有一个内部集成的电容),一个分频器(用于给实时时钟RTC提供源时钟),一个可编程时钟输出,一个定时器,一个报警器,一个掉电检测器和一个400KHzI2C总线接口。
所有16个寄存器设计成可寻址的8位并行寄存器,但不是所有位都有用。
前两个寄存器(内存地址00H,01H)用于控制寄存器和状态寄存器,内存地址02H~08H用于时钟计数器(秒~年计数器),地址09H~0CH用于报警寄存器(定义报警条件),地址0DH控制CLKOUT管脚的输出频率,地址0EH和0FH分别用于定时器控制寄存器和定时器寄存器。
秒、分钟、小时、日、月、年、分钟报警、小时报警、日报警寄存器,编码格式为BCD,星期和星期报警寄存器不以BCD格式编码。
当一个RTC寄存器被读时,所有计数器的内容被锁存,因此,在传送条件下,可以禁止对时钟/日历芯片的错读。
一个或多个报警寄存器MSB(AE=AlarmEnable报警使能位)清0时,相应的报警条件有效,这样,一个报警将在每分钟至每星期范围内产生一次。
设置报警标志位AF(控制/状态寄存器2的位3)用于产生中断,AF只可以用软件清除。
8位的倒计数器(地址0FH)由定时器控制寄存器(地址0EH)控制,定时器控制寄存器用于设定定时器的频率(4096,64,1,或1/60Hz),以及设定定时器有效或无效。
定时器从软件设置的8位二进制数倒计数,每次倒计数结束,定时器设置标志位TF,定时器标志位TF只可以用软件清除,TF用于产生一个中断(/INT),每个倒计数周期产生一个脉冲作为中断信号。
TI/TP控制中断产生的条件。
当读定时器时,返回当前倒计数的数值。
管脚CLKOUT可以输出可编程的方波。
CLKOUT频率寄存器(地址0DH;
参见表23)决定方波的频率,CLKOUT可以输出32.768KHz(缺省值),1024,32,1Hz的方波。
CLKOUT为开漏输出管脚,通电时有效,无效时为高阻抗。
表1PCF8563寄存器结构
地址
寄存器名称
D7
D6
D5
D4
D3
D2
D1
D0
00H
控制/状态寄存器1
TEST
STOP
TTESTC
01H
控制/状态寄存器2
TI/TP
AF
TF
AIE
TIE
02H
秒寄存器
VL
00~59BCD码格式数
03H
分寄存器
-
04H
时寄存器
00~23BCD码格式数
05H
日寄存器
00~31BCD码格式数
06H
星期寄存器
00~06BCD码格式数
07H
月/世纪寄存器
C
00~12BCD码格式数
08H
年寄存器
00~99BCD码格式数
09H
分钟报警寄存器
AE
0AH
时钟报警寄存器
0BH
日报警寄存器
0CH
星期报警寄存器
0DH
CLKOUT频率寄存器
FE
-
FD1
FD0
0EH
定时控制寄存器
TE
TD1
TD0
0FH
定时器倒计时数值寄存器
定时器倒数计数数值
本模块电路比较简单,只需注意一个地方,那就是实时时钟芯片一般装有后备电池,以保证当断电时仍继续计时,这就需要考虑一个当断电时电流反灌而损坏电源的问题,还有就是当从断电状态进入上电电压的瞬时上升会造成电池寿命的缩短,因此我们在电源和地之间需加一二极管和缓冲电容,二极管的选取只须考虑最大正向整流电流和最大反向电压,在这里们选取4148,而缓冲电容则选取0.047F。
而晶振必须选取32.768KHZ,在晶振和地之间须串联一耦合电容,耦合电容只须小于35P就可以了,在这里我们先取18P。
2.4数据存储模块
A.核心器件选择
本模块的设计是为了增加在线调整作息时间,以更适应现实生活中的需要。
而数据存储芯片,我们采用非掉电易失的串行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/1024/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置于低功耗的备用方式(StandbyMode).
应答信号:
应答信号是由接受资料的器件发出的。
当EEPROM接受完一个写入资料之后,会在SDA上发一个”0”应答信号。
反之,当单片机接受完来自EEPROM的资料后,单片机也应向SDA发ACK信号。
ACK信号在第9个时钟周期时出现。
备用方式(StandbyMode):
AT24C01A/02/04/08/16都具有备用方式,以保证在没有读写操作时芯片处于低功耗状态。
在下面两种情况中,EEPROM都会进入备用方式:
第一,芯片通电的时候;
第二,在接到停止位和完成了任何内部操作之后。
AT24C01等5种典型的EEPROM在进入起始状态之后,需要一个8位的“器件地址字”去启动内存进行读或写操作。
在写操作中,它们有“字节写”,“页面写”两种不同的写入方法。
在读操作中,有“现行地址读”,随机读和“顺序读”种各具特点的读出方法。
下面分别介绍器件寻址,写操作和读操作。
①器件寻址:
所谓器件寻址(DeviceAddressing)就是用一个8位的器件地址字(DeviceAddressWord)去选择内存芯片。
在逻辑电路中的AT24CXX系列的5种芯片种,即AT24C01A/02/04/08/16中,如果和器件地址字相比较结果一致,则读芯片被选中。
下面对器件寻址的过程和意义加以说明。
②芯片的操作地址
1
A2
A1
A0
R/W
用于内存EEPROM芯片寻址的器件地址字如图所示。
它有4种方式,分别对应于1K/2K,4K,8K和16K位的EEPROM芯片。
从图中看出:
器件地址字含有3个部分。
第一部分是高4位,它们称为EEPROMAT24C01A/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个页面的写入。
对于A