单片机课程设计之智能电子钟

合集下载

单片机课程设计(电子钟)

单片机课程设计(电子钟)

摘要数字钟已成为人们日常生活中必不可少的必需品,广泛用于个人家庭以及办公室等公共场所,给人们的生活、学习、工作、娱乐带来极大的方便。

由于数字集成电路技术的发展和采用了先进的石英技术,使数字钟具有走时准确、性能稳定、携带方便等优点,它还用于计时、自动报时及自动控制等各个领域。

尽管目前市场上已有现成的数字钟集成电路芯片出售,价格便宜、使用也方便,但鉴于单片机的定时器功能也可以完成数字钟电路的设计,因此进行数字钟的设计是必要的。

在这里我们将已学过的比较零散的数字电路的知识有机的、系统的联系起来用于实际,来培养我们的综合分析和设计电路,写程序、调试电路的能力。

单片机具有体积小、功能强可靠性高、价格低廉等一系列优点,不仅已成为工业测控领域普遍采用的智能化控制工具,而且已渗入到人们工作和和生活的各个角落,有力地推动了各行业的技术改造和产品的更新换代,应用前景广阔。

关键词 : 单片机;数码管;数字时钟目录1 系统功能要求 (1)2 设计原理及方案论证 (2)2.1数字钟原理 (2)2.2电子时钟方案 (2)2.3数码管显示方案 (3)3 主控制器和外围器件 (4)3.1单片机主控芯片 (4)3.2 LED驱动芯片 (4)3.3 4x4矩阵键盘模块 (5)3.4 蜂鸣器模块 (5)3.5 下载线接口电路 (6)3.6 DS1302时钟模块 (6)3.7 单片机晶振模块 (7)4 系统硬件电路设计 (8)4.1 单片机整体功能模块图 (8)4.2 单片机蜂鸣器和数码管连接图 (8)4.2 单片机矩阵键盘连接图 (9)4.3 单片机时钟模块和晶振连接图 (9)5 软件程序设计 (10)6 实验测试部分 (20)6.1测试结果 (20)6.1.1电子钟正常的运行 (20)6.1.2电子钟矫正时间后的运行 (20)6.2测试结果分析与结论 (21)7总结 (22)8参考文献 (23)1 系统功能要求本次设计时钟电路,使用了AT89S52单片机芯片控制电路,单片机控制电路简单且省去了很多复杂的线路,使得电路简明易懂。

单片机课程设--电子钟设计

单片机课程设--电子钟设计

单片机MCS-51数钟课程设计系别:专业:班级:姓名及学号:日期:目录单片机MCS-51数钟 (1)课程设计 (1)一、课程设计的目的 (3)二、课程设计任务 (3)三、硬件结构概述 (4)(一)复位电路 (4)(二)晶振电路 (4)(三)按键电路 (4)(四)显示部分 (5)四、软件结构概述 (5)(一)代码说明 (5)(二)按键处理思路 (10)(三)秒表设计思路 (11)五、调试过程 (12)(一)系统仿真 (12)(二)仿真过程中出现的问题及解决方案 (12)六、心得体会 (13)七、参考文献 (14)一、课程设计的目的(1)巩固、加深和扩大单片机应用的知识面, 提高综合及灵活运用所学知识解决工业控制的能力;二、(2)培养针对课题需要, 选择和查阅有关手册、图表及文献资料的自学能力, 提高组成系统、编程、调试的动手能力;三、(3)过对课题设计方案的分析、选择、比较、熟悉单片机用系统开发、研制的过程, 软硬件设计的方法、内容及步骤。

四、课程设计任务(1)在ZY15MCU12BD型综合单片机实验箱的硬件结构上编写软件完成设计。

也可以在其它MCS—51单片机硬件板上完成, 或自行设计硬件并制做完成。

(2)程序的首地址应使目标机可以直接运行, 即从0000H开始。

在主程序的开始部分必须设置一个合适的栈底。

程序放置的地址须连续且靠前, 不要在中间留下大量的空闲地址, 以使目标机可以使用较少的硬件资源。

