基于DS1302的多功能数字时钟.docx

上传人:b****6 文档编号:8416781 上传时间:2023-01-31 格式:DOCX 页数:15 大小:463.41KB
下载 相关 举报
基于DS1302的多功能数字时钟.docx_第1页
第1页 / 共15页
基于DS1302的多功能数字时钟.docx_第2页
第2页 / 共15页
基于DS1302的多功能数字时钟.docx_第3页
第3页 / 共15页
基于DS1302的多功能数字时钟.docx_第4页
第4页 / 共15页
基于DS1302的多功能数字时钟.docx_第5页
第5页 / 共15页
点击查看更多>>
下载资源
资源描述

基于DS1302的多功能数字时钟.docx

《基于DS1302的多功能数字时钟.docx》由会员分享,可在线阅读,更多相关《基于DS1302的多功能数字时钟.docx(15页珍藏版)》请在冰豆网上搜索。

基于DS1302的多功能数字时钟.docx

基于DS1302的多功能数字时钟

HUBEINORMALUNIVERSITY

综合课程设计

(一)

IntegratedCurriculumDesign

(1)

 

所在院系

教育信息与技术学院

专业名称

信息工程

班级

1403

题目

基于DS1302的多功能数字时钟

指导教师

完成时间

2015年12月28日

 

基于DS1302的多功能数字时钟设计

1设计目的

(1)掌握单片机芯片STC89C51的基本功能和使用。

(2)熟悉Proteus仿真软件的使用,了解各元件的功能及作用。

(3)了解时钟芯片DS1302的基本知识,了解温度传感器DS18B20的基本使用。

(4)提高数字电子电路的综合应用能力。

(5)掌握Keil软件的使用方法,以及如何创建文件和编写程序。

(6)提高焊接能力以及实际问题分析能力。

2设计思路

时间,对人们来说是非常宝贵的,准确的掌握时间和分配时间对人们来说至关重要。

因此自从时钟发明的那刻起,就成为人类的好朋友。

随着时间的流逝,科学技术的不断发展和提高,人们对时间计量的精度要求越来越高,应用越来越广。

怎样让时钟更好、更方便、更精确的显示时间,这就要求人们不断设计研发出新型的时钟。

高精度的计时工具大多数都使用了石英晶体振荡器,由于电子钟,石英表,石英钟都采用了石英技术,因此走时精度高,稳定性好,使用方便,不需要经常调校。

数字式电子钟用集成电路计时时,译码代替机械式传动,用LED显示器代替指针进而显示时间,减小了计时误差,这种表具有时,分,秒显示时间的功能,还可以进行时和分的校对,片选的灵活性好。

时钟电路在计算机系统中起着非常重要的作用,是保证系统正常工作的基础。

在单片机的应用系统中,时钟有两个方面的含义:

一是指为保障系统正常工作的基准振荡定时信号,主要由晶振和外围电路组成,晶振频率的大小决定了单片机系统工作的快慢;二是指系统的标准定时时钟,即定时时间,它通常有两种实现方法:

一是用软件实现,即用单片机内部的可编程定时器/计数器来实现;二是用专门的时钟芯片实现。

多功能数字时钟将万年历、时钟与温度计结合,设计和制作了一款具有推广价值的多功能数字时钟。

3方案论证

3.1单片机芯片的选择方案和论证:

方案一:

采用STC89C52芯片作为硬件核心。

STC89C52内部具有8KBROM存储空间,512字节数据存储空间,带有2K字节的EEPROM存储空间,与MCS-51系列单片机完全兼容,STC89C52可以通过串口下载。

方案二:

采用AT89S52。

AT89S52片内具有8K字节程序存储空间,256字节的数据存储空间没有EEPROM存储空间,也与MCS-51系列单片机完全兼容,具有在线编程可擦除技术。

两种单片机都完全能够满足设计需要,STC89C52相对ATS89C52价格便宜,且抗干扰能力强。

考虑到成本因素,因此选用STC89C52。

3.2显示模块选择方案和论证:

方案一:

采用点阵式数码管显示。

点阵式数码管是由八行八列的发光二极管组成,对于显示文字比较适合,如采用在显示数字显得太浪费,且也相对较高,所以不用此种作为显示。

方案二:

采用LED数码管动态扫描。

LED数码管价格便宜,对于显示数字最合适,但功耗较大,且显示容量不够,所以也不用此种方案。

方案三:

采用LCD液晶显示屏。

液晶显示屏的显示功能强大,可显示大量文字,显示多样,清晰可见,且价格适中,所以采用了LCD数码管作为显示。

3.3时钟芯片的选择方案和论证:

方案一:

直接采用单片机定时计数器提供秒信号,使用程序实现年、月、日、星期、时、分、秒计数。

采用此种方案虽然减少芯片的使用,节约成本,但是,实现的时间误差较大。

所以不采用此方案。

方案二:

