自行车简易数字里程表设计毕业设计论文.doc

上传人:仙人指路1688 文档编号:3927052 上传时间:2023-03-28 格式:DOC 页数:27 大小:253KB
返回 下载 相关 举报
自行车简易数字里程表设计毕业设计论文.doc_第1页
第1页 / 共27页
自行车简易数字里程表设计毕业设计论文.doc_第2页
第2页 / 共27页
自行车简易数字里程表设计毕业设计论文.doc_第3页
第3页 / 共27页
自行车简易数字里程表设计毕业设计论文.doc_第4页
第4页 / 共27页
自行车简易数字里程表设计毕业设计论文.doc_第5页
第5页 / 共27页
点击查看更多>>
资源描述

《自行车简易数字里程表设计毕业设计论文.doc》由会员分享,可在线阅读,更多相关《自行车简易数字里程表设计毕业设计论文.doc(27页珍藏版)》请在三一办公上搜索。

1、 毕业设计论文 自行车简易数字里程表 班 级 姓 名 学 号 指导教师 提交日期 2013 年 月 日 摘 要随着居民生活水平的不断提高,自行车已经不仅仅是普通的代步、运输工具,而是成为人们娱乐、休闲、锻炼的首选。自行车简易数字里程表能够满足人们最基本的需求,让人们能清楚地知道当前的速度、里程等物理量。本论文主要阐述一种基于霍尔元件的自行车速度里程表的设计。以 STC89C52单片机为核心,A44E 霍尔传感器测转数,实现对自行车里程/速度的测量,采用1602LCD显示自行车的里程数及速度。文章详细介绍了自行车的速度里程表的硬件电路。硬件部分利用霍尔元件将自行车每转一圈的脉冲数传入单片机系统,

2、然后单片机系统将信号经过处理送显示。软件部分用C语言进行编程,采用模块化设计思想。该系统硬件电路简单,子程序具有通用性,完全符合设计要求。关键字:里程/速度;霍尔元件;单片机;LCD显示ABSTRACTWith the developing of peoples 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

3、 mileage/speed can fulfill the basic need of peoples 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 STC89C52as kernel, using A44E Hall element to measure revolution, the measure and st

4、atistic are achieved. (Saved by 1602LCD , the bicycle speed can be displayed on LED. )In this article, the hardware circuit 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 Microcompu

5、ter system. Then the signal processed by Single Chip Microcomputer system is sent to display scream. About the software, in C 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

6、element; Single chip microcomputer; LCD 目录引 言5第一部分 设计任务61.1 设计要求61.2 方案设计6第二部分 系统硬件平台的设计62.1 总体设计方案说明62.2 单片机最小系统72.2.1 STC89C52单片机72.2.2 时钟电路72.2.3 复位电路82.3 显示模块82.4 霍尔传感器的测量原理102.5 DS1302时钟芯片10第三部分 系统软件的设计与实现113.1 主程序流程图113.2 显示流程图113.3 速度处理流程图123.4 电路仿真133.4.1 仿真软件简介133.4.2 仿真结果13第四部分 安装调试与性能测量14

7、第五部分 设计总结14参考文献14引 言自行车被发明及使用到现在已有两百多年的历史,这两百年间人类在不断的尝试与研发过程中,将玩具式的木马车转换到今日各式新颖休闲运动自行车,自行车发展的目的也从最早的交通代步的工具转换成休闲娱乐运动的用途。随着居民生活水平的不断提高,自行车不再仅仅是普通的运输、代步的工具,而是成为人们娱乐、休闲、锻炼的首选。因此,人们希望自行车的功用更强大,能给人们带来更多的方便。自行车简易数字里程表作为自行车的一大辅助工具也随着这个需求而面世,其功能也逐渐从单一的里程显示发展到速度、时间显示。本设计采用了MCS-51系列单片机设计一种体积小、操作简单的便携式自行车的速度里程

