




已阅读5页,还剩59页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
目 录 1 1 绪论绪论 2 2 2 总体设计方案总体设计方案 3 2 12 1 设计思路设计思路 3 2 22 2 设计方案设计方案 3 2 32 3 方案比较论证方案比较论证 3 2 42 4 总体设计方框图总体设计方框图 4 3 3 设计原理与分析设计原理与分析 5 3 13 1 硬件电路主要芯片的功能介绍硬件电路主要芯片的功能介绍 5 3 1 13 1 1 单片机主控制器单片机主控制器 5 3 1 23 1 2 温度传感器芯片温度传感器芯片 6 3 1 33 1 3 时钟芯片时钟芯片 DS1302DS1302 10 3 1 43 1 4 16 2LCD16 2LCD 液晶显示液晶显示 16021602 13 4 4 硬件电路硬件电路 16 4 14 1 单片机主控制模块的设计单片机主控制模块的设计 16 4 24 2 时钟电路模块的设计时钟电路模块的设计 16 4 34 3 温度采集模块设计温度采集模块设计 17 4 44 4 功能按钮设计功能按钮设计 17 4 54 5 16 216 2 LCD1602LCD1602 液晶显示电路设计液晶显示电路设计 18 4 64 6 总体电路图总体电路图 18 5 5 系统软件设计系统软件设计 19 5 15 1 系统模块的功能分划分系统模块的功能分划分 19 5 25 2 总体程序流程框图总体程序流程框图 19 5 35 3 时钟调整时间的流程图时钟调整时间的流程图 21 5 45 4 修改键修改键 UP UP 的功能流程图的功能流程图 22 5 55 5 温度转换流程图温度转换流程图 23 6 6 系统仿真测试系统仿真测试 24 6 16 1 KEILKEIL 的使用的使用 24 6 26 2 P PROTUESROTUES软件仿真软件仿真 29 致致 谢谢 32 参考文献参考文献 33 附录一附录一 总体电路的总体电路的 PCBPCB 板图板图 34 附录二附录二 设计电路的仿真电路图设计电路的仿真电路图 35 附录二附录二 万年历源程序万年历源程序 36 1 1 绪论 随着电子技术的迅速发展 特别是随大规模集成电路出现 给人类生活带 来了根本性的改变 由其是单片机技术的应用产品已经走进了千家万户 其中 电子万年历就是一个典型的例子 而且在万年历的基础上还可以扩展其它的实 用功能 比如温度计 万年历是采用数字电路实现对 时 分 秒 数字显示的计时装置 广泛用 于个人家庭 车站 码头办公室等公共场所 成为人们日常生活中不可少的必 需品 由于数字集成电路的发展和石英晶体振荡器的广泛应用 使得数字钟的 精度 远远超过老式钟表 钟表的数字化给人们生产生活带来了极大的方便 而且大大地扩展了钟表原先的报时功能 诸如定时自动报警 按时自动打铃 时间程序自动控制 定时广播 自动起闭路灯 定时开关烘箱 通断动力设备 甚至各种定时电气的自动启用等 但是所有这些 都是以钟表数字化为基础的 因此 研究万年历及扩大其应用 有着非常现实的意义 市场上有许多电子钟的专用芯片如 LM8363 LM8365 等 但它们功能 单一 电路连接复杂 不便于调试制作 但是考虑到用单片机配合时钟芯片 可制成功能任意的电子钟 而且可以做到硬件简单 成本低廉 所以本系统采 用了以广泛使用的单片机 AT89S52 技术为核心 配合时钟芯片 DS1302 软 硬件结合 使硬件部分大为简化 提高了系统稳定性 并采用 LCD 显示电路 键盘电路 使人机交互简便易行 此外结合音乐闹铃电路 看门狗和供电电路 本方案设计出的数字钟可以显示时间 设置闹铃功能之外 本文首先描述系统硬件工作原理 并附以系统结构框图加以说明 着重介 绍了本系统所应用的各硬件接口技术和各个接口模块的功能及工作过程 其次 详细阐述了程序的各个模块和实现过程 本设计以数字集成电路技术为基础 单片机技术为核心 本文编写的主导思想是软硬件相结合 以硬件为基础 来 进行各功能模块的编写 本设计中我重点研究实现了单片机 时钟芯片这种模式的万年历 从原理 上对单片机和时钟芯片有了深一步的认识 这些基本功能完成后 在软件基础 上实现时间显示 2 2 总体设计方案总体设计方案 2 1 设计思路 用 AT89S52 处理产生内部时钟数据或者读取外部时钟数据和采集外部传感 器的信息进行处理 并暂时寄存在其内部的储存器中 再通过单片机调用内部 RAM 的数据并送到 LCD 或者 LED 数码管上显示出来 2 2 设计方案 方案 1 单片机一般的工作频率在 12MHz 左右 而且内部还有定时 计数 器 可以产生精确的 1S 定时 由次可以用定时中断的方式产生精确的 1S 时间 秒位不断的加 1 再设计分 时 星期 日 月 年之间的进制 使产生进位 本方案只需要单片机最小系统加上显示电路 再设计简单的程序算法就可以实 现 对于测温电路 可以使用热敏电阻之类的器件利用其感温效应 在将随被 测温度变化的电压或电流采集过来 进行 A D 转换后 就可以用单片机进行数 据的处理 在显示电路上 采用数码管就可以将年月日星期时分秒和室内温度 显示出来 方案 2 万年历时钟采用单片机控制 DS1302 实时时钟芯片 能达到走时准 确且掉电不丢失数据的 DS1302 与单片机之间能简单地采用同步串行的方式进 行通信仅需用到三个口线 1 RES 复位 2 I O 数据线 3 SCLK 串行时钟 温度计要灵敏反映室温的变化这样可采用单片机与数字式温度传感器 DS18B20 通讯 采集温度数字信号进行处理 DS18B20 通过一个单线接口发送或 接受信息 因此在单片机与 DS18B20 之间仅需一条连接 加上地线 在显示电 路上 采用 16 2 的 LCD 显示 2 3 方案比较论证 对于方案 1 单片机虽然可以产生精确的秒信号 但是单片机在处理闰年 上会比较麻烦 加之一旦单片机断电后 所有的时间都要重新调整 对于测温 电路 采用热敏电阻的输出电压 温度特性 要加上 A D 转换 温度传感信息才 能被单片机所接受 这种设计需要用到 A D 转换电路 感温电路比较麻烦 在 显示电路上 采用 LED 数码的话要用到单片机的许多 I O 口 甚至 I O 不够用 还需要接上其它芯片大量扩展 I O 口 这是一个弊处 对于方案 2 单片机不用去产生时钟的数据 时钟的数据由 DS1302 独立产 生 并寄存在其内部的寄存器上 单片机可以通过三总线与它通讯 不仅可以 对它进行读取实时时钟数据 还可以对它进行编程 设置它的工作模式 单片 机只是处理从 DS1302 读出来的数据并送显示 大大减少了单片机的负担 而且 DS1302 可以通过后备电池继续工作 内部的时钟还在走 下次启动后不用去调 整时钟 方便使用 基于同样的原理 DS18B20 也是一个独立的传感器 只要 单片机配置它的工作状态后它就可以独立工作 内部已经把模拟信号转换成数 字信号 并把数字信号储存在其内部的寄存中 同样 单片机通过单总线与它 通讯 可以处理 9 12 位的温度数字数据 在显示电路上 采用 16 2 LCD 液晶 显示器 能容纳年月日星期时分秒温度等信息的显示 LCD 显示器只需占用 11 个 I O 口就可以工作了 不用其它扩展芯片 总体上使电路简单化 2 4 总体设计方框图 总体的方框图如图 2 1 所示 控制器采用单片机 AT89S52 温度传感器采用 DS18B20 用 16 2 的 LCD 液晶显示屏实现年 月 日 星期 时 分 秒 温 度的显示 图 2 1 总体设计方框图 AT89S52 主控制器 DS1302 时钟芯片 DS18B20 温度传感 复位按键 LCD 显示器 键盘 12MHz 晶振振荡 3 3 设计原理与分析设计原理与分析 3 1 硬件电路主要芯片的功能介绍 本次设计的万年历系统主要包括单片机主控制器 温度传感器芯片 时钟芯 片 DS1302 芯片 16 2LCD 显示芯片 3 1 13 1 1 单片机主控制器单片机主控制器 AT89S52 是一种低功耗 高性能 CMOS8 位微控制器 具有 8K 在系统可编程 Flash 存储器 使用 Atmel 公司高密度非易失性存储器技术制造 与工业 80C51 产品指令和引脚完全兼容 片上 Flash 允许程序存储器在系统可编程 亦适于常规编程器 在单芯片上 拥有灵巧的 8 位 CPU 和在系统可编程 Flash 使得 AT89S52 为众多嵌入式控制应用系统提供高灵活 超有效的解决方 案 AT89S52 具有以下标准功能 8k 字节 Flash 256 字节 RAM 32 位 I O 口 线 看门狗定时器 2 个数据指针 三个 16 位定时器 计数器 一个 6 向量 2 级中断结构 全双工串行口 片内晶振及时钟电路 另外 AT89S52 可降至 0Hz 静态逻辑操作 支持 2 种软件可选择节电模式 空闲模式下 CPU 停止工 作 允许 RAM 定时器 计数器 串口 中断继续工作 掉电保护方式下 RAM 内容被保存 振荡器被冻结 单片机一切工作停止 直到下一个中断或硬件复 位为止 1 1 AT89S52AT89S52的简介 AT89S52是一个低功耗 高性能CMOS 8位单片机 片内含8k Bytes ISP In system programmable 的可反复擦写1000次的Flash只读程序存储器 器件采用 ATMEL公司的高密度 非易失性存储技术制造 兼容标准MCS 51指令系统及80C51 引脚结构 芯片内集成了通用8位中央处理器和ISP Flash存储单元 功能强大的 微型计算机的AT89S52可为许多嵌入式控制应用系统提供高性价比的解决方案 AT89S52具有如下特点 40个引脚 8k Bytes Flash片内程序存储器 256 bytes的随机存取数据存储器 RAM 32个外部双向输入 输出 I O 口 5个中 断优先级2层中断嵌套中断 2个16位可编程定时计数器 2个全双工串行通信口 看门狗 WDT 电路 片内时钟振荡器 此外 AT89S52设计和配置了振荡频率可为0Hz并可通过软件设置省电模式 空闲模式下 CPU暂停工作 而RAM定时计数器 串行口 外中断系统可继续工作 掉 电模式冻结振荡器而保存RAM的数据 停止芯片其它功能直至外中断激活或硬件 复位 2 2 AT89S52AT89S52的内部结构图 AT89S52的内部结构图如图3 1所示 图3 1 AT89S52内部结构图 3 1 23 1 2 温度传感器芯片温度传感器芯片 1 1 单线温度传感器DS18B20DS18B20介绍 DS18B20 温度传感器是美国 DALLAS 半导体公司最新推出的一种改进型智能 温度传感器 与传统的热敏电阻等测温元件相比 它能直接读出被测温度 并 且可根据实际要求通过简单的编程实现 9 12 位的数字值读数方式 DS18B20 的性能特点如下 独特的单线接口仅需要一个端口引脚进行通信 多个 DS18B20 可以并联在惟一的三线上 实现多点组网功能 无须外部器件 可通过数据线供电 电压范围为 3 0 5 5 零待机功耗 温度以 9 或 12 位数字 用户可定义报警设置 报警搜索命令识别并标志超过程序限定温度 温度报警条件 的器件 负电压特性 电源极性接反时 温度计不会因发热而烧毁 但不能正常 工作 DSl8B20 数字温度计提供 9 位 二进制 温度读数 指示器件的温度 信息 经过单线接口送入 DSl8B20 或从 DSl8B20 送出 因此从主机 CPU 到 DSl8B20 仅需一条线 和地线 DSl8B20 的电源可以由数据线本身提供而不需要外部电 源 因为每一个 DSl8B20 在出厂时已经给定了唯一的序号 因此任意多个 DSl8B20 可以存放在同一条单线总线上 这允许在许 多不同的地方放置温度敏感器件 DSl8B20 的测量范 围从 55 摄式度到 125 摄式度 增量值为 0 5 摄式度 可在 l s 典型值 内把温度变换成数字 每一个 DSl8B20 包括一个唯一的 64 位长的序号 该序号值存放在 DSl8B20 内部的 ROM 只读存贮器 中 开始 8 位是产品类型编码 DSl8B20 编码均为 10H 接 着的 48 位是每个器件唯一的序号 最后 8 位是前面 56 位的 CRC 循环冗余校验 码 DSl8B20 中还有用于存储测得的温度值的两个 8 位存贮器 RAM 编号为 0 号和 1 号 1 号存贮器存放温度值的符号 如果温度为负 摄式度 则 1 号存贮器 8 位全为 1 否则全为 0 0 号存贮器用于存放温度值的补码 LSB 最低位 的 1 表示 0 5 摄式度 将存贮器中的二进制数求补再转换成十进制数并除以 2 就得 到被测温度值 55 摄式度 125 摄式度 DSl8B20 的引脚如图 3 2 所示 每只 DS18B20 都可以设置成两种供电方式 即数据总线供电方式和外部供电方式 采取数据总线供电方式可以节省一根导线 但完成温度测量的时间较长 采取 外部供电方式则多用一根导线 但测量速度较快 2 2 DS18B20DS18B20 的测温原理 器件中低温度系数晶振的振荡频率受温度的影响很小 用于产生固定频率 的脉冲信号送给减法计数器 1 高温度系数晶振随温度变化其振荡频率明显改 变 所产生的信号作为减法计数器 2 的脉冲输入 器件中还有一个计数门 当 计数门打开时 DS18B20 就对低温度系数振荡器产生的时钟脉冲进行计数进而 完成温度测量 计数门的开启时间由高温度系数振荡器来决定 每次测量前 首先将 55 所对应的一个基数分别置入减法计数器 1 温度寄存器中 计数 器 1 和温度寄存器被预置在 55 所对应的一个基数值 减法计数器 1 对低温度系数晶振产生的脉冲信号进行减法计数 当减法计 图 3 2 DSl8B20 的引脚 图 数器 1 的预置值减到 0 时 温度寄存器的值将加 1 减法计数器 1 的预置将重 新被装入 减法计数器 1 重新开始对低温度系数晶振产生的脉冲信号进行计数 如此循环直到减法计数器计数到 0 时 停止温度寄存器的累加 此时温度寄存 器中的数值就是所测温度值 其输出用于修正减法计数器的预置值 只要计数 器门仍未关闭就重复上述过程 直到温度寄存器值大致被测温度值 另外 由于 DS18B20 单线通信功能是分时完成的 它有严格的时隙概念 因此读写时序很重要 系统对 DS18B20 的各种操作按协议进行 操作协议为 初使化 DS18B20 发复位脉冲 发 ROM 功能命令 发存储器操作命令 处理 数据 DS18B20 采用 3 脚 PR 35 封装或 8 脚 SOIC 封装 其内部结构框图如图 3 3 所示 图3 3 DS18B20的内部结构图 64 位 ROM 的结构开始 8 位是产品类型的编号 接着是每个器件的惟一的序 号 共有 48 位 最后 8 位是前面 56 位的 CRC 检验码 这也是多个 DS18B20 可 以采用一线进行通信的原因 温度报警触发器 和 可通过软件写入户 报警上下限 3 3 温度计算 1 DS18B20 用 9 位存贮温值度 最高位为符号位 如表 3 1 为 DS18B20 的 温度存储方式 负温度 S 1 正温度 S 0 如 00AAH 为 85 摄式度 0032H 为 25 摄式度 FF92H 为 55 摄式度 表 3 1 18B20 用 9 位的温度存储方式 2 DS18B20 用 12 位存贮温值度 最高位为符号位 如表 3 2 为 DS18B20 的温度存储方式 负温度 S 1 正温度 S 0 如 0550H 为 85 摄式度 0191H 为 25 0625 摄式度 FC90H 为 55 摄式度 表 3 2 18B20 用 12 位的温度存储方式 DS18B20 温度传感器的内部存储器还包括一个高速暂存 RAM 和一个非易失 性的可电擦除的 EEROM 高速暂存 RAM 的结构为 8 字节的存储器 结构如图 3 4 所示 头 2 个字节包含测得的温度信息 第 3 和第 4 字节 和 的拷贝 是易失的 每次上电复位时被刷新 第 5 个字节 为配置寄存器 它的内容用 于确定温度值的数字转换分辨率 图 3 4 DS18B20 存储器结构 DS18B20 工作时寄存器中的分辨率转换为相应精度的温度数值 该字节各 位的定义如图 3 2 所示 低 5 位一直为 是工作模式位 用于设置 DS18B20 在工作模式还是在测试模式 DS18B20 出厂时该位被设置为 0 用户要 去改动 R1 和 R0 决定温度转换的精度位数 来设置分辨率 由表 3 3 可见 DS18B20 温度转换的时间比较长 而且分辨率越高 所需 要的温度数据转换时间越长 因此 在实际应用中要将分辨率和转换时间权衡 考虑 表 3 3 DS18B20 温度转换时间表 高速暂存 RAM 的第 6 7 8 字节保留未用 表现为全逻辑 1 第 9 字节读 出前面所有 8 字节的 CRC 码 可用来检验数据 从而保证通信数据的正确性 当 DS18B20 接收到温度转换命令后 开始启动转换 转换完成后的温度值 就以 16 位带符号扩展的二进制补码形式存储在高速暂存存储器的第 1 2 字节 单片机可以通过单线接口读出该数据 读数据时低位在先 高位在后 数据格 式以 0 0625 LSB 形式表示 当符号位 S 0 时 表示测得的温度值为正值 可以直接将二进制位转换为 十进制 当符号位 S 1 时 表示测得的温度值为负值 要先将补码变成原码 R0R1 0 0 0 1 0 1 1 1 9 10 11 12 分辨率 位 温度最大转向时间 ms 93 75 187 5 375 750 再计算十进制数值 表 3 4 为部分温度值对应的二进制温度数据 表 3 4 部分温度值对应的二进制温度数据 温度 二进制表示十六进制表示 1250000 0111 1101 000007D0H 850000 0101 0101 00000550H 25 06250000 0001 1001 00000191H 10 1250000 0000 1010 000100A2H 0 50000 0000 0000 00100008H 00000 0000 0000 10000000H 0 51111 1111 1111 0000FFF8H 10 1251111 1111 0101 1110FF5EH 25 06251111 1110 0110 1111FE6FH 551111 1100 1001 0000FC90H 3 1 33 1 3 时钟芯片时钟芯片 DS1302DS1302 1 1 时钟芯片 DS1302DS1302 的性能 DS1302 是 DALLAS 公司推出的涓流充电时钟芯片内含有一个实时时钟 日 历和 31 字节静态 RAM 通过简单的串行接口与单片机进行通信实时时钟 日历电 路提供秒分时日日期月年的信息每月的天数和闰年的天数可自动调整时钟操作 可通过 AM PM 指示决定采用 24 或 12 小时格式 DS1302 与单片机之间能简单地 采用同步串行的方式进行通信仅需用到三个口线 1 RES 复位 2 I O 数据线 3 SCLK 串行时钟时钟 RAM 的读 写数据以一个字节或多达 31 个字节的字符组方 式通信 DS1302 工作时功耗很低保持数据和时钟信息时功率小于 1mW 实时时钟具有能计算 2100 年之前的秒 分 时 日 日期 星期 月 年 的能力还有闰年调整的能力 318 位暂存数据存储 RAM 串行 I O 口方式使得管脚数量 最少 宽范围工作电压 2 0 5 5V 工作电流 2 0V 时 小于 300nA 读 写时钟或 RAM 数据时有两 种传送方式单字节传送和多字 图 3 5 DS1302 的封装及引脚功能 节传送字符组方式 8 脚 DIP 封装或可选的 8 脚 SOIC 封装根据表面装配 如图 3 5 所示 简单 3 线接口 与 TTL 兼容 Vcc 5V 可选工业级温度范围 40 85 2 2 时钟芯片 DS1302DS1302 的工作原理 DS1302 在每次进行读 写程序前都必须初始化 先把 SCLK 端置 0 接 着把 RST 端置 1 最后才给予 SCLK 脉冲 表 3 5 为 DS1302 的控制字 此控 制字的位 7 必须置 1 若为 0 则不能把对 DS1302 进行读写数据 对于位 6 若 对程序进行读 写时 RAM 1 对时间进行读 写时 CK 0 位 1 至位 5 指操作单 元的地址 位 0 是读 写操作位 进行读操作时 该位为 1 该位为 0 则表示进 行的是写操作 控制字节总是从最低位开始输入 输出的 CH 是时钟暂停标 志位 当该位为 1 时 时钟振荡器停止 DS1302 处于低功耗状态 当该位为 0 时 时钟开始运行 WP 是写保护位 在任何的对时钟和 RAM 的写操作之前 WP 必须为 0 当 WP 为 1 时 写保护位防止对任一寄存器的写操作 a DS1302a DS1302 的控制字节 DS1302 的控制字如表 3 5 所示 控制字节的高有效位 位 7 必须是逻辑 1 如果它为 0 则不能把数据写入 DS1302 中 位 6 如果 0 则表示存取日历时 钟数据 为 1 表示存取 RAM 数据 位 5 至位 1 指示操作单元的地址 最低有效 位 位 0 如为 0 表示要进行写操作 为 1 表示进行读操作 控制字节总是从 最低位开始输出 表 3 5 DS1302 的控制字 b b 数据输入输出 I OI O 在控制指令字输入后的下一个 SCLK 时钟的上升沿时 数据被写入 DS1302 数据输入从低位即位 0 开始 同样 在紧跟 8 位的控制指令字后的下 一个 SCLK 脉冲的下降沿读出 DS1302 的数据 读出数据时从低位 0 位到高位 7 如下图 3 6 所示 图 3 6 DS1302 读 写时序图 c DS1302c DS1302 的数据读写 DS1302 单字节读写的波形如图 3 6 所示 由波形可以看出 无论是从 DS1302 中读一个数据 还是写一个字节数据到 DS1302 中 都要先写一个命令 字到 DS1302 中 即通过 SCLK 引脚 7 号引脚 向 DS1302 输入 8 个脉冲 把 I O 引脚 6 号引脚 上的命令字写入 DS1302 为了启动数据传输 引脚 5 号引脚 应为高电平 在将由 0 置 1 的过程中 SCLK 引脚必须为逻辑 0 然后才能进行 读写操作 I O 引脚上的数据在 SCLK 的上升沿串行输入 写数据到 DS1302 在 SCLK 的下降沿串行输出 读数据 d DS1302d DS1302 的寄存器 DS1302 有 12 个寄存器 其中有 7 个寄存器与日历 时钟相关 存放的数 据位为 BCD 码形式 其日历 时间寄存器及其控制字见表 3 6 所示 表 3 6 DS1302 的日历 时间寄存器 此外 DS1302 还有年份寄存器 控制寄存器 充电寄存器 时钟突发寄存 器及与 RAM 相关的寄存器等 时钟突发寄存器可一次性顺序读写除充电寄存器 外的所有寄存器内容 DS1302 与 RAM 相关的寄存器分为两类 一类是单个 RAM 写寄 存器 读寄 存器 Bit7Bit6Bit5Bit4Bit3Bit2Bit1Bit0 80H81HCH10 秒秒 82H83H10 分分 10 84H85H12 240 PMAM 时时 86H87H0010 日日 88H89H00010 月月 8AH8BH00000星期 8CH8DH10 年年 8EH8FHWP0000000 单元 共 31 个 每个单元组态为一个 8 位的字节 其命令控制字为 C0H FDH 其中奇数为读操作 偶数为写操作 另一类为突发方式下的 RAM 寄 存器 此方式下可一次性读写所有的 RAM 的 31 个字节 命令控制字为 FEH 写 FFH 读 3 1 43 1 4 16 2LCD16 2LCD 液晶显示液晶显示 16021602 1 1 16021602 采用标准的采用标准的 1616 脚接口 其中脚接口 其中 第 1 脚 VSS 为地电源 第 2 脚 VDD 接 5V 正电源 第 3 脚 V0 为液晶显示器对比度调整端 接正电源时对比度最弱 接地电源时 对比度最高 对比度过高时会产生 鬼影 使用时可以通过一个 10K 的电位器调整对比度 第 4 脚 RS 为寄存器选择 高电平时选择数据寄存器 低电平时选择指令寄存 器 第 5 脚 RW 为读写信号线 高电平时进行读操作 低电平时进行写操作 当 RS 和 RW 共同为低电平时可以写入指令或者显示地址 当 RS 为低电平 RW 为高电平时可以读忙信号 当 RS 为高电平 RW 为低电平时可以写入数 据 第 6 脚 E 端为使能端 当 E 端由高电平跳变成低电平时 液晶模块执行命令 第 7 14 脚 D0 D7 为 8 位双向数据线 第 15 16 脚 空脚 指令RSR WD7D6D5D4D3D2D1D0 清显示0000000001 光标返回000000001 置输入模式000000011 DS 显示开 关控制0000001DCB 光标或字符移位000001S CR L 置功能00001DLNF 置字符发生存贮器地址0001字符发生存贮器地址 AGG 置数据存贮器地址001显示数据存贮器地址 ADD 读忙标志或地址01BF计数器地址 AC 2 2 16021602 液晶模块内部的控制器共有液晶模块内部的控制器共有 1111 条控制指令条控制指令 如表 3 7 所示 表 3 7 控制指令 它的读写操作 屏幕和光标的操作都是通过指令编程来实现的 说明 1 为高电平 0 为低电平 指令 1 清显示 指令码 01H 光标复位到地址 00H 位置 指令 2 光标复位 光标返回到地址 00H 指令 3 光标和显示模式设置 I D 光标移动方向 高电平右移 低电平左移 S 屏幕上所有文字是否左移或者右移 高电平表示有效 低电平则无效 指令 4 显示开关控制 D 控制整体显示的开与关 高电平表示开显示 低 电平表示关显示 C 控制光标的开与关 高电平表示有光标 低电平表 示无光标 B 控制光标是否闪烁 高电平闪烁 低电平不闪烁 指令 5 光标或显示移位 S C 高电平时移动显示的文字 低电平时移动光标 指令 6 功能设置命令 DL 高电平时为 4 位总线 低电平时为 8 位总线 N 低 电平时为单行显示 高电平时双行显示 F 低电平时显示 5 7 的点阵 字符 高电平时显示 5 10 的点阵字符 指令 7 字符发生器 RAM 地址设置 指令 8 DDRAM 地址设置 指令 9 读忙信号和光标地址 BF 为忙标志位 高电平表示忙 此时模块不能 接收命令或者数据 如果为低电平表示不忙 指令 10 写数据 指令 11 读数据 3 DM 162 3 DM 162 液晶显示模块可以和单片机液晶显示模块可以和单片机 AT89C52AT89C52 直接接口直接接口 电路如图 3 7 所示 写数到 CGRAM 或 DDRAM10要写的数 从 CGRAM 或 DDRAM 读数11读出的数据 图 3 7 接口电路 液晶显示模块是一个慢显示器件 所以在执行每条指令之前一定要确认模 块的忙标志为低电平 表示不忙 否则此指令失效 要显示字符时要先输入显 示字符地址 也就是告诉模块在哪里显示字符 表 3 8 是 DM 162 的内部显示地 址 表 3 8 DM 16 的内部显示地址 比如第二行第一个字符的地址是 40H 那么是否直接写入 40H 就可以将光标定 位在第二行第一个字符的位置呢 这样不行 因为写入显示地址时要求最高位 D7 恒定为高电平 1 所以实际写入的数据应该是 01000000B 40H 10000000B 80H 11000000B C0H 4 4 基本操作时序如图基本操作时序如图 3 83 8 所示所示 读状态 输入 RS L RW H E H 输出 DB0 DB7 状态字 写指令 输入 RS L RW L E 下降沿脉冲 DB0 DB7 指令码 读数据 输入 RS H RW H E H 输出 DB0 DB7 数据 写数据 输入 RS H RW L E 下降沿脉冲 DB0 DB7 数据 图 3 8 LCD 的读写时序 4 4 硬件电路硬件电路 4 1 单片机主控制模块的设计 AT89S52 单片机为 40 引脚双列直插芯片 MCS 51 单片机共有 4 个 8 位的 I O 口 P0 P1 P2 P3 每一条 I O 线都能独立地作输出或输入 单片机的最小系统如下图所示 18 引脚和 19 引脚接时钟电路 XTAL1 接外部 晶振和微调电容的一端 在片内它是振荡器倒相放大器的输入 XTAL2 接外部晶 振和微调电容的另一端 在片内它是振荡器倒相放大器的输出 第 9 引脚为复位 输入端 接上电容 电阻及开关后够上电复位电路 20 引脚为接地端 40 引脚为电 源端 如图 4 1 所示 图 4 1 单片机最小系统 4 2 时钟电路模块的设计 图 4 2 是 DS1302 与单片机的连接 其中 Vcc1 为后备电源 Vcc2 为主电源 在主电源关闭的情况下 也能保持时钟的连续运行 DS1302 由 Vcc1 或 Vcc2 两 者中的较大者供电 当 Vcc2 大于 Vcc1 0 2V 时 Vcc2 给 DS1302 供电 当 Vcc2 小于 Vcc1 时 DS1302 由 Vcc1 供电 X1 和 X2 是振荡源 外接 32 768KHz 晶振 RST 是复位 片选线 通过把 RST 输入驱动置高电平来启动所有的数据传送 RST 输入有两种功能 首先 RST 接通控制逻辑 允许地址 命令序列送入移位 寄存器 其次 RST 提供终止单字节或多字节数据的传送手段 当 RST 为高电 平时 所有的数据传送被初始化 允许对 DS1302 进行操作 如果在传送过程中 RSTS 置为低电平 则会终止此次数据传送 I O 引脚变为高阻态 上电动行时 在 Vcc 大于等于 2 5V 之前 RST 必须保持低电平 中有在 SCLK 为低电平时 才能将 RST 置为高电平 I O 为串行数据输入端 双向 SCLK 始终是输入端 图 4 2 时钟芯片与单片机的连接 4 3 温度采集模块设计 如图 4 3 所示 采用数字式温度传感器 DS18B20 它是数字式温度传感器 具有测量精度高 电路连接简单特点 此类传感器仅需要一条数据线进行数据 传输 使用 2 4 与 DS18B20 的 I O 口连接加一个上拉电阻 Vcc 接电源 Vss 接 地 图 4 3 温度传感器与单片机的连接 4 4 功能按钮设计 当按钮被按下时 该按钮对应的 I O 口被拉为低电平 松开时按钮对应的 I O 口由内部的上拉电阻将该 I O 拉为高电平 如图 4 4 所示 图 4 4 功能按键电路 4 5 16 2 LCD1602 液晶显示电路设计 根据其读写的时序模拟总线的方式与单片机进行数据的通讯 首先将数据 从 I O 口读入或送出 再选择 R W 和 RS 的电平进行不同的操作 在使能端 E 下降沿时触发数据的读入或送出 注意 P0 口要接上拉电阻 如图 4 5 所示 图 4 5 LCD 液晶显示屏与单片机的连接 4 6 总体电路图 本设计的具在温度指示的数字万年历的总体电路图如图 4 6 所示 图 4 6 总体电路图 5 系统软件设计 5 1 系统模块的功能分划分 万年历程序设计总体上分为四个大模块 分别是 DS1302 时钟程序模块 DS18B20 测温模块 LCD 显示模块 键盘功能模块 a a DS1302DS1302 时钟程序模块 包括设置 DS1302 初始时间 从 DS1302 读时间子程序 写 1302 一字节子 程序 读 1302 一字节 关闭写保护 开启写保护 关闭时钟 延时子 100MS 程 序 b b DS18B20DS18B20 测温模块 包括 DS18B20 的初始化子程序 DS18B20 数据处理子程序 读出温度值的 子程序 DS18B20 复位子程序 写 DS18B20 的 1 位字节子程序 读 DS18B20 的 1 个字节子程序 c c LCDLCD 显示模块 包括 LCD 初始化子程序 写入控制命令的子程序 判断 LCD 显示器是否忙 的子程序 向 LCD 中的 DDRAM 中写数据 查询 LCD 字符表 调整模式的显示子 程序 正常模式 LCD 显示子程序 d d 键盘功能模块 包括模式选择按键 SET 子程序 调整模式选择子程序 OUT 键扫描子程序 UP 按键扫描子程序 DOWN 按键扫描子程序 5 2 总体程序流程框图 本设计中 实现功能的总体程序流程框图如下图 5 1 所示 调用调整模式模块 NO 停止时钟 置时钟停止标志位 YES COUNT 值赋给 A 调用 JMP A DPTR 散转指令 散转到 8 个跳转首地址 由 COUNT 的值转入秒 分 时 星期 日期 月 年的 修改位的操作 扫描 OUT UP DOWN 三个按键 OUT UP DOWN 三个 按键如果有按下 执行 相应的功能 调用调整模式下 的显示子程序 返回标志位 DONE 的查询 当前时钟停止吗 标志位 DONE 1 吗 NO 调用 LCD 显示模块扫描 SET 按钮 清时钟停止 调整模式标志 位 4 个模块的初始化程 序 开始 SET 键有按下 COUNT 加 1 YES 图 5 1 总体程序流程框图 5 3 时钟调整时间的流程图 时钟调整时间的流程图 5 2 所示 YES 时钟显示 开始 判断 SET 键是 否有按下 COUNT 计算按键的次数 1 次 进入秒调整2 次 进入分调整3 次 进入时调整 等待按键等待按键等待按键 UP 有效 DOWN 有效 OUT 有效 DOWN 有效 UP 有效 DOWN 有效 UP 有效 OUT 有效 OUT 有效 加 1减 1加 1减 1加 1减 1 NO 4 5 7 次 同理周 日 月 年的调整 退出时间调整 图 5 2 时钟调整时间的流程 5 4 修改键 UP 的功能流程图 修改键 UP 的功能流程图如图 5 3 所示 A 赋给秒的单元内容 秒对应的单元内容 赋给 A A 再加 1 年位的加 1 操作 加 1 后秒内容 溢出吗 BCD 码调整 溢出置 0 退出秒的加 1 操作 YE 温 度 转 换 读 取 温 度 数 值 流 程 图S NO 散转指令 JMP A DPTR 赋跳转的表头给 DPTR A 的值为 0 是退出 秒位的加 1 操作 分位的加 1 操作 时位的加 1 操作 星期位的加 1 操作 日位的加 1 操作 月位的加 1 操作 图 5 3 修改键 UP 的功能流程图 退出 UP 键的扫描 NO YES 延时 将 COUNT 的值赋给 A 端口写 1 并扫描 UP 键是否有按下 开始 5 5 温度转换流程图 单片机实现对温度传感器 DS18B20 的温度转换读取温度数值流程图如下图 5 4 所示 图 5 4 温度转换读取温度数值流程图 初始化 DS18B20 开始 应答脉冲 发起 Skip Rom 命 令 发起 Convert 命令 延时 1S 等待温度转换完 成 初始化 DS18B20 应答脉冲 发起 Read Seratchpad 命令 读取第 1 2 字节 即为温度数据 NO YES YES NO 6 6 系统系统仿真测试仿真测试 首先把各个模块的程序编好 在伟福 W6000 中调试没有错误后 再到 Protues 7 1 中画好并连接电路图进行程序仿真 各个部分的功能后再把它们 综合到一个主程序中去 在伟福 W6000 中调试通过后再把它用 Keil uVision2 软件把程序生成 hex 格式最后到 Protues 7 1 中仿真 在综合到一起的时候 出现了 RAM 分配错误的问题 因为原先是一个模块子程序在运行 RAM 的分配 只要不要跟子程序中的分配不冲突就可以了 但是在综合各个模块子程序的时 候就会出现 RAM 分配冲突的问题 最好是在设计程序之前先把 RAM 的空间分配 好 6 1 KEIL 的使用 Keil uVision2 是目前使用广泛的单片机开发软件 它集成了源程序编辑 和程序调试于一体 支持汇编 C PL M 语言 keil C51 v6 12 的使用 点击桌面快捷图标 如图 6 1 所示 可以直接进入主画 面 在 Keil 系统中 每做个独立的程序 都视为工程 或者叫项目 首先从菜但 的 工程 中 新建工程 建立我们 图 6 1 快捷图标 将要做的工程项目如图 6 2 所示 图 6 2 新建建工程 新建的工程要起个与工程项目意义一致的名字 可以是中文名 我们这里 的程序是实验测试程序 所以起的名字为 Test 并将 Test 工程 保存 到 D Keil 下如图 6 3 所示 图 6 3 新建名工程窗口 接下来 Keil 环境要求我们为 Test 工程选择一个单片机型号 我们选择 Atmel 公司的 89C52 虽然我们使用的是 89S52 但由于 89S52 与 89C52 内 外部结构完全一样 所以这里依然选择 89C52 如图 6 4 所示 图 6 4 选择工程项目 确定 后工程项目就算建立了 立了工程项目 肯定要实施这个工程 现在就为工程添加程序 点击 文件 中的 新建 新建一个空白文档 如 图 6 5 所示 这个空白文档就是让我们编写单片机程序的场所 在这里你可以 进行编辑 修改等操作 图 6 5 新建文件 写完后再检查一下 并保存文件 保存文件时 其文件名最好与前面建立 的工程名相同 当然这里为 Test 了 其扩展名必须为 Asm 文件名 中一定要写全 如 Test Asm 保存后的文档彩色语法会起作用 将关键字实 行彩色显示 如图 6 6 所示 图 6 6 保存文档 保存了 Asm 文件后 还要将其添加到工程中 具体做法如下 如下图 6 7 所示 鼠标右键点击 Source Group 1 在弹出的菜单中选 增加文件到组 Source Group 1 图 6 7 添加文件 在接下来出现的窗口中 选择 文件类型 为 Asm 源文件 a src 由于我们使用的是汇编语言 所以选择 Asm 源文件 选 中刚才保存的 Test Asm 按 Add 再按 关闭 文件就添加到了工程中 如图 6 8 所示 图 6 8 添加到工程中 向工程添加了源文件后 鼠标右键点击 TarGet 1 在弹出的菜单中 选 目标 Target 1 属性 在打开的话框中 选择 输出 选项卡 在这个选项卡中 E 生成 HEX 文件 选项前要打勾 按 确定 退出 如图 6 9 所示 图 6 9 目标 TarGet 1 属性 最后 从菜单的 工程 中执行 R 重新构造所有目标 或者按下图红 圈中的按钮 汇编 连接 创建 Hex 文件一气呵成 在工程文件的目录下就 会生成与工程名相同的一些文件 其中大部分文件我们并不必关心 而生成的 Hex 文件是我们需要的 它是要烧写到单片机中的最终代码 也就是单片机可 以执行的程序 这里生成的是 Test HEX 稍后就写入 若在下面的状态窗中有错误提示 就需要再次编辑 修改源程序 如语法 字符有错等 保存 构造所有 直 至没有错误 如图 6 10 所示 图 6 10 生成 hex 格式 接下来 我们启动 Protues 软件仿真 将刚刚生成的 Test Hex 烧写到单片机 芯片 在实验板上实际验证一下 6 2 Protues 软件仿真 Proteus ISIS 是英国 Labcenter 公司开发的电路分析与实物仿真软件 它 运行于 Windows 操作系统上 可以仿真 分析 SPICE 各种模拟器件和集成电路 该软件的特点是 实现了单片机仿真和 SPICE 电路仿真相结合 具有模拟电 路仿真 数字电路仿真 单片机及其外围电路组成的系统的仿真 RS232 动态 仿真 I2C 调试器 SPI 调试器 键盘和 LCD 系统仿真的功能 有各种虚拟仪器 如示波器 逻辑分析仪 信号发生器等 支持主流单片机系统的仿真 目前 支持的单片机类型有 68000 系列 8051 系列 AVR 系列 PIC12 系列 PIC16 系列 PIC18 系列 Z80 系列 HC11 系列以及各种外围芯片 提供软件调试 功能 在硬件仿真系统中具有全速 单步 设置断点等调试功能 同时可以观 察各个变量 寄存器等的当前状态 因此在该软件仿真系统中 也必须具有这 些功能 同时支持第三方的软件编译和调试环境 如 Keil C51 uVision2 等软 件 具有强大的原理图绘制功能 总之 该软件是一款集单片机和 SPICE 分 析于一身的仿真软件 功能极其强大 1 1 进入 ProteusProteus ISISISIS 双击桌面上的 ISIS 6 Professional 图标或者单击屏幕左下方的 开始 程序 Proteus 6 Professional ISIS 6 Professional 出现如图 6 11 所示屏幕 表明进入 Proteus ISIS 集成环境 图 6 11 启动屏幕 2 2 工作界面 Proteus ISIS 的工作界面是一种标准的 Windows 界面 如图 4 2 所示 包 括 标题栏 主菜单 标准工具栏 绘图工具栏 状态栏 对象选择按钮 预 览对象方位控制按钮 仿真进程控制按钮 预览窗口 对象选择器窗口 图形 编辑窗口 如图 6 12 所示 图 6 12 工作界面 根据设计原理画出仿真原理图 如附录二 检查电路连接无误后 双击 单片机芯片 AT89S52 如图 6 13 所示 图 6 13 烧写程序 把生成的 Test Hex 烧写到单片机芯片 点击仿真进程控制按钮 点击运行 观看 LCD 液晶显示效果 若在实验板上实际验证的并不是我们预期的效果 那 么 就需要再次返回到编辑 修改源程序那一步 修改后再构造所有 再次将 生成的Hex 文件在 51ISP 中烧写 实验 直至成功 如下图 6 14 是本设计测试 的效果显示 图 6 14 测试结果显示 致致 谢谢 本次设计是我们遇到过的较大的设计 所以遇到的问题也比较的多 尤其 是以前没有接触过如此复杂的硬件电路以及软件编程 在软 硬件设计和调试 中遇到了不少的困难 在李建军老师的耐心指导下和同学的帮助才逐一克服了 难题 学习到了不少的专业知识 在整个设计过程之前 我已经在网上找了相关方面的资料 万事开始难 一开始不知道从哪里下手 后来慢慢学会分析系统 将系统模块化 各个模块 可以在软件或者硬件上实现 在确保各个模块的硬件电路和与之相搭配的程序 能够正常工作后在把它们组成一个系统 由于我的理论知识水平有限 实践能 力和设计经验不足 在设计的过程中难免还存在一些问题甚至是错误 恳请各 位老师批评指导 以便我在以后的学习和工作中加以改正 我要衷心的感谢我 的指导老师和在这三年中辛勤培育过我的所有老师及领导 希望我的毕业设计 能给各位老师交上一份满意的答卷 也为我这三年的大学生活画上一个圆满的 句号 本次毕业设计能够顺利完成离不开我的指导老师李建军老师
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2024年全国企业《薪酬管理》规范制度试题库与答案
- 摄影课件拍摄角度
- 摄影知识基础知识培训班课件
- 吉林省长春市榆树市2024-2025学年八年级上学期期末语文试题(解析版)
- 摄影基础知识培训课件小结
- 生物技术联赛试题及答案
- 2025关于标准购销合同的范本
- 2025物流服务合同示范文本
- 2025关于租赁合同与买卖合同的区别
- 2025年租赁农户承包土地协议
- 营销策划 -洋酒品牌轩尼持深圳快闪店小红书营销方案
- ORT测试管理办法
- 卒中护理人文关怀
- 污水厂人员考核方案
- 年画宝宝活动方案
- 肢体无力护理查房
- SPD物资管理制度
- 反假货币管理培训课件
- 厂区安全警报设备管理制度
- 云南辅警笔试题目及答案
- T/CCIAS 009-2023减盐酱油
评论
0/150
提交评论