




已阅读5页,还剩47页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1 52 目录目录 1 1 课程设计目的课程设计目的 1 1 2 2 系统方案设计及确定系统方案设计及确定 2 2 2 1 方案的提出 2 2 2 方案的论证及确定 2 2 2 1 单片机简介及选择 2 2 2 2 键盘电路的简介及选择 4 2 2 3 LED 数码管的简介及选择 5 3 3 系统的硬件设计系统的硬件设计 7 7 3 1 AT89S51 最小系统设计 7 3 1 1 时钟电路硬件设计 7 3 1 2 复位电路硬件设计 7 3 2 键盘电路硬件设计 9 3 3 显示电路硬件设计 9 3 4 蜂鸣器电路硬件设计 10 4 4 系统软件设计系统软件设计 1111 4 1 系统主程序设计 11 4 1 1 系统软件设计内存分配及芯片地址介绍 11 4 1 2 系统主程序流程图 11 4 2 定时器的设计 12 4 3 整点报时 14 5 5 系统调试系统调试 1515 5 1 调试步骤 15 5 2 调试过程中的问题及解决方法 22 2 52 6 6 总结总结 2323 7 7 参考文献参考文献 2424 附录附录 2525 附录一 程序清单 25 附录二 系统硬件原理图及 PCB 图 46 1 52 1 1 课程设计目的课程设计目的 单片机体积小 成本低 嵌入到工业控制单元 机器人 智能仪器仪表 汽车电子系统 武器系统 家用电器 办公自动化设备 金融电子系统 玩具 个人信息终端及通讯产品中 单片机是计算机技术发展史上的一个重要里程碑 标志着计算机正式形成了通用计算机系统和嵌入式计算机系统两大分支 单片 机是集成电路技术与微型计算机技术高速发展的产物 体积小 价格低 应用 方便 稳定可靠 因此 给工业自动化等领域带来了一场重大革命和技术进步 由于体积小 很容易地嵌入到系统之中 以实现各种方式的检测 计算或 控制 这一点 一般微机根本做不到 由于单片机本身就是一个微型计算机 因此只要在单片机的外部适当增加 一些必要的外围扩展电路 就可以灵活地构成各种应用系统 如工业自动检测 监视系统 数据采集系统 自动控制系统 智能仪器仪表等 从工业自动化 自动控制 智能仪器仪表 消费类电子产品等方面 直到 国防尖端技术领域 单片机都发挥着十分重要的作用 所以单片机的课程设计 是十分必要的 灵活运用单片机的基础知识 依据课程设计内容 能够完成从硬件电路图 设计 到 PCB 制版 再到软件编程及系统调试实现系统功能 完成课程设计 加深对单片机基础知识的理解 并灵活运用 将各门知识综合应用 能够上网查询器件资料 培养对新知识新技术的独立的学习能力和应用能 力 独立完成一个小的系统设计 从硬件设计到软件设计 增强分析问题 解 决问题的能力 为日后的毕业设计及科研工作奠定良好的基础 2 52 2 2 系统方案设计及确定系统方案设计及确定 2 12 1 方案的提出方案的提出 用单片机及 6 位 LED 数码管显示时 分 秒 以 24 小 时计时方式运行 能 整点提醒 短蜂鸣 次数代表整点时间 使用按键开关可实现时 分调整 秒 表 或闹钟 时钟功能转换 以及实现省电 关闭显示 功能 系统框图如下 图 单 片 机 时钟电路 复位电路 键盘电路 显示电路 蜂鸣器电路 2 22 2 方案的论证及确定方案的论证及确定 2 2 12 2 1 单片机简介及选择单片机简介及选择 单片机是集成电路技术与微型计算机技术高速发展的产物 体积小 价格 低 应用方便 稳定可靠 因此 给工业自动化等领域带来了一场重大革命和 技术进步 由于体积小 很容易地嵌入到系统之中 以实现各种方式的检测 计算或控制 这一点 一般微机根本做不到 由于单片机本身就是一个微型计 算机 因此只要在单片机的外部适当增加一些必要的外围扩展电路 就可以灵 活地构成各种应用系统 如工业自动检测监视系统 数据采集系统 自动控制 3 52 系统 智能仪器仪表等 20 世纪 80 年代以来 发展迅速 世界一些著名厂商 投放市场的产品就有几十个系列 数百个品种 Intel 公司的 MCS 48 MCS 51 Motorola 公司的 6801 6802 Zilog 公司的 Z8 系列 Rockwell 公司的 6501 6502 等 此外 荷兰的 Philips 公司 日本的 NEC 公司 日立公司等也 相继推出了各自的产品 尽管机型很多 但是在 20 世纪 80 年代以及 90 年代 在我国使用最多的 8 位单片机还是 Intel 公司的 MCS 51 系列单片机以及与其兼 容的单片机 称为 51 系列单片机 MCS 51 系列单片机主要包括 基本型 8031 8051 8751 低功耗型 80C31 80C51 87C51 增强型 8032 8052 8752 已为我国广大技术人员所熟悉和掌握 在上世纪 80 年代和 90 年代 MCS 51 系列是在我国应用最为广泛的单片机机型之一 1 基本型 典型产品 8031 8051 8751 8031 内部包括 1 个 8 位 CPU 128B RAM 21 个特殊功能寄存器 SFR 4 个 8 位并行 I O 口 1 个全双工串行口 2 个 16 位定时器 计数器 5 个中断源 但片内无程序存储器 需外扩程序存储器芯片 8051 是在 8031 的基础上 片内又集成有 4KB ROM 作为程序存储器 所以 8051 是一个程序不超过 4KB 的小系统 ROM 内的程序是公司制作芯片时 代为 用户烧制的 8751 与 8051 相比 片内集成的 4KB EPROM 取代了 8051 的 4KB ROM 来作为 程序存储器 2 增强型 Intel 公司在基本型基础上 推出增强型 52 子系列 典型产品 8032 8052 8752 内部 RAM 增到 256B 8052 片内程序存储器扩展到 8KB 16 位定时器 计数器增至 3 个 6 个中断源 串行口通信速率提高 5 倍 表 2 1 列出了基本型和增强型的 MCS 51 系列单片机片内的基本硬件资源 4 52 表 2 1MCS 51 系列单片机片内的基本硬件资源 与 MCS 51 系列的 87C51 单片机相比 AT89C51 AT89S51 单片机片内的 4KB Flash 存储器取代了 87C51 片内的 4KB EPROM AT89S51 片内的 Flash 存储器可 在线编程或使用编程器重复编程 且价格较低 因此 AT89C51 AT89S51 单片机作为代表性产品受到用户欢迎 AT89C5x AT89S5x 单片机是目前取代 MCS 51 系列单片机的主流芯片之一 本书重点介绍 AT89S51 单片机的原理及应用系统设计 AT89S5x 的 S 档系列机型是 ATMEL 公司继 AT89C5x 系列之后推出的新机 型 代表性产品为 AT89S51 和 AT89S52 基本型的 AT89C51 与 AT89S51 以及增 强型的 AT89C52 与 AT89S52 的硬件结构和指令系统完全相同 使用 AT89C51 的 系统 在保留原来软硬件的条件下 完全可以用 AT89S51 直接代换 与 AT89C5x 系列相比 AT89S5x 系列的时钟频率以及运算速度有了较大的提高 例如 AT89S51 工作频率的上限为 24MHz 而 AT89S51 则为 33MHz AT89S51 片 内集成有双数据指针 DPTR 看门狗定时器 具有低功耗空闲工作方式和掉电工 作方式 目前 AT89S5x 系列已逐渐取代 AT89C5x 系列 此次设计使用的是 AT89S51 2 2 22 2 2 键盘电路的简介及选择键盘电路的简介及选择 键盘具有向单片机输入数据 命令等功能 是人与单片机对话的主要手段 键盘可分为两类 非编码键盘和编码键盘 本报告主要介绍非编码键盘 非编码键盘是利用按键直接与单片机相连接而成 这种键盘通常使用在按 键数量较少的场合 使用这种键盘 系统功能通常比较简单 需要处理的任务 5 52 较少 但是可以降低成本 简化电路设计 按键的信息通过软件来获取 非编码键盘 分为两种结构 独立式键盘和矩阵式键盘 1 独立式键盘 独立式键盘特点是 一键一线 各键相互独立 每个键各接一条 I O 口线 通过检测 I O 输入线的电平状态 可容易地判断哪个按键被按下 如图 10 8 所 示 对于图 3 1 的键盘 图中的上拉电阻保证按键释放时 输入检测线上有稳 定的高电平 当某一按键按下时 对应的检测线就变成了低电平 与其他按键相连的检 测线仍为高电平 只需读入 I O 输入线的状态 判别哪一条 I O 输入线为低电 平 很容易识别哪个键被按下 2 矩阵式键盘 矩阵式 也称行列式 键盘用于按键数目较多的场合 由行线和列线组成 按 键位于行 列的交叉点上 如图 3 2 所示 一个 4 4 的行 列结构可以构成一 个 16 个按键键盘 在按键数目较多的场合 要节省较多的 I O 口线 矩阵中无按键按下时 行线为高电平 当有按键按下时 行线电平状态将 由与此行线相连的列线的电平决定 列线的电平如果为低 则行线电平为低 列线的电平如果为高 则行线的电平也为高 这是识别按键是否按下的关键所 在 由于本设计键盘数目较少故采用独立式键盘 图 3 1 独立式键盘 3 2 矩阵式键盘 2 2 32 2 3 LEDLED 数码管的简介及选择数码管的简介及选择 LED Light Emitting Diode 发光二极管缩写 LED 数码管是由发光二极 6 52 管构成的 常见的 LED 数码管为 8 字型的 共计 8 段 每一段对应一个发光 二极管 有共阳极和共阴极两种 如图 3 3 所示 共阴极发光二极管的阴极连 在一起 通常公共阴极接地 当阳极为高电平时 发光二极管点亮 同样 共 阳极 LED 数码管的发光二极管的阳极连接在一起 公共阳极接正电压 当某个 发光二极管的阴极接低电平时 发光二极管被点亮 相应的段被显示 图 3 3 LED 数码管有静态显示和动态显示两种显示方式 静态显示方式的显示无闪烁 亮度都较高 静态显示方式接口编程容易 但是占用口线较多 图 3 4 动态显示的优点是硬件电路简单 显示器越多 优势越明显 缺点是显示 亮度不如静态显示的亮度高 如果 扫描 速率较低 会出现闪烁现象 图 3 5 图 2 4 静态显示 图 2 5 动态显示 基于以上原因本设计采用动态显示 总结以上选择 我们单片机选用了 AT89S51 键盘选用了非编码式独立式 键盘 数码管选择动态显示 7 52 3 3 系统的硬件设计系统的硬件设计 3 13 1 AT89S51AT89S51 最小系统设计最小系统设计 AT89S51 的最小系统包括时钟电路 复位电路 和 AT89S51 芯片 3 1 13 1 1 时钟电路硬件设计时钟电路硬件设计 AT89S51 内部有一个用于构成振荡器的高增益反相放大器 输入端为芯片 引脚 XTAL1 输出端为引脚 XTAL2 这两个引脚跨接石英晶体振荡器和微调电容 构成一个稳定的自激振荡器 C1和C2的典型值通常选择为 30pF 电容大小会影 响振荡器频率高低 振荡器的稳定性和起振的快速性 晶振频率范围通常是 1 2 12MHz 晶体频率越高 单片机速度就越快 速度快对存储器的速度要求 就高 印制电路板的工艺要求也高 即线间的寄生电容要小 晶体和电容应尽 可能与单片机靠近 以减少寄生电容 保证振荡器稳定 可靠地工作 为提高 温度稳定性 采用温度稳定性能好的电容 常选 6MHz 或 12MHz 的石英晶体 随 着集成电路制造工艺技术的发展 单片机的时钟频率也在逐步提高 已达 33MHz 本设计选用的是 11 0592MHZ 图 3 1 时钟电路 8 52 3 1 23 1 2 复位电路硬件设计复位电路硬件设计 单片机的初始化操作 给复位脚 RST 加上大于 2 个机器周期 即 24 个时钟 振荡周期 的高电平就使 AT89S51 复位 复位电路采用上电自动复位和按钮复位两种方式 上电自动复位是给电容C 充电加给 RST 引脚一个短的高电平信号 此信号 随着 VCC对电容C 的充电过程而逐渐回落 即 RST 引脚上的高电平持续时间取 决于电容C 充电时间 为保证系统可靠复位 RST 引脚上的高电平必须维持足 够长的时间 除了上电复位外 有时还需要按键手动复位 本设计采用上电自动 复位和按钮复位结合的方式 图 3 2 复位电路 下图为 AT89S51 的最小系统 9 52 图 3 3AT89S51 的最小系统 3 2 键盘电路硬件设计键盘电路硬件设计 对于图 3 8 的键盘 图中的上拉电阻保证按键释放时 输入检测线上有稳 定的高电平 与门 U5B 的输出为高电平 当某一按键按下时 对应的检测线就变成了低电平 与其他按键相连的检 测线仍为高电平 与门 U5B 的输出为低电平 向单片机发出中断请求 只需读 入 I O 输入线的状态 判别哪一条 I O 输入线为低电平 很容易识别哪个键被 按下 10 52 图 3 8 键盘电路 3 3 显示电路硬件设计显示电路硬件设计 本设计采用的动态显示 图 3 9 所示为一个 6 位 8 段 LED 动态显示电路 其中段码线占用一个 8 位 I O 口 P0 口 而位选线占用一个 6 位 I O 口 P2 口低 6 位 必须采用动态的 扫描 显示方式 即在某一时刻 只让某一位的 位选线处于选通状态 而其他各位的位选线处于关闭状态 同时 段码线上输 出相应位要有显示的字符的段码 三极管电路起到驱动作用 图 3 9 显示电路 11 52 3 4 蜂鸣器电路硬件设计蜂鸣器电路硬件设计 当单片机测控系统发生故障或处于某种紧急状态时 单片机系统应能发出 提醒人们警觉的声音报警 用 I O 口很容易实现该功能 本设计用于整点报时 和闹铃用 购买市售的压电式蜂鸣器 用一根 I O 口线驱动蜂鸣器发声 约需 10mA 的 驱动电流 可用 7406 或 7407 低电平驱动 也可以用一个晶体管驱动如图 3 10 所示 图 3 10蜂鸣器电路 4 4 系统软件设计系统软件设计 4 14 1 系统主程序设计系统主程序设计 4 1 14 1 1 系统软件设计内存分配及芯片地址介绍系统软件设计内存分配及芯片地址介绍 定时器 T0 T1 溢出周期为 50MS T0 为秒计数用 T1 为调整时闪烁及 秒表定时用 P1 0 P1 1 P1 2 P1 3 为调整按钮 P0 口为字符输出口 P2 为扫描口 P1 7 为蜂呜器口 采用共阳显示管 50H 55H 为闹钟定时单元 60H 65H 为秒表计时单元 72H 75H 为显示时 间单元 76H 79H 为分时计时单元 12 52 03H 标志 0 时钟闪烁 1 秒表 05H 0 不闹铃 1 要闹铃 07H 每秒改 变一次 用作间隔呜叫 4 1 24 1 2 系统主程序流程图系统主程序流程图 通过不断地调用显示程序可保证在执行其他子程序时保证数码管亮 除省 电模式外 开始 系统初始化 显示子程序 扫描键盘子程序 图 4 1 系统主程序流程图 4 24 2 定时器的设计定时器的设计 定时器 T0 T1 溢出周期为 50MS T0 为秒计数用 T1 为调整时闪烁及秒 表定时用 13 52 重置T0定时初值 百分位秒位 1 T0中断 服务子程序 1S到 秒位 1 百分秒位清0秒 分位 1 秒位清0 1分钟到 1小时到 小时位 1 分位清0 24小时到 小时位清0 返回 N Y N Y N N Y Y 图 4 2 用 T0 实现计时流程图 14 52 开始 是否按下P1 1 设置键 时间调整模式 是否退出调整 模式 启动闹铃 是否跟闹钟时 间一致 显示时间 Y Y Y Y Y Y Y Y N N N N N N 图 4 3 时间调整流程图 15 52 4 34 3 整点报时整点报时 开始 显示时间 蜂鸣器响一次 分钟是否为00 P1 0键是否按下 退出 Y N Y N 图 4 4 整点报时流程图 16 52 5 5 系统调试系统调试 5 15 1 调试步骤调试步骤 该程序的调试环境是在星研仿真软件环境里面进行的 通过软禁工具里的 窗口来对 CPU 进行选择 在其窗口工具栏下的数据窗口里观察 以判断时钟是 否正常的进行 再通过仿真机和星研软件相连通 从而进行仿真调试 最终完 成时钟系统的各个功能 1 建立项目文件 a 执行 主菜单 文件 新建 选择 创建项目文件 在 项目文件名 中输入您的项目文件名 例 如 example 在 位于哪个目录 中选择一个项目文件存放目录 该目录 名决定编译 连接时生成的所有文件所在目录 该项目文件名决定最终生 成的代码文件的名称 即如果项目文件名叫 Example 则最后生成的代 码文件为 Example dob Example hex 等 确定 后 进入下一步 b 选择仿真头 您需要仿真的 CPU 的公司 型号 点击 下一步 c 选择语言 d 按照您的硬件需要 设置编译 连接控制项 e 设置存贮器出借方式 点击 完成 您的项目文件建立完毕 存贮器出借方式分为程序空间出借方式 外部数据空间出借方式 STAR 系列仿真器 17 52 仿真器内有 128K 仿真 RAM 其中 64K 可以出借给您作为程序存贮器 存放 机器码 64K 可出借给您作为数据存贮器 存放外部数据 通常 您借用仿真 RAM 作为程序存贮器 便于调试程序 外部数据空间在您的应用系统上 便于 对您系统上的 I O 数据 RAM 操作 如果您的线路板还未制成 您也可借用仿 真 RAM SUPER ICE16 SUPER ICE51 仿真器 仿真器内有 64K 仿真 RAM 可以作为您的程序 数据存贮器 以 8K 为 一个单位 可出借给您作为程序 数据存贮器 如果您选中相应的复选框 该 8K 空间在您的系统上 不选中相应的复选框 该 8K 空间在仿真器上 通常 您借用仿真 RAM 作为程序存贮器 便于调试程序 外部数据空间在 您的应用系统上 便于对您系统上的 I O 数据 RAM 操作 如果您的线路板 还未制成 您也可借用仿真 RAM 但要注意您借用的程序空间与您借用的外 部数据空间地址不能重叠 因为仿真器内只有 64K 存贮器 仿真 RAM MCS196 类 CPU 可以根据 INST 引脚区分程序空间和数据空间 如果您不需要 区分程序 数据空间或对于只有 64K 空间的 CPU 如 8098 请不要选中使 18 52 用 INST 区分程序 数据空间 SUPER ICE51S 仿真器 仿真器内有 64K 仿真 RAM 可出借给您作为程序 数据存贮器 如果您 选中相应的复选框 该 64K 空间在您的系统上 不选中相应的复选框 该 64K 空间在仿真器上 通常 您借用仿真 RAM 作为程序存贮器 便于调试程 序 外部数据空间在您的应用系统上 便于对您系统上的 I O 数据 RAM 操 作 如果您的线路板还未制成 您也可借用仿真 RAM 但要注意您存放代码 的区域与存放数据的区域不能重叠 因为仿真器内只有 64K 存贮器 仿真 RAM 2 添加模块文件 工作区窗的项目视中 包含 源文件 头文件 库文件 其它文件 其它文件 中通常包含对该项目用途作一些说明的文件 库文件 通常包含 编译软件自带的 OBJ 文件 LIB 等库文件 a 如果您的模块文件还没建立 您可以执行 主菜单 文件 新建 19 52 在 文件名 中输入模块文件名 在 位于哪个目录 中 选择一个文件 存放的目录 通常与项目文件名在同一个目录 选中 添加到项目文件中 系 统自动将该模块文件加入到项目中 b 添加已存在的模块文件 库文件 在工作区窗的文件视中按鼠标右键 系统弹出一个菜单 选择 添加文 件 选择需要添加到项目文件中的各种文件 在选择文件时 按住 Ctrl 一次可添加多个文件 使用 主菜单 项目 添加文件 也可以添加文件 c 在文件窗中 按鼠标右键 系统弹出一个菜单 选择 添加文件至项目 即可将当前文件添加至项目中 工作区窗的 Examples 视中包含有一些例子 根据您使用的编译软件 可 以选择相应的例子 3 编辑程序 在工作区窗的项目视中 用鼠标双击程序文件名 即可打开相应的文件 编辑程序 4 设置项目文件 a 在工作区窗的项目视中按鼠标右键 系统弹出一个菜单 选择 设置项 目文件 可以重新选择仿真头 CPU 的公司 型号 编译软件 设置编 译软件 存贮器出借方式 b 使用 主菜单 项目 设置项目文件 也可以设置项目文件 5 删除模块文件 在工作区窗的文件视中 选择需要删除的模块文件名 a 按 Del 键 b 按鼠标右键 系统弹出一个菜单 选择 删除文件 即可把它从项目 文件中去除 c 使用 主菜单 项目 删除文件 2 编译 连接 星研集成环境软件不带任何编译软件 请根据您使用的编译软件设置工作 环境 20 52 1 设置工作环境 根据您在项目文件中选择的语言 编译器所在目录 设置以上路径 2 启动编译 连接 对工作区窗项目视的 源文件 中所有模块文件编译 如果没有错误 再与 库文件 中所有库文件连接 生成代码文件 DOB HEX 文件 a 在工作区窗的项目视中按鼠标右键 系统弹出一个菜单 选择 编译 连接 或 重新编译连接 b 使用 主菜单 项目 编译 连接 或 主菜单 项目 重新编译 连接 编译连接 与 重新编译 连接 区别 重新编译 连接 不管 项目中有无添加 删除模块文件 编译软件是否变化 编译控制项有无修 改 模块文件有无修改 对 源文件 中所有模块文件编译 如果没有错 误 再与 库文件 中所有库文件连接 生成代码文件 DOB HEX 文件 3 编译 连接结果 编译 连接过程中产生的信息显示在信息窗的 建立 视中 如有错误 警告信息 用鼠标左键双击错误 警告信息或将光标移到错误 警告信息上 回车 系统自动打开对应的出错文件 并定位于出错行上 进入调试状态 21 52 在进入调试状态以前 请正确设置通信口 执行 主菜单 辅助 通信 仿真器配套的通信线可以与微机并口相连 即为并口通信线 如果并口地 址是 378H 请选择并口 1 并口地址是 278H 请选择并口 2 并口地址是 3BCH 请选择并口 3 仿真器配套的通信线可以与微机串口相连 即为串口通信线 波特率 STAR 系列 SUPER ICE51S 使用串口通信时 波特率可以选择 115200 如果您选择串行通信 您可在此选择一个合适的波特率 通常 您可以选 择缺省 一般情况下 星研集成环境软件会自动选择一个合适的波特率 用于 仿真器与微机之间的通信 但是 对于有的微机可能选择的不合适 出现无法 联机 或者过了几分钟 状态条中仍然出现 正在通信 标志 按 Esc 键 退 出联机状态 然后 由高 通常 57600 到底 选择波特率 重新联机 校验 通常您不必选中它 可以提高传送 DOB HEX 文件时的速度 如果编译 连接正确后 可以开始调试程序 进入调试状态方法 a 执行 主菜单 运行 进入调试状态 b 点击工具条的 c 执行 主菜单 运行 装载 DOB HEX BIN 文件 在信息窗的 装载 视中 显示装载的代码文件 装载的字节数 装载 完毕后 显示启始地址 结束地址 22 52 装载完毕后 进入调试状态 可以根据您的需要 在 主菜单 查看 中打开 寄存器窗 存贮器窗 1 2 3 观察窗 变量窗 反汇编窗 您也 可以通过 主菜单 辅助 设置 格式 设置每一种窗口使用的字体 大小 颜色 移动窗口到您喜欢的位置 大小 首先在 种类 中选择一个窗口 然后选择 字体 大小 在 颜 色 中选择某一类 在 前景 背景 中选择您喜欢的颜色 对于高级语言 在您的程序前有一段库文件提供的初试化代码 当 前可执行标志 不会出现在您的文件行上 如果您使用 C 语言 可将光标移 到 main 函数上 按 F4 功能键 让 CPU 全速运行到 main 行上后停下 如果 您使用 PL M 语言 按 F7 功能键 让 CPU 单步进入 运行到您的任何一 个可执行后停下 您可以使用以下命令调试您的程序 设置或清除断点 功能键为 F2 在当前光标行上设置或清除一个断点 单步进入 功能键 F7 23 52 单步执行当前行或当前指令 可进入函数或子程序 SUPER ICE16 SUPER ICE51 单步进入 时 不响应中断 连续单步进入 功能键 Ctrl F7 连续执行 单步进入 用鼠标点击或按任意键后 停止运行 SUPER ICE16 SUPER ICE51 单步进入 时 不响应中断 单步 功能键 F8 单步执行当前行或当前指令 将函数或子程序作为一条指令来执行 如 果当前行中含有函数 子程序 或发生中断 CPU 将执行完整个函数 子程 序 或中断 停止于当前行或当前指令的下一有代码的行上 SUPER ICE16 SUPER ICE51 单步 时 不响应中断 连续单步 功能键 Ctrl F8 连续执行 单步 用鼠标点击或按任意键后 停止运行 SUPER ICE16 SUPER ICE51 单步 时 不响应中断 运行到光标行 功能键 F4 从当前地址开始全速运行用户程序 碰到光标行 断点或用鼠标点击 停止运行 全速断点 功能键 F9 从当前地址开始全速运行用户程序 碰到断点或用鼠标点击 停止运 行 全速运行 功能键 Ctrl F10 从当前地址开始全速运行用户程序 此时 按用户系统的复位键 CPU 从头开始执行用户程序 即对于 MCS51 类 CPU 是从 0 开始执行 对于 MCS96 MCS196 类 CPU 是从 2080H 开始执行 用鼠标点击 停止运行 停止运行 终止微机与仿真器之间通信 功能键 ESC 5 2 调试过程中的问题及解决方法调试过程中的问题及解决方法 在调试的过程中 由于源程序有多处错误 在编译时会出现提示 这个时 候我们会根据提示对错误的地方进行修改 从而使程序编译成功 虽然编译成 24 52 功了 但是这只是代表程序的语法方面没有错误 还有可能存在逻辑上的错误 这样也会导致仿真的不正确 从而使得仿真无法通过 这个时候就需要进行单 步调试 有的时候也需要设置断点 或者是执行到光标处 运用这些指令 从 而将程序进行进一步的调试 6 总结总结 为期三周的单片机课程设计结束了 令我感到非常高兴 因为我真正的学 到了东西 正所谓严师出高徒 在老师的严格要求下 在我看来基本是完不成 的任务 我按时完成了 以前的实训真的不可与课程设计同日而语 课程设计 不仅锻炼我们的动手能力 而且还有自主学习的能力以及团队协作的能力 实 训时老师要从旁指导 全程监督 而课程设计完全交给了我们自己去完成 交 给了我们自己的团队 人们都说看花容易绣花难 通过这此课程设计我深刻的理解了这个道理 这次课程设计 遇到了很多的困难 编写程序我们就研究了好久 有时做梦都 能梦见写程序 达到了日有所思夜有所梦的地步 不过在我和我们组长和组员 细心地研究 终于写出来了 去实验室去验证也和我们所想的一样 我们实验 不只一次 有时我还要在晚上去实验室 去验证我的程序 功夫不负有心人 我们达到了我们想要的效果 我深深地知道这是老师在培养我们自学习的能力 在学校有很好的老师告诉你 他们愿意倾囊相授 但是不是那种你问什么老师 就回答你 因为这样做会导致我们毕业之后什么也不会 遇到新的事物就不会 去认识它 因为我们在大学没有学到认识新事物的本领 后来我试着编写 终 于实现了我想要的功能 我非常有成就感 通过了这次课程设计 我不仅大大提高了系统设计和软件编程的能力 自 身的各方面的素质也得到了提高 同时也培养了我的团队协作精神 一个人很 难完成的任务 通过团队便可以在最短的时间和最高的质量完成 不过前提是 要知道如何运用团队里的成员 要知道他们各自的长处 好好利用 才能得到 25 52 事半功倍的效果 否则适得其反 这次课程设计不仅充实了我的自动化专业知 识 扩大了知识面 增强分析问题和解决问题的能力 也提高自学的能力与软 件开发能力 为今后的工作打下了坚实的基础 感谢老师们辛苦的带着我们学 习新的东西 7 参考文献参考文献 1 谷树忠 刘文洲 姜航 Altium Designer 教程 电子工业出版社 2010 2 周航慈 单片机应用程序设计技术 M 北京航空航天大学出版社 2011 2 3 李光才 单片机课程设计实例指导 M 北京 北京航空航天大学出版社 2004 4 赵文博 单片机语言 C51 程序设计 M 北京 人民邮电出版社 2005 10 5 徐爱钧 彭秀华 单片机高级语言 C51 应用程序设计 M 北京航空航天大 学出版社 2006 6 于殿泓 王新年 单片机原理与程序设计实验教程 M 西安电子科技大学 出版社 2007 8 26 52 附录附录 附录一 程序清单附录一 程序清单 AT89S52 时钟程序 定时器 T0 T1 溢出周期为 50MS T0 为秒计数用 T1 为调整时闪烁及秒表定 时用 P1 1 P1 2 P1 3 为调整按钮 P0 口为字符输出口 P2 为扫描口 P1 2 为蜂 呜器口 采 用共阳显示管 50H 55H 为闹钟定时单元 60H 65H 为秒表计时单元 72H 75H 为显示时间单 元 76H 79H 为分时计时单元 03H 标志 0 时钟闪烁 1 秒表 05H 0 不闹铃 1 要闹铃 07H 每 秒改变一次 27 52 用作间隔呜叫 DISPFIRST EQU 30H 显示首址存放单元 BELL EQU P1 7 CONBS EQU 2FH 存放报时次数 中断入口程序 ORG 0000H 程序执行开始地址 LJMP START 跳到标号 START 执行 ORG 0003H 外中断 0 中断程序入口 LJMP INT00 外中断 0 中断返回 ORG 000BH 定时器 T0 中断程序入口 LJMP INTT0 跳至 INTTO 执行 ORG 0013H 外中断 1 中断程序入口 LJMP INT01 外中断 1 中断返回 ORG 001BH 定时器 T1 中断程序入口 LJMP INTT1 跳至 INTT1 执行 ORG 0023H 串行中断程序入口地址 RETI 串行中断程序返回 以下程序开始 整点报时用 QQQQ MOV A 10 MOV B 79H 28 52 MUL AB ADD A 78H MOV CONBS A CJNE A 00H BSLOOP MOV CONBS 24H BSLOOP JNB P1 0 INT 00 LCALL DS21MS LCALL DL1S LCALL DL1S LCALL DL1S DJNZ CONBS BSLOOP S1 CLR 08H 清整点报时标志 AJMP START1 INT 00 LCALL DS20MS 消抖 JB P1 0 BSLOOP WALL1 LCALL DISPLAY 等键 释放 JNB P1 0 WALL1 AJMP S1 主程序开始 START MOV R0 00H 清 00H 7FH 内存单元 MOV R7 80H CLEARDISP MOV R0 00H INC R0 DJNZ R7 CLEARDISP MOV 20H 00H 清 20H 标志用 MOV 55H 1 29 52 MOV 54H 2 MOV 7AH 0AH 放入 熄灭符 数据 MOV TMOD 11H 设 T0 T1 为 16 位定时器 MOV TL0 00H 50MS 定时初值 T0 计时用 MOV TH0 4CH 50MS 定时初值 MOV TL1 00H 50MS 定时初值 T1 闪烁定时用 MOV TH1 4CH 50MS 定时初值 SETB EA 总中断开放 SETB ET0 允许 T0 中断 SETB TR0 开启 T0 定时器 MOV R4 14H 1 秒定时用计数值 50MS 20 MOV DISPFIRST 70H 显示单元为 70 75H 以下主程序循环 START1 LCALL DISPLAY 调用显示子程序 JB 08H QQQQ INT01 JNB P1 1 SETMM1 P1 1 口为 0 时转时间调整程序 JNB P1 2 TSFUN 定时闹铃设定 JNB P1 3 FUNPT 秒表功能 STOP RUN CLR AJMP START1 P1 1 口为 1 时跳回 START1 FUNPT LJMP FUNPTT START12 LJMP START1 以下闹铃时间设定程序 按 P1 2 进入设定 TSFUN LCALL DS20MS JB P1 2 START1 WAIT113 JNB P1 2 WAIT113 等待键释放 JB 05H CLOSESP 闹铃已开的话 关闹铃 MOV DISPFIRST 50H 进入闹铃 52 55H 闹钟定时单元 DSWAIT SETB EA LCALL DISPLAY JNB P1 3 DSFINC 分加 1 30 52 JNB P1 1 DSDEC 分减 1 JNB P1 2 DSSFU 进入时调整 AJMP DSWAIT CLOSESP CLR 05H 关闹铃标志 CLR BELL AJMP START1 DSSFU LCALL DS20MS 消抖 JB P1 2 DSWAIT LJMP DSSFUNN 进入时调整 SETMM1 LJMP SETMM 转到时间调整程序 SETMM DSFINC LCALL DS20MS 消抖 JB P1 3 DSWAIT DSWAIT12 LCALL DISPLAY 等键 释放 JNB P1 3 DSWAIT12 CLR EA MOV R0 53H LCALL ADD1 闹铃设定分加 1 MOV A R3 分数据放入 A CLR C 清进位标志 CJNE A 60H ADDHH22 ADDHH22 JC DSWAIT 小于 60 分时返回 ACALL CLR0 大于或等于 60 分时分计时 单元清 0 AJMP DSWAIT DSDEC LCALL DS20MS 消抖 JB P1 1 DSWAIT DSWAITEE LCALL DISPLAY 等键 释放 JNB P1 1 DSWAITEE CLR EA MOV R0 53H 31 52 LCALL SUB1 闹铃设定分减 1 LJMP DSWAIT 以下秒表暂停 清零功能程序 按下 P1 3 切换秒表功能 再按开始计时 暂停或清 0 最后按 P1 3 退出秒表 回到时钟计时 FUNPTT LCALL DS20MS JB P1 3 START12 WAIT22 JNB P1 3 WAIT21 CPL 03H JNB 03H TIMFUN MOV DISPFIRST 60H 显示秒表数据单元 MOV 60H 00H MOV 61H 00H MOV 62H 00H MOV 63H 00H MOV 64H 00H MOV 65H 00H MOV TL1 0F0H 10MS 定时初值 MOV TH1 0D8H 10MS 定时初值 WAIT88 LCALL DS20MS JB P1 3 WAIT81 WAIT99 JNB P1 3 WAIT99 SETB TR1 T1 运行控制软件 SETB ET1 T1 溢出中断允许 WAIT33 LCALL DS20MS JB P1 3 WAIT31 WAIT44 JNB P1 3 WAIT41 CLR ET1 CLR TR1 32 52 WAIT55 LCALL DS20MS JB P1 3 WAIT51 WAIT66 JNB P1 3 WAIT61 MOV 60H 00H MOV 61H 00H MOV 62H 00H MOV 63H 00H MOV 64H 00H MOV 65H 00H TIMFUN MOV DISPFIRST 70H 显示时钟数据单元 CLR ET1 CLR TR1 AJMP FUNSS11 FUNSS11 AJMP START1 以下键等待释放时显示不会熄灭用 WAIT21 LCALL DISPLAY AJMP WAIT22 WAIT31 LCALL DISPLAY AJMP WAIT33 WAIT41 LCALL DISPLAY AJMP WAIT44 WAIT51 LCALL DISPLAY AJMP WAIT55 WAIT61 LCALL DISPLAY AJMP WAIT66 WAIT81 LCALL DISPLAY AJMP WAIT88 WAIT91 LCALL DISPLAY AJMP WAIT99 33 52 1 秒计时程序 T0 中断服务程序 INTT0 PUSH ACC 累加器入栈保护 PUSH PSW 状态字入栈保护 CLR ET0 关 T0 中断允许 CLR TR0 关闭定时器 T0 MOV A 07H 中断响应时间同步修正 ADD A TL0 低 8 位初值修正 MOV TL0 A 重装初值 低 8 位修正值 MOV A 4CH 高 8 位初值修正 ADDC A TH0 MOV TH0 A 重装初值 高 8 位修正值 SETB TR0 开启定时器 T0 DJNZ R4 OUTT0 20 次中断未到中断退出 ADDSS MOV R4 14H 20 次中断到 1 秒 重赋值 CPL 07H 闹铃时间隔呜叫用 MOV R0 71H 指向秒计时单元 70H 71H ACALL ADD1 调用加 1 程序 加 1 秒操作 MOV A R3 秒数据放入 A R3 制数组合 CLR C 清进位标志 CJNE A 60H ADDMM ADDMM JC OUTT0 小于 60 秒时中断退出 ACALL CLR0 大于或等于 60 秒时单元清 0 MOV R0 77H 指向分计时单元 76H 77H ACALL ADD1 分计时单元加 1 分钟 34 52 MOV A R3 分数据放入 A CLR C 清进位标志 CJNE A 60H ADDHH ADDHH JC OUTT0 小于 60 分时中断退出 ACALL CLR0 大于或等于 60 分时分元清 0 LCALL DS20MS 正点报时 SETB 08H MOV R0 79H 指向小时计时单元 78H 79H ACALL ADD1 小时计时单元加 1 小时 MOV A R3 时数据放入 A CLR C 清进位标志 CJNE A 24H HOUR HOUR JC OUTT0 小于 24 小时中断退出 ACALL CLR0 大于或等于 24 小时单元清 0 OUTT0 MOV 72H 76H 中断退出时将分 时计数据 移 MOV 73H 77H 入对应显示单元 MOV 74H 78H MOV 75H 79H LCALL BAOJ POP PSW 恢复状态字 出栈 POP ACC 恢复累加器 SETB ET0 开放 T0 中断 RETI 中断返回 闪动调时程序 秒表功能程序 T1 中断服务程序 用作时间调整时调整单元闪烁指示或秒表计时 INTT1 PUSH ACC 中断现场保护 35 52 PUSH PSW JB 03H MMFUN 1 时秒表 MOV TL1 00H 装定时器 T1 定时初值 MOV TH1 4CH DJNZ R2 INTT1OUT 0 3 秒未到退出中断 5 断次 MOV R2 06H 重装 0 3 秒定时用初值 CPL 02H 0 3 秒定时到对闪烁标志取反 JB 02H FLASH1 02H 位为 1 时显示单元 熄灭 MOV 72H 76H 02H 位为 0 时正常显示 MOV 73H 77H MOV 74H 78H MOV 75H 79H INTT1OUT POP PSW 恢复现场 POP ACC RETI 中断退出 FLASH1 JB 01H FLASH2 01H 位为 1 时 转小时熄灭控制 MOV 72H 7AH 01H 位为 0 时 熄灭符 数据放入 分 MOV 73H 7AH 显示单元 72H 73H 将不显示分数 据 MOV 74H 78H MOV 75H 79H AJMP INTT1OUT 转中断退出 FLASH2 MOV 72H 76H 01H 位为 1 时 熄灭符 数据放入小 时 MOV 73H 77H 显示单元 74H 75H 小时数据将不显 示 MOV 74H 7AH MOV 75H 7AH 36 52 AJMP INTT1OUT 转中断退出 MMFUN CLR TR1 MOV A 0F7H 中断响应时间同步修正 重装初值 10ms ADD A TL1 低 8 位初值修正 MOV TL1 A 重装初值 低 8 位修正值 MOV A 0D8H 高 8 位初值修正 ADDC A TH1 MOV TH1 A 重装初值 高 8 位修正值 SETB TR1 开启定时器 T1 MOV R0 61H 指向秒计时单元 71H 72H ACALL ADD1 调用加 1 程序 加 1 秒操作 CLR C MOV A R3 JZ FSS1 加 1 后为 00 C 0 AJMP OUTT01 加 1 后不为 00 C 1 FSS1 ACALL CLR0 大于或等于 60 秒时对秒计时单元清 0 MOV R0 63H 指向分计时单元 76H 77H ACALL ADD1 分计时单元加 1 分钟 MOV A R3 分数据放入 A CLR C 清进位标志 CJNE A 60H ADDHH1 ADDHH1 JC OUTT01 小于 60 分时中断退出 LCALL CLR0 大于或等于 60 分时分计时单元清 0 MOV R0 65H 指向小时计时单元 78H 79H 37 52 ACALL ADD1 小时计时单元加 1 小时 OUTT01 POP PSW 恢复状态字 出栈 POP ACC 恢复累加器 RETI 中断返回 加 1 子 程 序 ADD1 MOV A R0 取当前计时单元数据到 A DEC R0 指向前一地址 SWAP A A 中数据高四位与低四位交换 ORL A R0 前一地址中数据放入 A 中低四位 ADD A 01H A 加 1 操作 DA A 十进制调整 MOV R3 A 移入 R3 寄存器 ANL A 0FH 高四位变 0 MOV R0 A 放回前一地址单元 MOV A R3 取回 R3 中暂存数据 INC R0 指向当前地址单元 SWAP A A 中数据高四位与低四位交换 ANL A 0FH 高四位变 0 MOV R0 A 数据放入当削地址单元中 RET 子程序返回 分减 1 子 程 序 SUB1 MOV A R0 取当前计时单元数据到 A DEC R0 指向前一地址 SWAP A A 中数据高四位与低四位交换 38 52 ORL A R0 前一地址中数据放入 A 中低四位 JZ SUB11 DEC A A 减 1 操作 SUB111 MOV R3 A 移入 R3 寄存器 ANL A 0FH 高四位变 0 CLR C 清进位标志 SUBB A 0AH SUB1111 JC SUB1110 MOV R0 09H 大于等于 0AH 为 9 SUB110 MOV A R3 取回 R3 中暂存数据 INC R0 指向当前地址单元 SWAP A A 中数据高四位与低四位交换 ANL A 0FH 高四位变 0 MOV R0 A
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2024年七月影视基地特效设备高空吊装方案
- 浙江2025年03月浙江省安吉县事业单位公开招考33名工作人员笔试历年典型考题(历年真题考点)解题思路附带答案详解
- 2024年5月份跨年活动票务代理超额销售追责协议
- 2024年7月份预制梁场智能喷淋养护租赁节水条款
- 罕溺水急救知识
- 2024年6月份影视衍生品合同台账授权链路可视化
- 安全我们身边的小物品
- 应急救援培训
- 糖尿病酮症酸中毒
- 网络与新媒体行业分析
- 【MOOC】化工安全(下)-华东理工大学 中国大学慕课MOOC答案
- 2024年10月广东高等教育自学考试5743基础营养学试题及答案
- 论持久战全文(完整)
- 《连续性肾替代治疗容量评估与管理专家共识》解读课件
- 第4课《我们的公共生活》第1课时(教学设计)-部编版道德与法治五年级下册
- 宠物店宠物活动策划合同
- 盾构施工关键技术知识考试题库及答案
- 《2024年 大学计算机基础考试系统的分析与设计》范文
- 广东省珠海市香洲区2023-2024学年七年级下学期期末历史试题(解析版)
- 鸢飞鱼跃:〈四书〉经典导读智慧树知到答案2024年四川大学
- 2024年浙江省初中学业水平考试社会试题(解析版)
评论
0/150
提交评论