(3)6位LED数码管从左到右分别显示时、分、秒(各占用2位), 采用24小时标准计时制。

开始计时时为000000, 到235959后又变成000000。

(4)在键盘上选定3个键分别作为小时、分、秒的调校键。

每按一次键, 对应的显示值便加1。

分、秒加到59后再按键即变为00;小时加到23后再按键即变为00。

在调校时均不向上一单位进位 (例如分加到59后变为00, 但小时不发生改变)。

(5) 软件设计必须使用MCS-51片内定时器, 采用定时中断结构, 不得使用软件延时法。

单片机智能电子时钟课程设计报告

单片机智能电子时钟课程设计报告

电子时钟课程设计组员任务分工成绩硬件制作软件设计一、设计详细功能分析1、时钟显示功能单片机发送的信号通过程序控制最终在数码管上显示出来。

数码显示管能够实时显示时分秒,年月日等信息,实现电子时钟最基本的功能,即时间显示。

2、时钟设置功能时间具有实时性,这就要求电子时钟能够实现对时间的调节,能够调整时分秒,正确显示时间,所以时钟调节功能是很有必要的。

3、闹钟功能电子时钟最重要的一个功能就是闹钟,这在人们生活中已经得到了广泛应用,手动设置需要闹钟提醒的时间,然后闹铃提醒,以至于我们不会忘记重要的时间。

4、秒表计时秒表计时,意思就是通过时钟内部的时间设置,数码管上的数字按照秒依次增长,这个功能常常用于各种比赛环节,也成为时钟必要的功能之一。

5、整点报时功能当时钟走到每一个整点时,扬声器发声,作为一个扩展功能,这在电子时钟设计中是一个有意义的部分,此次为们做了添加。

二、设计方案本设计采用C语言程序设计,使AT89C51单片机控制数码管显示时分秒,年月日,当秒计数计满60时就向分进位,分计满60后向时计数器进位,小时计数器按“23翻0”规律计数。

时、分、秒的计数结果经过数据处理可直接送显示器显示。

当计时发生误差的时候可以用校时电路进行手动校正。

整个系统采用应用广泛的AT89C51作为时钟控制芯片,利用单片机内部的计数器来实现的,它的处理过程如下:首先设定单片机内部的一个计数器工作与定时方式,对时钟周期计数形成基准时间,然后用另一个计数器或软件计数的方法对基准时间计数形成秒,秒计60次形成分,分计60次形成小时,小时计24次则计满一天。

然后通过数码管把它们的内容在相应位置显示出来即可。

数码管显示采用两个四位数码管。

由于系统没有其他的复杂的任务处理,而且显示的时钟信息随时都可能变化,一般采用动态显示方式。

动态显示方法线路相对简单,但需动态扫描,扫描频率要大于人眼视觉暂留频率,信息看起来才稳定。

在具体处理时,计数器采用中断方式工作,对时钟的形成在中断服务程序中实现。

单片机课程设计---智能电子钟

单片机课程设计---智能电子钟

单片机原理及接口技术课程设计智能电子钟姓名:***学号:指导教师:***院系(部所):机电工程学院专业:机械设计制造及其自动化完成日期:2012年12月20日摘要本设计采用单片机AT89S52芯片以及相关的芯片来实现多功能的数字钟。

该设计选用一线制温度计DS18B20 作为温度传感器,实时时钟芯片DS1302提供当前日期和时间数据,并将实时的日期和温度数据在字符型液晶显示器LCD1602上显示出来。

本文设计了一种基AT89S52单片机,使用Dallas的一线制数字温度计DS18B20作为温度传感器,实时时钟芯片DS1302提供当前日期和时间数据,并将实时的日期和温度数据字符型液晶显示器LCD1602上显示,本次设计的多功能数字钟采用数字电路对日期和温度进行控制设置,我们采用LCD液晶显示,以24小时的计时方式,根据LCD显示原理进行显示,定时器计数。

