基于单片机的电子时钟设计
基于单片机电子时钟设计

基于单片机电子时钟设计电子时钟是一种利用单片机技术来实现精确时间显示的装置。
它可以准确地显示时间,并且可以根据需要进行闹铃功能等扩展。
接下来,我将详细介绍基于单片机的电子时钟设计。
首先,我们需要选择合适的单片机来实现电子时钟。
目前,常用的单片机有STC51系列、PIC系列、AVR系列等。
在选择单片机时,我们需要考虑其性能参数、价格以及开发环境等因素。
接下来,我们需要设计电子时钟的电路结构。
电子时钟的核心是单片机,通过连接显示屏、RTC(实时时钟)、按键以及扬声器等设备,来实现时间的显示、调整以及报警功能。
首先,我们需要选择合适的显示屏。
常用的显示屏有数码管、液晶显示屏、LED点阵等。
数码管和液晶显示屏可以直接连接到单片机的IO口,而LED点阵需要借助驱动芯片来完成控制。
其次,我们需要选择合适的RTC模块,以确保时钟的准确性。
RTC模块可以借助于DS1302等实时时钟芯片来实现。
同时,我们还需要连接按键,来实现对时钟进行调整的功能。
通过按键的组合操作,我们可以调整年、月、日、小时、分钟等时间参数。
此外,如果我们希望实现报警功能,我们还需要连接一个扬声器。
通过控制扬声器的开关,我们可以在设定的时间点播放报警铃声。
在硬件设计完成后,我们就可以进行软件开发工作了。
首先,我们需要编写主程序来初始化硬件设备,并进入主循环。
在主循环中,我们需要不断读取RTC模块的时间数据,并在显示屏上进行实时显示。
同时,我们也需要编写按键检测和处理的程序。
按键检测可以通过查询IO口的状态来实现,而按键处理则需要根据按键的值进行相应的功能调整。
如果需要实现报警功能,我们还需要编写报警处理的程序。
在设定的时间点,我们可以通过控制扬声器的开关来实现报警铃声的播放。
最后,我们需要进行整体的调试和测试工作。
通过不断地调整和优化程序,来确保整个电路和软件的正常运行。
总结起来,基于单片机的电子时钟设计包括硬件设计和软件开发两部分。
通过选择合适的单片机、显示屏、RTC模块、按键和扬声器等设备,并编写相应的程序,我们可以实现一个功能完善的电子时钟。
基于单片机电子时钟的设计与实现

