基于单片机的自行车里程表设计论文附程序
基于单片机的自行车里程表设计
基于单片机的自行车里程表设计一、引言二、系统总体设计方案(一)功能需求分析自行车里程表需要实现以下主要功能:1、准确测量自行车行驶的里程。
2、实时显示里程数据。
3、具备低功耗特性,以保证长时间使用。
(二)系统组成本系统主要由传感器模块、单片机控制模块、显示模块和电源模块组成。
1、传感器模块用于采集车轮转动的信息。
2、单片机控制模块负责对采集到的数据进行处理和计算。
3、显示模块用于向用户展示里程等相关信息。
4、电源模块为整个系统提供稳定的工作电压。
三、硬件设计(一)传感器选择常见的用于测量自行车车轮转动的传感器有霍尔传感器和光电传感器。
霍尔传感器通过感应磁场变化来检测车轮转动,具有精度高、稳定性好的优点;光电传感器则通过检测光的遮挡来判断车轮转动,成本相对较低。
综合考虑,本设计选用霍尔传感器。
(二)单片机选型单片机作为系统的控制核心,需要具备一定的运算能力和接口资源。
考虑到成本和性能要求,选用 STC89C52 单片机。
(三)显示模块为了使里程表的显示清晰直观,选用液晶显示屏(LCD)。
LCD 具有低功耗、显示内容丰富等优点。
(四)电源模块由于自行车在行驶过程中震动较大,选用可充电的锂电池作为电源,并通过稳压芯片将电压稳定在系统所需的工作电压范围内。
四、软件设计(一)主程序流程系统上电后,首先进行初始化操作,包括单片机内部资源的初始化、传感器的初始化和显示模块的初始化。
然后进入主循环,不断采集传感器的数据,并进行计算和处理,将里程数据实时显示在显示屏上。
(二)里程计算算法根据传感器检测到的车轮转动信号,结合车轮的周长,通过累积计算得出行驶里程。
(三)显示程序设计合理的显示界面,将里程数据以清晰易读的方式呈现给用户。
五、系统调试与测试(一)硬件调试在焊接完成后,首先检查电路是否存在短路、断路等问题。
然后使用万用表等工具对各个模块的电源电压、信号电平进行测量,确保硬件工作正常。
(二)软件调试通过单片机的在线调试功能,逐步调试各个功能模块的程序,查看变量的值和程序的执行流程,排除软件中的错误。
基于单片机的自行车速度里程实时显示系统设计
基于单片机的自行车速度里程实时显示系统设计随着时代的发展,机动车的数量越来越多,由于机动车的动力是汽油,而汽油的燃烧会直接向空气中排放二氧化碳等有害气体,导致空气污染越来越严重,是我们吸入的空气中有毒。
为了减少有毒气体的排放,是我们的空气稍微清新点,在不是特别需要情况下,人们在尽量减少机动车辆的使用。
此时自行车成为人们旅游代步必不可少的工具工具。
一方面自行车的使用无有毒气体的排放,不会对空气造成污染,另一方面骑自行车还可以起到锻炼身体的作用。
因此对自行车速度里程实时显示系统的设计的研究显得尤为重要。
自行车速度里程实时显示系统设计完成后可以对当时你骑车速度与里程进行准确的反映。
自行车速度里程实时显示系统是以单片机为核心,采用霍尔传感器非接触式侧电机转速,其中传感器接受到的的信息在LCD1602液晶上进行显示。
LCD1602液晶上行显示速度,下行对里程进行显示。
其中的电机的速度是可调的,因为电机的电路中连接滑动变阻器,通过移动滑动变阻器的阻片改变电路中的电阻大小,可以改变电路中的电流,从而改变电机两端的电压。
电机的速度随着电压的改变,速度随之进行改变。
本设计的C语言程序在keil软件中进行编译的,keil软件对C语言提供了编译与调试的环境。
对我们编译C语言非常有帮助。
对keil软件很好地把握对我们编写C语言大有裨益。
其中设计的硬件部分是由单片机、电路板、LCD显示、霍尔传感器等组成。
对这些元件的焊接需要有良好的焊接功底,通过这次的焊接对我们焊接的技术有一个很好地锻炼。
是我们对于元件的焊接有了一定的了解。
对我们日后的学习以及工作都很有帮助。
关键词:电阻;单片机;传感器;LCD显示。
目录1绪论 (1)1.1研究背景及目的 (1)1.2研究方法 (1)2系统总体方案设计 (2)2.1系统分析 (2)2.1.1 电机转速的测量 (2)2.1.2 电机转速的处理 (3)2.1.3 电机转速的显示 (3)2.2设计思路和方案 (3)2.3系统的构成 (4)2.3.1 原理框图 (5)3硬件电路设计 (6)3.1电源电路 (6)3.2单片机最小系统 (6)3.2.1 复位电路 (7)3.2.2 晶振电路 (7)3.2.3 P0口的上位电阻 (8)3.2.4 31脚EA/Vpp接电源 (8)3.3LCD显示模块 (8)3.4系统硬件设计 (9)4系统软件设计 (11)4.1程序设计流程图 (11)4.2应用程序设计 (12)5联调与测试 (13)5.1 仿真 (13)5.2 硬件调试与焊接 (15)5.2.1 调试 (15)5.2.2 焊接注意事项 (18)结论 .......................................................................... (19)附录A (21)附录B (22)附录C (23)附录D (24)1 绪论1.1 研究背景及目的随着社会的进步,科技的发展,机动车的数量越来越多,但机动车排放的也逐渐污染着我们的生活的环境.这一点令我们十分不满意.此时由于自行车队空气无污染,在一定程度上骑自行车还可以锻炼身体。
基于单片机的多功能自行车里程速度仪设计
毕业设计报告(论文) 基于单片机的多功能自行车里程速度仪设计所属系电子工程系专业自动化学号01212117姓名陆奕喆指导教师辛海燕起讫日期2016.02 ---2016.05设计地点东南大学成贤学院实验大楼502东南大学成贤学院毕业设计报告(论文)诚信承诺本人承诺所呈交的毕业设计报告(论文)及取得的成果是在导师指导下完成,引用他人成果的部分均已列出参考文献。
如论文涉及任何知识产权纠纷,本人将承担一切责任。
学生签名:日期:基于单片机的多功能自行车里程速度仪设计摘要当今社会,能源资源越来越紧缺,全世界,包括中国都在倡导绿色出行,骑车出行越来越成为一种时尚,风格,甚至一种生活态度,随着自行车的不断普及与发展,与之相关的一些配套设备也将蓬勃发展,码表就是其中之一。
一个好的码表集美观、实用、功能多样于一身,码表应该在能够正常稳定的基础上尽可能多的显示骑行者所需信息,方便骑行者调整自身。
本次设计将UBLOX- GPS芯片接收到的信息与霍尔元件接收的脉冲通过单片机处理以后传输到一块LCD12864显示芯片中,从而将定位速度信息显示出来。
本文主要介绍所用芯片的特点,并将这些芯片按照一定方式组合起来,再通过软件的编程使每个芯片发挥应有的作用。
单片机有体积小,能耗低,稳定性好的特点,可以获得理想的效果,从而产生一个优秀的自行车码表。
关键词:UBLOX- GPS;单片机;霍尔元件Design of Multifunctional Bicycle Speedmeter Based on MCUAbstractIn today's society , more and more scarce energy resources leads the world , including China,Advocating green trave . Cycling is becoming more and more fashionable, style, and even a kind of life attitude. With the popularization and development of bicycle, some related equipment will also be developed,which contains Cycle Computers. A good Cycle Computer must Contain beautiful, practical, functional diversity. Cycle Computers should be based on the stability as much as possible, and they also should display the riders the necessary information they need, to make riders adjust themselves simply.This design makes the GPS UBLOX- chip receiving the information and Holzer components receiving the pulse and then transmitted through the MCU to a LCD12864 display chip,which will display the location and speed information.This paper mainly introduces the characteristics of the used chips,and the chips are combined in a certain way. Programming through the software to play the role of each chip.MCU has a small size, low energy consumption, good stability characteristics.We can obtain ideal results,so that a great bike computer is going to be created.Keywords:UBLOX- GPS;MCU;Hall element目录摘要 (I)Abstract (II)第一章绪论 (1)1.1研究背景 (1)1.2国外现状 (1)1.3国内现状 (1)1.4发展前景 (1)1.5 功能介绍 (2)1.6设计内容与预期结果 (2)第二章系统方案设计 (3)2.1系统总体设计 (3)2.2系统设计原则 (3)2.3单片机选择 (3)2.4显示模块的选择 (4)第三章系统硬件电路 (5)3.1 主控模块 (5)3.1.1 STC89C52 (5)3.1.2 STC89C52的主要特点 (5)3.2 时钟电路 (6)3.3 复位电路 (7)3.4 GPS模块 (7)3.5 霍尔测速模块 (8)3.6 LCD 12864显示模块 (9)3.7 接口转换电路 (10)第四章系统软件 (11)4.1主程序 (11)4.2 GPS数据解析程序 (12)4.3霍尔元件处理程序 (12)4.4 LCD 12864显示模块程序 (13)4.5 小结 (13)第五章心得与体会 (15)致谢 (16)参考文献(References) (17)附录:系统总体程序 (18)第一章绪论1.1研究背景随着人们生活水平提高,越来越多的人更加注重生活质量,与世界他国的接触越来越多,文化的交融,政策的变化致使一些曾经不被人们重视的东西也越来越被人重视。
基于单片机的自行车测速系统设计与实现论文
桂林电子科技大学毕业设计(论文)报告用纸第1 页摘要随着社会的进步发展和环保意识的增强,能够锻炼身体,且能环保出行的自行车成了大众的宠儿。
随自行车的快速发展,人们对自行车的功能要求也越来越高。
自行车测速仪通过测量并显示出行时的日期、时间、温度、速度和里程数,能够较好的满足人们对自行车的基本需求。
本设计通过分析自行车测速仪的原理,基于STC89C52单片机和C语言,设计和实现了一种自行车测速系统。
该系统主要包括单片机数据处理、电机测速、温度测量、时钟计时、显示数据、按键控制七大功能模块。
在系统实现中,硬件部分以STC89C52单片机为处理核心,用红外对管传感器将车轮的转数转换为电脉冲,进行处理后送入单片机,通过测量电机转的圈数,经过数据处理得到速度和路程数。
软件部分采用C语言进行编程,实现系统的控制与显示。
本系统的实现达到了预期的设计目标。
关键词:自行车测速;STC89C52单片机;红外对管传感器;C语言AbstractWith the development of social progress and environmental protection consciousness, can physical exercise, andgreen travl bicycle ,became the darling of the public. With the rapid development of bicycle, the bicycle features people are increasingly high requirements. Bicycle speedometer can display the travel date, time, temperature, speed and mileage by measuring,to better me people's basic needs for bicycle.This design through the analysis of principles of bicycle speedometer, based on STC89C52 singlechip and C language,design and implementation of a bicycle speed system.The system includes a SCM data processing, motor speed, temperature measurement, timing, data shows,key control that seven major function module.In the system realization, The hardware part with STC89C52 SCM as core processor. Using the infrared tube sensor will wheel speed is converted into electrical pulses, processed into the microcontroller.By measuring the motor cycles,after data processing, we can know the speed and distance. The software using C language programming ,to realize the system control and display. The realization of this system reaches the expected design goal.Key words:Bicycle Tachometer ;STC89C52 single chip microcomputer; Infrared tube sensor; C language目录引言 (2)1 设计要求 (2)1.1 毕业设计题目 (2)1.2 设计的主要功能 (2)2 工作原理和系统结构 (3)3 硬件设计 (4)3.1 系统总电路图 (4)3.2 单片机控制处理模块 (4)3.3红外对管测速模块 (8)3.4 DS1302时钟芯片模块 (10)3.5 DS1302温度采集模块 (12)3.6 LCD显示模块 (14)3.7 电机驱动模块 (15)3.8 按键功能、供电和串口下载模块 (15)4 软件设计 (18)4.1 Keil uVision 4软件介绍 (18)4.2 程序设计思想与开发环境 (18)4.3 主程序设计 (19)4.4 各个模块程序设计 (19)4.4.1 红外对管测速模块程序设计 (19)4.4.2 DS18B20温度测量模块程序设计 (21)4.4.3 DS1302时钟芯片模块程序设计 (24)4.4.4 LCD12864显示模块程序设计 (27)5 系统测试 (28)5.1 硬件调试 (28)5.2 软件调试 (29)5.3 对实际电路进行测试 (29)6 总结 (31)致谢 (32)参考文献: (33)附录 (34)引言自行车是传统产业,具有100多年的历史,由于环保以及交通的问题,自行车再度成为世界各国特别是发达国家居民喜爱的交通、健身工具。
基于单片机的自行车速度及里程表设计资料
毕业论文(设计)题目:基于单片机的自行车速度及里程表设计系部名称:信息工程系专业班级:电气102 学生姓名:曹康学号: 201007084218 指导教师:姜宏伟教师职称:副教授201 年月日摘要随着自行车行业和电子技术的发展,自行车里程速度计技术也在不断进步和提高,用户对自行车里程速度计的要求也越来越高,因此设计了自行车里程速度计。
本文主要研究了以单片机为基础的自行车里程速度器的设计。
采用STC89C52单片机为主要控制芯片,运用自行车车轮上的传感器进行计数,通过一定时间间隔对信号的采集,结合自行车本身车轮参数,经过单片机对采集信号进行分析计算,最终在液晶显示器LCD上显示车辆行驶的里程和速度,同时运用其他按键分别自行车单里程计数,瞬时速度、最大速度和平均速度显示以及超速报警。
该设计重点阐述了系统的工作原理、硬件构成、各部分的主要功能以及软件的结构和实现。
自行车里程速度计的设计本着安全、方便、节能、人性化的原则进行,可使现代生活显著提高。
关键词:自行车,STC89C52, LCD1602,霍尔传感器Bicycle mileage velocity meter based on MCUABSTRACTAlong with the development of the bicycle industry and electronic technology, bicycle speedometer technology is also in constant progress and improve, user demand for bicycle mileage is more and more is also high, so I chose bicycle mileage speedometerThis article mainly introduced take the monolithic integrated circuit as the foundation rental car fare register design. Uses the 89C52 monolithic integrated circuit for the primary control chip, using the pressed key signal imitation rental car wheel counting signal, simultaneously utilizes other pressed keys to control the rental car movement to carry passengers separately/the spatial vehicle condition, the kilometer idea regulation/waiting time and the traveling schedule expense amount to the demonstration. The system used three groups of nixietubes, the utilization dynamic display technology has demonstrated the distance in kilometer, the standby period and the expense separately. Meanwhile carries on the design using the software programming to the monolithic integrated circuit timer, produces the waiting timed pulse signal.this article elaborated with emphasis system's principle of work, the hardware constitution, various part of major functions as well as software's structure and realizes.The mileage log system with STC89C52 as control core, using sensors to detect signals, by a certain time interval signal collection, in combination with itself, bicycle wheel parameters through single chip microcomputer for the analysis of the collected signal, finally displayed on the LCD screen LCD vehicle mileage and speed, overspeed alarm。
基于单片机的多功能自行车里程表的设计_毕业设计论文 精品
基于单片机的多功能自行车里程表的设计摘要本文设计了一种基于霍尔元件的自行车的速度和里程测量系统。
以A T89C52单片机为核心,A44E霍尔传感器测转数,从而实现对自行车里程、速度的测量统计,采用AT24C02实现在系统掉电的时候保存里程信息,并可以将自行车的里程和速度的物理量用LED显示出来。
硬件部分是利用霍尔元件将自行车每转一圈的脉冲数传入单片机系统,然后单片机系统将信号经过处理送往显示装置;软件部分用汇编语言进行编程,采用模块化设计思想。
关键词:速度;里程;霍尔元件;A T89C52单片机AbstractI am based on the design of a Holzer element to the bicycle's speed and mileage measurement system in this thesis. The main content is take A T89C52 single chip as the core, A44E Holzer sensor in measuring speed, thus realizing the bicycle mileage and speed measurement statistics, the use of AT24C02 realize in save mileage information when the system power off, and can be displaying the bicycle mileage and speed of the physical quantity in the LED. The hardware part of the Holzer element will take the pulse number of every turn to bike transfer to SCM system, then SCM system will signal is processed to display device; use the assembly language programming in the software part,啊pplication the idea of modularization.Keywords: Speed; course; Holzerelement; A T89C52 SCM目录第一章前言 .................................................................................................................... 11.1课题背景.................................................................................................................. 11.2课题设计的任务和要求.......................................................................................... 11.3课题设计的内容...................................................................................................... 1第二章自行车里程表的总体设计方案 .. (2)2.1霍尔传感器 (2)2.2设计思路 (2)2.3硬件设计 (2)2.4软件设计 (3)第三章自行车里程表的电路设计 (5)3.1测量系统 (5)3.2数据处理系统 (6)3.3时钟电路的设计 (8)3.4显示电路设计 (8)第四章软件部分设计 (9)4.1系统总程序设计 (9)4.2数据处理程序设计 (9)第五章总结 (11)参考文献 (12)附表 (13)第一章前言1.1 课题背景自行车是一种普遍的交通工具。
基于单片机的自行车速度与里程表设计
基于单片机的自行车速度与里程表设计一、引言自行车作为一种常见的代步工具,随着人们对健康环保的追求,越来越受到青睐。
然而,骑行过程中常常会想知道自己的速度和里程,以便更好地掌握骑行状态和计划行程。
本文将介绍一种基于单片机的自行车速度与里程表设计,通过该设计可以实时获取自行车的速度和里程信息。
二、设计原理1. 速度计原理基于单片机的自行车速度计的设计原理是利用车轮旋转的次数和时间间隔来计算速度。
通过安装磁铁和霍尔传感器在车轮上,当车轮旋转时,霍尔传感器会感应到磁铁的磁场变化,并产生相应的信号。
单片机通过计算两次信号的时间间隔,然后根据车轮的周长计算出速度。
2. 里程计原理基于单片机的自行车里程计的设计原理是通过记录车轮旋转的次数,然后根据车轮的周长计算出里程。
同样地,通过安装磁铁和霍尔传感器在车轮上,当车轮旋转时,霍尔传感器会感应到磁铁的磁场变化,并产生相应的信号。
单片机每次检测到信号时,就将里程加一,并根据车轮的周长计算出实际里程。
三、硬件设计1. 单片机选择在设计中,我们可以选择一款适用的单片机作为控制核心。
常见的选择有51系列单片机、Arduino等。
根据实际需求和设计复杂度,选择合适的单片机进行编程和控制。
2. 传感器选择作为速度与里程计的关键部分,传感器的选择至关重要。
在车轮上安装磁铁和霍尔传感器,可以通过检测磁铁的旋转来计算车轮的速度和里程。
选择合适的霍尔传感器可以提高检测的准确性和稳定性。
3. 显示屏和按键为了方便用户查看速度和里程信息,可以选择合适的显示屏,如LCD液晶屏或LED数码管。
同时,可以添加按键用于用户设置和调整。
四、软件设计1. 信号检测与计算通过编程,设置单片机对霍尔传感器的信号进行检测,当检测到信号变化时,记录下时间戳,并计算时间间隔。
2. 速度计算根据时间间隔和车轮的周长,计算出实际速度。
可以选择不同的单位进行显示,如千米/小时或英里/小时。
3. 里程计算根据车轮旋转的次数,每次旋转时将里程加一,并根据车轮的周长计算出实际里程。
基于STC89C51单片机的自行车里程计数器设计
图 2:主程序流程图
基于单片机的自行车里程表计数器使 用 STC89C51 单 片 机,DS1302 时 钟 芯 片, AT24C02 串行存储器,独立按键,A3144E 霍 尔元件,LCD1602 液晶显示屏,报警器组成。 其系统结构如图 1 所示。
单片机负责处理霍尔传感器传来的电脉 冲,并且将处理好的数据传给显示器,在显示 器上显示结果。采集车轮转动圈数的信息是由 霍尔传感器来负责,并且把采集到的数据发送 给单片机。独立按键会负责单片机的复位操作, 设定时间,设定安全速度,里程数清零等。蜂 鸣器就是负责提示用户已超过设定的安全速度 的报警响铃。
更好的知道计算机新技术的发展。
【关键词】大数据 计算机 信息处理技术 存 储技术
新时代下,随着计算机技术和网络的飞 速发展,信息化已经成为现代化发展的必然需 求。社会各行各业都有大量的数据需要存储, 因此对于这些海量信息的处理是一件复杂而繁 琐的工作,传统的处理技术已经不能满足当前
人们的需求,因此,在当前“大数据”时代下, 计算机处理技术有了新的定义,并且赋予了其 新的功能,计算机处理技术需要不断提高才能 更好的为“大数据”服务,并且对于数据的采 集、存储及安全构建中所应用的技术提出了更 高的要求,而这些技术也是当前“大数据”时 代背景下信息处理技术的核心和关键。本文着 眼于“大数据”,对于计算机信息处理技术及 其发展做出了详细的阐述。
样也是当前数据不断发展的保障。
本文首先对“大数据”进行了阐述,
讲 述 了 在“ 大 数 据” 处 理 中 相 关
的 技 术, 如 信 息 存 储 技 术、 信 息
采 集 技 术 及 信 息 安 全 技 术 等。 并
对“ 大 数 据” 环 境 下, 计 算 机 的
基于单片机的自行车速度里程表的设计
摘要随着居民生活水平的不断提高,自行车不再仅仅是普通的运输、代步的工具,而是成为人们娱乐、休闲、锻炼的首选。
自行车的速度里程表能够满足人们最基本的需求,让人们能清楚地知道当前的速度、里程等物理量。
本论文主要阐述一种基于霍尔元件的自行车的速度里程表的设计。
以AT89C52 单片机为核心,A44E 霍尔传感器测转数,实现对自行车里程/速度的测量统计,采用24C02 实现在系统掉电的时候保存里程信息,并能将自行车的里程数及速度用LED实时显示。
文章详细介绍了自行车的速度里程表的硬件电路和软件设计。
硬件部分利用霍尔元件将自行车每转一圈的脉冲数传入单片机系统,然后单片机系统将信号经过处理送显示。
软件部分用汇编语言进行编程,采用模块化设计思想。
该系统硬件电路简单,子程序具有通用性,完全符合设计要求。
关键词:里程/速度;霍尔元件;单片机;LED显示IABSTRACTWith the developing of people’s life, the bicycle is not only the universal tool of transportation and substitute for walking, but becomes the first choice of entertainment and exercising. The bicycle mileage/speed can fulfill the basic need of people’s life, so that they can learn the speed and the mileage of the bicycle. In this paper, the bicycle mileage/speed design based on the Hall element is elaborated. By AT89C52 as kernel, using A44E Hall element to measure revolution, the measure and statistic are achieved. The range information is saved by 24C02 when the power is off, the bicycle speed can be displayed on LED. In this article, the hardware circuit and software design of bicycle mileage/speed instrument are introduced in detail. About the hardware, the pulse number is transmitted of one cycle of the bicycle into Single Chip Microcomputer system. Then the signal processed by Single Chip Microcomputer system is sent to display scream. About the software, in assemble language; the program is designed in the mode of modules. The system has simple hardware, common sub-program, and meets the demand of design.KEY WORDS: Mileage / speed; Hall element; Single chip microcomputer; LEDII目录1 绪言 (1)1.1 课题背景 (1)1.2 课题的主要任务及内容 (1)2 自行车的速度里程表总体方案设计 (2)2.1 任务分析与实现 (2)2.2 自行车的速度里程表硬件方案设计 (2)2.3 自行车的速度里程表软件方案设计 (4)3 自行车的速度里程表硬件电路设计 (5)3.1 概述 (5)3.2 传感器及其测量系统 (5)3.2.1 霍尔传感器的测量原理 (5)3.2.2 集成开关型霍尔传感器 (6)3.3 单片机的原理及应用 (7)3.3.1 单片机原理简介 (7)3.3.2 单片机的引脚功能介绍 (8)3.3.3 单片机中断系统介绍 (10)3.3.4 单片机定时/计数功能介绍 (11)3.4 其他器件的介绍 (12)3.4.1 存储器的介绍 (12)3.4.2 74LS74芯片的介绍 (13)3.4.3 74LS244芯片的介绍 (14)3.5 单片机外围电路的设计 (14)3.5.1 时钟电路的设计 (14)3.5.2 复位电路的设计 (15)3.5.3 显示电路的设计 (16)3.5.4 报警电路的设计 (17)4 自行车的速度里程表软件程序设计 (18)4.1 概述 (18)4.2 自行车的速度里程表总体程序设计 (18)4.3 中断子程序的设计 (20)III4.4 数据处理子程序的设计 (20)4.5 显示子程序的设计 (22)5 系统调试与分析 (24)5.1 系统仿真调试 (24)5.2 调试故障及原因分析 (24)6 结论与展望 (26)6.1结论 (26)6.2 展望 (26)致谢 (27)参考文献 (28)附录 (29)IV1 绪言1.1 课题背景自行车被发明及使用到现在已有两百多年的历史,这两百年间人类在不断的尝试与研发过程中,将玩具式的木马车转换到今日各式新颖休闲运动自行车,自行车发展的目的也从最早的交通代步的工具转换成休闲娱乐运动的用途。
毕业设计(论文)-基于单片机的自行车里程表的设计[管理资料]
摘要本文介绍的速度与里程表设计以STC89C52单片机系统和霍尔传感器为核心。
传感器将不同车速转变成的不同频率的脉冲信号输入到单片机进行控制与计算,再采用LCD液晶显示模块进行显示,使得电动自行车的速度与里程数据能直观的显示给使用者。
本系统由霍尔传感器、单片机ST8C9C52RC、LCD1602液晶显示模块、数据存储电路和键盘控制组成。
通过单片机的设置可对霍尔传感器输入的脉冲信号进行计数和处理,这样能精确地算出加到引脚的单位时间内检测到的脉冲数;设计里程和速度显示采用LCD模块,里程数通过EEPROM来存储。
本文先对里程表设计当中所需设备作了详细介绍,对设计中存在的问题进行了说明;而后对硬件和软件部分的设计和实现作了认真的分析;然后给出了系统的建模过程及相应的系统模型,在此基础上进行了控制仿真,并对仿真效果进行了比较。
本里程表的设计具有结构简单,成本低廉,显示清晰,稳定可靠等优点。
并且可进行扩充,加入时速表的功能,更加方便的了解你现在所处的情况。
关键词:STC89单片机 LCD1602液晶显示霍尔传感器 EEPROM存储器目录第1章绪论 (1)课题背景、发展及意义 (1)系统设计概述 (1)各章节的安排 (2)第2章自行车里程表的设计方法与基本原理 (3)霍尔传感器 (3)STC89C52单片机 (3)频率测量法 (4)LCD1602 (5)存储器EEPROM (5)键盘控制 (6)第3章硬件实现的设计方法与原理 (7)系统概述 (7)功能实现 (8)系统总框图 (8)各部分硬件图 (8)3.4.1 显示部分 (8)3.4.2 按键控制部分 (11)3.4.3 霍尔传感器 (7)3.4.4 复位电路 (7)3.4.5 电源电路 (7)3.4.6 EEPROM掉电存储器电路 (7)第4章自行车里程表软件实现方法 (9)软件编程实现 (13)4.1.1 系统软件框图 (13)4.1.2 数据处理 (14)4.1.3 键盘控制 (14)程序源代码与流程图 (16)4.2.1 程序流程图 (14)4.2.2 程序源代码 (14)PCB印刷电路板图 (40)第5章总结 (16)参考文献 (40)致谢 (41)1霍尔传感器霍尔传感器是一种能实现磁电转换的传感器,用它们可以检测磁场及其变化。
自行车里程表的设计(基于2051)论文
(此文档为word格式,下载后您可任意编辑修改!)课程单片机原理及应用课程设计题目自行车里程表的设计主要内容、基本要求、主要参考资料等1、主要内容:根据单片机课程所学内容,结合其他相关课程知识,设计一个自行车里程表,以加深对单片机知识的理解,锻炼实践动手能力,为以后的毕业设计和工作打下坚实基础。
2、基本要求:以AT89C2051型单片机为核心,实时测量并显示自行车行驶过程中两项运动参数:速度和里程。
所测量各值可单独显示,测量值误差小于1%。
超速行驶(设置两各可选择的限速参数:10ms,8ms)时,能自动发出声光报警。
3、主要参考资料:[1] 张毅坤,陈善久.单片微型计算机原理及应用.西安:西安电子科技大学出版社,2002.[2] 张友德,赵志英,徐时亮.单片微机原理应用与实验.上海:复旦大学出版社,2000.[3] 伟福Lab2000P系列单片机仿真实验系统说明书.专业负责人2010年3 月13日目录第一章概述 (2)第二章硬件设计 (3)2.1系统组成结构框图 (3)2.2具体硬件电路及工作原理 (3)2.3 AT89C2051单片机简介 (4)2.3.1芯片概述 (4)2.4其他外围硬件电路 (6)2.4.1电源电路 (6)2.4.2霍尔传感器 (6)2.4.3 4位串行静态显示电路 (7)第三章软件设计 (8)3.1主程序设计 (8)3.2 外中断0和 T1定时溢出中断服务子程序设计 (8)3.3 速度里程显示控制子程序设计 (8)3.4系统完整源程序 (9)总结 (10)参考文献 (11)附录 (12)附录1 整体电路图 (12)附录2 源程序 (13)第一章概述本设计介绍的速度与里程表设计以单片机和光电传感器为核心。
传感器将不同车速转变成的不同频率的脉冲信号输入到单片机进行控制与计算,再采用LED模块进行显示,使得电动自行车的速度与里程数据能直接的显示给使用者。
该设计能实时地将所测的速度与累计里程数显示出来,主要是将传感器输入到单片机的脉冲信号的频率(传感器将不同车速转变成不同频率的脉冲信号)实时地测量出来,考虑到信号的衰减、干扰等影响,在信号送入单片机前应对其进行放大整形,然后通过单片机计算出速度和里程,再将所得的数据存储到串口数据存储器,并由LED显示模块交替显示所测速度与里程。
基于单片机的自行车里程速度计的设计
5.2 调试故障及原因分析 .......................................................................................... 33
第 6 章 社会经济效益分析........................................................................... 35
前 言 ............................................................................................................... 1
第 1 章 绪论 ..................................................................................................... 3
4.2 自行车里程/速度计总体程序设计 .................................................................... 26 4.3 中断子程序的设计 .............................................................................................. 27 4.4 数据处理子程序的设计 ...................................................................................... 28 4.5 显示子程序的设计 .............................................................................................. 30
基于单片机自行车里程表的设计
-
1
引言
2
系统设计
3
关键技术点
4
实验结果与讨论
5
结论
1
引言
在当今社会,自行车作 为一种环保、健康的交 通工具,仍然在人们的 生活中占据着重要的地 位
引言
对于骑行者来说,了解 自己的骑行距离和速度 是非常重要的
基于51单片机的自行车 里程表设计,可以实现 对骑行距离和速度的精 确测量和显示,为骑行 者提供实用的骑行数据
按键处理:通过按键设置和 调整里程表的数据
3
关键技术点
关键技术点
码盘的安装与调整
码盘应安装在车轮的中心线上,以保证准确检测车轮的转动。同时,需要注 意调整码盘与单片机的接口,确保信号传输的稳定性
数据处理算法
根据脉冲信号的数量和时间间隔,可以采用不同的数据处理算 法来计算骑行的距离和速度。常用的算法包括中点法和快慢速 处理法。需要根据实际应用场景选择合适的算法
4
实验结果与讨论
实验结果与讨论
1
通过实际测试和实验,基于51单片机的自行车里程表能够实现对骑 行距离和速度的精确测量和显示
实验结果表明,该设计具有较高的稳定性和可靠性,能够满足实际 应用的需求
2
3
然而,在实验过程中也发现了一些问题,如码盘的安装位置和信号 传输的稳定性等,需要在后续的设计中进行改进和完善
LCD显示屏的驱动
LCD显示屏需要使用专用的驱动芯片进行控制。需要注意驱动 芯片与51单片机的接口连接和时序配合,以确保显示数据的正 确性和稳定性
按键的处理
按键需要检测其状态并处理相应的操作。可以采用中断方式或 查询方式进行检测,根据实际需要选择合适的方式
多功能自行车里程表论文
第1页,本讲稿共22页
论文框架
1 摘要 2 系统硬件设计原理 3 系统软件设计流程图
系统调试
4
5 总结
第2页,本讲稿共22页
摘要
本设计介绍的速度与里程表设计以 单片机最小系统和霍尔传感器为核心。 利用AT89C51单片机设计一种Proteus环 境下51单片机的多功能自行车里程表, 要求该表具有自行车行驶瞬时速度、平 均速度、超速报警、累计总里程等计量 功能,可通过开关切换显示不同的内容, 传感器将不同车速转变成的不同频率的 脉冲信号输入到单片机进行控制与计算, 再采用LED数码管模块进行示,使得自行 车的速度与里程数据能直观的显示给使 用者,提供给用户安全行驶的一些基本 信息。
试。最终,软件调试基本无误。这次设计调 试要衷心感谢我的指导老师王可宁老师的悉 心指导。
第21页,本讲稿共22页
第22页,本讲稿共22页
因而易学易用。Keil C51软件提供丰富的 库函数和功能强大的集成开发调试工具, C51工具包的整体结构可以完成编辑、编 译、连接、调试、仿真等整个开发流程 。
第17页,本讲稿共22页
双击单片机导入用Keil软件生成.HEX文件
第18页,本讲稿共22页
3.调试结果
第19页,本讲稿共22页
总结
第3页,本讲稿共22页
系统硬件设计原理
1.设计的基本要求
1
总里程—当前行驶里程km;
2 瞬时速度—当前平均速度km/h;
3 平均速度—本次行驶中的平均速度 km/h;
4 超速报页,本讲稿共22页
2 .系统方框图
开始
脉冲信号采集 89C51单片机
按键开关
LED数码管
自行车里程表设计论文附程序
自行车里程表设计论文附程序电子科技制作设计论文自行车里程表 Designed by Jason自行车里程表设计论文【摘要】以AT89S52型单片机为核心,实时测量并显示自行车行驶过程中的各项参数。
【关键词】单片机【作品要求】LCD 干簧管累计里程速度设计一个可以适用自行车的轻便、省电、全天候野外使用的自行车里程表。
(1)基计要求总里程〈999.99km;可以轮流显示或选择显示(用十进制数):里程――当前行驶里程;速度――当前平均速度 km/h;最大速度――本次行驶中的最大速度;时间――当前行驶累计时间,时、分、秒;电源不高于5V,体积小、结构可靠,便于安装及使用。
(2)发挥部分可以显示最大加速度;用可编程器件实现;用单片机实现【方案设计与讨论】1. 速度测量原理测量自行车的速度的原理有两种:1) 测量一定时间间隔t1里自行车车轮转过的圈数qs。
假设车轮周长为tc,则速度V=tc*qs/t12) 测量自行车车轮转过一圈的时间t2,则速度V=tc/t2 本里程表是根据原理2计算速度的。
2. 传感器的选择1) 红外对管。
把红外对管分别安装在自行车车轮的两侧,当车轮转动时,辐条会阻挡红外对管的光路,接收管输出低电平,单片机根据此信号可计算里程、速度等。
红外对管的优点是测量精度高,缺点是安装比较复杂和容易受外来光线、灰尘等的影响。
2) 开关型霍尔传感器。
霍尔传感器是利用霍尔效应把磁输入信号转换成电信号的器件。
把开关型霍尔传感器安装在自行车贴近车轮的支架上,磁钢安装在辐条上,当磁钢靠近霍尔传感器的时候,传感器输出一个无抖- 1 -电子科技制作设计论文自行车里程表 Designed by Jason动的低电平,单片机根据此信号可计算里程、速度等。
霍尔传感器的优点是稳定和安装简易,缺点是成本较高。
3) 干簧管。
干簧管是一种磁敏的有触点无源电子开关元件,应用在里程表上的原理与开关型霍尔传感器类似,把干簧管安装在自行车贴近车轮的支架上,磁钢安装在辐条上,当磁钢靠近霍尔传感器的时候,干簧管闭合,单片机根据此信号可计算里程、速度等。
基于单片机控制的电动自行车里程表的毕业设计(含原理图+PCB图+中英文翻译+程序)
电动自行车里程表的设计序言本文介绍里程表设计以单片机和霍尔传感器为核心。
霍尔传感器将到来的低电平脉冲信号输入到单片机进行控制与计算,再采用LED模块进行显示,使得电动自行车的里程数据能直观的显示给使用者。
自行车里程表是用于远距离连续测量自行车行驶距离的仪表。
它分为电源、霍尔传感器和显示器3部分。
目前,里程表普遍使用在汽车和摩扦车上,是一种机械测量装置,测试精度相对低,自行车上使用里程表的还很少见。
针对这种情况,研制新型的数字化里程表用于自行车上是非常必要的。
本文介绍的自行车里程表是由电源稳压系统供电,AT89C52单片机为中央处理器,结合高精度的控制电路,方便地实现了智能化、高精度、高可靠性、高效率的自行车里程表的设计,并且使用方便。
里程表广泛应用于各类机车,包括厂矿企业所使用的电机车和汽车、摩托车等。
传统的机械式里程表虽然稳定可靠,但功能单一,随着电子技术的迅猛发展,电子式里程表得以广泛应用。
一种以单片机为核心的里程表,它不仅可以显示车辆行驶的总里程,也可显示一段时间的阶段里程,并且具有较强的再开发能力。
这一切都是因为利用了单片机系统强大的数据存储和处理控制功能。
里程表以单片机AT89C52为核心,由系统输入、单片机部分和系统输出组成。
第 1 章绪论单片机自从推出以来,以其超小型化、结构紧凑、可靠性高、成本低等优点被人们广泛接受,从而应用于工业、电讯、数据处理、仪器仪表等多方面。
电动自行车里程表是电动自行车的重要配件,在电动自行车仪表中占重要位置,但几十年来其发展变化并不大,现在国外很多车中使用了数字里程表,但在国内还并不多见。
1.1课题背景里程表的原理很简单,因为汽车车轮的直径已知,车轮的圆周长便是恒定不变的。
由此可以计算出每走一里路车轮要转多少圈,这个数也是恒定不变的。
因此只要能够自动把车轮的转数积累下来,然后除以每一里路对应的转数就可以得到行驶的里程了。
这样简单的原理古人就已经发现,并且开始使用了。
基于单片机的自行车测速系统
大学毕业设计(论文)题目基于单片机的自行车测速系统设计学生指导教师所属系专业年级学号基于单片机的自行车测速系统设计摘要随着科技的迅速发展,单片机的应用也越来越广泛,并带动传统控制检测技术不断更新。
现在的里程表大多是电子式的,用数码管或液晶显示器即时显示,显示更加直观。
电子式里程表采用接触车速传感器代替软轴传动,可使里程表的安装位置不受距离限制,进一步有效地克服了机械式里程表中的诸多不足。
方案采用了一种以单片机STC89C52为主控机,使用光电传感器进行自行车里程、速度测量的装置。
传感器将不同车速产生的不同频率的脉冲信号输入到单片机进行控制与计算,再采用LCD液晶显示模块进行显示,使得自行车的速度与里程数据能直观的显示给使用者。
本设计主要包括自行车轮脉冲采集、键盘输入和数据显示等部分,主程序用C 语言编写,完成各项功能及数据的处理。
本里程表的设计具有结构简单,成本低廉,显示清晰,稳定可靠等优点。
并且可以进行扩充,更方便于使用者。
关键词光电传感器,单片机,液晶显示器,测速The Design of bicycle speed measuring systembased on single chip microputerABSTRACTWith the rapid development of technology, more and more widespread application of microputer, promote the traditional control detection technology constantly updated. Most of the current electronic odometer, and with the LED digital tube or LCD display real-time, display more intuitive. Electronic odometer flexible shaft using the contact speed sensor instead of driving, mileage tables can be installed without distance limitations, and further to effectively overe the mechanical disadvantages of mileage in the table.The plan adopts the system and configuration of bining the microcontroller STC89C52 as the main control puter ,using the photoelectric sensor bicycle odometer, speed measuring devices. when Different speed pulse signals of different frequencies produced by sensor are input into the microcontroller,after its calculation, liquid crystal will display the datas, making the bike's speed and distance data visually to the user.The design includes a bike wheel pulse acquisition, keyboard input and data display section, the main program using C language, This paper first needed to "milestones" design of equipment in detail, on the problems existing in the design, explained And then to hardware and software design and implementation of the part made earnest analysis, Then presented system modeling process and the corresponding system based on this model, the control simulation, and the simulation results are pared.KEY WORDS odometerphotoelectric senso r,MCU,LCD, Tachometer目录摘要IABSTRACT ......................................................................................................... I I 1 绪论11.1 问题由来11.2 课题现状11.3 设计任务22 方案论证与分析32.1 单片机模块论证与选择32.2显示模块论证与选择32.3电源模块论证与选择42.4光电测速模块论证与选择43 系统硬件设计43.1光电传感器模块53.2单片机系统部分73.2.1 STC89C52单片机介绍73.2.2 定时/计数器的结构及控制83.3 单片机外围电路介绍113.3.1 复位电路113.3.2 晶振电路123.4LCD显示模块133.4.1 1602字符型LCD简介133.4.2 LCD1602的基本参数及引脚功能133.5 按键模块164 系统软件设计174.1 概述174.2总体程序设计174.3 测量算法概述184.4 中断子程序的设计194.5 人机交互设计205 结束语21致22参考文献22附录1:系统原理图23附录2:源程序241绪论1.1 问题由来我国是人口大国,也是自行车大国,随着生活节奏的不断加快,自行车已经不仅仅是运输、代步的工具,现在则是代表着绿色、环保、节能。
基于单片机的自行车码表设计
基于单片机的自行车码表设计一、自行车码表的功能需求一个实用的自行车码表通常需要具备以下功能:1、速度测量:能够实时准确地测量自行车的行驶速度。
2、里程计算:累计骑行的总里程。
3、时间显示:包括骑行时间和当前时间。
4、平均速度计算:提供一段时间内的平均骑行速度。
5、最高速度记录:记录骑行过程中的最高速度。
为了实现这些功能,我们需要选择合适的传感器和单片机来构建系统。
二、硬件设计1、传感器选择速度传感器:常见的有霍尔传感器和光电传感器。
霍尔传感器通过检测磁场变化来测量车轮的转动,而光电传感器则通过检测光的遮挡来实现。
在本设计中,我们选用霍尔传感器,将其安装在车轮辐条上,对应的磁铁安装在车架上。
当车轮转动时,霍尔传感器会输出脉冲信号。
时钟芯片:用于提供准确的时间信息,如 DS1302 芯片。
2、单片机选型考虑到成本和性能要求,我们选择常用的 STC89C52 单片机。
它具有丰富的 I/O 口资源,能够满足本设计的需求。
3、显示模块采用液晶显示屏(LCD),如 1602 液晶模块。
它能够清晰地显示数字和字符,方便骑行者查看数据。
4、电源模块由于自行车在骑行过程中会有震动,所以选择可充电的锂电池作为电源,并通过稳压芯片将电压稳定在单片机和其他模块所需的工作电压范围内。
三、软件设计1、主程序流程系统初始化,包括单片机内部寄存器的设置、传感器和显示模块的初始化等。
循环读取传感器的数据,并进行计算和处理。
将处理后的数据发送到显示模块进行显示。
2、速度计算算法根据霍尔传感器输出的脉冲信号的频率,结合车轮的周长,计算出自行车的行驶速度。
里程通过对速度进行积分计算得到。
3、时间处理程序读取时钟芯片的数据,获取当前时间和骑行时间,并进行相应的显示和存储。
四、系统调试1、硬件调试检查电路连接是否正确,有无短路或断路现象。
测量电源电压是否稳定,各模块的工作电压是否正常。
2、软件调试使用单片机开发工具(如 Keil)进行程序的编译和下载。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
自行车里程表设计论文【摘要】以AT89S52型单片机为核心,实时测量并显示自行车行驶过程中的各项参数。
【关键词】单片机LCD干簧管累计里程速度【作品要求】设计一个可以适用自行车的轻便、省电、全天候野外使用的自行车里程表。
(1)基计要求总里程〈999.99km;可以轮流显示或选择显示(用十进制数):里程——当前行驶里程;速度——当前平均速度km/h;最大速度——本次行驶中的最大速度;时间——当前行驶累计时间,时、分、秒;电源不高于5V,体积小、结构可靠,便于安装及使用。
(2)发挥部分可以显示最大加速度;用可编程器件实现;用单片机实现【方案设计与讨论】1.速度测量原理测量自行车的速度的原理有两种:1)测量一定时间间隔t1里自行车车轮转过的圈数qs。
假设车轮周长为tc,则速度V=tc*qs/t12)测量自行车车轮转过一圈的时间t2,则速度V=tc/t2本里程表是根据原理2计算速度的。
2.传感器的选择1)红外对管。
把红外对管分别安装在自行车车轮的两侧,当车轮转动时,辐条会阻挡红外对管的光路,接收管输出低电平,单片机根据此信号可计算里程、速度等。
红外对管的优点是测量精度高,缺点是安装比较复杂和容易受外来光线、灰尘等的影响。
2)开关型霍尔传感器。
霍尔传感器是利用霍尔效应把磁输入信号转换成电信号的器件。
把开关型霍尔传感器安装在自行车贴近车轮的支架上,磁钢安装在辐条上,当磁钢靠近霍尔传感器的时候,传感器输出一个无抖动的低电平,单片机根据此信号可计算里程、速度等。
霍尔传感器的优点是稳定和安装简易,缺点是成本较高。
3)干簧管。
干簧管是一种磁敏的有触点无源电子开关元件,应用在里程表上的原理与开关型霍尔传感器类似,把干簧管安装在自行车贴近车轮的支架上,磁钢安装在辐条上,当磁钢靠近霍尔传感器的时候,干簧管闭合,单片机根据此信号可计算里程、速度等。
干簧管的优点是成本低廉和安装简易,缺点是比较脆弱和不够稳定。
本里程表选用干簧管作为传感器。
给干簧管套上废弃笔杆,可克服其脆弱的缺点;软件防抖可克服其不够稳定的缺点。
3.显示模块的选择1)动态扫描LED数码管显示。
里程表的显示内容以数字为主,利用LED数码管可基本满足使用要求,且成本较低。
但是用动态扫描的方式驱动数码管,亮度太低,在阳光下几乎看不见显示内容,失去使用价值。
2)串行静态LED数码管显示。
把单片机的串行口设置为方式0(同步移位寄存器),输出显示信息,可实现LED数码管的静态显示,其亮度令人满意。
但由于要使用74HC164/74LS164串并转换芯片驱动LED数码管,因此会带来体积大、成本高、功耗高等的缺点。
3)LCD液晶显示模块。
液晶显示模块具有体积小、功耗低、显示内容丰富等特点,现在字符型液晶显示模块已经是单片机应用设计中最常用的信息显示器件了。
本里程表使用1602 LCD作为显示模块。
【功能描述】以AT89S52型单片机为核心,实时测量并显示自行车行驶过程中的各项参数,包括当前行驶累计时间、当前行驶累计里程(m/km自动调整)、当前速度(km/h)、最大速度(km/h)、平均速度(km/h)、加速度(m/s2)、当前时间等,各参数分屏显示。
可更改自行车轮胎直径,适应不同的自行车,通用性好。
本里程表具有时钟功能,不安装在自行车上时也可作为时钟使用,实用性高。
【操作说明】里程表板面如上图所示,包括电源2pin排针、干簧管3pin排针、液晶显示器、液晶背光开关、电源开关、电源LED指示灯、功能按钮SW1-SW5、Reset 按钮。
接通电源或按Reset后,显示欢迎画面:DigitalBikeMeterWelcome….2秒后进入时钟设置画面:Set Time00:00:00按SW1-SW3调整时钟后,按SW4确认。
接着进入自行车轮胎半径设置画面:Set Bike Tire L=55cm默认设置为55cm,对应22英寸自行车轮胎半径。
按SW1、SW2调整轮胎直径后,按SW4确认,里程表开始工作。
各项参数分成四屏选择显示,按动SW5(Disp)按以下次序进行切换:【结构框图】系统由干簧管、设置选择模块、显示模块、蜂鸣器模块、供电模块和单片机小系统构成。
由设置选择模块选择显示模式后,单片机实时采集、处理后显示。
【具体硬件电路及工作原理】S::当前行驶累计里程(单位自动调整) S<1000m,格式xxx.x m, S>1000m,格式xxx.xx km ) Time :当前行驶累计时间V: 当前速度(km/h ) Vm: 最大速度(km/h )Va: 平均速度(km/h ) a: 加速度(m/s2)Time Now 当前时间里程、速度、加速度等都是由干簧管测量。
已知自行车轮胎的直径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输出低电平,蜂鸣器报警,提示速度过大。
处理速度数据时同时刷新最大速度及计算Vm、平均速度Va、加速度a。
单片机定时器0定时时间为50ms,每20次刷新系统时钟及计算累计行驶时间。
【相关元器件及其简介】(1)AT89S52单片机简介AT89S52是一种低功耗、高性能CMOS 8位微控制器,具有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内容被保存,振荡器被冻结,单片机一切工作停止,直到下一个中断或硬件复位为止。
(2)1602LCD液晶显示模块液晶显示模块具有体积小、功耗低、显示内容丰富等特点,现在字符型液晶显示模块已经是单片机应用设计中最常用的信息显示器件了。
本里程表使用常见的1602字符型LCD模块。
1602可以显示2行16个字符,有8位数据总线D0-D7,和RS、R/W、E三个控制端口,工作电压为5V,并且带有字符对比度调节和背光。
(3)干簧管干式舌簧管简称干簧管,是利用磁场信号来控制的一种线路开关元件。
干式舌簧管以其结构固有的特点,目前已被广泛应用到各种自动化和微型化的自动控制零件及通讯检测设备中,作为灵敏而快速的开闭及转换电路的执行工件。
在本里程表中,干簧管安装在自行车贴近辐条的支架上,磁钢安装在辐条上。
当磁钢远离干簧管时,干簧管断开,单片机外部中断0(P3.2)保持高电平。
当磁钢靠近干簧管时,干簧管闭合,送一个下降沿信号给单片机的外部中断0,产生一次中断。
【系统调试过程简述】自行车里程表的原理比较简单,我编好一个比较简单但是核心的程序(只计算里程和速度)在Keil C上仿真,经过短暂的调试就成功了,这证明我关于里程表的最核心的想法是正确的,这给了我后面的制作和调试很大的信心。
紧接着是在单片机上搭建硬件,重点是按键防抖动。
我的模式选择按钮是接到单片机的外部中断的,一开始我按照普通按钮的防抖动的方法测试,没有成功。
于是在中断服务程序的开始关闭中断,末尾再开中断,还是不行。
后来在中断服务程序的末尾加了这样一句:IE1=0;其作用就是清除中断标志。
因为即使单片机的外部中断是关闭的,但只要在中断服务程序执行期间按键抖动,中断标志又会置1,若没有清除中断标志,退出中断服务程序后又会执行一次服务程序,这样按一次按键就会执行两次中断服务程序。
我的里程表的最初版本是利用串行LED数码管显示作为显示模块的(简介请参阅附录二)。
但制成后发现体积太大,而且功耗比较高,不适合用于要求小巧、坚固、耐用的自行车里程表上。
后来改用1602LCD,里程表体积大幅度减小,经测试,背光开启时电流为45mA左右,背光关闭时为25mA左右,2500mah AA×4的电池组供电最多可达100小时,可以满足使用要求。
附录程序流程图及程序代码程序代码#include<reg52.h>#define uchar unsigned char/****************************************************************引脚定义:P20=SW1时钟设置时更改“时”,直径设置时更改十位P21=SW2 时钟设置时更改“分”的十位,直径设置时更改个位P22=SW3 时钟设置时更改“分”的个位P23=Enter确认更改设置P32=Disp 正常工作时更改显示模式********************************************************************* *******/sbit P20=P2^0;sbit P21=P2^1;sbit P22=P2^2;sbit P23=P2^3;sbit P32=P3^2;sbit RS=P3^7;sbit RW=P3^6;sbit E=P3^5;sbit busy=P1^7;/****************************************************************变量定义:i 延时变量qsls 圈数临时变量,用于判断里程显示选用m还是km作为单位qs 圈数sj 累计行驶时间,单位为秒totallc 累计里程pjsd 平均速度ssji 定时器T120ms中断次数,用于计算速度等sji 本次速度对应的20ms中断次数sjiold 上次速度对应的20ms中断次数aa 加速度sd2 当前速度mxsd 用于更新最大速度mxsd2 最大速度对应的20ms次数tc 轮胎周长*s 字符串显示子程序字符指针line 字符串显示子程序列数row 字符串显示子程序行数com 写控制字dat 显示码字gw 累计里程、当前速度、累计时间、最大速度、平均速度、加速度的个位sw 累计里程、当前速度、累计时间、最大速度、平均速度、加速度的十位bw 累计里程、当前速度、累计时间、最大速度、平均速度、加速度的百位qw 累计里程、当前速度、累计时间、最大速度、平均速度、加速度的千位ww 累计里程、累计时间的万位sww 累计里程、累计时间的十万位ssj 定时器T0 50ms中断次数,每20次sj加1cgw 当前时间(时钟)的个位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,M ODE,tr1,tr2;/***********************************voidwait()*****************************该函数的作用是对LCD进行检测,看LCD是否处于忙的状态.当bflag=1时表示忙,此时不可以向LCD进行读写操作.而当busy=0时,表示可以向它读写数据.********************************************************************* *******/void wait(){P1=0xff;RW=1; RS=0;do{E=0;E=1;}while(busy==1);}/**************************************voiddispone()*******************************该函数的作用是向LCD写入数据并显示出来.********************************************************************* **************/void dispone(dat){P1=dat;RW=0; RS=1;E=0; E=1;wait();}/**********************************voidwrcom()*******************************该函数的作用是向LCD写入控制字.********************************************************************* *********/void wrcom(com){P1=com;RW=0; RS=0;E=0; E=1;wait();}/***************************************voidinit_LCD()*******************************该函数的作用是初始化LCD.********************************************************************* ********************/void init_LCD(){wrcom(0x01);wrcom(0x06);wrcom(0x38);wrcom(0x0c);}/****************************************voiddispmore()********************************该函数的作用是向LCD写入一串数据,并把数据串显示出来.********************************************************************* *********************/void dispmore(line,row,uchar dat[],i) //格式为dispmore(第几行,第几列,开始要显示的字符地址,显示几个字符);{uchar com;s=dat;if(line==1){com=0x80+row-1;wrcom(com);while((i--)!=0&&com<=0x8f){dispone(*s);com++;s++;}}else{com=0xc0+row-1;wrcom(com);while((i--)!=0&&com<=0xcf){dispone(*s);com++;s++;}}}/****************************************voidttimep()********************************累计行驶时间数据处理及显示子程序********************************************************************* *********************/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(0xc1);dispone('T');dispone('i');dispone('m');dispone('e');dispone(' ');dispone(' ');dispone(sww+0x30);dispone(ww+0x30);dispone(':');dispone(bw+0x30);dispone(':');dispone(sw+0x30);dispone(gw+0x30);}/****************************************voidtimer1()********************************T1中断服务子程序,每20ms中断一次,ssji加1,根据公式S=tc*qs和V=tc/ssj 计算累计里程和********************************************************************* *********************/void timer1() interrupt 3{ssji++;TH1=0xb1;TL1=0xdf;}/****************************************voidlcp()********************************累计里程数据处理和显示子程序,若<999m则单位为m,若>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(0x81);dispone('S');dispone(' ');dispone(' ');dispone(' ');dispone(' ');dispone(sww+0x30);dispone(ww+0x30);dispone(qw+0x30);dispone('.');dispone(sw+0x30);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(0x81);dispone('S');dispone(' ');dispone(' ');dispone(' ');dispone(' ');dispone(' ');dispone(' ');dispone(qw+0x30);dispone(bw+0x30);dispone(sw+0x30);dispone('.');dispone(gw+0x30);dispone(' ');dispone('m');}}/****************************************voidpjsdp()********************************平均速度数据处理及显示子程序********************************************************************* *********************/void pjsdp(){pjsd=qs*tc*36/sj;qw=pjsd%100000/10000;bw=pjsd%10000/1000;sw=pjsd%1000/100;gw=pjsd%100/10;wrcom(0x82);dispone('V');dispone('a');dispone(' ');dispone(' ');dispone(qw+0x30);dispone(bw+0x30);dispone('.');dispone(sw+0x30);dispone(gw+0x30);dispone(' ');dispone('k');dispone('m');dispone('/');dispone('h');}/****************************************voidsdp()********************************当前速度数据处理及显示子程序********************************************************************* *********************/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(0x82);dispone('V');dispone(' ');dispone(' ');dispone(' ');dispone(qw+0x30);dispone(bw+0x30);dispone('.');dispone(sw+0x30);dispone(gw+0x30);dispone(' ');dispone('k');dispone('m');dispone('/');dispone('h');}/****************************************voidmxsdp()********************************最大速度数据处理及显示子程序********************************************************************* *********************/void mxsdp(){if(mxsd!=0)mxsd2=tc*1800/mxsd;else mxsd2=0;qw=mxsd2%100000/10000;bw=mxsd2%10000/1000;sw=mxsd2%1000/100;gw=mxsd2%100/10;wrcom(0xc2);dispone('V');dispone('m');dispone(' ');dispone(' ');dispone(qw+0x30);dispone(bw+0x30);dispone('.');dispone(sw+0x30);dispone(gw+0x30);dispone(' ');dispone('k');dispone('m');dispone('/');dispone('h');}/****************************************voidclkp()********************************当前时间(时钟)数据处理及显示子程序********************************************************************* *********************/void clkp(){wrcom(0xc4);dispone(csww+0x30);dispone(cww+0x30);dispone(':');dispone(cqw+0x30);dispone(cbw+0x30);dispone(':');dispone(csw+0x30);dispone(cgw+0x30);}/****************************************voidapfz()********************************加速度数据处理及显示子程序辅助程序********************************************************************* *********************/void apfz(){wrcom(0xc2);dispone('a');wrcom(0xc6);dispone(qw+0x30);dispone(bw+0x30);dispone('.');dispone(sw+0x30);dispone(gw+0x30);dispone(' ');dispone('m');dispone('/');dispone('s');dispone('2');}/****************************************voidap()********************************加速度数据处理及显示子程序********************************************************************* *********************/void ap(){if (sjiold==sji){gw=sw=bw=qw=0;apfz();}else if(sjiold<sji){aa=360*tc*(sji-sjiold)/sji/sjiold/(sji+sjiold);qw=aa/1000;bw=aa%1000/100;sw=aa%100/10;gw=aa%10;wrcom(0xc5);dispone('-');apfz();}else if(sjiold>sji){aa=360*tc*(sjiold-sji)/sji/sjiold/(sji+sjiold);qw=aa/1000;bw=aa%1000/100;sw=aa%100/10;gw=aa%10;wrcom(0xc5);dispone(' ');apfz();}}/****************************************voidint0()********************************外部中断0(干簧管)中断服务程序********************************************************************* ********************/void int0() interrupt 0{EX0=0;qs++; //圈数+1TR1=0;sjiold=sji; //停止T1计时sji=ssji;if (mxsd!=0) //更新最大速度{if (sji<mxsd) mxsd=sji;}else mxsd=sji;TH1=0xb1; //重置T1定时常数TL1=0xdf;ssji=0;TR1=1; //T1重新开始计时switch(MODE){case 0:wrcom(0x01);lcp();ttimep();break;case 1:wrcom(0x01);sdp();mxsdp();break;case 2:wrcom(0x01);pjsdp();ap();break;case 3:wrcom(0x01);dispmore(1,5,"Time Now",8);clkp();break;default:break;}for(i=0;i<32000;i++);IE0=0;EX0=1;}/****************************************voidint1()********************************显示模式选择按钮(Disp)中断服务子程序********************************************************************* *********************/void int1() interrupt 2{EX1=0;if(++MODE>3) MODE=0;switch(MODE){case 0:wrcom(0x01);lcp();ttimep();break;case 1:wrcom(0x01);sdp();mxsdp();break;case 2:wrcom(0x01);pjsdp();ap();break;case 3:wrcom(0x01);dispmore(1,5,"Time Now",8);clkp();break;default:break;}for(i=0;i<32000;i++);IE1=0;EX1=1;}/****************************************vvoidtimer0()********************************T0中断服务子程序,主要用于计算累计行驶时间,50ms一次中断,每20次sj++,更新累计行驶时间(单位秒)********************************************************************* **********************/void timer0() interrupt 1{TH0=0x3c;TL0=0xb0;if(++ssj>19){sj++;ssj=0;cgw++;if(cgw>9){cgw=0;csw++;if(csw>5){csw=0;++cbw;if(cbw>9){cbw=0;++cqw;if(cqw>5){cqw=0;cww2++;if(cww2>23)cww2=0;csww=cww2/10;cww=cww2%10;}}}}if (MODE==0) {lcp();ttimep();}if (MODE==3) clkp();}}/****************************************voidmain()********************************主程序,初始化LCD,显示欢迎信息,更改时钟、直径设置,开中断、计时器等********************************************************************* *********************/void main(){init_LCD();dispmore(1,1,"-Digital Meter-",16);for(i=0;i<25000;i++);dispmore(2,1," Welcome ",16);for(i=0;i<25000;i++);dispmore(2,1," Welcome. ",16);for(i=0;i<25000;i++);dispmore(2,1," Welcome.. ",16);for(i=0;i<25000;i++);dispmore(2,1," Welcome... ",16);for(i=0;i<25000;i++);dispmore(2,1," Welcome.... ",16);for(i=0;i<25000;i++);dispmore(2,1," Welcome..... ",16);for(i=0;i<30000;i++);wrcom(0x01);MODE=0;qs=0;P2=0xff;cgw=csw=cbw=cqw=cww=csww=cww2=0;wrcom(0x01);dispmore(1,5,"Set Time",8);clkp();while(1){if(P23==0){for(i=0;i<4000;i++);if(P23==0)break;}if(P20==0){for(i=0;i<4000;i++);if(P20==0){cww2++;if(cww2>23)cww2=0;csww=c ww2/10;cww=cww2%10;clkp();for(i=0;i<32000;i++);}}if(P21==0){for(i=0;i<4000;i++);if(P21==0){if(++cqw>5)cqw=0;clkp();for(i=0;i<320 00;i++);}}if(P22==0){for(i=0;i<4000;i++);if(P22==0){if(++cbw>9)cbw=0;clkp();for(i=0;i<320 00;i++);}}}for(i=0;i<30000;i++);tr1=5;tr2=5;wrcom(0x01);dispmore(1,1,"Set Bike Tire L=",16);wrcom(0xc9);dispone('c');wrcom(0xca);dispone('m');P2=0xff;wrcom(0xc6);dispone(tr1+0x30);wrcom(0xc7);dispone(tr2+0x30);while(1){if(P20==0){for(i=0;i<4000;i++);if(P20==0){if(++tr1>9)tr1=0;wrcom(0xc6);dispone(t r1+0x30);for(i=0;i<32000;i++);}}if(P21==0){for(i=0;i<4000;i++);if(P21==0){if(++tr2>9)tr2=0;wrcom(0xc7);dispone(t r2+0x30);for(i=0;i<32000;i++);}}if(P23==0){for(i=0;i<4000;i++);if(P23==0)break;}}tc=3.14*(10*tr1+tr2);TMOD=0x11; //T0和T1均是定时器方式TH0=0x3c; //置定时常数TL0=0xb0;TH1=0xb1;TL1=0xdf;IT0=1; //外部中断触发方式均是边缘触发IT1=1;IE=0x9f; //开中断IP=0x02;TR0=1; //T0和T1开始计时TR1=1;P32=1;IE0=0;wrcom(0x01);for (;;);}。