在本次设计中,电路具有显示日期、时间、温度的基本功能,还可以实现对它们的调整。

本次设计要达到的目的是:具有时间显示和手动校对功能,24小时制;具有年、月、日显示和手动校对功能;具有显示当前星期的功能;具有闹铃功能;具有环境温度采集功能;掉电后无需重新设置时间和日期。

关键词: DS1302时钟芯片;LCD1602;DS18B20温度传感器.目录1 总体方案设计 (2)1.1 设计内容 (2)2 单元模块设计 (3)2.1 各单元模块功能介绍及电路设计 (3)2.1.1 温度采集电路 (3)2.1.2 DS1302时钟电路 (3)2.1.3 串行通信接口电路 (4)2.1.4 电源电路 (4)2.1.5 按键电路 (5)2.1.6液晶显示显示电路 (5)2.2 特殊器件介绍 (5)2.2.1 AT89S52单片机芯片 (5)2.2.2 DS1302介绍 (6)2.2.3 温度传感器DS18B20 (7)2.2.4 液晶显示LCD1602 (7)3软件设计 (8)3.1软件设计流程 (8)3.1.1 温度采集流程 (9)3.2.2 日期数据处理流程 (9)4 调试与结果 (10)附录 (11)参考文献 (23)1 总体方案设计1.1 设计内容该电路具有显示日期、时间、温度的基本功能,还可以实现对它们的调整。

单片机课程设计报告单片机的电子钟设计

单片机课程设计报告单片机的电子钟设计

单片机课程设计报告---单片机的电子钟设计单片机课程设计报告---单片机的电子钟设计一、设计简介本课程设计是以单片机为核心,设计一个具有显示时间和闹钟功能的电子钟。

电子钟是人们日常生活中必备的计时工具,其精度和稳定性直接影响到人们的时间安排和生活质量。

因此,本设计的目的是通过学习和实践,掌握单片机的应用和电子钟的设计方法,提高我们的实践能力和理论知识水平。

二、硬件设计1.单片机选择本设计选用AT89C51单片机作为主控制器。

AT89C51是一种低功耗、高性能的8位单片机,具有丰富的I/O口和片内资源,适合用于各种嵌入式系统开发。

2.显示模块显示模块采用LED数码管,用于显示时间、日期和闹钟状态。

为了方便调试和编程,我们选用4位一体式数码管。

3.按键模块按键模块包括功能键和调整键,用于设置时间、日期和闹钟。

我们选用4个独立式按键,分别实现上调、下调、设置和闹钟功能。

4.蜂鸣器模块蜂鸣器模块用于发出闹钟声音。

我们选用一款常见的无源蜂鸣器,通过单片机的一个IO口控制其频率,实现声音提示功能。

三、软件设计1.时钟芯片驱动本设计选用DS1302时钟芯片,用于提供实时时间和日期的信息。

DS1302与单片机通过I2C协议进行通信,需要编写相应的驱动程序。

驱动程序包括时钟芯片的初始化、数据读写和中断处理等。

2.显示驱动显示驱动程序负责控制数码管的显示。

驱动程序包括延时函数、位选函数和段选函数等。

通过调用这些函数,我们可以实现时间、日期和闹钟状态的动态显示。

3.按键驱动按键驱动程序负责识别用户的按键操作。

驱动程序通过检测独立式按键的状态变化,识别出不同的按键操作,并执行相应的功能。

例如,当用户按下上调键时,驱动程序将调用时钟芯片的读秒函数,并将时间的小时数加1。

4.蜂鸣器驱动蜂鸣器驱动程序负责控制蜂鸣器的声音频率。

驱动程序通过设置单片机的定时器寄存器,产生一定频率的方波信号,驱动蜂鸣器发声。

为了实现不同的声音效果,我们可以通过改变方波信号的频率和持续时间来实现。

智能电子钟的课程设计