8、表,它能自动地显示当前自行车行驶的里程及速度。 本课题主要任务是利用霍尔元件、单片机等部件设计一个可用1602液晶显示里程和速度的自行车速度里程表。本文主要介绍了自行车的速度里程表的设计思想、电路原理和元件的选择等内容,整体上分为硬件部分设计和软件部分设计。本文首先扼要对该课题的任务进行方案论证,包括硬件方案和软件方案的设计;继而具体介绍了自行车的速度里程表的硬件设计,包括单片机的选择、传感器的选择、显示电路的设计;然后简要阐述了自行车的速度里程表的软件设计思路;最后针对仿真过程遇到的问题进行了说明与分析,对本次设计进行了系统的总结。 具体的硬件电路包括STC89C52单片机的外围电路以及液晶

9、显示电路等。软件设计包括:芯片的初始化程序、定时中断子程序、显示子程序等,软件采用C语言编写。 第一部分 设计任务 1.1 设计要求(1) 设计一个可以适用各种自行车的数字里程表,可显示里程、速度等信息。(2) 学习、了解自行车数字里程表的基本工作原理。1.2 方案设计 采用单片机实现:用霍尔传感器将所测转速转变为数字脉冲信号,然后再将数字脉冲信号数据传输于核心单片机处理,单片机将根据设计程序计算在一定时间内数字脉冲的频率,再由计数值最终得到里程数并通过终端显示设备显示出来。且附加报警功能,在速度超过某一个固定值后,蜂鸣器响,提示需要减速。第二部分 系统硬件平台的设计2.1 总体设计方案说明

10、本设计的任务是:以通用MCS-51单片机为处理核心,用传感器将车轮的转数转换为电脉冲,进行处理后送入单片机。里程及速度的测量,是经过MCS-51的定时/计数器测出总的脉冲数和每转一圈的时间,再经过单片机的计算得出,其结果通过LED显示器显示出来。本系统总体思路如下:假定轮圈的周长为L,在轮圈上安装a个永久磁铁,则测得的里程值最大误差为L/a。经综合分析,本设计中取a=1。当轮子每转一圈,通过开关型霍尔元件传感器采集到一个脉冲信号,并从引脚P3.2中断0端输入,传感器每获取一个脉冲信号即对系统提供一次计数中断。每次中断代表车轮转动一圈,中断数n与轮圈的周长L的乘积为里程值。计数器T1计算每转一圈

11、所用的时间time,就可以计算出即时速度speed。若自行车超过限定速度,系统发出报警信号,蜂鸣器响。要求达到的各项指标及实现方法如下:1. 利用霍尔传感器产生里程数的脉冲信号。2. 对脉冲信号进行计数。实现:利用单片机自带的计数器T1对霍尔传感器脉冲信号进行计数。3. 对数据进行处理,要求用LED显示里程总数和即时速度。实现:利用软件编程,对数据进行处理得到需要的数值。最终实现目标:自行车的速度里程表具有里程、速度测试与显示功能,采用单片机作控制,显示电路可显示里程及速度。 图1 系统框图2.2 单片机最小系统2.2.1 STC89C52单片机 图2 STC89C52单片机2.2.2 时钟电

12、路 STC89C52系列是1T的8051单片机,STC89C52系统时钟兼容传统8051。系列单片机有两个时钟源:内部R/C振荡时钟和外部晶体时钟。 在单片机内有一个高增益反相放大器,反相放大器的输入端为XTAL,输出端为XTAL2,由该放大器、晶振和两个33PF的电容构成的振荡电路做单片机的时钟电路。 图3 时钟电路2.2.3 复位电路复位电路原理是单片机RST引脚接收到2us以上电平信号,只要保证电容的充放电时间大于2us,即可复位,所以电路中的电容是可改变的,按键按下,电容处于一个短路电路中,电容释放所有的电能,电阻两端电压升高系统复位。且振荡器稳定后,如果RST引脚上有一个高电平并维持

13、2个机器周期(24个振荡周期)以上,则CPU就可以响应并将系统复位。单片机系统的复位方式有:手动按钮复位和上电复位。 图4 复位电路2.3 显示模块 1602LCD分为带背光和不带背光两种,基控制器大部分为HD44780,带背光的比不带背光的厚,是否带背光在应用中并无差别, 1602LCD及两者尺寸差别如下图所示: 图6 液晶显示模块图 1602引脚说明表格如下:编号符号引脚说明编号符号引脚说明1Vss电源地9D2数据口2VDD电源正极10D3数据口3VO液晶显示对比度调节端11D4数据口4RS数据/命令选择端(H/L)12D5数据口5R/W读写选择端(H/L)13D6数据口6E使能信号14D

