搜索
您的当前位置:首页正文

基于单片机的数字时钟设计

来源:知库网
摘 要

本设计基于单片机技术原理,以单片机芯片AT89C51作为核心控制器,通过硬件电路的制作以及软件程序的编制,设计了多功能数字时钟系统。该时钟系统主要由时钟模块、环境温度检测模块、液晶显示模块以及键盘控制模块组成。系统具有简单清晰的操作界面,能在4V~7V直流电源下正常工作。能够准确显示时间(显示格式为时时:分分:秒秒,24小时制),可随时进行时间调整,具有闹钟时间设置、闹钟开/关、止闹功能,能够对时钟所在的环境温度进行测量并显示。设计以硬件软件化为指导思想,充分发挥单片机功能,大部分功能通过软件编程来实现,电路简单明了,系统稳定性高。同时,该时钟系统还具有功耗小、成本低的特点,具有很强的实用性。由于系统所用元器件较少,单片机所被占用的I/O口不多,因此系统具有一定的可扩展性。

关键词:

LCD显示 单片机 时钟芯片DS1302 温度传感器DS18B20

Abstract

This design principle based on SCM technology to a central controller AT89C51 Microcontroller, through hardware design and preparation software program, designed to produce a multi-functional digital clock system. The clock system is composed of clock module, alarm module, the ambient temperature detection module, liquid crystal display module, keyboard control module and the signal prompt module. System is simple and clear interface, can 4V ~ 7V DC power supply to work. Able to accurately display time (display format is hh: mm: seconds seconds, 24-hour clock), the time may be adjusted at any time, with the alarm time set, alarm on / off, alarm function only can the clock where the ambient temperature measurement and displayed. Into hardware and software design guidelines and give full play MCU functions, most of the functionality through software programming to implement, simple circuit, high stability of the system. Meanwhile, the clock system also has low power consumption, and low cost, and highly practical. As the system uses fewer components, single chip occupied by the I / O port small, so the system has some scalability.

Key words :

LCD display, SCM, DS1302, DS18B20

目 录

1 绪论 ................................................................. 1 1.1 课题的提出及研究意义 .............................................. 1 1.2 数字时钟的发展现状 ................................................ 2 1.3 课题研究目的和研究内容 ............................................ 4 2 多功能数字时钟硬件设计 ............................................... 5 2.1 主控制模块 ........................................................ 6 2.2 显示模块 .......................................................... 9 2.3 时钟模块 ......................................................... 12 2.4 温度模块 ......................................................... 15 2.5 电源转换模块 ..................................................... 19 2.6 本章小结 ......................................................... 19 3 电路仿真与制作 ...................................................... 19 3.1 电路仿真 ......................................................... 19 3.2 电路板制作 ....................................................... 20 3.3 本章小结 ......................................................... 20 4 软件设计部分 ........................................................ 21 4.1 时钟程序的设计 ................................................... 21 4.2 DS18B20芯片程序设计 ............................................. 21 4.3 本章小结 ......................................................... 23 5 总结 ................................................................ 23 参考文献 ............................................................... 24 致 谢 ................................................................ 25 附录 ................................................................... 26

长江师范学院本科毕业设计·多功能数字时钟的设计

1 绪论

人类的生活和工作均离不开时钟。从古代的滴漏更鼓到近代的机械钟,从电子表到目前的数字时钟,为了准确的测量和记录时间,人们一直在努力改进着计时工具。钟表的数字化,大力推动了计时的精确性和可靠性。

1.1课题的提出及研究意义

1.1.1 课题的提出

近些年,随着科技的发展和社会的进步,人们对数字钟的要求也越来越高,传统的时钟已不能满足人们的要求。多功能数字钟不管在性能还是在样式上都发生了质的变化,有电子闹钟、数字闹钟等等

[1]。数字钟成为人们日常生活中不可少的必

需品,由于数字集成电路的发展和石英晶体振荡器的广泛应用,使得数字钟的精度,远远超过老式钟表, 钟表的数字化给人们生产生活带来了极大的方便。

在日常生活和工作中,我们常常用到定时控制,如扩印过程中的曝光定时等。早期常用的一些时间控制单元都使用模拟电路设计制作的,其定时准确性和重复精度都不是很理想,现在基本上都是基于数字技术的新一代产品,随着单片机性能价格比的不断提高,新一代产品的应用也越来越广泛,大可构成复杂的工业过程控制系统,完成复杂的控制功能。小则可以用于家电控制,甚至可以用于儿童电子玩具。它功能强大,体积小,质量轻,灵活好用,配以适当的接口芯片,可以构造各种各样、功能各异的微电子产品

[2]。

随着电子技术的飞速发展,家用电器和办公电子设备逐渐增多,不同的设备都有自己的控制器,使用起来很不方便。根据这种实际情况,设计了一个单片机多功能数字时钟,它可以避免多种控制器的混淆,利用一个控制器对多路电器进行控制,同时又可以进行时钟校准和定点打铃

[3]。它可以执行不同的时间表(考试时间和日

常作息时间)的打铃,可以任意设置时间。这种具有人们所需要的智能化特性的产品减轻了人的劳动,扩大了数字化的范围,为家庭数字化提供了可能。

电子钟是一种利用数字电路来显示秒、分、时的计时装置,与传统的机械钟相比,它具有走时准确、显示直观、无机械传动装置等优点,因而得到广泛应用。随

第 1 页 共 42 页

长江师范学院本科毕业设计·多功能数字时钟的设计 着人们生活环境的不断改善和美化,在许多场合可以看到数字电子钟。在城市的主要营业场所、车站、码头等公共场所使用LCD数字电子钟已经成为一种时尚。但目前市场上各式各样的LCD数字电子钟大多数用全硬件电路实现,电路结构复杂,功率损耗大等缺点,因此有必要对数字电子钟进行改进。

1.1.2 课题研究的意义

多功能数字时钟的用途十分广泛,只要有计时的存在,便要用到数字时钟的原理及结构;同时在日期中,它以其小巧,价格低廉,走时精度高,使用方便,功能多,便于集成化而受广大消费者的喜爱。随着人类科技文明的发展,人们对于时钟的要求在不断提高[4]。时钟已不仅仅被看出一种用来显示时间的工具,在很多实际应用中它还需要能够实现更多其它的功能。高精度、多功能、小体积、低功耗,是现代时钟发展的趋势。在这种趋势下,时钟的数字化、多功能化已经成为现在时钟生产研究的主导设计方向。

1.2 数字时钟的发展现状

几种常用数字时钟设计方案: 一、基于微机系统的数字时钟设计