采用DS1302时钟芯片实现时钟,DS1302芯片是一种高性能的时钟芯片,可自动对秒、分、时、日、周、月、年以及闰年补偿的年进行计数,而且精度高,工作电压2.5V~5.5V范围内,2.5V时耗电小于300nA。

3.4电路设计最终方案决定

综上各方案所述,对此次作品的方案选定:

采用STC89C52单片机作为主控制系统;采用DS1302作为时钟芯片;采用1602LCD液晶作为显示器件,扩展模块为DS18B20温度模块。

4设计过程

4.1硬件设计

电路以STC89C52单片机最小系统为控制核心,时钟电路由高精度低功耗的DS1302提供,采用三线接口与CPU进行同步通信,输入部分采用四个独立式按键S1、S2、S3、S4。

1602液晶显示部分,D0-D7口与单片机P0口相连,温度模块主要由DS18B20温度传感器构成。

具体框图如图1所示。

LCD液晶显示

键盘

DS1302时钟芯片

DS18B20温度采集

 

STC89C52控制器

 

图1系统框图

(1)单片机控制模块

采用STC89C52芯片作为硬件核心。

STC89C52内部具有8KBROM存储空间,512字节数据存储空间,带有2K字节的EEPROM存储空间,与MCS-51系列单片机完全兼容,STC89C52可以通过串口下载,实现功能完全,性价比较高,更适合本设计。

具体电路如图2所示。

 

图2

STC89C52是STC公司生产的一种低功耗、高性能CMOS8位微控制器,具有8K在系统可编程Flash存储器。

STC89C52使用经典的MCS-51内核,但做了很多的改进使得芯片具有传统51单片机不具备的功能。

在单芯片上,拥有灵巧的8位CPU和在系统可编程Flash,使得STC89C52为众多嵌入式控制应用系统提供高灵活、超有效的解决方案。

内含8k字节Flash,512字节RAM,32位I/O口线,看门狗定时器,内置4KBEEPROM,MAX810复位电路,3个16位定时器/计数器,4个外部中断,一个7向量4级中断结构(兼容传统51的5向量2级中断结构),全双工串行口。

另外STC89C52可降至0Hz静态逻辑操作,支持2种软件可选择节电模式。

空闲模式下,CPU停止工作,允许RAM、定时器/计数器、串口、中断继续工作。

掉电保护方式下,RAM内容被保存,振荡器被冻结,单片机一切工作停止,直到下一个中断或硬件复位为止。

最高运作频率35MHz,6T/12T可选。

最小系统是指能进行正常工作的最简单电路。

它包含五个电路部分:

电源电路、时钟电路、复位电路、片内外程序存储器选择电路、输入/输出接口电路。

其中电源电路、时钟电路、复位电路是保证单片机系统能够正常工作的最基本的三部分电路,缺一不可。

电源电路芯片引脚VCC一般接上直流稳压电源+5V,引脚GND接电源+5V的负极,电源电压范围在4~5.5之间,可保证单片机系统能正常工作。

时钟电路单片机引脚18和引脚19外接晶振及电容,STC89C52芯片的工作频率可在2~33MHz范围之间选,单片机工作频率取决于晶振XT的频率,通常选用11.0592MHz晶振。

两个小电容通常取值30pF,以保证振荡器电路的稳定性及快速性。

复位电路一般若在引脚RST上保持24个工作主频周期的高电平,单片机就可以完成复位,但为了保证系统可靠地复位,复位电路应使引脚RST保持10ms以上的高电平。

如图复位电路带有上电自动复位功能,当电路上电时,由于C1电容两端电压值不能突变,电源+5V会通过电容向RST提供充电电流,因此在RST引脚上产生一高电平,使单片机进入复位状态。

随着电容C1充电,它两端电压上升使得RST电位下降,最终使单片机退出复位状态。

正常运行时,可按复位按钮对单片机复位。

图3单片机控制模块

(2)时钟电路

采用DS1302时钟芯片实现时钟,DS1302芯片是一种高性能的时钟芯片,可自动对秒、分、时、日、周、月、年以及闰年补偿的年进行计数,而且精度高,工作电压2.5V~5.5V范围内,2.5V时耗电小于300nA。

图4时钟电路

(3)复位电路

单片机小系统常采用上电自动复位和手动按键复位两种方式实现系统的复位操作。

上电复位要求接通电源后,自动实现复位操作。

手动复位要求在电源接通的条件下,在单片机运行期间,用按钮开关操作使单片机复位。

其结构如下图4所示。

上电自动复位通过电容C5充电来实现。

手动按键复位是通过按键将电阻R5与VCC接通来实现。

图5复位电路

(4)显示部分设计

用液晶屏LCD1602分两行显示“年、月、日、周日、时、分、秒”,如图5所示。

图61602显示模块

(5)按键控制部分设计

共4个独立按键:

S1:

功能键。

用来选择要更改的项目(年、月、日、周日、时、分、秒)。

S2:

加数键。

按1下则数值加1。

S3:

减数键。

