51单片机电子时钟课程设计实验报告_第1页
51单片机电子时钟课程设计实验报告_第2页
51单片机电子时钟课程设计实验报告_第3页
51单片机电子时钟课程设计实验报告_第4页
51单片机电子时钟课程设计实验报告_第5页
已阅读5页,还剩15页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

单片机原理与应用单片机原理与应用 课程设计课程设计 总结报告总结报告 题题 目目 单片机电子时钟 带秒表 的设计单片机电子时钟 带秒表 的设计 设计人员 设计人员 张保江张保江 江润洲江润洲 学学 号 号 20121972132012197213 20121180292012118029 班班 级 级 自动化自动化 12111211 指导老师 指导老师 阮海容阮海容 1 目目 录录 1 题目与主要功能要求题目与主要功能要求 2 2 整体设计框图及整机概述整体设计框图及整机概述 3 3 各硬件单元电路的设计 参数分析及原理说明各硬件单元电路的设计 参数分析及原理说明 3 4 软件流程图和流程说明软件流程图和流程说明 4 5 总结设计及调试的体会总结设计及调试的体会 10 附附 录录 1 图一 系统电路原理图图一 系统电路原理图 11 2 图二 系统电路图二 系统电路 PCB 12 3 表一 元器件清单表一 元器件清单 13 4 时钟程序源码时钟程序源码 14 2 题目 单片机电子时钟的设计与实现题目 单片机电子时钟的设计与实现 课程设计的目的和意义课程设计的目的和意义 课程设计的目的与意义在于让我们将理论与实践相结合将理论与实践相结合 培养我们综合运用电子课程中的 理论知识解决实际性问题的能力 让我们对电子电路 电子元器件 印制电路板等方面的 知识进一步加深认识 同时在软件编程 排错调试 焊接技术 相关仪器设备的使用技能 等方面得到较全面的锻炼和提高 为今后能够独立完成某些单片机应用系统的开发和设计 打下一个坚实的基础 课程设计的基本任务课程设计的基本任务 利用 89C51 单片机最小系统 综合应用单片机定时器 中断 数码显示 键盘输入等知识 设计一款单片机和简单外设控制的电子时钟 主要功能要求主要功能要求 最基本要求最基本要求 1 使用 MCS 51 单片机设计一个时钟 要求具有 6 位 LED 显示 3 个按键输入 2 完成硬件实物制作或使用 Pruteus 仿真 注意位驱动应能提供足够的电流 3 6 位 LED 数码管从左到右分别显示时 分 秒 各占用 2 位 采用 24 小时标准计时制 开始计时时为 000000 到 235959 后又变成 000000 4 使用 3 个键分别作为小时 分 秒的调校键 每按一次键 对应的显示值便加 1 分 秒加到 59 后再按键即变为 00 小时加到 23 后再按键即变为 00 在调校时均不向上一单位 进位 例如分加到 59 后变为 00 但小时不发生改变 5 软件设计必须使用 MCS 51 片内定时器 采用定时中断结构 不得使用软件延时法 也 不得使用其他时钟芯片 6 设计八段数码管显示电路并编写驱动程序 输入并调试拆字程序和数码显示程序 7 掌握硬件和软件联合调试的方法 8 完成系统硬件电路的设计和制作 9 完成系统程序的设计 10 完成整个系统的设计 调试和制作 11 完成课程设计报告 基本要求基本要求 1 实现最基本要求的 1 10 部分 2 键盘输入可以控制电子时钟的走时 调试 3 设计键盘输入电路和程序并调试 4 掌握键盘和显示配合使用的方法和技巧 提高发挥部分提高发挥部分 1 另设三个键 分别作小时 分 秒的减 1 调校 2 在以上设计的基础上 修改程序制作一个电子秒表 分 秒各占用 2 位显示 1 10 秒 3 1 100 秒各占用 1 位显示 设定二个键分别作启动 停止 清零 清零应在停止后有效 3 在做完 2 后 将时钟与秒表合二为一 并且在同时使用时互不影响 即可在时钟与秒表 之间任意切换 而不影响走时 计秒 整体设计框图及整机概述整体设计框图及整机概述 整体设计框图整体设计框图 整机概述整机概述 1 开机为走时模式 正常显示时间 开机为走时模式 正常显示时间 在此模式下 时钟可调 2 共设置共设置 7 个按键 分别为模式键 功能键 加一键 减一键 复位键 秒表启动键 秒个按键 分别为模式键 功能键 加一键 减一键 复位键 秒表启动键 秒 表复位键 表复位键 按动模式键 模式将在 走时 调时 显示及秒表显示及调整 2 个模式下切 换 3 在时钟模式下 功能键选择是正常走时 还是进入调试 时 分 秒 模式 4 按动加一键可以将值 时 分 秒 加一 5 按动减一键可以将值 时 分 秒 减一 6 按动秒表中开始 暂停按键可以随时控制秒表的开始和停止 7 按动秒表中清零按键时 秒表计的数就会被清除 只有在秒表停止了以后 8 按下复位键后 无论是任何状态都会从新开始 9 开机时钟与闹钟都为 00 00 00 各硬件单元电路的设计 参数分析及原理说明各硬件单元电路的设计 参数分析及原理说明 电源电路电源电路 元件有限没有制作电源电路部分 使用 9V 的电池经过 7805 稳压后进行供电 4 按键按键 参考书本 P232 的键盘接口电路原理图 P3 口 除去 P3 6 接的是键盘按键 当按键按下 后 P3 口被拉成低电平 给单片机一个信号 使单片机产生一个中断 单片机再指令相应 的 P0 口 P2 口产生变化 单片机最小系统单片机最小系统 参考实验指导书与课本及网络资料设计按键电平复位 LEDLED 数码管数码管 首先 P0 口作为段码输出 由于 P0 口输出级无上拉电阻 故需添加一排阻为其上拉电阻 其次采用共阳极数码管 段码端为低电平时导通 LED 此时数码管向 89S51 芯片 P0 口灌电 流 为防止芯片烧坏 还需加 1 个 1 K 的限流电阻 考虑到数码管的亮度问题 采用了 PNP 三极管做驱动电路 基极接上 1 K 电阻后再与 P2 口相连 P2 0 P2 5 进行位选 发射极接 5V 电源 集电极接数码管位选 软件流程图和流程说明软件流程图和流程说明 软件流程图软件流程图 1 1 主程序流程图主程序流程图 流程图说明流程图说明 初始化 包括定时器赋初始化 包括定时器赋 初值 初始化各内存单初值 初始化各内存单 元 开定时器中断 开元 开定时器中断 开 CPUCPU 中断 中断 调用显示子程序 调用始时钟或秒 表查询程序 调用按键扫描子 程序 调用模式查询子 程序 初始化 开始 等待定时器中断 5 时间显示及调整子程序与秒表显示及调整子程序流程图与调时模式子程序大同小异 时间显示及调整子程序与秒表显示及调整子程序流程图与调时模式子程序大同小异 调时模式设置 秒 分 时数据分别 送 display 函数 Num11 取键值送 cpu Y 分钟数值加 1 键值清零 N Num11 值 为 2 N 返回 Y Num11 值 为 3 小时数值加 1 键值清零 6 总结设计及调试体会总结设计及调试体会 硬件设计部分 硬件设计部分 首先要通过计算与参考资料等决定参数 而后通过仿真软 件等调试 确定参数无误后再开始用 AD 画原理图 进而生成 PCB 进行布板 在焊板子的时候 也出现了问题 不小心将 7805 焊成了 7905 结果又调试了 一个时间 软件设计部分 软件设计部分 设计软件首先要考虑要做的功能 确定出合理的算法 合 理的算法不仅要可以实现功能 而且在添加功能的时候要方便灵活 有的人为 了实现某种功能用了各种各样的方法来实现 结果程序结构吃死 当想要添加 功能或者修改其他功能的时候 将修改程序大部分结构 也就是说要破坏程序 现有的结构 关于调试 关于调试 Keil 软件调试单片机程序的时候 编译通过并不代表程序是正 确的 编译通过只能说明程序没有语法上的错误 进行软件仿真或者下载到开 发板上进行调试 经常会出现各种各样的错误 许多超出预期效果的现象往往 是一些微小错误引起的 例如没有现场保护跟恢复现场等 所以养成良好的编 程习惯也很重要 有些想达成某些功能而添加的语句 实际上确一点效果也没 有 举个编程中的小问题 当有按键按下时 我们都要有软件防抖 正常的方 法是调用一个延时 在实际调试中 要跳过这个抖动 需要 100MS 左右 如果 使用正常的延时 会导致按键按下时 CPU100MS 内无法进行其他操作 也就是 说 平均 1S 内 100MS 不调用显示子程序 这样就会导致亮度降低 这时候 考虑到显示子程序一次有十几毫秒 就特别写了一个程序来作为按键防抖的延 时 实际上效果也是很不错的 这个想法就是在修改了多次程序未达到想要的 效果 有按键按下时显示亮度不降低 后最终想出来的办法 最后在做完板 焊完电路后 在接通电源之前 要用万用表仔细检查电路 是否有连接错 以免烧坏芯片和数码管 设计课设的其他体会其他体会 态度要积极 不要认为很简单就不紧不慢 很多东 西并不是自己设想的那么顺利 有时候一个小问题可以花上你半天甚至一天的 时间 虽然自己在程序上并没遇到太大的问题 但是因为态度不够积极 对于 没画过的 PCB 图迟迟不去下手 在周四晚上才解决 本以为周五一天可以做完 板并完成整机调试 可是各种突发事件让自己措手不及 发现板来不及做完后 才将程序功能进行扩展 这是我在这次实验中的一个教训 也让我明白了对于 自己不能太过于自信 态度决定一切 7 图一 系统电路原理图图一 系统电路原理图 图二 系统电路图二 系统电路 PCBPCB 8 9 在在 protuesprotues 中调试的结果中调试的结果 10 在开发板上实现的效果 见实物 在开发板上实现的效果 见实物 在焊的在焊的 PCBPCB 板子上效果 见实物 板子上效果 见实物 在 protues 里的仿真以及在开发板上实现和自己做实物所看到的现 象是不一样的 在 protues 里不用接三极管 NPN 就可以实现效果 但是在自己做板子的时候就不行了 因为 51 单片机的输出的电流不 能驱动数码管发光 需要一个增加驱动的 9014 三极管 另外 protues 里的复位按键不起作用 软件里就是这样设计的 将在 PCB 上实现的程序用在开发板上又出现了问题 delay 3 这个延 时子程序不合理 出现了闪烁的问题 所以将 delay 3 改成了 delay 1 这样问题就解决了 我是将三极管加在了段选上 又 加了限流电流 这样做数码管也能点亮 另一方面 一样的程序用 在不同的显示上 现象也是不一样的 所以 我需要不断地修正定 时器的装值 TH1 65536 49997 256 重装初值 TL1 65536 49997 256 TH0 65536 8000 256 TL0 65536 8000 256 经过实际测量 这个数值是最合适的 一个小时一秒不差 11 表一 元器件清单表一 元器件清单 器件名称器件名称数量数量 电池电池一个一个 Lm7805Lm7805 一个一个 自锁开关自锁开关一个一个 5151 单片机单片机一个一个 LEDLED 两个两个 极性电容极性电容一个一个 非极性电容非极性电容两个两个 晶振晶振一个一个 10K10K 电阻电阻九个九个 1K1K 电阻电阻两个两个 按键按键七个七个 100100 电阻电阻八个八个 PNPPNP 三极管三极管八个八个 4 4 位数码管 共阴 位数码管 共阴 两个两个 时钟程序源码时钟程序源码 include define uchar unsigned char define uint unsigned int uchar code table 0 x3f 0 x06 0 x5b 0 x4f 0 x66 0 x6d 0 x7d 0 x07 0 x7f 0 x6f 0 x77 0 x7c 0 x39 0 x5e 0 x79 0 x71 sbit led P1 1 指示灯 sbit qiehuan key P3 7 秒表和时钟模式切换按键 sbit sp key P3 4 秒表中开始 暂停按键 sbit clf key P3 5 秒表中清零按键 sbit func key P3 1 时钟换位按键 时 分 秒 sbit add key P3 2 时钟加 1 按键 sbit sub key P3 3 时钟减 1 按键 uchar k1 bit 0 切换按键标志位 12 uchar shi1 shi2 fen1 fen2 miao1 miao2 fen3 fen4 miao3 miao4 num9 num10 uint num1 num2 num3 num4 num5 num6 num7 num8 num11 void delay uint xms 延时函数 uint i j for i xms i 0 i for j 110 j 0 j void init 中断初始化函数 EA 1 开总中断 TMOD 0X11 定时器工作方式选择 定时器 0 和定时器 1 都 选择第 1 种工作方式 TH0 65536 10000 256 定时器 0 装初值 定时 10ms 用于秒表 TL0 65536 10000 256 ET0 1 开定时器 0 开关 TR0 0 开定时器 0 小开关 TH1 65536 50000 256 定时器 1 装初值 定时 50ms 用于时钟 TL1 65536 50000 256 ET1 1 开定时器 1 开关 TR1 1 关定时器 1 小开关 void mode key 模式选择键 本程序两种模式 分别是时间显示 秒表 当 K1 bit 为 0 时显示时钟 为 1 时进入秒表 if qiehuan key 0 delay 5 if qiehuan key 0 k1 bit if k1 bit 2 k1 bit 0 while qiehuan key void display1 uchar shi1 uchar shi2 uchar fen1 uchar fen2 uchar miao1 uchar 13 miao2 显示时钟函数 shi1 num1 10 shi2 num1 10 fen1 num2 10 fen2 num2 10 miao1 num3 10 miao2 num3 10 P2 0 xff P0 table shi1 第一位 P2 0 xfe delay 3 P2 0 xff P0 table shi2 第二位 P2 0 xfd delay 3 P2 0 xff P0 0 x40 第三位 P2 0 xfb delay 3 P2 0 xff P0 table fen1 第四位 P2 0 xf7 delay 3 P2 0 xff P0 table fen2 第五位 P2 0 xef delay 3 P2 0 xff P0 0 x40 第六位 P2 0 xdf delay 3 P2 0 xff P0 table miao1 第七位 P2 0 xbf 14 delay 3 P2 0 xff P0 table miao2 第八位 P2 0 x7f delay 3 P2 0 xff void display0 uchar fen3 uchar fen4 uchar miao3 uchar miao4 uchar num9 uchar num10 显示秒表函数 fen3 num8 10 fen4 num8 10 miao3 num7 10 miao4 num7 10 num9 num6 num10 num5 P2 0 xff P0 table fen3 第一位 P2 0 xfe delay 3 P2 0 xff P0 table fen4 第二位 P2 0 xfd delay 3 P2 0 xff P0 0 x40 第三位 P2 0 xfb delay 3 P2 0 xff P0 table miao3 第四位 P2 0 xf7 delay 3 P2 0 xff P0 table miao4 第五位 P2 0 xef delay 3 15 P2 0 xff P0 0 x40 第六位 P2 0 xdf delay 3 P2 0 xff P0 table num9 第七位 P2 0 xbf delay 3 P2 0 xff P0 table num10 第八位 P2 0 x7f delay 3 P2 0 xff void key miaobiao if k1 bit 1 if sp key 0 delay 5 if sp key 0 TR0 TR0 while sp key display0 fen3 fen4 miao3 miao4 num9 num10 if TR0 0 led 0 if clf key 0 delay 5 if clf key 0 led 1 while clf key num5 num6 num7 num8 0 16 void keyscan 时钟按键扫描 if func key 0 delay 5 if func key 0 led 0 num11 while func key if num11 1 TR1 0 if num11 2 TR1 1 if num11 3 TR1 1 if num11 4 num11 0 TR1 1 if num11 0 if add key 0 delay 5 if add key 0 17 while add key if num11 1 num3 if nu

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论