自行车里程表设计_第1页
自行车里程表设计_第2页
自行车里程表设计_第3页
自行车里程表设计_第4页
自行车里程表设计_第5页
已阅读5页,还剩32页未读 继续免费阅读

下载本文档

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

文档简介

摘要 I 摘要摘要 本文介绍的速度与里程表设计以单片机最小系统和霍尔传感器为核心 传 感器将不同的车速转变为不同频率的脉冲信号输录到单片机进行控制与计算 再采用 LM016L 模块进行显示 使得自行车的速度与里程数据直观的显示给使用 者 本系统由霍尔传感器 单片机 AT89C51 液晶显示模块 LM016L 数据存储 电路和键盘矩阵模块 时间芯片 DS1302 组成 通过单片机的设置可使内部定时 器 T1 对脉冲输入引脚T0 进行控制 这样能精确地算出加到 T0 引脚的单位时 间检测到的脉冲数 设计中的速度显示采用 LM016L 模块 通过速度换算得来的 里程数采用 12C 总线并通过存储器来存储 既节省了所需单片机的口线和外围 器件 同时也简化了显示部分的软件编程 本文先对里程表设计当中所需的设备作了详细的介绍 对设计中存在的问 题进行了说明 而后对硬件和软件部分的设计和实现作了认真的分析 在此基 础上进行了仿真 本里程表的设计具有结构简单 成本低廉 显示清晰 稳定可靠等优点 关键词 单片机最小系统 霍尔传感器 时间芯片 DS1302 液晶显示模 LM016L 矩阵键盘 Abstract II Abstract This paper introduces the speed and odometer design based on SCM system and the smallest Holzer sensor is the core The sensor will different speed change into different frequency pulse signal inputting to the microprocessor controlandcalculation then use LM016L module to display the bicycle speed and mileage data to display to the user This system is composed of sensors MCU Holzer AT89C51LCD module LM016L data storing circuit and a keyboard matrix module time chip DS1302 Through the computer s settings can make the internal timer T1 pulse input pin T0 control this can be accurately calculated to the T0 pin unit time to detect the pulse number in the design of speed that the use of the LM016L module the speed of conversion to the mileage by using 12C bus and the memory to store saving the for single chip mouth lines and peripheral devices but also simplifies the display portion of the software programming This paper first on the odometer design required equipment are introduced in this paper on the problems existing in the design are described then the hardware and software design and implementation carefully analyzed on the basis of the simulation The odometer design has the advantages of simple structure low cost clear display the advantages of stable and reliable Keywords single chip microcomputer minimum system a Holzer sensor time chip DS1302 liquid crystal display module LM016L matrix keyboard 目录 i 目目 录录 摘要摘要 AbstractAbstract 1 1 绪论绪论 1 1 1 课题的背景与意义 1 1 2 课题所要解决的主要问题 1 2 2 系统设计系统设计 2 2 1 系统功能分析 2 2 2 系统设计主要任务及内容 2 2 3 系统设计技术指标 3 3 3 自行车数字里程表硬件设计自行车数字里程表硬件设计 3 3 1 概述 3 3 1 1 系统硬件构成 3 3 1 2 设计思路 3 3 2 数据采集模块 4 3 2 1 传感器 4 3 2 2 时间芯片 6 3 2 3 键盘矩阵 11 3 3 控制模块 12 3 3 1 概述 12 3 3 2 单片机最小系统 12 3 3 3 单片机引脚功能介绍 15 3 3 3 1 基础知识 15 3 3 4 中断系统 17 3 3 5 定时器 计数器 17 3 4 显示模块 18 3 5 其他介绍 21 3 5 1 复位电路 21 4 4 自行车数字里程表软件设计自行车数字里程表软件设计 22 4 1 系统介绍 22 目录 i 4 2 系统流程图 22 5 5 程序代码程序代码 22 目录 i 5 1 数据采集程序 22 5 2 键盘扫描程序 25 5 3 中断程序 27 6 6 ProteusProteus 仿真仿真 28 6 1 概述 28 6 2 仿真电路图 28 6 3 仿真结果图 29 如下 6 2 示 错误 未定义书签 错误 未定义书签 7 7 系统调试与结果分析系统调试与结果分析 29 7 1 电路调试 29 7 1 1 硬件调试 29 7 1 2 软件调试 30 7 2 结果分析 30 总结与展望总结与展望 31 致谢致谢 31 参考文献参考文献 错误 未定义书签 错误 未定义书签 附录附录 错误 未定义书签 错误 未定义书签 河北工程大学毕业设计论文 1 1 1 绪论绪论 1 1 1 1 课题的背景与意义课题的背景与意义 中国的轻型电动车产业在 2000 年进入产业化发展阶段 目前正处于产业生 命周期快速增长阶段的初期 尽管处于处处封杀的重压下 消费者对这一新兴 交通工具的青睐 推动轻型电动车产业近年来保持了 80 以上的增长速度 2005 年 在整体经济需求增长放慢 工业增速回落的背景下 轻型电动车行业 却出现令人瞩目的 井喷 行情 成为耐用消费品市场不多的 亮点 之一 2006 产销量达到 1500 万辆 据此估算 2010 年 中国轻型电动车的产销量将可能 达到 3000 万辆 出口量将可能达到 500 600 万辆 实现工业产值 700 亿元 包 括上下游带动产值的产业总体规模将达到 1300 亿 我国是自行车大国 随着人们生活水平的不断提高 自行车已经不仅仅是 运输 代步的工具 其辅助功能也变得越来越重要 因此 人们希望自行车的 娱乐 休 闲 锻炼的功能越来越多 能带来大家更多的健康与快乐 在这个背 景下 自行车里程表作为自行车的一大辅助工具迅速发展起来 科学 美观 合 理设计自行车里程表有一定的实用价值 它能合理计算出速度及公里数 使运动者 运动适量 达到健康运动与代步的最佳效果 随着自行车里程表的发展 其功能也逐渐从单一的里程显示发展到速度 时 间显示 甚至有的还具有测量骑车人的心跳 显示骑车人热量消耗等功能 让 人能清楚地知道当前的速度 时间 里程等物理量 本文介绍的自行车里程表是采用以 AT89C51 单片机为中央处理器 结合高精 度的采样电路 控制电路 显示电路 方便地实现了智能化 高精度 高可 靠性 高效率的自行车里程表的设计 并且使用方便 1 21 2 课题所要解决的主要课题所要解决的主要问题问题 1 设计一个轻便 省电 全天候野外使用的自行车里程表 2 可显示里程 速度 加速度 行驶时间等信息 3 适用于各种车型 不同尺寸 车型信息可通过键盘设置 河北工程大学毕业设计论文 2 2 2 系统设计系统设计 2 1 2 1 系统功能分析系统功能分析 本系统可以实现自行车或电动车在行驶过程中速度 里程数的显示功能 系统元件简单 实用性强 通过霍尔传感器进行信号的采集 每来一次信号 计数器加一 每五秒钟计算一次平均速度 本系统的核心在于单片机 把采集 到的数据送入单片机后进行处理 再通过单片机把处理好的数据通过液晶显示 出来 从而实现速度和里程的显示 本系统是由数据采集 单片机控制系统 键盘显示 液晶显示 4 部分构成 其中数据的采集是由霍尔传感器来完成的 它的输出是矩形脉冲 其中关键的 处理由单片机系统来完成 单片机将对 P1 0 脚的信号进行计数 输出的信号由 液晶进行显示 显示当前的行驶里程情况 键盘的作用是输入自行车的车型等 信息 以上所诉就是整个系统的总体设计思想 6 该设计能实时地将所测的累计里程数显示出来 主要是将传感器输入到单 片机的脉冲信号的频率 传感器将不同车速转变成不同频率的脉冲信号 实时 地测量出来 通过单片机计算出里程 并由液晶显示模块显示所测里程 本设 计的里程数的算法是一种大概的算法 假设在一定时间内自行车是匀速行进 平均速度与时间的乘积即为里程数 设计时 应综合考虑测速精度和系统反应时间 本设计用测量脉冲频率来 计算速度 因而具有较高的测速精度 在计算里程时取了自行车的理想状态 实际中 误差控制在几米之内 相对于整个里程来说不是很大 另外 还应尽 量保证其他子模块在编程时的通用性和高效性 2 22 2 系统设计主要任务及内容系统设计主要任务及内容 用单片机设计一个可以适用各种自行车的数字里程表 可显示里程 速度 时间等信息 学习 了解 掌握程序设计方法和了解自行车的数字里程表的基 本工作原理 用传感器将所测转速转变为数字脉冲信号 然后再将数字脉冲信 号数据传输于核心单片机处理 单片机将根据设计程序计算在一定时间内数字 脉冲的频率 再由计数值最终得到路程里数并通过终端显示设备显示出来 附 加报警功能 在速度超过某一个固定值后 指示灯发亮 提示需要减速 河北工程大学毕业设计论文 3 2 32 3 系统设计技术指标系统设计技术指标 计数方式 十进制 里程显示位数 4 位 速度显示位数 2 位 3 3 自行车数字里程表硬件设计自行车数字里程表硬件设计 3 13 1 概述概述 自行车数字里程表的硬件设计主要包括运用传感器对外部信号进行采集 单片机对数据进行处理 液晶显示的设计 单片机是设计的核心 3 1 13 1 1 系统硬件构成系统硬件构成 系统硬件以AT89C51为核心 包括以下三个模块电路 1 数据采集模块 霍尔传感器采集数据 时间芯片 DS1302 键盘矩阵 2 控制模块 AT89C51 3 LCD 显示模块 LM016L 数据采集AT89C51LCD 显示 外部信号 图 3 1 系统构成框图 3 1 23 1 2 设计思路设计思路 基本思路 假设自行车车轮的半径为 R R 的值根据自行车半径的不同由编 程是内部设定或键盘输入给定 则 L 2 3 14 R 在轮圈上安装一个永久磁铁 则轮子每转一圈 通过开关型霍尔传感器的电平就会发生一次跳变 跳变产生 一个脉冲信号 从引脚 P3 5 计数器 T1 端输入 并通过计数器对其进行计数为 河北工程大学毕业设计论文 4 N 在规定的周期 T 时间内的路程 S N L 而在该周期内的速度 V S T 当前的总 路程为 lc lc S 计时功能由时间芯片 DS1302 来选取 如果当时间不符合时 则由键盘对 时间进行初始化设置来调整时间 然后通过定时器来完成时间计时功能 键盘 还可以对不同规格的自行车半径来作选择 在 LCD 上需显示的内容为 time sd lc 由 AT89C51 控制显示数据 实 时刷新 3 23 2 数据采集模块数据采集模块 3 2 13 2 1 传感器传感器 3 2 1 1 传感器的选择 里程测量传感器的选择方案有 使用编码器对自行车车轮的圈数进行测量 使用红外光敏电阻对里程进行测量 利用霍尔传感器对自行车里程进行测量 编码器的安装相对来说比较复杂 红外光敏电阻不仅对光敏感 还对环境 和天气的要求也高 这些因素都能严重影响测量的效果 而霍尔传感器完全能 避免上述的不足之处 由霍尔元件加整形电路构成的霍尔开关系统 不仅安装 方便 不受光线和环境的影响 而且具有输出响应快 数字脉冲性能好 既简 单又经济适用 所以本设计采用霍尔传感器来对里程进行测量 3 2 1 2 霍尔传感器的原理 当一块通有电流的金属或半导体薄片垂直地放在磁场中时 薄片的两端就 会产生电位差 这种现象就称为霍尔效应 两端具有的电位差值称为霍尔电势 U 其表达式为 U K I B d 其中 K 为霍尔系数 I 为薄片中通过的电流 B 为外加磁场的磁感应强度 d 是薄片的厚度 由此可见 霍尔效应的灵敏度高 低与外加磁场的磁感应强度成正比的关系 而利用霍尔效应制成的元件叫做霍 尔元件 霍尔元件接线图如下图 3 1 所示 图 3 1 接线图 河北工程大学毕业设计论文 5 霍尔传感器检测转速示意图如下图 3 2 示 在非磁材料的圆盘边上粘贴一 块磁钢 霍尔传感器固定在圆盘外缘附近 圆盘每转动一圈 霍尔传感器便输 出一个脉冲 通过单片机测量产生脉冲的频率就可以得出圆盘的转速 图 3 2 测速原理图 霍尔传感器的外形图和与磁场的作用关系如图 3 3 所示 磁场由磁钢提供 所以霍尔传感器和磁钢需要配对使用 图 3 3 霍尔元件产品图和管脚图 河北工程大学毕业设计论文 6 3 2 23 2 2 时间芯片时间芯片 本设计时间芯片采用的了 DS1302 DS1302 是由美国 DALLAS 公司推出的一 种具有涓细电流充电能力的低功耗实时时钟电路 具有可对年 月 日 周 日 时 分 秒进行计时等的功能 工作电压为 2 5V 5 5V 主要的特点是采 用串行数据传输 即使掉电亦不丢失 在 DS1302 内部有一个 31 8 的用于临时 性存放数据的 RAM 寄存器 DS1302与AT89C51的连接线有三条线 RST引脚 SCLK串行时钟引脚 I O串 行数据引脚 Vcc2作为备用电源 芯片外接晶振X2 为芯片提供计时脉冲 DS1302是 DALLAS 公司推出的涓流充电时钟芯片 内含一个实时时钟 日历 和31字节静 态 RAM 可以通过串行接口与单片机进行通信 实时时钟 日历电 路提供秒 分 时 日 星期 月 年的信息 每个月的天数和闰年的天数可 自动调整 时钟操作可通过 AM PM 标 志位决定采用24或12小时时间格式 DS1302与单片机之间能简单地 采用同步串行的方式进 行通信 仅需三根 I O 线 复位 RST I O 数据 线 串行时钟 SCLK 时钟 RAM 的读 写数据以一字节或多达31字节的字符组 方式通信 DS1302工作时功耗很低 保持数据和时钟信息时 功耗小于1mW DS1302的外部引脚分配图如图3 4所示 图3 4DS1302的外部引脚分配图 DS1302的内部结构如表1所示 主要组成部分为 移位寄存器 控制逻辑 振荡器 实时时钟以及 RAM 虽然数据分成两种 但是对单片机的程序而言 其 实是一样的 就是对 特定的地址进行读写操作 河北工程大学毕业设计论文 7 表1 DS1302的内部结构 图3 5 DS1302外部引脚功能说明图 DS1302的结构如图3 6所示 图 3 6DS1302 的结构 DS1302的内部结构图3 8 DS1302外部引脚功能说明图3 5 VCC2 主电源引脚 GND 地 图3 6 DS1302封装图 RST 复位 I O 数据输入 输出 SCLK 串行时钟 VCC1 电池引脚 河北工程大学毕业设计论文 8 DS1302的内部结构如图3 7所示 图3 7 DS1302的内部结构图 DS1302含充电电路 可以对作为后备电源的可充电电池充电 并可选择 充电使能和串 入的二极管数目 以调节电池充电电压 不过对我们目前而言 最需要熟悉的是和时钟相关 部分的功能 对于其它参数请参阅数据手册 DS1302的工作原理 DS1302工作时为了对任何数据传送进行初始化 需要将复位脚 RST 置 为高电平且 将8位地址和命令信息装入移位寄存器 数据在时钟 SCLK 的上 升沿串行输入 前8位指 定访问地址 命令字装入移位寄存器后 在之后的时钟 周期 读操作时输出数据 写操作时 输出数据 时钟脉冲的个数在单字节方式 下为8 8 8位地址 8位数据 在多字节方式下为8加最多可达248的数据 各引 脚的功能为 Vcc1 主电源 Vcc2 备用电源 当Vcc2 Vcc1 0 2V时 由Vcc2向DS1302 供电 当Vcc2 Vcc1时 由VCC1向DS1302供电 SCLK 串行时钟 输入 控制数据的输入与输出 I O 三线接口时的双向数据线 CE 输入信号 在读 写数据期间 必须为高 该引脚有两 个功能 第一 CE 开始控制字访问移位寄存器的控制逻辑 其次 CE提供结束单字节或多字 节数据传输的方法 DS1302有下列几组寄存器 1 DS1302有关日历 时间的寄存器共有12个 其中有7个寄存器 秒寄存器 81h 80h 的位7定义为时钟暂停标志 CH 当该 位置为1 时 时钟振荡器停止 DS1302处于低功耗状态 当该位置为0时 时钟开始 运行 控制寄存器 8Fh 8Eh 的位7是写保护位 WP 其它7位均置为0 在 任何的对钟和RAM 的写操作之前 WP 位必须为0 当WP 位为1时 写保护位 防止对任一寄存器的写操作 河北工程大学毕业设计论文 9 2 DS1302有关RAM 的地址 DS1302中附加31字节静态RAM 的地址如表3 3所示 表3 3DS1302中附加31字节静态RAM 的地址 工作模式寄存器读寄存器写寄存器 时钟突发模式寄存器 CLOCK BURSTBFhBEh RAM突发模式寄存器 RAM BURSTFFhFEh 3 DS1302 的工作模式寄存器 所谓突发模式是指一次传送多个字节的时钟信号和 RAM 数据 突发模式 寄存器如表 3 4 所示 表 3 4 突发模式寄存器 此外 DS1302 还有充电寄存器等 2 读写时序说明 DS1302 是 SPI 总线驱动方式 它不仅要向寄存器写入控制字 还需要读 取相应寄存器的数据 要想与DS1302通信 首先要了解 DS1302的控制字 DS1302的控制字如表3 5 表 3 5控制制字 即地址及命令字节 读地址写地址数据范围 C1hC0h00 FFh C3hC2h00 FFh C5HC4h00 FFh FDhFCh00 FFh 控制字的最高有效位 位7 必须是逻辑1 如果它为0 则不能把 数据写入 76543210 RAMR D 1 C K A4A3A2A1A0 W R 河北工程大学毕业设计论文 10 到 DS1302中 位6 如果为0 则表示存取日历时钟数据 为1表示存取RAM数据 位5至 位1 A4 A0 指示操作单元的地址 位0 最低有效位 如为0 表示要进行写操作 为1表示进行读 操作 控制字总是从最低位开始输出 在控制字指令输入后的下一个 SCLK时钟的上升沿时 数据被写入DS1302 数据输入从最低位 0位 开始 同样 在紧跟8位的控制字指令后的下一个SCLK 脉冲的 下降沿 读出DS1302 的数据 读出的数据也是从最低位到最高位 数据读写时序如图3 7所示 图3 7 数据读写时序 具体操作见驱动程序 3 电路原理图 电路原理图如图3 8所示 DS1302与单片机的连接也仅需3条线 CE引脚 SCLK串行时钟引脚 I O串行数据引脚 Vcc2为备用电源 外接32 768kHz 晶 振 为芯片提供计时脉冲 河北工程大学毕业设计论文 11 图 3 8 电路原理图 3 2 33 2 3 键盘矩阵键盘矩阵 键盘是 4 4 的矩阵键盘 在设计中是用来调整时间的 从上述知道当时间 芯片 DS1302 的时间不准确时 就可以通过键盘来对时间进行调整 当然键盘还 能对不同规格自行车的半径进行选择 本系统采用 4 4 键盘 其中使用到的只有其中 10 个 另外六个保留 键盘 的作用就是设置轮胎的宽度 和另外的一些参数值 也可以通过键盘来控制程 序的运行 本系统未使用 4 4 的键盘引出的 8 个引脚接单片机的 P2 口 键 盘扫描原理是按键部分由 16 个轻触按键按照 4 行 4 列排列 连接到 P2 端口 将行线所接的单片机的 I O 口作为输出端 而列线所接的 I O 口则作为输入 这样 当按键没有按下时 所有的输出端都是高电平 代表无键按下 行线输 出是低电平 一旦有键按下 则输入线就会被拉低 这样 通过读入输入线的 状态就可得知是否有键按下了 本系统采用的扫描法 具体如下 判断键盘中 有无键按下 将全部行线置低电平 然后检测列线的状态 只要有一列的电平 为低 则表示键盘中有键被按下 而且闭合的键位于低电平线与 4 根行线相交 叉的 4 个按键之中 若所有列线均为高电平 则键盘中无键按下 判断闭合键 所在的位置 在确认有键按下后 即可进入确定具体闭合键的过程 方法是 依次将行线置为低电平 即在置某根行线为低电平时 其它线为高电平 确定 某根行线位置为低电平后 再逐行检测各列线的电平状态 若某列为低 则该 列线与置为低电平的行线交叉处的按键就是闭合的按键 河北工程大学毕业设计论文 12 3 33 3 控制模块控制模块 3 3 13 3 1 概述概述 单片机是指一种集成在电路芯片上的微型计算机 它包括中央处理器CPU 随机存储器RAM 只读存储器ROM 并行I O口 串行I O口 中断系统 定时器 计数器 定时电路及元件等部件集成到一块芯片上构成的一个小而完善的计算 机系统 1 中央处理器 2 中央处理器CPU是单片机的核心 主要完成运算和控制功能 1 随机存储器RAM CPU在运行时可随时进行数据的写入和读取 断电后RAM中内容丢失 2 只读存储器ROM 只读存储器ROM 顾名思义是指将数据写入后不易改写的存储器 断电后 ROM 中内容不丢失 如MP3 1 并行I O口 51单片机有4个并行I O口P0 P1 P2 P3 每个I O口有8根I O口线 2 串行I O口 3 目前比较高档的8位单片机均设置了全双工串行I O口 用以实现与某些 终端设备进行串行通信 51单片机只有一个串行口P3 0 P3 1 1 中断系统 中断系统包括中断装置和中断处理程序 是计算机的重要组成部分 实时 控制 故障自动处理 计算机与外围设备间的数据传送广泛采用中断系统 2 定时器 计数器 定时器是由单片机内部提供一个非常稳定的计数信号 计数器则是记录单 片机的外部事件的 3 定时电路及元件 计算机的整个工作是在时钟信号的驱动下 按照严格的时序有规律的一拍 一拍的执行各个操作 单片机内部设有定时电路 只需要外接振荡元件即可工 作 3 3 23 3 2 单片机最小系统单片机最小系统 单片机的最小系统可以为单片机提供一个稳定无抖动的电源 主要由电源 时钟 复位三部分电路组成 如图 3 9 所示 河北工程大学毕业设计论文 13 单 片 机 电源电路 时钟电路 复位电路 图 3 9电路构成框图 1 电源电路 向单片机供电通常图片都没有给出 20 脚是地 GND 40 脚 是电源 VCC 一般我们会选择在电源 VCC 处 加一个瓷片电容 它的目的是能 滤掉电源中的高频杂波 使系统更加安全 需要注意的是 51 单片机使用的是 5 伏直流电源 2 时钟电路 时钟电路就是振荡电路 向单片机提供一个正弦波信号作为 基准 决定单片机的执行速度 AT89C51 片内有一个用于构成振荡器的反相放大器 该反相放大器的输入 为芯片引脚 XTAL1 19 脚 输出端为引脚 XTAL2 18 脚 这两个引脚通过连接 一个 12MHz 晶振 X1 和两个 30pF 的瓷片电容 C1 C2 构成了单片机的时钟电路 振荡器是单片机系统正常工作的保证 如果振荡器不起振 系统将会不能工作 假如振荡器运行不规律 系统执行程序的时候就会出现时间上的误差 这在通 信中会体现的很明显 电路将无法通信 晶振是石英晶体振荡器的简称 通常 用来构成振荡电路 产生各种频率信号 是一种能够输出稳定的震荡周期的元 件 通过晶振输出的时钟脉冲 来安排单片机的工作 这样单片机才能够有了 时间的概念 但是晶振并不能够独立的使用 图中的瓷片电容 C1 和 C2 起稳定 作用 所以晶振必须配合合适的负载电容 否则会产生错误 或者是晶振不能 正常的工作 晶振所加电容是匹配电容 主要是根据单片机内部电路和晶振确 定的 一般选取 30pF 左右即可 电容大小对振荡的稳定性有较大影响 对频率 有一定的微调 但不明显 晶振和瓷片电容是没有正负的 注意两个瓷片电容 相连的那端一定要接地 51 单片机最小系统晶振的振荡频率直接影响单片机的 处理速度 频率越大处理速度越快 河北工程大学毕业设计论文 14 图 3 10 时钟电路 注 时钟电路振荡频率 f 晶振频率 时钟电路振荡周期 1 f 单片机机器周期 振荡周期 12 例如 晶振频率 12MHz 振荡频率 12MHz 振荡周期 1 12 s 机器周期 1 s 3 复位电路 确定单片机工作的起始状态 完成单片机的启动过程 AT89C51 单片机的复位信号时高电平有效 通过 RST VPD 9 脚 连接复位电 路 复位电路连接方式有两种 1 上电复位 单片机接通电源时产生复位信号 完成单片机启动 确定单片机起始工作状态 2 手动复位 手动按键产生复位 信号 完成单片机启动 确定单片机的初始状态 通常在单片机工作出现混乱 或 死机 时 使用手动复位可实现单片机的 重启 上电复位是每个单片机 都必须有的 一般断电以后 再上电就复位了 而手动复位在大型的系统中运 用比较多 在一般的小东西里面基本不用 所以本设计采用了上电复位方式 本设计的复位电路是由一个 10uF 的电容 C3 和一个 10K 的电阻 R1 组成的 一般单片机复位脚至少需要大约 10ms 时间的持续高电平脉冲 才能保证有效复 位 当上电时 电容充电 类似于短路 复位脚就变成高电平 电容充满电后 复位脚就变成低电平 同时应注意保证加在 RST 引脚上的高电平持续两个机器 周期 才能使单片机可靠复位 复位电路图如图 3 11 所示 河北工程大学毕业设计论文 15 图 3 11 复位电路图 3 3 33 3 3 单片机引脚功能介绍单片机引脚功能介绍 3 3 3 1 3 3 3 1 基础知识基础知识 AT89C51是由美国ATMEL公司生产的一种低功耗 高性能的CMOS 8位单片机 片内含有4K字节Flash可擦写存储器 PEROM 以及128字节的随机存取数据存储器 RAM AT89C51采用ATMEL公司高密度 非易失性存储技术生产 兼容标准MCS 51指令系统 片内置通用8位中央处理器 CPU 和Flash存储单元 功能十分强 大的AT89C51单片机可提供许多高性价比的应用场合 还可灵活应用于各种控制 领域 AT89C51 提供的标准功能有 4k 字节Flash 闪速存储器 128字节内部 RAM 32 个I O 口线 两个16位定时 计数器 一个5向量两级中断结构 一 个全双工串行通信口 片内振荡器及时钟电路 同时 AT89C51可降至0Hz的静 态逻辑操作 并且还支持两种软件可选的节电工作模式 空闲方式停止CPU的工 作 但允许RAM 定时 计数器 串行通信口及中断系统继续工作 掉电方式保 存RAM中的内容 但振荡器停止工作并禁止其它所有部件工作直到下一个硬件复 位 3 3 3 2 主要特性 与 MCS 51 兼容 4K 字节可编程闪烁存储器 寿命 1000 写 擦循环 数据保留时间 10 年 全静态工作 0Hz 24MHz 三级程序存储器锁定 128 8 位内部 RAM 32 可编程 I O 线 河北工程大学毕业设计论文 16 两个 16 位定时器 计数器 5 个中断源 可编程串行通道 低功耗的闲置和掉电模式 片内振荡器和时钟电路 3 3 3 3 引脚定义及功能 AT89C51 引脚图如下图 3 12 所示 按引脚的功能可分为三个部分 1 主电源引脚 VCC GND 和晶振 VCC 供电电压 运行和程序校验时接电源正端 5V GND 接地端 XTAL1 输入到单片机内部振荡器的反相放大器 当采用外部振荡器时 对HMOS单片 微机 此引脚应接地 对CHMOS单片微机 此引脚作驱动端 图 3 12 XTAL2 反相放大器的输出 输入到内部时钟发生器 当采用外部振荡器时 XTAL2 接收振荡器信号 对 CHMOS 单片微机 此引脚应悬浮 当使用片内时钟电路时 二线用 来外接石英晶体和微调电容 当使用片外时钟电路时 XTAL1 接收外部时钟信号 XTAL2 悬空 2 I O 共 4 个口 32 根 I O 线 P0 口 P0 0 PO 7 是一个 8 位漏级开路型的双向 I O 口 P0 能够用于外部程序数据存储器 它可以被定义为数据 地址的低八位 在 FIASH 编程时 P0 口作为原码输入口 当 FIASH 进行校验时 P0 口则作为输出原码 此时 P0 外部必须 被拉高 P1 口 P1 0 P1 7 是一个内部带提升电阻的准双向 I O 口 在 FLASH 编程和校验 时 P1 口可用于接收低 8 位的地址信号 P2 口 P2 0 P2 7 是一个内部带提升电阻的 8 位准 河北工程大学毕业设计论文 17 双向 I O 口 也可用于外部程序存储器或数据存储器访问时的高八位地址 P2 口在 FLASH 编程和校验时接收高八位地址和控制信号 P3 口 P3 0 P3 7 是一个内部带提升电阻的 8 位 准双向 I O 口 也可作为 AT89C51 的一些特殊功能口 备选功能如下 P3 0 RXD 串行输 入口 P3 1 T 串行输出口 P3 2 INT0 外部中断 0 P3 3 INT1 外部中断 1 P3 4 T0 记时器 0 外部输入 P3 5 T1 记时器 1 外部输入 P3 6 WR 外部数据存储器写选通 P3 7 RD 外部数据存储器读选通 3 控制线 3 类共 4 根线 A 输入控制线 RST VPD 复位输入信号 高电平有效 在振荡器工作时 在 RST 上作用两个机 器周期 24 个时钟周期 以上的高电平时 将单片微机复位 第二功能 VPD 为 内部 RAM 的备用电源输入端 主电源一旦发生断电 降到一定低电压值时 可 通过 VPD 为单片机内部 RAM 提供电源 以保护片内 RAM 中的信息不丢失 使上 电后能继续正常运行 EA VPP 片外程序存储器访问允许信号 低电平有效 当 EA 为高电平时 选择片内程序存储器 80C51 为 4KB 80C52 为 8KB 当程 序计数器 PC 的值大于 4KB 则自动执行外部程序存储器内容 当 EA 接地时 只访问外部程序存储 而不用管片内是否有程序存储器 第二功能 VPP 为编程 电源输入 B 输入 输出控制线 ALE PROG 地址锁存允许信号 输出 高电平 有效 在访问片外存储器或 I O 时 用来锁存 P0 扩展地址低 8 位的地址信号 以实现低 8 位地址与数据的隔离 ALE 也以振荡频率的 1 6 的固定速率输出 可作为对外输出的时钟或用作外部定时脉冲 ALE 可以驱动 8 个 LSTTL 负载 第二功能 PROG 低电平有效 是内部 ROM 编程时的编程脉冲输入端 C 输出控制 线 PSEN 外部程序存储器读选通信号 低电平有效 在从片外程序存储器取指 期间 在每个机器周期中 当 PSEN 有效时 程序存储器的内容被送上 P0 口 数据总线 PSEN 可以驱动 8 个 LSTTL 负载 3 3 43 3 4 中断系统中断系统 中断源 引起中断的根源 中断请求 中断源向 CPU 提出的处理要求 中断响应过程 CPU 中断事件 A 转去执行事件 B 的过程 中断处理 对事件 B 的整个处理过程 中断返回 CPU 处理完事件 B 返回到原事件 A 被中断的地方继续执行 实现上述中断功能 中断系统 AT89C51 有 5 个中断源 2 个优先级 3 3 53 3 5 定时器定时器 计数器计数器 AT89C51 单片机内部有两个定时 计数器 T0 和 T1 其核心是计数器 基本 河北工程大学毕业设计论文 18 功能是加 1 对外部事件脉冲计数是计数器 对片内机器周期的脉冲计数则是 定时器 3 3 5 1 定时器 计数器的结构 定时器 计数器 T0 T1 的逻辑结构如图 3 13 所示 图 3 13 定时器 计数器 T0 T1 的逻辑结构 3 3 5 2 定时器 计数器的工作原理 定时器 计数器实际上是一个二进制的加 1 寄存器 当启动后就开始从所 设定的计数初始值开始加 1 计数 寄存器计满回零时能自动产生溢出中断请求 但定时与计数两种模式下的计数方式却不相同 定时器模式时 每个机器周期 寄存器增 1 即寄存器对机器周期计数 3 43 4 显示模块显示模块 显示设计采用 LM016L 液晶模块 该点阵的屏显成本相对较低 适用于各类 仪器 小型设备的显示领域 在本设计中用来显示速度 路程 和时间 LCD 模块引脚及功能如下图 3 14 所示 图 3 14 LM016L 引脚 河北工程大学毕业设计论文 19 VSS 接地 VDD VCC 电源电路 5V VEE VO 液晶驱动电压 RS 寄存器选择 为 1 时 选数据寄存器 DR 为 0 时选指令寄存器 IR RW 读写信号 E 使能 片选 下降沿触发 DB0 DB7 数据线 LM016L 液晶模块采用 HD44780 控制器 hd44780 具有简单而功能较强的指 令集 可以实现字符移动 闪烁等功能 LM016L 与单片机 MCU 通讯可采用 8 位 或 4 位并行传输两种方式 hd44780 控制器由两个 8 位寄存器 指令寄存器 IR 和数据寄存器 DR 忙标志 BF 显示数 RAM DDRAM 字符发生器 ROMA CGOROM 字符发生器 RAM CGRAM 地址计数器 RAM AC IR 用于寄存 指令码 只能写入不能读出 DR 用于寄存数据 数据由内部操作自动写入 DDRAM 和 CGRAM 或者暂存从 DDRAM 和 CGRAM 读出的数据 BF 为 1 时 液晶模块 处于内部模式 不响应外部操作指令和接受数据 DDTAM 用来存储显示的字符 能存储 80 个字符码 CGROM 由 8 位字符码生成 5 7 点阵字符 160 中和 5 10 点 阵字符 32 种 8 位字符编码和字符的对应关系 可以查看参考文献 30 中的 表 4 CGRAM 是为用户编写特殊字符留用的 它的容量仅 64 字节 可以自定 义 8 个 5 7 点阵字符或者 4 个 5 10 点阵字符 AC 可以存储 DDRAM 和 CGRAM 的 地址 如果地址码随指令写入 IR 则 IR 自动把地址码装入 AC 同时选择 DDRAM 或 CGRAM 但愿 LM016L 液晶模块的引脚功能如下表 7 所示 引脚说明引脚说明 1602 字符型 LCD 通常有 14 条引脚线或 16 条引脚线的 LCD 多出来的 2 条 线是背光电源线 VCC 15 脚 和地线 GND 16 脚 其控制原理与 14 脚的 LCD 完全一样 其中 表 7 LM016L 液晶模块的引脚功能 引脚符号功能说明 1VSS 一般接地 2VDD 接电源 5V 河北工程大学毕业设计论文 20 寄存器选择控制如表 8 所示表 寄存器选择控制表 RSR W 操作说明 00 写入指令寄存器 清除屏等 01 都 busy flag DB7 以及读取位址计数器 DB0 DB6 值 10 写入数据寄存器 显示各字型等 11 从数据寄存器读取数据 注 关于 E H 脉冲 开始时初始化 E 为 0 然后置 E 为 1 再清 0 busy flag DB7 在此位为被清除为 0 时 LCD 将无法再处理其他的指 令要求 字符集字符集 1602 液晶模块内部的字符发生存储器 CGROM 已经存储了 160 个不同的点 阵字符图形 这些字符有 阿拉伯数字 英文字母的大小写 常用的符号 和 日文假名等 每一个字符都有一个固定的代码 比如大写的英文字母 A 的代 码是 01000001B 41H 显示时模块把地址 41H 中的点阵字符图形显示出来 我们就能看到字母 A 因为 1602 识别的是 ASCII 码 试验可以用 ASCII 码 直接赋值 在单片机编程中还可以用字符型常量或变量赋值 如 A 显示地址显示地址 12345678910111213141516 00H01H02H03H04H05H06H07H08H09H0AH0BH0CH0DH0EH0FH 40H41H42H43H44H45H46H47H48H49H4AH4BH4CH4DH4EH4FH 3VO 液晶显示器对比度调整端 接正电源时对比度最弱 接地电源时对 比度最高 对比度过高时会产生 鬼影 使用时可以通过一个 10K 的电位器调整对比度 4RS RS 为寄存器选择 高电平 1 时选择数据寄存器 低电平 0 时选择 指令寄存器 5R W R W 为读写信号线 高电平 1 时进行读操作 低电平 0 时进行写 操作 6E E 或 EN 端为使能 enable 端 下降沿使能 7DB0 底 4 位三态 双向数据总线 0 位 最低位 8DB1 底 4 位三态 双向数据总线 1 位 9DB2 底 4 位三态 双向数据总线 2 位 10DB3 底 4 位三态 双向数据总线 3 位 11DB4 高 4 位三态 双向数据总线 4 位 12DB5 高 4 位三态 双向数据总线 5 位 13DB6 高 4 位三态 双向数据总线 6 位 14DB7 高 4 位三态 双向数据总线 7 位 最高位 也是 busy flang 15BLA 背光电源正极 16BLK 背光 电源负极 河北工程大学毕业设计论文 21 指令集指令集 1602 通过 D0 D7 的 8 位数据端传输数据和指令 显示模式设置 初始化 0011 0000 0 x38 设置 16 2 显示 5 7 点阵 8 位数据接口 显示开关及光标设置 初始化 0000 1DCB D 显示 1 有效 C 光标显示 1 有效 B 光标闪烁 1 有效 0000 01NS N 1 读或写一个字符后地址指针加 1 河北工程大学毕业设计论文 23 count 上面程序是数据的采集 其中 sbit p P3 5 sbit q 因为 p 是接收脉冲的 时刻都在改变 所以用 q 来保存 p 的值 每次当 P5 0 口发生跳变的时候 计数 器加一 河北工程大学毕业设计论文 24 开始 初始化液晶 模块 Y 键盘扫描 N 开中断 中断时间是 否到 Y N 重新设置中断 时间 计算速度 里程数 显示速度 跟里程 图 4 1 系统流程图 河北工程大学毕业设计论文 25 5 25 2 键盘扫描程序键盘扫描程序 void key 键盘扫描 int key key keys if key 11 baojing 1 miao1 miao shi1 shi fen1 fen if key 12 baojing 0 if key 15 while key 15 TR0 0 key3n if key3n 7 key3n 0 while key3n 0 key keys if key 15 key3n if key3n 7 key3n 0 if key 14 key3n 0 switch key3n case 6 write 1602com er 0 x05 写入光标位置 break case 5 write 1602com er 6 fen write 1602com 0 x0f break ase 4 write 1602com er 8 shi 河北工程大学毕业设计论文 26 write 1602com 0 x0f break case 3 write 1602com er 9 fen write 1602com 0 x0f break case 2 write 1602com er 11 shi write 1602com 0 x0f break case 1 write 1602com er 12 fen write 1602com 0 x0f 设置光标为闪烁 write 1602com 0 x0f break case 0 write 1602com 0 x0c 设置光标不闪烁 TR0 1 打开定时器 write 1302 0 x8E 0 x00 根据写状态寄存器命令字 写入不保护指令 write 1302 0 x80 miao 10 4 miao 10 write 1302 0 x82 fen 10 4 fen 10 根据写分寄存器命令字 写入分的初始值 write 1302 0 x84 shi 10 4 shi 10 根据写小时寄存器命令字 写入小时的初始 值 break if key20 P1 7 1 else P1 7 0 miao BCD Decimal read 1302 0 x81 fen BCD Decimal read 1302

温馨提示

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

评论

0/150

提交评论