按1下则数值减1。

S4:

闹钟键。

进入闹钟模式。

下图为键盘电路图6所示。

图7键盘模块

温度模块设计

图8温度模块

4.2系统软件程序设计

(1)主程序:

LCD1602初始化,闹铃响应,检测是否有按键按下,有按键按下则记录按下键的键值,并跳转至功能转移程序;无按键按下,则返回键盘扫描程序继续检测。

(2)LCD1602显示子程序:

LCD1602初始化函数,LCD读写操作子程序,接受MCU的指令与数据,完成显示功能。

(3)DS1302读写子程序:

根据检测到的相应按键值对DS1302进行读写操作,完成年、月、日、星期、时、分、秒等数据的更改和传输。

(4)键盘扫描子程序:

将MCU的I/O口与按键相连,通过不断的检测该I/O口是否变为低电平,当检测到低电平时说明按键被按下,执行相应的指令。

(5)温度检测子程序:

接受温度传感器DS18B20的数据,

 

4.2.2主程序模块

图9主程序流程图

 

4.2.3按键子程序模块

s1

 

 

图10按键子程序流程图(以S2为例)

5电路仿真与结果分析

5.1电路仿真

图11这是正常显示状态(未设定闹钟)

图12闹钟设置状态

图13闹铃设置成功

 

5.2结果分析

由于是第一次做课程设计,同时也是第一次写这么综合的程序,所以在调试过程中遇到很多问题,一部分是关于DS1302与1602的硬件特点以及在硬件的基础之上驱动程序的调用,这里主要是网上找资料去学会调用与编写,主要是通过网上视频教学;另一部分是自己做的硬件存在很多误差。

在仿真与实物图之间还是存在一定差距,需要细心的焊接和调试等操作。

6设计体会

通过本次课程设计,使我加深了对单片机的认识,并且熟悉了单片机系统的设计流程,收获丰硕。

功能上基本达标:

时钟与闹钟的显示,调时间和闹钟功能以及闹钟鸣叫功能。

时钟与闹钟显示功能,精确度完全可以满足日常生活显示时间的需要;调时间与闹钟功能,方便快捷。

硬件设施基本合乎要求,软件设计可以配合硬件实现其功能。

技术在不断进步,机械式时钟已经被淘汰,取而代之的是具有高度准确性和直观性且无机械装置,具有更长的使用寿命等优点的电子时钟。

电子时钟更具人性化,更能提高人们的生活质量,更受人们欢迎。

机械时代已经远去,电子时代已经到来。

做为新时代的我们,更应该提高自身能力,适应新时代的发展。

知识来自实践,多从生活中探寻所需要的。

从这次的论文设计中,我真正的体会到,知识的重要性,特别是要理论联系实际,把我们所学的理论知识运用到实际生活当中,要用知识改变一切。

参考文献

[1]程国钢、陈跃琴、崔荔蒙.51单片机典型模块开发查询手册.电子工业出版社.2012年5月第1版。

[2]郭天祥.51单片机C语言教程,电子工业出版社2009年12月第一版。

[3]康华光.电子技术基础,高等教育出版社.第五版。

附件

完整电路

部分程序:

#include

#include

#defineucharunsignedchar

#defineuintunsignedint

sbitrs=P2^3;//寄存器选择

sbitrw=P2^1;//读写信号线

sbitlcden=P2^1;//led使能端

sbitscl=P1^5;//时钟线

sbitrst=P1^7;//复位线

sbitio=P1^6;//数据口

sbitkey_set_time=P3^0;//设置时间键

sbitkey_add=P3^1;//加键

sbitkey_minus=P3^2;//减键

sbitkey_set_alarm=P3^3;//设置闹钟键

sbitbee=P2^4;//蜂鸣器接口

sbitdq=P2^5;//ds18b20测温

uchargetTimebuf[8];//存放时间数据

uchartime[]={":

:

"};//时间格式字符串

uchardate[]={"20--"};//日期格式字符串

ucharweeklist[]={"SunMonTueWedThuFriSat"};//星期字符列表

ucharweek[]={""};//星期格式字符串

intcount;//设定秒分时日月星期年的时候count的值分别为1235647

intalarm;//是否进入闹钟设置界面123分别代表开关分小时的设置

intisOpen;//闹钟是否开启默认不开启

intfen,shi;//闹钟的分钟小时

intisRing;//闹钟是否在响

ucharisInit_1302;//是否初始化时钟完毕

intnum;

inttemperature;//温度

inttemp_flag;//温度正负标志

voidmain(){

init_1602();

init_ds1302();

while

(1)

{

if(isOpen){//只有开启闹钟的时候才检测

beep();//不断检测闹钟

}

key_scan();

if(count==0&&alarm==0){//没有设定时间也没有在闹钟界面的时候时间才显示

display();

}

}

}

展开阅读全文
相关资源
猜你喜欢
相关搜索
资源标签

当前位置:首页 > 工程科技 > 城乡园林规划

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1