智能电子钟的课程设计
10
11
8
12
9
14
7
C1+
1
C2+
4
GND
15
C1-
3
VCC
16
C2-
5
V-
6
V+
2
U2
MAX3232
1
2
3 4 5 Fra bibliotek6 7
8
9
J1
10uF
C10
104
C11
0.33uF
C1
220uF
C3
220uF
C2
D2
VoutVin
G
N
D
LM7805
0.1uF
C4
T1
+5V 图3.4 电源电路 3.1.5 按键电路 本次设计中用到了4*4的矩阵键盘列阵通过赋低电平选中其中一
列以便来控制时分秒年月日以及闹钟的调整。其电路如图
的一线制数字温度计DS18B20作为温度传感器实时时钟芯片DS1302提
供当前日期和时间数据并将实时的日期和温度数据字符型液晶显示器
LCD1602上显示本次设计的多功能数字钟采用数字电路对日期和温度进
行控制设置我们采用LCD液晶显示以24小时的计时方式根据LCD
显示原理进行显示定时器计数。在本次设计中电路具有显示日期、时
和日期系统不但接口设计简单、便于控制而且具有很好的人机界面
可以对当前的时间进行调整。
关键字单片机 智能电子钟 数字电路
智能电
通过几个按键对当前的时间进行调整,对闹钟进行随意设置以及温度超

单片机课程设计电子时钟

单片机课程设计电子时钟

xxxxxx大学课程设计报告课程设计名称:单片机系统综合课程设计课程设计题目:电子时钟院(系):专业:班级:学号:姓名:指导教师:完成日期:xxxxxx大学课程设计报告目录第1章总体设计方案 (1)1.1设计原理 (1)1.2设计思路 (1)1.3实验环境 (2)第2章详细设计方案 (3)2.1硬件电路设计 (3)2.2主程序设计 (3)2.3功能模块的设计与实现 (4)第3章结果测试及分析 (11)3.1结果测试 (11)3.2结果分析 (11)参考文献 (12)附录 A (13)附录 B (21)附录 C (22)第1章总体设计方案1.1 设计原理根据课程设计任务书的内容,要求实现在MCS51单片机上对数字电子钟的基本功能设计,对当前时间正确显示,并可根据需要对时间进行更改,以完成时间的校对和闹钟的设置。

时钟时间以时、分、秒在6位数码管上显示,小时以24小时计时模式,分秒均为60进位。

用6MHz晶振产生振荡脉冲,定时器进行秒计时。

调整设置时间的过程运用可编程键盘上的按键进行控制,共设有5个按键,首先按键A进入校时模式或E进入闹钟模式,再分别按键B对小时或C分钟进行更改,每按键一次数码管计数显示加一,更改结束后按键D退出设置,时钟正常显示。

闹钟时间到时,蜂鸣器鸣响10秒后时钟正常显示。

1.2 设计思路采用C语言程序设计结合硬件电路设计方法,利用Lab6000实验箱来实现数字电子钟的设计。

1)提出方案根据设计要求,可将本次设计分为3个模块进行:1)时钟显示模块:主要用于时间的正确显示。

2)校时模块:此模块用于时钟的校对,以完成用户更改时间的需求。

3)闹钟模块:用于实现闹钟的时间设置和定点闹铃的功能。

2)方案论证时钟显示模块中,利用可编程定时器中断进行秒计时,将时间显示在6位数码管上。

校时模块主要利用键盘上5个键的控制完成各项功能,并在数码管上动态显示改变结果,完成设置后进入时钟显示模块。

闹钟模块的设置过程与校时模块相似,但设置完成进入时间显示模块后则等待闹铃时间,到规定时间后,通过数码管闪烁及蜂鸣器的鸣响来实现定点闹铃提醒功能。

单片机多功能电子数字钟课程设计报告

单片机多功能电子数字钟课程设计报告

多功能电子数字钟设计数字钟在日常生活中最常见, 应用也最广泛。

本文主要就是设计一款数字钟, 以89C52单片机为核心, 配备液晶显示模块、时钟芯片、等功能模块。

数字钟采用24小时制方式显示时间, 定时信息以及年月日显示等功能。