计时单元由定时/计数器8253的通道0来实现。定时采用硬件计数和软件技术相结合的方式,即通过8253产生一定的定时时间,然后再利用软件进行计数,从而实现24小时制定时。8253定时时间到了之后产生中断信号,8253在中断服务程序中实现时、分、秒的累加。

时间显示采用实验平台上的6个LED数码管分别显示时、分、秒,采用动态扫描方式实现。

校时和闹铃定时通过键盘电路和单脉冲产生单元来输入。按键包括校时键、闹钟定时键、加1键和减1键等。

报警声响用蜂鸣器产生,将蜂鸣器接到8255的一个端口,通过输出电平的高低来控制蜂鸣器的发声。

系统硬件设计主要利用微机实验平台上的电路模块。硬件电路主要由键盘电路、单脉冲产生单元、8253定时计数器、8255并行接口单元、8259中断控制器、LED显示电路和蜂鸣器电路等等。系统的硬件电路设计框图如图1所示。

第 2 页 共 42 页

长江师范学院本科毕业设计·多功能数字时钟的设计

图1.1 基于微机系统的数字时钟设计框图

二、基于VHDL的数字时钟设计

基于VHDL语言,用Top_Down的思想进行设计。

用CN6无进位六进制计数器选择数码管的亮灭以及对应的数,循环扫描显示,用SEL61六选一选择器选择给定的信号输出对应的数送到七段码译码器。K4模块进行复位,设置小时和分,输出整点报时信号和时,分,秒信号。

单元模块设计部分

对应的数模块CN6 信号选择模块SEL61 七段码译码器模块DISP

图1.2 基于VHDL数字时钟的设计模块

单元模块设计部分分三个部分,介绍数字钟选择显示数码管和对应的数模块CN6,信号选择模块SEL61,七段码译码器模块DISP和复位,秒,分,时显示,设置模块。

三、基于单片机数字时钟设计

基于单片机的数字时钟设计是模块化设计,以单片机做主控制模块,控制时钟

第 3 页 共 42 页

长江师范学院本科毕业设计·多功能数字时钟的设计 芯片、温度传感器芯片等,又将数据控制输出到显示模块。

基于MCS-51单片机的数字时钟系统具有显示准确、直观、易于调整等特点。单片机自诞生以来给全世界人类的生活和工作起到了剧烈的变化,而MCS-51单片机是我国使用最早、最易掌握和应用的一款单片机。通过该系统的设计,对单片机的原理和功能有个比较系统和全面的掌握,初步学习到有关工程设计的方法和思路。这样以后的就业面会更加宽广,也可以满足当今社会对单片机开发人才的大量需求

[5]。

目前单片机渗透到我们生活的各个领域,几乎很难找到哪个领域没有单片机的踪迹。导弹的导航装置,飞机上各种仪表的控制,计算机的网络通讯与数据传输,工业自动化过程的实时控制和数据处理,广泛使用的各种智能IC卡,录象机、摄象机,以及程控玩具、电子宠物等等,这些都离不开单片机。更不用说自动控制领域的机器人、智能仪表、医疗器械了。因此,单片机的学习、开发与应用将造就一批计算机应用与智能化控制的科学家、工程师。单片机在多功能数字钟中的应用已是非常普遍的,人们对数字钟的功能及工作顺序都非常熟悉。但是却很少知道它的内部结构以及工作原理。由单片机作为数字钟的核心控制器,可以通过它的时钟信号进行时实现计时功能,将其时间数据经单片机输出,利用显示器显示出来。通过键盘可以进行定时、校时功能。输出设备显示器可以用液晶显示技术和数码管显示技术。

1.3 课题研究目的和研究内容

1.3.1 课题研究目的

日常生活中人们离不开时钟。本文介绍是基于单片机的多功能数字时钟,在传统的时钟基础上它具有走时准确、显示直观、无机械传动装置等优点。随着电子产业的发展,时钟的数字化、多功能化已经成为现在时钟生产研究的主导设计方向。

1.3.2 课题研究内容

采用模块设计法完成多功能数字时钟的设计。基本功能是时钟显示,能准确显示“时”、“分”、“秒”,并具有快速校准时、分、秒的功能。时钟显示同时具有实时温度显示。扩展功能有具整点报时功能以及闹钟功能。

第 4 页 共 42 页

长江师范学院本科毕业设计·多功能数字时钟的设计 2 多功能数字时钟硬件设计

基于单片机的多功能数字时钟的设计,单片机芯片作为控制系统的核心部件,它除了具备微机CPU的数值计算功能外,还具有灵活强大的控制功能,以便实时检测系统的输入量、控制系统的输出量,实现自动控制。在本次设计中采用单片机技术来实现数字钟的功能。方案的设计可以从以下几个方面来确定。微处理器的选择,AT89S51是2003年ATMEL推出的新型品种,除了完全兼容8051外,还多了ISP编程和看门狗功能。显示电路的设计,随着科技的发展,液晶显示的使用越来越方便,已被普遍的使用。由于液晶显示与驱动都集成在一个芯片上,因此使用起来很方便。在这里采用液晶显示;校时和定时电路的设计;实时控制电路是时钟电路的一个重要组成部分,采用的是一个时钟芯片,单片机从中读取数据送到显示器上显示,从而实现数字钟的功能;还有一些其他控制电路如复位电路、时钟电路等。通过这些控制电路的连接构成了完整的电路.

按照系统设计功能的要求,初步确定设计系统由电源转换模块、主控制模块、时钟及温度模块、显示模块、键盘接口模块共5个模块组成,电路系统构成框图如图2.1所示:

电源模块 89C51 主控制模块 键扫描电路 DS1302 显示电路 DS18B20

图2.1

电路系统构成框图

第 5 页 共 42 页

长江师范学院本科毕业设计·多功能数字时钟的设计 2.1 主控制模块

在本次设计中采用单片机技术来实现数字钟的功能。方案的设计可以从以下几个方面来确定。微处理器的选择,AT89S51是2003年ATMEL推出的新型品种,除了完全兼容8051外,还多了ISP编程和看门狗功能。89C51是一种带4K字节闪烁可编程可擦除只读存储器(FPEROM—Falsh Programmable and Erasable Read Only Memory)的低电压,高性能CMOS8位微处理器,俗称单片机。89C2051是一种带2K字节闪烁可编程可擦除只读存储器的单片机。单片机的可擦除只读存储器可以反复擦除100次。该器件采用ATMEL高密度非易失存储器制造技术制造,与工业标准的MCS-51指令集和输出管脚相兼容。由于将多功能8位CPU和闪烁存储器组合在单个芯片中,ATMEL的89C51是一种高效微控制器,89C51是它的一种精简版本。89C单片机为很多嵌入式控制系统提供了一种灵活性高且价廉的方案。

