毕业设计之万年历.docx
- 文档编号:10857075
- 上传时间:2023-05-28
- 格式:DOCX
- 页数:34
- 大小:418.09KB
毕业设计之万年历.docx
《毕业设计之万年历.docx》由会员分享,可在线阅读,更多相关《毕业设计之万年历.docx(34页珍藏版)》请在冰点文库上搜索。
毕业设计之万年历
绪论
近年来,电子技术和计算机应用领域不断扩大,电子产品已应用到各个行业,电子产品也逐步人性化。
在电子产品的设计中单片机技术已经成为电子技术领域中广泛应用,引领这科技的发展浪潮。
随着单片机档次的不断提高,功能的不断完善,其应用日趋成熟、应用领域日趋扩大,特别是工业测控,尖端武器和日用家电等领域更是因为有了单片机而生辉增色,不少设备、仪器已把单片机作为核心部分。
单片微型计算机的诞生是计算机发展史上的一个新的里程牌。
单片机不仅体积小、成本低、可靠性高,而且单片机还易于扩展,控制功能很强,使用灵活,很容易构成各种规模的应用系统,目前单片机在各个领域中都得到了广泛的应用。
MCS---51系列单片机以其优越的性能,成熟的技术及高可靠性和性能价格比迅速占领了工业测控和智能化等领域,成为国内单片机应用的主流。
电子万年历作为电子类小设计不仅是市场上的宠儿,也是是单片机实验中一个很常用的题目。
因为它的有很好的开放性和可发挥性,可以将芯片与单片机结合起来,通过单片机对芯片的控制可以使走时更加的准确,也可以直接通过单片机的编写达到以上效果。
对于设计者来说采用单片机来实现万年历的各种功能主要是因为单片机集成度体积小、有很高的可靠性。
单片机把各功能部件集成在一块芯片上,内部采用总线结构,减少了各芯片之间的连线,大大高了单片机的可靠性与抗干扰能力。
液晶显示器(LCD)英文全称为LiquidCrystalDisplay,是一种数字显示技术,可以通过液晶和彩色过滤器过滤光源,在平面面板上产生图象,是一种采用了液晶控制透光度技术来实现色彩的显示器,在袖珍中应用越来越广泛。
液晶显示技术近几年来发展很快,各种规格的LCD显示班名目繁多,其专用驱动芯片也都相互配套,使LCD在控制和议表系统中广泛应用提供了极大的方便。
在经过二十多年的研究、竞争、发展,平板显示器已进入角色,成为新世纪显示器的主流产品。
第1章设计思想及要求
1.1设计总体要求
本次设计的液晶显示万年历,整个系统的要求主要是以AT89S51单片机为控制中心。
通过软件编程循环检测实时读取温度和时间,并送给1602液晶显示模块显示;通过按键扫描程序,进行时间校正,设置定时时间和温度上、下限报警;通过红外接收模块实现遥控控制;实现整点报时。
实现的功能:
(1)利用液晶显示年、月、日、星期、时、分、秒、温度。
(2)利用按键进行调时。
(3)利用按键进行定时时间设定。
(4)利用按键进行温度上、下限报警值设定。
(5)利用红外遥控进行时间调整。
(6)利用蜂鸣器进行定时报警;温度上、下限报警;整点报时。
1.2系统方案设计
该系统仍采用MCS-51系列单片机AT89S51作为控制核心。
温度检测仍采用DS18B20温度传感器;采用实时时钟芯片DS12C887计时,由于其内部自带锂电池,断电后内部计数器仍在工作,可以防止突然断电,并且可以自动进行闰年调整和设置定时时间。
显示采用液晶显示模块1602,其体积小,集成度高,耗电量小。
电路连线比较简单,并且制作产品体积小,便于控制和实现。
整个系统具有极其灵活的可编程性,能方便地对系统进行功能的扩张和更改性。
软件控制程序主要有主控程序、万年历电子钟的时间控制程序、还有室内温度采集程序组成。
主控程序中对整个程序进行控制,进行了初始化程序及计数器、还有键盘功能程序、以及显示程序等工作,时间控制程序和温度采集程序是万年历电子表中比较重要的部分。
时间控制程序体现了年、月、日、小时、分钟、秒及星期的计算方法。
而温度采集程序主要是DS18B20对室内温度的采集以及电流/电压与数字间的转换。
第2章万年历的最小应用系统
万年历电子表的最小应用系统包括AT89S51芯片处理器、DS12887时钟芯片、1602液晶显示模块、18B20.
2.1芯片处理器AT89S51
8051单片机的外形采用40条引脚双列直插封装(DIP)或LCC/QFP封装.DIP的引脚和逻辑符号如图2-1所示:
图2-1单片机的引脚和逻辑符号
2.1.1主要特性
(1)与MCS-51兼容
(2)4K字节可编程闪烁存储器。
寿命:
1000写/擦循环数据保留时间:
10年
(3)全静态工作:
0Hz-24Hz
(4)三级程序存储器锁定
(5)128*8位内部RAM
(6)32可编程I/O线
(7)两个16位定时器/计数器
(8)5个中断源
(9)可编程串行通道
(10)低功耗的闲置和掉电模式
(11)片内振荡器和时钟电路
2.1.2管脚说明
VCC:
供电电压。
GND:
接地。
P0口有三个功能:
(1)外部扩充存储器时,当作数据总线(D0~D7)。
(2)外部扩充存储器时,当作地址总线(A0~A7)。
(3)不扩充时,可做一般I/O使用,但内部无上拉电阻,作为输入或输出时应在外部接上拉电阻。
P1口只做I/O口使用,其内部有上拉电阻。
P2口有两个功能:
(1)扩充外部存储器时,当作地址总线(A8~A15)使用。
(2)做一般I/O使用。
其内部有上拉电阻。
P3有两种功能:
除了作为I/O使用外(内部有上拉电阻),还有一些特殊功能,如表2-1所示,由特殊寄存器来设置。
表2-1端口引脚的特殊功能
端口的引脚
特殊功能
P3.0
RXD(串行输入口)
P3.1
TXD(串行输出口)
P3.2
/INT0(外部中断)
P3.3
/INT1(外部中断)
P3.4
T0(TIMER0的外部输入脚)
P3.5
T1(TIMER1的外部输入脚)
P3.6
/WR(外部数据存储器的写入控制信号)
P3.7
/RD(外部数据存储器的读取控制信号)
端口1、2、3有内部上拉电路,当作输入时,其电位被拉高,若输入为低电平可提供电流源,其作为输出时可驱动4个LETTL。
而端口0当作输入时,处在高阻抗的状态,其输出缓冲器可驱动8个LETTL(需要外部的上拉电阻)。
RST:
复位输入。
当振荡器复位器件时,要保持RST脚两个机器周期的高电平时间。
ALE/PROG:
当访问外部存储器时,地址锁存允许的输出电平用于锁存地址的地位字节。
在FLASH编程期间,此引脚用于输入编程脉冲。
在平时,ALE端以不变的频率周期输出正脉冲信号,此频率为振荡器频率的1/6。
因此它可用作对外部输出的脉冲或用于定时目的。
然而要注意的是:
每当用作外部数据存储器时,将跳过一个ALE脉冲。
如想禁止ALE的输出可在SFR8EH地址上置0。
此时,ALE只有在执行MOVX,MOVC指令是ALE才起作用。
另外,该引脚被略微拉高。
如果微处理器在外部执行状态ALE禁止,置位无效。
/PSEN:
外部程序存储器的选通信号。
在由外部程序存储器取指期间,每个机器周期两次/PSEN有效。
但在访问外部数据存储器时,这两次有效的/PSEN信号将不出现。
/EA/VPP:
当/EA保持低电平时,则在此期间外部程序存储器(0000H-FFFFH),不管是否有内部程序存储器。
注意加密方式1时,/EA将内部锁定为RESET;当/EA端保持高电平时,此间内部程序存储器。
在FLASH编程期间,此引脚也用于施加12V编程电源(VPP)。
XTAL1:
反向振荡放大器的输入及内部时钟工作电路的输入。
XTAL2:
来自反向振荡器的输出。
2.1.3定时器/计数器方式控制寄存器TMOD
特殊功能寄存器TMOD用来确定定时器/计数器0和1的工作方式,其低4位用于定时器/计数器0,高4位用于定时器/计数器1,TMOD的格式如表2-2:
表2-2TMOD的格式
D7
D6
D5
D4
D3
D2
D1
D0
GATE
C/T
M1
M0
GATE
C/T
M1
M0
(1)定时器/计数器功能选择位C/T。
C/T=“1”为计数器方式,C/T=“0”为定时器方式。
(2)定时器/计数器工作方式选择位M0,M1。
定时器/计数器4种工作方式的选择由M1,M0的值决定,见表2-3所示:
表2-3定时器/计数器4种工作方式
M1M0
工作方式
00
方式0
13位定时器/计数器
01
方式1
16位定时器/计数器
10
方式2
具有自动重装初值的8位定时器/计数器
11
方式3
定时器/计数器0分为两个8位定时器/计数器,定时器/计数器在此无意义。
(3)门控制位GATE
如果GATE=“1”,定时器/计数器0的工作受芯片引脚INT0(P3.2)控制,定时器/计数器1的工作受芯片引脚INT1(P3.3)控制;如果GATE=“0”,定时器/计数器的工作与引脚INT0,INT1无关。
复位时GATE=“0”
2.1.4定时器/计数器控制寄存器TCON
TCON高4位用于控制定时器0,1的运行,其D7,D6两位用于定时器/计数器1,D5,D4两位用于定时器/计数器0;低4位用于控制外部中断,与定时器/计数器无关。
TCON的格式如表2-4:
表2-4TCON的格式
D7
D6
D5
D4
D3
D2
D1
D0
TF1
TR1
TF0
TR0
IE1
IT1
IE0
IT0
(1)定时器/计数器运行控制位TR0,TR1。
TRi=“1”时。
启动定时器/计数器工作。
TRi=“0”,停止定时器/计数器工作。
TRi由软件置“1”或清“0”。
(2)定时器/计数器1溢出中断标志TF0,TF1。
定时器/计数器计满溢出时,由硬件自动置TFi=“1”。
在允许中断的条件下,向CPU发出定时器/计数器的中断请求信号:
CPU响应中断,转入中断服务程序时,TFi由硬件自动清零。
在中断屏蔽条件下,TFi作为查询测试用,但是需要用程序清“0”。
在工作方式1时,计数器的计数初值由公式2-1求出:
N=216-X=65536-X(公式2-1)
式子中X为计数次数,范围为1~65536。
定时器的定时时间由公式2-2求出:
T=(65536-X)Tc(公式2-2)
如果fosc=12MHz,那么定时范围为1μs~65536μs。
2.1.5复位
8051片内的复位电路复位引脚RST/Vpd通过片内施密特触发器(滤除噪声)与片内复位电路相连。
复位电路在每一个机器周期的S5P2去采样施密特触发器的输出。
欲使单片机可靠复位,要求RST/Vpd复位保持两个机器周期(24个时钟周期)以上的高点平。
复位不影响内部RAM中数据。
复位后,PC=0000指向程序存储器0000H地址单元,使CPU从首地址0000H单元开始重新执行程序,所以单片机系统在运行出错或进入死循环时,可以按复位键重新启动。
2.1.6中断源
定时脉冲中断源又称为定时器中断源,是由定时脉冲电路或定时器产生。
定时脉冲中断源用于产生定时器中断。
定时器中断有内部和外部之分,内部定时器中断由单片机内部的定时器/计数器溢出时自动产生,故又称为内部定时器溢出中断;外部定时器中断通常由外部定时电路的定时脉冲通过CPU的中断请求输入线引起。
不论是内部定时器中断还是外部定时器中断都可以使CPU进行计时处理,以便达到时间控制的目的。
2.1.7掉电模式
为了进一步降低功耗通过软件可实现掉电模式,该模式中振荡器停振并且在最后一条指令执行进入掉电模式降到2.0伏时片内RAM和SFR保持原值在退出掉电模式之前Vcc必须升至规定的最低操作电压。
硬件复位或外部中断均可结束掉电模式硬件复位使SFR值重新设置但不改变片内RAM的值外部中断允许SFR和片内RAM都保持原值。
要正确退出掉电模式在Vcc恢复到正常操作电压范围之前复位或外部中断不会被执行并且要保持足够长的时间(通常不小于10ms)以使振荡器重新启动并稳定下来。
使用外部中断时INT0和INT1必须使能且配置为电平触发将管脚电平拉低使振荡器重新启动退出掉电模式后将管脚恢复为高电平一旦中断被响应RETI之后所执行的是进入掉电模式指令的后一条指令。
2.2DS12887时钟芯片
日历时钟芯片DS12887外部采用24个管脚的双列直插式封装,如图2-2:
图2-2DS12887的引脚和逻辑符号
2.2.1DS12887主要功能简介
(1)管脚与日历时钟芯片MC146818B及DS1287兼容.
(2)在断电情况下,数据可保存10年不变。
(3)芯片内部具有时钟电路,可自动记录秒,分钟,小时,星期,日,月,年等数据,数据格式有两种,二进制和BCD码形式。
小时数据方式可采用12小时形式或24小时形式记录。
(4)芯片内部还包含有114字节的NVSRAM区,14字节专用寄存器和时钟数据寄存器。
(5)具有总线兼容的中断信号IRQ,3个独立的中断源.
2.2.2原理及引脚说明
DS12887内部由振荡电路,分频电路,周期中断/方波选择电路,14字节时钟和控制单元,114字节用户非易失RAM,十进制/二进制累加器,总线接口电路,电源开关写保护单元和内部锂电池等部分组成。
DS12887引脚分配如图1:
Vcc:
直流电源+5V电压。
当5V电压在正常范围内时,数据可读写;当Vcc低于4.25V,读写被禁止,计时功能仍继续;当Vcc下降到3V以下时,RAM和计时器供电被切换到内部锂电池。
MOT(模式选择):
MOT引脚接到Vcc时,选择MOTOROLA时序,当接到GND时,选择Intel时序。
SQW(方波信号输出):
SQW引脚能从实时钟内部15级分频器的13个抽头中选择一个作为输出信号,其输出频率可通过对寄存器A编程改变。
AD0-AD7(双向地址/数据复用线):
总线接口,可与MOTOROLA.htm"target="_blank"title="Motorola货源和PDF资料">Motorola微机系列和Intel微机系列接口。
AS(地址选通输入):
用于实现信号分离,在AD/ALE的下降沿把地址锁入DS12887。
DS(数据选通或读输入):
DS/RD引脚有两种操作模式,取决于MOT引脚的电平,当使用MOTOROLA.htm"target="_blank"title="Motorola货源和PDF资料">Motorola时序时,DS是一正脉冲,出现在总线周期的后段,称为数据选通;在读周期,DS指示DS12887驱动双向总线的时刻;在写周期,DS的后沿使DS12887锁存写数据。
选择Intel时序时,DS称作(RD),RD与典型存贮器的允许信号(OE)的定义相同。
R/W(读/写输入):
R/W引脚也有两种操作模式。
选MOTOROLA.htm"target="_blank"title="Motorola货源和PDF资料">Motorola时序时,R/W是低电平信号时,指示当前周期是读或写周期,DS为高电平时,R/W高电平指示读周期,R/W信号一低电平信号,称为WR。
在此模式下,R/W引脚与通用RAM的写允许信号(WE)的含义相同。
CS(片选输入):
在访问DS12887的总线周期内,片选信号必须保持为低。
IRQ(中断申请输入):
低电平有效,可作微处理的中断输入。
没有中断的条件满足时,IRQ处于高阻态。
IRQ线是漏极开路输入,要求外接上接电阻。
RESET(复位输出):
当该脚保持低电平时间大于200ms,保证DS12887有效复位。
2.2.3时钟、日历单元
在芯片DS12887内部具有一个自动计时单元电路,它可以自动记录秒,分钟,小时等时钟数据,并将数据保存在相应的单元中,同时芯片内部还有一个100年日历,可自动记录日历数据.通过对寄存器的访问,便可获知时钟和日历数据.这10个寄存器的内容还可以由程序初始化,数据方式既可以是二进制码的形式,也可以是BCD码形式,但这10个字节数据的存储必须采取同种方式.当需要对这些字节初始化时,首先确定数据的存储方式,然后将寄存器B中的数据方式位(DM)置为相应的格式,第三步,将寄存器B中的置位位(SET)置为1,接着把数据写入须初始化的单元,在数据写完后,必须将寄存器B中的置位位(SET)清0,以便时钟电路能够自动校正时钟和日历数据.
(1)定时单元的介绍
在前10个时钟日历单元寄存器中,有3个定时单元,分别为秒定时,分钟定时以及小时定时.这3个定时单元有两种使用方法:
第一:
当在这3个单元中写入每天指定的时间后,若定时中断使能位为高电平,则在每天的指定时刻,均会发出中断信号.
第二:
当在这3个单元中写入00-FF之间的任意一个非定时数据时,则会产生如下情形:
若在小时定时单元中写入该范围的任意一个数据时,芯片在每小时会发出一次中断请求信号;若在小时定时单元和分钟定时单元写入该范围的数据,则芯片在每分钟发出一次中断信号;若在这3个定时单元中都写入该范围的数据,则芯片在每秒钟发出一次中断信号.
(2)中断
为了使芯片的功能更加完善,DS12887内部设置了3个独立的中断源,包括定时中断,周期中断以及校准中断.对于这3个中断,寄存器B及寄存器C都有相应的控制位来分别控制这3个中断的产生。
在寄存器B中,有3个中断使能位,当需要使用某个中断产生中断信号时,必须先将相应的中断使能位置1,芯片才能允许相应的中断信号从1RQ端输出,若在中断使能位写入0,则禁止相应的中断信号产生.在寄存器c中,有3个中断标志位,与3个中断源是一一对应的.当某个中断发生时,相应的中断标志位被自动置1,须注意的是,这些中断标志位与对应的中断使能位的设置是不相关的,当中断使能位设置为0时,虽然不产生中断信号,但当中断的条件满足时,中断标志就会被置1。
所以,中断标志位是一种状态位,用户可通过软件查询这些状态位,当某个中断标志位是1时,表示此中断已经产生了一次.每读取一次寄存器C的内容后,这些标志位都会被清0.当某个中断标志位及中断使能位都为有效时,才会使IRQ脚产生有效信号(低电平)。
(3)校准中断
日历时钟芯片DS12887内部具有一个时钟电路,它在每秒钟都会产生一个校准信号来校准寄存器中的日历和时钟数据。
在校准周期中,同样会将定时单元中的数据与相应的时钟单元数据进行比较,若二者相同,则发出定时到的信号.在内部电路进行时钟校准时,不能对时钟及日期寄存器进行访问,否则会打乱寄存器中的数据.为了避免这种情况的产生,可以采取2种方法:
第一种方法是采用校准中断.如果校准中断开放,则在每一个校正周期结束后都会发出中断信号,表明有多于999MS的时间可用于读取有效的时钟及日历数据.在中断响应完毕后,必须读取寄存器C,将中断标志清0.
第二种方法是将寄存器A中的校准标志位UIP来判断校准周期是否正在进行中.在寄存器A中有一个校准进行标志位UIP,它是一个状态标志位,它在每秒针产生一个高电平.当它为1时,表明校准周期马上要进行,此时不能读取时钟及日期数据;当它为0时,表明有244微秒的时间可用来读取数据,因此中断服务程序读取数据时应避免超过244微秒.
2.31602液晶显示模块
1602液晶模块内部的字符发生存储器(CGROM)已经存储了160个不同的点阵字符图形,这些字符有:
阿拉伯数字、英文字母的大小写、常用的符号、和日文假名等,每一个字符都有一个固定的代码,比如大写的英文字母“A”的代码是01000001B(41H),显示时模块把地址41H中的点阵字符图形显示出来,我们就能看到字母“A”。
2.3.1原理及引脚说明
VDD接5V正电源
VSS地电源
V0液晶显示器对比度调整端,接正电源时对比度最弱,接地电源时对比
最高,对比度过高时会产生“鬼影”,使用时可以通过一个10K的电位器调整对比度。
RS为寄存器选择,高电平时选择数据寄存器、低电平时选择指令寄存器。
RW为读写信号线,高电平时进行读操作,低电平时进行写操作。
当RS和RW共同为低电平时可以写入指令或者显示地址,当RS为低电平RW为高电平时可以读忙信号,当RS为高电平RW为低电平时可以写入数据。
E端为使能端,当E端由高电平跳变成低电平时,液晶模块执行命令。
D0~D7为8位双向数据线。
2.3.2主要技术参数
1602的主要技术参数见表2-5:
表2-51602液晶显示屏主要技术参数
2.4温度传感器DS18B20
2.4.1DS18B20的主要特性
(1)独特的单线接口方式:
DS18B20与微处理器连接时仅需要一条口线即可实现微处理器与DS18B20的双向通讯。
(2)在使用中不需要任何外围元件。
(3)可用数据线供电,电压范围:
+3.0~+5.5V。
(4)测温范围:
-55~+125℃。
固有测温分辨率为0.5℃。
(5)通过编程可实现9~12位的数字读数方式。
(6)用户可自设定非易失性的报警上下限值。
(7)支持多点组网功能,多个DS18B20可以并联在惟一的三线上,实现多点测温度。
(8)负压特性,电源极性接反时,温度计不会因发热而烧毁,但不能正常工作。
2.4.2DS18B20工作原理
DS18B20的读写时序和测温原理与DS1820相同,只是得到的温度值的位数因分辨率不同而不同,且温度转换时的延时时间由2s减为750ms。
DS18B20测温原理如图2-3所示。
图中低温度系数晶振的振荡频率受温度影响很小,用于产生固
图2-3测温原理图
定频率的脉冲信号送给计数器1。
高温度系数晶振随温度变化其振荡率明显改变,所产生的信号作为计数器2的脉冲输入。
计数器1和温度寄存器被预置在-55℃所对应的一个基数值。
计数器1对低温度系数晶振产生的脉冲信号进行减法计数,当计数器1的预置值减到0时,温度寄存器的值将加1,计数器1的预置将重新被装入,计数器1重新开始对低温度系数晶振产生的脉冲信号进行计数,如此循环直到计数器2计数到0时,停止温度寄存器值的累加,此时温度寄存器中的数值即为所测温度。
图3-1中的斜率累加器用于补偿和修正测温过程中的非线性,其输出用于修正计数器1的预置值。
2.4.3DS18B20有4个主要的数据部件
(1)光刻ROM中的64位序列号是出厂前被光刻好的,它可以看作是该DS18B20的地址序列码。
64位光刻ROM的排列是:
开始8位(28H)是产品类型标号,接着的48位是该DS18B20自身的序列号,最后8位是前面56位的循环冗余校验码(CRC=X8+X5+X4+1)。
光刻ROM的作用是使每一个DS18B20都各不相同,这样就可以实现一根总线上挂接多个DS18B20的目的。
(2)DS18B20中的温度传感器可完成对温度的测量,以12位转化为例:
用16位符号扩展的二进制补码读数形式提供,以0.0625℃/LSB形式表达。
这是12位转化后得到的12位数据,存储在18B20的两个8比特的RAM中,二进制中的前面5位是符号位,如果测得的温度大于0,这5位为0,只要将测到的数值乘于0.0625即可得到实际温度;如果温度小于0,这5位为1,测到的数值需要取反加1再乘于0.0625即可得到实际温度。
(3)DS18B20温度传感器的存储器:
DS18B20温度传感器的内部存储器包括一个高速暂存RAM和一个非易失性的可电擦除的EEPRAM,后者存放高温度和低温度触发器TH、TL和结构寄存器。
(4)配置寄存器:
该字节各位的意义如表2-6:
表2-6配置寄存器结构
低五位一直都是"1",TM是测试模式位,用于设置DS18B20在工作模式,还是在测试模式。
在DS18B20出厂时该位被设置为0,用户不要去改
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 毕业设计 万年历