自行车里程监测仪的嵌入式设计与实现.docx
《自行车里程监测仪的嵌入式设计与实现.docx》由会员分享,可在线阅读,更多相关《自行车里程监测仪的嵌入式设计与实现.docx(33页珍藏版)》请在冰豆网上搜索。
![自行车里程监测仪的嵌入式设计与实现.docx](https://file1.bdocx.com/fileroot1/2023-1/3/64b3d93d-8201-4614-a451-46393646371d/64b3d93d-8201-4614-a451-46393646371d1.gif)
自行车里程监测仪的嵌入式设计与实现
XX大学2016届毕业论文
题目:
自行车里程监测仪的嵌入式设计与实现
Embeddeddesignandimplementationofbicyclemileagemonitor
姓名:
XXX
学号:
10214521
学院:
不知道
专业:
不知道
导师:
不知道
时间:
2016.4.12
完成时间:
2016年4月6日
摘要
随着时代的发展,我们可以看到,我国的自行车数量越来越多,其原因就在于,自行车既可以用于娱乐,又可以短途代步,同时也是人们户外郊游的上佳选择。
因为自行车的方便,简单易学等特点,如今,基本上所有的人多可以骑自行车了。
而人们对于骑车时的一些数据,例如骑行的速度,骑行的距离等。
多还是靠人的长期知识进行粗略的估计,这对科学锻炼来说是不合适的。
所以本设计就旨在设计一款基于C51单片机的自行车里程监测仪,实现对自行车车速和里程的监测,从而可以让人们清楚的知道自己现在的骑车状态,对于锻炼的人来说,有了这个系统,锻炼可以更加的科学合理。
对于普通的游玩骑行的人来说,这个系统也可以帮助人们实时的了解自己的行进距离从而合理的安排出游的时间和目的地。
本设计主要实现了:
利用C51单片机对自行车的速度和里程进行实时的采集和显示,同时对骑行速度进行预警提示,设计中包含电路电源设计,程序设计,系统组合,软件仿真等分部设计。
进过前期的学习和设计最终利用STC89C51单片机作为核心控制器件,利用AH3503开关型霍尔传感器进行数据采集,利用LCD1602作为显示器件,LED和蜂鸣器作为提示元素,独立按键作为复位清除按键。
完成了本次设计。
经过前期的仿真和后期的实物检验可以得知本设计是完整可靠的系统。
进过实际的测试可以得知本设计不但具有研究意义,同时具有市场推广的潜力,如果能进行后续的功能改进和提升,用于市场推广是完全可行的。
关键词:
C51;单片机;AH3503;霍尔元件
Abstract
Withthedevelopmentofthetimes,wecansee,growingnumberofbicyclesinourcountry,andthereasonis,thebicyclecanbeusedforentertainment,andwalkingashortdistance,andisalsooneoftheoutdoorpicnicisanexcellentchoice.Becausethebicycleisconvenient,easytolearnandsoon,now,basicallyallthepeoplecanrideabicycle.Andsomeofthedata,forexample,whenpeoplerideabike,suchasthespeedofriding,ridingdistance,etc..Morethanaroughestimateofthelong-termknowledgeofpeople,whichisnotsuitableforscientificexercise.SothisdesignaimstodesignabasedonC51microcontrollerbicyclemileagemonitoring,monitoringofbicyclespeedandmileage,sothatpeoplecanclearlyknowherridenow,forpeoplewhoexercise.Withthissystem,theexercisecanbemorescientificandreasonable.Forordinarypeoplewhoplayriding,thissystemcanalsohelppeopletounderstandtheirowntraveldistanceinrealtimeandthusreasonablearrangementsfortraveltimeanddestination.
ThisdesignmainlyrealizestheC51microcontrolleronthebicyclespeedandmileageofreal-timeacquisitionanddisplay,atthesametime,theridingspeedwarn,designincludespowersupplycircuitdesign,programdesign,systemcomposition,softwaresimulationdesigndivision.
StudyanddesignofpreeventuallyuseSTC89C51microcontrollerasthecorecontroldevice,usingAH3503linearHallsensordatacollection,usingtheLCD1602displaythe,ledandbuzzerasthepromptelement,independentkeysasaresettoremovethekeys.Completedthedesign.Afterthephysicaltestandsimulationduringlateprophasecanthissystemdesigniscompleteandreliable.
TheactualtestcangetChihpendesignnotonlyhasthesignificanceoftheresearch,alsohasthepotentialformarketpromotion,ifwecanimproveandupgradethefollowingfunctionformarketpromotionisfeasible.
Keywords:
C51;singlechipmicrocomputer;AH3503;Holzerelement
第1章绪论
人们总是对和自己相关的物理数据有着极高的求知欲望,例如步行数步行速度等都希望可以实时的了解,因此产生了很多的计步软件,特别是现在大量出现的的手环。
但是对于人们使用了多年的自行车,目前还没有很多的产品可以做到实时的显示骑行者的速度和骑行的总里程,这对现在的社会发来来说是不相符合的。
因此本设计就着眼于此,开发了一套可以实时监测自行车里程和测速的系统。
本设计中采用了宏晶科技有限公司生产的STC89C51单片机作为系统的控制器件,利用AH3503开关型霍尔传感器作为车轮的圈数采集器件。
在单片机采集到车轮的圈数之后,根据车轮的直径计算出实时车速,同时对行驶的总里程进行累加记录。
在得出数据之后,通过通用性LCD1602液晶显示器进行数据的显示。
在显示之后还要对计数的数据进行一个判断,如果判断到速度过大了,也就是人的骑行速度过快的时候,就启动蜂鸣器和LED进行提示,避免骑行者在不经意间速度过快而导致危险情况的发生。
1.1设计的目的
对于自行车的实时车速和骑行的总里程进行实时的监测,这对于人们实时的了解自己相关事务的数据是有必要的作用的,很多人在自己骑行的时候,都是靠着以往的经验来进行判断,比如车速,有时候我们就不能很好的判断出目前自己的车速是多少,就可能在疲惫的情况下发生超速的情况。
一旦速度过快,作为非机动的一方,在骑行的时候就很危险。
同时了解我们的骑行距离也对我们规划出行时间和目的地是有重要的作用的。
我们可以通过实时的里程数来确认自己和目的地的距离以及和回去的目的地距离。
1.2国内外研究现状
目前国内外也有一些自行车码表出现,其大概分类有三种:
有线方式码表、无线方式码表、踏频检测方式码表。
有线码表通过安装的磁体传感器获取人的骑行数据,然后通过有线的方式传输到单片机进行显示;无线码表在获取数据的时候和有线码表采用的相同方式,只不过传输数据采用的是无线发送的方式进行;踏频码表在获取数据的时候则是通过人对自行车踏板的踩踏来实现数据的采集,因为目前很多车都是可变速的,所以单独采集踏频还不够,还需要得到洗轮比,这种设计方式显得复杂,而且效果不是很好。
目前国内外生成自行车码表的主要有:
国外品牌德国的西格玛,日本的猫眼码表。
柏奥BOAO码表。
国内品牌因为质量和国外有较大差距,所以产量和使用量都不大
1.3设计的任务和内容
在本次设计中采用了深圳宏晶科技有限公司生产的STC89C51单片机作为系统控制芯片,利用AH3503开关型霍尔传感器来获取车轮的圈数,在单机获得数据进行计算后,利用LCD1602进行实时的显示,同时在综合判断目前的车速后,与设定的预警车速进行比较,如果超过了预定的车速,那就使用蜂鸣器和LED进行提醒,直到恢复了正常的骑行速度。
设计中使用了STC89C51单片机,AH3503线性传感器,LCD1602液晶显示器,蜂鸣器,LED灯,电源稳压芯片,独立按键,以及电路必须的基本元器件。
设计主要包括了:
整个系统的完整设计,电路的设计,仿真电路的设计,程序软件的设计。
这几个部分是完成本次设计的几个必须步骤和内容。
第2章系统的总体设计方案
2.1主要任务以及思路
本设计主要任务为:
采用宏晶科技生产的STC89C51单片机作为系统的大脑,利用AH3503开关型霍尔传感器来获取车轮的圈数,在霍尔传感器输出脉冲数据之后将数据送到单片机的外部中断口进行数据的采集,在单机获得数据进行计算后,利用LCD1602进行实时的显示,同时在综合判断目前的车速后,与设定的预警车速进行比较,如果超过了预定的车速,那就使用蜂鸣器和LED进行提醒,直到恢复了正常的骑行速度。
本设计的主体思路如下:
首先从理论上分析,我们要计算出自行车的速度和行车里程,我们就需要知道车轮的周长,以及在我们的采集时间内,车轮转过的圈数。
我们可以令车轮的直径为D,通过圆周率公式:
L=π*D,就可以计算出车轮的周长。
我们再假设转过的圈数为N,那么行驶的速度V=S/T就有:
V=N*π*D/T;总的里程就为S+=V*T;经过分析后我们可以得知,我们只需要采集到N就可以知道所有的数据了,因为车的直径是已经知道的。
采集时间也是我们可以控制的。
所以只需要使用霍尔传感器获得脉冲,然后利用单片机的外部中断0的下降沿触发功能进行计数就可以达到目的。
得到数据之后,就只需要计算和显示了,然后进行预设值比较进行报警和提示就可以了。
经过上面的理论分析,我们可以把设计总结为这样几个部分:
1.使用3503霍尔传感器获得脉冲数据。
2.单片机利用中断得到脉冲数。
3.单片机对数据进行计算然后显示。
4.蜂鸣器和LED根据情况进行提示和闪烁提示。
进过这样几个部分,我们的主要设计目的就可以得到实现,至于对数据的清除复位,我们就只需要额外增加一个按键就可以实现了。
2.2系统的总体组成
在前面的理论分析中已经可以看出本设计的总体框图应该是怎么样的了。
其中应该包括核心的控制器件单片机,脉冲的转换器件霍尔传感器,数据的清除和复位功能所用到的独立按键,用于速度和里程显示的LCD1602液晶显示,作为提示和预警的蜂鸣器和LED是本设计的几大组成部分,但是我们还要考虑到系统的供电问题,所以供电设计也应该是系统整体框架设计的一个部分,经过前期的设计和思考,我认为本设计的系统框图应该如下面所示:
图2-1系统的总体组成框图
2.3系统的硬件组成
设计中使用了大量的电子器件,每个器件的选择和有机组合而形成本设计功能执行的物理元素,只有我们合理的安排和设计好每个元器件,我们才能获得系统有效和正确工作的前提。
进过大量的分析和设计,我认为不系统的硬件组成图应该如下所示:
图2-2系统的硬件组成框图
2.4系统的软件组成
通过和硬件相结合考虑,我们能知道本次设计中的软件应该有哪些部分:
获得脉冲的外部中断函数,软件启动的初始化函数,按键清除函数,数据计算函数,定时中断函数,数据显示函数,报警函数。
很明显,本系统的软件组成框图应该如下所示:
图2-3系统的软件组成框图
第3章控制器件选择
要完成本次设计的任务,我们有很多可以选择的器件。
例如单片机,DSP,FPGA,PLC等等。
但是我们在选择器件的时候要考虑到器件的成本,开发难度,可靠性,封装类型等等方面。
进过大量的资料查询和实际测试,本设计最后采用了单片机作为核心的控制器件。
单片机也可以称单片微控制器,它和片上系统不一样,单片机不但可以进行运算处理,还可以做逻辑控制,其包括了输入输出端,片上CPU有的还有专用的乘法器,独有的存储单元和DSP运算单元。
它的体积小、质量轻、价格便宜、为学习、应用和开发提供了便利条件。
同时,学习使用单片机是了解计算机原理与结构的最佳选择。
目前单片机的发展已经十分成熟,单片的处理位数从4位到8位,16和32位都有。
单片的运行速度也冲以前的几M到现在的高端单片机可以运行到上百M。
3.1单片机的组成和特点
目前主流单片机主要由以下几个部分组成:
运算器
运算器由运算部件——算术逻辑单元(Arithmetic&LogicalUnit,简称ALU)、算术累加器和结果寄存器等组成。
算术逻辑单元ALU的作用是将传入算术逻辑单元的数据根据需求进行数据的运算,这个运算可以是常见的加减乘除算术操作,也可以是单片机里面所有的移位和循环操作,也可以是数据的比较例如大小比较。
相等比较等。
这个运算器和我们常规理解的运算器不是一个概念。
运算器有两个功能:
(1)执行各种算术运算。
(2)执行各种逻辑运算,并进行逻辑测试,如零值测试或两个值的比较。
单片机当中运算器的全部操作都是由单片机的控制器CPU发出的控制信号来进行指挥的。
控制信号可以是运算控制,也可以是判决控制。
控制器
控制器包括了:
指令寄存器、程序计数器、指令译码器、操作控制器和时序发生器等部分,控制器是单片机当中发布命令的机构,负责整个单片机系统的所有操作控制,不管是运算还是决策,都是由控制进行的。
其主要功能有:
(1)从内存中取出一条指令,并指出下一条指令在内存中的位置。
(2)对指令进行译码和测试,并产生相应的操作控制信号,以便于执行规定的动作。
(3)指挥并控制CPU、内存和输入输出设备之间数据流动的方向。
单片机当中有三种总线:
控制总线,数据总线和地址总线。
这三个总线通过内部特有的线路和微处理器相互连接起来,其中,微处理器可以通过三个总线和外部接口相互连接起来,还可以实现微处理对各个算术器和存储器的信息交流。
主要寄存器
(1)累加器A
单片机当中的累加器是一个高频使用的寄存器,其主要是负责临时的数据存储,包括运算前的存储和运算完成之后的结果都可以保存在这个寄存器当中。
(2)数据寄存器DR
数据寄存器器,从名字上就可以知道,此寄存器主要是数据暂时存储的寄存器,但是数据寄存器不但有数据的缓存功能,还可以是指令的暂时存储,在翻译出来的指令在送往处理的时候,可以放在这个寄存器中进行暂时存储。
(3)指令寄存器IR和指令译码器ID
指令包括操作码和操作数。
单片机要执行程序给定的指令。
就必须要知道这条指令对应的操作码,所以单片机中有了指令译码器和指令操作寄存器。
其中指令翻译由指令译码器进行,在翻译完成之后就将数据交给指令寄存器进行存储,然后通过数据控制总线将操作指令送到相应的执行机构当中。
这个操作是一条一条进行的。
(4)程序计数器PC
单片机运行的程序需要使用一个单独的计数器进行存储,这样才可以保证单片机的运行有序的进行。
在单片机复位的时候就将这个存储器复位从0开始,逐步进行加一。
在每一个指令操作结束之后,这个计数器就自动加1,然后到指令存储器中去取对应的下一步操作就可以了,所以程序计数器保证了单片机的有序运行。
(5)地址寄存器AR
地址再单片机中是很重要的一个概念,不但是每个存储器有地址,每个数据有地址,甚至每个外部接口都是有对应的地址的,在我们使用汇编进行程序设计的时候,我们就需要查手册了解每个有效资源的地址,所以在我们进行操作的时候,地址寄存器是很有必要的。
通过这个寄存器就可以将需要的地址数据发送到对应的存储器中。
上面提到的数据储存和计数器还有地址寄存器都是为了给单片机当中很重要的一个器件CPU提供服务的,CPU作为中央控制器,需要各个外设对其进行服务,因为CPU是一个独立的运算器,本身是不具有和外部资源交互的能力的。
下图就是单片机的内部结构和单片机主要资源:
图3-1单片机的片上资源框图
3.2STC89C51单片机介绍
STC89C51是一种使用兼容8051核的ISP(InSystemProgramming)在系统可编程芯片,其可以工作的时钟频率在几MHz到几十MHz内,其内部的FLASH存储器是专用的程序存储器,大小根据不同的系列是有所不同的,器件完全兼容标准的MCS-51指令系统及C51引脚结构,芯片内集成了通用8位中央处理器和ISPFlash存储单元,具有在系统可编程(ISP)特性,在使用专用的单片机程序下载程序通过TTL电平方式就可以将程序下载到单片机中,8051单片机的时钟周期有12T和6T现在新型的还有1T的。
但是时钟周期并不影响单片机的算术和逻辑兼容性。
只是处理器的单周期时间不一样而已。
STC89C51单片机的实物如下图所示:
图3-2STC89C51的DIP40封装实物图
3.2.1STC89C51单片机特点
(1)增强型1T流水线/精简指令集结构8051CPU
(2)(5V单片机)/2.0V-3.8V(3V单片机
(3),相当于普通8051的0~420MHz.实际工作频率可达48MHz.
(4)用户应用程序空间12K/10K/8K/6K/4K/2K字节
(5)片上集成512字节RAM
(6)通用I/O口(27/23个),复位后为:
准双向口/弱上拉(普通8051传统I/O口)
单片机的通用IO口有成四种模式可以选择分别为:
弱上拉,强上拉,高阻,开漏这些标准输入输出口状态。
每个通用I/O口驱动能力在单独使用的时候都可达到20mA,但是对于51系列单片机来说整个芯片的最大输入输出电流不应该超过55mA
(7)ISP(在系统可编程)/IAP(在应用可编程),无需专用编程器
可通过串口(P3.0/P3.1)直接下载用户程序,数秒即可完成一片
(8)EEPROM 功能
(9)看门狗
(10)内部集成MAX810专用复位电路(外部晶体20M以下时,可省外部复位电路)
(11)时钟源:
普通的8051单片机的外部时钟源可以是使用外部晶振,也可以是外部的时钟芯片提供(也可以是信号发生器提供),在外部时钟信号通过单片的XTAL1引脚送入单片机之后,单片机内部的反向放大器可以对信号进行放大整定。
从而提供给单片的内部时钟需求使用。
(12)有2个16位定时器/计数器
(13)外部中断2路,下降沿中断或低电平触发中断,PowerDown模式可由外部中断低电平触发中断方式唤醒
(14)PWM(4路)/PCA(可编程计数器阵列),也可用来再实现4个定时器或4个外部中断(上升沿中断/下降沿中断均可支持)
(15)STC89Cc516AD具有ADC功能。
10位精度ADC,共8路
(16)通用异步串行口(UART)
(17)SPI同步通信口,主模式/从模式
(18)工作温度范围:
0-75℃/-40-+85℃
(19)封装:
PDIP-28,SOP-28,PDIP-20,SOP-20,PLCC-32,TSSOP-20(超小封装,定货)
3.3STC89C51单片机资源介绍
本设计中使用的是STC89C51的DIP40封装,也就是常见的双列直插式封装,具体的引脚资源图如下图所示:
图3-3STC89C51单片机引脚资源图
在上图中各个引脚的功能如下:
VCC:
单片机的供电正电压接口。
GND:
单片机的供电地接口。
P0口:
P0口为双向漏级开路的8位双向I/O数据口,其中每个引脚可以承受8TTL的门电流。
在P0口引脚写1时,对应的引脚就被被定义为高阻输入。
在常规的使用过程中P0口应该配合外部的上拉或者下拉电阻进行使用,这样才能提供正确的TTL电平的逻辑电压。
P1口:
除了P0不提供内部的上拉电阻之外,51系列单片机的其余几个数据口都是提供了内部上拉电阻的。
在设计的时候,就可以省去外部的上拉或者下来电阻了。
同意,P1也是双向8位数据口。
P1口缓冲器能接收输出4TTL门电流。
P2口:
和P1口一样。
P2口也是内部提供上拉电阻的双向8位I/O口,P2口可以接收和输出4个TTL门电流,P2和P1一样,在程序写入1的时候,对应的引脚都是进入可检测状态,既可以作为输出电压,同时也可以被外部的电压拉低,例如我们常用的按键功能就是这一个功能的体现。
同时在作为FLASH检测的时候,P2和P1稍有不同,一个是作为控制线,一个数作为数据的检测线。
P3口:
P3同样是一组内部提供上拉电阻的,双向8位数据输入输出口。
其各个引脚同样可以承受输入和输出4个TTL门电流。
其普通功能和P2一样,在希尔高电平1之后都是可以作为输出和检测的。
在实际使用中,基础功能都是一样的,同时P3不作为FLASH编程的控制或者数据引脚但是P3是编程的指示引脚,在进行FLASH编程的时候进行LED闪烁提示和校验。
同时P3口还提供了一些特殊的第二功能。
STC89C51单片机的P3口一些特殊功能,如下表所示:
表3.1P3口引脚的特殊功能
引脚
第二功能
信号名称
P3.0
RXD
串行数据接收
P3.1
TXD
串行数据接收
P3.2
外部中断0申请
P3.3
外部中断1申请
P3.4
T0
定时/计数器0的外部输入
P3.5
T1
定时/计数器1的外部输入
P3.6
外部RAM写选通
P3.7
外部RAM读选通
REST:
单片机的复位输入引脚。
当振荡器复位单片机的同时,需要保持REST引脚至少两个机器周期的高电平时间。
ALE:
地址锁存允许控制端。
当需要访问单片机外部存储器时,该引脚用于输出控制信号,从而控制外部的存储器。
达到选择和控制的目的。
同时,该引脚在未被禁止使用的情况下是在不断输出脉冲的,脉冲的频率根据外部振荡器的不同而不同。
本身不具有频率调节的功能。
这个频率是外部振荡器频率的六分之一频率。
是稳定跟随的。
PSEN:
外部程序访问信号端,通俗的解释就是在我们使用外部的存储器的时候们在外部存储器进行数据访问的时候,该引脚就会输出对应的有效信号。
在访问完毕之后就会停止信号的输出,值得注意的是,这个信号和常规的一对一信号不同。
该引脚的信号是一次产生双倍的有用信号,也就是说,如果一次有效访问,在访问期间会输出两个脉冲信号。
EA:
外部允许端口。
低电平使能。
上电为若下拉,所以我们在不需要访问外部的存储器的时候需要将这个引脚外接为高电平。
不然就会默认进入外部访