2.1.1 AT89C51单片机的特性概述

主要特性: 与MCS-51 兼容

4K字节可编程闪烁存储器 寿命:1000写/擦循环 数据保留时间:10年 全静态工作:0Hz-24Hz 三级程序存储器锁定 128*8位内部RAM 32可编程I/O线 两个16位定时器/计数器 5个中断源 可编程串行通道

低功耗的闲置和掉电模式 片内振荡器和时钟电路

第 6 页 共 42 页

长江师范学院本科毕业设计·多功能数字时钟的设计

图2.2 AT89C51引脚图

2.1.2 AT89C51管脚说明

VCC:供电电压。 GND:接地。

P0口:P0口为一个8位漏级开路双向I/O口,每脚可吸收8TTL门电流。当P1口的管脚第一次写1时,被定义为高阻输入。P0能够用于外部程序数据存储器,它可以被定义为数据/地址的第八位。在FIASH编程时,P0 口作为原码输入口,当FIASH进行校验时,P0输出原码,此时P0外部必须被拉高。

P1口:P1口是一个内部提供上拉电阻的8位双向I/O口,P1口缓冲器能接收输出4TTL门电流。P1口管脚写入1后,被内部上拉为高,可用作输入,P1口被外部下拉为低电平时,将输出电流,这是由于内部上拉的缘故。在FLASH编程和校验时,P1口作为第八位地址接收。

P2口:P2口为一个内部上拉电阻的8位双向I/O口,P2口缓冲器可接收,输出4个TTL门电流,当P2口被写“1”时,其管脚被内部上拉电阻拉高,且作为输入。并因此作为输入时,P2口的管脚被外部拉低,将输出电流。这是由于内部上拉的缘故。P2口当用于外部程序存储器或16位地址外部数据存储器进行存取时,P2口输出地址的高八位。在给出地址“1”时,它利用内部上拉优势,当对外部八位地址数据存储器进行读写时,P2口输出其特殊功能寄存器的内容。P2口在FLASH编程和校验时接收高八位地址信号和控制信号。

第 7 页 共 42 页

长江师范学院本科毕业设计·多功能数字时钟的设计 P3口:P3口管脚是8个带内部上拉电阻的双向I/O口,可接收输出4个TTL门电流。当P3口写入“1”后,它们被内部上拉为高电平,并用作输入。作为输入,由于外部下拉为低电平,P3口将输出电流(ILL)这是由于上拉的缘故。

P3口也可作为AT89C51的一些特殊功能口,如下表所示: 管脚 备选功能

P3.0 RXD(串行输入口) P3.1 TXD(串行输出口) P3.2 /INT0(外部中断0) P3.3 /INT1(外部中断1) P3.4 T0(记时器0外部输入) P3.5 T1(记时器1外部输入) P3.6 /WR(外部数据存储器写选通) P3.7 /RD(外部数据存储器读选通)

P3口同时为闪烁编程和编程校验接收一些控制信号。

RST:复位输入。当振荡器复位器件时,要保持RST脚两个机器周期的高电平时间。

ALE/PROG:当访问外部存储器时,地址锁存允许的输出电平用于锁存地址的地位字节。在FLASH编程期间,此引脚用于输入编程脉冲。在平时,ALE端以不变的频率周期输出正脉冲信号,此频率为振荡器频率的1/6。因此它可用作对外部输出的脉冲或用于定时目的。然而要注意的是:每当用作外部数据存储器时,将跳过一个ALE脉冲。如想禁止ALE的输出可在SFR8EH地址上置0。此时, ALE只有在执行MOVX,MOVC指令是ALE才起作用。另外,该引脚被略微拉高。如果微处理器在外部执行状态ALE禁止,置位无效。

/PSEN:外部程序存储器的选通信号。在由外部程序存储器取指期间,每个机器周期两次/PSEN有效。但在访问外部数据存储器时,这两次有效的/PSEN信号将不出现。

/EA/VPP:当/EA保持低电平时,则在此期间外部程序存储器(0000H-FFFFH),不管是否有内部程序存储器。注意加密方式1时,/EA将内部锁定为RESET;当/EA端保持高电平时,此间内部程序存储器。在FLASH编程期间,此引脚也用于施加12V

第 8 页 共 42 页

长江师范学院本科毕业设计·多功能数字时钟的设计 编程电源(VPP)。

XTAL1:反向振荡放大器的输入及内部时钟工作电路的输入。 XTAL2:来自反向振荡器的输出

[8]。

2.2 显示模块

随着科技的发展,液晶显示的使用越来越方便,已被普遍的使用,所以本次设计采用液晶显示。液晶显示的原理是利用液晶的物理特性,通过电压对其显示区域进行控制,有电就有显示,这样即可以显示出图形。液晶显示器具有厚度薄、适用于大规模集成电路直接驱动、易于实现全彩色显示的特点,目前已经被广泛应用在便携式电脑、数字摄像机、PDA移动通信工具等众多领域。

由于液晶显示与驱动都集成在一个芯片上,因此使用起来很方便。数字钟要显示现在的日历时间包括年、月、日、星期、时、分、秒,在这里采用1602LCD液晶显示。

2.2.1 1602LCD显示器的结构

1 1602LCD主要技术参数 显示容量为16×2个字符; 芯片工作电压为4.5~5.5V; 工作电流为2.0mA(5.0V); 字符尺寸为2.95×4.35(W×H)mm。

2 接口,信号说明1602LCD采用标准的16引脚(带背光)接口 编号 1 2 3 4 5 6 7 8 符号 VSS VDD VL RS R/W E D0 D1 引脚说明 电源地 电源正极 液晶显示偏压信号 数据/命令选择端(V/L) 读/写选择端(H/L) 使能信号 Date I/O Date I/O 编号 9 10 11 12 13 14 15 16 符号 D2 D3 D4 D5 D6 D7 BLA BLK 引脚说明 Date I/O Date I/O Date I/O Date I/O Date I/O Date I/O 背光源正极 背光源负极 图2.3 1602液晶接口引脚定义 第 9 页 共 42 页

长江师范学院本科毕业设计·多功能数字时钟的设计 1、2 组电源 一组是模块的电源 一组是背光板的电源 均为5V 供电。 2、VL 是调节对比度的引脚调节此脚上的电压可以改变黑白对比度

3、RS 是很多液晶上都有的引脚 是命令/数据选择引脚 该脚电平为高时表示将进行数据操作;为低时表示进行命令操作。