基于单片机电子时钟的设计与实现一、设计目标设计一个基于单片机的电子时钟,能够准确显示时间并能够进行设置和调整。
二、硬件设计1.时钟部分:采用晶振芯片提供准确的时钟信号2.数码管显示部分:使用共阴数码管进行数字显示3.按键部分:设计几个按键用于设置和调整时间4.电源部分:采用直流电源供电三、软件设计1.功能设计a.时间设置功能:通过按键可以设置当前的时间,包括小时、分钟和秒钟。
b.时间调整功能:通过按键可以调整当前的时间,包括小时、分钟和秒钟。
c.时间显示功能:通过数码管可以实时显示当前的时间。
2.代码实现以C语言为例,以下是一个基于单片机的电子时钟的代码实现示例:```c#include <reg51.h>sbit DS18B20=P1^3; // 定义18B20数据线接口sbit beep=P2^3; // 定义蜂鸣器接口unsigned char hour,min,sec; // 定义小时、分钟、秒钟变量//函数声明void Delay_1ms(unsigned int count);bit Ds18b20Init(;unsigned char Ds18b20ReadByte(;void ReadTime(;void WriteTime(;void DisplayTime(;//主函数void mainP2=0x00;WriteTime(; // 写入时间while(1)ReadTime(; // 读取时间DisplayTime(; // 显示时间Delay_1ms(1000); // 延时1秒}//毫秒延时函数void Delay_1ms(unsigned int count) unsigned int i, j;for(i=0; i<count; i++)for(j=0; j<1275; j++);//18B20初始化函数bit Ds18b20Initbit presence;DS18B20=0;Delay_1ms(100); // 延时450us~1000us DS18B20=1;Delay_1ms(10); // 延时15us~60us presence=DS18B20;Delay_1ms(30); // 延时60us~240us return presence;//18B20读取字节函数unsigned char Ds18b20ReadByte unsigned char i, dat;for(i=0; i<8; i++)DS18B20=0;//主机发起读时序_nop_(; // 延时1us_nop_(; // 延时1us_nop_(; // 延时1usDS18B20=1;//主机释放总线_nop_(; // 延时1us_nop_(; // 延时1us_nop_(; // 延时1usdat,=(DS18B20<<i); // 读取数据位,存放在dat变量中Delay_1ms(3); // 读时序完成后等待48us再接收下一位}return dat;//读取时间函数void ReadTimeunsigned char temp;temp=0x00;while(temp!=0xaa)Ds18b20Init(; // 初始化温度传感器Delay_1ms(1);DS18B20=0xcc;Delay_1ms(1);DS18B20=0xbe;Delay_1ms(1);temp=Ds18b20ReadByte(; // 读取时间数组的标志位}for(temp=0; temp<7; temp++)//写入时间函数void WriteTimeunsigned char i,j;while(1)Ds18b20Init(;Delay_1ms(1);DS18B20=0xcc;Delay_1ms(1);DS18B20=0x4e;Delay_1ms(1);for(i=0; i<7; i++)DS18B20=0x55;Delay_1ms(1);DS18B20=0xaa;Delay_1ms(1);Ds18b20Init(;Delay_1ms(1);DS18B20=0xcc;Delay_1ms(1);DS18B20=0x48;Delay_1ms(1);j=Ds18b20ReadByte(; // 判断是否写入成功if(j==0x0a)break;}//显示时间函数void DisplayTimeP1=seg[hour/10]; // 显示十位小时P2=(P2&0xf0),0x08; // 点亮第一个数码管Delay_1ms(5); // 延时一段时间P2=0x0f;//熄灭数码管P1=seg[hour%10]; // 显示个位小时P2=(P2&0xf0),0x04; // 点亮第二个数码管Delay_1ms(5); // 延时一段时间P2=0x0f;//熄灭数码管P1=seg[min/10]; // 显示十位分钟P2=(P2&0xf0),0x02; // 点亮第三个数码管Delay_1ms(5); // 延时一段时间P2=0x0f;//熄灭数码管P1=seg[min%10]; // 显示个位分钟P2=(P2&0xf0),0x01; // 点亮第四个数码管Delay_1ms(5); // 延时一段时间P2=0x0f;//熄灭数码管P1=0x00;//空显示P2=0x00;//熄灭数码管```四、总结通过以上的硬件设计和软件实现,可以实现一个基于单片机的电子时钟。
基于单片机电子时钟的设计

基于单片机电子时钟的设计一、设计背景随着科技的不断进步,电子设备在我们的生活中扮演着越来越重要的角色。
时钟作为时间的测量工具,也从传统的机械时钟逐渐发展为电子时钟。
单片机作为一种集成度高、功能强大的微控制器,为电子时钟的设计提供了高效、可靠的解决方案。
基于单片机的电子时钟具有精度高、易于编程、成本低等优点,能够满足人们对时间测量和显示的各种需求。
二、系统设计方案1、硬件设计单片机选择:选择合适的单片机是整个系统设计的关键。
常见的单片机如STM32、AT89C51 等,具有不同的性能和特点。
根据系统需求,我们选择了 AT89C51 单片机,其具有成本低、性能稳定等优点。
时钟芯片:为了保证时间的准确性,需要选择高精度的时钟芯片。
DS1302 是一款常用的实时时钟芯片,具有低功耗、高精度等特点,能够为系统提供准确的时间信息。
显示模块:显示模块用于显示时间。
常见的显示模块有液晶显示屏(LCD)和数码管。
考虑到显示效果和成本,我们选择了 1602 液晶显示屏,能够清晰地显示时间、日期等信息。
按键模块:按键模块用于设置时间和调整功能。
通过按键可以实现时间的校准、闹钟的设置等功能。
电源模块:为整个系统提供稳定的电源。
可以选择电池供电或外部电源供电,根据实际使用场景进行选择。
2、软件设计编程语言:选择合适的编程语言进行软件编程。
C 语言是单片机编程中常用的语言,具有语法简单、可读性强等优点。
主程序流程:主程序首先进行系统初始化,包括单片机端口初始化、时钟芯片初始化、显示模块初始化等。
然后读取时钟芯片中的时间信息,并将其显示在液晶显示屏上。
通过按键检测模块,判断是否有按键操作,如果有,则进行相应的处理,如时间校准、闹钟设置等。
中断服务程序:为了保证时间的准确性,需要使用定时器中断来实现时钟的计时功能。
在中断服务程序中,对时钟芯片进行时间更新,确保时间的准确性。
三、硬件电路设计1、单片机最小系统单片机:AT89C51 单片机是整个系统的核心,负责控制和协调各个模块的工作。
基于单片机的电子时钟设计