文章的核心主要从硬件设计和软件编程两个大的方面。

硬件电路设计主要包括中央处理单元电路、时钟电路、人机接口电路、信号处理电路、执行电路等几部分组成。

软件用C语言来实现, 主要包括主程序、键盘扫描子程序、时间设置子程序等软件模块。

关键词单片机液晶显示器模块数字钟一硬件电路设计及描述;1.MCS-51单片机单片机是在一块硅片上集成了各种部件的微型计算机。

这些部件包括中央处理器CPU、数据存储器RAM、程序存储器ROM、定时器/计数器和多种I/O接口电路。

8051单片机的结构特点有以下几点: 8位CPU;片内振荡器及时钟电路; 32根I/O线;外部存储器ROM和RAM;寻址范围各64KB;两个16位的定时器/计数器; 5个中断源, 2个中断优先级;全双工串行口。

定时器/计数器8051内部有两个16位可编程定时器/计数器, 记为T0和T1。

16位是指他们都是由16个触发器构成, 故最大计数模值为2 -1。

可编程是指他们的工作方式由指令来设定, 或者当计数器来用, 或者当定时起来用, 并且计数(定时)的范围也可以由指令来设置。

这种控制功能是通过定时器方式控制寄存器TMOD来完成的。

在定时工作时, 时钟由单片机内部提供, 即系统时钟经过12分频后作为定时器的时钟。

技术工作时, 时钟脉冲由TO和T1输入。

中断系统8051的中断系统允许接受五个独立的中断源, 即两个外部中断申请, 两个定时器/计数器中断以及一个串行口中断。

外部中断申请通过INTO和INT1(即P3.2和P3.3)输入, 输入方式可以使电平触发(低电平有效), 也可以使边沿触发(下降沿有效)。

2.8051的芯片引脚如图1-2所示VCC: 供电电压。

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

单片机课程设计题目: 智能电子钟学生姓名专业班级指导教师成绩工程技术学院2016 年 3 月目录一、系统设计内容 (1)1.1 设计要求: (1)1.2 可实现的具体功能: (1)二、总体设计 (2)2.1 DS1302简介 (2)2.2 LCDl602简介 (3)2.3 AT89C51单片机简介 (3)三、硬件设计 (3)3.1 原理图 (4)3.2 PCB板丝印层 (4)3.3 PCB板底层 (4)四、软件设计流程 (4)4.1 总体设计 (4)4.2主程序流程图 (5)4.3显示流程图 (5)4.4 DS1302读取流程 (6)4.5 外部中断0流程 (6)4.6 外部中断1流程 (7)五、仿真效果图 (9)六、总结与体会 (11)附录 (12)1、程序 (12)2、参考文献 (22)智能电子钟(LCD显示)一、系统设计内容1.1 设计要求:以AT89C51单片机为核心,制作一个LCD显示的智能电子钟:(1)计时:秒、分、时、天、周、月、年;(2)闰年自动判别;(4)时间、月、日交替显示;(5)自定任意时刻自动开/关屏;(6)计时精度:误差≤1秒/月(具有微调设置);(7)键盘采用动态扫描方式查询。

所有的查询、设置功能均由功能键K1、K2完成。

本设计采用市场上流行的时钟芯片DS1302进行制作。

1.2 可实现的具体功能:智能电子钟的原理主要由4部分组成:(1)单片机的外围设备,即单片机最小系统,此部分是保证单片机正常工作的必要部分;(2)显示部分:LCD显示,即显示年、月、星期、日、时、分、秒等;(3)时钟芯片DS1302,DS1302是DALLAS公式推出的涓流充电时钟芯片,内含一个实时时钟/日历和31字节静态RAM,可以通过串行接口与计算机进行通信,使得管脚数量减少。

实时时钟/日历电路能够计算2100年之前的秒、分、时、日、星期、月、年的,具有闰年调整的能力;(4)按键部分:按键实现开关显示屏对时钟时间的微调,开关键在正常显示模式下按下开火关LCD显示;模式键:可切换到时间调整界面,再按一次退出,此时开关屏键实现对秒的加一操作。