4、RW 也是很多液晶上都有的引脚 是读写选择端 该脚电平为高是表示要对液晶进行读操作;为低时表示要进行写操作。

5、E 同样很多液晶模块有此引脚 通常在总线上信号稳定后给一正脉冲通知把数据读走,在此脚为高电平的时候总线不允许变化。

6、D0—D7 8 位双向并行总线,用来传送命令和数据。 7、BLA是背光源正极,BLK是背光源负极

[9]。

2.2.2 1602LCD数据原理

读状态 写指令 输入 RS=L,R/W=H,E=H 输出 输出 D0~D7=状态字 无 输入 RS=L,R/W=L,D0~D7=指令码,E=高脉冲 读数据 写数据 输入 RS=H,R/W=H,E=H 输出 输出 D0~D7=数据 无 输入 RS=H,R/W=L,D0~D7=数据,E=高脉冲 图2.4 1602LCD基本操作时序 1602LCD的指令码(命令码) 此液晶上电的时候需要初始化典型的指令码是38H,也就是上电的时候需要 调用 void write_cmd(unsigned char command)这个函数写指令码,用法是write_cmd(0x38);执行完这个函数可以把液晶初始化成16x2 显示5x7 的点阵8 位总线接口。以下指令码用法相同。

此液晶支持的指令码有 指令码 0 0

第一行指令主要能完成的功能是 控制液晶显示否,光标显示否,光标闪烁否。

第 10 页 共 42 页

功能 1 0 0 0 设置16×2显示,5×7点陈,8位数据接口 1 1

长江师范学院本科毕业设计·多功能数字时钟的设计 共有以下8 种指令

0 0 0 0 1 0 0 0 08H 关液晶显示 光标不闪烁 不显示光标位置 0 0 0 0 1 0 0 1 09H 关液晶显示 光标不闪烁 显示光标位置 0 0 0 0 1 0 1 0 0AH 关液晶显示 光标不闪烁 不显示光标位置 0 0 0 0 1 0 1 1 0BH 关液晶显示 光标不闪烁 显示光标位置 0 0 0 0 1 1 0 0 0CH 开液晶显示 光标不闪烁 不显示光标位置 0 0 0 0 1 1 0 1 0DH 开液晶显示 光标不闪烁 显示光标位置 0 0 0 0 1 1 1 0 0EH 开液晶显示 光标不闪烁 不显示光标位置 0 0 0 0 1 1 1 1 0FH 开液晶显示 光标不闪烁 显示光标位置 第二行指令主要能完成的功能是写完字符 光标或屏幕移动方向 指令码 80H+地址码(0-27H,40H-67H) 功能 设置数据地址指针 2.2.3 显示模块的数据连接 1602LCD的D0—D7的八位数据线分别接单片机89C51的P0.0—P0.7。RS复位端接P2.0,EN使能端接P2.2,读、写信号端接P2.1

图2.5 显示模块的数据连接图

第 11 页 共 42 页

长江师范学院本科毕业设计·多功能数字时钟的设计 2.3 时钟模块

单片机控制时钟模块,定时时间,它通常有两种实现方法:一是用软件实现,即用单片机内部的可编程定时/计数器来实现,但误差很大,主要用在对时间精度要求不高的场合;二是用专门的时钟芯片实现,在对时间精度要求很高的情况下,通常采用这种方法,典型的时钟芯片有:DS1302,DS12887,X1203等都可以满足高精度的要求。本次设计采用DS1302芯片

2.3.1 DS1302的性能特性

1.实时时钟,可对秒、分、时、日、周、月以及带闰年补偿的年进行计数; 2.用于高速数据暂存的31×8位RAM 3.最少引脚的串行I/O; 4.2.5~5.5V电压工作范围;

5.用于时钟或RAM数据读/写的单字节或多字节(脉冲方式)数据传送方式; 6.简单的3线接口

7.可选的慢速充电(至Vcc1)的能力

DS1302时钟芯片包括实时时钟/日历和31字节的静态RAM。它经过一个简单的串行接口与微处理器通信。实时时钟/日历提供秒、分、时、日、周、月和年等信息。对于小于31天的月和月末的日期自动进行调整,还包括闰年校正的功能。时钟的运行可以采用24h或带AM(上午)/PM(下午)的12h格式。采用三线接口与CPU 进行同步通信,并可采用突发方式一次传送多个字节的时钟信号或RAM数据。DS1302有主电源/后备电源双电源引脚:Vcc1在单电源与电池供电的系统中提供电源,并提供低功率的电池备份;Vcc2在双电源系统中提供主电源,在这种运用方式中Vcc1连接到备份电,以便在没有主电源的情况下能保存时间信息以及数据。DS1302由Vcc1或Vcc2中较大者供电。当Vcc2大于Vcc1+0.2V时,Vcc2给DS1302供电;当Vcc2小于Vcc1时,DS1302由Vcc1供电

[10]。

2.3.2 DS1302数据操作原理

DS1302在任何数据传送时必须先初始化,把RST脚置为高电平,然后把8位地址和命令字装入移位寄存器,数据在SCLK的上升沿被输出。无论是读周期还是写周期,开始8位指定40存器中哪个将被访问到。在开始8个时钟周期,把命令字节

第 12 页 共 42 页

长江师范学院本科毕业设计·多功能数字时钟的设计 装入移位寄存器之后,另外的始终周期在读操作时输出数据,在写操作时写入数据。时钟脉冲的个数在单字节方式下为8加8,在多字节方式下为8加字节数,最大可达248字数。

如果在传送过程中置RST脚为低电平,则会中止本次数据传送,并且I/O引脚变为高阻态。上电运行时,在Vcc≧ 2.5V之前,RST脚必须保持低电平。只有在SCLK为低电平时,才能将RST置为高电平。DS1302的引脚和控制字如图2.6所示。

图2.6 DS1302的控制字

DS1302的控制字如图2.6所示。控制字节的最高有效位(位7)必须是逻辑1;如果它为0。则不能把数据写入到DS1302中。位6如果为0。则表示存取日历时钟数据;为1表示存取RAM数据。位5~1(A4~A0)指示操作单元的地址。最低有效位(位0)如为0,表示要进行写操作;为1表示进行读操作。控制字节总是从最低位开始输入/输出。

为了提高对32个地址的寻址能力(地址/命令位1~5 = 逻辑1),可以把时钟/日历或RAM寄存器规定为多字节(burst)方式。位6规定时钟或RAM,而位0规定读或写。在时钟/日历寄存器中的地址9~31或RAM寄存器中的地址31不能存储数据。在多字节方式中,读或写从地址0的位0开始。必须按数据传送的次序写最先的8个寄存器。但是,当以多字节方式写RAM时,为了传送数据不必写所有31字节,不管是否写了全部31字节,所写的每一字都将传送至RAM。

