Word版可编辑-基于单片机电子万历设计精心整理.doc_第1页
Word版可编辑-基于单片机电子万历设计精心整理.doc_第2页
Word版可编辑-基于单片机电子万历设计精心整理.doc_第3页
Word版可编辑-基于单片机电子万历设计精心整理.doc_第4页
Word版可编辑-基于单片机电子万历设计精心整理.doc_第5页
已阅读5页,还剩22页未读 继续免费阅读

下载本文档

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

文档简介

大连民族学院机电信息工程学院大连民族学院机电信息工程学院 自动化系自动化系 单片机系统课程设计报告单片机系统课程设计报告 题题 目 目 电子万年历电子万年历 专专 业 业 自动化自动化 班班 级 级 106 学生姓名 学生姓名 指导教师 指导教师 设计完成日期 设计完成日期 2012 年年 11 月月 30 日日 课程设计任务书 题目 电子万年历 课程设计时间 2012 11 12 2012 11 30 一 设计任务 给定时钟芯片 DS12C887 和单片机最小系统 学习使用单片机最小系统 设计万年历电路和闹钟报时电路 完成相关的软件设计并进行万年历显示 二 设计内容及要求 系统设计的方案 检测电路和过程通道的设计 系统软件设计与实现 需要的详细材料和工具清单 设计的性能指标 撰写设计报告 资料归档 三 设计重点 检测电路和过程通道设计 系统软件设计 调试 四 课程设计进度要求 12 11 12 12 11 14 系统方案设计 12 11 15 12 11 16 检测电路和过程通道设计 12 11 19 12 11 21 完成系统硬件设计与实现 12 11 22 12 11 23 完成系统软件编程 12 11 26 12 11 29 系统调试及撰写设计报告 12 11 30 验收答辩 五 参阅书目 1 郭天祥 新概念 51 单片机 C 语言教程 M 北京 电子工业出版社 2009 2 胡汉才 单片机原理与接口技术 M 北京 清华大学大学出版社 2004 1 505 3 邢国泉 LM35 温度传感器的温度特性及其应用 J 医疗设备信息 2007 11 25 28 1 目 录 1 任务分析和性能指标 1 1 1 任务分析 1 1 2 性能指标 1 1 3 显示部分 1 1 4 键盘部分 2 2 总体方案设计 2 2 1 硬件方案如图 2 2 2 设计过程 3 2 3 合理分配内存 3 2 4 整个系统的流程框图如图 3 2 5 软件方案 4 3 硬件设计与实现 4 3 1 显示电路如图 5 3 2 控制电路 6 3 3 芯片功能特性简述 8 4 软件设计与实现 9 4 1 主程序 9 4 2 子程序 10 5 调试及性能分析 20 5 1 调试原理图如图 20 5 2 软件调试 20 5 3 硬件调试 20 5 4 系统性能分析 20 六 总 结 21 七 参考文献 21 八 附录 21 附录 1 元器件清单 21 附录 2 调试系统照片 23 电子万年历 0 1 任务分析和性能指标 1 1 任务分析 设计一个具有报时功能 停电正常运行 来电无需校时 闹钟功能 带有年月 日 时分秒及星期显示的电子日历 电子万年历是日常生活中常见的小型电子产品 其形式多种多样 小到带有日期 的电子腕表 大到公共场所悬挂的大型电子日历 此外 眼下我们还常能在宾馆 饭 店等场所见到一种带有年 月 日 时 分 秒 星期甚至节气等信息的电子日历牌 电子日历的主要功能是给人们提供时间和日期信息 无论其形式如何 从外部都 可分为显示和校准两部分 为使电子日历协调工作 整个系统从功能上可分为实时时 钟 显示和键盘三个模块 分别完成时间和日期的计算以及人机交互的管理等 1 2 性能指标 实时时钟 RTC Real Time Clock 是系统的核心 其运行精度直接影响产品质量 实时时钟的实现有两种方案可选 一是利用单片机系统时钟和中断完成时间和日期的 计算 二是利用专用时钟芯片 前者不用附加芯片 系统简单 但是累计误差较大 只有短时计时才可使用 长时间计时一般都采用后者 后者采用 32 768KHz 晶体振荡 器振作为脉冲源 内部的 15 位计数器刚好产生标准秒脉冲 该类芯片除时钟计时外 还有年月日和星期的计算功能 并且还可计算闰年 芯片初始化后可脱离 CPU 自动运 行 有些芯片内部带有电池 出厂时芯片即开始运行 专用时钟芯片的种类很多 与 CPU 的通信方式有并行 也有串行 常见的芯片有 DALLAS 公司生产的 DS1302 和 DS12C887 前者为串行 需要外加后备电池 后者为并行 芯片内置锂电池和晶体振 荡器 无外加电源的情况下可运行 10 年 此外 还有许多时钟芯片 如 Epson Holtek 深圳兴威帆等公司都推出自己的时钟芯片 这次我们选用的芯片是 DS12C887 1 3 显示部分 简单的数据显示常采用液晶显示或数码管显示 液晶显示有耗电低 外形美观的 优点 并且 点阵液晶可显示较复杂的字符或图案 其缺点是通用液晶显示器的显示 方案构建不够灵活 在较暗的环境下液晶需要背光 而且 液晶显示成本较高 相对 液晶显示器来讲 由于数码管种类繁多 其显示方案构建灵活 成本较低 由于本身 电子万年历 1 即是发光体 所以 数码管显示无需额外光源 数码管的缺点是功耗较大 字符较多 时 必须交流供电 而且 数码管不能显示复杂字型 所以 液晶和数码管两个方案 的选择要根据显示的具体情况而定 值得一提的是 数码管串行静态显示和并行动态 显示在位数较多时都会出现显示不稳定现象 所以这次我们选用 LED1602 液晶 1 4 键盘部分 时钟的设置虽包含数字 但是我们不建议使用数字键盘 应为数字键盘将增加系 统的复杂程度 为使系统尽可能简化 键盘部分的设计在能够完成系统要求的前提下 越简单越好 所以 时钟系统的键盘可以设置四个键 功能选择键 加 1 键 减 1 键 闹钟键 2 总体方案设计 2 1 硬件方案如图 2 2 设计过程 认真领会设计要求 确定系统功能 包括显示信息 按键个数 报时功能 闹 钟功能等 样品外观设 确定系统显示信息 显示器种类 液晶 数码管 显示器尺寸等 硬件初步设计 选定 DS12C887 芯片 选定显示方式 动态 静态 串行 并行 按键个数 系统原理图设计按照前几步规划 设计系统原理图 此时应认真研究学习 DS12C887 芯片的使用方法 正确连接 DS12C887 芯片 设计 键盘及显示电路 系统软件设计 单片机 显示系统 DS12C887键盘 图 1 电子万年历的系统框图 电子万年历 2 系统软件可分为键盘管理 显示管理 报时管理和 DS12C887 管理三部分 软件 可由汇编语言完成 也可由 C 语言完成 我选择 C 语言 2 3 合理分配内存 内存是系统宝贵的资源之一 为合理利用内存 应对内存使用通盘考虑 并反复 修改使用方案 使之达到最合理利用 应尽量少使用全局变量 以提高内存的利用率 有效利用 CPU 内存和外围器件内存 一般情况下不建议扩展系统内存 2 4 整个系统流程图 图 2 软件部分程序流程图 Y N 内存变量初始化 报时点 显示缓冲区等 系统硬件初始化 显示器 DS12C887 芯片等 系统硬件初始化 显示器 DS12C887 芯片等 扫描键盘 键盘分析处理 显示管理 开始 上电复位 Y 电子万年历 3 2 5 软件方案 C 语言编属于高级语言 具有可移植性 能够结构化编程 使用标准 C 语言的程 序 几乎都可以不作改变移植到不同的微机平台上 对于嵌入式等的微控制芯片 属 于标准 C 语言的部分也很少需要修改 而且程序很容易读懂 C 语言编写程序结构清晰 移植性好 容易维护和修改 汇编语言针对不同的操作系统平台 不同的微控制器 指令都是完全不同的 即 使指令相似 也不具有可移植性 但是汇编语言是针对专门的控制器的 所以运行速 度可以精确到一个指令周期 汇编语言的程序读懂需要借助微控制器的指令手册以及 各个寄存器的说明 所以很难读懂 汇编语言编写代码实时性强 能够直接控制硬件的工作状态 但是不具有可移植性 维护和修改困难 经过我们三人的讨论我们决定使用 c 语言来编写程序 因为 c 语言程序容易学 也很容易读懂 编写程序结构清晰 易于我们组员之间的讨论和学习 而且相对于汇 编我们更加擅长 c 语言 3 硬件设计与实现 由于 DS12C887 能够自动产生世纪 年 月 日 时 分 秒等时间信息 其 内部又增加了世纪寄存器 从而利用硬件电路 解决子 千年 问题 DS12C887 中自 带有锂电 池 外部掉电时 其内部时间信息还能够保 持 10 年之久 对于一天内的 时间记录 有 12 小时制和 24 小时制两种模式 在 12 小时 制模式中 用 AM 和 PM 区分上午和下午 时间的表示方法也有两种 一种用二进制数 表示 一种是用 BCD 码表示 DS12C887 中 带有 128 字节 RAM 其中有 11 字节 RAM 用来存储 时间信息 4 字节 RAM 用来存储 DS12C887 的控制信息 称为控制寄存器 113 字 节通用 RAM 使用户使用 此外用户还 可对 DS12C887 进行编程以实现多种方波输 出 并可对其内部的三路中断通过软件进行 屏蔽 使用其于单片机 89C52 控制 DS12C877 就能很好的实现时钟需要的基本功能 而显示部分我们采用 LCD 液晶显示 电子万年历 4 屏 液晶显示屏的显示功能强大 可显示文字 图形 显示多样 清晰可见 而其体 积较小 使用方便 可以使电路更加简洁 所以选择了液晶显示器 3 1 显示电路如图 图 3 LED 液晶显示 电子万年历 5 3 2 控制电路 图 4 单片机最小系统原理图 电子万年历 6 图 5 时钟芯片原理图 图 6 按键原理图 电子万年历 7 3 3 芯片功能特性简述 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 40 39 38 37 36 35 34 33 32 31 30 29 28 27 26 25 24 23 22 21 P1 0 P1 1 P1 2 P1 3 P1 4 P1 5 P1 6 P1 7 RST VPD P3 0 RXD P3 1 TXD P3 2 INT0 P3 3 INT1 P3 4 T0 P3 5 T1 P3 6 WR P3 7 RD XTAL2 XTAL1 VSS VCC P0 0 P0 1 P0 2 P0 3 P0 4 P0 5 P0 6 P0 7 EA VPP ALE PROG PSEN P2 7 P2 6 P2 5 P2 4 P2 3 P2 2 P2 1 P2 0 STC89C52 图 7 单片机引脚 电子万年历 8 STC89C52 是一种低功耗 高性能 CMOS8 位微控制器 具有 8K 在系统可编程 Flash 存储器 使用高密度非易失性存储器技术制造 与工业 80C51 产品指令和引脚 完全兼容 片上 Flash 允许程序存储器在系统可编程 亦适于常规编程器 在单芯片上 拥有灵巧的 8 位 CPU 和在线系统可编程 Flash 使得 STC89C52 为众多嵌入式控制应 用系统提供高灵活 超有效的解决方案 STC89C52 具有以下标准功能 8k 字节 Flash 256 字节 RAM 32 位 I O 口线 看门狗定时器 2 个数据指针 三个 16 位 定时器 计数器 一个 6 向量 2 级中断结构 全双工串行口 片内晶振及时钟电路 另 外 STC89C52 可降至 0Hz 静态逻辑操作 支持 2 种软件可选择节电模式 空闲模式 下 CPU 停止工作 允许 RAM 定时器 计数器 串口 中断继续工作 掉电保护方 式下 RAM 内容被保存 振荡器被冻结 单片机一切工作停止 直到下一个中断或硬 件复位为止 8 位微控制器 8K 字节在系统可编程 Flash 4 软件设计与实现 include define uchar unsigned char define uint unsigned int sbit S1 P1 0 sbit S2 P1 1 sbit S3 P1 2 sbit S4 P1 3 sbit rs P3 5 数据 命令选择端 H L sbit lcden P3 4 使能信号 sbit beep P3 6 sbit dscs P1 4 片选端 低电平有效 sbit dsas P1 5 sbit dsrw P1 6 sbit dsds P1 7 数据选择或读输入引脚 sbit dsirq P3 3 中断请求输出 低电平有效 bit flag1 flag ri 定义两个变量 uchar count s1num flag t0 num char miao shi fen year month day week amiao afen ashi uchar code table 2012 11 16 uchar code table1 20 06 12 void write ds uchar uchar void set alarm uchar uchar uchar void read alarm 电子万年历 9 void set time uchar read ds uchar void delay uint z uint x y for x z x 0 x for y 110 y 0 y void di 蜂鸣器报警声音 beep 0 delay 100 beep 1 void write com uchar com 写液晶命令函数 rs 0 lcden 0 P2 com delay 3 lcden 1 delay 3 lcden 0 void write date uchar date 写液晶数据函数 rs 1 lcden 0 P2 date delay 3 lcden 1 delay 3 lcden 0 void init 初始化函数 uchar num EA 1 总中断 EX1 1 外部中断 1 IT1 1 负跳变沿触发中断 flag1 0 变量初始化 t0 num 0 电子万年历 10 s1num 0 week 1 lcden 0 write ds 0 x0a 0 x20 打开振荡器 write ds 0 x0b 0 x26 设置 24 小时模式 数据二进制格式 开启闹铃中断 set time write com 0 x38 1602 液晶初始化 write com 0 x0c write com 0 x06 write com 0 x01 write com 0 x80 for num 0 num 15 num 写入液晶固定部分显示 write date table num delay 1 write com 0 x80 0 x40 for num 0 num 10 num write date table1 num delay 1 void write sfm uchar add char date 1602 液晶刷新时分秒函数 2 为时 5 为 分 8 为秒 char shi ge shi date 10 ge date 10 write com 0 x80 0 x40 add write date 0 x30 shi write date 0 x30 ge void write nyr uchar add char date 1602 液晶刷新年月日函数 3 为年 6 为 月 9 为日 char shi ge shi date 10 ge date 10 write com 0 x80 add 电子万年历 11 write date 0 x30 shi write date 0 x30 ge void write week char we 1602 液晶刷新星期函数 write com 0 x80 12 switch we case 1 write date M delay 5 write date O delay 5 write date N break case 2 write date T delay 5 write date U delay 5 write date E break case 3 write date W delay 5 write date E delay 5 write date D break case 4 write date T delay 5 write date H delay 5 write date U break case 5 write date F delay 5 write date R delay 5 write date I break case 6 write date S delay 5 write date A delay 5 write date T break case 7 write date S delay 5 write date U delay 5 write date N break void keyscan 取消时钟报警 按任意键取消报警 if flag ri 1 电子万年历 12 if S1 0 S2 0 S3 0 S4 0 delay 5 if S1 0 S2 0 S3 0 S4 0 while S1 0 S2 0 S3 0 S4 0 di flag ri 0 清除报警标志 if S1 0 检测 S1 delay 5 if S1 0 s1num if flag1 1 if s1num 4 s1num 1 flag 1 while S1 0 di switch s1num 光标闪烁点定位 case 1 write com 0 x80 0 x40 8 write com 0 x0f break case 2 write com 0 x80 0 x40 5 break case 3 write com 0 x80 0 x40 2 break case 4 write com 0 x80 12 break case 5 write com 0 x80 9 break case 6 write com 0 x80 6 break case 7 write com 0 x80 3 break case 8 s1num 0 write com 0 x0c 电子万年历 13 flag 0 write ds 0 miao write ds 2 fen write ds 4 shi write ds 6 week write ds 7 day write ds 8 month write ds 9 year break if s1num 0 只有当 S1 按下后 才检测 S2 和 S3 if S2 0 delay 1 if S2 0 while S2 0 di switch s1num 根据功能键次数调节相应数值 case 1 miao if miao 60 miao 0 write sfm 8 miao write com 0 x80 0 x40 8 break case 2 fen if fen 60 fen 0 write sfm 5 fen write com 0 x80 0 x40 5 break case 3 shi if shi 24 shi 0 write sfm 2 shi write com 0 x80 0 x40 2 break case 4 week 电子万年历 14 if week 8 week 1 write week week write com 0 x80 12 break case 5 day if day 32 day 1 write nyr 9 day write com 0 x80 9 break case 6 month if month 13 month 1 write nyr 6 month write com 0 x80 6 break case 7 year if year 100 year 0 write nyr 3 year write com 0 x80 3 break if S3 0 delay 1 if S3 0 while S3 0 di switch s1num case 1 miao if miao 1 miao 59 write sfm 8 miao write com 0 x80 0 x40 8 break case 2 fen 电子万年历 15 if fen 1 fen 59 write sfm 5 fen write com 0 x80 0 x40 5 break case 3 shi if shi 1 shi 23 write sfm 2 shi write com 0 x80 0 x40 2 break case 4 week if week 0 week 7 write week week write com 0 x80 12 break case 5 day if day 0 day 31 write nyr 9 day write com 0 x80 9 break case 6 month if month 0 month 12 write nyr 6 month write com 0 x80 6 break case 7 year if year 1 year 99 write nyr 3 year write com 0 x80 3 break if S4 0 delay 5 电子万年历 16 if S4 0 flag1 flag1 while S4 0 di if flag1 0 flag 0 write com 0 x80 0 x40 write date write date write com 0 x0c write ds 1 miao write ds 3 fen write ds 5 shi else 进入闹钟设置 read alarm 读取原始数据 miao amiao 重新赋值用按键调节 fen afen shi ashi write com 0 x80 0 x40 write date L 显示标志 write date write com 0 x80 0 x40 3 write sfm 2 ashi 送液晶显示闹钟时间 write sfm 5 afen write sfm 8 amiao void write ds uchar add uchar date 12C887 函数 dscs 0 dsas 1 dsds 1 dsrw 1 P2 add 先写地址 dsas 0 dsrw 0 P2 date 再写数据 电子万年历 17 dsrw 1 dsas 1 dscs 1 uchar read ds uchar add 读 12C887 函数 uchar ds date dsas 1 dsds 1 dsrw 1 dscs 0 P2 add 先写地址 dsas 0 dsds 0 P2 0 xff ds date P2 再读数据 dsds 1 dsas 1 dscs 1 return ds date void set time write ds 0 0 write ds 1 0 write ds 2 0 write ds 3 0 write ds 4 0 write ds 5 0 write ds 6 0 write ds 7 0 write ds 8 0 write ds 9 0 void read alarm amiao read ds 1 afen read ds 3 ashi read ds 5 void main init 电子万年历 18 while 1 keyscan 按键扫描 if flag ri 1 当闹钟中断时进入这里 di delay 100 di delay 500 if flag 0 按键扫描 year read ds 9 读取 12C887 数据 month read ds 8 day read ds 7 week read ds 6 shi read ds 4 fen read ds 2 miao read ds 0 if fen 0 delay 100 di delay 500 write sfm 8 miao 送液晶显示 write sfm 5 fen write sfm 2 shi write week week write nyr 3 year write nyr 6 month

温馨提示

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

评论

0/150

提交评论