14、7数据口7D0数据口15BLA背光电源正极8D1数据口16BLK背光电源负极 液晶引脚与单片机连接:第1脚:VSS接地。第2脚:VDD接5V正电源。第3脚:VO接3K的电位器调整对比度。第4脚:RS为寄存器选择。第5脚:R/W为读写信号线。第6脚:E端为使能端,当E端由高电平跳变成低电平时,液晶模块执行命令。第714脚:D0D7为8位双向数据线接单片机P0口。第15脚:背光源正极接电源。第16脚:背光源负极接地。2.4 霍尔传感器的测量原理 图7 霍尔传感器 霍尔传感器是利用霍尔效应制成的一种磁敏传感器。在置于磁场中的导体或半导体通入电流I,若电流垂直磁场B,则在与磁场和电流都垂直的方向上会出

15、现一个电势差Uh,这种现象称为霍尔效应。利用霍尔效应制成的元件称为霍尔元件。因为它具有结构简单、频率响应宽、灵敏度高、测量线性范围大、抗干扰能力强以及体积小、使用寿命长等一系列特点,因此被广泛应用于测量、自动控制及信息处理等领域。2.5 DS1302时钟芯片 图8 时钟芯片 本设计时间芯片采用的了DS1302,DS1302是由美国DALLAS公司推出的一种具有涓细电流充电能力的低功耗实时时钟电路,具有可对年、月、周、日、时、分、秒进行计时等的功能,工作电压为2.5V5.5V。主要的特点是采用串行数据传输,即使掉电亦不丢失,在DS1302内部有一个318的用于临时性存放数据的RAM寄存器。DS1

16、302与STC89C52的连接线有三条线:RST引脚、SCLK串行时钟引脚、I/O串行数据引脚,Vcc2作为备用电源,芯片外接晶振X2,为芯片提供计时脉冲。第三部分 系统软件的设计与实现3.1 主程序流程图 图9 主程序流程图3.2 显示流程图 该子程序用LCD动态扫描显示方式。先将单片机的P2.2口连接使能端口E。接着将单片机的P2.0口连接数据/命令选择端RS,P0口连接数据端D0D7,然后将要显示的数字的值发送给P0口。然后调用延时,接着将P2.2口置0,P2.0口置1,写指令,将P2.2口置1,P2.0口置1,写数据,直到要显示的数字全部显示在液晶上。显示流程图如图10所示。 图10

17、显示流程图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等多种编译器

18、。3.4.2 仿真结果仿真结果如图12所示。 图12 仿真结果第四部分 安装调试与性能测量 电路实物图如图13所示。 图13 电路实物图第五部分 设计总结 通过本次设计,使我对单片机知识和理解更一步加深了,掌握了简易数字里程表的设计,组装和调试方法。并且使我更加熟练的应用仿真软件,让我学到了如何运用软件测试电路的可行性,并且对电路的调试改进都有一个很大的提高。这个过程中我遇到了很多困难,比如如何运用仿真软件画图,如何组织一些比较专业的语言,以及上网查阅资料。虽说费劲,但是乐趣也不少。通过这次设计,我们了解到平时知识的积累真的很重要,在遇到困难时一定要向认真思考,查阅相关资料,不可盲目退缩,努力

19、后就一定会有收获。这次毕业设计收获颇丰,不仅是对自己个人能力的提高,也让我认识到了自己的局限,通过这次的毕业设计为以后的学习奠定了一个更好的基础。参考文献1 李朝青. 单片机原理及接口技术. 北京航空航天大学出版社, 19942 张毅刚, 刘杰. MCS-51单片机原理及应用. 哈尔滨工业大学出版社,20043 楼然苗, 李光飞. 51系列单片机设计实例. 北京航空航天大学出版社, 20064 松井邦彦, 梁瑞林. 传感器应用技术141例. 科学出版社, 20065 张洪润, 张亚凡. 传感器技术与应用教程. 清华大学出版社, 20056 刘灿军. 实用传感器. 国防工业出版社, 20047