第 13 页 共 42 页

长江师范学院本科毕业设计·多功能数字时钟的设计 DS1302的引脚功能图

引脚号 1 2,3 4 5 6 7 8 引脚名称 Vcc2 X1,X2 GND RST I/O SCLK Vcc1 主电源 震荡源,外接32.768kHz晶振 地线 复位/片选线 串行数据输入/输出端(双向) 串行数据输入端 后备电源 功能 图2.7 DS1302引脚功能 DS1302共有12个寄存器,其中有7个寄存器与日历、时钟相关,存放的数据位为BCD码形式。其日历、时间寄存器及其控制字见图2.8,其中奇数为读操作,偶数为写操作。

时钟暂停:秒寄存器的位7定义位时钟暂停位。当它为1时,DS1302停止振荡,进入低功耗的备份方式。通常在对DS1302进行写操作时(如进入时钟调整程序),停止振荡。当它为0时,时钟将开始启动。

AM-PM/12-24[小]时方式:[小]时寄存器的位7定义为12或24[小]时方式选择位。它为高电平时,选择12[小]时方式。在此方式下,位5是AM/PM位,此位是高电平时表示PM,低电平表示AM。在24[小]时方式下,位5为第二个10[小]时位(20~23h)。

寄存器名 命令字节 写 读 取值范围 7 00~59 00~59 CH 0 寄存器内容 6 5 4 10s 3 2 1 0 SEC MIN HR 秒寄存器 分寄存器 80H 81H 82H 83H 10min [小]时寄存84H 85H 00~23或12/24 0 10A/P HR 器 01~12 第 14 页 共 42 页

长江师范学院本科毕业设计·多功能数字时钟的设计 日期寄存器 86H 87H 01~28,0 29,30,31 0 10DATE DATE 月份寄存器 88H 89H 01~12 0 0 0 10M MONTH 周寄存器 年寄存器 8AH 8BH 8CH 8DH 01~07 00~99 0 0 0 10YEAR 0 0 DAY YEAR 图2.8 内部寄存器地址和内容 DS1302的晶振选用32.768kHz,电容推荐值为6pF,因为振荡频率较低,也可以不接电容,对记时精度影响不大。

2.3.3 时钟模块的数据连接

设计中时钟模块,DS1302的X1、X2间接晶振起时钟振荡作用。复位端RST接89C51的P1.5,串行数据输入端SCLK接P1.6,数据双向输入、输出端I\\O接P1.7

图2.9 时钟模块的数据连接

2.4 温度模块

多功能数字时钟拥有实时温度显示功能,由单片机将温度传感器数据控制输出由液晶显示。本次设计采用温度传感器是DS18B20.

第 15 页 共 42 页

长江师范学院本科毕业设计·多功能数字时钟的设计 2.4.1 DS18B20的性能特性

1.1 独特的单线接口方式,DS18B20在与微处理器连接时仅需要一条口线即可实现微处理器与DS18B20的双向通讯。

1.2 测温范围 -55℃~+125℃,固有测温分辨率0.5℃。

1.3 支持多点组网功能,多个DS18B20可以并联在唯一的三线上,最多只能并联8个,如果数量过多,会使供电电源电压过低,从而造成信号传输的不稳定,实现多点测温

1.4 工作电源: 3~5V/DC

1.5 在使用中不需要任何外围元件

1.6 测量结果以9~12位数字量方式串行传送 1.7 不锈钢保护管直径 Φ6

1.8 适用于DN15~25, DN40~DN250各种介质工业管道和狭小空间设备测温 1.9 标准安装螺纹 M10X1, M12X1.5, G1/2”任选

1.10 PVC电缆直接出线或德式球型接线盒出线,便于与其它电器设备连接。 2:应用范围

2.1 该产品适用于冷冻库,粮仓,储罐,电讯机房,电力机房,电缆线槽等测温和控制领域

2.2 轴瓦,缸体,纺机,空调,等狭小空间工业设备测温和控制。 2.3 汽车空调、冰箱、冷柜、以及中低温干燥箱等。

2.5 供热/制冷管道热量计量,中央空调分户热能计量和工业领域测温和控制 3:产品型号与规格

型 号 测温范围 安装螺纹 电缆长度 适用管道 TS-18B20 -55~125 无 1.5 m

TS-18B20A -55~125 M10X1 1.5m DN15~25 TS-18B20B -55~125 1/2”G 接线盒 DN40~ 60

[11]

第 16 页 共 42 页

长江师范学院本科毕业设计·多功能数字时钟的设计 2.4.2 DS18B20数据操作原理

DS18B20的引脚功能图 引脚 引脚 5 4 1 2 符号 GND DQ 说明 地 单线应用的输入、输出引脚 3 3 VDD 图2.8 DS18B20的引脚功能 电源 独特的一线接口,只需要一条口线通信 多点能力,简化了分布式温度传感应用 无需外部元件 可用数据总线供电,电压范围为3.0 V至5.5 V 无需备用电源 测量温度范围为-55℃至+125℃。

温度传感器可编程的分辨率为9~12位 温度转换为12位数字格式最大值为750毫秒 用户可定义的非易失性温度报警设置 应用范围包括恒温控制,工业系统,消费电子产品温度计,或任何热敏感系统

描述该DS18B20的数字温度计提供9至12位(可编程设备温度读数。信息被发送到/从DS18B20 通过1线接口,所以中央微处理器与DS18B20只有一个一条口线连接。为读写以及温度转换可以从数据线本身获得能量,不需要外接电源。 因为每一个DS18B20的包含一个独特的序号,多个ds18b20s可以同时存在于一条总线。这使得温度传感器放置在许多不同的地方。它的用途很多,包括空调环境控制,感测建筑物内温设备或机器,并进行过程监测和控制。

DS18B20内部结构主要由四部分组成:64位光刻ROM、温度传感器、非挥发的温度报警触发器TH和TL、配置寄存器。该装置信号线高的时候,内部电容器 储存能量通由1线通信线路给片子供电,而且在低电平期间为片子供电直至下一个高电平的到来重新充电。 DS18B20的电源也可以从外部3V-5 .5V的电压得到。

DS18B20采用一线通信接口。因为一线通信接口,必须在先完成ROM设定,否则记忆和控制功能将无法使用。主要首先提供以下功能命令之一: 1 )读ROM, 2 )ROM匹配, 3 )搜索ROM, 4 )跳过ROM, 5 )报警检查。这些指令操作作用在没有一个器件的64位光刻ROM序列号,可以在挂在一线上多个器件选定某一个器件,同时,总线也可以知道总线上挂有有多少,什么样的设备。

