自行车简易数字里程表设计.docx
- 文档编号:28815761
- 上传时间:2023-07-19
- 格式:DOCX
- 页数:48
- 大小:183.42KB
自行车简易数字里程表设计.docx
《自行车简易数字里程表设计.docx》由会员分享,可在线阅读,更多相关《自行车简易数字里程表设计.docx(48页珍藏版)》请在冰豆网上搜索。
自行车简易数字里程表设计
毕业设计论文
自行车简易数字里程表
班级
姓名
学号
指导教师
提交日期2013年月日
摘要
随着居民生活水平的不断提高,自行车已经不仅仅是普通的代步、运输工具,而是成为人们娱乐、休闲、锻炼的首选。
自行车简易数字里程表能够满足人们最基本的需求,让人们能清楚地知道当前的速度、里程等物理量。
本论文主要阐述一种基于霍尔元件的自行车速度里程表的设计。
以STC89C52单片机为核心,A44E霍尔传感器测转数,实现对自行车里程/速度的测量,采用1602LCD显示自行车的里程数及速度。
文章详细介绍了自行车的速度里程表的硬件电路。
硬件部分利用霍尔元件将自行车每转一圈的脉冲数传入单片机系统,然后单片机系统将信号经过处理送显示。
软件部分用C语言进行编程,采用模块化设计思想。
该系统硬件电路简单,子程序具有通用性,完全符合设计要求。
关键字:
里程/速度;霍尔元件;单片机;LCD显示
ABSTRACT
Withthedevelopingofpeople’slife,thebicycleisnotonlytheuniversaltooloftransportationandsubstituteforwalking,butbecomesthefirstchoiceofentertainmentandexercising.Thebicyclemileage/speedcanfulfillthebasicneedofpeople’slife,sothattheycanlearnthespeedandthemileageofthebicycle.Inthispaper,thebicyclemileage/speeddesignbasedontheHallelementiselaborated.BySTC89C52askernel,usingA44EHallelementtomeasurerevolution,themeasureandstatisticareachieved.(Savedby1602LCD,thebicyclespeedcanbedisplayedonLED.)Inthisarticle,thehardwarecircuitdesignofbicyclemileage/speedinstrumentareintroducedindetail.Aboutthehardware,thepulsenumberistransmittedofonecycleofthebicycleintoSingleChipMicrocomputersystem.ThenthesignalprocessedbySingleChipMicrocomputersystemissenttodisplayscream.Aboutthesoftware,inClanguage;theprogramisdesignedinthemodeofmodules.Thesystemhassimplehardware,commonsub-program,andmeetsthedemandofdesign.
KEYWORDS:
Mileage/speed;Hallelement;Singlechipmicrocomputer;LCD
引言5
第一部分设计任务6
1.1设计要求6
1.2方案设计6
第二部分系统硬件平台的设计6
2.1总体设计方案说明6
2.2单片机最小系统7
2.2.1STC89C52单片机7
2.2.2时钟电路7
2.2.3复位电路8
2.3显示模块8
2.4霍尔传感器的测量原理10
2.5DS1302时钟芯片10
第三部分系统软件的设计与实现11
3.1主程序流程图11
3.2显示流程图11
3.3速度处理流程图12
3.4电路仿真13
3.4.1仿真软件简介13
3.4.2仿真结果13
第四部分安装调试与性能测量14
第五部分设计总结14
参考文献14
引言
自行车被发明及使用到现在已有两百多年的历史,这两百年间人类在不断的尝试与研发过程中,将玩具式的木马车转换到今日各式新颖休闲运动自行车,自行车发展的目的也从最早的交通代步的工具转换成休闲娱乐运动的用途。
随着居民生活水平的不断提高,自行车不再仅仅是普通的运输、代步的工具,而是成为人们娱乐、休闲、锻炼的首选。
因此,人们希望自行车的功用更强大,能给人们带来更多的方便。
自行车简易数字里程表作为自行车的一大辅助工具也随着这个需求而面世,其功能也逐渐从单一的里程显示发展到速度、时间显示。
本设计采用了MCS-51系列单片机设计一种体积小、操作简单的便携式自行车的速度里程表,它能自动地显示当前自行车行驶的里程及速度。
本课题主要任务是利用霍尔元件、单片机等部件设计一个可用1602液晶显示里程和速度的自行车速度里程表。
本文主要介绍了自行车的速度里程表的设计思想、电路原理和元件的选择等内容,整体上分为硬件部分设计和软件部分设计。
本文首先扼要对该课题的任务进行方案论证,包括硬件方案和软件方案的设计;继而具体介绍了自行车的速度里程表的硬件设计,包括单片机的选择、传感器的选择、显示电路的设计;然后简要阐述了自行车的速度里程表的软件设计思路;最后针对仿真过程遇到的问题进行了说明与分析,对本次设计进行了系统的总结。
具体的硬件电路包括STC89C52单片机的外围电路以及液晶显示电路等。
软件设计包括:
芯片的初始化程序、定时中断子程序、显示子程序等,软件采用C语言编写。
第一部分设计任务
1.1设计要求
(1)设计一个可以适用各种自行车的数字里程表,可显示里程、速度等信息。
(2)学习、了解自行车数字里程表的基本工作原理。
1.2方案设计
采用单片机实现:
用霍尔传感器将所测转速转变为数字脉冲信号,然后再将数字脉冲信号数据传输于核心单片机处理,单片机将根据设计程序计算在一定时间内数字脉冲的频率,再由计数值最终得到里程数并通过终端显示设备显示出来。
且附加报警功能,在速度超过某一个固定值后,蜂鸣器响,提示需要减速。
第二部分系统硬件平台的设计
2.1总体设计方案说明
本设计的任务是:
以通用MCS-51单片机为处理核心,用传感器将车轮的转数转换为电脉冲,进行处理后送入单片机。
里程及速度的测量,是经过MCS-51的定时/计数器测出总的脉冲数和每转一圈的时间,再经过单片机的计算得出,其结果通过LED显示器显示出来。
本系统总体思路如下:
假定轮圈的周长为L,在轮圈上安装a个永久磁铁,则测得的里程值最大误差为L/a。
经综合分析,本设计中取a=1。
当轮子每转一圈,通过开关型霍尔元件传感器采集到一个脉冲信号,并从引脚P3.2中断0端输入,传感器每获取一个脉冲信号即对系统提供一次计数中断。
每次中断代表车轮转动一圈,中断数n与轮圈的周长L的乘积为里程值。
计数器T1计算每转一圈所用的时间time,就可以计算出即时速度speed。
若自行车超过限定速度,系统发出报警信号,蜂鸣器响。
要求达到的各项指标及实现方法如下:
1.利用霍尔传感器产生里程数的脉冲信号。
2.对脉冲信号进行计数。
实现:
利用单片机自带的计数器T1对霍尔传感器脉冲信号进行计数。
3.对数据进行处理,要求用LED显示里程总数和即时速度。
实现:
利用软件编程,对数据进行处理得到需要的数值。
最终实现目标:
自行车的速度里程表具有里程、速度测试与显示功能,采用单片机作控制,显示电路可显示里程及速度。
图1系统框图
2.2单片机最小系统
2.2.1STC89C52单片机
图2STC89C52单片机
2.2.2时钟电路
STC89C52系列是1T的8051单片机,STC89C52系统时钟兼容传统8051。
系列单片机有两个时钟源:
内部R/C振荡时钟和外部晶体时钟。
在单片机内有一个高增益反相放大器,反相放大器的输入端为XTAL,输出端为XTAL2,由该放大器、晶振和两个33PF的电容构成的振荡电路做单片机的时钟电路。
图3时钟电路
2.2.3复位电路
复位电路原理是单片机RST引脚接收到2us以上电平信号,只要保证电容的充放电时间大于2us,即可复位,所以电路中的电容是可改变的,按键按下,电容处于一个短路电路中,电容释放所有的电能,电阻两端电压升高系统复位。
且
振荡器稳定后,如果RST引脚上有一个高电平并维持2个机器周期(24个振荡周
期)以上,则CPU就可以响应并将系统复位。
单片机系统的复位方式有:
手动按钮复位和上电复位。
图4复位电路
2.3显示模块
1602LCD分为带背光和不带背光两种,基控制器大部分为HD44780,带背
光的比不带背光的厚,是否带背光在应用中并无差别,1602LCD及两者尺寸差别如下图所示:
图6液晶显示模块图
1602引脚说明表格如下:
编号
符号
引脚说明
编号
符号
引脚说明
1
Vss
电源地
9
D2
数据口
2
VDD
电源正极
10
D3
数据口
3
VO
液晶显示对比度调节端
11
D4
数据口
4
RS
数据/命令选择端(H/L)
12
D5
数据口
5
R/W
读写选择端(H/L)
13
D6
数据口
6
E
使能信号
14
D7
数据口
7
D0
数据口
15
BLA
背光电源正极
8
D1
数据口
16
BLK
背光电源负极
液晶引脚与单片机连接:
第1脚:
VSS接地。
第2脚:
VDD接5V正电源。
第3脚:
VO接3K的电位器调整对比度。
第4脚:
RS为寄存器选择。
第5脚:
R/W为读写信号线。
第6脚:
E端为使能端,当E端由高电平跳变成低电平时,液晶模块执行命令。
第7~14脚:
D0~D7为8位双向数据线接单片机P0口。
第15脚:
背光源正极接电源。
第16脚:
背光源负极接地。
2.4霍尔传感器的测量原理
图7霍尔传感器
霍尔传感器是利用霍尔效应制成的一种磁敏传感器。
在置于磁场中的导体或半导体通入电流I,若电流垂直磁场B,则在与磁场和电流都垂直的方向上会出现一个电势差Uh,这种现象称为霍尔效应。
利用霍尔效应制成的元件称为霍尔元件。
因为它具有结构简单、频率响应宽、灵敏度高、测量线性范围大、抗干扰能力强以及体积小、使用寿命长等一系列特点,因此被广泛应用于测量、自动控制及信息处理等领域。
2.5DS1302时钟芯片
图8时钟芯片
本设计时间芯片采用的了DS1302,DS1302是由美国DALLAS公司推出的一种具有涓细电流充电能力的低功耗实时时钟电路,具有可对年、月、周、日、时、分、秒进行计时等的功能,工作电压为2.5V~5.5V。
主要的特点是采用串行数据传输,即使掉电亦不丢失,在DS1302内部有一个31×8的用于临时性存放数据的RAM寄存器。
DS1302与STC89C52的连接线有三条线:
RST引脚、SCLK串行时钟引脚、I/O串行数据引脚,Vcc2作为备用电源,芯片外接晶振X2,为芯片提供计时脉冲。
第三部分系统软件的设计与实现
3.1主程序流程图
图9主程序流程图
3.2显示流程图
该子程序用LCD动态扫描显示方式。
先将单片机的P2.2口连接使能端口E。
接着将单片机的P2.0口连接数据/命令选择端RS,P0口连接数据端D0~D7,然后将要显示的数字的值发送给P0口。
然后调用延时,接着将P2.2口置0,P2.0口置1,写指令,将P2.2口置1,P2.0口置1,写数据,直到要显示的数字全部显示在液晶上。
显示流程图如图10所示。
图10显示流程图
3.3速度处理流程图
图11速度处理流程图
3.4电路仿真
3.4.1仿真软件简介
Proteus是世界上著名的EDA工具,从原理图布图、代码调试到单片机与外围电路协同仿真,一键切换到PCB设计,真正实现了从概念到产品的完整设计。
是目前世界上唯一将电路仿真软件、PCB设计软件和虚拟模型仿真软件三合一的设计平台,其处理器模型支持8051、HC11、PIC10/12/16/18/24/30/DsPIC33、AVR、ARM、8086和MSP430等,2010年又增加了Cortex和DSP系列处理器,并持续增加其他系列处理器模型。
在编译方面,
它也支持IAR、Keil和MPLAB等多种编译器。
3.4.2仿真结果
仿真结果如图12所示。
图12仿真结果
第四部分安装调试与性能测量
电路实物图如图13所示。
图13电路实物图
第五部分设计总结
通过本次设计,使我对单片机知识和理解更一步加深了,掌握了简易数字里程表的设计,组装和调试方法。
并且使我更加熟练的应用仿真软件,让我学到了如何运用软件测试电路的可行性,并且对电路的调试改进都有一个很大的提高。
这个过程中我遇到了很多困难,比如如何运用仿真软件画图,如何组织一些比较专业的语言,以及上网查阅资料。
虽说费劲,但是乐趣也不少。
通过这次设计,我们了解到平时知识的积累真的很重要,在遇到困难时一定要向认真思考,查阅相关资料,不可盲目退缩,努力后就一定会有收获。
这次毕业设计收获颇丰,不仅是对自己个人能力的提高,也让我认识到了自己的局限,通过这次的毕业设计为以后的学习奠定了一个更好的基础。
参考文献
[1]李朝青.单片机原理及接口技术.北京航空航天大学出版社,1994
[2]张毅刚,刘杰.MCS-51单片机原理及应用.哈尔滨工业大学出版社,2004
[3]楼然苗,李光飞.51系列单片机设计实例.北京航空航天大学出版社,2006
[4]松井邦彦,梁瑞林.传感器应用技术141例.科学出版社,2006
[5]张洪润,张亚凡.传感器技术与应用教程.清华大学出版社,2005
[6]刘灿军.实用传感器.国防工业出版社,2004
[7]何希才.传感器及其应用.国防工业出版社,2001
[8]刁文兴.自行车电子里程表的初步设计.南京工业职业技术学院学报,2004,6:
25-28
[9]安宗权.电动电子车速里程表分频电路设计.自动化与仪器仪表,2001,5:
39-44
[10]阎焕忠,王长涛,马斌.单片机控制里程转速表的设计.沈阳建筑工程学院学报(自然科学版),2002,4:
145-148
[11]谢自美.电子线路设计.实验.测试[M].武汉:
华中科技大学出版社,2000:
212-230
[12]张福学.传感器使用电路150例.中国技术出版社.1992
程序
#include
#defineucharunsignedchar//无符号字符型宏定义变量范围0~255
#defineuintunsignedint//无符号整型宏定义变量范围0~65535
#include"eeprom52.h"
/******************
ds1302内部RAMRAM01100000R/W1读0写
RAM11100001R/W
.......
RAM301111110R/W
********************/
sbitclk=P1^3;//ds1302时钟线定义
sbitio=P1^4;//数据线
sbitrst=P1^5;//复位线
//秒分时日月年星期
ucharcodewrite_add[]={0x80,0x82,0x84,0x86,0x88,0x8c,0x8a};//写地址
ucharcoderead_add[]={0x81,0x83,0x85,0x87,0x89,0x8d,0x8b};//读地址
ucharcodeinit_ds[]={0x55,0x17,0x15,0x01,0x01,0x13,0x13};
ucharmiao,fen,shi,ri,yue,week,nian;
uchari;
uchart1_num,t2_num;//计时间中断的次数
unsignedlongspeed1,juli,time2;
floatf_hz,speed_km,speed_m;
//dlaouttime1,speed_km,speed_m;
ucharTH11,TL11;
ucharflag_en;//开始计算速度使能
ucharflag_stop_en;//要确定车子是否停下了
uintjuli_s;//每秒走的距离
uintjuli_z;//总路程
floatzhijing=0.55;//直径0.55M
bitflag_1s=1;//1s
ucharmenu_1;//菜单设置变量
ucharmenu_2;//菜单设置变量
longzong_lc;//总量程
ucharflag_200ms;
uintshudu;//定义速度的变量
uintbj_shudu=80;//报警速度
//这三个引脚参考资料
sbitrs=P1^0;//寄存器选择信号H:
数据寄存器L:
指令寄存器
sbitrw=P1^1;//寄存器选择信号H:
数据寄存器L:
指令寄存器
sbite=P1^2;//片选信号下降沿触发
ucharcodetable_num[]="0123456789abcdefg";
uchari;
sbitbeep=P3^7;//蜂鸣器IO口定义
/******************1ms延时函数*******************/
voiddelay_1ms(uintq)
{
uinti,j;
for(i=0;i for(j=0;j<120;j++); } /******************把数据保存到单片机内部eepom中******************/ voidwrite_eeprom() { SectorErase(0x2000); byte_write(0x2000,bj_shudu%256); byte_write(0x2001,bj_shudu/256); byte_write(0x2002,zong_lc%256); byte_write(0x2003,zong_lc/256%256); byte_write(0x2004,zong_lc/256/256%256); byte_write(0x2055,a_a); } /******************把数据从单片机内部eepom中读出来*****************/ voidread_eeprom() { uintvalue; bj_shudu=byte_read(0x2001); bj_shudu<<=8; bj_shudu|=byte_read(0x2000); zong_lc=byte_read(0x2004); zong_lc<<=16; value=byte_read(0x2003); zong_lc|=(value<<8); zong_lc|=byte_read(0x2002); a_a=byte_read(0x2055); } /**************开机初始化保存的数据*****************/ voidinit_eeprom()//开机初始化保存的数据* { read_eeprom();//先读 if(a_a! =1)//新的单片机初始单片机内问eeprom { bj_shudu=50; a_a=1; write_eeprom();//保存数据 } } /******************************************************************** *名称: delay_uint() *功能: 小延时。 *输入: 无 *输出: 无 ***********************************************************************/ voiddelay_uint(uintq) { while(q--); } /******************************************************************** *名称: write_com(ucharcom) *功能: 1602命令函数 *输入: 输入的命令值 *输出: 无 ***********************************************************************/ voidwrite_com(ucharcom) { i=0; e=0; rs=0; rw=0; P0=com; delay_uint(3); e=1; delay_uint(25); e=0; } /******************************************************************** *名称: write_data(uchardat) *功能: 1602写数据函数 *输入: 需要写入1602的数据 *输出: 无 ***********************************************************************/ voidwrite_data(uchardat) { i=0; e=0; rs=1; rw=0; P0=dat; delay_uint(3); e=1; delay_uint(25); e=0; } /******************************************************************** *名称: write_sfm2(ucharhang,ucharadd,uchardate) *功能: 显示2位十进制数,如果要让第一行,第五个字符开始显示"23",调用该函数如下 write_sfm1(1,5
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 自行车 简易 数字 里程表 设计