1、XX 大学毕业设计(论文)(2012 届)题 目: 基于单片机的简易计算器 专业名称: 电子信息工程技术 姓 名: 学 号: 班 级: 08 级通信与信息技术班 指导教师: 2012 年 11 月 30 日摘要摘要 近几年单片机技术的发展很快,其中电子产品的更新速度迅猛。计算器是日常生活中比较的常见的电子产品之一。如何才能使计算器技术更加的成熟,充分利用已有的软件和硬件条件,设计出更出色的计算器呢。本设计是以 STC89C51 单片机为核心的计算器模拟系统设计,输入采用 44 矩阵键盘,可以进行加、减、乘、除 4 位带符号数字运算,并在 LCD1602 上显示操作过程。科技的进步告别了以前复杂
2、的模拟电路,一块几厘米平方的单片机可以省去很多繁琐的电路。现在应用较广泛的是科学计算器,与我们日常所用的简单计算器有较大差别,除了能进行加减乘除,科学计算器还可以进行正数的四则运算和乘方、开方运算,具有指数、对数、三角函数、反三角函数及存储等计算功能。计算器的未来是小型化和轻便化,现在市面上出现的使用太阳能电池的计算器,使用 ASIC 设计的计算器 ,如使用纯软件实现的计算器等,未来的智能化计算器将是我们的发展方向,更希望成为应用广泛的计算工具。关键词 STC89C51 LCD1602 计算器 矩阵键盘目录第一章 前言 .11.1 系统开发背景 .11.2 系统开发意义 .11.3 设计目的
3、.1第二章 方案论证 .22.1 方案构思 .22.2 方案比较与选择 .2第三章 系统硬件设计及说明 .33.1 系统组成及总体框图 .33.2 元件简介 .33.2.1 STC89C51 特点 .33.2.2 LCD1602 液晶显示屏 .12第四章 设计原理分析 .154.1 设计方案的确定 .154.2 计算器硬件方案及硬件资源分配 .154.2.1 硬件资源分配 .154.2.2 系统的硬件设计 .154.2.3 键盘电路的设计 .174.2.4 显示电路的设计 .18第五章 计算器的软件设计 .195.1 计算器的软件规划 .195.2 键盘扫描的程序设计 .195.3 显示模块的
4、程序设计 .195.4 主程序的设计 .205.5 软件的可靠性设计 .20结束语 .22致谢 .23参考文献 .24附录 .25附录一:硬件实物图 .25附录二:系统程序清单 .260第一章 前言1.1 系统开发背景随着社会的发展,科学的进步,人们的生活水平在逐步的提高,尤其是微电子技术的发展,犹如雨后春笋般的变化。电子产品的更新速度快就不足惊奇了。计算器在人们的日常中是比较的常见的电子产品之一。如何使计算器技术更加的成熟,充分利用已有的软件和硬件条件,设计出更出色的计算器,使其更好的为各个行业服务,成了如今电子领域重要的研究课题。1.2 系统开发意义今天,人们的日常生活中已经离不开计算器了
5、,社会的各个角落都有它的身影,比如商店,办公室,学校。因此设计一款简单实用的计算器会有很大的实际意义。1.3 设计目的本设计旨在进一步掌握单片机理论知识,理解嵌入式单片机系统的硬软件设计,加强对实际应用系统设计的能力。通过本设计的学习,使我掌握单片机程序设计和微机接口应用的基本方法,并能综合运用本科阶段所学软、硬件知识分析实际问题,提高解决毕业设计实际问题的能力,为单片机应用和开发打下良好的基础。1、对字符液晶显示模块的工作原理,如初始化、清屏、显示、调用及外特性有较清楚的认识,并会使用 LCD(液晶显示模块)实现计算结果的显示;掌握液晶显示模块的驱动和编程,设计LCD 和单片机的接口电路,以
6、及利用单片机对液晶模块的驱动和操作; 2、在充分分析内部逻辑的概念,进行软件和调试,学会使用,并能够以其为平台设计出具有四则运算能力简易计算器的硬件电路和软件程序。1第二章 方案论证2.1 方案构思本设计可以采用两种方案,一种是以 FPGA 为核心处理芯片,配备相应的外设;另外一种是以 STC89C51 处理器,配备相应的外设。1、方案一:采用 FPGA 控制FPGA 是一种高密度的可编程逻辑器件,自从 Xilinx 公司 1985 年推出第一片 FPGA 以来,FPGA 的集成密度和性能提高很快,其集成密度最高达 500 万门/片以上,系统性能可达 200MHz。由于 FPGA 器件集成度高
7、,方便易用,开发和上市周期短,在数字设计和电子生产中得到迅速普及和应用,并一度在高密度的可编程逻辑器件领域中独占鳌头。但是而基于 SRAM 编程的 FPGA,其编程信息需存放在外部存储器上 ,需外部存储器芯片 ,且使用方法复杂 ,保密性差,而其对于一个简单的计算器而言,实用 FPGA 有点大材小用,成本太高。2、方案二:采用 STC89C51单片机是单片微型机的简称,故又称为微控制器 MCU(Micro Control Unit) 。通常由单块集成电路芯片组成,内部包含有计算机的基本功能部件:中央处理器 CPU,存储器和 I/O 接口电路等。因此,单片机只要和适当的软件及外部设备相结合,便可成
8、为一个单片机控制系统。单片机广泛用于智能产品,智能仪表,测控技术,智能接口等,具有操作简单,实用方便,价格便宜等优点,而其中 STC89C51 以 MCS-51 为内核,是单片机中最典型的代表,应用于各种控制领域。2.2 方案比较与选择通过以上两种方案论证和比较,从设计的实用性,方便性和成本出发,选择了以 STC89C51单片机作为中央处理单元进行计算器的设计,这样设计能够实现对四位加减乘除和除法四位小点数的运算。2第三章 系统硬件设计及说明 3.1 系统组成及总体框图图 3.1 系统组成及总体框图3.2 元件简介 3.2.1 STC89C51 特点图 3.2.1-1 单片机 STC89C51
9、STC89C51主控制模 块电源模块LCD 液晶显示屏模块4X4 键盘模块31、主要性能: (1) 8051 CPU 与 MCS-51 兼 容 8K 字 节 可 编 程 FLASH 存 储 器 (寿 命 : 1000 写 /擦 循 环 ) 全 静 态 工 作 : 0Hz-33MHz 三 级 加 密 程 序 存 储 器 128*8 位 内 部 RAM 32 条 可 编 程 I/O 线 三 个 16 位 定 时 器 /计 数 器 八 个 中 断 源 全 双 工 UART 串 行 通 道 低 功 耗 的 闲 置 和 掉 电 模 式 掉 电 后 中 断 可 唤 醒 看 门 狗 定 时 器 双 数 据
10、指 针 掉 电 标 识 符 片 内 振 荡 器 和 时 钟 电 路 (2) 管 脚 说 明 : VCC: 供 电 电 压 。 GND: 接 地 。2、 STC89C51 的 功 能 特 性 描 述STC89C51 是 一 种 低 功 耗 、 高 性 能 CMOS8 位 微 控 制 器 , 具 有 8K 在 系 统 可 编 程 Flash 存 储 器 。 使 用 Atmel 公 司 高 密 度 非 易 失 性 存 储 器 技 术 制 造 , 与 工 业 80C51 产 品 指 令 和引 脚 完 全 兼 容 。 片 上 Flash 允 许 程 序 存 储 器 在 系 统 可 编 程 , 亦 适 于
11、 常 规 编 程 器 。 在 单芯 片 上 , 拥 有 灵 巧 的 8 位 CPU 和 在 系 统 可 编 程 Flash, 使 得 STC89C51 为 众 多 嵌 入 式 控制 应 用 系 统 提 供 高 灵 活 、 超 有 效 的 解 决 方 案 。STC89C51 具 有 以 下 标 准 功 能 : 8k 字 节 Flash, 256 字 节 RAM, 32 位 I/O 口 线 , 看门 狗 定 时 器 , 2 个 数 据 指 针 , 三 个 16 位 定 时 器 /计 数 器 , 一 个 6 向 量 2 级 中 断 结 构 , 全双 工 串 行 口 , 片 内 晶 振 及 时 钟 电
12、 路 。此 外 , STC89C51 可 降 至 0Hz 静 态 逻 辑 操 作 , 支 持 2 种 软 件 可 选 择 节 电 模 式 。 空 闲模 式 下 , CPU 停 止 工 作 , 允 许 RAM、 定 时 器 /计 数 器 、 串 口 、 中 断 继 续 工 作 。 掉 电 保 护 方式 下 , RAM 内 容 被 保 存 , 振 荡 器 被 冻 结 , 单 片 机 一 切 工 作 停 止 , 直 到 下 一 个 中 断 或 硬 件 复4位 为 止 。 8 位 微 控 制 器 8K 字 节 在 系 统 可 编 程 Flash。 同 时 该 芯 片 还 具 有 PDIP、 TQFP和
13、 PLCC 等 三 种 封 装 形 式 , 以 适 应 不 同 产 品 的 需 求 。3、STC89C51 引脚功能STC89C51 单片机为 40 引脚芯片见图 3.2.1-2。图3.2.1-2 STC89C51引脚图(1)口线:P0、P1、P2、P3 共四个八位口。P0 口 : P0 口 是 一 个 8 位 漏 极 开 路 的 双 向 I/O 口 。 作 为 输 出 口 , 每 位 能 驱 动 8 个 TTL逻 辑 电 平 。 对 P0 端 口 写 “1”时 , 引 脚 用 作 高 阻 抗 输 入 。 当 访 问 外 部 程 序 和 数 据 存 储 器 时 , P0 口 也 被 作 为 低
14、 8 位 地 址 /数 据 复 用 。 在 这 种 模 式下 , P0 不 具 有 内 部 上 拉 电 阻 。 在 flash 编 程 时 , P0 口 也 用 来 接 收 指 令 字 节 ; 在 程 序 校 验 时 , 输 出 指 令 字 节 。 程 序 校验 时 , 需 要 外 部 上 拉 电 阻 。 P1 口 : P1 口 是 一 个 具 有 内 部 上 拉 电 阻 的 8 位 双 向 I/O 口 , p1 输 出 缓 冲 器 能 驱 动 4 个 TTL 逻 辑 电 平 。 对 P1 端 口 写 “1”时 , 内 部 上 拉 电 阻 把 端 口 拉 高 , 此 时 可 以 作 为 输 入
15、口 使 用 。 作 为 输 入 使 用 时 , 被 外 部 拉 低 的 引 脚 由 于 内 部 电 阻 的 原 因 , 将 输 出 电 流 ( IIL) 。5此 外 , P1.0 和 P1.1 分 别 作 定 时 器 /计 数 器 2 的 外 部 计 数 输 入 ( P1.0/T2) 和 定 时 器 /计 数 器 2 的 触 发 输 入 ( P1.1/T2EX) , 具 体 如 下 表 所 示 。 在 flash 编 程 和 校 验 时 , P1 口 接 收 低 8 位 地 址 字 节 。 引 脚 号 第 二 功 能 : P1.0 T2( 定 时 器 /计 数 器 T2 的 外 部 计 数 输
16、 入 ) , 时 钟 输 出 P1.1 T2EX( 定 时 器 /计 数 器 T2 的 捕 捉 /重 载 触 发 信 号 和 方 向 控 制 ) P1.5 MOSI( 在 系 统 编 程 用 ) P1.6 MISO( 在 系 统 编 程 用 ) P1.7 SCK( 在 系 统 编 程 用 )P2 口 : P2 口 是 一 个 具 有 内 部 上 拉 电 阻 的 8 位 双 向 I/O 口 , P2 输 出 缓 冲 器 能 驱 动 4 个 TTL 逻 辑 电 平 。 对 P2 端 口 写 “1”时 , 内 部 上 拉 电 阻 把 端 口 拉 高 , 此 时 可 以 作 为 输 入口 使 用 。
17、作 为 输 入 使 用 时 , 被 外 部 拉 低 的 引 脚 由 于 内 部 电 阻 的 原 因 , 将 输 出 电 流 ( IIL) 。在 访 问 外 部 程 序 存 储 器 或 用 16 位 地 址 读 取 外 部 数 据 存 储 器 ( 例 如 执 行 MOVX DPTR) 时 , P2 口 送 出 高 八 位 地 址 。 在 这 种 应 用 中 , P2 口 使 用 很 强 的 内 部 上 拉 发 送 1。在 使 用 8 位 地 址 ( 如 MOVX RI) 访 问 外 部 数 据 存 储 器 时 , P2 口 输 出 P2 锁 存 器 的 内 容 。在 flash 编 程 和 校
18、验 时 , P2 口 也 接 收 高 8 位 地 址 字 节 和 一 些 控 制 信 号 。 P3 口 : P3 口 是 一 个 具 有 内 部 上 拉 电 阻 的 8 位 双 向 I/O 口 , p3 输 出 缓 冲 器 能 驱 动4 个 TTL 逻 辑 电 平 。 对 P3 端 口 写 “1”时 , 内 部 上 拉 电 阻 把 端 口 拉 高 , 此 时 可 以 作 为 输入 口 使 用 。 作 为 输 入 使 用 时 , 被 外 部 拉 低 的 引 脚 由 于 内 部 电 阻 的 原 因 , 将 输 出 电 流( IIL) 。 P3 口 亦 作 为 STC89C51 特 殊 功 能 (
19、第 二 功 能 ) 使 用 , 如 表 3.2.1 所 示 。 表 3.2.1 P3 口管脚 备选功能:端口引脚 第二功能P3.0 RXD(串行输入口)P3.1 TXD(串行输出口)P3.2 /INT0(外部中断 0)P3.3 /INT1(外部中断 1)6P3.4 T0(记时器 0 外部输入)P3.5 T1(记时器 1 外部输入)P3.6 /WR(外部数据存储器写选通)P3.7 /RD(外部数据存储器读选通)在 flash 编 程 和 校 验 时 , P3 口 也 接 收 一 些 控 制 信 号 。 此 外 , P3 口 还 接 收 一 些 用 于 FLASH 闪 存 编 程 和 程 序 校
20、验 的 控 制 信 号 。 (2)其他引脚说明:RST: 复 位 输 入 。 晶振工作时,RST 脚持续 2 个机器周期高电平将使单片机复位。看门狗计时完成后,RST 脚输出 96 个晶振周期的高电平。特殊寄存器 AUXR(地址 8EH)上的 DISRTO 位可以使此功能无效。DISRTO 默认状态下,复位高电平有效。 ALE/PROG当 访 问 外 部 程 序 存 储 器 或 数 据 存 储 器 时 , ALE( 地 址 锁 存 允 许 ) 输 出 脉冲 用 于 锁 存 地 址 的 低 8 位 字 节 。 一 般 情 况 下 , ALE 仍 以 时 钟 振 荡 频 率 的 1/6 输 出 固
21、 定 的 脉冲 信 号 , 因 此 它 可 对 外 输 出 时 钟 或 用 于 定 时 目 的 。 要 注 意 的 是 : 每 当 访 问 外 部 数 据 存 储 器 时将 跳 过 一 个 ALE 脉 冲 。 对 FLASH 存 储 器 编 程 期 间 , 该 引 脚 还 用 于 输 入 编 程 脉 冲 ( PROG) 。 如 有 必 要 , 可 通 过 对 特 殊 功 能 寄 存 器 ( SFR) 区 中 的 8EH 单 元 的 D0 位 置 位 , 可 禁 止ALE 操 作 。 该 位 置 位 后 , 只 有 一 条 MOVX 和 MOVC 指 令 才 能 将 ALE 激 活 。 此 外
22、, 该 引 脚 会 被微 弱 拉 高 , 单 片 机 执 行 外 部 程 序 时 , 应 设 置 ALE 禁 止 位 无 效 。 PSEN程 序 储 存 允 许 ( PSEN) 输 出 是 外 部 程 序 存 储 器 的 读 选 通 信 号 , 当 STC89C51由 外 部 程 序 存 储 器 取 指 令 ( 或 数 据 ) 时 , 每 个 机 器 周 期 两 次 PSEN 有 效 , 即 输 出 两 个 脉 冲 ,在 此 期 间 , 当 访 问 外 部 数 据 存 储 器 , 将 跳 过 两 次 PSEN 信 号 。 EA/VPP外 部 访 问 允 许 , 欲 使 CPU 仅 访 问 外 部 程 序 存 储 器 ( 地 址 为 0000H-FFFFH) ,EA 端 必 须 保 持 低 电 平 ( 接 地 ) 。 需 注 意 的 是 : 如 果 加 密 位 LB1 被 编 程 , 复 位 时 内 部 会 锁存 EA 端 状 态 。 如 EA 端 为 高 电 平 ( 接 Vcc 端 ) , CPU 则 执 行 内 部 程 序 存 储 器 的 指 令 。 FLASH 存 储 器 编 程 时 , 该 引 脚 加 上 +12V 的 编 程 允 许 电 源 Vpp, 当 然 这 必 须 是 该 器 件 是使 用 12V 编 程 电 压 Vpp。