第 17 页 共 42 页

长江师范学院本科毕业设计·多功能数字时钟的设计 若指令成功地使DS18B20完成温度测量,数据存储在DS18B20的存储器。一个控制功能指挥指示DS18B20的演出测温。测量结果将被放置在DS18B20内存中,并可以让阅读发出记忆功能的指挥,阅读内容的片上存储器。温度报警触发器TH和TL都有一字节EEPROM 的数据。如果DS18B20不使用报警检查指令,这些寄存器可作为一般的用户记忆用途。在片上还载有配置字节以理想的解决温度数字转换。写TH,TL指令以及配置字节利用一个记忆功能的指令完成。通过缓存器读寄存器。所有数据的读,写都是从最低位开始。

DS18B20有4个主要的数据部件:

(1)光刻ROM中的64位序列号是出厂前被光刻好的,它可以看作是该DS18B20的地址序列码。64位光刻ROM的排列是:开始8位(28H)是产品类型标号,接着的48位是该DS18B20自身的序列号,最后8位是前面56位的循环冗余校验码(CRC=X8+X5+X4+1)。光刻ROM的作用是使每一个DS18B20都各不相同,这样就可以实现一根总线上挂接多个DS18B20的目的。

(2) DS18B20中的温度传感器可完成对温度的测量,以12位转化为例:用16位符号扩展的二进制补码读数形式提供,以0.0625℃/LSB形式表达,其中S为符号。

2.4.3 温度模块的数据连接

在设计中,温度传感器DS18B20的数据端口DQ与单片机89C51的P3.0。单片机读取数据送入显示模块进行温度显示。

图2.10 温度模块及键盘接口模块连接图

第 18 页 共 42 页

长江师范学院本科毕业设计·多功能数字时钟的设计 2.5 电源转换模块

日常用到的都是220V的交流电源,所以,需要用变压器将其转换为线路设计中所用到的直流电源。此转换后的直流电源为+12V,而线路设计中许多芯片所用到的电压为+5V,因此,还需有12V到5V的转换电路。此转换采用7805(三端稳压器)来完成,转换图如下:

图2.11 7805电压转换电路

当Vin>5V时,Vout端可得到稳定的5V电压。

2.6 本章小结

本章通过对设计思想的介绍,分别对主控制模块、显示模块、时钟模块、温度模块以及电源转换模块的设计原理进行分析阐述。对各模块所需的芯片、元器件进行介绍。

3 电路仿真与制作

3.1 电路仿真

电路图的绘制通过Proteus7.4完成。Proteus的ISIS是一款Labcenter出品的电路分析实物仿真系统,可仿真各种电路和IC,并支持单片机,元件库齐全,使用方便,是不可多得的专业的单片机软件仿真系统。

该软件的特点:

① 全部满足我们提出的单片机软件仿真系统的标准,并在同类产品中具有明显的优势。

②具有模拟电路仿真、数字电路仿真、单片机及其外围电路组成的系统的仿真、RS-232动态仿真、C调试器、SPI调试器、键盘和LCD系统仿真的功能;有各种虚

第 19 页 共 42 页

长江师范学院本科毕业设计·多功能数字时钟的设计 拟仪器,如示波器、逻辑分析仪、信号发生器等。

③ 目前支持的单片机类型有:68000系列、8051系列、AVR系列、PIC12系列、PIC16系列、PIC18系列、Z80系列、HC11系列以及各种外围芯片。

④ 支持大量的存储器和外围芯片。总之该软件是一款集单片机和SPICE分析于一身的仿真软件,功能极其强大 ,可仿真51、AVR、PIC。

根据本设计模块化思想,绘制电路图如图3.1:

图3.1 多功能数字时钟电路图

3.2 电路板制作

Proteus组合了高级原理布图、混合模式SPICE仿真,PCB设计以及自动布线来实现一个完整的电子设计系统。因此用 Proteus制作PCB板。完成后将芯片焊接到对应的位置上。检查线路,看是否焊接出现短路情况。

3.3 本章小结

本章主要介绍本次设计中在Proteus软件中进行的电路图的绘制,软件的仿真,PCB板的制作。

第 20 页 共 42 页

长江师范学院本科毕业设计·多功能数字时钟的设计 4 软件设计部分

本次设计用Keil编程软件进行软件设计。Keil软件是目前最流行的开发MCS-51 系列单片机软件,近年来各仿真机厂商纷纷宣布全面支持Keil。Keil提供了包括C 编译器、宏汇编、连接器、库管理和仿真调试器在内的完整开发方案,通过集成开发环境将这些部分组合在一起。Keil支持汇编语言和C语言的程序设计,易学易用。

4.1 时钟程序的设计

因为使用了时钟芯片DS1302,阳历程序只需要从DS1302各寄存器中读出年、周、月、日、小时、分、秒等数据,再处理既可。对其进行初始化,然后从DS1302中读出数据,再经过处理后,送给显示缓存单元。时钟程序流程图见图4.1所示。

开始 初始化1302 1302 开始振荡 从1302中读出年、周、月、日、小时、分、秒 读出的数据都为BCD码,送显示模块 图4.1

时钟程序流程图

4.2 DS18B20芯片程序设计

系统程序的设计主要包括C程序主函数、DS18B20复位函数、DS18B20写字节函数、DS18B20读字节函数、温度计算转换函数和显示函数等,系统主程序设计流程图如

第 21 页 共 42 页

长江师范学院本科毕业设计·多功能数字时钟的设计 图4.2所示。

开始 初始显示 读取温度值、发温度转换命令 读出温度值计算、处理,送显示模块

图4.2 DS18B20芯片程序流程图

4.3 液晶程序模块

时钟需显示时间、温度。以上两个模块都需将数值送显示模块。 液晶的一般初始化过程: 延时15mS

写指令38H(不检测忙信号) 延时5mS

写指令38H(不检测忙信号) 延时5mS

写指令38H(不检测忙信号)

以后每次写指令、读/写数据操作均需要检测忙信号 写指令38H:显示模式设置 写指令08H:显示关闭 写指令01H:显示清屏 写指令06H:显示光标移动设置 写指令0CH:显示开及光标设置

第 22 页 共 42 页

长江师范学院本科毕业设计·多功能数字时钟的设计 void en_toggle() {

en=0; //_nop_(); delay(); en=1; delay(); // _nop_(); en=0;

} //液晶延时

4.4 本章小结

本章介绍了本次设计的软件部分的设计思想,即时钟程序与温度转换显示程序。

5 总结