20、何希才. 传感器及其应用. 国防工业出版社, 20018 刁文兴. 自行车电子里程表的初步设计. 南京工业职业技术学院学报, 2004, 6: 25-289 安宗权. 电动电子车速里程表分频电路设计. 自动化与仪器仪表, 2001, 5: 39-4410 阎焕忠, 王长涛, 马斌. 单片机控制里程转速表的设计. 沈阳建筑工程学院学报(自然科学版),2002, 4: 145-14811 谢自美. 电子线路设计.实验.测试M.武汉:华中科技大学出版社,2000:212-23012 张福学. 传感器使用电路150例.中国技术出版社.1992程序#include /调用单片机头文件#define uc

21、har unsigned char /无符号字符型 宏定义变量范围0255#define uint unsigned int /无符号整型 宏定义变量范围065535#include eeprom52.h/*ds1302 内部RAM RAM0 1100 000R/W 1读 0写 RAM1 1100 001R/W . RAM30 1111 110R/W */sbit clk = P13; /ds1302时钟线定义sbit io = P14; /数据线sbit rst = P15; /复位线/秒 分 时 日 月 年 星期 uchar code write_add=0x80,0x82,0x84,0x

22、86,0x88,0x8c,0x8a; /写地址uchar code read_add =0x81,0x83,0x85,0x87,0x89,0x8d,0x8b; /读地址uchar code init_ds =0x55,0x17,0x15,0x01,0x01,0x13,0x13; uchar miao,fen,shi,ri,yue,week,nian;uchar i;uchar t1_num,t2_num;/计时间中断的次数unsigned long speed1,juli,time2;float f_hz,speed_km,speed_m;/dlaout time1,speed_km,spee

23、d_m;uchar TH11,TL11;uchar flag_en; /开始计算速度使能uchar flag_stop_en; /要确定车子是否停下了uint juli_s; /每秒走的距离uint juli_z; /总路程float zhijing = 0.55; /直径 0.55Mbit flag_1s = 1; /1suchar menu_1; /菜单设置变量uchar menu_2; /菜单设置变量long zong_lc; /总量程uchar flag_200ms;uint shudu; /定义速度的变量uint bj_shudu = 80; /报警速度/这三个引脚参考资料sbit

24、rs=P10; /寄存器选择信号 H:数据寄存器 L:指令寄存器sbit rw=P11; /寄存器选择信号 H:数据寄存器 L:指令寄存器sbit e =P12; /片选信号 下降沿触发uchar code table_num=0123456789abcdefg;uchar i;sbit beep = P37; /蜂鸣器IO口定义/*1ms 延时函数*/void delay_1ms(uint q)uint i,j;for(i=0;iq;i+)for(j=0;j120;j+);/*把数据保存到单片机内部eepom中*/void write_eeprom()SectorErase(0x2000);

25、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中读出来*/void read_eeprom()uint value;bj_shudu = byte_read(0x2001);bj_shu

26、du = 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);/*开机初始化保存的数据*/void init_eeprom() /开机初始化保存的数据*read_eeprom();/先读if(a_a != 1)/新的单片机初始单片机内问eeprombj_shudu = 50;a_a = 1;write_e

