ly单片机课程设计文档_第1页
ly单片机课程设计文档_第2页
ly单片机课程设计文档_第3页
ly单片机课程设计文档_第4页
ly单片机课程设计文档_第5页
已阅读5页,还剩17页未读 继续免费阅读

下载本文档

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

文档简介

课程设计说明书课程设计说明书 电子钟调整运行 系 部 电气与信息工程系 学生姓名 李勇 指导教师 廖代化 专 业 电气自动化 班 级 电气 0903 班 学 号 35 号 完成时间 11 月 22 日 2 摘 要 本文主要介绍用单片机内部的定时 计数器来实现电子时钟的方法 本设计由单片 机 AT89S52芯片和 LED 数码管为核心 辅以必要的电路 构成了一个单片机电子时 钟 与传统机械表相比 它具有走时精确 显示直观等特点 它的计时周期为24小 时 显满刻度为 23时59分59秒 另外具有校时功能等特点 该电子钟可以做到 的功能 第一次按电子钟启动 调整键 电子钟从0时0分0秒开始运行 进入时钟 运行状态 再次按电子钟启动 调整键 则电子钟进入时钟调整状态 此时可利用 各调整键调整时间 调整结束后可按启动 调整键再次进入时钟运行状态 通过设 置的 A B C D 四个键来调整运行 并且利用了8位 LED 显示时分秒 关键词 电子钟 单片机 汇编 3 目录目录 1 设计内容 1 1 设计目的 4 1 2 设计要求 4 1 3 技术指标 4 2 设计方案 2 1 设计大体过程 5 2 2 方案的分析 5 2 3 方案的确定 6 3 设计步骤及内容 3 1 设计硬件电路图 8 3 2 设计程序流程图 10 4 4 程序设计程序设计 4 1 程序设计清单 13 5 电子钟的使用说明及调试运行 5 1 使用说明书 18 5 1 1 操作说明 18 5 2 电子钟运行结果 18 5 2 1 待机 18 5 2 2 启动 18 5 2 3 运行 19 6 误差分析 5 1 误差分析 20 7 7 设计总结 5 1 设计体会 21 参考文献 22 4 1 1 设计内容设计内容 1 11 1 设计目的设计目的 1 巩固 单片机技术 课程所学的有关知识 2 通过硬件设计 软件设计 掌握用单片机组成应用系统的方法 提高软件设 计能力 3 掌握单片机的定时 计数器的编程和使用方法 4 进一步熟悉单片机功能部件的应用 1 21 2 设计要求设计要求 1 用一个按键控制电子钟的运行和停止 2 用一个按键控制调时 调分 调秒 3 用一个按键实现加一 4 用一个按键实现减一 1 31 3 技术指标技术指标 1 A 键控制电子钟的运行与停止 B 键控制调时 调分 调秒 C 键实现加一 功能 D 键实现减一功能 2 显示为 8 为数码管显示 显示秒为 0 59 显示分为 0 59 显示时为 0 23 的 24 小时制 3 B 键控制调时间时数码管上对应的时 分 秒闪烁作为提示 5 2 2 设计方案设计方案 2 12 1 设计大体过程设计大体过程 2 22 2 方案的分析方案的分析 设计电子钟就是设计一个简单的时间显示表 可以显示一天内的 时钟 分钟 秒钟 显示时间有 12 小时制和 24 小时制 数码管显示 只能显示 0 9 和 a f 简单的数字和字符 所以本设计采用 24 小时制得 时间显示 利用单片机实现电子钟的设计方便 简单 可靠 因为单 片机功能强大 能实现各种数据的处理 内部含有两个定时计数器 他定时计数可以精确到微妙 可以利用单片机内部的定时器 定时电 子钟的秒再通过单片机进行数据的处理 产生秒的进位 分的进位 6 时的进位这一系列的数据处理从而与时间的各种运行保持一致 这样 驱动数码管显示 就能显示出与标准时间一致的时间 对于本设计理 论上可以实现 现在的问题是硬件的设计和软件的设计 对于硬件的 设计分三个部分 一个部分是单片机系统 需要显示所以另一部分是 数码管显示系统 由于需要按键进行电子钟的调整所以最后一部分硬 件是键盘电路 显示部分要数码管系统显示 使用单片机的 P0 和 P2 口作为驱动 输入设备为独立式键盘 使用单片机的 P1 口 对于软件 设计大概分为五部分 一部分为主程序 一部分为定时器中断程序 一部分为显示子程序 一部分为键扫子程序 最后一部分为键值比较 执行键功能程序 2 32 3 方案的确定方案的确定 经过以上对方案的分析 此设计从原理上来看是可以实现的 所以初 步确定利用此方案进行电路的设计和软件的设计 单片机型号选着 AT89S52 当然也可以选着其他的型号 我们最熟悉的最常用的是这一 型号的所以选着他 显示器件选择共阳的数码管显示 数码管显示驱 动电路选择 PNP 型的三极管 当然可以选择 373 芯片进行驱动 但 373 芯片的电路设计比较复杂 所以本设计选择三极管进行驱动 三极管 的集电极接高电平 VCC 基极接单片机的 P0 口 发射极输出接数码管 的位控端 当 P0 口为低电平时三极管导通驱动数码管显示时间 对于 输入设备独立式键盘接单片机的 P1 口安排 P1 口的键扫程序进行电子 钟的调整 运行和暂停 硬件电路设计完了接下来就是对软件的设计 软件的设计首先解决主程序安排 开始进行定时器的初始化 中断的 7 初始化 然后显示的初始化 给显示缓冲区送初值 本设计用一个键 控制电子钟的运行与暂停 当电路通电没有按下此键是数码管显示 P 这一过程为系统的自检过程 检测系统的功能可实现性 进行系 统的初始化包括 堆栈的初始化 低 125 数据存储器的清零 接着排 放显示缓冲区表 位控表 段控表 然后安排中断程序 加一子程序 减一子程序 键扫程序 显示子程序 程序排放好后 就是各个子程 序的设计需要完成的功能 中断程序需要完成的任务是 计数中断次 数 由于单片机的定时器最大定时时间为 65536 微妙 不能实现一次 定时 1 秒 所以分次数定时 每次定时 50 毫秒 设置 20 次 总时间 为 1 秒 所以设置定时器的初值为 THO 为 3CH TLO 为 B0H 所以中 断计数 20 次定时时间为 1 秒 当计数满 20 次是再重新给计数次数赋 值 20 紧接着调加一子程序 使秒个位加一 当秒加到 59 时调清零子 程序使秒清零 再调加一子程序使分的个位加一 依次这样下去进行 分和时的调整 如果未计满 20 次或者不需要清零时直接退出中断 显 示子程序需要完成的任务是 显示当前的时间和调整后的时间 只要 有时间就进行显示 否则显示会灭 只要有时间的更新就必须马上显 示 键扫子程序需要完成的任务是 扫描键盘 读回键值进行键值的 比较执行键功能程序 本设计是松开键后再执行键功能程序 所以扫 描得到键值以后不能马上去执行键功能程序 还需判断键盘是否松开 键扫子程序的设计方法是 首先往 P1 口写 1 这是为了正确读回键盘 的状态 然后读回 P1 口的值 进行取反 如果不为零则说明有键按下 然后延时削陡 再往 P1 口写 1 读回 P1 口数 取反如果不为零 这时 8 说明没有误判 将键值保存起来 判断键盘有没有松开 松开后再把 刚刚保存的键值送给 A 进行键值的比较 加一子程序的设计方法 将 秒的十位或分的十位 时的十位地址给 R0 进行间接寻址的方式 将 RO 送给累加器 A 这时 A 里面的值为各时钟的十位 进行 SWAP A 操 作将十位与给位交换 这时时钟的十位就到搞四位去了 在将 RO 减一 与 A 进行或运算 再加一然后进行 DA 操作进制数的转换 然后拆开 A 的值分别送到个位与十位的显示缓冲区接着调显示 总的来说加一子 程序就是进行和字 加一 拆字过程 减一子程序的编程方法与加一 子程序的设计方法一样也是进行和字 减一 拆字 显示子程序的设 计方法是 显示首先要有显示缓冲区 显示缓冲区存放的是需要显示 的字符在段控表中的序号 将其序号送给 A 再通过变址寻址的方法在 段控表中取出字符送给 P0 口 至于位控码则将其一一取出送给 P2 口 每取一次位控和 段控需要延时一段时间 这时动态显示的原理 由 于人眼的视觉效应 必须延时 通过以上对本设计方案的分析 硬件 设计可以实现 软件设计也可以实现 所以最后决定选用次方案进行 电子钟的设计 3 3 电路图电路图 3 1 硬件设计原理图 硬件设计原理图 9 10 11 3 2 程序设计流程图程序设计流程图 开开 始始 现现场场保保护护 入入栈栈 改改变变寄寄存存器器组组组组号号 重重装装定定时时器器计计数数初初值值 中中断断次次数数减减1 1 满满8 8次次 秒秒值值加加1 1 满满6 60 0秒秒 秒秒缓缓冲冲单单元元清清0 0 分分值值加加1 1 满满6 60 0分分 分分缓缓冲冲单单元元清清0 0 2 2 1 1 1 1 1 1 电电子子钟钟中中断断服服务务程程序序流流程程框框图图 Y Y Y Y Y Y N N N N N N 12 调调键键扫扫描描子子程程序序 3 3 有有键键按按下下 2 2 A A键键按按下下 Y Y N N Y Y N N B B键键按按下下 Y Y N N C C键键按按下下 N N D D键键按按下下 Y Y Y Y N N 调调显显示示子子程程序序 2 2 开开电电子子钟钟 1 1 时时加加1 124小时时时清清0 0 分分加加1 160分分分清清0 0 秒秒加加1 160秒秒秒清清0 0 Y Y Y Y Y Y N N N N N N 电电子子钟钟调调整整运运行行监监控控程程序序流流程程框框图图 13 4 4 程序设计程序设计 4 14 1 程序设计清单程序设计清单 include reg52 h define uchar unsigned char define uint unsigned int uchar code dkb 0 xc0 0 xf9 0 xa4 0 xb0 0 x99 0 x92 0 x82 0 xf8 0 x80 0 x90 0 x88 0 x83 0 xc6 0 xa1 0 x8 6 0 x8e 0 xff 0 x0c 0 xbf uchar code xsxhb 16 16 16 16 16 16 16 17 uchar code wkb 0 xfe 0 xfd 0 xfb 0 xf7 0 xef 0 xdf 0 xbf 0 x7f uchar led 8 uchar time mao time fen time shi uchar zdcs 0 void led auto void time0 interrupt 1 using 3 zdcs if zdcs 20 zdcs 0 if time mao 59 time mao 0 if time fen 59 time fen 0 if time shi 23 time shi 0 led auto TH0 0 x3c TL0 0 xb0 void led auto led 0 time mao 10 led 1 time mao 10 led 3 time fen 10 led 4 time fen 10 led 6 time shi 10 led 7 time shi 10 main uchar key uchar uchar ks uchar 14 void xianshi void yanshi1ms uchar uchar sonshu zhjianzhi bzw tzbzw bcbzw bit bzw0 bzw 0 bit bzw1 bzw 1 bit bzw2 bzw 2 bit bzw3 bzw 3 bzw3 0 bzw1 0 bzw2 0 bzw0 0 EA 1 ET0 1 TMOD 0 x01 TH0 0 x3c TL0 0 xb0 for sonshu 0 sonshu 8 sonshu led sonshu xsxhb sonshu while 1 xianshi zhjianzhi key loop switch zhjianzhi case 0 break case 1 bzw0 bzw0 if bzw0 1led 1 0 led 2 0 x12 led 3 0 led 4 0 led 5 0 x12 led 6 0 led 7 0 TR0 1 bzw1 1 if bzw0 1bzw3 0 if bzw0 0 TR0 0 bzw3 0 break case 2 if bzw0 1 bzw1 0 break bzw3 1 tzbzw if tzbzw 1 uchar a0 bcbzw tzbzw loop1 led 0 16 led 1 16 bzw2 bzw2 if bzw2 1 loop2 for a0 0 a0 65 a0 xianshi zhjianzhi key if zhjianzhi goto loop goto loop1 15 else led auto goto loop2 if tzbzw 2 uchar a0 bcbzw tzbzw loop3 led 3 16 led 4 16 bzw2 bzw2 if bzw2 1 loop4 for a0 0 a0 65 a0 xianshi zhjianzhi key if zhjianzhi goto loop goto loop3 else led auto goto loop4 if tzbzw 3 uchar a0 bcbzw tzbzw tzbzw 0 loop5 led 6 16 led 7 16 bzw2 bzw2 if bzw2 1 loop6 for a0 0 a0 65 a0 xianshi zhjianzhi key if zhjianzhi goto loop goto loop5 else led auto goto loop6 case 4 if bzw0 1 bzw1 0 bzw3 0 break if bcbzw 1 if time mao 59 time mao 0 goto loop1 if bcbzw 2 if time fen 59 time fen 0 goto loop3 16 if bcbzw 3 if time shi 23 time shi 0 goto loop5 case 8 if bzw0 1 bzw1 0 bzw3 0 break if bcbzw 1 if time mao 0 time mao 59 goto loop1 if bcbzw 2 if time fen 0 time fen 59 goto loop3 if bcbzw 3 if time shi 0 time shi 23 goto loop5 void yanshi1ms uchar ys uchar yscs while ys ys for yscs 0 yscs 90 yscs void xianshi uchar xuhao qdk for xuhao 0 xuhao 8 xuhao qdk led xuhao P0 dkb qdk P2 wkb xuhao yanshi1ms 1 uchar ks uchar k 17 P1 0 xff k P1 k k return k uchar key uchar jianzhi uchar jianzhi0 jianzhi ks if jianzhi xianshi xianshi jianzhi ks while jianzhi jianzhi0 jianzhi jianzhi ks xianshi jianzhi jianzhi0 return jianzhi 18 5 电子钟的使用说明及调试运行 5 1使用说明书 5 1 1操作说明 1 时间显示 电子钟上电后 8个数码管显示初始状态即最左边的一个数码管显示 P 如果未显 示 P 只需按一下复位键即可使其显示出 P 按下 A 键后电子钟进入自动计时状 态 电子钟显示00时00分00秒并开始运行 2 时间调整 若要进行时间调整 则需再次按下 A 键 进入时间调整状态 然后分别按下 B 键 调时 按下 C 键调分 按下 D 键调秒 按下 B C D 键并松开可使电子钟的时 分 秒分别加一 调整好

温馨提示

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

评论

0/150

提交评论