烟台南山学院单片机课程设计题目电子万年历姓名:所在学院:烟台南山学院所学专业:自动化班级:学号:指导教师:完成时间:摘要单片机作为当今领域应用广泛的电子器件,以其极高的性能价格比,受到人们的重视和关注,应用很广、发展很快。
单片机体积小、重量轻、抗干扰能力强、环境要求不高、价格低廉、可靠性高、灵活性好、开发较为容易。
由于具有上述优点,在我国,单片机已广泛地应用在工业自动化控制、自动检测、智能仪器仪表、家用电器、电力电子、机电一体化设备等各个方面,而51单片机是各单片机中最为典型和最有代表性的一种。
以AT89C51芯片为核心,辅以必要的电路,设计了一个简易的电子时钟,它由5V直流电源供电,通过数码管能够准确显示时间,日期,调整时间,日期,从而到达学习、设计、开发软、硬件的能力。
时钟电路在计算机系统中起着非常重要的作用,是保证系统正常工作的基础。
在一个单片机应用系统中,时钟有两方面的含义:一是指为保障系统正常工作的基准振荡定时信号,主要由晶振和外围电路组成,晶振频率的大小决定了单片机系统工作的快慢;二是指系统的标准定时时钟,即定时时间,它通常有两种实现方法:一是用软件实现,即用单片机内部的可编程定时/计数器来实现,但误差很大,主要用在对时间精度要求不高的场合;二是用专门的时钟芯片实现,在对时间精度要求很高的情况下,通常采用这种方法,典型的时钟芯片有:DS1302,DS12887,X1203等都可以满足高精度的要求。
本设计由单片机AT89C51芯片和LED数码管为核心,运用DS1302时钟芯片,辅以必要的电路,构成了一个单片机电子时钟。
1 绪论 (1)2 总体方案设计与论证 (2)2.1数字时钟方案 (2)2.2显示方案 (3)3 硬件系统的方案设计 (4)3.1 系统框图 (4)3.2 单片机的选择 (4)3.3 时钟电路DS1302 (7)3.4 时钟电路及复位电路 (9)3.5 驱动电路 (9)3.6 显示电路 (10)3.7 按键接口 (11)4 软件系统设计 (12)4.1 时间信息获取程序 (12)4.2 显示程序 (12)5 系统调试 (13)5.1 系统调试 (13)5.2 时钟显示 (13)5.3 DS1302的调试 (13)5.4 按键电路调试 (13)6 总结 (14)参考文献 (15)附录:系统程序 (16)现代数字万年历是根据单片机制作而成的计时工具,是人们日常生活中必不可少的必需品,广泛用于个人家庭以及车站、办公室等公共场所,给人们的生活、学习、工作、娱乐带来极大的方便。
但随着时间的推移,科学技术的不断发展,生活节奏越来越快,竞争日益激烈,人们对时间计量的精度要求越来越高,应用越来越广。
可以说时间的准确已成为各行业安全运行的基础,如果时间出现误差而不能及时校正,会造成一系列严重的后果和经济损失。
设计一种时钟校时系统显得尤为重要,而且此系统还可以随意的定时报时,及时提醒下一步要发生的事情或要完成的事情,给人们的生活、学习和工作带来更多的方便。
高精度的计时工具大多数都使用了石英晶体振荡器,由于电子钟、石英表、石英钟都采用了石英技术,因此走时精度高、稳定性好、使用方便、不需要经常调校。
数字式电子钟用集成电路计时,译码器电路代替机械式传动,用LED 显示器代替指针显示时间,减小了计时误差,这种时钟具有时、分、秒显示时间的功能,还可以进行时、分、秒的校对,片选的灵活性好。
专门的时钟芯片还可以提供高精度的准确时间,本设计采用的时钟芯片是DS1302。
该电子时钟主要采用AT89C51单片机作为主控核心,由DS1302时钟芯片提供时钟、LED动态扫描显示屏显示。
AT89C51单片机是由Atmel公司推出的,功耗小,电压可选用4~6V电压供电;DS1302时钟芯片是美国DALLAS公司推出的具有涓细电流充电功能的低功耗实时时钟芯片,它可以对年、月、日、星期、时、分、秒进行计时,还具有闰年补偿等多种功能,而且DS1302的使用寿命长,误差小;数字显示是采用的LED显示屏来显示,可以同时显示年、月、日、星期、时、分、秒和温度等信息。
此外,该电子时钟还具有时间校准等功能。
2 总体方案设计与论证2.1数字时钟方案数字时钟是本设计的最主要的部分。
根据需要,可利用两种方案实现。
方案一采用专用时钟芯片DS1302该芯片是美国DALLAS公司推出的一种高性能、低功耗的实时时钟芯片,附加31字节静态RAM,采用SPI三线接口与CPU进行同步通信,并可采用突发方式一次传送多个字节的时钟信号和RAM数据。
实时时钟可提供秒、分、时、日、星期、月和年,一个月小与31天时可以自动调整,且具有闰年补偿功能。
工作电压宽达2.5~5.5V。
采用双电源供电(主电源和备用电源),可设置备用电源充电方式,提供了对后背电源进行涓细电流充电的能力。
DS1302用于数据记录,特别是对某些具有特殊意义的数据点的记录上,能实现数据与出现该数据的时间同时记录,因此广泛应用于测量系统中。
图1 DS1302外部引脚图各引脚的功能为:Vcc1:备用电源;Vcc2:主电源。
当Vcc2>Vcc1+0.2V时,由Vcc2向DS1302供电,当Vcc2< Vcc1时,由Vcc1向DS1302供电。
SCLK:串行时钟,输入;I/O:三线接口时的双向数据线;CE:输入信号,在读、写数据期间,必须为高。
该引脚有两个功能:第一,CE开始控制字访问移位寄存器的控制逻辑;其次,CE提供结束单字节或多字节数据传输的方法。
DS1302有关日历、时间的寄存器共有12个,其中有7个寄存器(读时81h~8Dh,写时80h~8Ch),存放的数据格式为BCD码形式。
方案二完全用软件实现数字时钟原理为:在单片机内部存储器设三个字节分别存放时钟的时、分、秒信息。
利用定时器与软件结合实现1秒定时中断,每产生一次中断,存储器内相应的秒值加1;若秒值达到60,则将其清零,并将相应的分字节值加1;若分值达到60,则清零分字节,并将时字节值加1;若时值达到24,则将十字节清零。
该方案具有硬件电路简单的特点。
但由于每次执行程序时,定时器都要重新赋初值,所以该时钟精度不高。
而且,由于是软件实现,当单片机不上电,程序不执行时,时钟将不工作。
基于硬件电路的考虑,本设计采用方案一完成数字时钟的功能。
2.2显示方案方案一 LCD液晶显示采用LCD1602液晶显示器。
在我们的日常生活中,我们对LCD1602液晶显示器并不陌生,在计算器、万用表、电子表及很多家用电子产品中都可以用到它显示的主要是数字、专用符号和图形。
特别是在单片机的人机交流界面中用它作为输出器件有显示质量高、采用数字式接口、体积小、重量轻。
功耗低等优点。
通常按显示方式咳咳分为段式、字符式、点阵式等。
但是在用它做显示器的时候,我们要对它进行编程,比如我们要显示一个字符,那么这个时候就复杂了,因为一个字符由6x8或8x8点阵组成,我们这时候既要找到和显示屏幕上某几个位置对应的显示RAM区8字节,还要使每个字节的不同位为“1”,其他的为“0”,为“1”的点亮,为“0”的不亮。
这样一来在显示简单的数字上就大大的加大了我们设计的难度,所以,对于一些简单的数字,我们不应采用LCD1602液晶显示来显示。
方案二数码管显示使用多个LED数码管显示。
LED数码管实际上是由七个发光管组成8字形构成的,加上小数点就是8个。
这些段分别由字母a,b,c,d,e,f,g,dp来表示。
当数码管特定的段加上电压后,这些特定的段就会发亮,以形成我们眼睛看到的字样了。
图2 数码管如:显示一个“2”字,那么应当是a亮b亮g亮e亮d亮f不亮c不亮dp不亮。
LED数码管有一般亮和超亮等不同之分,也有0.5寸、1寸等不同的尺寸。
小尺寸数码管的显示笔画常用一个发光二极管组成,而大尺寸的数码管由二个或多个发光二极管组成,一般情况下,单个发光二极管的管压降为1.8V左右,电流不超过30mA。
发光二极管的阳极连接到一起连接到电源正极的称为共阳数码管,发光二极管的阴极连接到一起连接到电源负极的称为共阴数码管。
常用LED数码管显示的数字和字符是0、1、2、3、4、5、6、7、8、9、A、B、C、D、E、F。
再一个,数码管相对于LCD1602液晶显示器来说具有亮度大、接口设计比较容易,价格相对较便宜等优点。
且在本次设计中恰好能把我们要显示的数字显示出来。
所以,本次设计采用多个LED数码管显示器来显示数字。
3 硬件系统的方案设计3.1 系统框图图3 系统框图3.2 单片机的选择根据所学单片机知识,AT89C51采用INTEL 公司可靠的CHMOS 工艺技术制造的高性能8位单片机,属于标准的MCS-51的HCMOS 产品。
它结合了HMOS 的高速和高密度技术及CHMOS 的低功耗特征,它继承和扩展了MCS-48单片机的体系结构和指令系统。
此外,AT89C51还可工作于低功耗模式,可通过两种软件选择空闲和掉电模式。
在空闲模式下冻结CPU 而RAM 定时器、串行口和中断系统维持其功能。
掉电模式下,保存RAM 数据,时钟振荡停止,同时停止芯片内其它功能。
所以我们选用AT89C51单片机作为主控芯片,其引脚图如下图2所示图4 AT89C51单片机引脚图AT89C51单片机引脚介绍Vss(20脚):接地VCC(40脚): 主电源+5VXTAL1(19脚):接外部晶体的一端。
在片内它是振荡电路反相放大器的输入端在采用外部时钟时,对于HMOS单片机,该端引脚必须接地;对于CHMOS单片机,此引脚作为驱动端。
XTAL2(18脚): 接外部晶体的另一端。
在片内它是一个振荡电路反相放大器的输出端,振荡电路的频率是晶体振荡频率。
若需采用外部时钟电路,对于HMOS单片机,该引脚输入外部时钟脉冲;对于CHMOS单片机,此引脚应悬浮。
RST(9脚): 单片机刚接上电源时,其内部各寄存器处于随机状态,在该脚输入24个时钟周期宽度以上的高电平将使单片机复位(RESET)PSEN(29脚): 在访问片外程序存储器时,此端输出负脉冲作为存储器读选通信号。
CPU在向片外存储器取指令期间,PSEN信号在12个时钟周期中两次生效。
不过,在访问片外数据存储器时,这两次有效PSEN信号不出现。
PSEN端同样可驱动8个LSTTL负载。
我们根据PSEN、ALE和XTAL2输出端是否有信号输出,可以判别AT89C51是否在工作。
ALE/PROG(30脚):在访问片外程序存储器时,此端输出负脉冲作为存储器读选通信号。
CPU在向片外存储器取指令期间,PSEN信号在12个时钟周期中两次生效。
不过,在访问片外数据存储器时,这两次有效PSEN信号不出现。
PSEN端同样可驱动8个LSTTL负载。
我们根据PSEN、ALE和XTAL2输出端是否有信号输出,可以判别AT89C51是否在工作。