27、eprom(); /保存数据/* 名称 : delay_uint()* 功能 : 小延时。* 输入 : 无* 输出 : 无*/void delay_uint(uint q)while(q-);/* 名称 : write_com(uchar com)* 功能 : 1602命令函数* 输入 : 输入的命令值* 输出 : 无*/void write_com(uchar com)i =0;e=0;rs=0;rw=0;P0=com;delay_uint(3);e=1;delay_uint(25);e=0;/* 名称 : write_data(uchar dat)* 功能 : 1602写数据函数* 输入

28、: 需要写入1602的数据* 输出 : 无*/void write_data(uchar dat)i =0;e=0;rs=1;rw=0;P0=dat;delay_uint(3);e=1;delay_uint(25);e=0;/* 名称 : write_sfm2(uchar hang,uchar add,uchar date)* 功能 : 显示2位十进制数,如果要让第一行,第五个字符开始显示23 ,调用该函数如下 write_sfm1(1,5,23)* 输入 : 行,列,需要输入1602的数据* 输出 : 无*/void write_sfm2(uchar hang,uchar add,uint

29、date)if(hang=1) write_com(0x80+add);elsewrite_com(0x80+0x40+add);write_data(0x30+date/10%10);write_data(0x30+date%10);/* 名称 : write_sfm4(uchar hang,uchar add,uchar date)* 功能 : 显示2位十进制数,如果要让第一行,第五个字符开始显示23 ,调用该函数如下 write_sfm1(1,5,23)* 输入 : 行,列,需要输入1602的数据* 输出 : 无*/void write_sfm4(uchar hang,uchar add

30、,uint date)if(hang=1) write_com(0x80+add);elsewrite_com(0x80+0x40+add);write_data(0x30+date/10000%10);write_data(0x30+date/1000%10);write_data(.);write_data(0x30+date/100%10);write_data(0x30+date/10%10);write_data(0x30+date%10);write_data(k);write_data(m);void write_sfm7(uchar hang,uchar add,uint da

31、te)if(hang=1) write_com(0x80+add);elsewrite_com(0x80+0x40+add);write_data(0x30+date/100000%10);write_data(0x30+date/100000%10);write_data(0x30+date/10000%10);write_data(0x30+date/1000%10);write_data(.);write_data(0x30+date/100%10);write_data(0x30+date/10%10);write_data(k);write_data(m);/*lcd1602上显示两

32、位十进制数*/void write_sfm1(uchar hang,uchar add,uchar date)if(hang=1) write_com(0x80+add);elsewrite_com(0x80+0x40+add);write_data(0x30+date % 10);/* 名称 : write_string(uchar hang,uchar add,uchar *p)* 功能 : 改变液晶中某位的值,如果要让第一行,第五个字符开始显示ab cd ef ,调用该函数如下 write_string(1,5,ab cd ef;)* 输入 : 行,列,需要输入1602的数据* 输出 :

33、 无*/void write_string(uchar hang,uchar add,uchar *p)if(hang=1) write_com(0x80+add);elsewrite_com(0x80+0x40+add);while(1)if(*p = 0) break;write_data(*p);p+;/*lcd1602上显示两位十进制数*/void write_sfm2_ds1302(uchar hang,uchar add,uchar date)if(hang=1) write_com(0x80+add);elsewrite_com(0x80+0x40+add);write_data

34、(table_numdate / 16);write_data(table_numdate % 16);/*控制光标函数*/void write_guanbiao(uchar hang,uchar add,uchar date)if(hang=1) write_com(0x80+add);elsewrite_com(0x80+0x40+add);if(date = 1)write_com(0x0f); /显示光标并且闪烁else write_com(0x0c); /关闭光标 /* 名称 : init_1602()* 功能 : 初始化1602液晶 * 输入 : 无* 输出 : 无*/void i

35、nit_1602() /1602初始化write_com(0x38);write_com(0x0c);write_com(0x06);delay_uint(1000);write_string(1,0,sd:00km/h 00:00);write_string(2,0,lc:00.00km ); / E309R/*写一个数据到对应的地址里*/void write_ds1302(uchar add,uchar dat)rst = 1; /把复位线拿高for(i=0;i= 1; /把地址右移一位clk = 1; /时钟线拿高for(i=0;i= 1; /把数据右移一位clk = 1; /时钟线拿高rst = 0; /复位线合低clk = 0;io = 0;/*从对应的地址读一个数据出来*/uchar read_ds1302(uchar add)uchar value,i;rst = 1; /把复位线拿高for(i=0;i= 1; /把地址右移一位clk = 1; /时钟线拿高for(i=0;i8;i+)clk = 0; /时

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 办公文档 > 其他范文


备案号:宁ICP备20000045号-2

经营许可证:宁B2-20210002

宁公网安备 64010402000987号