数字万年历设计(80c51单片机、时钟芯片ds1320) - 图文

更新时间:2023-11-30 14:25:01 阅读量: 教育文库 文档下载

说明:文章内容仅供预览,部分内容可能不全。下载后的文档,内容与下面显示的完全一致。下载之前请确认下面内容是否您想要的,是否完整无缺。

德州科技职业学院青岛校区2006级毕业论文

多功能数字万年历设计

摘 要: 本设计是一种基于AT89C52 单片机控制的数字万年历设计。它具有多项显示和

控制功能:能用LCD实时显示当前年、月、日、星期、时间;可对时间进行调整;具有闹铃及整点报时功能;可显示万年历等功能。并且它以单片机的 C51 语言进行软件设计,增加了程序的可读性和可移植性,便于扩展和更改。

本文通过对一个基于单片机的能实现万年历功能电子时钟的设计,从而达到学习、了解单片机相关指令在各方面的应用。系统由主控制器AT89C51、时钟电路DS1302、显示电路、按键电路、和复位电路等部分构成,能实现时钟日历显示的功能,能进行时、分、秒的显示。

关键词: 单片机 万年历 时钟电路DS1302 C51

Abstract: The design is a single-chip microcomputer 51 based on the number of calendar

control design. It has a number of display and control functions: real-time use LCD displays the current year, month, day, week, time; may be time to adjust; with alarm as well as the whole point timekeeping function; calendar function displays. And the C51 it single-chip software design language, an increase of procedures to improve the readability and portability, ease of expansion and change.

based on a microcontroller based on the will to achieve calendar of a multi-functional electronic clock designThereby achieve studying and understanding the relevant directives SCM in all aspects of the application. By main control AT89C51、clock circuit DS1302、display circuit、keystroke circuit and restore circuit componented to achieve clock calendar display function can be carried out hours seconds of the show and real-time of the show and real-time temperature display.

Keywords : Single-chip clock circuit calendar DS1302 C51 language

1

德州科技职业学院青岛校区2006级毕业论文

引言

多功能数字万年历已成为人们日常生活中必不可少的物品,广泛用于个人家庭以及车站、码头、医院、办公室等公共场所,给人们的生活、学习、工作、娱乐带来极大的方便。随着技术的发展,人们已不再满足于钟表原先简单的报时功能,希望出现一些别的功能,诸如日历的显示、闹钟的应用等,以带来更大的方便,而所有这些,又都是以数字化的电子时钟为基础的。因此,研究实用电子时钟及其发展应用,有着非常现实的意义,具有很大的实用价值。由于数字集成电路技术的发展和采用了先进的石英技术,使电子钟具有走时准确、性能稳定、携带方便等优点它还用于计时、自动报时及自动控制等各个领域。虽然现在市场上已有现成的电子钟集成电路芯片出售,价格便宜,使用灵活,如可以随意设置时、分、秒的输出,改变显示数字的大小等,并且由于集成电路技术的发展,特别是MOS集成电路技术的发展,使电子钟具有体积小、携带方便,但是这里介绍的实用电子钟可以满足使用者的一些特殊要求,输出方式灵活、功耗低、x时准确、性能稳定、维护方便等优点。多功能数字万年历是一个时间控制系统,既能作为一般的时间显示器,同时可以根据需要扩展其功能

一、设计内容与要求

设计一以单片机为核心控制的电子钟,具有多项显示和控制功能。

1.能用LCD实时显示当前年、月、日、星期、时间; 2.可对时间进行调整; 3.具有闹铃及整点报时功能;

4.可显示万年历功能。 二、设计方案与论证 (一) 单片机选择方案

方案一:纯硬件电路系统,各功能采用分离的硬件电路模块实现。用时序逻辑电路实现时钟功能,用555定时器实现闹钟的设定。但这种实现方法可靠性差、控制精度低,灵活性小、线路复杂、安装调试不方便,而且不方便实现对系统的扩展。

方案二:用可编程逻辑器件(PLD)实现。这种方案与前一种相比,可靠性增加,同时可以很好的完成时钟的功能。同时这种方案只能选用数码管显示,显示的效果不够理想,无法很好的完成扩展功能的要求,系统的灵活性不够。

2

德州科技职业学院青岛校区2006级毕业论文

方案三:采用AT89S52单片机作为系统的控制核心。时钟功能采用单片集成的时钟芯片DS1307来实现,可以使用液晶显示时间、日历及闹铃,有着智能化的人机界面。由于使用了单片机,整个系统可编程,系统的灵活性大大增加了。另外,本方案可以方便的实现其他功能的扩展。

经过以上的比较论证,选用方案三来完成项目设计的要求。 (二)时钟方案选择

方案一:基本门电路搭建。用基本门电路来实现时钟发生器,电路结构复杂,故障系数大,不易调试。

