基于S51单片机的开发板设计毕业论文.doc_第1页
基于S51单片机的开发板设计毕业论文.doc_第2页
基于S51单片机的开发板设计毕业论文.doc_第3页
基于S51单片机的开发板设计毕业论文.doc_第4页
基于S51单片机的开发板设计毕业论文.doc_第5页
已阅读5页,还剩53页未读 继续免费阅读

下载本文档

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

文档简介

S51 开发板的设计 基于基于 S51 单片机的开单片机的开 发板设计毕业论文发板设计毕业论文 目录 摘摘 要要 I ABSTRACTABSTRACT II 1 1 引言引言 1 2 2 系统方案系统方案 2 2 1 总体设计方案 2 2 2 设计原则 2 3 3 硬件部分硬件部分 3 3 1 硬件结构框图 3 3 2 硬件电路设计 4 3 2 1 S51 单片机主控制模块 4 3 2 2 键盘模块 4 3 2 3 AD 模块 5 3 2 4 DA 模块 6 3 2 5 DS1302 时钟模块 7 3 2 6 测温模块 9 3 2 7 串行通信模块 10 3 2 8 显示模块 12 3 2 9 下载器模块 16 3 2 10 其他模块 17 4 4 软件部分软件部分 19 4 1 整体程序设计 19 4 2 分模块程序设计 19 4 2 1 键盘模块程序设计 19 4 2 2 AD 模块程序设计 20 4 2 3 DA 模块程序设计 22 S51 开发板的设计 4 2 4 DS1302 时钟模块程序设计 23 4 2 5 测温模块程序设计 25 4 2 6 串行通信模块程序设计 28 4 2 7 显示模块程序设计 30 4 2 8 其他模块 38 5 5 开发板设计及测试开发板设计及测试 41 5 1 开发板 PCB 设计 41 5 2 开发板测试 41 6 6 结论结论 43 致谢致谢 44 参考文献参考文献 45 附录附录 46 附录 1 键盘模块部分程序 46 附录 2 AD 模块部分程序 46 附录 3 DA 模块部分程序 48 附录 4 DS1302 时钟模块部分程序 48 附录 5 测温模块部分程序 51 附录 6 单片机通过 MAX485 与 PC 机通讯程序 52 附录 7 LCD1602 显示模块部分程序 53 附录 8 开发板整观图 55 附录 9 下载器整观图 55 S51 开发板的设计 1 1 引言 单片机具有成本低 体积小 可靠性高 具有高附加值 通过更改软件就可以 改变控制对象等优点 单片机越来越成为电子工程师设计产品时的首选器件之一 因此拥有一块单片机开发板对单片机学习具有着极其重要的意义 但是单片机学习 效果的优劣直接取决于单片机的选择 C51 系列单片机内部具有 128 字节 RAM 5 个中断源 32 条 I O 口线 2 个 16 位定时器 4KB 的程序存储器 一个全双工异步 串行口 本开发板选择具有 ISP 在线编程功能的 S51 单片机 该单片机不需要烧写 器 可在开发板上 ISP 在线编程 具有广泛的应用前景 S51 单片机除兼容 C51 单片机外 还具有工作频率 0 至 33MHz 的高工作频率 可以满足绝大多数的实际应用开发需求 在开发板上使用十分方便 本课题设计的 S51 单片机开发板 具有一般开发板通用结构 并基于硬件进行 相关软件设计 利用程序开发语言开发程序并实现 ISP 在线下载到单片机 无需配 置单独的下载器 单片机使用 ISP 在线下载程序 加快了程序设计者调试的进度 使设计者所设计的程序尽快得到验证 通过对开发板上的模块进行实验 可以提高 针对不同硬件进行编程的能力 同时通过实验现象对所用的硬件也有了更深一步的 认识 因此该开发板具有一定的实用价值和现实意义 S51 开发板的设计 2 2 系统方案 2 1 总体设计方案 本开发板共分为十四个模块 分别是 S51 单片机主控制器模块 键盘模块 AD 模块 DA 模块 DS1302 时钟模块 测温模块 MAX232 模块 MAX485 模块 数码管模块 LCD1602 模块 LCD12864 模块 下载器模块 流水灯模块 蜂鸣器 模块 其中以 S51 单片机作为核心控制器 键盘模块用来向单片机输入特定编码的 信息 AD 模块用来实现模数转换 DA 模块用来实现 DA 转换 DS1302 时钟模块 用来实现实时时钟 测温模块用来测量环境温度 RS232 模块和 RS485 模块通过电 平转换实现通信 数码管模块用来显示简单的数字 字母 LCD1602 模块用来显示 字母 数字 符号 LCD12864 模块用来显示图像 符号 汉字 下载器模块用来 实现 S51 单片机的 ISP 在线编程 流水灯模块用来显示单片机 I O 口电平的变化 蜂鸣器模块用来发出声音 2 2 设计原则 开发板系统的扩展和配置应遵循以下设计原则 1 尽可能选择典型电路 并符合单片机常规用法 为硬件系统的标准化 模块 化打下良好的基础 2 系统扩展与外围设备的配置水平应充分满足应用系统的功能要求 并留有适 当余地 以便进行二次开发 3 硬件结构应结合应用软件方案一并考虑 硬件结构与软件方案会产生相互影 响 考虑的原则是 软件能实现的功能尽可能由软件实现 以简化硬件结构 但必 须注意 由软件实现的硬件功能 一般响应时间比硬件实现长 且占用 CPU 时间 4 系统中的相关器件要尽可能做到性能匹配 如选用 CMOS 芯片单片机构成低 功耗系统时 系统中所有芯片都应尽可能选择低功耗产品 5 可靠性及抗干扰设计是硬件设计必不可少的一部分 它包括芯片 器件选择 去耦滤波 印刷电路板布线 通道隔离等 6 单片机外围电路较多时 必须考虑其驱动能力 驱动能力不足时 系统工作 不可靠 可通过增设线驱动器增强驱动能力或减少芯片功耗来降低总线负载 7 尽量朝 单片 方向设计硬件系统 系统器件越多 器件之间相互干扰也越 强 功耗也增大 也不可避免地降低了系统的稳定性 S51 开发板的设计 3 3 硬件部分 3 1 硬件结构框图 总体硬件结构主要包括 S51 单片机主控制器模块 键盘模块 AD 模块 DA 模块 DS1302 时钟模块 测温模块 MAX232 模块 MAX485 模块 数码管模块 LCD1602 模块 LCD12864 模块 下载器模块 流水灯模块 蜂鸣器模块 硬件结 构框图如图 3 1 所示 S51 单片机 主控制模块 DA 模块 流水灯模块 蜂鸣器模块 AD 模块 数码管模块LCD12864 模块 LCD1602 模块 MAX485 模块 MAX232 模块 下载器模块 键盘模块 DS1302 实时 时钟模块 测温模块 图 3 1 总体硬件结构框图 S51 开发板的设计 4 3 2 硬件电路设计 3 2 1 S51 单片机主控制模块 S51 单片机最小系统包括 MCU 复位电路 晶振电路 原理图如图 3 2 所示 图 3 2 S51 单片机主控制模块原理图 采用按键复位方式 选取晶振为 12MHZ 系统机器周期为 1us 3 2 2 键盘模块 在键盘中按键数量较多时 为了减少 I O 口的占用 通常将按键排列成矩阵形 式 如图 3 3 所示 图 3 3 键盘模块原理图 S51 开发板的设计 5 JP7 用来连接 P2 口与矩阵键盘模块 在矩阵式键盘中 每条水平线和垂直线在 交叉处不直接连通 而是通过一个按键加以连接 这样 一个端口 如 P2 口 就可 以构成 4 4 16 个按键 比之直接将端口线用于键盘多出了一倍 而且线数越多 区 别越明显 比如再多加一条线就可以构成 20 键的键盘 而直接用端口线则只能多出 一键 9 键 在需要的按键数较多时 采用矩阵法来做键盘是合理的 3 2 3 AD 模块 a ADC0832 简介 A D 转换在单片机接口中应用广泛 串行 A D 转换器具有功耗低 性价比较高 芯片引脚少等特点 ADC0832 是 NS National Semiconductor 公司生产的具有 Microwire Plus 串行接口的 8 位 A D 转换器 通过三线接口与单片机连接 适宜在 袖珍式智能仪器中使用 主要性能指标有 功耗低 只有 15mW 8 位分辨率 逐 次逼近型 基准电压为 5V 输入模拟信号电压范围为 0 5V 输入和输出电平与 TTL 和 CMOS 兼容 在 250kHz 时钟频率时 转换时间为 32us 具有两个可供选择 的模拟输入通道 ADC0832 有 DIP 和 SOIC 两种封装 DIP 封装的 ADC0832 引脚排列如图 3 4 所示 图 3 4 ADC0832 引脚图 各引脚说明如下 CS 片选端 低电平有效 CH0 CH1 两路模拟信号输入端 D I 两路模拟输入选择输入端 DO 模数转换结果串行输出端 CLK 串行时钟输入端 VCC REF 正电源端和基准电压输入端 GND 电源地 ADC0832工作时 模拟通道的选择及单端输入和差分输入的选择 都取决于输 S51 开发板的设计 6 入时序的配置位 当差分输入时 要分配输入通道的极性 两个输入通道的任何一 个通道都可作为正极或负极 b 硬件实现 AD 模块的原理图如图 3 5 所示 图 3 5 AD 模块原理图 单片机与 ADC0832 通过 P2 5 P2 6 P2 7 相连 分别为时钟信号线 数据输出 信号线 片选信号线 开发板可外接模拟信号 也可由电位器 R7 R8 将 5V 分压 后提供两路模拟信号 3 2 4 DA 模块 a TLC5615 简介 TLC5615 为美国德州仪器公司 1999 年推出的产品 是具有串行接口的数模转 换器 其输出为电压型 最大输出电压是基准电压值的两倍 带有上电复位功能 即把 DAC 寄存器复位至全零 TLC5615 性能价格比高 目前在国内市场很方便购 买 主要性能指标有 10 位 CMOS 电压输出 5V 单电源供电 与 CPU 三线串行接 口 最大输出电压可达基准电压的二倍 输出电压具有和基准电压相同极性 建立 时间 12 5 s 内部上电复位 低功耗 最大仅 1 75mW TLC5615 有小型和塑料 DIP 封装 DIP 封装的 TLC5615 芯片引脚排列如图 3 6 所示 S51 开发板的设计 7 图 3 6 TLC5615 引脚排列图 引脚功能说明如下 DIN 串行数据输入端 SCLK 串行时钟输入端 CS 芯片选用通端 低电平有效 DOUT 用于级联时的串行数据输出端 AGND 模拟地 REFIN 基准电压输入端 OUT DAC 模拟电压输出端 VDD 正电源端 b 硬件实现 DA 模块的原理图如图 3 7 所示 图 3 7 DA 模块原理图 单片机与 TLC5615 通过 P2 0 P2 1 P2 2 相连 分别为片选信号线 时钟信号 线 数据输入信号线 TLC5615 转换后的模拟信号通过 OUT 端输出 3 2 5 DS1302 时钟模块 a DS1302 简介 DS1302 是美国 DALLAS 公司推出的一种高性能 低功耗 带 RAM 的实时时 钟芯片 它可以对年 月 日 周日 时 分 秒进行计时 且具有闰年补偿功能 工作电压宽达 2 5 5 5V 采用三线接口与 MCU 进行同步通信 并可采用突发方式 一次传送多个字节的时钟信号或 RAM 数据 DS1302 内部有一个 31 8 的用于临时 S51 开发板的设计 8 性存放数据的 RAM 寄存器 主要性能指标有 31 字节带后备电池的 RAM 用于数 据存储 串行 I O 口 管脚数量少 宽范围工作电压 2 0 5 5V 工作电压 2 0V 时 电流小于 300nA 读 写时钟或 RAM 数据时有两种传送方式 单字节传送和突发模 式传送 8 脚 DIP 封装或其他可选封装方式 简单的 3 线接口 与 TTL 兼容 Vcc 5V 可选工业级温度范围 40 85 与 DS1202 兼容 DS1302 的引脚如图 3 8 所示 图3 8 DS1302引脚图 Vcc1 为后备电源 Vcc2 为主电源 在主电源关闭的情况下 也能保持时钟的 连续运行 DS1302 由 Vcc1 或 Vcc2 两者中的较大者供电 当 Vcc2 高于 Vcc1 0 2V 时 Vcc2 给 DS1302 供电 当 Vcc2 低于 Vcc1 时 DS1302 由 Vcc1 供电 X1 X2 为振荡源 外接 32 768 kHz 晶振 I O 为串行数据输入 输出端 双向 SCL K 为时钟输入端 RST 是复位片选线 通过把 RST 输入驱动置为高电平来启动所有 的数据传送 RST 输入有两种功能 RST 接通控制逻辑 允许地址 命令序列送入移 位寄存器 RST 提供了终止单字节或多字节数据的传送手段 当 RST 为高电平时 所有的数据传送被初始化 允许 DS1302 进行操作 如果在传送过程中置 RST 为低 电平 则会终止此次数据传送 并且 I O 引脚变为高阻态 上电运行时 在 Vcc 高 于 2 5V 之前 RST 必须保持低电平 只有在 SCL K 为低电平时 才能将 RST 置为 高电平 b 硬件实现 DS1302 时钟模块的原理图如图 3 9 所示 S51 开发板的设计 9 图 3 9 DS1302 时钟原理图 单片机与 DS1302 通过 P3 5 P3 6 P3 7 相连 分别为时钟信号线 输入输出 线 复位信号线 DS1302 的晶振引脚连接 32768HZ 的晶振 3 2 6 测温模块 a DS18B20 简介 DS18B20 是DALLAS 半导体公司生产的 是一种单总线温度传感器 属于新 一代适配微处理器的智能温度传感器 有两种封装形式分别为3脚PR 35封装和16脚 SSOP封装 本文采用的是3脚PR 35封装 其具有以下特点 采用了单总线技术 传 感器直接以二进制输出被测温度 可通过串行口线 也可与单机通过I O 口连接 测量温度范围为 55 125 测量精度高达 0 5 内含寄生电源 在两线方 式下可通过数据线提供寄生电源 而不需要再单独供电 转换时间在分辨率为12位 即0 0625 时最大为750ms 用户可分别对每个器件设定温度上下限 DS18B20 在使用时不需要任何外围元件 全部传感元件及转换电路集成在形如一只三极管的 集成电路内 电源极性接反时 芯片不会因发热而烧毁 但不能正常工作 每个 DSl8B20 器件对应一个唯一的64 位长的序号 该序号值存放ROM中 可通过序号 匹配实现多点测温 引脚排列如图3 10所示 VDD 接电源引脚 电源供电 3 0 5 5V DQ 数据的输入和输出引脚 GND 接地 图 3 10 DS18B20 引脚图 S51 开发板的设计 10 b 硬件实现 DS18b20温度传感器模块的原理图如图3 11所示 图 3 11 DS18b20 温度传感器模块原理图 单片机与 DS18B20 通过 P3 7 相连 作为数据 控制信号线 3 2 7 串行通信模块 a RS232 串行通信模块 RS232 是由电子工业协会 Electronic Industries Association EIA 所制定的 异步传输标准接口 对于一般双工通信 仅需几条信号线就可实现 如一条发 送线 一条接收线及一条地线 RS232 与 TTL 电路之间需要进行电平和逻辑关系的变换 实现这种变换的 方法可用分立元件 也可用集成电路芯片 MAX232 芯片可完成 TTL RS232 双向电平转换 MAX232 芯片是 RS232 标准接口芯片 使用 5v 单电源供电 是 PC 机与 单片机串口进行通讯的电平转换芯片 内部结构基本可分三个部分 第一部分是电荷泵电路 由 1 2 3 4 5 6 脚和 4 只电容构成 功能是 产生 12v 和 12v 两个电源 提供给 RS232 串口电平的需要 第二部分是数据转换通道 由 7 8 9 10 11 12 13 14 脚构成两个 数据通道 其中 13 脚 R1IN 12 脚 R1OUT 11 脚 T1IN 14 脚 T1OUT 为第一数据通道 8 脚 R2IN 9 脚 R2OUT 10 脚 T2IN 7 脚 T2OUT 为第二数据通道 TTL CMOS 数据从 T1IN T2IN 输入转换成 RS232 数据从 T1OUT T2OUT 送到电脑 DP9 插头 DP9 插头的 RS232 数据从 R1IN R2IN 输入转换成 TTL CMOS 数据后从 R1OUT R2OUT 输出 第三部分是供电 15 脚 DNG 16 脚 VCC 5V MAX232 模块的原理图如图 3 12 所示 S51 开发板的设计 11 图 3 12 MAX232 模块的原理图 单片机与 MAX232 通过 P3 0 P3 1 相连 分别为发送线 接收线 另外单 片机要与 MAX232 共地 b RS485 串行通信模块 RS232 由于传输速率慢 传输距离短 传输信号易受外界的干扰等缺点 新的串行通讯接口标准 RS 449 被制定出来 与之相对应的是 RS 485 的电气标 准 RS 485 是美国电气工业联合会 EIA 制定的利用平衡双绞线作传输线的多 点通讯标准 它采用差分信号进行传输 最大传输距离可以达到 1 2 km 最大 可连接 32 个驱动器和收发器 接收器最小灵敏度可达 200 mV 最大传输速率 可达 2 5 Mb s 由此可见 RS 485 协议正是针对远距离 高灵敏度 多点通讯 制定的标准 MAX485 的引脚和结构如下图 3 13 所示 图 3 13 MAX485 的引脚和结构 该芯片采用单一电源 5 V 工作 额定电流为 300 A 采用半双工通讯方式 它完成将 TTL 电平转换为 RS 485 电平的功能 MAX485 芯片的结构和引脚都 非常简单 内部含有一个驱动器和接收器 RO 和 DI 端分别为接收器的输出和 驱动器的输入端 与单片机连接时只需分别与单片机的 RXD 和 TXD 相连即可 RE 和 DE 端分别为接收和发送的使能端 当 RE 为逻辑 0 时 器件处于接收状 态 当 DE 为逻辑 1 时 器件处于发送状态 因为 MAX485 工作在半双工状态 S51 开发板的设计 12 所以只需用单片机的一个管脚控制这两个引脚即可 A 端和 B 端分别为接收和 发送的差分信号端 当 A 引脚的电平高于 B 时 代表发送的数据为 1 当 A 的 电平低于 B 端时 代表发送的数据为 0 在与单片机连接时接线非常简单 只 需要一个信号控制 MAX485 的接收和发送即可 同时将 A 和 B 端之间加匹配 电阻 一般可选 100 的电阻 MAX485 模块的原理图如图 3 14 所示 图 3 14 MAX485 模块原理图 单片机与 MAX485 通过 P3 0 P3 1 P3 2 相连 分别为接收输出线 发送 输入线 发送 接收使能信号线 3 2 8 显示模块 a 数码管模块 1 数码管驱动采用 8 位数据缓冲器 74HC573 其功能表如下表 3 1 所示 表 3 1 74HC573 功能表 INPUTOUTPUTSOPERATING MODESOELEDN INTERNAL LATCHESQ0 to Q7 LHLLLenable and read register LHHHH LLILLLatch and read register LLhHH HLILZLatch register and disable outputs HLhHZ 注意 H 高电平 S51 开发板的设计 13 h 要保持高电平到低电平转变时一个建立周期以上的高电平 L 低电平 I 要保持高电平到低电平转变时一个建立周期以上的低电平 Z 高组态 选用 74HC573 增强驱动能力 提高数码管显示亮度 A DP 对应八段数码 管的各段 当 A DP 中有低电平输出时 被低电平片选中的数码管的相应段点 亮 2 硬件实现 数码管模块的原理图如图 3 15 所示 图 3 15 数码管模块原理图 单片机与 74HC573 通过 P0 0 P0 1 P0 2 P0 3 P0 4 P0 5 P0 6 P0 7 相连 作为段码信号线 与 74HC138 通过 P1 0 P1 1 P1 2 相连 作为片选信 号线 b LCD1602 模块 1 LCD1602 简介 LCD1602 点阵字符液晶模块是由点阵字符液晶显示器件和专用的行列驱动 器 控制器及必要的连接件 结构件装配而成 可以显示数字和英文字符 LCD1602 采用标准的 14 脚 无背光 或 16 脚 带背光 接口 各引脚接 口说明如表 3 2 所示 表 3 2 LCD1602 引脚接口图 编号符号引脚说明编号符号引脚说明 1VSS 电源地 9D2 数据 S51 开发板的设计 14 2VDD 电源正极 10D3 数据 3VL 液晶显示偏压 11D4 数据 S51 开发板的设计 15 续表 3 2 LCD1602 引脚接口图 4RS 数据 命令选择 12D5 数据 5R W 读 写选择 13D6 数据 6E 使能信号 14D7 数据 7D0 数据 15BLA 背光源正极 8D1 数据 16BLK 背光源负极 2 硬件实现 LCD1602 模块的原理图如图 3 16 所示 图 3 16 LCD1602 模块原理图 单片机与 LCD1602 通过 P0 0 P0 1 P0 2 P0 3 P0 4 P0 5 P0 6 P0 7 P1 0 P1 1 P1 2 相连 P0 0 P0 7 为数据线 P1 0 P1 1 P1 2 为控制线 c LCD12864 模块 1 LCD12864 简介 LCD12864 汉字图形点阵液晶显示模块可以显示汉字 图形 ASC 码和 自定义字形 内置 8192 个 16 16 的中文汉字 128 个 8 16 字符 以及 64 256 点阵显示 RAM 控制器为 ST7920 具有串 并接口方式 其内部含有中文字库 LCD12864 显示屏为 128 64 点阵 可显示 4 行 每行 8 个字 模块内含有多种 软件功能 光标显示 画面移位 自定义字符 反白 清除 关闭显示和睡眠 模式等 可方便地对模块进行控制 模块内置升压电路 无需负压 配置 LED 背光 3V 低电平工作时 只需一个 20K 的电阻与 Vo 的地相接 适用于 3 3V 5V 宽范围工作电压的系统 S51 开发板的设计 16 RS R W 的配合决定的 4 种模式见表 3 3 表 3 3 RS R W 决定的控制模式 RSR W功能说明 LLMPU 写指令到指令暂存器 IR LH读出忙标志 BF 及地址记数器 AC 的状态 HLMPU 写入数据到数据暂存器 DR HHMPU 从数据暂存器 DR 中读出数据 E 信号的状态产生的动作见表 3 4 表 3 4 E 信号的状态产生的动作 E 状态执行动作结果 高 低I O 缓冲 DR配合 W 进行写数据或指令 高DR I O 缓冲配合 R 进行读数据或指令 低 低 高无动作 LCD12864 的并行接口见表 3 5 表 3 5 LCD12864 的并行接口 管脚号 管脚名称 电平管脚功能描述 1VSS0V 电源地 2VCC3 0 5V 电源正 3V0 对比度 亮度 调整 4 RS CS H L RS H 表示 DB7 DB0 为显示数据 RS L 表示 DB7 DB0 为显示指令数据 5 R W SID H L R W H E H 数据被读到 DB7 DB0 R W L E H L DB7 DB0 的数据被写到 IR 或 DR 6E SCLK H L 使能信号 7DB0H L 三态数据线 8DB1H L 三态数据线 9DB2H L 三态数据线 10DB3H L 三态数据线 11DB4H L 三态数据线 12DB5H L 三态数据线 13DB6H L 三态数据线 14DB7H L 三态数据线 15PSBH L H 8 位或 4 位并口方式 L 串口方式 见注释 1 16NC 空脚 17 RESETH L 复位端 低电平有效 见注释 2 18VOUT LCD 驱动电压输出端 19AVDD 背光源正端 5V 见注释 3 20KVSS 背光源负端 见注释 3 注释 1 如在实际应用中仅使用并口通讯模式 可将 PSB 接固定高电平 也可 S51 开发板的设计 17 以将模块上的 J8 和 VCC 用焊锡短接 注释 2 模块内部接有上电复位电路 因此在不需要经常复位的场合可将该端 悬空 注释 3 如背光和模块共用一个电源 可以将模块上的 JA JK 用焊锡短接 2 硬件实现 开发板上 LCD12864 模块的原理图如图 3 17 所示 图 3 17 LCD12864 模块原理图 单片机与 LCD12864 通过 P0 0 P0 1 P0 2 P0 3 P0 4 P0 5 P0 6 P0 7 P1 0 P1 1 P1 2 相连 P0 0 P0 7 为数据线 P1 0 P1 1 P1 2 为控制线 3 2 9 下载器模块 ATmega8 是基于增强的 AVR RISC 结构的低功耗 8 位 CMOS 微控制器 由于其先进的指令集以及单时钟周期指令执行时间 ATmega8 的数据吞吐率 高达 1MIPS MHz 从而可以缓减系统在功耗和处理速度之间的矛盾 ATmega8 有如下特点 8K 字节的系统内可编程 Flash 具有同时读写的能 力 即 RWW 512 字节 EEPROM 1K 字节 SRAM 32 个通用 I O 口线 32 个通用工作寄存器 三个具有比较模式的灵活的定时器 计数器 T C 片内 外中断 可编程串行 USART 面向字节的两线串行接口 10 位 6 路 8 路为 TQFP 与 MLF 封装 ADC 具有片内振荡器的可编程看门狗定时器 一个 SPI 串行端口 以及五种可以通过软件进行选择的省电模式 工作于空闲 模式时 CPU 停止工作 而 SRAM T C SPI 端口以及中断系统继续工作 掉电模式时晶体振荡器停止振荡 所有功能除了中断和硬件复位之外都停止工 作 在省电模式下 异步定时器继续运行 允许用户保持一个时间基准 而其 余功能模块处于休眠状态 ADC 噪声抑制模式时终止 CPU 和除了异步定时器 与 ADC 以外所有 I O 模块的工作 以降低 ADC 转换时的开关噪声 Standby 模式下只有晶体或谐振振荡器运行 其余功能模块处于休眠状态 使得器件只 消耗极少的电流 同时具有快速启动能力 S51 开发板的设计 18 ATMEGA8L 的引脚配置如下图 3 18 所示 图 3 18 ATMEGA8L 的引脚配置图 下载器模块原理图如图 3 19 所示 图 3 19 下载器模块原理图 下载器模块实现将 USB 信号转换为能通过 SPI 协议传输的信号 从而实现 对单片机的编程 3 2 10 其他模块 流水灯模块 蜂鸣器模块的原理图如图 3 20 图 3 21 所示 S51 开发板的设计 19 图 3 20 流水灯模块原理图 图 3 21 蜂鸣器模块原理图 如图 3 20 所示流水灯模块包含 8 个 LED 灯 单片机的 P0 口接 10K 上拉电 阻 八个 LED 的负极依次连接单片机 P0 口的 8 个引脚 八个 LED 的正极依次 与 510 欧姆的排阻的八个端子相连 排阻的公共端连接短路插针的一端 短路 插针的另一端与电源相连 因此 若将短路插针用短路帽短路 则八个 LED 的 正极上拉到高电平 LED 低电平点亮 如图 3 21 所示 单片机的 P3 4 与 Q1 的基极通过 1K 欧姆电阻连接 当 P3 4 为高电平时 Q1 导通 Q1 的发射极与集电极导通 将发射极下拉为低电平 蜂鸣器两端出现电位差 蜂鸣器发声 当 P3 4 为低电平时 Q1 不导通 蜂鸣 器两端没有电流流过 蜂鸣器不发声 总结 对硬件的设计采用模块化设计方法 采用的电路为典型应用电路 资源配置合理 通过使用短路帽连接相应的功能模块 降低了功耗 减弱了器 件之间的相互干扰 提高了系统稳定性 硬件工作稳定可靠 S51 开发板的设计 20 4 软件部分 4 1 整体程序设计 软件部分主要包括数码管程序 键盘程序 AD 程序 DA 程序 DS1302 时钟程序 DS18b20 温度传感器程序 串行通信程序 显示程序和其他简单模 块程序 4 2 分模块程序设计 依据开发板上硬件资源 进行程序的开发 在软件的设计过程中 采用模 块化的设计方法 依次分别为每个模块设计软件 下面分别介绍以上各个模块 的程序设计 4 2 1 键盘模块程序设计 矩阵式键盘的按键识别方法为 判断键盘中有无键按下 将全部行线 KEY0 KEY3 置低电平 然后检测列 线的状态 只要有一列的电平为低 则表示键盘中有键被按下 而且闭合的键 位于低电平线与 4 根行线相交叉的 4 个按键之中 若所有列线均为高电平 则 键盘中无键按下 判断闭合键所在的位置 在确认有键按下后 即可进入确定具体闭合键的 过程 其方法是 依次将行线置为低电平 即在置某根行线为低电平时 其它 线为高电平 在确定某根行线位置为低电平后 再逐行检测各列线的电平状态 若某列为低 则该列线与置为低电平的行线交叉处的按键就是闭合的按键 矩阵式键盘的按键编码处理 将行线和列线依次进行数值编码 然后进行 一定规则的运算 就是对键值的编码 键盘程序流程图如图 4 1 所示 S51 开发板的设计 21 开始 键盘扫描 有键按下 取键值 Y N 原有键值不变 键值送 P0 口 选通数码管 图 4 1 键盘程序流程图 键盘采用的是行扫描法确定键值 在程序中具体是这样扫描键盘的 将键 盘扫描码送入 P2 口 先是使行线依次为低电平 顺序为 KEY1 KEY2 KEY3 KEY4 在某一行线为低电平的状态下 读取 P2 口的 状态 将状态值依次右移四位 这样便将 KEY5 KEY8 的状态值移到了低四位 再将高四位状态值置一 将处理后的状态值与当前的扫描码比较 如果此时的 状态值与四个扫描码中的一个相同 证明有键按下 此时保存扫描码的数组下 标和与状态值相等的扫描码数组下标 并将两个值按照键盘编码值进行某一规 则的四则运算后返回给主函数中的某一变量 如果在全部行线依次为低电平情 况下的状态值与四个扫描码中没有一个相同 证明没有键按下 返回 1 到主函 数 在主函数中调用键盘扫描函数对键盘进行扫描 判断返回键值 若返回值 不为 1 证明右键按下 在某一个数码管上显示键值 若返回值为 1 证明没 有键按下 显示先前按下的按键键值 4 2 2 AD 模块程序设计 a ADC0832 的工作时序 ADC0832 的工作时序图如图 4 2 所示 S51 开发板的设计 22 图 4 2 ADC0832 的工作时序图 当CS由高变低时 选中ADC0832 在时钟的上升沿 D I端的数据移 ADC0832内部的多路地址移位寄存器 在第一个时钟期间 D I为高 表示启 动位 紧接着输入两位配置位 当输入启动位和配置位后 选通输入模拟通道 转换开始 转换开始后 经过一个时钟周期延迟 以使选定的通道稳定 ADC0832 接着在第4个时钟下降沿输出转换数据 数据输出时先输出最高位 D7 D0 输出完转换结果后 又以最低位开始重新输出一遍数据 D7 D0 两次发送的最低位共用 当片选CS为高时 内部所有寄存器清0 输出变为高 阻态 如果要再进行一次模 数转换 片选CS必须再次从高向低跳变 后面再输 入启动位和配置位 b AD 程序流程图 AD 程序流程图如 4 3 所示 开始 启动 AD 转换 输入方式选择 输入通道选择 读取数据 数据处理与显示 S51 开发板的设计 23 图 4 3 AD 程序流程图 依据操作时序对ADC0832编程 包括转换启动和AD值读取函数 在AD转 换函数中可以选择ADC0832的转换通道和输入方式 即通道0或通道1 单通道 输入或差分输入 在主函数中循环读取某一通道的模拟电压值 将采集到的数 据由16进制转换为ASCLL码 并在液晶或数码管上显示出来 4 2 3 DA 模块程序设计 a TLC5615 的工作时序 TLC5615 的工作时序如图 4 4 所示 图 4 4 TLC5615 的时序图 由时序图可以看出 当片选CS为低电平时 输入数据DIN由时钟SCLK同步 输入或输出 而且最高有效位在前 低有效位在后 输入时SCLK的上升沿把串 行输入数据DIN移入内部的16位移位寄存器 SCLK的下降沿输出串行数据 DOUT 片选CS的上升沿把数据传送至DAC寄存器 当片选CS为高电平时 串 行输入数据DIN不能由时钟同步送入移位寄存器 输出数据DOUT保持最近的数 值不变而不进入高阻状态 由此要想串行输入数据和输出数据必须满足两个条 件 第一时钟SCLK的有效跳变 第二片选CS为低电平 这里 为了使时钟的 内部馈通最小 当片选CS为高电平时 输入时钟SCLK应当为低电平 串行数模转换器TLC5615的使用有两种方式 即级联方式和非级联方式 如不使用级联方式 DIN只需输入12位数据 DIN输入的12位数据中 前10位为 TLC5615输入的D A转换数据 且输入时高位在前 低位在后 后两位必须写 入数值为零的低于LSB的位 因为TLC5615的DAC输入锁存器为12位宽 如果 使用TL5615的级联功能 来自DOUT的数据需要输入16位时钟下降沿 因此完 成一次数据输入需要16个时钟周期 输入的数据也应为16位 输入的数据中 前4位为高虚拟位 中间10位为D A转换数据 最后2位为低于LSB的位即零 b DA 程序流程图 DA 程序流程图如图 4 5 所示 S51 开发板的设计 24 开始 TLC5615 片选使能 时钟上升沿读取数据 12 位数据读 取完毕 TLC5615 片选禁能 Y N 图 4 5 DA 程序流程图 4 2 4 DS1302 时钟模块程序设计 a DS1302 的工作时序 DS1302 的复位特征和时钟控制要求 复位 RST 输入有两种功能 首 先 用于接通控制逻辑 允许地址 命令序列送入移位寄存器 其次 用于终止 单字节或多字节数据的传送 当为 RST高电平时 所有的数据传送被初始化 允许对DS1302 进行操作 如果在传送过程中 RST置为低电平 则会终止此 次数据传送 并且I O 引脚变为高阻态 上电运行时 在Vcc 2 0之前 RST必须保持低电平 另外 当 RST为高电平时 SCLK必须为低电平 DS1302 的数据输入输出 向DS1302 写入数据时 数据在控制字节输入后的下一个SCLK周期的上升 沿被写入 多余的SCLK将被忽略 数据写入时从低位 位0 开始 同样 从 DS1302 读取数据时 数据在紧跟控制字节后的下一个SCLK的下降沿读出 读 出数据时也是从低位 0位 到高位 7位 只要 RST 保持高电平 额外的 SCLK将导致数据字节的持续读出 这个特性用于实现该芯片的突发读模式 数 据读写时序如图4 6所示 S51 开发板的设计 25 图 4 6 DS1302 的读写时序 突发模式下 可以一次性读出所有日历时钟数据或RAM数据 b DS1302 的寄存器 DS1302 共有12 个寄存器 其中有7 个寄存器与日历 时钟相关 存放的 数据位为BCD 码格式 其日历 时间寄存器及其控制字见表4 1 表 4 1 DS1302 的寄存器 命令字各位内容寄存器名 写操作读操作 取值范围 76543210 秒寄存器80H81H00 59启动十位个位 分寄存器82H83H00 590十位个位 时寄存器84H85H00 12或00 2312 24010 AP十位个位 日寄存器86H87H01 28 29 30 3100十位个位 月寄存器88H89H01 12000十位个位 周寄存器8AH8BH01 0700000个位 年寄存器8CH8DH00 99十位个位 c DS1302 时钟程序流程图 DS1302 时钟程序流程图如图 4 7 所示 S51 开发板的设计 26 开始 读取 DS1302 的秒值 写入允许 时钟芯片关闭 N 写入初始化时间 写入禁止 获取时钟芯片的时间 时间 日期数据转化为 液晶字符显示 Y 图 4 7 DS1302 时钟程序流程图 在程序中定义了一个结构体 用来存储秒 分 时 星期 日 月 年信 息 对 DS1302 的寄存器地址进行了声明 方便在编程时使用 依据 DS1302 读 写单字节数据时序图编写实时时钟读写一个字节的函数 依据 DS1302 读写数 据时序图编写向 DS1302 某地址写入数据和从 DS1302 某地址读出数据的函数 从 DS1302 某地址读出数据可以获取时钟芯片的时钟数据到自定义的结构型数 组中 这样单片机就可以实时的从 DS1302 获取时间了 向 DS1302 某地址写入 数据可以实现单片机对 DS1302 进行时间的初始化和修改操作 4 2 5 测温模块程序设计 a DS18B20 的工作时序 单总线在任何时刻只能有一个控制信号或数据 数据要能在单片机和单总 线芯片之间实现可靠的传送 遵循单总线处理次序通信协议 确保数据有条不 紊地传送 单总线处理次序图如图4 8所示 S51 开发板的设计 27 图 4 8 单总线处理次序图 处理次序操作时 一般有以下 4 个过程 1 初始化 基于单总线上的所有 传输过程都是以初始化开始的 初始化过程由主机发出的复位脉冲和从机的应 答脉冲组成 应答脉冲使主机知道总线上有从机设备 且准备就绪 2 ROM 操作命令 在主机检测到应答信号后 主机可以发出 ROM 操作命令之一 所 有的 ROM 命令都是 8 位 而且这些命令与各个从机设备的唯一 64 位 ROM 代 码相关 允许主机在单总线上连接多个从机设备时 指定操作某个从机设备 可发送的 ROM 命令有 读 ROM 匹配 ROM 搜索 ROM 跳过 ROM 超 ROM 超速跳过 ROM 条件查找 ROM 3 RAM 操作命令 当成功执行上述 某个 ROM 操作命令后 总线可以发出一个 RAM 命令来访问和控制 RAM 可 发送的 RAM 命令有 写暂存 RAM 读暂存 RAM 复制暂存 RAM 数据转 换 回读 E2PROM 读电源模式 4 数据交换 主机和从机之间进行数据的传 输 所有的数据都是从低位开始读写的 所有的单总线器件要求采用严格的通信协议 以保证数据的完整性 该协 议定义了几种信号 复位脉冲 应答脉冲 写 0 写 1 读 0 和读 1 这些信号 当中 除了应答信号是由从机发给主机的以外 其他的信号都是由主机发出同 步信号 并且发送所有的命令和数据都是从字节的低位开始的 单总线上的所有通信都是以初始化时序开始 包括主机发出的复位脉冲及 从机的应答脉冲 初始化时序如图 4 9 所示 图 4 9 初始化时序 当主机把数据从逻辑高电平拉到逻辑低电平时 写时序开始 写 1 和 0 写时序如图 4 10 所示 S51 开发板的设计 28 图 4 10 写时序 图 4 11 读时序 b 测温程序流程图 测温程序流程图如图 4 12 所示 S51 开发板的设计 29 开始 DS18B20 初始化 跳过读序列号操作 启动温度转换 延时 DS18B20 初始 化 跳过读序列号操作 读取温度寄存器值 延时 读取温度值低位 读取温度值高位 相加的温度值 温度值转化为液晶字符 图 4 12 DS18b20 温度传感器程序流程图 根据初始化时序对 DS18B20 进行初始化 根据读写时序对 DS18B20 进行 读写编程 另外 在循环读取温度数据后 要将读取的温度数据转换为可以在 液晶上显示的液晶字符 4 2 6 串行通信模块程序设计 a RS232 通信模块程序设计 单片机通过 MAX232 与 PC 机通讯程序流程图 4 13 所示 S51 开发板的设计 30 开始 串口初始化 保存数据 发送数据 RI 等于 1 Y N TI 等于 1 RI 置零 TI 置零 Y N 4 13 单片机通过 MAX232 与 PC 机通讯程序流程图 在 PC 机串口调试助手的发送窗口发送数据到单片机 单片机接收到数据 后发送给 PC 机 并在串口调试助手接收窗口中显示 b RS485 通信模块程序设计 单片机通过 MAX485 与 PC 机通讯程序流程图如图 4 14 所示 S51 开发板的设计 31 开始 串口初始化 保存数据 发送数据 RI 等于 1 Y N TI 等于 1 RI 置零 TI 置零 Y N 485 接收 485 发送 4 14 单片机通过 MAX485 与 PC 机通讯程序流程图 在程序中 当串口要接收数据时 使 P3 2 为低电平 当串口要发送数据时 使 P3 2 为高电平 在 PC 机串口调试助手的发送窗口发送数据到单片机 单片 机接收到数据后发送给 PC 机 并在串口调试助手接收窗口中显示 4 2 7 显示模块程序设计 a 数码管程序 数码管的显示方式可以分为动态和静态的 动态的也叫扫描方式 是利用 发光二极管的余辉效应和人眼的视觉暂留效应来实现的 只要在在一定时间内 数码管的笔段亮的频率够快 人眼就看不出闪烁 一般外围硬件较少 但是对 单片机资源耗用巨大 静态的也叫锁存方式 单片机送出数据后控制外围锁存 器件锁存数据 这样数码管笔段里的电流不变 数码管稳定显示 这样单片机 S51 开发板的设计 32 可以干别的活不用管数码管了 这种方案的优点是对单片机的 P 口资源和时间 耗用很少 但是数码管的外围辅助电路复杂 在本程序中使用动态扫描法控制数码管显示 数码管程序流程图如图 4 15 所示 开始 4 段码送 P0 口 位码送 P1 口选中第 四位数码管 3 段码送 P0 口 位码送 P1 口选中第 三位数码管 2 段码送 P0 口 位码送 P1 口选中第 二位数码管 1 段码送 P0 口 位码送 P1 口选中第 一位数码管 图 4 15 数码管程序流程图 P0 口提供数码管显示所需的段码 4 3 2 1 四位数字对应的共阴数码管 的段码分别赋给变量 dis0 dis1 dis2 dis3 在主函数中 依次将 dis0 dis1 dis2 dis3 送至 P0 口 由于八个数码管的每个段所对应的连线连在 一起 只有被片选的数码管才会点亮 因此在将段码送至 P0 口的同时 还要用 P1 口送出位码片选中要显示的数码管 这样片选中的数码管就会显示特定的数 字 程序中由低位到高位循环点亮数码管显示 4 3 2 1 由于间隔时间的总 和小于 0 1 秒 根据人眼的视觉暂留效应 四个数码管看起来同时点亮 S51 开发板的设计 33 b LCD1602 显示程序 1602 液晶模块内部的控制器共有 11 条控制指令 如表 4 2 所示 表 4 2 控制指令表 序号指令 RSR WD7D6D5D4D3D2D1D0 1 清显示 0000000001 2 光标返回 000000001 3 置输入模式 00000001I DS 4 显示开 关控制 0000001DCB 5 光标或字符移位 000001S CR L 6 置功能 00001DLNF 7 置字符发生存贮器地址 0001 字符发生存贮器地址 8 置数据存贮器地址 001 显示数据存贮器地址 9 读忙标志或地址 01BF 计数器地址 10 写数到 CGRAM 或 DDRAM 10 要写的数据内容 11 从 CGRAM 或 DDRAM 读数 11 读出的数据内容 1602 液晶模块的读写操作 屏幕和光标的操作都是通过指令编程来实现的 说明 1 为高电平 0 为低电平 指令 1 清显示 指令码 01H 光标复位到地址 0

温馨提示

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

最新文档

评论

0/150

提交评论