论文基于单片机的数字实时时钟的设计.docx
- 文档编号:5272771
- 上传时间:2022-12-14
- 格式:DOCX
- 页数:30
- 大小:582.41KB
论文基于单片机的数字实时时钟的设计.docx
《论文基于单片机的数字实时时钟的设计.docx》由会员分享,可在线阅读,更多相关《论文基于单片机的数字实时时钟的设计.docx(30页珍藏版)》请在冰豆网上搜索。
论文基于单片机的数字实时时钟的设计
目 录
摘 要
本设计以AT89C51单片机为核心,以实时时钟芯片DS1307和液晶显示LCD1602为主体设计了一款简易数字时钟。
该时钟系统主要由单片机最小系统、时钟模块、闹钟模块、液晶显示模块、键盘控制模块组成。
系统具有简单清晰的操作界面,能够准确显示时间(显示格式为时时:
分分:
秒秒,24小时制),可随时进行时间调整,具有闹钟时间设置、闹钟开/关。
设计以硬件软件化为指导思想,充分发挥单片机功能,大部分功能通过软件编程来实现,电路简单明了,系统稳定性高。
同时,该时钟系统还具有功耗小、成本低的特点,具有很强的实用性。
由于系统所用元器件较少,单片机所被占用的I/O口不多,因此系统具有一定的可扩展性。
软件程序采用均采用C语言编写,便于移植与升级。
报告详细介绍了整个系统的硬件组成结构、工作原理和系统的软件程序设计。
关键词 数字时钟;单片机;DS1307;LCD1602
第1章 设计方案
1.1 方案论证与比较
方案一:
基于FPGA的系统总体设计方法。
为了实现:
(1)显示年、月、日、时、分、秒、星期,并且可以进行调整时间;
(2)可以设定闹钟和整点报时的功能,数字时钟在总体上主要分为三大部分:
输入人机界面部分、FPGA核心功能部分和输出界面部分,其系统设计框图如图1-1所示。
图1-1 基于FPGA的系统设计方框图
方案二:
采用单片机技术来实现数字钟的功能。
系统以AT89C51单片机为核心控制器件,它除了具备微机CPU的数值计算功能外,还具有灵活强大的控制功能,以便实时检测系统的输入量、控制系统的输出量,实现自动控制。
与传统机械表相比,它具有走时精确,显示直观等特点。
它的计时周期为24小时,显满刻度为“23时59分59秒”,另外具有校时功能,断电后有记忆功能,恢复供电时可实现计时同步等特点。
外围主要有串行通信器件实时时钟芯片DS1307等,使得系统线路简单可靠性高。
系统结构框图如图1-2所示。
图1-2 基于单片机实现的数字时钟系统结构框图
单片机最小系统:
其作用是和外围的时钟芯片通信,并控制数据传输的过程,采集时间信息并予以处理。
键盘模块:
键盘模块可以设置时间信息,通过单片机写入时钟芯片,以更新时间;也可以设置闹钟,由单片机存入其内部RAM中。
时钟模块:
此模块由专用的实时时钟芯片构成,由它提供实时的日历时钟信息。
液晶显示模块:
单片机读取时钟芯片DS1307中的信息,通过液晶显示器实时显示。
采用LCD作为显示器,具有界面友好、功耗低的优点。
闹钟模块:
单片机主控模块读取日历芯片中的时间信息,与所设置的闹钟时间相比较,若相同时,闹钟模块工作闹钟模块。
电源模块:
用220V市电经整流、滤波、稳压后,输出稳定的+5V的直流电为其供电。
1.2 方案确定
综合考虑以上两种方案的优缺点以及题目的基本要求和发挥要求,在本设计中,我采用了第二种方案,即采用单片机来实现数字时钟的功能为我此次设计的方案。
第2章 硬件设计
2.1 单片机最小系统
单片机最小系统以AT89C51单片机为核心,由单片机、时钟电路、复位电路等组成如图2-1所示。
主要负责各个模块的初始化工作;读取并处理时间;处理按键响应;控制液晶实时显示等。
图2-1 单片机最小系统
主控制器AT89C51单片机与MCS51系列单片机产品兼容,内部自带有4KB的Flash存储器及256KB RAM单元,不需另外扩展EEPROM及静态RAM,可以在线下载程序,易于日后的升级。
图中,P2.0、P2.1、P2.2及P1口为单片机与液晶显示器连接的控制和通信的数据端口;P2.6和P2.7为单片机与时钟芯片DS1307通信的端口;P2.3为闹钟的控制端口;P0.0、P0.1、P0.2、P0.3为按键模块的接口。
时钟电路是由XTAL1和XTAL2之间跨接的晶体振荡器和微调电容构成。
时钟电路中晶体振荡器的频率高则系统的时钟频率就高,所以该系统采用12M晶振;
复位电路有两种形式:
手动按键复位和上电复位,在本系统中采用的是手动按键复位。
如图2-1所示,R1、R2、C3和SW组成系统手动按键复位电路。
2.2 时钟模块
系统采用DS1307时钟芯片。
DS1307是美国DALLAS公司推出的一种高性能、低功耗的时钟芯片,它是一款I2C总线接口的时钟芯片,采用两线与CPU进行通信,片内含有8个特殊功能寄存器和56bit的SRAM。
DS1307的主要技术指标:
具有秒、分、时、日、星期、月、年的计数功能;12小时制和24小时制两种计数模式;可自动调整每月的天数,具有闰年自动修正、掉电保护和上电复位功能。
2.2.1 DS1307的引脚功能
DS1307采用8引脚双列直插DIP封装形式,引脚分布如图2-2所示。
相应功能如下:
Vcc:
主电源;
Vbat:
备用电源。
当Vbat>Vcc+0.2V时,由Vcc向DS1307供电,当Vbat GND: 逻辑地; SCL: I2C总线时钟线; SDA: I2C总线数据线; SQW/OUT: 方波/输出驱动器。 图2-2 DS1307引脚分布图 2.2.2 DS1307的内部结构 1.内部结构 DS1307芯片由晶体振荡器、电源控制器、I2C总线控制、分频处理、逻辑控制、RAM存储、多路选择器、时钟/日历寄存器、缓冲器组成,内部结构如图2-3所示。 图2-3 DS1307的内部结构 2.寄存器 DS1307有关日历、时间的寄存器共有12个,其中有7个寄存器(读时81H~8DH,写时80H~8CH),存放的数据格式为BCD码形式,如表2-1所示。 表2-1 DS1307的日历、时间寄存器 地址 D7 D6 D5 D4 D3 D2 D1 D0 功能 取值范围 81H CH 十位 个位 秒 00-59 83H 0 十位 个位 分 00-59 85H 0 12 十位 十位 个位 时 AM: 1-12 PM: 00-23 24 8B 0 0 0 0 0 星期 星期 01-07 87H 0 0 十位 个位 日 01-31 89H 0 0 0 十位 个位 月 01-12 8DH 十位 Year 年 00-99 8FH OUT 0 0 SOWE 0 0 RS1 RS0 控制字 - 91H RAM 56×8 00H-FFH (1)小时寄存器(85H、84H)的位7用于定义DS1307是运行于12小时模式还是24小时模式。 当为高电平时,选择12小时模式。 在12小时模式时,位D5是 ,当为1时,表示PM。 在24小时模式时,位5是第二个10小时位。 (2)秒寄存器(81H、80H)的位7定义为时钟暂停标志(CH)。 当该位置为1时,时钟振荡器停止,DS1307处于低功耗状态;当该位置为0时,时钟开始运行。 (3)控制寄存器(8FH、8EH)的位7是写保护位(WP),其它7位均置为0。 在任何的对时钟和RAM的写操作之前,WP位必须为0。 当WP位为1时,写保护位防止对任一寄存器的写操作。 2.2.3 DS1307的读写操作 DS1307是基于I2C总线接口的时钟芯片,软件上与I2C总线完全兼容。 1.I2C总线的驱动 I2C总线在传送数据时,必须确认传送数据的开始和结束。 而且每传送一个字节,要发送一个应答位(0);在一个周期发送结束后,要发送一个应答位 (1)。 具体如图2-4所示,三种信号的格式如下: (1)启动信号: 当时钟总线SCL为高电平时,数据线SDA由高电平跳变为低电平定义为“启动”信号。 (2)停止信号: 当时钟总线SCL为高电平时,数据线SDA由低电平跳变为高电平定义为“结束”信号。 (3)应答位: 当主器件发送完一字节的数据后,后面必须跟一个应答位(ACK)。 在时钟高电平期间,如果数据线SDA为低电平代表一个字节的传送结束,并准备下一个要传送的字节;在时钟高电平期间,如果数据线SDA为低电平代表一个传送周期结束,准备下一个传送周期。 图2-4 I2C总线的数据传送格式 2.DS1307的写控制 图2-5是DS1307的写控制格式,首先发送启动信号,然后发送的第一个字节是用来控制芯片的地址以及读写控制位(D0: 0–写),之后是应答位,然后发送其它字节数据,在最后发送一个结束标志的应答位,紧跟着是停止信号。 S 1101000 0 A XXXX XXXX A XXXX XXXX A XXXX XXXX A XXXX XXXX A P 图2-5 CPU写数据模式 3.DS1307的读控制 图2-6是DS1307的读控制格式,首先发送启动信号,然后发送的第一个字节是用来控制芯片的地址以及读写控制为(D0: 1–读),之后是应答位,然后发送其它字节数据,在最后发送一个结束标志的应答位,紧跟着是停止信号。 S 1101000 1 A XXXX XXXX A XXXX XXXX A XXXX XXXX A XXXX XXXX A P 图2-6 CPU读数据模式 2.2.4 DS1307硬件电路设计 DS1307采用与CPU进行通信,电路连接简单。 DS1307的内部振荡电路结构如图2-7所示,在芯片内部连接有两个电容,目的是为了使晶振起振,所以在电路设计中就不需要另外再加电容了。 图2-7 DS1307的内部振荡电路 时钟模块电路如图2-8所示,其中晶振采用的是32.768kHz,经内部电路分频后可获得一个标准的秒脉冲信号;电阻R3、R4是I2C总线的上拉电阻。 图2-8 DS1307的电路连接 2.3 闹铃模块 系统采用蜂鸣器作为闹铃输出,电路连接如图2-9所示。 电路中采用PNP管Q1来控制蜂鸣器的开关,由图可以看出: 当P2.3引脚为高电平时,PNP管截止,蜂鸣器不工作;当P2.3引脚为低电平时,PNP管导通,蜂鸣器工作。 其中R9为限流电阻。 图2-9 闹铃电路 2.4 键盘模块 键盘模块设置了四个按键: KEY1、KEY2、KEY3、KEY4。 其中KEY1为模式切换键,KEY2为设定值上升键,用KEY3为设定值减小键,KEY4是返回键。 电路连接如图2-10所示。 4个上拉电阻可以保证在没有按键输入时,进入单片机四个I/O口的按键状态均为高电平,防止干扰产生;当有按键按下时,相应的端口线状态转为低电平。 图2-10 键盘电路 2.5 LCD显示模块 LCD显示器分为字段显示和字符显示两种。 其中字段显示与LED显示相似,只要送对应的信号到相应的管脚就能显示。 字符显示是根据需要显示基本字符。 本设计采用的是字符型显示。 系统中采用LCD1602作为显示器件输出信息,可以显示2行16个汉字。 与传统的LED数码管显示器件相比,液晶显示模块具有体积小、功耗低、显示内容丰富、不需要外加驱动电路等优点,是单片机应用设计中最常用的显示器件。 2.5.1 LCD1602的引脚功能 LCD1602模块的引脚如图2-11所示。 图2-11 LCD1602模块 其引脚功能如下: RS: 数据和指令选择控制端,RS=0命令状态;RS=1数据; R/W: 读写控制线,R/W=0写操作;R/W=1读操作; A: 背光控制正电源; K: 背光控制地; E: 数据读写操作控制位,E线向LCD模块发送一个脉冲,LCD模块与单片机间将进行一次数据交换; DB0~DB7: 数据线,可用8位连接,也可只用高4位连接,节约单片机资源; VDD: 电源端; VEE: 亮度控制端(1-5V); VSS: 接地端。 2.5.2 LCD1602的显示操作 1.四种基本操作 LCD有四种基本操作,具体如表2-2所示。 表2-2 LCD与单片机之间有四种基本操作 RS R/W 操作 0 0 写命令操作(初始化,光标定位等) 0 1 读状态操作(读忙标志位) 1 0 写数据操作(要显示内容) 1 1 读数据操作(可以把显示存储区中的数据反读出来) (1)读状态操作 执行读状态字操作,如表2-2所示须满足RS=0、R/W=1。 根据管脚功能,当为有效电平时,状态命令字可从LCD模块传输到数据总线。 同时可以保持一段时间,从而实现读状态字的功能。 如图2-12所示为读入状态字流程图。 图2-12 读入状态字流程图 (2)写命令操作 由表2-2可知当RS=0,R/W=0时,才可以通过单片机或用户指令把数据即命令,写到LCD模块,此时就对LCD进行调制。 可采用查询方式: 先读入状态字,再判断忙标志,最后写命令字。 1)命令字 表2-3所示为命令字,其主要介绍了指令名称、控制信号及控制代码。 其指令名称是指要实现的功能,控制代号是采用的十六进制的数值表示的。 a.清零操作是指输入某命令字后即能将整个屏幕显示的内容全部清除; b.归home位: 将光标送到初始位;其中的*号为任意,高低电平均可; c.输入方式: 设光标移动方向并指定整体显示,是否移动。 I/D=0: 减量方式,S=1: 移位,S=0: 不移位; d.显示状态: D指设置整体显示开关;C指设置光标显示开关;B指设置光标的字符闪耀; e.光标画面滚动: R/L指右移或左移;S/C指移动总体或光标; f.功能设置: DL接口数位,L指显示行数,F显示字型; g.CGRAM地址设制: 相当于一个数据库,可以在其中选择所需要的符号; h.DDRAM地址设制: 显示定位; i.读BF和AC: B为最高位忙的标志,F为标志位; j.写数据: 将数据按要求写入到对应的单元; k.读数据: 读相应单元内的数据。 表2-3 命令字 指令名称 控制信号 控制代码 RS RW D7 D6 D5 D4 D3 D2 D1 D0 清屏 0 0 0 0 0 0 0 0 0 1 归HOME位 0 0 0 0 0 0 0 0 1 * 输入方式设制 0 0 0 0 0 0 0 1 I/D S 显示状态设制 0 0 0 0 0 0 1 D C B 无标画面滚动 0 0 0 0 0 1 S/C RL * * 功能设置 0 0 0 0 1 DL N F * * CGRAM地址设制 0 0 0 1 A5 A4 A3 A2 A1 A0 DDRAM地址设制 0 0 1 A6 A5 A4 A3 A2 A1 A0 读BF和AC 0 1 BF AC6 AC5 AC4 AC3 AC2 AC1 AC0 写数据 1 0 数据 读数据 1 1 数据 2)如图2-13为写命令字的流程图。 图2-13 写命令字流程图 3)定义光标位置 把显示数据要某个位置,就是把显示数据写在相应的DDRAM地址中,DDRAM地址占7位。 Set DDRAM address命令如表2-3所示。 光标定位,写入一个显示字符后,DDRAM地址会自动加1或减1,加或减由输入方式设置。 表2-4 SetDDRAMaddress命令 RS R/W DB7 DB6 DB5 DB4 DB3 DB2 DB1 DB0 0 0 1 AC6 AC5 AC4 AC3 AC2 AC1 AC0 第1行DDRAM地址与第2行DDRAM地址并不连续。 如表2-4所示。 表2-5 DDRAM地址 row 1 2 3 4 5 … 14 15 16 line1 80H 81H 82H 83H 84H … 8dH 8eH 8fH line2 0c0H 0c1H 0c2H 0c3H 0c4H … 0cdH 0ceH 0cfH 4)LCD初始化 从通电开始通过延时,先经过判忙后再进行功能设置,过一段时间后可以设制显示状态(如设置行、位或阵列)再经过延时后清屏后再可以设置输入方式,具体如图2-14所示。 图2-14 LCD初始化流程图 2.LCD显示程序设计 LCD显示程序的设计一般先要确定LCD的初始化、光标定位、确定显示字符后,LCD就可以按如图2-15显示。 图2-15 LCD显示程序流程图 2.6 电源模块 用220V市电经整流、滤波、稳压后,输出稳定的+5V的直流电为其供电。 +5V稳压器采用CW7805,其应用电路如图2-16所示。 图中,滤波电容C6和C8的值为1000uF,C7和C9为0.33uF。 发光二极管D6的作用是显示读写器的电源是否接通,若接通则D6灯亮,无接通则D6灯灭。 图2-16 电源电路图 第3章 软件设计 系统的软件设计可以分为几个部分,首先编写各个模块的底层驱动程序,而后是系统联机调试,编写上层系统程序。 本系统软件程序主要包括: 液晶LCD1602的底层驱动模块、时钟芯片DS1307的底层驱动模块、键盘扫描及键值处理模块、闹钟模块等。 3.1 系统流程图 系统的软件主流程图如图3-1所示。 图3-1 主程序流程图 3.2 液晶显示模块流程图 液晶显示模块包括了LCD初始化、光标的设定、确定显示字符、具体流程图如图2-15所示。 3.3 键盘处理模块流程图 系统设制了四个按键,分别是功能设置、定值上升、定值下降和返回键。 整个系统的软件设计均采用C语言开发,采用查询的方式对按键状态进行扫描,确保系统的实时性。 因此这些器件的底层程序均可以移植到其它系统中,这就是采用C语言开发的最大的优点。 键盘处理流程图分别如图3-2、3-3、3-4、3-5所示。 图3-2 时间设置模块 图3-3 日期设置流程图 图3-4 星期设置流程图 图3-5 闹钟设置流程图 第4章软件设计 4.1软件系统方框图 系统软件程序设计主要包括: 主程序设计,延时0.5S子程序,延时0.001S程序等等;软件框图如4-1所示 图4.1 4.2中断延时程序 彩灯延时闪烁的实现,延时子程序的调用实际上就是寄存器在MCS-51单片机中,从中断请求发生到被响应,从中断响应到转到执行中断服务程序,采样是中断出理的第一步他是针对外中断请求信号进行的。 如下图4-2所示 图4-2主程序调用子程序图 4.3仿真环境Professional仿真软件 图4-3-aProfessional仿真环境 第4章 系统测试 本设计的核心采用是AT89C51单片机,以时钟芯片DS1307和液晶LCD1602作为外围元件,构成了一个多功能的数字时钟系统。 本系统的仿真采用PROTEUS软件,在PROTEUS库中选取的元件,如表4-1所示。 表4-1 仿真元件表 序号 名称 属性 1 AT89C51 单片机 2 BUTTON 按键 3 CAP 电容 4 DS1307 时钟芯片 5 LM016L 液晶显示器 6 PNP 晶体三极管 7 RES 电阻 8 SPEAKER 蜂鸣器 9 SW-SPST 开关 10 CRYSTAL 晶体振荡器 仿真结果如图4-1所示。 分别可以实现实时显示、设置时间、设置日期、设置星期和设置闹钟。 a)实时显示 b)设置时间及相应的增/减设置 c)设置日期及相应的增/减设置 d)设置星期及相应的增/减设置 e)设置闹钟 图4-1 仿真结果 系统通过仿真调试后,可以稳定运行。 同时可以对时间、日期、星期和闹钟进行设置。 设计采用串行器件具有线路简单、体积小、价格低等优点。 同时该系统稍加改造,就可以作为工业实时采集中的一个模块。 总 结 本设计以功能齐全适用于大众为指导思想,选取AT89C51单片机为控制核心。 通过外围元件实时时钟芯片DS1307构成了一个具有实时时间与日历显示、按键调时、闹铃定时功能的数字时钟。 系统采用液晶LCD1602作为显示器,软件程序采用均采用C语言编写,便于移植与升级。 系统经组装、调试后,可以稳定运行。 同时可以对时间、日期、星期和闹钟进行设置。 系统采用串行器件具有线路简单、体积小、价格低等优点。 报告详细介绍了整个系统的硬件组成结构、工作原理和系统的软件程序设计。 致 谢 在这三个多月的毕业设计中,我真诚地感谢胡老师和同学们的帮助,在他们的帮助下我顺利的完成了此次毕业设计。 首先我要衷心地感谢我的辅导老师胡得清,在本次设计过程中他始终给予了我无私的热情和帮助。 开始他细心指导我的选题工作,在做开题报告的过程中,又反复而耐心地给我指出问题的所在,并帮助我纠正了许多不妥之处。 在做系统设计这一过程中,也给我提出了许多意见和建议,并交给我许多解决问题的技巧和方法。 在写毕业设计论文的过程中,我也遇到了许多的困难,之所以能坚持完成,这都离不开我的导师和同学们的帮助。 通过短暂的毕业设计,从而提高了我的理论水平,真正做到学有所用,虽然在其过程中我也遇到一些困难,但是从中我也得到了很多的帮助,没有半途而废,没有灰心丧气,在胡老师的严格指导下,发现问题并加以改正,这些都是一种收获。 特别感谢胡老师的帮助,他对我的系统提出了很多改进的意见,对我的论文中的一些不足的地方也一一地指出。 没有他的帮助,我也不可能很好的完成这次毕业设计,我再次衷心地对胡老师表示感谢。 参考文献 [1] DS1307datasheethttp: //www.maxim- [2] 李建忠.单片机原理及应用.西安: 西安电子科技大学出版社,2002 [3] 朱宇光.单片机应用新技术教程.北京: 电子工业出版社,2000 [4] 刘守义.单片机应用技术.西安: 西安电子科技大学出版社,2002 [5] 房小翠.单片机实用系统设计技术.北京: 国防工业出版社,2003 [6] 李华.MCS-51系列单片机实用接口技术.北京: 电子工业出版社,2000 [7] 李华.MCS-51系列单片机实用接口技术.北京: 北京航空航天大学出版社,2003 [8] 杨忠煌.单芯片8051实务与应用.北京: 中国水利水电出版社,2001 [9] 何立名.单片机应用系统设计系统配置与接口技术.北京: 北京航空航天大学出版社,2004 附录1 系统仿真电路图 附录2 PCB板底图 电源电路 单片机主控的数字时钟 附录3 主要源程序 /***************************定义头文件开始***************************/ #include #include #include #include /****************************义头文件结束*****************************/ *****************************预定义变量******************************/ /*****
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 论文 基于 单片机 数字 实时 时钟 设计