二、总体设计图2.1 设计方案框图2.1 DS1302简介DS1302 是美国DALLAS公司推出的一种高性能、低功耗、带RAM的实时时钟电路,它可以对年、月、日、星期、时、分、秒进行计时,具有闰年补偿功能,工作电压为 2.5V~5.5V。

采用三线接口与CPU进行同步通信,并可采用突发方式一次传送多个字节的时钟信号或RAM数据。

DS1302内部有一个31×8的用于临时性存放数据的RAM寄存器。

DS1302是DS1202的升级产品,与DS1202兼容,但增加了主电源/后备电源双电源引脚,同时提供了对后备电源进行涓细电流充电的能力。

图2.2 DS1302芯片2.2 LCDl602简介1602液晶也叫1602字符型液晶,它是一种专门用来显示字母、数字、符号等的点阵型液晶模块。

它由若干个5X7或者5X11等点阵字符位组成,每个点阵字符位都可以显示一个字符,每位之间有一个点距的间隔,每行之间也有间隔,起到了字符间距和行间距的作用。

2.3 AT89C51单片机简介AT89C51(如图所示)是一种带4K字节闪烁可编程可擦除只读存储器(FPEROM—Falsh Programmable andErasable Read Only Memory)的低电压,高性能CMOS8位微处理器,俗称单片机。

该器件采用ATMEL高密度非易失存储器制造技术制造,与工业标准的MCS-51指令集和输出管脚相兼容。

由于将多功能8位CPU和闪烁存储器组合在单个芯片中,ATMEL的AT89S51是一种高效微控制器,为很多嵌入式控制系统提供了一种灵活性高且价廉的方案。

三、硬件设计智能电子钟(LCD 显示) 3.1 原理图P2.7/A1528P2.6/A1427P2.5/A1326P1.78P2.4/A1225P1.67P2.3/A1124P1.56P2.2/A1023P1.45P2.1/A9P1.34P1.23P1.1/T 2EX 2P1.0/T 21EA31AL E 30PSEN 29P3.0/RXD 10P3.1/T XD11P3.7/RD17P3.2/INT 012P3.6/WR 16P3.3/INT 113P3.5/T 115P3.4/T 01489C51X12X23VCC18VCC21RST 5SCL K 7I/O6U2WD1100-11C430uFC530uFX232.768kHzB13VVCCR21k10uF161514131211109RP1RE SPACK4VCC12K 12K112K23.2 PCB 板丝印层3.3 PCB 板底层四、软件设计流程4.1 总体设计在整个程序运行过程中,总体上可分为以下几方面:4.2主程序流程图4.3显示流程图4.4 DS1302读取流程4.5 外部中断0流程4.6 外部中断1流程五、仿真效果图日期时间交替显示:关屏时间调整六、总结与体会历经一个星期的设计、修改、调试,最终,我们得到了想要的结果,感受成功之喜悦,但这并不意味着我们做得很好,相反,在这当中暴露出了我们在各个方面许许多多的问题,学到许多的同时感触也很深厚。

在硬件设计时,通过对需要系统的分析,单元模块的设计,元件的选取等,使我们了解到平时所学单片机课程的实用价值,以及设计过程中的大局协调、取舍、分析能力的培养。

在编程以及仿真时,充分将单片机原理的知识学以致用,既是对我们单片机基础知识的考验,又是对我们灵活运用及创新能力的检验;既考验我们的学习能力,又考验逻辑思维技巧;既体现了个人对课程设计的灵思妙想,又培养了团队之间的合作能力。

我们能够很好地完成这次课设,离不开在科学研究上实事求是的工作原则、一丝不苟的工作态度、勤于思考的工作方法、百折不饶的工作精神和精益求精的工作作风,此外,最重要的就是团队之间相处和谐、分工明确。

在大家的共同努力下,得到了满意的成果,更使我们明白团队合作的重要与便利。

