版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、 基于单片机数字时钟的设计与实现 第 1 页 共 30 页1 基于单片机的数字钟的设计与实现 摘 要 近年来随着计算机在社会领域的渗透和大规模集成电路的发展,单片机的 应用正在不断地走向深入,因此特别适合于与控制有关的系统,越来越广泛地 应用于自动控制,智能化仪器,仪表,数据采集,军工产品以及家用电器等各 个领域,单片机往往是作为一个核心部件来使用,在根据具体硬件结构,以及 针对具体应用对象特点的软件结合,以作完善。 本次做的数字钟是以单片机(ATMEGA16)为核心,由于它具有功能强, 体积小,功耗低,价格便宜,工作可靠,使用方便等。数字时钟采用了性能优 秀的 ATMEGA16,结合了共阴极
2、 LED、数码显示器、BCD-锁存/7 段译码/驱动 器,这些元件来控制时钟的显示、调整和校对。通过 multisim 软件进行仿真制 作,达到制作简易数字钟的目的。数字时钟能够准确显示时间(显示格式为时 时:分分,24 小时制),而且可以显示年、月、日、时、分、秒、周。其硬件 部分难点在于元器件的选择、布局及焊接。 关键词:ATMEGA16;数码管显示;键盘输入;USB 接口电源 基于单片机数字时钟的设计与实现 第 2 页 共 30 页2 BASED ON SINGLE-CHIP DIGITAL CLOCK DESIGN AND IMPLEMENTATION ABSTRACT In rece
3、nt years, with the field of computer penetration in the community and the development of large-scale integrated circuits, microcontroller applications are continually deepening.It is particularly suited to control systems and, more widely used in automatic control, intelligent of instruments, meters
4、, data acquisition, military products, as well as household appliances and other fields. single-chip microcomputer often use as a core component,in accordance with the specific hardware architecture, as well as application-specific features of the software object to be perfect. This article is based
5、 on single-chip digital clock (ATMEGA16) as the core, because it has a strong functions, small size, low power consumption, cheap, reliable and easy to use and so on. Digital Clock using the excellent performance of ATMEGA16, combined with a total of cathode LED, digital displays, BCD-latch / 7 deco
6、der / driver, these components to control the clock display, adjustment and proofing. Through the production of multisim simulation software to create simple digital clock purposes. Able to accurately show the number of clock time (display format hh: mm: seconds seconds, 24-hour system), and can dis
7、play year, month, day, hour, minute, second, week. Difficult part of the hardware is the choice of components, layout and welding. Key words: ATMEGA16; digital tube display; keyboard input; USB port power supply 基于单片机数字时钟的设计与实现 第 3 页 共 30 页3 目目 录录 1 前 言.1 2 系统设计.2 2.1 电路组成及工作原理.2 2.2 硬件部分.2 2.2.1 单片
8、机系统.2 2.2.2 ATMEGA16 的主要性能参数:.2 2.3 显示部分.3 2.3.1 LED 显示结构与原理.3 2.3.2 LED 显示器接口及显示方式.4 2.4 键盘工作模块.5 2.4.1 独立式按键结构.6 2.4.2 独立式按键的软件结构.6 2.5 USB 接口电源 .6 2.6 74HC595 驱动模块.7 2.7 DS1302 时钟实现模块.7 2.7.1 DS1302 简介.7 2.7.2 DS1302 与 CPU 的连接.8 3 硬件实现及单元电路设计.9 3.1 主板电路的设计.9 3.2 外部电路的设计.11 4 软件设计.13 4.1 软件设计思路.13
9、 4.2 程序文件.13 5 系统调试.27 5.1 硬件调试.27 5.2 软件调试.27 6 结论.28 参考文献.29 致 谢.30 基于单片机数字时钟的设计与实现 第 1 页 共 32 页 1 前 言 单片机自 20 世纪 70 年代问世以来,以其极高的性能价格比,受到人们的重视和 关注,应用很广、发展很快。单片机体积小、重量轻、抗干扰能力强、环境要求不高、 价格低廉、可靠性高、灵活性好、开发较为容易。由于具有上述优点,在我国,单片 机已广泛地应用在工业自动化控制、自动检测、智能仪器仪表、家用电器、电力电子、 机电一体化设备等各个方面,而 ATMEGA16 单片机是各单片机中典型代表的
10、一种。 这次毕业设计通过对它的学习、应用,以 AVR MEGA16 芯片为核心,辅以必要的电 路,设计了一个简易的电子时钟,它由直流电源供电,通过数码管能够准确显 数字时钟是现代社会应用广泛的计时工具,在航天、电子等科研单位,工厂、医 院、学校等企事业单位,各种体育赛事及至我们每个人的日常生活中都发挥着重要的 作用。本系统是基于 ATMEGA16 单片机设计的一个具有四位 LED 显示的数字时实时 钟,采用独立式按键进行时间调整。该系统同时具有硬件设计简单、工作稳定性高、 价格低廉等优点。 本篇论文所做的数字时钟,是以 ATMEGA16 为核心,配合使用 74HC595 驱动数 码管,DS13
11、02 时钟芯片等实现了用数码管显示,键盘调整的功能。实现时钟的多功能 显示时间,通过 C 语言编程实现数字时钟的年、月、日、时、分、秒、周。 基于单片机数字时钟的设计与实现 第 2 页 共 30 页2 2 系统设计 2.1 电路组成及工作原理 本文数字时钟设计原理主要利用 ATMEGA16 单片机,由单片机的 P0 口控制数码 管的位显示, P2 口控制数码管的段显示,P1 口与按键相接用于时间的校正。在设计 中引入两个电源电路,一个是外部电源系统产生+5V 电压,用于给 CPU 及显示电路提 供工作电压,这是数字时钟正常工作时的总电压。 整个系统工作时,秒信号产生器是整个系统的时基信号,它直
12、接决定计时系统的 精度,将标准秒信号送入“秒计数器” , “秒计数器”采用 60 进制计数器,每累计 60 秒发出一个“分脉冲”信号,该信号将作为“分计数器”的时钟脉冲。 “分计数器”也 采用 60 进制计数器,每累计 60 分钟,发出一个“时脉冲”信号,该信号将被送到 “时计数器” 。 “时计数器”采用 24 进制计时器,可实现对一天 24 小时的累计。显示 电路将“年” 、 “月” 、 “日” 、 “时” 、 “分” 、 “秒” 、 “周” ,计数器的输出,通过四个七段 LED 显示器显示出来。校时电路是直接加一个脉冲信号到时计数器或者分计数器或者 秒计数器来对“年” 、 “月” 、 “日
13、” 、 “时” 、 “分” 、 “秒” 、 “周” ,显示数字进行校对调整。 2.2 硬件部分 2.2.1 单片机系统 单片机是一种集成电路芯片,采用超大规模技术把具有数据处理能力(如算术运算, 逻辑运算、数据传送、中断处理)的微处理器(CPU),随机存取数据存储器(RAM),只 读程序存储器(ROM),输入输出电路(I/O 口),可能还包括定时计数器,串行通信口 (SCI),显示驱动电路(LCD 或 LED 驱动电路),脉宽调制电路(PWM),模拟多路转换器 及 A/D 转换器等电路集成到一块单块芯片上,构成一个最小然而完善的计算机系统。 这些电路能在软件的控制下准确、迅速、高效地完成程序设
14、计者事先规定的任务。 2.2.2 ATMEGA16 的主要性能参数: 本文采用的单片机为 ATMEGA16,ATMEGA16 高性能,低功耗的 AVR 8 位微控 制器。采用 ATMEL 公司的 ATMEGA16L 单片机作为主控制器。ATMEGA16L 是一个 低功耗,高性能的 8 位单片机,片内含 16K 空间的可反复擦些 10,000 次的 FLAsH 只 基于单片机数字时钟的设计与实现 第 3 页 共 30 页3 读存储器,具有 1Keytes 的随机存取数据存储器(RAM) ,32 个 IO 口,2 个 8 位可编 程定时计数器,1 个 16 位可编程定时计数器,四通道 PWM,内置
15、 8 路 10 位 ADC。 且 ATMEGA16 系列的单片机可以在线编程、调试,方便地实现程序的下载与整机的调 试。其管脚图如图 2-1 所示。 图图 2-12-1 ATATMEGA16 6 管脚图图 2.3 显示部分 单片机应用系统中使用的显示器主要有发光二极管显示器,简称 LED(LIGHT EMITTING DIODE) ;液晶显示器 LCD(LIQUID CRYsTAL DIsPLAY) ;近几年也 有配置 CRT 显示器的。而目前在单片机系统中,通常用 LED 数码显示器来显示各种 数字或符号。由于它具有显示清晰、亮度高、使用电压低、寿命长的特点,因此使用 非常广泛。 2.3.1
16、 LED 显示结构与原理 单片机中通常用七段 LED 构成字型“8” ,另外,还有一个小数点发光二极管以显 示小数位!这种显示器有共阴和共阳两种!发光二极管的阳极连在一起的(公共端) 称为共阳极显示器,阴极连在一起的称为共阴极显示器。 一位显示器由 8 个发光二极管组成,其中,7 个发光二极管构成字型“8”的各个 基于单片机数字时钟的设计与实现 第 4 页 共 30 页4 笔划(段)A_G,另一个小数点为 DP 发光二极管。当在某段发光二极管上施加一定的 正向电压时,该段笔画即亮;不加电压则暗。为了保护各段 LED 不被损坏,需外加限 流电阻。 由于共阴极连接需加驱动,故在这里我采用的是共阳阳
17、极连接。 以共阳极 LED 为例,各 LED 公共阳极 K0 接高电平,若向各控制端 A,B,G,DP 顺次送入 00011110 信号,则该显示器显示“”字型。 共阴极 7 段 LED 显示数字 0 F、文字、符号及小数点的编码(A 段为最低位, DP 点为最高位)如(图 2-1)所示。 表表 2-12-1 共阴极共阴极 7 7 段段 LED 显示字型编码表显示字型编码表 显示字符共阴极段选码显示字符共阴极段选码 0 3FH 5 6DH 1 06H 6 7DH 2 5BH 7 07H 3 4FH 8 7FH 4 66H 9 6FH “灭” (黑) 00H 2.3.2 LED 显示器接口及显示
18、方式 LED 显示器有静态显示方式和动态显示方式两种。静态显示就是当显示器显示某 个字符时,相应的段恒定的导通或截止,直到显示另一个字符为止。LED 显示器工作 于静态显示方式时,各位的共阴极接地;若为共阳极则接+5V 电源。每位的段选线分 别与一个 8 位锁存器的输出口相连,显示器中的各位相互独立,而且各位的显示字符 一经确定,相应锁存的输出将维持不变。 正因为如此,静态显示器的亮度较高。这种显示方式编程容易,管理也较简单, 但占用 I/O 口线资源较多。因此,在显示位数较多的情况下,一般都采用动态显示方 式。 由于所有 4 位段皆由一个 I/O 口控制,因此,在每一瞬间,4 位 LED 会
19、显示相 同 的字符。要想每位显示不同的字符,就必须采用扫描方法轮流点亮各位 LED,即在每 一瞬间只使某一位显示字符。在此瞬间,段选控制 I/O 口输出相应字符段选码(字型 码) ,而位选(如图 2-2 所示)则控制 I/O 口在该显示位送入选通电平(因为 LED 为共 阴,故应送低电平) ,以保证该位显示相应字符。如此轮流,使每位分时显示该位应显 示字符。例如,要求显示“LL0-20”时,I/O1 和 I/O2 轮流送入段选码、位选码。 基于单片机数字时钟的设计与实现 第 5 页 共 30 页5 图图 2-22-2 位位 LED 动态显示电路动态显示电路 在多位 LED 显示时,为了简化电路
20、,降低成本,将所有位的段选线并联在一起, 由一个 8 位 I/O 口控制。而共阴(共阳)极公共端分别由相应的 I/O 口线控制,实现各 位的分时选通。 段选码,位选码每送入一次后延时 1MS,因人的视觉暂留时间为 0.1S(100MS) , 所以每位显示的时间不能超过 20MS,并保持延时一段时间,以造成视觉暂留效果,给 人看上去每个数码管总在亮。这种方式称为软件扫描方式。 2.4 键盘工作模块 按键按照结构原理可分为两类,一类是触点式开关按键,如机械式开关、导电橡 胶式开关等;另一类是无触点式开关按键,如电气式按键,磁感应按键等。前者造价 低,后者寿命长。目前,微机系统中最常见的是触点式开关
21、按键。 按键按照接口原理可分为编码键盘与非编码键盘两类,这两类键盘的主要区别是 识别键符及给出相应键码的方法。编码键盘主要是用硬件来实现对键的识别,非编码 键盘主要是由软件来实现键盘的定义与识别。 全编码键盘能够由硬件逻辑自动提供与键对应的编码,此外,一般还具有去抖动 和多键、窜键保护电路。这种键盘使用方便,但需要较多的硬件,价格较贵,一般的 单片机应用系统较少采用。非编码键盘只简单地提供行和列的矩阵,其它工作均由软 件完成。由于其经济实用,较多地应用于单片机系统中。在本套设计中由于只需要几 个功能键,此时,可采用独立式按键结构。 基于单片机数字时钟的设计与实现 第 6 页 共 30 页6 2
22、.4.1 独立式按键结构 独立式按键是直接用 I/O 口线构成的单个按键电路,其特点是每个按键单独占用一 根 I/O 口线,每个按键的工作不会影响其它 I/O 口线的状态。独立式按键电路如图 2-3 所示。 图图 2-32-3 独立式按键电路独立式按键电路 独立式按键电路配置灵活,软件结构简单,但每个按键必须占用一根 I/O 口线, 因此,在按键较多时,I/O 口线浪费较大。 2.4.2 独立式按键的软件结构 独立式按键的软件常采用查询式结构。先逐位查询每根 I/O 口线的输入状态,如 某一根 I/O 口线输入为低电平,则可确认该 I/O 口线所对应的按键已按下,然后,再转 向该键的功能处理程
23、序。 2.5 USB 接口电源 USB+POWER 连接器可使外设直接通过 USB+POWER 接口实现从主机供电,无需 额外的电源连接。可用于库存管理、零售扫描、工业处理、游戏器件应用, USB+POWER 也可应用于 POS 器件,可作为外设,通常为扫描仪和主机之间的 I/O 设 备。 基于单片机数字时钟的设计与实现 第 7 页 共 30 页7 USB+POWER 连接器符合 USB2.0 标准,插座在电路板上安装,提供标准过孔安 装和板内安装。插头和插座根据工作电压的不同用颜色区分并对应吻合,以确保可靠 接触,工作电压提供 5V、12V 或 24V,允许标准 USB 电缆插头插入 USB
24、+POWER 插 座的 USB 口。 2.6 74HC595 驱动模块 74HC595 是具有 8 位移位寄存器和一个存储器,三态输出功能。移位寄存器和 存储器是分别的时钟。数据在 SHCP 的上升沿输入,在 STCP 的上升沿进入到存储寄 存器中去。如果两个时钟连在一起,则移位寄存器总是比存储寄存器早一个脉冲。移 位寄存器有一个串行移位输入(DS) ,和一个串行输出(Q7 ) ,和一个异步的低电平 复位(MR) ,存储寄存器有一个并行 8 位的,具备三态的总线输出,当使能 OE 时 (为低电平) ,存储寄存器的数据输出到总线。图 2-4。 如本设计采用 LPC2103 自带的硬件 SPI 接
25、口与 74HC595 进行数据传输。74HC595 将 LPC2103 发送过来的 8 位串行数据转换成 8 位并行数据,用以驱动数码管。 图图 2-42-4 74HC59574HC595 引脚图引脚图 2.7 DS1302 时钟实现模块 2.7.1 DS1302 简介 DS1302 是美国 DALLAS 公司推出的一种高性能、低功耗、带 RAM 的实时时钟电 路,它可以对年、月、日、周日、时、分、秒进行计时,具有闰年补偿功能,工作电 压为 2.5V5.5V。采用三线接口与 CPU 进行同步通信,并可采用突发方式一次传送 多个字节的时钟信号或 RAM 数据。DS1302 内部有一个 318 的
26、用于临时性存放数据的 RAM 寄存器。DS1302 是 DS1202 的升级产品,与 DS1202 兼容,但增加了主电源/后背 电源双电源引脚,同时提供了对后背电源进行涓细电流充电的能力。如图 2-5 DS1302 基于单片机数字时钟的设计与实现 第 8 页 共 30 页8 引脚图 图图 2 2- -5 5 D DS S1 13 30 02 2 引引脚脚图图 2.7.2 DS1302 与 CPU 的连接 实际上,在调试程序时可以不加电容器,只加一个 32.768kHz 的晶振即可。只是选 择晶振时,不同的晶振,误差也较大。另外,还可以在上面的电路中加入 DS18B20,同 时显示实时温度。只要
27、占用 CPU 一个口线即可。 LCD 还可以换成 LED,还可以使用北 京卫信杰科技发展有限公司生产的 10 位多功能 8 段液晶显示模块 LCM101,内含看门狗 (WDT)/时钟发生器及两种频率的蜂鸣器驱动电路,并有内置显示 RAM,可显示任意字段 笔划,具有 34 线串行接口,可与任何单片机、IC 接口。功耗低,显示状态时电流为 2A (典型值),省电模式时小于 1A,工作电压为 2.4V3.3V,显示清晰。 基于单片机数字时钟的设计与实现 第 9 页 共 30 页9 3 硬件实现及单元电路设计 3.1 主板电路的设计 数字时钟的主板电路设计只要是以单片机为核心,围绕 AVR 单片机展开
28、的一系列 连接,控制外部电路的使用。数字时钟的主板电路原理图(单片机 ATMEGA16 16) 图图 3-13-1 7474HC595595 驱动数码管显示的连接驱动数码管显示的连接 图图 3-23-2 LED 连接连接 图图 3-33-3 电源连接电源连接 图图 3-43-4 按键连接按键连接 基于单片机数字时钟的设计与实现 第 10 页 共 30 页10 图图 3-53-5 ATMEGA16 连接图连接图 图图 3-63-6 AVR 并口仿真电原理图并口仿真电原理图 基于单片机数字时钟的设计与实现 第 11 页 共 30 页11 3.2 外部电路的设计 主板电路控制设计的整个系统,那么如何
29、连接就变得十分重要,怎么连接才能连接 出我们所要的动作命令,在这次设计中我们没有添加多余的电路,但是可以根据不同 的要求,按照一定的连接原理扩展出很多功能。这里介绍一下,本设计外部电路的具 体连接。如图 3-1 电路连接图。 图图 3-73-7 电路连接图电路连接图 基于单片机数字时钟的设计与实现 第 12 页 共 30 页12 具体功能如下: COM1 与 MAX232 配合使用,其中 COM1 是与电脑连接的插口,而 COM1 接口 的电平和一般单片机的应用系统的信号电平不同,所以需要 MAX232 在两者之间进行 电平转换。 CN1 LCD 是夜晶显示瓶,RW1 用于调节显示屏的对比度
30、CN2 JTAG 用于系统仿真的接口。 CN3 ISP 下载接口插座, C 语言编程下载使用。 按键功能:S0 是用于调整和正常计时的转换功能,S1 调整数据转换分别显示年、 月、日、时、分、秒、周,S2 在调整状态下每按一下在自己范围内减 1,S3 在调整状 态下每按一下在自己范围内加 1,S4 显示内容反向转换,S5 显示内容正向转换,S6 保 存调整后的时间,S7 调整后启动正常计时,S8 复位键,S9 中断键。 74HC595 用于驱动数码管。 DS1302 是一种具有绢细电流充电能力的电路,主要特点是采用串性数据传输,可 为掉电保护电源提供可编程的充电功能,DS1302 有 12 个
31、积存器,其中有 7 个积存器 与日历、始终相关存放的数据为为 BCD 码,此外 DS1302 还有年份寄存器、控制寄存 器、充电寄存器。 基于单片机数字时钟的设计与实现 第 13 页 共 30 页13 4 软件设计 4.1 软件设计思路 从我们的控制结构的设计,首先,我们要设计设计数字时钟显示年、月、日、时 分、秒程序,采用的是 C 语言编写的。其次,我们要键盘程序,主要用于单片机 ATMEGA16 控制功能。最后是一些信息处理程序和单片机控制程序。 4.2 程序文件 #include iom16v.h #include macros.h #include ds1302_h.h #includ
32、e 74hc595_h.h /简化宏定义 #define uchar unsigned char #define uint unsigned int /全局变量定义 uchar timer8; /时钟数据 /共阳数码管0-9、A、B、C、D、E、-显示代码 Uchar Table16=0 xC0,0 xF9,0 xA4,0 xB0,0 x99,0 x92,0 x82,0 xF8,0 x80,0 x90,0 x88, 0 x83, 0 xc6,0 xa1,0 x86,0 xbf; /转换后的显示数据 uchar s4; /定义扫描计数器 uchar sel=0; /定义按键数据 uchar ke
33、y,k1; uint k2=0; uchar set_flag=0; /定义按键调整标志 uchar xs; /定义显示内容标志 /延时函数:入口 i,需要定时的时长 void delay(uint i) /在 1M 时钟下为 i ms uchar j; for(;i;i-) 基于单片机数字时钟的设计与实现 第 14 页 共 30 页14 for(j=220;j;j-) ; /向 1302 中写入时钟数据 void ds1302_write_time(void) ds1302_write(ds1302_control_add,0 x00); /关闭写保护 ds1302_write(ds1302
34、_sec_add,0 x80); /暂停 ds1302_write(ds1302_charger_add,0 xa9); /涓流充电 ds1302_write(ds1302_year_add,timer1); /年 ds1302_write(ds1302_month_add,timer2); /月 ds1302_write(ds1302_date_add,timer3); /日 ds1302_write(ds1302_day_add,timer7); /周 ds1302_write(ds1302_hr_add,timer4); /时 ds1302_write(ds1302_min_add,ti
35、mer5); /分 ds1302_write(ds1302_control_add,0 x80); /打开写保护 /从 1302 中读出当前时钟 void ds1302_read_time(void) timer1=ds1302_read(ds1302_year_add); /年 timer2=ds1302_read(ds1302_month_add); /月 timer3=ds1302_read(ds1302_date_add); /日 timer7=ds1302_read(ds1302_day_add); /周 timer4=ds1302_read(ds1302_hr_add); /时 t
36、imer5=ds1302_read(ds1302_min_add); /分 timer6=(ds1302_read(ds1302_sec_add) /秒 基于单片机数字时钟的设计与实现 第 15 页 共 30 页15 /显示数据转换函数 void Process(uchar i) s3=Table(timeri s2=Table(timeri /初始化显示数据,并将时分之间加小数点 s1=Table(timeri+1 s0=Table(timeri+1 /调整显示函数 void set_timer_xs(uchar m,uchar i) /入口:m 为调整的数据说明,i 为调整数据 s3=Ta
37、blem; s2=Table0 x0f; s1=Table(i4); s0=Table(i void add_timer(uchar b) /时钟调整加函数:入口 b 需要调整的时钟数据位置 switch(b) case 1: /年数据加 1 调整,范围 00-99 timer1+=0 x01; if(timer1 if(timer10 x99) timer1=0 x00; ;break; case 2: /月数据加 1 调整,范围 1-12 timer2+=0 x01; if(timer2=0 x13) timer2=0 x01; if(timer2 ;break; case 3: /日数据
38、加 1 调整,范围 1-30,暂未考虑 31 日 timer3+=0 x01; if(timer30 x30) timer3=0 x01; if(timer3 ;break; case 4: /时数据加 1 调整,范围 0-24 timer4+=0 x01; if(timer4=0 x24) timer4=0 x00; if(timer4 基于单片机数字时钟的设计与实现 第 17 页 共 30 页17 ;break; case 5: /分数据加 1 调整,范围 0-59 timer5+=0 x01; if(timer5 if(timer50 x59) timer5=0 x00; ;break;
39、 case 7: /星期数据加 1 调整,范围 1-7 timer7+=0 x01; if(timer70 x07) timer7=0 x01; ;break; default:;break; void dec_timer(uchar b) /时钟调整减函数:入口 b 需要调整的时钟数据位置 switch(b) case 1: /年数据减 1 调整,范围 00-99 timer1-=0 x01; if(timer1 基于单片机数字时钟的设计与实现 第 18 页 共 30 页18 if(timer10 x99)timer1=0 x99; ;break; case 2: /月数据减 1 调整,范围
40、 1-12 timer2-=0 x01; if(timer2=0 x00)timer2=0 x12; if(timer2 ;break; case 3: /日数据减 1 调整,范围 1-30,暂未考虑 31 日 timer3-=0 x01; if(timer3=0 x00)timer3=0 x30; if(timer3 ;break; case 4: /时数据减 1 调整,范围 0-24 timer4-=0 x01; if(timer40 x24)timer4=0 x23; if(timer4 ;break; 基于单片机数字时钟的设计与实现 第 19 页 共 30 页19 case 5: /分
41、数据减 1 调整,范围 0-59 timer5-=0 x01; if(timer5 if(timer50 x59)timer5=0 x59; ;break; case 7: /星期数据减 1 调整,范围 1-7 timer7-=0 x01; if(timer73)sel=0; 基于单片机数字时钟的设计与实现 第 22 页 共 30 页22 if(k2=0) set_flag=0; /清调整标志 TCCR1B = 0 x04; /启动定时器 1 else k2-; /* * 主函数 * */ void main(void) uchar a=1,b=0; DDRA=0 x00; /设置按键 A 口
42、为带上拉输入:接按键 PORTA=0 xFF; DDRC=255; /定义 C 口为输出 DDRB=255; /定义 B 口为输出 PORTB=255; DDRD=0 xFB; /定义 D 口为输出:PD2 为输入,中断按钮 PORTD=0 x04; /PD2 上拉 xs=4; /初始显示内容:时、分 SPI_MasterInit(); /初始化 SPI 接口 CLI(); /先关闭所有中断 timer0_init(); /设定定时器 0 timer1_init(); /设定定时器 1 MCUCR = 0 x00; 基于单片机数字时钟的设计与实现 第 23 页 共 30 页23 GICR =
43、0 x00; TIMSK = 0 x05; /允许定时器 0、定时器 1 中断 SEI(); /开总中断 while(1) if(rd_key()!=0) k1=rd_key(); delay(20); if(rd_key()=k1) key=rd_key(); switch(key) case 1: /调整和结束调整处理 if(set_flag=0) set_flag=1; a=1; k2=4000; TCCR1B = 0 x00; /停止定时器 1 set_timer_xs(1,timer1); /年数据调整显示 else set_flag=0; TCCR1B = 0 x04; /启动定时
44、器 基于单片机数字时钟的设计与实现 第 24 页 共 30 页24 ;break; case 2: /调整数据切换 if(set_flag=1) a+; if(a=6)a=7; if(a=8)a=1; set_timer_xs(a,timera); k2=4000; ;break; case 3: /数据减 1 调整 if(set_flag=1) dec_timer(a); set_timer_xs(a,timera); k2=4000; ;break; case 4: /数据加 1 调整 if(set_flag=1) add_timer(a); set_timer_xs(a,timera);
45、 k2=4000; ;break; 基于单片机数字时钟的设计与实现 第 25 页 共 30 页25 case 5: /显示内容转换减 if(set_flag!=1) xs-; if(xs=0)xs=6; ;break; case 6: /显示内容转换加 if(set_flag!=1) xs+; if(xs=7)xs=1; ;break; case 7: /写入调整后的时钟并暂停 if(set_flag=1) ds1302_write_time(); /写入调整后的时钟并暂停 set_flag=0; TCCR1B = 0 x04; /启动定时器 b=1; ;break; case 8: /启动时钟 if(b=1) 基于单片机数字时钟的设计与实现 第 26 页 共 30 页26 start_ds1302(); b=0; ;break; default:;break; while(rd_key()!=0) delay(20); 基于单片机数字时钟的设计与实现 第 27 页 共 30 页27 5 系统调试 5.1 硬件调试 主要检查了电路板有无虚焊、短路、连线是否正常,尤其是单片机的各使能端的 接线,I/O 接口连线是否有误。由于我们采用了四个数码管并联接入 P2 口的段选端, 因此接线较多,经常容易出现管脚间短路现象。这是硬件设计
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2026年泰格医药临床监查员面试指南与常见问题库
- 2026年草原承包经营权确权登记实务竞赛题库
- 2026年机构编制实名制管理题库
- 2026年石油库应急预案编制题库
- 2026年网络安全法及网络运营者安全保护义务个人信息保护题库
- 2026年邮政业标准化知识测试题
- 2026年初中化学奥林匹克竞赛辅导方案
- 保险法治创建实施方案
- 精神家园建设活动方案
- 好书推介实施方案
- 燃油消耗量管理办法
- 学生体质健康提升培训
- CJ/T 300-2013建筑给水水锤吸纳器
- 《思想道德与法治》课件-第三章 继承优良传统 弘扬中国精神
- 九年级内能与机械能复习市公开课一等奖省赛课获奖课件
- 净化车间施工合同7篇
- 2024年山东省潍坊市中考生物试卷
- DL∕T 657-2015 火力发电厂模拟量控制系统验收测试规程
- 北京语言大学孔子学院专职教师遴选公开引进高层次人才和急需紧缺人才笔试参考题库(共500题)答案详解版
- 中医药防治糖尿病讲座总结
- 架空配电线路及设备运行规程
评论
0/150
提交评论