多功能自行车测速仪设计与制作.doc_第1页
多功能自行车测速仪设计与制作.doc_第2页
多功能自行车测速仪设计与制作.doc_第3页
多功能自行车测速仪设计与制作.doc_第4页
多功能自行车测速仪设计与制作.doc_第5页
已阅读5页,还剩26页未读 继续免费阅读

下载本文档

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

文档简介

1 发明杯发明杯 大学生创新大赛作品大学生创新大赛作品 题 目 多功能自行车测速仪的设计与制作 2009 年 5 月 18 日 2 目 录 中文摘要 1 引言 3 1 概述 4 1 1 自行车测速仪简介 4 1 2 自行车测速仪的功能简介 5 1 3 系统控制方案 5 2 自行车测速仪的硬件设计与实现 6 2 1 单片机的选用与介绍 6 2 2 传感器的选择 8 2 3 显示模块的选择及介绍 8 2 4 硬件原理说明及 PCB 布线原则 9 2 5 硬件装调 12 3 系统软件的设计 13 3 1 液晶显示屏的切换 13 3 2 主程序 14 3 3 子程序 15 3 4 软件调试 16 结论与谢辞 17 参考文献 18 附录 1PCB 图 19 附录 2材料清单 20 附录 3程序清单 21 3 多功能自行车测速仪设计与制作多功能自行车测速仪设计与制作 摘要摘要 本课题的任务是设计一种用于自行车的多功能电子式测速仪 该测速仪以 AT89S52为核心 通过开关型霍尔元件来检测自行车的运转情况 将不同车速转变成 的不同频率的脉冲信号输入到单片机进行计算 进而实现对自行车车速 里程的计算 及里程的累计 存储 最后用LCD液晶显示模块直观地将车速与里程显示给用户 并 且在速度高于一定的值时可自动向用户发出报警信号 从而达到智能测速的目的 关键词 关键词 AT89S52单片机 霍尔元件 液晶LCD 4 引言引言 随着人们生活水平的逐渐提高 人们对于生活质量的要求也日益增加 尤其是对 健身的要求 自行车在中国普遍作为代步工具 而在国外 自行车却是一项十分受欢 迎的健身运动 因为它无污染 价位低廉 老少皆宜 而且在运动过程中可以充分享 受到大自然 对于忙碌的现代人来说 无疑是一种较好的放松方法 在中国这种情况 也在慢慢发生变化 在以往人们骑自行车时都不能准确的知道自己到底骑了多少路 只能自己估算 如果要知道时间还要看手表 看手机 骑车的时候看东看西 一点安 全性都没有 虽然自行车的速度没有摩托车和汽车的速度来的快 但是同样也要注意 安全 当超过了自行车的最大速度时最好能提醒用户减小一下速度 注意安全 因此 对于骑自行车的人们来说需要一款能测速的装置 方便知道自己的运行情况及提高行 驶的安全性 单片机是集成在一块芯片上的微型计算机 由于他主要应用于工业控制 智能仪 器仪表 家用电器等领域 因此要求单片机具有体积小 功耗低 精简指令集 控制 功能强 扩展灵活 抗干扰性好 可靠性高 有较强的模拟接口 代码保密性好 使 用方便 外围电路更少等优点 这使得单片机在硬件结构 指令系统上与通用微型计 算机有一些不同之处 主要特点如下 单片机的应用场合固定 程序开发后很少改动 且数据量较少 将程序固化在 ROM中可靠性高 能够提高单片机的性能 具有位处理功能 满足工业控制需要 单片机的指令系统中专门有一类位操作指 令 可直接进行位传送 置位复位 位判断转移等 引脚功能复用 一般情况下 微型计算机的CPU外部都有单独的地址总线 数据 总线和控制总线 而单片机由于引脚数量有限 因此其多数引脚具有复用功能 工作寄存器设在片内RAM中 在通用微型计算机中 寄存器不占有RAM空间 只 有名称没有地址 而在单片机中 寄存器占用内部数据存储器中的存储单元 因此 单片机中的寄存器既有名称也有地址 类型多 系列全 速度快 目前 单片机种类繁多 用户可根据实际需要选择功 能好 性价比高的产品 并且 单片机把微型计算机的各个部分集成到一块芯片中 缩短了信号传送的距离 提高了系统的可靠性及运行速度 单片机有那么多的优点才会得到广泛的应用 利用单片机设计的自行车测速系统 就是特例之一 5 1 概述概述 1 1 自行车测速仪简介自行车测速仪简介 1 1 1 传统的机械式测速仪传统的机械式测速仪 传统的机械式测速仪是由轮子输出动力 经驱动蜗轮轴带动软轴头端同步转动 使与软轴另一端固定的永久磁铁跟着同步转动 从而产生旋转磁场该磁场作用于转动 盘 便使转动盘连同车速表指针发生同向的偏转 当电磁转矩与弹簧产生的阻力矩平 衡时 指针偏转停留在某一角度上 指针偏转角与车速成正比 因而可用其表示车速 机械式测速仪的缺陷是明显的 由于表盘指针偏转程度正比于软轴的转动时产生 的磁力 当转速较低的时候 磁力较小 随转速变化波动较大 因此 低速时测速表 指针摆动剧烈 测量及显示精度不高 1 1 2 简易电子式测速仪简易电子式测速仪 随着电子科技的进步 传统的机械式测速仪几乎已经消失 随之被电子式测速仪 所取代 这类仪表基本原理都是设法由电子元器件代替传动软轴取得车子运行旋转信 号 进而把信号处理好并由显示器显示出转速或速度信息 这类仪表具有精度高 重 复性好 分度均匀 响应速度快 可靠性高 功耗低 适用范围广等优点 并且其结 构简单 使用方便所以称之为简易电子式测速仪 本课题就是根据这个基本原理来设 计一种简易电子式测速仪 图 1 1 测速仪的外形框图 6 1 2 自行车测速仪的功能的简介自行车测速仪的功能的简介 对自行车进行实时速度的测量 显示出速度值 能针对不同的车型进行选择 从而采用不同的模块进行测量 显示当前日期时间 可以任意设定当前工作时间 显示行车里程 运动时间 记录范围为0 999 9Km 速度超过最大值时 会发出报警信号 提醒用户减速 1 3 系统控制方案系统控制方案 测量自行车的速度的原理有两种 原理 1 测量一定时间间隔 t1 里自行车车轮转过的圈数 qs 假设车轮周长为 tc 则速度 V tc qs t1 原理 2 测量自行车车轮转过一圈的时间 t2 则速度 V tc t2 本里程表是根据原理 2 计算速度的 里程 速度等都是由开关型霍尔元件测量 已知自行车轮胎的直径 tl 轮子每转 动一圈 安装在车轮辐条上的磁钢接近开关型霍尔传感器一次 传感器送一个下降沿 信号给单片机的外部中断 0 产生一次中断 圈数 qs 加 1 两个相邻的下降沿信号的 时间由单片机定时器 1 计时 设为 ssj 那么计算累计里程 S 和当前速度 V 的公式为 S tl 3 14 qs V tl 3 14 ssj 若速度大于 28 8km h 8m s 则 P2 4 输出低电平 报警蜂鸣器响 提示速度过大 处理速度数据时同时刷新最大速度及计算 S V 单片机定时器 0 定时时间为 50ms 每 20 次刷新系统时钟及计算累计行驶时间 LCD 显示 蜂鸣器 电池组 按键功能选择 开关型霍尔元件 89S52 单片机 图 1 2 系统框图 系统由开关型霍尔元件 设置选择模块 按键的选择 显示模块 报警模块 供电 7 模块和单片机小系统构成 由设置选择模块选择显示模式后 单片机实时采集 处理 后显示 2 自行车测速仪的硬件设计与实现自行车测速仪的硬件设计与实现 2 1 单片机的选用与介绍单片机的选用与介绍 目前已投放市场的主要单片机产品多达 70 多个系列 500 多个品种 这其中还不 包括那些系统或整机厂商定制的专用单片机 及针对专门业务 专门市场的单片机品 种 这里对我们设计所需的 8051 单片机进行介绍 最早由 Intel 公司推出的 8051 31 类单片机也是世界上用量最大的几种单片机之一 由于 Intel 公司在嵌入式应用方面将重点放在 186 386 奔腾等与 PC 类兼容的高档芯 片的开发上 8051 类单片机主要由 Philips 三星 华邦等公司接手生产 这些公司都 在保持与 8051 单片机兼容的基础上改善了 8051 许多特点 如时序特性 提高了速 度 降低了时钟频率 放宽了电源电压的动态范围 降低了产品的价格 2 1 1 单片机的主要性能及功能特性的描述单片机的主要性能及功能特性的描述 与 MCS 51 单片机产品兼容 8K 字节在系统可编程 Flash 存储器 1000 次擦写周 期 全静态操作 0Hz 33Hz 三级加密程序存储器 32 个可编程 I O 口线 三 个 16 位定时器 计数器 八个中断源 全双工 UART 串行通道 低功耗空闲和掉 电模式 掉电后中断可唤醒 看门狗定时器 双数据指针 掉电标识符 8051 单片机中 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 内容被保存 振荡器被冻结 单片机一 切工作停止 直到下一个中断或硬件复位为止 8 位微控制器 8K 字节在系统可编程 FlashAT89S52 8 图 2 1 芯片 AT89S52 的管脚分布图 2 1 2 单片机最小系统的简介单片机最小系统的简介 维持单片机运行的最简单的配置系统 构成单片机最小应用系统 由于晶振 开 关等器件无法集成到 51 芯片内部 由这些器件所构成的晶振电路和复位电路是单片机 工作所必要的两个基本电路 对于 8051 8751 片内有 RAM EPROM 的系统来讲 单 片机与晶振电路及开关 电阻 电容等构成的复位电路组成单片机最小系统 对于 8031 机型来说 片内不含有程序存储器 所以除以上基本的配置外 必须外扩片外的 程序存储器 再用到地址锁存器 才能构成最小应用系统 图 2 1 是 AT89S52 构成的 最小应用系统 图 2 2AT89S52 单片机最小系统 9 2 2 传感器的选择传感器的选择 2 2 1 红外对管红外对管 把红外对管分别安装在自行车车轮的两侧 当车轮转动时 辐条会阻挡红外对管 的光路 接收管输出低电平 单片机根据此信号可计算里程 速度等 红外对管的优 点是测量精度高 缺点是安装比较复杂和容易受外来光线 灰尘等的影响 2 2 2 干簧管干簧管 干簧管是一种磁敏的有触点无源电子开关元件 应用在里程表上的原理与开关型 霍尔元件类似 把干簧管安装在自行车贴近车轮的支架上 磁钢安装在辐条上 当磁 钢靠近干簧管的时候 干簧管闭合 单片机根据此信号可计算里程 速度等 干簧管 的优点是成本低廉和安装简易 缺点是比较脆弱和不够稳定 2 2 3 开关型霍尔元件开关型霍尔元件 霍尔元件是利用霍尔效应把磁输入信号转换成电信号的器件 把开关型霍尔元件 安装在自行车贴近车轮的支架上 磁钢安装在辐条上 当磁钢靠近霍尔元件的时候 传感器输出一个无抖动的低电平 单片机根据此信号可计算里程 速度等 霍尔元件 的优点是稳定和安装简易 图 2 3 霍尔元件示意图 本论文根据需要选用开关型霍尔元件 2 3 显示模块的选择及介绍显示模块的选择及介绍 2 3 1 动态扫描动态扫描 LED 数码管显示数码管显示 里程表的显示内容以数字为主 利用 LED 数码管可基本满足使用要求 且成本较 低 但是用动态扫描的方式驱动数码管 亮度太低 在阳光下几乎看不见显示内容 失去使用价值 2 3 2 串行静态串行静态 LED 数码管显示数码管显示 把单片机的串行口设置为方式 0 同步移位寄存器 输出显示信息 可实现 LED 数码管的静态显示 其亮度令人满意 但由于要使用 74HC164 74LS164 串并转换芯片 驱动 LED 数码管 因此会带来体积大 成本高 功耗高等的缺点 10 2 3 3 LCD 液晶显示模块液晶显示模块 在日常生活中 我们对液晶显示器并不陌生 液晶显示模块已作为很多电子产品 的通过器件 在计算器 万用表及很多家用电子产品中都可以看到 显示的主要是数 字 专用符号和图形 液晶显示模块具有体积小 功耗低 显示内容丰富等特点 现 在字符型液晶显示模块已经是单片机应用设计中最常用的信息显示器件了 本测速仪使用常见的 1602LCD 型号的字符型液晶显示模块 2 3 4 LCD1602 液晶显示模块的介绍液晶显示模块的介绍 液晶显示的原理是利用液晶的物理特性 通过电压对其显示区域进行控制 有电 就有显示 这样即可以显示出图形 其不存在像 CRT 那样内部具有超高压元器件 不 至于出现由于高压导致的 x 射线超标 而且机器结构电路简单 模块化以及芯片的高 集成化足以把电路工作时候产生的电磁辐射降到最低 这样的设计直接降低了电路的 功耗 发热量也非常小 字符型液晶显示模块是一种专门用于显示字母 数字 符号等点阵式 LCD 目前 常用 16 1 16 2 20 2 和 40 2 行等的模块 下面以长沙太阳人电子有限公司的 1602 字符型液晶显示器为例 介绍其用法 图 2 4 字符型液晶显示模块 图 2 5 接口信号说明 11 2 4 硬件原理说明及硬件原理说明及 PCB 布线原则布线原则 2 4 1 硬件原理图硬件原理图 图 2 6 硬件原理图 2 4 2 硬件原理说明硬件原理说明 原理图由最小系统 信号检测模块 液晶显示模块 按键选择模块 供电模块 报警模块 6 大块组成 以下就结合原理图介绍一下个个模块 该设计的信号检测模块是开关型霍尔元件 在电路原理图中为 J2 它是霍尔元件 的接插件 把开关型霍尔元件安装在自行车贴近车轮的支架上 磁钢安装在辐条上 当磁钢靠近霍尔元件的时候 传感器输出一个无抖动的低电平 给单片机口 P32 单 片机根据此信号可计算里程 速度等 显示模块是 1602LCD 液晶显示器 12 在电路原理图中为 J3 它是液晶显示器的 16 脚单排接插件 与液晶 Vo 引脚相连的可 变电阻是调节 LCD 的背景灯光亮度的 与 BLA 引脚相连的 R2 是控制 LCD 背景的 P0 口的管脚是复用的 排阻 RP1 是上拉电阻 起到提高输出高电平的值并起到限流作 用 按键选择模块中包括 SW1 SW2 SW3 SW4 SW5 SW1 用于时钟设置时更改 时 直径设置时更改十位 SW2 用于时钟设置时更改 分 的十位 直径设置时更 改个位 SW3 用于时钟设置时更改 分 的个位 SW4 用做确定键 确认更改设置 SW5 则是用于控制对液晶显示屏的切换 与单片机的 P33 相连作为一个中断 一按则 产生一个中断信号 LCD 屏幕就显示相应的画面 而 R3 R4 R5 R6 是与按键相连的 上拉电阻 其用途也是提高输出高电平的值与限流作用 供电模块我使用 4 节 2500mah AA 的电池组构成 把四节电池串联起来 然后再 引出两根 即正极与负极 在电路原理图中 J1 就是供电模块的接插件 把正负两根 线插上就构成了电源 设计的报警模块由电阻 R7 三极管和蜂鸣器组成 电阻 R7 起到一个限流作用 三极管本身有放大作用 在这里把通到蜂鸣器的信号放大对蜂鸣器起到一个驱动作用 当行驶速度大于设定的最大值时 蜂鸣器会发出报警信号给用户 提醒用户减速 注 意安全 该硬件系统以单片机最小系统为基础 在此基础上加上以上的这些模块 从而更 好的体现多功能自行车测速仪的功能 2 4 3 PCB 布线原则布线原则 将原理图在 Protel 99 SE 软件中画完 然后再把它转变成 PCB 图 画 PCB 图有以下的原则 2 4 3 1 连线精简原则连线精简原则 连线要精简 尽可能短 尽量少拐弯 力求线条简单明了 特别是在高频回路中 当然为了达到阻抗匹配而需要进行特殊延长的线就例外了 例如蛇行走线等 2 4 3 2 安全载流原则安全载流原则 铜线的宽度应以自己所能承载的电流为基础进行设计 铜线的载流能力取决于以 下因素 线宽 线厚 铜铂厚度 允许温升等 印制导线最大允许工作电流 导线 厚50um 允许温升10 2 4 3 3 设计的应用原则设计的应用原则 13 在高速PCB设计中 看似简单的过孔也往往会给电路的设计带来很大的负面效应 为了减小过孔的寄生效应带来的不利影响 在设计中可以尽量做到 第一 多方面来考虑 选择合理尺寸的过孔大小 例如对6 10层的内存模块PCB设 计来说 选用10 20mil 钻孔 焊盘 的过孔较好 对于一些高密度的小尺寸的板子 也可以尝试使用8 18mil的过孔 对于电源或地线的过孔则可以考虑使用较大尺寸 以 减小阻抗 第二 尽量不换层 即尽量不要使用不必要的过孔 第三 打过孔 过孔和管脚之间的引线越短越好 第四 放置一些接地的过孔 以便为信号提供最近的回路 甚至可以在PCB 板上 大量放置一些多余的接地过孔 2 5 硬件装调硬件装调 根据 PCB 图刻好板 接着再把对应的元器件装到板上 并焊接完成 电路板做好 后进行调试 调试时按模块来进行 可以采用编写独立的测试程序来进行 即保留该 模块的所有代码 删除其他无关的代码 逐个进行调试 这种方法特别适合初学者和 经验不足者 对于由有经验的人 则可以整个程序进行调试 遇到疑难问题无法判断 时 再临时编写测试程序进行调试 系统调试是一个非常漫长而复杂的工作 需要根 据实际情况来增加各种测试信号 以便进行问题的分析和判断 14 3 系统软件的设计系统软件的设计 3 1 液晶显示屏的切换液晶显示屏的切换 按 SW1 SW3 调整时钟后 按 SW4 确认 接着进入自行车轮胎半径设置画面 Set Bike Tire L 55cm 默认设置为 55cm 对应 22 英寸自行车轮胎半径 附 轮胎直径大小英寸与厘米对照表 英寸英寸16 18 20 22 24 26 28 28 5 厘米厘米40c m 45c m 50c m 55c m 61c m 66c m 71c m 72c m 按 SW1 SW2 调整轮胎直径后 按 SW4 确认 里程表开始工作 各项参数分成三屏选择显示 按动 SW5 Disp 按以下次序进行切换 S 000 0m Time 00 00 00 V 00 00km h Vm 000 00km h Time Now 00 00 S 当前行驶累计里程 单位自动调整 S1000m 格式 xxx xx km Time 当前行驶累计时间 V 当前速度 km h Vm 最大速度 km h Time Now 当前时间 图 3 1 屏幕切换 当 SW5 选屏按键没有按下时 液晶显示器屏幕显示如图第一层所示的当前行驶累 计的里程与当前行驶累计的时间 当按键按一下则屏幕就显示下一层所示的当前速度 与最大速度 若继续按一下则屏幕就显示第三层所示的当前时间 以此类推进入下一 个循环 15 3 2 主程序主程序 图 3 2 主程序流程图 在主程序的中断中 中断一共有三个 内部时间定时器 T0 中断 与霍尔元件相连 的外部中断 0 INT0 与 SW5 相连的外部中断 1 INT1 如下图所示就是自行车霍 尔元件的脉冲中断 INT0 16 图 3 3 自行车霍尔元件脉冲中断流程图 3 3 子程序子程序 3 1 1 按键处理时钟设置的子程序按键处理时钟设置的子程序 因为时钟的小时用 24 制 所以只用了一个按键 而分钟有 59 比较多 就用了两 个按键来按 在这里把 SW1 和 SW2 共用了 在时钟设置和直径设置中分别有不同的 作用 P2 4 SW1 时钟设置时更改 时 直径设置时更改十位 P2 3 SW2 时钟设置时更改 分 的十位 直径设置时更改个位 P2 2 SW3 时钟设置时更改 分 的个位 P2 1 SW4 确定键 确认更改设置 17 图 3 4 按键处理时钟设置的子程序 3 1 2 按键处理直径设置的子程序按键处理直径设置的子程序 扫描按键 检测按键 SW1 是否有按下 当按键 SW1 有按下 则小时加 1 没按下则返回扫描按键 检测按键 SW2 是否有按下 当按键 SW2 有按下 则分钟的十位加 1 没按下则返回扫描按键 检测按键 SW3 是否有按下 当按键 SW3 有按下 则分钟的个位加 1 没按下则返回扫描按键 检测按键 SW4 是否有按下 当按键 SW4 有按下 则确认更改设置 进行显示 并开始计时 没按下则返回扫描按键 18 图 3 5 按键处理直径设置的子程序 3 4 软件调试软件调试 程序编好后 在编程软件中编译一下是否有错误 检查无错误后 在 Proteus 软件 中进行仿真 Proteus 软件是一种画电路图的软件 能把程序与电路图结合起来进行调 试 把程序加载至单片机芯片中 之后就能形象的观察仿真结果 虽然现场的调试与 软件的仿真结果会不一样 但是一般都会在软件仿真后 再进行现场调试 等到软件 调试正确后 再利用编程器将调试好的程序固化到 AT89S52 单片机中 结论结论 扫描按键 检测按键 SW1 是否按下 若按下则直径的十位加 1 没按下则返回扫描按键 检测按键 SW2 是否按下 若按下则直径的个位加 1 没按下则返回扫描按键 检测按键 SW4 是否按下 若按下则确认更改设置 进行设置 并开始计时 没按下则返回扫描按键 19 在设计多功能自行车测速仪的过程中 我收集了很多关于多功能自行车测速仪的 参考资料 并综合所有的资料确定了课题的设计思路与方案 这是我第一次完成的产 品设计 该设计从最初的设计方案变成最后的实物 花了我不少的心血 在我的指导 老师的帮助下我解决了设计中遇到的各个难题 通过这次毕业设计锻炼了我独立思考 的能力 进一步加强了我的动手能力 使我无论在硬件还是软件方面设计能力都有所 提高 同时也让我明白在做产品设计的时候该注意考虑细节问题 对以后在工作中都 有很大的帮助 20 附录附录 1 PCB 图 21 附录附录 2 元器件材料清单 附录附录 3 22 程序代码 include define uchar unsigned char 引脚定义 P24 SW1 时钟设置时更改 时 直径设置时更改十位 P23 SW2 时钟设置时更改 分 的十位 直径设置时更改个位 P22 SW3 时钟设置时更改 分 的个位 P21 Enter 确认更改设置 P33 Disp 正常工作时更改显示模式 sbit P24 P2 4 sbit P23 P2 3 sbit P22 P2 2 sbit P21 P2 1 sbit P33 P3 3 sbit RS P3 7 sbit RW P3 6 sbit E P3 5 sbit busy P0 0 变量定义 i 延时变量 qsls 圈数临时变量 用于判断里程显示选用 m 还是 km 作为单位 qs 圈数 sj 累计行驶时间 单位为秒 totallc 累计里程 pjsd 平均速度 ssji 定时器 T1 20ms 中断次数 用于计算速度等 sji 本次速度对应的 20ms 中断次数 sjiold 上次速度对应的 20ms 中断次数 sd2 当前速度 mxsd 用于更新最大速度 mxsd2 最大速度对应的 20ms 次数 tc 轮胎周长 s 字符串显示子程序字符指针 line 字符串显示子程序列数 row 字符串显示子程序行数 com 写控制字 dat 显示码字 gw 累计里程 当前速度 累计时间 最大速度的个位 sw 累计里程 当前速度 累计时间 最大速度的十位 bw 累计里程 当前速度 累计时间 最大速度的百位 qw 累计里程 当前速度 累计时间 最大速度的千位 ww 累计里程 累计时间的万位 sww 累计里程 累计时间的十万位 ssj 定时器 T0 50ms 中断次数 每 20 次 sj 加 1 23 cgw 当前时间 时钟 的个位 csw 当前时间 时钟 的十位 cbw 当前时间 时钟 的百位 cqw 当前时间 时钟 的千位 cww 当前时间 时钟 的万位 csww 当前时间 时钟 的十万位 cww2 当前时间 时钟 的辅助万位 MODE 显示模式 tr1 轮胎设置变量 1 十位 tr2 轮胎设置变量 2 个位 unsigned int i qsls unsigned long qs sj totallc pjsd ssji sji sjiold aa sd2 mxsd mxsd2 tc uchar s line row com dat gw sw bw qw ww sww ssj cgw csw cbw cqw cww csww cww2 MODE tr 1 tr2 void wait 该函数的作用是对 LCD 进行检测 看 LCD 是否处于忙的状态 当 bflag 1 时表示忙 此时不可以向 LCD 进行读写操作 而当 busy 0 时 表示可以向它读写数据 void wait P1 0 xff RW 1 RS 0 do E 0 E 1 while busy 1 void dispone 该函数的作用是向 LCD 写入数据并显示出来 void dispone dat P1 dat RW 0 RS 1 E 0 E 1 wait void wrcom 该函数的作用是向 LCD 写入控制字 void wrcom com P1 com RW 0 RS 0 E 0 E 1 wait void init LCD 该函数的作用是初始化 LCD void init LCD wrcom 0 x01 wrcom 0 x06 24 wrcom 0 x38 wrcom 0 x0c void dispmore 该函数的作用是向 LCD 写入一串数据 并把数据串显示出来 void dispmore line row uchar dat i 格式为 dispmore 第几行 第几列 开始要显示的 字符地址 显示几个字符 uchar com s dat if line 1 com 0 x80 row 1 wrcom com while i 0 com s else com 0 xc0 row 1 wrcom com while i 0 com s void ttimep 累计行驶时间数据处理及显示子程序 void ttimep sww sj 36000 ww sj 36000 3600 qw sj 3600 600 bw sj 600 60 sw sj 60 10 gw sj 10 wrcom 0 xc1 dispone T dispone i dispone m dispone e dispone dispone dispone sww 0 x30 dispone ww 0 x30 dispone 25 dispone qw 0 x30 dispone bw 0 x30 dispone dispone sw 0 x30 dispone gw 0 x30 void timer1 T1 中断服务子程序 每 20ms 中断一次 ssji 加 1 根据公式 S tc qs 和 V tc ssj 计算 累计里程和 void timer1 interrupt 3 ssji TH1 0 xb1 TL1 0 xdf void lcp 累计里程数据处理和显示子程序 若999m 则单位为 km void lcp qsls 100000 tc if qs qsls sww qs tc 10000000 ww qs tc 10000000 1000000 qw qs tc 1000000 100000 bw qs tc 10000000 10000 sw qs tc 10000 1000 wrcom 0 x81 dispone S dispone dispone dispone dispone dispone sww 0 x30 dispone ww 0 x30 dispone qw 0 x30 dispone dispone bw 0 x30 dispone sw 0 x30 dispone dispone k dispone m else qw qs tc 100000 10000 bw qs tc 10000 1000 sw qs tc 1000 100 gw qs tc 100 10 wrcom 0 x81 dispone S 26 dispone dispone dispone dispone dispone dispone dispone qw 0 x30 dispone bw 0 x30 dispone sw 0 x30 dispone dispone gw 0 x30 dispone dispone m void sdp 当前速度数据处理及显示子程序 void sdp if sji 0 sd2 tc 1800 sji else sd2 0 qw sd2 100000 10000 bw sd2 10000 1000 sw sd2 1000 100 gw sd2 100 10 wrcom 0 x82 dispone V dispone dispone dispone dispone qw 0 x30 dispone bw 0 x30 dispone dispone sw 0 x30 dispone gw 0 x30 dispone dispone k dispone m dispone dispone h void mxsdp 最大速度数据处理及显示子程序 void mxsdp if mxsd 0 mxsd2 tc 1800 mxsd else mxsd2 0 27 qw mxsd2 100000 10000 bw mxsd2 10000 1000 sw mxsd2 1000 100 gw mxsd2 100 10 wrcom 0 xc2 dispone V dispone m dispone dispone dispone qw 0 x30 dispone bw 0 x30 dispone dispone sw 0 x30 dispone gw 0 x30 dispone dispone k dispone m dispone dispone h void clkp 当前时间 时钟 数据处理及显示子程序 void clkp wrcom 0 xc4 dispone csww 0 x30 dispone cww 0 x30 dispone dispone cqw 0 x30 dispone cbw 0 x30 dispone dispone csw 0 x30 dispone cgw 0 x30 void int0 外部中断 0 霍尔元件 中断服务程序 void int0 interrupt 0 EX0 0 qs 圈数 1 TR1 0 sjiold sji 停止 T1 计时 sji ssji if mxsd 0 更新最大速度 if sji mxsd mxsd sji else mxsd sji 28 TH1 0 xb1 重置 T1 定时常数 TL1 0 xdf ssji 0 TR1 1 T1 重新开始计时 switch MODE case 0 wrcom 0 x01 lcp ttimep break case 1 wrcom 0 x01 sdp mxsdp break case 2 wrcom 0 x01 pjsdp ap break case 3 wrcom 0 x01 dispmore 1 5 Time Now 8 clkp break default break for i 0 i3 MODE 0 switch MODE case 0 wrcom 0 x01 lcp ttimep break case 1 wrcom 0 x01 sdp mxsdp break case 2 wrcom 0 x01 pjsdp ap break case 3 wrcom 0 x01 dispmore 1 5 Time Now 8 clkp break default break for i 0 i19 sj ssj 0

温馨提示

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

评论

0/150

提交评论