基于单片机的电子时钟设计电子时钟是一种显示时间的设备,通常基于单片机设计。
它不仅可以准确显示时间,还可以具备闹钟、日历等功能。
本文将介绍基于单片机的电子时钟的设计。
首先,我们来看单片机的选择。
在设计电子时钟时,常用的单片机有PIC、AVR和STM32等。
这些单片机都有较强的计算能力和丰富的外设接口,非常适合用于电子时钟的设计。
具体的选择可以根据需求和个人熟悉程度做出决定。
接下来,我们需要设计时钟的显示部分。
一般来说,电子时钟的显示可以采用液晶显示屏或LED数码管。
液晶显示屏具有占用空间小、显示效果清晰等优点,适合用于大号时钟;而数码管则适合用于小型时钟。
根据具体需求选择合适的显示器件。
在电子时钟设计中,如何准确获取时间是关键。
可以利用主频计数的方法,通过单片机的定时器来获取时间。
比如用32.768kHz的振荡源作为单片机的时钟源,然后每秒进行一次中断计数,通过累加中断计数值,即可得到秒数、分钟数、小时数等。
在此基础上,可以进一步添加日历计算功能,如年、月、日的计算。
闹钟功能是电子时钟的重要组成部分之一、我们可以通过按键输入设置闹钟的时间和开关状态。
当闹钟时间到达时,可以通过蜂鸣器或液晶显示器等方式提醒用户。
闹钟的开关状态可以通过EEPROM等非易失性存储器来保存,以实现断电重启后不丢失设置的功能。
除了基本的显示和计时功能,电子时钟还可以增加其他实用的功能。
比如温湿度显示功能,可以通过外部传感器获取环境的温度和湿度,并显示在屏幕上。
还可以添加定时开关机功能,通过按键设置时间和开关状态,控制电源的开关。
这些功能的实现都需要通过合理的硬件设计和软件编程来完成。
总的来说,基于单片机的电子时钟设计需要首先选择合适的单片机,并根据具体需求设计显示部分、时间获取部分、闹钟部分以及其他扩展功能。
其中涉及到硬件设计和软件编程的内容,需要有一定的电子和计算机基础知识。
通过合理的设计和编程,我们可以实现一个功能齐全、准确可靠的电子时钟。
基于单片机的电子时钟设计与实现

基于单片机的电子时钟设计与实现电子时钟是现代人生活中不可或缺的一部分。
随着现代科技的发展,基于单片机的电子时钟已经成为人们常见的选择。
本文将详细介绍基于单片机的电子时钟设计与实现。
一、基于单片机的电子时钟的原理基于单片机的电子时钟是通过控制晶体振荡器的频率来实现时钟的精度。
当晶体振荡器振荡周期稳定时,控制晶体振荡器的频率就可以实现时钟的精确。
二、基于单片机的电子时钟的设计1、硬件设计(1)时钟芯片:MCU常用的计时器是AT89S52,这是一个高性能的、低功耗的8位CMOS微控制器,使用半导体工艺方案,集成了66个I/O口和4个定时/计数器。
MCU的定时器的时钟源要保证准确,采用低失真、低相位噪声的晶振可以保证这一点。
(2)显示器件:本设计采用单片机驱动数码管来显示时间,以节省成本。
数码管是由点阵组成的,共有八段,其中七段是用来表示数字的,而第八段是用来显示小数点、时间标志等字符。
(3)按键及配套链路:按键和链路的作用是用来调整电子时钟的计时和校准。
采用常开或常闭接触式按钮即可实现这一功能。
2、软件设计(1)时钟芯片:AT89S52时钟芯片采用C语言编程,最终生成.HEX文件,充当芯片程序的载体,烧录进芯片后即可实现自动扫描、计时、纠偏、时间显示、闹铃、定时关闭等多项功能。
(2)扫描及计时:8个数码管需要进行扫描的操作,程序运行时根据八个位选信号,依次驱动八个共阳数码管的位选脚。
在每次扫描完成后即进行时钟计时的工作,判断闹钟时间是否到达,若到达则执行闹铃程序。
(3)时间设置:根据按键的输入状态,进行时间值的修改,来实现时钟时间的设置。
(4)闹铃:当当前时间与闹钟设置时间相等时,启动闹铃程序,进行可选的led闪烁、蜂鸣器响声等提醒操作。
三、基于单片机的电子时钟的实现将设计好的电路板焊接好,控制程序烧录进入AT89S52芯片,并将电子时钟放置在合适的位置或固定于墙壁上即可使用。
四、基于单片机的电子时钟的优缺点优点:精度高、误差小、易于校对和设置、功能多样化、体积小、寿命长。
基于单片机的数字电子时钟设计

