4711基于单片机数字式日历温度显示系统的设计1do2Bc.docx
《4711基于单片机数字式日历温度显示系统的设计1do2Bc.docx》由会员分享,可在线阅读,更多相关《4711基于单片机数字式日历温度显示系统的设计1do2Bc.docx(34页珍藏版)》请在冰豆网上搜索。
4711基于单片机数字式日历温度显示系统的设计1do2Bc
毕业设计
数字式日历温度显示系统的设计
DigitalCalendarTemperatureDisplay
院系
专业电
姓名
指导教师
目录
前言…………………………………………………………………………………3
第一章绪论………………………………………………………………………4
第一节提出问题确立初步方案…………………………………………4
第二节系统总体框图……………………………………………………5
第二章主要硬件的功能与应用…………………………………………………5
第一节AT89C52芯片介绍………………………………………………5
第二节DS12887功能简介………………………………………………10
第三节DS18B20温度传感器……………………………………………13
第四节多功能器件X25045特点及应用………………………………15
第五节键盘工作原理……………………………………………………17
第六节采用MAX232实现MCS-51单片机与PC机的通信……………18
第三章程序流程图………………………………………………………………25
第一节DS18B20软件流程图……………………………………………25
第二节x25045软件流程图………………………………………………27
第四章键盘接口的类型与设计…………………………………………………28
第一节键盘类型介绍……………………………………………………28
第二节键盘扫描方式……………………………………………………31
谢词…………………………………………………………………………………35
第五章结束语……………………………………………………………………36
参考文献……………………………………………………………………………37
前言
由于数字式日历、温度显示器在各个行业的广泛应用,各企业也投入更多的人力,物力,尤其是在单片机控制系统上的重视程度越来越高,我们所设计的是利用单片机控制系统来实现的数字式日历、温度显示器。
在日常生活中的很多场所,如变电所、银行等,需要一个非常明显的显示装
置,可以显示出现在的年、月、日、时、分、秒,安全运行天数,从某年、某月、某日开始运行,现在场所的温度、湿度值等。
这样可以给广大消费者带来很大的方便,为了满足上述需求,我们研究设计了一种单片机控制的数字式日历、温度显示系统。
本系统我们采用了89C52单片机,时钟由时钟芯片DS12887提供;显示部分采用高亮度LED显示器,共32位显示;模拟量输入:
采用集成传感器DS1820,测量范围:
-50---+150;开关量输出为继电器输出;最高温度和最低温度状态指示为发光二极管;按键:
设置3个按键和一个拨动开关
本论文在编写过程中,得到山东理工大学电气与电子工程学院副教授姜志海的悉心指导,在次表示深深的谢意。
另外在编写过程中,还参阅和利用了国内外大量文献、资料,对这些文献作者也在次致以谢意。
由于作者水平有限,加上时间仓促,本论文难免有不足和疏漏之处,热忱欢迎广大读者批评指正,提出宝贵意见。
学生:
刘国栋
2005年5月25日
第一章绪论
第一节提出问题确立初步方案
一、问题的提出
在日常生活中的很多场所,如变电所、银行等,需要一个非常明显的显示装
置,可以显示出现在的年、月、日、时、分、秒,安全运行天数,从某年、某月、某日开始运行,现在场所的温度、湿度值等。
这样可以给广大消费者带来很大的方便,为了满足上述需求,我们研究设计了一种单片机控制的数字式日历温度显示系统。
二、设计方案初步确立
数字式日历温度显示系统的设计是一套基于单片机的综合控制系统,包括很
多方面。
本次设计由于时间等各方面的限制只完成了其中的大部分的内容
1.选择单片机:
根据控制系统所要求的控制精度,响应速度,开发环境,I/O点数,输入/
输出通道数等情况,我们选择了MCS—51系列的8位单片机89C52。
AT89C52是一种带8K字节闪速可编程可擦除只读存储器(EEPROM)的低
电压、高性能CMOS8位为制器。
该器件采用ATMEL非易失存储器制造技术制造,与工业标准的80C51和80C52输出管相兼容。
由于将多功能8位CPU和闪速存储器组合在单个芯片中,ATMEL的AT89C520是一种高性能控制器,为很多嵌入式控制系统提供了一种灵活性高且价廉的方案。
2.选择时钟芯片:
DS12887是美国达拉斯半导体公司(Dallas)最新推出的串行接口实时时
钟芯片,采用CMOS技术制成,具有内部晶振和时钟芯片备份锂电池,同时它与目前IBMAT计算机常用的时钟芯片MC146818B和DS1287管脚兼容,可直接替换。
它所提供的世纪字节在位置32h,世纪寄存器32h到2000年1月1日从19递增到20。
采用DS12887芯片设计的时钟电路不需任何外围电路和器件,并具有良好的微机接口。
DS12887芯片具有微功耗,外围接口简单,精度高,工作稳定可靠等优点,可广泛用于各种需要较高精度的实时时钟系统。
3.集成传感器的选择:
DS18B20是美国DALLAS公司继DS1820之后推出的增强型单总线数字式温度传感器,它在转换速度、转换时间、传输距离、分辨率等方面较DS1820有了很大的改进,给用户带来了更方便、更令人满意的效果。
4.串行通讯接口的选择
在单片机应用系统中,数据通信主要采用异步串行通信方式.在设计通信接口时,必须根据需要选择标准接口,并考虑传输介质、电平转换等问题。
RS-232C是美国电子工业协会1969年公布的,是在异步通信中应用最广泛的总线标准。
他的通信距离不大于15米,传输速率最高为19.2kb/s。
适合于短距离或带调制解调器的通信场合。
MAX232芯片是MAXIM公司生产的低功耗、单电源双RS232发送/接收器,用于各种EIA-232E和V.28/V.24的通信接口。
采用此芯片接口的串行通信系统只要单一的+5V电源就可以。
其适应性更强,加之其价格低,硬件接口简单,所以被广泛应用。
2
第二节系统总体框图
如图1所示,是数字式日历温度显示系统的总体框图:
数字式日历温度显示系统总体框图
第二章主要硬件的功能与应用
本章主要论述了系统中所选的芯片的主要、结构、典型用途和接法,以及主要命令字的编写和一些有关的计算
第一节AT89C52芯片介绍
AT89C52是一种带8K字节闪速可编程可擦只读存储器的低电压、高性能CMOS8位微控制器。
该器件采用ATMEL非易失性存储器制造技术制造,与工业标准的80C51和80C52指令集和输出管脚相兼容。
由于将多功能8位CPU和闪速存储器组合在单个芯片中,ATMEL的AT89C52是一种高效微控制器,为很
3
多嵌入式控制系统提供了一种灵活性高且廉价的方案。
ATMEL带8K字节闪速存储器的8位单片机特性:
1.与80C51和80C52产品兼容;
2.8K字节可编程闪速存储器;寿命:
1000写/擦循环;数据保留时间:
10年;
3.静态工作:
0—24MHZ;
4.三级程序存储器锁定;
5.2568位内部ROM;
6.32条可编程I/O口;
7.3个16位定时器/计数器;
8.8个中断源可编程串行通道;
9.低功耗的闲置和掉电模式;
一、管脚说明:
1.主电源引脚Vcc和GND
Vcc:
供电电压,正常操作是为+5V电源。
GND:
接地。
2.外接晶体引脚XTAL1和XTAL2
XTAL1:
内部振荡电路反相放大器的输入端,是外接晶体的一个引脚。
当采用外部振荡器时,此引脚接外部电源。
XTAL1:
内部振荡电路反相放大器的输出端,是外接晶体的一个引脚。
当采用外部振荡器时,此引脚接外部电源。
3.控制或复位引脚RST,ALE/PROG,PSEN,EA/Vpp
RST:
复位输入,当振荡器复位时,要保持RST脚两个机器周期的高电平时间。
ALE/PROG:
当访问外部寄存器时地址锁存器允许的输出电平用于锁存地址的低字节位。
在FLASH编程期间,此引脚用于输入编程。
在平时,ALE脉冲信号,此频率为振荡频率的1/6。
因此它可用作对外部输出的时端以不变的频率周期输出时钟,或用语定时目的。
PSEN:
此输出为外部程序存储器的选读信号。
在由外部程序存储器取指期间,每个机器周期两次PSEN有效。
但在访问外部存储器时,这两次有效的PSEN信号将不出现。
4
EA/Vpp:
当EA保持低电平时,则只此间外部寄存器不管是否有内部程序存储器,注意加密方式1时EA将内部被锁为RESET。
当EA保持高电平时,此间对内部程序存储器进行操作,在FLASH编程期间也用于施加12V编程电源。
4.输入/输出引脚P0.0͟P0.7,P1.0―P1.7,P2.0―P2.7,P3.0―P3.7
P0.0͟P0.7:
P0是一个8位漏极开路型双向I/O口,在访问外部存储器时,它分时传送低字节地址和数据总线。
P0口能以吸收电流的方式驱动8个LSTTL负载。
P1.0―P1.7:
P1口是一个内部提供上拉电8位双向I/O口,P1.0和P1.1可作为定时器2外部计数器和定时器2外部控制端,祥见表
在FLASH编程和校验时,P1口作为低8位地址接收。
交替功能
P1.0
T2(定时器/计数器2外部记数输入)时钟输出
P1.1
T2(定时器/计数器2捕捉/再装配控制)
表2
P2.0—P2.7:
P2口为带内部上拉的8位双向I/O口。
P2口当用于外部程序存储器或16位地址外部存储器进行存取时,P2口输出地址的高8位,当对外部8位地址进行读写时P2口输出其特殊功能寄存器的内容。
P2口FLASH编程和校验时接收高8位地址信号和其他控制信号。
P3.0―P3.7:
口管脚是8个带内部上拉的双向I/O管脚。
P3口也可用作AT89C52的一些特殊功能口,如表所示
P3口管脚
备选功能
P3.0
RXD(串行输入口)
P3.1
TXD(串行输出口)
P3.2
INT0(外部中断口0)
P3.3
INT1(外部中断口1)
P3.4
T0(定时器0外部输入)
P3.5
T1(定时器1外部输入)
表3
P3口同时为闪速编程和编程校验接收一些控制信号。
二、串行通信
1.串行口控制寄存器SCON:
SCON是串行口的控制和状态寄存器,各位的定义:
D7
D6
D5
D4
D3
D2
D1
D0
SM0
SM1
SM2
REN
TB8
RB8
TI
RI
SCON各位的功能和操作:
SCON各位
功能和操作
SM0
SM1
SM2
串行口操作模式选择位,两个选择位对应四种模式。
在模式2和模式3的中多处理机通信使能位,在模式2和模式3中,若SM2=1时,仅当收到第9位数据为1时,RI不置位。
若SM2=0时,接收RI就置位。
当串行口工作在模式0时,SM2必须是0。
允许标志位。
由软件置位和清零。
当此位为1时,允许接收;当此位为0时,禁止接收。
发送数据位8。
该位是在模式2和3中要发送的第9位数据。
该位也可以作为奇偶校验位。
可以按照需要有软件置位和清除。
在多处理机通信中,该位用来表示是地址桢还是数据桢
接收数据位8。
是模式2和3中已接收到的第9位数据。
REN
TB8
RB8
TI
RI
发送中断标志位。
模式0中,发送完第8位数据时,由硬件置位。
在其他模式中,发送停止位之初,由硬件置位。
TI=1时,申请中断,CPU相应中断后发送下一桢数据。
该位必须用软件来清除。
接收中断标志位。
在模式0中,接收第8位结束时,由硬件置位。
RI,申请中断,请求CPU取走数据。
而在工作模式1中,SM2=1时,若未接到有效停止位,则不会对RI置位。
该位必须用软件清除。
串行口工作方式:
SM0
SM1
工作方式
说明
波特率
0
0
方式0
同步移位寄存器
Fosc/12
1
0
方式1
10位异步收发
由定时器控制
1
0
方式2
11位异步收发
Fosc/32或Fosc/64
1
1
方式3
11位异步收发
由定时器控制
注:
表中Fosc时振荡器频率
2.电源控制寄存器PCON:
PCON的第7位SMOD是与串行口的波特率设置有关的选择位。
相关的定义:
D7
D6
D5
D4
D3
D2
D1
D0
SMOD
GF1
GF0
PD
IDL
与串行口控制有关的位:
PCON各位
功能和操作
SMOD
与串行口波特率设定有关。
为1时:
在串行口工作模式1和3下,波特率=定时器1溢出率/16;在模式2下,波特率=Fosc/32
为0时:
在串行口工作模式1和3下,波特率=定时器1溢出率/32;在模式2下,波特率=Fosc/64
GF1
两个通用标志位
GF0
PD
CHMOS器件的低功耗控制位
IDL
芯片IDLE模式设置位
3.串行口的工作模式:
模式0:
串行口作同步移位寄存器使用,其波特率是固定的,为Fosc/12串行书记通过RXD输入/输出,TXD提供移位时钟脉冲。
发送接收的是8位数据,高位在后,低位在前。
发送一些SBUF寄存器的指令开始,8位为输出结束时,TI置位,方式0接收REN=1和REN=1时开始,接收的数据装入SUBF中,结束时RI被置位。
三、辅助部分
1.时钟电路:
单片机的时钟信号,由CAN总线控制器SJAI1000的CLKOUT引脚提供,它来自内部振荡器且可以通过编程分频。
SJAI1000的时钟分频寄存器的低四位定义CLKOUT输出频率及开关状态。
频率选择如表:
CD.2
CD.1
CD.0
时钟频率
0
0
0
fose/2
0
0
1
fose/4
0
1
0
fose/6
0
1
1
fose/8
1
0
0
fose/10
1
0
1
fose/12
1
1
0
fose/14
1
1
1
fose
表4
2.复位电路
复位芯片采用带看门狗芯片X25045。
通过给其状态寄存器写控制字,并根据智能模块系统程序的需要设定看门狗的溢出时间。
在主程序中设一条指令对计数器复位清零。
一旦程序在运行过程中因干扰而陷入死循环,超过预定时间间隔而没能执行这条指令,复位芯片的RESET脚就会产生一个高电平输出,使与之相连的微控制器、总线控制器及传感器接口等芯片等统统复位。
四:
键盘
键一:
定义为温度时间实际值与设定值转换按键,在上面时为正常运行位置,在下面时为调整位置。
键二:
定义为数码管之间的闪烁切换按键。
键三:
定义为+1按键,可以对闪烁数码管的显示值进行加1操作。
键四:
定义为-1按键,可以对闪烁数码管的显示值进行减1操作。
第二节DS12887功能简介
一、DS12887主要功能简介
(1)内含一个锂电池,断电情况运行十年以上不丢失数据。
(2)计秒,分,时,天,星期,日,月,年,并有闰年补偿功能。
(3)二进制数码或BCD码表示时间,日历和定闹。
(4)12小时或24小时制,12小时时钟模式带有PM和AM指示,有夏令时功能。
(5)MOTOROLA和INTEL总线时序选择。
(6)有128个字节RAM单元与软件接口,其中14个字节作为时钟和控制寄存器,114字节为通用RAM,所有RAM单元数据都具有掉电保护功能。
(7)可编程方波信号输出。
(8)中断信号输出(IRQ)和总线兼容,定闹中断,周期性中断,时钟更新周期结束中断可分别由软件屏蔽,也可分别进行测试。
8
二.原理及管脚说明
图1 DS12887管脚图
DS12887内部由振荡电路,分频电路,周期中断/方波选择电路,14字节时钟和控制单元,114字节用户非易失RAM,十进制/二进制计加器,总线接口电路,电源开关写保护单元和内部锂电池等部分组成。
DS12887管脚分配如图1。
1.DS2887管Vcc:
直流电源+5V电压。
当5V电压在正常范围内时,数据可读写;当Vcc低于4.25V,读写被禁止,计时功能仍继续;当Vcc下降到3V以下时,RAM和计时器供电被切换到内部锂电池。
MOT(模式选择):
MOT管脚接到Vcc时,选择MOTOROLA时序,当接到GND时,选择INTEL时序。
SQW(方波信号输出):
SQW管脚能从实时时钟内部15级分频器的13个抽头中选择一个作为输出信号,其输出频率可通过对寄存器A编程改变。
2.AD0—AD7(双向地址/数据复用线):
总线接口,可与MOTOROLA微机系列和INTEL微机系列接口。
3.AS(地址选通输入):
用于实现信号分离,在AD/ALE的下降沿把地址锁入DS12887。
4.DS(数据选通或读输入):
DS/RD管脚有两种操作模式,取决于MOT管脚的电平,当用MOTORO2LA时序时,DS是一正脉冲,出现在总线周期的后段,称为数据选通;在读周期,DS指示DS12887驱动双向总线的时刻;在写周期,DS的后沿使DS12887锁存写数据。
选择INTEL时序时,DS称作(RD),RD与典型存贮器的允许信号(OE)的定义相同。
5.R/W(读/写输入):
R/W管脚也有两种操作模式。
选MOTOROLA时序时,R/W是一电平信号,指示当前周期是读或写周期,DS为高电平时,R/W高电平指示读周期,R/W信号是一低电平信号,称为WR。
在此模式下,R/W管脚与通用RAM的写允许信号(WE)的含义相同。
6.CS(片选输入):
在访问DS12887的总线周期内,片选信号必须保持为低。
7.IRQ(中断申请输入):
低电平有效,可作微处理的中断输入。
没有中断的条件满足时,IRQ处于高阻态。
IRQ线是漏极开中输入,要求外接上接电阻。
RESET(复位输出):
当该脚保持低电平时间大于200ms,保证DS12887有效复位。
三、内部功能
9
DS12887内部框图如图2
1.地址分配:
DS12887的地址由114字节的用户RAM。
10字节的存放实时时钟时间,日历和定闹RAM及用于控制和状态的4字节特殊寄存器组成,几乎所有的128个字节直接读写。
2.时间、日历和定闹单元:
时间和日历信息通过读相应的内存字节来获取,时间、日历和定闹通过写相应的内存字节设置或初始化,其字节内容可以是二进制或BCD形式。
时间可选择12小时制或24小时制,当选择12小时制时,小时字节的高位为逻辑“1”代表PM。
时间、日历和定闹字节是双缓冲的,总是可访问的。
每秒钟这10个字节走时1秒,检查一次定闹条件,如在更新时,读时间和日历可能引起错误,三个字节的定闹字节有两种使用方法。
第一种,当定闹时间写入相应
时,分、秒、定闹单元,在定允许闹位置高的条件下,定闹中断每天准时起动一次。
第二种,在三个定闹字节中插入一个或多个不关心码。
不关心码是任意从C0到FF的16进制数。
当小时字节的不关心码位置位时,定闹为每小时发生一次;同样,当小时和分钟定闹字节置不关心位时,每分钟定闹一次;当三个字节都置不关心位时,每秒中断一次。
3.非易失RAM:
在DS12887中,114字节通用非易失RAM不专用于任何特殊功能,它们可被处理器程序用作非易失内存,在更新周期也可访问。
4.中断:
RTC实时时钟加RAM向处理器提供三个独立的、自动的中断源。
定闹中断的发生率可编程,从每秒一次到每天一次,周期性中断的发生率可500ms到122μs选择。
更新结束中断用于向程序指示一个更新周期完成。
中断控制和状态位在寄存器B和C中,本文的其它部分将详细描述每个中断发生条件。
5.晶振控制位:
DS12887出厂时,其内部晶振被关掉,以防止锂电池在芯片装入系统前被消耗。
寄存器A的BIT4-BIT6的其它组合都是使晶振关闭。
6.方波输出选择:
15级分频抽头中的13个可用于15选1选择
器,选择分频器抽头的目的是在SQW管脚产生一个方波信号,其频率由寄存器A的RS0-RS3位设置。
SQW频率选择器与周期中断发生器共享15选1选
择器,一旦频率选择好,通过用程序控制方波输出允许位SQWE来控制SQW管脚输出的开关。
7.中断选择:
周期中断可在IRQ脚产生500ms一次到每122μs一次的中断,中断步率同样由寄存A确定,它的控制位为寄存器B中的PIE位。
8.更新周期:
DS12887每一秒执行一次更新周期,保证时间、日历的准确。
更新周期还比较每一定闹字节与相应的时间字节,如果匹配或三个字节都是不关心码,则产生一次定闹中断。
四、状态控制寄存器
DS12887有4个控制寄存器,它们在任何时间都可访问,即使更新周期也不例外。
1.寄存器A:
UIP:
更新周期正在进行位。
当UIP为1,更新转换将很快发生,当UIP为0,更新转换至少在244s内不会发生。
DV0、DV1、DV2:
用于开关晶振和复位分频链。
这些位的010唯一组合将打开晶振并允许RTC计时。
RS3、RS2、RS1、RS0:
频率选择位,从15级频率器13个抽头中选一个,或禁止分频器输入。
选择好的抽头用于产生方波(SQW管脚)输出和周期中断,用户可以:
(1)用PIE位允许中断。
(2)用SQWE位允许并用相同的频率。
2.寄存器B:
SET:
SET为0,时间更新正常进行,每秒计数走时一次,当SET位写入1,时间更新被禁止,程序可初始化时间和日历字节。
PIE:
周期中断允许位,PIE为1,则允许以选定的频率拉低IRQ管脚,产生中断;PIE为0,则禁止
中断。
AIE:
定闹中断允许位,ATE为1,允许中断;否则禁止中断。
SQWE:
方波允许位,置1选定频率方波从SQW脚输出;为0时,SQW脚为低。
DM:
数据模式位,DM为1表示为二进制数据,为0表示是BCD码的数据。
24/12:
小时格式位,1表示24小时模式,0表示12小时模式。
DSE:
夏令时允许位,当DSE置1时,允许两个特殊的更新,在四月份的第一星期日,时间从1:
59:
59AM改变为1:
00:
00AM,当DSE位为0,这种特殊的修正不发生。
IRQF:
中断申请标志位。
当下列表达式中一个或多个为真时,置1。
PF=PIE=1;AF=AIE=1;UF=UIE=1;即:
IRQF=PF3PIE+AF3AIE+UF3UIE只要I