本设计能够准确显示时间(显示格式为时时:分分:秒秒,24小时制),可随时进行时间调整,具有闹钟时间设置、闹钟开/关、止闹功能,能够对时钟所在的环境温度进行测量并显示。设计以硬件软件化为指导思想,充分发挥单片机功能,大部分功能通过软件编程来实现,电路简单明了,系统稳定性高。

基于单片机的数字时钟系统具有显示准确、直观、易于调整等特点,单片机所被占用的I/O口不多,因此系统具有一定的可扩展性。电子时代已经到来。做为新时代的我们,更应该提高自身能力,适应新时代的发展。知识来自实践,多去生活中探询所需要的。对于上述所提到的研究课题,我们应尽量考虑到人的因素,增强时钟的实用性和操作性,为使用者提供切实的方便,营造一种舒适的生活氛围。所以,在设计的时候,应该从多方面、多角度去考虑问题,而且应该进一步提高时钟的质量。

第 23 页 共 42 页

长江师范学院本科毕业设计·多功能数字时钟的设计

参考文献

[1] 刘建英.基于单片机的时钟设计[J].内蒙古石油化工,2005,1.

[2]余永权.ATMEL89 系列单片机应用技术,北京航空航天大学出版社,2002 [3]李广弟等.单片机基础,北京航空航天大学出版社,2001

[4]郁有文,常健,程继红.传感器原理及工程应用[M].西安:西安电子科技大学出版社,2008.7

[5]张韵华. 符号计算系统Mathematica教程[M]. 北京:科学出版社.2001

[6]张国营,陈缔缨. 传感器实验指导书[M].徐州:中国矿业大学物理实验中心.2008 [7] 张晔,王玉民.单片机应用技术[M].高等教育出版社,2006. [8]AT89C51 Datasheet ,ATMEL,2004 [9]LCD1602 Datasheet www.21IC.com

[10]DS1302 Datasheet ,DALLAS Semiconductor,2004 [11]DS18B20 Datasheet ,DALLAS Semiconductor ,2004

[12]李光飞.单片机C程序设计实例指导[M]. 北京:航空航天大学业出版社, 2005. [13]楼燃苗,李光飞. 51系列单片机设计实例[M]. 北京:航空航天大学业出版社, 2003. [14]马忠梅等. 单片机的C语言应用程序设计[M]. 北京:航空航天大学业出版社, 1999. [15]赖麒文. 8051单片机C语言彻底应用[M ]. 北京:科学业出版社, 2002.

第 24 页 共 42 页

长江师范学院本科毕业设计·多功能数字时钟的设计

致 谢

首先,感谢学校四年来对我的培养。本课题的前期准备以及整个研究过程是在孙艳菱老师的耐心指导下完成的,她严谨的治学态度、扎实的理论基础、全身心投入工作的精神以及对学生尽心尽力的态度给了我极大的帮助与鼓励,使我受益匪浅,在此谨对他表示崇高的敬意和衷心的感谢!

还要衷心感谢其他所有对本课题的研究和论文撰写有过帮助的同学。

第 25 页 共 42 页

长江师范学院本科毕业设计·多功能数字时钟的设计 附录 多功能数字时钟设计程序

#include #include #include

#define uchar unsigned char #define uint unsigned int

sbit rs=P2^0; sbit rw=P2^1; sbit en=P2^2; sbit reset=P1^5; sbit sclk=P1^6; sbit io=P1^7; sbit DQ=P3^0;

uint tvalue;//温度值// uchar tflag;//温度正负标志// unsigned int disdata[4]; unsigned char led_seg[10]

={0xC0,0xF9,0xA4,0xB0,0x99,0x92,0x82,0xF8,0x80,0x90};//显示段码

uchar str1[]={\"date: \uchar str2[]={\"time: \

uchar init[]={0x00,0x10,0x16,0x05,0x08,0x03,0x09};//秒,分,时,日,月,星期,年

void delay()

第 26 页 共 42 页

长江师范学院本科毕业设计·多功能数字时钟的设计 { }

//-------------------液晶模块-----------------// void en_toggle() {

en=0; //_nop_(); delay(); en=1; delay(); // _nop_(); en=0; uchar j;

for(j=250;j>0;j--);

} //注意必须加延时,否则会出问题的 void is_ready() {

P0=0x00;//设置为输入口 //注意:现实中应该送0xff rs=0; rw=1; en=1;

while(P0&0x80); en=0; }

void write_cmd(uchar cmd)//写指令// {

is_ready(); rs=0;

第 27 页 共 42 页

长江师范学院本科毕业设计·多功能数字时钟的设计 rw=0; P0=cmd; en_toggle(); _nop_(); }

void write_data(uchar indata)//写数据// {

is_ready(); rs=1; rw=0; P0=indata; en_toggle(); _nop_(); }

void write_str(uchar addr,uchar *p) { uchar i; write_cmd(addr); while(p[i]!='\\0') {write_data(p[i]); i++; } }

void write_position(uchar row,uchar col) {uchar p; if(row==1) {p=0x80+col-1; write_cmd(p);} else

第 28 页 共 42 页

长江师范学院本科毕业设计·多功能数字时钟的设计 {p=0xc0+col-1; write_cmd(p); } }

void init_lcd()//初始化// {

write_cmd(0x38); write_cmd(0x0c); write_cmd(0x06); write_cmd(0x01);//清屏幕 }

//------------液晶模块结束---------------------

void write_byte(uchar inbyte) { uchar i; for(i=8;i>0;i--) {

sclk=0; //写的时候低电平改变数据 if(inbyte&0x01) io=1; else io=0;

sclk=1; //写的时候高电平,把数据写入ds1302 _nop_();

inbyte=inbyte>>1; } }

第 29 页 共 42 页

长江师范学院本科毕业设计·多功能数字时钟的设计 void wr_com(unsigned char com)//写指令// { is_ready(); rs=0; rw=0; P0=com; delay(); en=1; delay(); en=0; }

void wr_dat(unsigned char dat)//写数据// { delay(); rs=1; rw=0; en=0; P0=dat; en_toggle(); _nop_(); }

void display(unsigned char *p)//显示// {

while(*p!='\\0') {

wr_dat(*p); p++; delay(); }

第 30 页 共 42 页

长江师范学院本科毕业设计·多功能数字时钟的设计 }

init_play()//初始化显示// { init_lcd(); wr_com(0x80); display(str1); wr_com(0xc0); display(str2); }

//-----------ds1302模块开始------------------- //注意点:sclk的上升沿输入数据,sclk的下跳沿输出数据 //读写时都是从第0位开始

uchar read_byte() //sclk的下跳沿读数据 {