方案二:专用时钟芯片。目前市场上已有很多实时时钟芯片。如DS12887、DS1302、DS1307、PCF8563、X1227等,芯片内都集成了时钟/日历功能,给时钟系统设计带来很多方便。根据设计要求,在本设计中我采用了DS1302时钟芯片。 (三)温度检测方案选择

方案一:采用热电偶或热敏电阻作感温元件,但热电偶需冷端补偿,电路设计复杂,热敏电阻虽然精度较高,但需要标准稳定电阻匹配才能使用,而且重复性、可靠性都比较差。

方案二:采用集成温度传感器DS18B20 。该传感器结构简单,不需外接电路,数据传输稳定,在-10 ℃—+85℃范围内精度为±0.5℃,完全能满足题目±1℃的要求,且分辨率较高,重复性和可靠性好,故采用第二种方案。

(四)显示模块的选择

方案一:使用多个数码管显示。LED数码管是利用二极管发光显示数字和字母,具有亮度大、接口设计比较容易,价格相对较便宜等优点。但是由于它工作电流较大、不能显示汉字,显示的信息量有限,若在此题目中应用就会受到很大的限制。

方案二:采用液晶显示。液晶特别是具有汉字显示功能的液晶显示器,来实现显示功能,不仅可以实现基本的显示信息,而且可以显示丰富的符号指示信息以及文字指示信息,信息量丰富且直观易懂。而且液晶显示有功耗低,体积小,重量轻,寿命长,不产生电磁辐射污染等优点。系统采用方案二,设计选用LCD1602液晶显示模块。

(五)键盘模块的选择

方案一:采用独立式按键电路。每个键单独占有一根I/O接口线,每个I/O口的工作状态互不影响,此类键盘采用端口直接扫描方式。但是当按键较多时占用单片机的I/O数目较多。

3

德州科技职业学院青岛校区2006级毕业论文

方案二:采用阵列式键盘。此类键盘是采用行列扫描方式,当按键较多时可以降低占用单片机的I/O口数目。根据设计要求我采用了方案二。

三、硬件电路设计

(一)电路板原理

图1 键盘接线图

在本设计中了采用阵列式键盘。此类键盘是采用行列扫描方式,当按键较多时可以降低占用单片机的I/O口数目。按照设计的要求在设计中我采用了4*4键盘的阵列式按键电路。

图2 LCD1602接线图

由于本系统信息显示量大,所以我们选用LCD1602中文模块的液晶显示器。该模块

4

德州科技职业学院青岛校区2006级毕业论文

具有2.7~5.5V的宽工作电压范围,且具有睡眠、正常及低功耗工作模式,可满足系统各种工作电压及便携式仪器低功耗的要求。液晶模块显示负电压,也由模块提供,从而简化了系统电源设计。因此在本设计中是很好的选择。

图3 DS1302与DS18B20接线图

本设计采用DS1320时钟芯片。该芯片可以进行时分秒的计数,实时时钟具有能计算 2100 年之前的秒、分、时、日、日期、星期、月、年的能力,还有闰年调整等能力。温湿度传感器采用了DS18B20芯片,它的精度非常的高,完全可满足设计要求。

四、软件设计

(一)设计方案

首先显示屏(LCD602)上要显示时间温度,第一行显示:日期,星期。第二行显示:

时间,温度。其次我们可以修改时间,包括闹钟的时间:按下0修改秒,按下1修改分,按下2修改时,按下3修改日,按下4修改月,按下5修改星期,按下6修改年份,按下7修改闹钟的时间。进入修改界面后,键15是确定键,键14是取消键,键13是推出键,键13是闹钟的功能取消(如果想再开闹钟的话,重新设置闹钟时间就可以了)。修改界面中,第一行是提示修改什么,第二行显示你要修改的内容的当前数据和你键如的数据。闹钟响了之后按下按键8-15中的任何一个就可以使闹钟停止闹铃了。

5

德州科技职业学院青岛校区2006级毕业论文

(二)源程序 #include

/**********************ds1302与at89s52引脚连接********************/ sbit T_RST=P3^5;

sbit T_CLK=P3^6; sbit T_IO=P3^7; sbit ACC0=ACC^0; sbit ACC7=ACC^7; unsigned char

seg[]={0x00,0x01,0x02,0x03,0x04,0x05,0x06,0x07,0x08,0x09}; //0~~9段码/******************DS1302:写入操作(上升沿)********************/ void write_byte(unsigned char da) { unsigned char i; ACC=da;

{ for(i=8;i>0;i--)

T_IO=ACC0; T_CLK=0; T_CLK=1; ACC=ACC>>1; } }

/******************DS1302:读取操作(下降沿)*****************/ unsigned char read_byte(void) { unsigned char i; { for(i=0;i<8;i++) ACC=ACC>>1; T_CLK = 1; T_CLK = 0; ACC7 = T_IO; }

6

德州科技职业学院青岛校区2006级毕业论文

return(ACC); }

