1、 单片机系统课程设计报告单片机系统课程设计报告 专 业: 学 生 姓 名: 学 号: 指 导 教 师: 完成日期:2012 年 1 月 5 日 1 设计任务设计任务 1.1 设计任务设计任务 多功能电子时钟设计 1.2 基本要求基本要求 1、准确计时,以数字形式显示时、分、秒的时间。 2、小时以 24 小时计时形式,分秒计时为 60 进位。 3、校正时间功能,即能随意设定走时时间。 4、闹钟功能,一旦走时到该时间,能以声或光的形式告警提示。(未实现) 2 设计方案设计方案 2.1 任务分析任务分析 本次设计时钟电路, 使用了 ATC89C51 单片机芯片控制电路, 单片机控制电路简 单且省去了
2、很多复杂的线路,使得电路简明易懂,使用键盘键上的按键来调整时 钟的时、分、秒,用一扬声器来进行定时提醒,同时使用汇编语言程序来控制整 个时钟显示,使得编程变得更容易,这样通过四个模块:键盘、芯片、扬声器、 LED 显示即可满足设计要求。 2.2 方案设计方案设计 1.硬件方案 (1).计时方案 使用单片机内部的可编程定时器。 利用单片机内部的定时计数器进行中端定时,配合软件延时实现时、分、秒的计 时。该方案节省硬件成本,但程序设计较为复杂。 (2).显示方案 对于实时时钟而言,显示显然是另一个重要的环节。通常 LED 显示有两种方式: 动态显示和静态显示。 静态显示的优点是程序简单、显示亮度有
3、保证、单片机 CPU 的开销小,节约 CP U 的工作时间。但占有 I/O 口线多,每一个 LED 都要占有一个 I/O 口,硬件开销 大,电路复杂。需要几个 LED 就必须占有几个并行口,比较适用于 LED 数量较 少的场合。当然当 LED 数量较多的时候,可以使用单片机的串行口通过移位寄 存器的方式加以解决,但程序编写比较麻烦。 LED 动态显示硬件连接简单, 但动态扫描的显示方式需要占有 CPU 较多的时间, 在单片机没有太多实时测控任务的情况下可以采用。 本系统需要采用 6 位 LED 数码管来分别显示时、分、秒,因数码管个数较多, 故本系统选择动态显示方式 2. 软件方案 利用单片机
4、自带的 Keil uvision2 软件编程, 在用 STC_ISP 进行程序烧写下载到 单片机里。 3 系统硬件设计系统硬件设计 STC89C52STC89C52 单片机介绍单片机介绍 STC89C52 单片机是由深圳宏晶公司代理销售的一款 MCU, 是由美国设计生产 的一种低电压、 高性能 CMOS 8 位单片机, 片内含 8kbytes 的可反复写的 FlashROM 和 256bytes 的 RAM,2 个 16 位定时计数器 5。 STC89C52 单片机内部主要包括累加器 ACC(有时也简称为 A)、程序状态字 PSW、地址指示器 DPTR、只读存储器 ROM、随机存取存储器 RA
5、M、寄存器、并行 I/O 接口 P0P3、定时器/计数器、串行 I/O 接口以及定时控制逻辑电路等。这些 部件通过内部总线联接起来,构成一个完整的微型计算机。其管脚图如图所示。 STC89C52单片机管脚结构图 各个端口对照朱照优老师编写的单片机原理与应用 4 系统软件设计系统软件设计 根据上述电子时钟的工作流程,软件设计可分为以下几个功能模块: (1)主程序模块。主程序主要用于系统初始化:设置计时缓冲区的位置及 初值,设置 8155 的工作方式、定时器的工作方式和计数初值等参数。主程序流 程如下图所示。 开始 定义堆栈区 8155、T0、数据缓冲区、标志位初始化 调用键盘扫描程序 否 是 C
6、/R 键? 是 地址指针指向计时缓冲区 调用时间设置程序 主程序流程图主程序流程图 (2)计时模块。即定时器 0 中断子程序,完成刷新计时缓冲区的功能。 系统使用 6MHz 的晶振,假设定时器 0 工作在方式 1,则定时器的最大定时 时间为 65.536ms,这个值远远小于 1s。因此本系统采用定时器与软件循环相结 合的定时方法。设定时器 0 工作在方式 1,每隔 50ms 溢出中断一次,则循环中 断 20 次延时时间是 1s,上述过程重复 60 次为 1 分,分计时 60 次为 1 小时,小 时计时 24 次则时间重新回到 00:00:00。 因定时器 0 工作在方式 1,则 50ms 定时对应的定时器初值为:65536 50ms/2us=40536=9E58H,即 TH0=9EH,TH0=58H。 但应当指出:CPU 从响应 T0 中断到完成定时器初值重装这段时间,定时器 T0 并不停止工作,而是继续计数。因此,为了确保 T0 能准确定时