基于单片机的数字电子时钟设计数字电子时钟是一种非常常见的电子产品,它可以帮助我们实现精确的时间显示,让我们的生活更加方便。
随着科技的不断发展,数字电子时钟也在不断更新和发展,基于单片机的数字电子时钟已经成为当前最先进的技术之一。
本文将介绍基于单片机的数字电子时钟的设计原理和实现方法。
一、数字电子时钟的设计原理数字电子时钟的实现原理就是把时间信号转换成数字信号,再通过计算机芯片来显示时间。
其中,时间信号可以是电缆信号或者无线信号,并且也可以通过外部的控制电路进行调节。
而计算机芯片可以采用单片机、PLC控制器等方案进行设计。
基于单片机的数字电子时钟,可以使用数字时钟芯片和定时器芯片来完成。
数字时钟芯片是一种能够实现数据的统计、时钟显示等功能的IC芯片,通过将其与定时器芯片相连,就能够实现精确的时间统计和显示。
此外,在设计时还需要进行软硬件电路的优化和调试。
二、基于单片机的数字电子时钟的实现方法1、硬件设计基于单片机的数字电子时钟的硬件设计,主要包含单片机控制电路、显示电路、外设接口电路、供电电路、时钟芯片和定时器芯片等部分。
其中,时钟芯片用于提供精准的时间信号,定时器芯片则用于进行计时,而单片机和外设接口电路则用于控制整个数字电子时钟的功能。
另外,数字电子时钟还需要进行外观设计,通常采用的是数码管或液晶屏幕显示时间。
通过优化电路布局和参数匹配,可以有效地提高整个数字电子时钟的稳定性和精度。
2、软件设计在数字电子时钟的软件设计中,主要包含固件设计和操作系统设计两部分。
固件设计是指对单片机系统进行程序编写、调试和优化,以实现时钟的各种功能;而操作系统设计,则是对固件进行封装,建立起一套完整的操作环境,方便用户进行操作。
在固件设计中,需要考虑到时钟的显示、调节、闹钟、定时等多种功能的实现。
通常,这些功能都会涉及到多个模块和数据结构的设计,需要通过循序渐进的方式逐步实现。
在操作系统设计中,需要对时钟的各种操作进行封装,形成一套完整的操作界面。
基于单片机电子时钟设计与制作

基于单片机电子时钟设计与制作一、设计需求与原理我们的目标是设计一款能够准确显示时间(包括小时、分钟和秒),具备设置时间功能,并且可以在不同的显示模式(如 12 小时制和 24小时制)之间切换的电子时钟。
其工作原理主要基于单片机的控制。
单片机作为核心控制器,接收来自时钟芯片的时间数据,并将其处理后输出到显示模块进行显示。
同时,通过按键模块,用户可以向单片机输入指令,实现时间的设置和显示模式的切换等操作。
二、硬件设计1、单片机选择我们选用常见的 STC89C52 单片机,它具有性能稳定、价格低廉、易于编程等优点。
2、时钟芯片DS1302 时钟芯片被用于提供准确的时间信息。
它能够在掉电情况下保持时间数据不丢失,保证了时钟的可靠性。
3、显示模块为了清晰直观地显示时间,采用了液晶显示屏(LCD1602)。
它能够显示多行字符,满足我们显示小时、分钟、秒以及其他相关信息的需求。
4、按键模块设置四个独立按键,分别用于时间的调整(增加、减少)、显示模式的切换以及时间设置的确认。
5、电源模块为整个系统提供稳定的 5V 直流电源,可以通过 USB 接口或者电池进行供电。
三、软件设计1、编程语言使用 C 语言进行编程,它具有语法简单、可读性强、可移植性好等特点。
2、程序流程初始化系统后,单片机不断从时钟芯片读取时间数据,并将其显示在液晶显示屏上。
当检测到按键操作时,进入相应的处理函数,实现时间设置和显示模式切换等功能。
四、制作过程1、硬件焊接首先,将各个元器件按照原理图焊接在电路板上。
注意焊接的质量,避免虚焊和短路。
2、软件烧录使用编程器将编写好的程序烧录到单片机中。
3、系统调试接通电源,检查液晶显示屏是否正常显示,按键是否能够准确响应操作。
如果出现问题,通过调试工具(如示波器、逻辑分析仪等)进行故障排查和修复。
五、系统测试1、时间准确性测试将制作好的电子时钟与标准时间进行对比,观察其在长时间运行中的时间准确性。
2、功能测试测试时间设置功能、显示模式切换功能是否正常,按键操作是否灵敏可靠。
基于单片机的电子时钟设计

