《[工学]简易自行车数字里程表设计》由会员分享,可在线阅读,更多相关《[工学]简易自行车数字里程表设计(31页珍藏版)》请在金锄头文库上搜索。
1、本本 科科 毕毕 业业 论论 文文 题 目: 简易自行车数字里程表设计 I 摘 要 本文对自行车里程表的结构、设计原理进行了介绍,并应用芯片 LM339 和 AT89S51 设计、制作了自行车里程表。文章介绍了所用芯片的存储结构、各管脚的功能,对各个 模块的工作原理进行了分析。并对自行车里程表进行了展望。 本文先对里程表设计当中所需设备作了详细介绍,对设计中存在的问题进行了说明; 而后对硬件和软件部分的设计和实现作了认真的分析;然后给出了系统的建模过程及相 应的系统模型,在此基础上进行了控制仿真,并对仿真效果进行了比较。 本里程表的设计具有结构简单,成本低廉,显示清晰,稳定可靠等优点。并且可进
2、 行扩充,加入时速表的功能,更加方便的了解你现在所处的情况。 【关键词关键词】光电对管;单片机 AT89S51 ; LM339;键盘; II Abstract In this paper, the structure and principle of traditional bicycle odometer are introduced, and applying LM339 and ATS89S51 has designed and made a bicycle odometer The article has introduced what be memory structure of u
3、sed chip , every function of pin ,and has carried out analysis on operating principle of each modules, and has been in progress to design of bicycle odometer to look into the distance. This article first right Odometer designs required equipment, details of the design issues of; Later on hardware an
4、d software design and implementation carefully analyzed; Then the system modeling process and the corresponding model, based on the control simulation, Simulation results also were compared. Odometer the design of the structure is simple, low cost, showing clear, stable and reliable results. And can
5、 be expanded to speed the function table and more convenient understand you are now stand. Keywords: photoelectric cell; AT89S51;LM339; keys; 摘 要 I ABSTRACT .II 1 绪论.1 1.1.课题的背景与意义.1 1.2 课题所要解决的主要问题.1 2 系统设计.2 2.1.系统功能分析.2 2.2.系统功能模块设计.2 2.2.1 硬件电路设计 .2 2.2.2 软件设计 .8 3 程序代码10 3.1.数据采集程序10 3.2 键盘扫描程序
6、 10 3.3.中断程序11 4 系统调试与结果分析13 4.1电路调试.13 4.1.1 硬件调试 13 4.1.2 软件调试 13 4.2结果分析.13 5 总结与展望15 致谢 .16 参考文献 .17 附录 1 程序原代码 .18 附录 2 系统电路图 .25 附录 3 系统实拍图 .27 1 1 绪论 1.1.课题的背景与意义 中国的轻型电动车产业在 2000 年进入产业化发展阶段,目前正处于产业生命周期快 速增长阶段的初期。尽管处于处处封杀的重压下,消费者对这一新兴交通工具的青睐, 推动轻型电动车产业近年来保持了 80%以上的增长速度。2005 年,在整体经济需求增长 放慢、工业增
7、速回落的背景下,轻型电动车行业却出现令人瞩目的“井喷”行情,成为耐用 消费品市场不多的“亮点”之一。2006 产销量达到 1500 万辆。据此估算,2010 年,中国轻 型电动车的产销量将可能达到 3000 万辆,出口量将可能达到 500600 万辆。实现工业产 值 700 亿元,包括上下游带动产值的产业总体规模将达到 1300 亿。 我国是自行车大国,随着人们生活水平的不断提高,自行车已经不仅仅是运输、代 步的工具,其辅助功能也变得越来越重要。因此,人们希望自行车的娱乐、休 闲、锻炼 的功能越来越多,能带来大家更多的健康与快乐。在这个背景下,自行车里程表作为自 行车的一大辅助工具迅速发展起来
8、.科学、美观、合理设计自行车里程表有一定的实用价 值.它能合理计算出速度及公里数,使运动者运动适量,达到健康运动与代步的最佳效果。 随着自行车里程表的发展,其功能也逐渐从单一的里程显示发展到速度、时间显示, 甚至有的还具有测量骑车人的心跳、显示骑车人热量消耗等功能,让人能清楚地知道当 前的速度、时间、里程等物理量。 1.2 课题所要解决的主要问题 (1).设计一个轻便、省电、全天候野外使用的自行车里程表; (2).可显示里程、速度、加速度,行驶时间等信息; (3).适用于各种车型(不同尺寸) ,车型信息可通过键盘设置 2 2 系统设计 2.1.系统功能分析 本系统可以实现自行车或电动车在行驶过
9、程中速度,里程数的显示功能。系统元件 简单,实用性强。通过光电对管进行信号的采集,每来一次信号,计数器加一,每五秒 钟计算一次平均速度。本系统的核心在于单片机,把采集到的数据送入单片机后进行处 理,再通过单片机把处理好的数据通过液晶显示出来,从而实现速度和里程的显示。 本系统是由数据采集,单片机控制系统,键盘显示,液晶显示 4 部分构成。其中数 据的采集是由光电对管来完成的,它的输出是矩形脉冲,其中关键的处理由单片机系统 来完成,单片机将对 P3.0 脚的信号进行计数,输出的信号由液晶进行显示,显示当前的 行驶里程情况。键盘的作用是输入自行车的车型等信息,以上所诉就是整个系统的总体 设计思想。
10、6 该设计能实时地将所测的累计里程数显示出来,主要是将传感器输入到单片机的脉 冲信号的频率(传感器将不同车速转变成不同频率的脉冲信号)实时地测量出来,通过 单片机计算出里程,并由液晶显示模块显示所测里程。本设计的里程数的算法是一种大 概的算法(假设在一定时间内自行车是匀速行进,平均速度与时间的乘积即为里程数)。 设计时,应综合考虑测速精度和系统反应时间。本设计用测量脉冲频率来计算速度, 因而具有较高的测速精度。在计算里程时取了自行车的理想状态。实际中,误差控制在 几米之内,相对于整个里程来说不是很大。另外,还应尽量保证其他子模块在编程时的 通用性和高效性。 2.2.系统功能模块设计 2.2.1
11、 硬件电路设计 1.系统数据采集电路 信号采集单元采用一对光电管15,光电管信号采集是通过光强弱的变化从而得到电 信号的。如图 2-1 所示随着铝盘的转动,发射管光线也随之通过或不通过过孔。接收管感 应到光线的强弱发生变化以电信号的形式输出,这样就实现了信号的采集。为了避免外界 光线的干扰和保证定位探测的精度,首先要将光电管在一定距离内对准固定住,同时在光电 管上套上紫铜管9。 3 图 2-1 数据采集电路图 2.信号预处理单元硬件设计 信号预处理单元要对信号进行放大,本系统设计通过 LM339 比较器使得信号预处理电 路变得简单。LM339 在使用时要接上拉电阻,通过正负端输入电压的大小比较
12、(正端输 入电压负端输入电压,输出+5V 电压;正端输入电压1 | 0x80; if(ptr10)return a; return m_ptr; 这里的 FLAG 是标记键盘有没有按下的,ptr 是记录按下键盘的键值所对应的数值。 在程序的最后为什么添加个 m_ptr 呢?这是为了满足,width 能够在 0-100 内取值,因为 如果 width10 的话,就必须输两次。 在这里,程序中每次都要求用户输入两个数据,如果第一次输入是在 0-9 内的,第二次输 入也在 0-9 的,那么 width 就是一个两位数;如果第一次输入在 0-9 内的,第二次输入大 于 10 的,那么程序就认为 wid
13、th 是 0-10 的数,数值就等于第一次输入的值,在程序中也 就是 if(ptr10)return a;在下面的程序中就会对键盘扫描得到的值进行分析,判断是不是 a.这样就实现了键盘输入的 width 可以控制在 0-99 了。3 3.3.中断程序 void Timer() interrupt 1 TR0=0; TH0=0x0fe;/重新设定定时时间 TL0=0x0c; if(m_usetime=5000)/每五秒算一次速度 11 speed=(6.28*wheel_width*count)/5.0;/计算速度 m_usetime=0; count=0; distance_n+=5*spee
14、d; if(distance_n=100) distance=(distance+distance_n/1000.0); distance_n=0; else m_usetime+; TR0=1; 在中断里的任务主要是实时的计算自行车在行驶中的速度和里程数,在本程序中, 采用每五秒计算一次速度,因为自行车的速度比较慢,可能在 1 秒内光电对管收不到信 号,所以这里显示的速度就是每 5 秒自行车速度的平均值,精确到 0.1m;而里程数是精确 到 0.1km,程序中以 distance_n 来提示里程增值是否到达 100,如果到达一百那么里程数就 加 0.1;但是由于晶振可能有问题,所以这里的定时
15、器总是不是很准确。 源程序详见附录 1。 12 4 系统调试与结果分析 4.1电路调试 4.1.1 硬件调试 本电路的硬件部分比较简单,在调试过程中,主要是信号采集电路与 1602 液晶模块 的调试。 信号采集电路采用的光电对管在电路焊接中,两个对管一定要对得很准否则就可能 影响信号的采集,本人在调试光电对管的时候就发生这样的情况,由于两个对管都是直 接焊接在开发板上的,但是在对齐上面有偏差,就导致了信号不能采集。最后用了光电 对管的最小模块系统,成功的采集到信号。而 1602 液晶显示则必须注意调节它的背光, 否则不能正常显示。如果电路连接正常,上电后,看到液晶有正常的亮度,但是不能显 示实
16、验的数据时,首先应该考虑到液晶的背光没有调节好,之后才考虑到硬件或软件的 问题。 4.1.2 软件调试 本系统的核心部分是软件,因此在前期的工作中主要的工作就是调试软件,在 proteus 仿真中正常执行。下面讲下本人在软件调试中遇到的各个问题 首先是变量的定义问题,大家都知道,在 C 语言中我们习惯的使用 int 型的数据,但 是在单片机软件的设计中,如果变量很多,就应该避免使用 int 型的,尽量使用 unsigned char 型的,因为单片机的内部存储器有限,用 unsigned char 可以节省空间。本人开始由 于都使用 int 型,导致最后生成的 hex 文件过大。但是,当我们使用的数据的值大过 256 时,我们就不能使用 unsigned char 类型,否则就会导致数据溢出,这时我们就要使用 unsigned int 型或 short 型,本人在调试的时候,当速度小的时候都能够正常显示,当速度 很大的时候,1602 显示的数据就不对,经过对程序的检查才知道是数据类型的定义