带温度计的万年历.docx
- 文档编号:29583289
- 上传时间:2023-07-24
- 格式:DOCX
- 页数:22
- 大小:383.18KB
带温度计的万年历.docx
《带温度计的万年历.docx》由会员分享,可在线阅读,更多相关《带温度计的万年历.docx(22页珍藏版)》请在冰豆网上搜索。
带温度计的万年历
设计课题题目:
带温度计的万年历
一、设计任务与要求
1.显示准确的北京时间(时、分、秒)及公历日期显示功能(年、月、日);
2.可通过按键切换年、月、日及时、分、秒的显示状态;
3.可随时可以调校年、月、日或时、分、秒;
4.可每次增减一进行时间调节,也可快速增减进行时间调节;
5.可显示环境温度。
二、系统设计方案
方案一、用主芯片为AT89C51的单片机控制实现,使用单片机内部的定时计数器实现时间的设定,使用按键进行时间的调整和定时,按键有蜂鸣器提示,温度传感器使用DALLAS
公司生产的单总线式数字温度传感器,它具有微型化、低功耗、高性能、抗干扰能力强、易配处理器等优点。
显示时间和温度使用数码管显示。
方案二、用主芯片为STC89C52的单片机控制实现,为了满足单片机系统的实时控制的需求,采用实时钟芯片DS1302使用按键进行时间的调整和定时,温度传感器使用DS18B20。
显示时间和温度使用LCD1602显示。
方案一片内定时器会导致计时节拍的时间误差,当进行年、月、日的日历计时,定时中
断误差扥积累就会很大。
使用片内定时器进行计时的时候,单片机始终要处于工作状态。
才
能维持计时时间,一旦停机或进入待机状态,开机后,计时时间就需要重新设定。
为了满足
单片机系统的实时钟需求,本设计采用的是方案二,系统框图如图2-1所示。
1.原理分析
1.1主控制器
单片机STC89C52具有低电压供电和体积小等特点,如图3-1所示。
1.2晶振电路
AT89S52引脚XTAL1和XTAL2与晶体振荡器及电容C1、C2按图3-2所示方式连
接。
晶振、电容C1/C2及片内与非门(作为反馈、放大元件)构成了电容三点式振
荡器,振荡信号频率与晶振频率及电容C1、C2的容量有关,但主要由晶振频率决定,
范围在0〜33MHz之间,电容C1、C2取值范围在5〜30pF之间。
根据实际情况,本设计晶振选择频率为12MHZ电容选择30pF如图3-2。
经计算
得单片机工作的机器周期为:
12X(1:
12M=1us。
振荡器的振荡信号从XTAL2端输
1.3复位电路图3-2
时钟电路工作后,在REST管脚上加两个机器周期的高电平,芯片内部开始进行初
始复位,如图3-3。
1.4LCD显示电路
显示器是单片机常用的功能单元之一,显示器的工作是由单片机通过显示接口驱动的。
本设计采用的是LCD1602显示电路图如图3-4所示。
寸
||iGND
*1
1"叫"kle*T
图3-4
CCj
(1)LCD1602主要技术参数:
显示容量:
16X2个字符芯片工作电压45—5.5V工作电流:
2.0mA(5.0V)模块最佳工作电压:
5.0V字符尺寸:
2.95X4.35(WXH)mm
(2)广脚介绍
D0—D7数据传送引脚,VSS为接地线,VDD为电源线,VEE为LCD驱动电压调节,由此可以调节显示亮度。
RS为寄存器选择信号,高电平选择数据寄存器,低电平选
择指令寄存器。
RW为读写控制信号,高电平读,低电平写。
EN使能信号,读状态下
高电平有效,写状态下下降沿有效。
RS连接P2A0;寄存器选择信号
RW连接P2A1;读写控制信号线
EN连接P2A2;使能信号线
1.5温度感应电路
DS18B20具有3引脚T892小体积封装形式,温度测量范围为—55C〜+125C,可
编程为9位〜12位A/D转换精度,测温分辨率可达0.0625C。
DS18B20的高速暂存存储器
由9个字节组成,其分配如图3-5所示。
当温度转换命令发布后,经转换所得的温度值以二
字节补码形式存放在高速暂存存储器的第0和第1个字节。
单片机可通过单线接口读到该数
据,读取时低位在前,高位在后。
该电路能感应现场的温度并生成电信号传送给AT89C52
如图3-6所示。
愠度低位—隅度高位[TH[TL闿己置0呆留—偎書條留I3位啦
1.6DS1302时钟电路
DS1302内含一个实时时钟/日历和31字节静态RAM可以通过串行接口与单片机进
行通信。
实时时钟/日历电路提供秒、分、时、日、星期、月、年的信息。
DS1302与单
片机之间能简单地采用同步串行的方式进行通信,仅需三根I/O线:
复位(RST、I/O
数据线、串行时钟(SCLK。
DS1302时钟电路如图3-6所示。
(1)DS1302的主要特性:
a)实时时钟具有能计算2100年之前的秒、分、时、日、日期、星期、月、年的能力,还有闰年调整的能力
b)31*8位暂存数据存储RAM
c)串行I/O口方式使得管脚数量最少
d)宽范围工作电压:
2.0~5.5V
e)工作电流2.0V时,小于300nA
f)读/写时钟或RAM数据时,有两种传送方式:
单字节传送和多字节传送(字符组方式)
(2)DS1302的工作原理
DS1302工作时为了对任何数据传送进行初始化,需要将复位脚(RST置为高电平
且将8位地址和命令信息装入移位寄存器。
数据在时钟(SCLK的上升沿串行输入,前8位指定访问地址,命令字装入移位寄存器后,在之后的时钟周期,读操作时输出数据,
写操作时输出数据。
时钟脉冲的个数在单字节方式下为多字节方式下为8加最多可达248的数据。
U3
8+8(8位地址+8位数据),在
4
h>
u
c
12
10
s
9
RP1
A
上
w
牛
U1
•I
1k
R1
te;
A
U3
dr
©
RE£P«K.S订EKT—-
X2
CRYSTfiL
uZ-
GND-||
分、时、星期、日、
keyl
I—IY2
TXT
5
6
图3-9仿真图
P34T0
P3.5/T1
P3.6V2
P3.7-RD
图3-7
1.7按键模块
本设计需要的键盘比较少,采用独立式的键盘,使用软件消抖,来提高抗干扰能力。
如图3-7所示。
加10k的上拉电阻用
K1键,依次修改秒、
RESPACK4
图3-8
2.仿真分析
对所校对的数字加一。
对所校对的数字减一。
P2.4/A12P2,5A13P2.6/A14
P27/A15
GND
K1键:
在正常显示时间状态下每按一次月、年。
K2键:
当K1键按下后,按下K2键时,
K3键:
当K1键按下后,按下K2键时,
K4键:
按下K4键后,跳出矫正模式,时间正常运行。
RISPACK4
XTAL1
3CTAU
PQcp/ADIDPO.VAmP0.2/ADa
PD.4/ACM
PD.®心
P0.7X/W
叹“解
P2.1/MP2.2/AIOF2.3/AJIP2.-VA12F2.5/A13F2,@/AI4P2.7/A15
F1
P1.1/T2B(
P1.2
P1,3
P1.4
I、丨比7•
P3.D/RXDP3.1/TXDP3.2/[hBpa.a/nrn
P3.4/TO
FS.S/H
Pj.SAftR
P3.?
™
FSENALE窝
sQLU=
2014/04/27Week1
11:
12:
2629DC
ATS9C52lIBCR
30pF
订曰e
RP3
订EXT工口-
1EDT8L■:
Tecr>
VCC1X1
MCC2
1
1
rr
P346b
rstSCLK
I/OX2
:
P3S7»
:
P35en
DS1302
GND
RST
X2
LO
XI
SCLK<
Vcc2
Vcc
*r
•
L
3
P3
r2«
i—
1
b
F
VCCDQ
GND••
2014/04/2?
Meek?
21:
48:
3329"C
5Q山
黔弓器怠u.EEE呂宮呂営色
图3-10正常显示
2014/04/2?
Ueek?
21:
48:
29"C
>>>(tHLU口QQd為N西Q
图3-11校正模式
2014/94/2?
Meek?
21=48:
3629°C
5QUi
2014/04/2?
Meek?
21248:
^229^C
MQ山
畧号冒£In.S52SJB8£
图3-12数值增加
图3-13数值减少
四、软件部分设计(各部分程序框图)
1、主程序:
main()
{
flag=1;//LCD」nitial();//Init_DS18B20();
Initial_DS1302();//up_flag=0;
down_flag=0;done=0;//
时钟停止标志
液晶初始化
//DS18B20初始化
时钟芯片初始化
进入默认液晶显示
while
(1)
{
while(done==1)
keydone();//
while(done==0){
show_time();flag=0;
Setkey();
进入调整模式
//液晶显示数据
//扫描各功能键
2、主程序流程图
图4-1读温度流程图
图4-2主程序流程图
3、按键扫描子程序流程图:
五、系统测试与分析
1测试步骤如下:
1)将系统焊接完毕,通电,观察液晶屏是否有亮;
2)按下复位键,时间和温度是否有显示;
3)与标准时间和温度对比,液晶屏上的时间和温度是否正确;
4)测试按键模块,按下按键,相应功能是否能实现;
5)三天后,时间、温度与标准时间、温度对比,是否有误差。
2、测试结果
1)液晶屏显示时间和温度
图5-1显示温度、时间
2)测试按键模块功能
图5-2进入调整模式
3)三天后时间和温度
3、分析
液晶屏有显示,时间可正常运行,按键可调整时间,显示模块、时钟模块、温度模块均正常,程序也正确。
根据三天后的显示结果,与标准时间和温度对比,没有误差。
用手触碰温度传感器,温度缓慢上升,手放开后,温度下降,说明温度模块没问题。
六、结论与心得
1、实验结论
(1)在该电子钟的设计中修改定时或调整时间时采用了闪烁,在编程上,首先进行了
初始化定义了程序的入口地址以及中断的入口地址,在主程序的开始定义了一组固定单元用
来存储计数的秒,分,时以及定时时间的序号等。
其次,时,分,秒显示用了软件译码(查表)
的方式,再用了一段固定的程序段进行进制转化。
最后,用查询方式对按键进行判断,若有键
按下,则进行软件延时消抖,避免了抖动引起的干扰,执行相应的定时,选时或调时程序段。
对当前时间或定时时间修改后又返回到最初的显示程序段,如此循环下去。
(2)在硬件上,选用DS1302LCD1602相结合,首先DS1302内含有一个实时时钟/日
历和31字节静态RAMS过简单的串行接口与单片机进行通信实时时钟/日历电路提供秒分时
日日期月年的信息每月的天数和闰年的天数可自动调整时钟操作,这样读取数据简单。
其次,
选用LCD1602进行显示时,数据位串行输入,接口连线少,低功耗,显示清晰。
并且本实验
的电子钟即要实现时间的现实,还要实现日期的现实,所以若是运用数码管进行显示的话,就算运用动态显示,所占用的10口多,并且所需的数码管个数多,硬件复杂。
(3)proteus是一个非常好用的仿真软件,其具有强大的电路原理图绘制功能,且可
以实现模拟电路仿真、数字电路仿真、单片机及其外围电路组成的系统仿真、键盘、LCD系
统仿真等多种功能;和keil联合使用时可以检测所编写的程序的正确与否。
将keil和
proteus联合起来使用是实现电子设计制作的初步阶段,可避免在实际的硬件操作中因为电
路原理图或向单片机烧录的程序有误而造成的难以修改的为题。
2、心得
本次课程设计在老师的指导和同学的帮助下顺利完成。
本次设计的是一个带温度显示的
电子时钟。
在本次试验中,感觉到自己单片机知识非常欠缺,编程方面很多知识不懂,在同
学的帮助下,并借鉴了其他同学的部分程序,经过调试后在单片机上显示出最终结果,一个
小型的带温度显示的万年历就做出来了。
通过本次设计,了解了时钟芯片、温度传感器的一
些基本原理及用途,并学习了单片机中一些基本指令的运用,明白了写程序的困难及软件思
维和逻辑思维能力的重要性,提高了自己思考问题的严谨性,并且体会到了团队合作的重要
性,增强了解决困难的能力。
在此感谢老师在本次课程设计中的指导,使得本次设计顺利的
完成。
七、参考文献
[1]徐爱钧•彭秀华•单片机高级语言C51应用程序设计[M],2000;
[2]瓮嘉民•单片机应用开发技术一基于PROTEU仿真和C语言编程[M],中国电力出版社,
2009;
[3]李强•51系列单片机应用软件编程技术[M],北京航空航天大学出版社,2009;
[4]郭天祥•51单片机C语言教程[M].电子工业出版社,2009.
⑸孙惠芹•单片机项目设计教程[M].电子工业出版社,2009.
八、附录
图8-1最小系统图8-2时钟模块
图8-3显示模块
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 温度计 万年历