/***********DS1302:写入数据(先送地址,再写数据)*************/ void write_1302(unsigned char addr,unsigned char da) { T_RST=0; //停止工作 T_CLK=0; T_RST=1; //重新工作 write_byte(addr); //写入地址 write_byte(da); T_RST=0; T_CLK=1; }

/************DS1302:读取数据(先送地址,再读数据)**************/ unsigned char read_1302(unsigned char addr) { unsigned char temp;

T_RST=0; //停止工作 T_CLK=0;

T_RST=1; //重新工作 write_byte(addr); //写入地址 temp=read_byte(); T_RST=0;

T_CLK=1; //停止工作 return(temp); }

/*******************延时程序=a*1ms*****************************/ void delay(unsigned char a) { unsigned char i; while(a-- !=0) { for(i=0;i<125;i++); } }

7

德州科技职业学院青岛校区2006级毕业论文

/***********************显示程序*******************************/ void led_disp(unsigned char *poi)

{ P0=seg[*poi % 16]; //第1个数码管:显示秒(个位); delay(2); //持续2ms P0=0xff; //消影

P0=seg[*poi /16]^0x10; //第2个数码管:显示秒(十位); delay(2); P0=0xff; poi++;

P0=seg[*poi % 16]^0x30; //第4个数码管:显示分(个位) delay(2); P0=0xff;

P0=seg[*poi / 16]^0x40; //第5个数码管:显示分(十位) delay(2); poi++; P0=0xff;

P0=seg[*poi % 16]^0x60; //第7个数码管:显示时(个位) delay(2); P0=0xff;

P0=seg[*poi /16]^0x70; //第8个数码管:显示时(十位) delay(2); P0=0xff; }

/************************主程序*****************************/ void main(void)

{ unsigned char clk_time[3]={0x00,0x00,0x12}; //秒,分,时寄存器初始值 unsigned char temp=0x80; unsigned char i;

write_1302(0x8e,0x00); //WP=0 写操作 for(i=0;i<3;i++)

8

德州科技职业学院青岛校区2006级毕业论文

{ write_1302(temp,clk_time[i]); temp+=2; }

write_1302(0x8e,0x80); //WP=1 写保护 while(1)

{ led_disp(clk_time);

temp=0x81; for(i=0;i<3;i++)

{ clk_time[i]=read_1302(temp); temp+=2; } } }

五、结束语

经过了两个多月的学习和工作,我终于完成了单片机时钟课程设计。从开始接到论文要求到时钟的实现,再到论文文章的完成,每走一步对我来说都是新的尝试与挑战,这也是我在大学期间独立完成的最大的项目。在这段时间里,我学到了很多知识也有很多感受,我开始了独立的学习和试验,查看相关的资料和书籍,让自己头脑中模糊的概念逐渐清晰,使自己非常稚嫩作品一步步完善起来,每一次改进都是我学习的收获,每一次试验的成功都会让我兴奋好一段时间。 当看着自己的程序,自己成天相伴的系统能够健康的运行,真是莫大的幸福和欣慰。我相信其中的酸甜苦辣最终都会化为甜美的甘泉。

这次论文的经历也会使我终身受益,我感受到做论文是要用心去做的一件事情,是真正的自己学习的过程和研究的过程,没有学习就不可能有研究的能力,没有自己的研究,就不会有所突破。通过本次毕业设计,我在崔老师的精心指导和严格要求下,获得了丰富的理论知识,极大地提高了实践能力,单片机领域这对我今后进一步学习计算机方面的知识有极大的帮助。在此,忠心感谢崔老师以及许多同学的指导和支持。

9

德州科技职业学院青岛校区2006级毕业论文

参考文献

[1]李建忠.单片机原理及应用.西安电子科技大学出版 2006.02 [2]张俊谟.单片机中级教程.北京航空航天大学出版 2006.03 [3]余发山.单片机原理及及应用技术.中国矿业大学出版社 2003.12 [4]杨凌霄.微型计算机原理及应用.中国矿业大学出版社 2004.08 [5]何立民.单片机应用技术选编.北京航空航天大学出版社 2000.08 [6]万光毅.单片机实验与实践教程.北京航空航天大学出版社 2005.01 [7]周航慈.单片机程序设计基础.北京航空航天大学出版社 1991.11 [8]黄遵熹.单片机原理接口与应用.西北工业大学出版社 1997.05

[9]杨振江,杜铁军,李群.流行单片机实用子程序及应用实例[M].西安:西安电子科技大学出版社,2002

[10]求是科技编著,单片机典型模块设计实例导航,人民邮电出版社,2004 [11]赵亮,侯国锐编著, 单片机C语言编程与实例, 人民邮电出版社,

10

本文来源:https://www.bwwdw.com/article/pcdt.html

Top