基于单片机的电子时钟设计电子时钟是人们日常生活中常见的设备之一,它不仅能够准确显示时间,还可以搭配其他功能,如闹钟、温度显示等。
本文将介绍基于单片机的电子时钟的设计原理和步骤,并探讨其在现代生活中的应用。
一、设计原理基于单片机的电子时钟主要由以下几个模块组成:时钟模块、显示模块、控制模块和电源模块。
时钟模块负责获取当前时间并进行计时,显示模块用于将时间信息显示出来,控制模块用于处理用户的输入操作,电源模块为电子时钟提供稳定的电源。
1. 时钟模块时钟模块的核心是一个定时器,它可以定时触发中断,通过中断服务程序来更新时间。
在单片机中,我们可以使用定时器模块来实现这个功能,通过设定合适的定时器参数,可以实现从毫秒级到秒级的计时精度。
2. 显示模块显示模块通常采用数码管或者液晶显示屏来显示时间信息。
数码管可以直接显示数字,在低功耗和成本方面具有优势;液晶显示屏可以显示更多的信息,具有更好的可视角度和美观性。
在电子时钟中,我们可以通过控制显示模块的引脚,以适当的方式显示小时、分钟和秒数。
3. 控制模块控制模块主要用于处理用户的输入操作,如设置闹钟时间、调整时间等。
可以通过按键开关、旋转编码器或者触摸屏等方式来实现用户交互。
当用户按下按键或者滑动触摸屏时,控制模块会相应地改变时钟模块中的时间数据或者触发其他操作。
4. 电源模块电子时钟需要一个稳定的电源来工作,通常使用交流电转直流电的方式进行供电。
电源模块可以通过整流、滤波和稳压等电路来提供稳定的直流电源。
二、设计步骤基于单片机的电子时钟的设计步骤如下:1. 确定需求和功能:首先需要明确设计的需求和功能,包括显示方式、时间格式、附加功能等。
2. 选择单片机:根据需求选择适合的单片机型号,考虑处理性能、存储空间、外设接口等因素。
3. 设计电路图:根据选择的单片机和其他模块,设计电子时钟的电路图。
包括时钟模块、显示模块、控制模块和电源模块的连接方式。
4. 编写源代码:根据电路图和功能需求,编写单片机的源代码。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
bu武汉软件工程职业学院2006级毕业论文课题名称基于单片机的电子时钟设计学生姓名班级指导老师完成时间:2008 年10月 23日光电子与通信工程系基于单片机的电子时钟设计摘要本文介绍了一款基于AT89S51单片机控制的电子钟的设计,通过多功能数字钟带的设计思路,详细叙述了系统硬件、软件的具体实现过程。
论文重点阐述了数字钟硬件中MCU模块、时钟模块、显示模块和相关控制模块等的模块化设计与制作;软件同样采用模块化的设计,包括中断模块、时间调整模块设计,并采用简单流通性强的C语言编写实现。
本设计实现了时间的修改功能和年、月、日和星期的显示功能。
关键词:AT89S51 单片机数字钟AbstractThis paper introduced the design of digital clock based on SCM of AT89S51, the specific process of how the system hardware and software achieved were detailed description through the design of multifunction digital clock. The modular design and production, which consisted of MCU module,clock module and the associated control module, were mainly recounted;As well as hardware designing,software design use the same method, consists suspension module, time adjust module, and that use the C language to achieve because of its simple and strong negotiability. In this design the functions of time clock run and change, functions of the year, month, day and week display have been achieved. And by comparing the actual clock.Key words :AT89S51Microcontroller Digital Clock目录前言 (3)第一章系统实现功能、设计方案论证及芯片介绍 (4)第一节系统要求实现功能 (4)第二节设计方案论证 (4)第三节芯片介绍 (6)1、D S1302芯片介绍 (6)第二章电路硬件设计及分析 (10)第一节时钟电路 (10)第二节复位电路 (11)第三节DS1302时钟电路 (11)第四节键盘电路 (12)第五节.显示电路 (13)第六节按键提示电路 (14)第三章软件设计 (15)第一节主函数流程图 (15)第二节键盘电路流程图 (16)第三节定时器T0中断服务程序流程图 (17)第四章结束语 (18)第一节带时钟显示的温度计Proteus仿真效果图 (18)第二节所用到的相关元器件图示 (19)附录主程序清单 (20)参考文献 (32)致谢 (33)前言单片微型计算机是随着超大规模集成电路技术的发展而诞生的,由于它具有体积小、功能强、性价比高等特点,所以广泛应用于电子仪表、家用电器、节能装置、军事装置、机器人、工业控制等诸多领域,使产品小型化、智能化,既提高了产品的功能和质量,又降低了成本,简化了设计。
本文主要介绍由单片机控制的电子钟的设计。
第一章系统实现功能、设计方案论证及芯片介绍第一节系统要求实现功能(1) 万年历(2) 三键调时(设置键,上调键,下调键)(3)按键蜂鸣器提示(调试时蜂鸣器BUZZER系统自动设置为“本元件进行仿真”)第二节设计方案论证方案一用主芯片为AT89C51的单片机控制实现,为了满足单片机系统的实时控制的需求,采用实时钟芯片DS1302,使用按键进行时间的调整和定时,按键蜂鸣器提示,时间使用LCD1602显示。
方案2系统结构框图如图1-2所示。
温度传感器信号调理电路AD转换电路方案二用主芯片为AT89C51的单片机控制实现,为了满足单片机系统的实时控制的需求,采用实时钟芯片DS1302,使用按键进行时间的调整和定时,按键有蜂鸣器提示,显示时间使用LCD1602显示。
方案3系统结构框图如图1-3所示。
DS18B20图1-3方案3系统结构框图方案选择方案一直接使用单片机内集成的定时器,产生定时节拍,编制软件计数器,进行节拍技术,理论上讲,不但能够完成秒表设计,还能够实现分钟、刻钟、小时的实时计时功能,在此基础上,如果加上足够精确的误差时间补偿处理,甚至可以实现日、星期、月、年等日历功能。
但使用片内定时器有以下几个问题:1、时间补偿片内定时器采用中断方式提供计时节拍,中断的实质是随机程序切换,那么,中断响应时间是不可精确预测的。
这样,必然会导致计时节拍的时间误差,在计时时间较短的情况下,比如1~99s计时,可以采用一些软件措施进行误差补偿,但当系统所需要的计时时间较长时,比如进行年、月、日的日历计时,定时中断误差扥积累就会很大,无法满足时间精度的要求。
因此,在需要日历、时钟的场合,片内定时器的作用有限。
片内定时器只适合于单片机短时间计时的要求。
2、时钟维持使用片内定时器进行计时的时候,单片机始终要处于工作状态。
才能维持计时时间,一旦停机或进入待机状态,开机后,计时时间就需要重新设定。
在单片机系统中,有时,需要维持一个时钟,对控制工作进行时间标定。
不管单片机系统开机、关机还是待机,系统时钟要始终维持。
为了满足单片机系统的实时钟需求,最可靠的方法是采用实时钟芯片DS1302。
这个设计采用的是方案三。
第三节芯片介绍一、DS1302芯片介绍DS1302是DALLAS公司推出的涓流充电时钟芯片,内含一个实时时钟/日历和31字节静态RAM,可以通过串行接口与单片机进行通信。
实时时钟/日历电路提供秒、分、时、日、星期、月、年的信息,每个月的天数和闰年的天数可自动调整,时钟操作可通过AM/PM标志位决定采用24或12小时时间格式。
DS1302与单片机之间能简单地采用同步串行的方式进行通信,仅需三根I/O线:复位(RST)、I/O数据线、串行时钟(SCLK)。
时钟/RAM的读/写数据以一字节或多达31字节的字符组方式通信。
DS1302工作时功耗很低,保持数据和时钟信息时,功耗小于1mW。
1、DS1302的内部结构DS1302的外部引脚功能说明如图1-6所示。
DS1302封装图X1,X232.768kHz晶振引脚GND 地RST 复位I/O 数据输入/输出SCLK 串行时钟VCC1 电池引脚VCC2 主电源引脚图1-6DS1302的外部引脚功能说明图DS1302的内部结构如图1-7所示,主要组成部分为:移位寄存器、控制逻辑、振荡器、实时时钟以及RAM。
虽然数据分成两种,但是对单片机的程序而言,其实是一样的,就是对特定的地址进行读写操作。
图1-7 DS1302的内部结构图DS1302含充电电路,可以对作为后备电源的可充电电池充电,并可选择充电使能和串入的二极管数目,以调节电池充电电压。
不过对我们目前而言,最需要熟悉的是和时钟相关部分的功能,对于其它参数请参阅数据手册。
2、DS1302的工作原理DS1302工作时为了对任何数据传送进行初始化,需要将复位脚(RST)置为高电平且将8位地址和命令信息装入移位寄存器。
数据在时钟(SCLK)的上升沿串行输入,前8位指定访问地址,命令字装入移位寄存器后,在之后的时钟周期,读操作时输出数据,写操作时输出数据。
时钟脉冲的个数在单字节方式下为8+8(8位地址+8位数据),在多字节方式下为8加最多可达248的数据。
3、DS1302的寄存器和控制命令对DS1302的操作就是对其内部寄存器的操作,DS1302内部共有12个寄存器,其中有7个寄存器与日历、时钟相关,存放的数据位为BCD码形式。
此外,DS1302还有年份寄存器、控制寄存器、充电寄存器、时钟突发寄存器及与RAM 相关的寄存器等。
时钟突发寄存器可一次性顺序读写除充电寄存器以外的寄存器。
日历、时间寄存器及控制字如表1-2所示。
表1-2 日历、时钟寄存器与控制字对照表寄存器名称7 6 5 4 3 2 1 0 1 RAM/CK A4 A3 A2 A1 A0 RD/W秒寄存器 1 0 0 0 0 0 0分寄存器 1 0 0 0 0 0 1小时寄存器 1 0 0 0 0 1 0日寄存器 1 0 0 0 0 1 1月寄存器 1 0 0 0 1 0 0星期寄存器 1 0 0 0 1 0 1年寄存器 1 0 0 0 1 1 0写保护寄存器 1 0 0 0 1 1 1慢充电寄存器 1 0 0 1 0 0 0时钟突发寄存器 1 0 1 1 1 1 1最后一位RD/W为“0”时表示进行写操作,为“1”时表示读操作。
DS1302内部寄存器列表如表1-3所示。
表1-3 DS14302内部主要寄存器分布表寄存器名称命令字取值范围各位内容写读7 6 5 4 3 2 1 0秒寄存器80H 81H 00-59 CH 10SEC SEC分寄存器82H 83H 00-59 0 10MIN MIN小时寄存器84H 85H 01-12或00-23 12/24 0 A HR HR日期寄存器86H 87H 01-28,29,30,31 0 0 10DATE DATE月份寄存器88H 89H 01-12 0 0 0 10M MONTH周寄存器8AH 8BH 01-07 0 0 0 0 0 DAY年份寄存器8CH 8DH 00-99 10YEAR YEAR DS1302内部的RAM分为两类,一类是单个RAM单元,共31个,每个单元为一个8位的字节,其命令控制字为COH~FDH,其中奇数为读操作,偶数为写操作;再一类为突发方式下的RAM,此方式下可一次性读写所有的RAM的31个字节,命令控制字为FEH(写)、FFH(读)。
我们现在已经知道了控制寄存器和RAM的逻辑地址,接着就需要知道如何通过外部接口来访问这些资源。
单片机是通过简单的同步串行通讯与DS1302通讯的,每次通讯都必须由单片机发起,无论是读还是写操作,单片机都必须先向DS1302写入一个命令帧,这个帧的格式如表1所示,最高位BIT7固定为1,BIT6决定操作是针对RAM还是时钟寄存器,接着的5个BIT是RAM 或时钟寄存器在DS1302的内部地址,最后一个BIT表示这次操作是读操作抑或是写操作。