uchar i,temp=0;

io=1; //设置为输入口 for(i=7;i>0;i--) {

sclk=0; if(io==1) temp=temp|0x80; else

temp=temp&0x7f;

sclk=1; //产生下跳沿 temp=temp>>1; }

第 31 页 共 42 页

长江师范学院本科毕业设计·多功能数字时钟的设计 return (temp); }

//----------往ds1302的某个地址写入数据------------- void write_ds1302(uchar cmd,uchar indata) {

reset=1; write_byte(cmd); write_byte(indata); reset=0; sclk=0; }

//----------读ds1302某地址的的数据----------------- uchar read_ds1302(uchar addr) {

uchar backdata; reset=1;

write_byte(addr);

backdata=read_byte();//先写地址,然后读数据 reset=0; sclk=0;

return (backdata); }

//------------设置初始时间-------------------

void set_ds1302(uchar addr,uchar *p,uchar n)//写入n个数据 {

write_ds1302(0x8e,0x00);//写控制字,允许写操作 for(;n>0;n--)

{write_ds1302(addr,*p); p++;

第 32 页 共 42 页

长江师范学院本科毕业设计·多功能数字时钟的设计 addr=addr+2; }

write_ds1302(0x8e,0x80);//写保护,不允许写 }

//----------- 读取当前时间------------------- void read_nowtime(uchar addr,uchar *p,uchar n) {

for(;n>0;n--) {

*p=read_ds1302(addr); p++; addr=addr+2; } }

void init_ds1302() {

reset=0; sclk=0;

write_ds1302(0x80,0x00);//写控制字,允许写 write_ds1302(0x90,0x00);//禁止涡流充电 }

//-----------ds1302模块结束-------------------

/******************************ds18b20程序*******************************/ void delay_18B20(unsigned int i)//延时1微秒// {

while(i--); }

void ds1820rst() /*ds1820复位*/

第 33 页 共 42 页

长江师范学院本科毕业设计·多功能数字时钟的设计 { unsigned char x=0; DQ = 1; //DQ复位 delay_18B20(2); //延时 DQ = 0; //DQ拉低//

delay_18B20(50); //精确延时大于480us// DQ = 1; //拉高// delay_18B20(20); }

uchar ds1820rd() /*读数据*/ {

unsigned char i=0; unsigned char dat = 0; for (i=8;i>0;i--) {

DQ = 0; //给脉冲信号// dat>>=1;

DQ = 1; //给脉冲信号// if(DQ) dat|=0x80; delay_18B20(5);

}

return(dat); }

void ds1820wr(uchar wdata)/*写数据*/ {

unsigned char i=0;

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

第 34 页 共 42 页

长江师范学院本科毕业设计·多功能数字时钟的设计 {

DQ = 0;

DQ = wdata&0x01;

delay_18B20(5);

DQ = 1; wdata>>=1; } }

read_temp()/*读取温度值并转换*/ {

uchar a,b; ds1820rst();

ds1820wr(0xcc);//*跳过读序列号*/ ds1820wr(0x44);//*启动温度转换*/ ds1820rst();

ds1820wr(0xcc);//*跳过读序列号*/ ds1820wr(0xbe);//*读取温度*/ a=ds1820rd(); b=ds1820rd(); tvalue=b; tvalue<<=8;

// a为温度值的低八位 b为高八位//

tvalue=tvalue|a;

if(tvalue<0x0fff) tflag=0; else {

tvalue=~tvalue+1; //温度为负值//

tflag=1;

第 35 页 共 42 页

//温度为正 //

长江师范学院本科毕业设计·多功能数字时钟的设计 } }

/*******************************************************************/ void ds1820disp()//温度值显示 { uchar flagdat;

disdata[0]=tvalue/1000;//十位数 disdata[1]=tvalue%1000/100;//个位数// disdata[2]=tvalue%100/10;//十分位数// disdata[3]=tvalue%10;//百分数位//

if(tflag==0)

flagdat=0xff;//正温度不显示符号// else

flagdat=0xbf;//负温度显示负号/ P2=0;

P0=led_seg[disdata[0]];//显示十位

P2=0; P2=0x01; delay1ms(1);

tvalue*=6.25;//温度值扩大100倍,精确到2位小数// return(tvalue);

P0=led_seg[disdata[1]]&0x7f;//显示个位

P2=0x02;

delay1ms(1);

P2=0;

P0=led_seg[disdata[2]];

第 36 页 共 42 页

长江师范学院本科毕业设计·多功能数字时钟的设计 P2=0x04;//显示十分位

P2=0;

P0=led_seg[disdata[3]]; //显示百分位// P2=0x08; delay1ms(1); delay1ms(1);

} void main() {

init_play();

//init_lcd(); //初始化LCD //write_str(0x80,str1); //液晶显示提示信息 init_ds1302(); //初始化ds1302

set_ds1302(0x80,init,7);//设置初始时间,日期,年月 //如果不设置初始化时间的话,则默认为系统时间 while(1) {

read_nowtime(0x81,init,7); //读出当前时间,读出7个字节

write_position(2,7);

write_data('0'+((init[2]&0xf0)>>4));

write_position(2,8);

write_data('0'+(init[2]&0x0f)); //读小时

write_position(2,9); write_data(':');

第 37 页 共 42 页

长江师范学院本科毕业设计·多功能数字时钟的设计 write_position(2,10);

write_data('0'+((init[1]&0xf0)>>4));

write_position(2,11);

write_data('0'+(init[1]&0x0f)); //读分钟

write_position(2,12); write_data(':');

write_position(2,13);

write_data('0'+((init[0]&0xf0)>>4));

write_position(2,14);

write_data('0'+(init[0]&0x0f)); //读秒

write_position(1,7);

write_data('0'+((init[6]&0xf0)>>4));

write_position(1,8);

write_data('0'+(init[6]&0x0f)); //读年

write_position(1,9); write_data('/');

write_position(1,10);

write_data('0'+((init[4]&0xf0)>>4));

write_position(1,11);

write_data('0'+(init[4]&0x0f)); //读月

第 38 页 共 42 页

长江师范学院本科毕业设计·多功能数字时钟的设计

write_position(1,12); write_data('/');

write_position(1,13);

write_data('0'+((init[3]&0xf0)>>4));

write_position(1,14);

write_data('0'+(init[3]&0x0f)); //读日

write_position(1,16);

write_data('0'+(init[5]&0x0f));//读星期几 } while(1) { } }

read_temp();//读取温度// ds1820disp();//显示//

第 39 页 共 42 页

因篇幅问题不能全部显示,请点此查看更多更全内容

Top