最后,衷心感谢老师在这次设计中耐心给予的大量帮助,解决了我程序中存在的不少问题,并指导了我一些设计的思路,也令我明白自己的大量不足之处,受益匪浅。

附录1、程序#include<reg52.h>#include <intrins.h>#define uchar unsigned char#define DS1302_SECOND_WRITE 0x80#define DS1302_MINUTE_WRITE 0x82#define DS1302_HOUR_WRITE 0x84#define DS1302_DAY_WRITE 0x86#define DS1302_WEEK_WRITE 0x8a#define DS1302_MONTH_WRITE 0x88#define DS1302_YEAR_WRITE 0x8c#define DS1302_PROTECT_WRITE 0x8e#define DS1302_SECOND_READ 0x81#define DS1302_MINUTE_READ 0x83#define DS1302_HOUR_READ 0x85#define DS1302_DAY_READ 0x87#define DS1302_WEEK_READ 0x8b#define DS1302_MONTH_READ 0x89#define DS1302_YEAR_READ 0x8dsbit lcden = P2^2;sbit lcdrs = P2^0;sbit write = P2^1;sbit sck = P1^6; //时钟sbit io = P1^7; //数据sbit rst = P1^5;// DS1302复位unsigned char Chinese_1[3]={0x2d,0x20,0x3a};// “-”“”“:”unsigned char Chinese_2[7]={0x31,0x32,0x33,0x34,0x35,0x36,0x37};//一二三四五六天//unsigned char Cursor[6]={0x81,0x83,0x85,0x90,0x92,0x94};//定义光标移动的位置unsigned char num = 0;unsigned int ji = 0;unsigned int jiao = 0;void Delayms(unsigned int z)//延时{unsigned int x,y;for(x=z;x>0;x--)for(y=115;y>0;y--);}//lcd子程序void Write_com(unsigned char com)//写命令{lcdrs = 0;P0 = com;Delayms(5);lcden = 1;Delayms(5);lcden = 0;}void Write_data(unsigned char dat)//写数据{lcdrs = 1;P0 = dat;Delayms(5);lcden = 1;Delayms(5);lcden = 0;}unsigned char Read_com()//读命令{unsigned char com;write = 1;lcdrs = 0;lcden = 1;com = P0;Delayms(5);write = 0;lcdrs = 0;lcden = 0;return com;}void init_lcd()//lcd初始化{lcden = 0;Write_com(0x38);Write_com(0x0c);Write_com(0x06);Write_com(0x01);Write_com(0x80);}//ds1302子程序void DS1302WriteByte(uchar dat)//写字节{uchar i;sck=0;Delayms(2);for(i=0;i<8;i++){io=dat&0x01;//取最低位,注意DS1302的数据和地址都是从最低位开始传输的Delayms(2);sck=1;Delayms(2);sck=0;dat>>=1;}}uchar DS1302ReadByte()//读字节{uchar i,dat;Delayms(2);for(i=0;i<8;i++){dat>>=1;if(io==1)//当数据线为高时,证明该位数据为1dat|=0x80;//要传输数据的当前值置为1,若不是,则为0sck=1;Delayms(2);sck=0;Delayms(2);}return dat;}uchar DS1302Read(uchar cmd)//读命令{uchar dat;rst=0;sck=0;rst=1;DS1302WriteByte(cmd);//传输地址dat=DS1302ReadByte();//读取要得到的时间/日期sck=1;rst=0;return dat;}void DS1302Write(uchar cmd,uchar dat)//写命令{rst=0;sck=0;rst=1;DS1302WriteByte(cmd);//传输地址DS1302WriteByte(dat);//写入时间/日期sck=1;rst=0;}void Init_DS1302(void)//初始化{DS1302Write(0x8e,0x00);//写保护关DS1302Write(DS1302_SECOND_WRITE,0x55);//初始秒值DS1302Write(DS1302_MINUTE_WRITE,0x59);//初始分钟DS1302Write(DS1302_HOUR_WRITE,0x23);//初始为24小时模式初始时间为DS1302Write(DS1302_DAY_WRITE,0x02);//20xx年x月x日星期xDS1302Write(DS1302_MONTH_WRITE,0x03);DS1302Write(DS1302_YEAR_WRITE,0x16);DS1302Write(DS1302_WEEK_WRITE,0x03);DS1302Write(0x90,0x01);//充电DS1302Write(0xc0,0xf0);//初始化一次标示DS1302Write(0x8e,0x80);}void Split_display(unsigned char address)//取数显示{unsigned char i;i=DS1302Read(address);i=i/16+'0';Write_data(i);//显示十位Delayms(3);i=DS1302Read(address);i=i%16+'0';Write_data(i);//显示个位Delayms(5);}void Dispaly_shi()//显示时间{Write_com(0x84);Split_display(DS1302_HOUR_READ);//显示小时Write_data(Chinese_1[2]);//显示“:”Delayms(3);Split_display(DS1302_MINUTE_READ);//显示分钟Write_data(Chinese_1[2]);Delayms(3);Split_display(DS1302_SECOND_READ);//显示秒Delayms(3);Delayms(50);}void Display_nian()//显示年月日{uchar i;Write_com(0x82);Delayms(100);Write_com(0x82);Delayms(100);Write_data('2');Delayms(5);Write_data('0');Delayms(1);Split_display(DS1302_YEAR_READ);//显示年份Write_data(Chinese_1[0]);//显示“-”Delayms(3);Split_display(DS1302_MONTH_READ);//显示月份Write_data(Chinese_1[0]);Delayms(3);Split_display(DS1302_DAY_READ);//显示日期Write_data(Chinese_1[1]);Delayms(3);Write_data(Chinese_1[1]);Delayms(3);i=DS1302Read(DS1302_WEEK_READ);//显示星期i=i%16+'0';Write_data(i);Delayms(3);Write_com(0x82);Delayms(50);}void inter0() interrupt 0//按键中断1{ji = ji+1;if(ji%2 == 0)Write_com(0x0c);elseWrite_com(0x08);}void inter2() interrupt 2//按键中断2{unsigned char k,j,i,b;//Delayms(500);while(INT1!=1);b = Read_com();b = ACC & 0x7f;Write_com(0x01);Dispaly_shi();EA = 0;EX0=0;EX1=0;k=DS1302Read(DS1302_SECOND_READ);while(INT1){Write_com(0x8a);Write_com(0x0f);if(INT0==0){Delayms(10);if(INT0==0){if(k<0x59){ACC = k;#pragma asmadd a,#1da a#pragma endasmk = ACC;}else{DS1302Write(DS1302_SECOND_WRITE,k);while(k!=0){ k=DS1302Read(DS1302_SECOND_READ);}Write_com(0x01);Dispaly_shi();}Write_com(0x8a);i=k/16+'0';j=k%16+'0';Write_data(i);Delayms(3);Write_data(j);while(!INT0);}}}while(!INT1);DS1302Write(DS1302_SECOND_WRITE,k);Write_com(0x0c);Write_com(0x01);if(jiao==0){ Dispaly_shi();}else {Display_nian();}Write_com(b);EA = 1;EX0=1;EX1=1;}void main(){uchar i;write = 0;Delayms(50);IT0=1;IT1=1;EX0=1;EX1=1;EA=1;init_lcd();Init_DS1302();while(1){Write_com(0x01);for(i=9;i>0;i--)Dispaly_shi();Write_com(0x01);for(i=9;i>0;i--)Display_nian();Delayms(50);};}2、参考文献郭文川. MCS-51单片机原理、接口及应用电子工业出版社2013.01 吴国凤、宣善立. C/C++程序设计高等教育出版社2009.09江思敏、陈明Protel电路设计教程清华大学出版社2006.12莫名到奇妙. DS1302中文资料,带源代码百度文库2012.5.10 wubanwudi. 超详细的ds1302使用说明及其例程百度文库2011.08.10。

相关文档
最新文档