1、目目 录录 1.设计要求 2 2.设计方案 2 2.1 设计方案的选择 . 2 2.1.1 计时方案. 2 2.1.2 显示方案. 2 2.2 硬件部分 2 3.系统模块 3 4.设计流程图 4 5.心得及体会 6 参考文献 7 程序 8 1.1.设计要求设计要求 (1)基本功能:设计一个时钟电路,能显示年月日和时分秒;通过功能键完 成年月日时分秒的切换与对时功能; (2)附加功能:添加秒表功能,能通过键盘进行时间和秒表功能切换。 2.2.设计方案设计方案 本次设计时钟电路,使用了 ATC89C51 单片机芯片控制电路,单片机控制电 路简单且省去了很多复杂的线路,使得电路简明易懂,使用键盘键上
2、的按键来调 整时钟的时、分、秒,用一扬声器来进行定时提醒,同时使用汇编语言程序来控 制整个时钟显示,使得编程变得更容易,这样通过四个模块:键盘、ATC89C51 单片机芯片芯片、扬声器、LED 数码管显示即可满足设计要求。 2.1 设计方案的选择 2.1.1 计时方案 使用单片机内部的可编程定时器。 利用单片机内部的定时计数器进行中端定时,配合软件延时实现时、分、秒的计 时。该方案节省硬件成本,但程序设计较为复杂。 2.1.2 显示方案 对于实时时钟而言,显示显然是另一个重要的环节。通常 LED 显示有两种方 式:动态显示和静态显示。 静态显示的优点是程序简单、显示亮度有保证、单片机 CPU
3、的开销小,节约 CPU 的工作时间。 但占有 I/O 口线多, 每一个 LED 都要占有一个 I/O 口, 硬件开销大, 电路复杂。需要几个 LED 就必须占有几个并行口,比较适用于 LED 数量较少的场 合。当然当 LED 数量较多的时候,可以使用单片机的串行口通过移位寄存器的方 式加以解决,但程序编写比较麻烦。 LED 动态显示硬件连接简单,但动态扫描的显示方式需要占有 CPU 较多的时间, 在单片机没有太多实时测控任务的情况下可以采用。 本系统需要采用 4 位 LED 数码管来分别显示时、分、秒,因数码管个数较少,故 本系统选择动态显示方式。 2.2 硬件部分 AT89C51 是一种带
4、4K 字节闪烁可编程可擦除只读存储器(FPEROMFalsh Programmable and Erasable Read Only Memory)的低电压,高性能 CMOS8 位微 处理器,俗称单片机。该器件采用 ATMEL 高密度非易失存储器制造技术制造,与 工业标准的 MCS-51 指令集和输出管脚相兼容。由于将多功能 8 位 CPU 和闪烁存 储器组合在单个芯片中,ATMEL 的 AT89C51 是一种高效微控制器,为很多嵌入式 控制系统提供了一种灵活性高且价廉的方案 3.3.系统模块系统模块 根据上述电子时钟的工作流程,软件设计可分为以下几个功能模块: 单片机最小系统模块:包括低功耗
5、、高性能 CMOS8 位微控制器 AT89C51;本 模块以 AT89C51 为系统控制核心, 系统复位有复位电路完成, 内部有一个高增益、 反相放大器,输出引脚为 XTAL1,输入引脚为 XTAL2。通过这两个引脚在芯片外 接石英晶体振荡器和电容,构成稳定的自激振荡器。 输入输出模块:本模块有 5 个按键,一个开关和一个复位键;单片机运行 期间利用按键完成操作;S2 控制电子钟的启动和调整状态,S3 为加 1 键,S4 为 减 1 键;3 个键任意一个都独自连到一个 I/O 口,他们可以独立的实现相应的电 子钟功能。电子钟可以显示 4 位数字,所以利用四个数码管作为显示窗口,显示 年、月、日
6、、时、分、秒等 主程序模块:主程序主要用于系统初始化:设置计时缓冲区的位置及初值, 设置外部中断的工作方式、定时器的工作方式和计数初值、入口地址等参数。 计时模块:即定时器 0 中断子程序,完成刷新计时缓冲区的功能。 系统使用 12MHz 的晶振,假设定时器 0 工作在方式 1,则定时器的最大定时时间 为 4.0ms,这个值远远小于 1s。因此本系统采用定时器与软件循环相结合的定时 方法。设定时器 0 工作在方式 1,每隔 4.0ms 溢出中断一次,则循环中断 250 次 延时时间是 1s,上述过程重复 60 次为 1 分,分计时 60 次为 1 小时,小时计时 24 次则时间重新回到 00:00:00。因定时器 0 工作在方式 1,则 4ms 定时对应 的定时器初值为:655364ms/2us=0F05FH,即 TH0=0F0H,TL0=5FH。但应当指 出:CPU 从响应 T0 中断到完成定时器初值重装这段时间,定时器 T0 并不停止工 作,而是继续计数。因此,为了确保 T0 能准确定时 4ms,重装的定时器初值必 须加以修正, 修