多功能自行车测速仪设计与制作.docx
《多功能自行车测速仪设计与制作.docx》由会员分享,可在线阅读,更多相关《多功能自行车测速仪设计与制作.docx(33页珍藏版)》请在冰豆网上搜索。
多功能自行车测速仪设计与制作
“发明杯”大学生创新大赛作品
题目:
多功能自行车测速仪的设计与制作
2009年5月18日
中文摘要1
引言3
1概述4
1.1自行车测速仪简介4
1.2自行车测速仪的功能简介5
1.3系统控制方案5
2自行车测速仪的硬件设计与实现6
2.1单片机的选用与介绍6
2.2传感器的选择8
2.3显示模块的选择及介绍8
2.4硬件原理说明及PCB布线原则9
2.5硬件装调12
3系统软件的设计13
3.1液晶显示屏的切换13
3.2主程序14
3.3子程序15
3.4软件调试16
结论与谢辞17
参考文献18
附录1PCB图19
附录2材料清单20
附录3程序清单21
多功能自行车测速仪设计与制作
摘要:
本课题的任务是设计一种用于自行车的多功能电子式测速仪。
该测速仪以AT89S52为核心,通过开关型霍尔元件来检测自行车的运转情况,将不同车速转变成的不同频率的脉冲信号输入到单片机进行计算,进而实现对自行车车速、里程的计算及里程的累计、存储,最后用LCD液晶显示模块直观地将车速与里程显示给用户,并且在速度高于一定的值时可自动向用户发出报警信号,从而达到智能测速的目的。
关键词:
AT89S52单片机霍尔元件液晶LCD
引言
随着人们生活水平的逐渐提高,人们对于生活质量的要求也日益增加,尤其是对健身的要求。
自行车在中国普遍作为代步工具。
而在国外,自行车却是一项十分受欢迎的健身运动。
因为它无污染,价位低廉,老少皆宜。
而且在运动过程中可以充分享受到大自然,对于忙碌的现代人来说,无疑是一种较好的放松方法。
在中国这种情况也在慢慢发生变化。
在以往人们骑自行车时都不能准确的知道自己到底骑了多少路,只能自己估算;如果要知道时间还要看手表、看手机,骑车的时候看东看西,一点安全性都没有;虽然自行车的速度没有摩托车和汽车的速度来的快,但是同样也要注意安全,当超过了自行车的最大速度时最好能提醒用户减小一下速度,注意安全。
因此对于骑自行车的人们来说需要一款能测速的装置,方便知道自己的运行情况及提高行驶的安全性。
单片机是集成在一块芯片上的微型计算机,由于他主要应用于工业控制、智能仪器仪表、家用电器等领域,因此要求单片机具有体积小,功耗低,精简指令集、控制功能强、扩展灵活、抗干扰性好,可靠性高,有较强的模拟接口,代码保密性好、使用方便、外围电路更少等优点,这使得单片机在硬件结构、指令系统上与通用微型计算机有一些不同之处。
主要特点如下:
单片机的应用场合固定,程序开发后很少改动,且数据量较少,将程序固化在ROM中可靠性高,能够提高单片机的性能。
具有位处理功能:
满足工业控制需要,单片机的指令系统中专门有一类位操作指令,可直接进行位传送,置位复位,位判断转移等。
引脚功能复用:
一般情况下,微型计算机的CPU外部都有单独的地址总线、数据总线和控制总线,而单片机由于引脚数量有限,因此其多数引脚具有复用功能。
工作寄存器设在片内RAM中:
在通用微型计算机中,寄存器不占有RAM空间,只有名称没有地址,而在单片机中,寄存器占用内部数据存储器中的存储单元。
因此,单片机中的寄存器既有名称也有地址。
类型多,系列全,速度快:
目前,单片机种类繁多,用户可根据实际需要选择功能好、性价比高的产品。
并且,单片机把微型计算机的各个部分集成到一块芯片中,缩短了信号传送的距离,提高了系统的可靠性及运行速度。
单片机有那么多的优点才会得到广泛的应用,利用单片机设计的自行车测速系统就是特例之一。
1概述
1.1自行车测速仪简介
1.1.1传统的机械式测速仪
传统的机械式测速仪是由轮子输出动力,经驱动蜗轮轴带动软轴头端同步转动,使与软轴另一端固定的永久磁铁跟着同步转动,从而产生旋转磁场该磁场作用于转动盘,便使转动盘连同车速表指针发生同向的偏转。
当电磁转矩与弹簧产生的阻力矩平衡时,指针偏转停留在某一角度上。
指针偏转角与车速成正比,因而可用其表示车速。
机械式测速仪的缺陷是明显的。
由于表盘指针偏转程度正比于软轴的转动时产生的磁力,当转速较低的时候,磁力较小,随转速变化波动较大。
因此,低速时测速表指针摆动剧烈、测量及显示精度不高。
1.1.2简易电子式测速仪
随着电子科技的进步,传统的机械式测速仪几乎已经消失,随之被电子式测速仪所取代。
这类仪表基本原理都是设法由电子元器件代替传动软轴取得车子运行旋转信号,进而把信号处理好并由显示器显示出转速或速度信息。
这类仪表具有精度高、重复性好、分度均匀、响应速度快、可靠性高、功耗低、适用范围广等优点,并且其结构简单、使用方便所以称之为简易电子式测速仪。
本课题就是根据这个基本原理来设计一种简易电子式测速仪。
图1.1测速仪的外形框图
1.2自行车测速仪的功能的简介
对自行车进行实时速度的测量,显示出速度值。
能针对不同的车型进行选择。
从而采用不同的模块进行测量。
显示当前日期时间,可以任意设定当前工作时间。
显示行车里程,运动时间。
记录范围为0~999.9Km
速度超过最大值时,会发出报警信号,提醒用户减速。
1.3系统控制方案
测量自行车的速度的原理有两种:
原理1:
测量一定时间间隔t1里自行车车轮转过的圈数qs。
假设车轮周长为tc,则速度V=tc*qs/t1
原理2:
测量自行车车轮转过一圈的时间t2,则速度V=tc/t2
本里程表是根据原理2计算速度的。
里程、速度等都是由开关型霍尔元件测量。
已知自行车轮胎的直径tl,轮子每转动一圈,安装在车轮辐条上的磁钢接近开关型霍尔传感器一次,传感器送一个下降沿信号给单片机的外部中断0,产生一次中断,圈数qs加1。
两个相邻的下降沿信号的时间由单片机定时器1计时(设为ssj),那么计算累计里程S和当前速度V的公式为:
S=tl*3.14*qsV=tl*3.14/ssj
若速度大于28.8km/h(8m/s)则P2.4输出低电平,报警蜂鸣器响,提示速度过大。
处理速度数据时同时刷新最大速度及计算S、V。
单片机定时器0定时时间为50ms,每20次刷新系统时钟及计算累计行驶时间。
图1.2系统框图
系统由开关型霍尔元件、设置选择模块(按键的选择)、显示模块、报警模块、供电模块和单片机小系统构成。
由设置选择模块选择显示模式后,单片机实时采集、处理后显示。
2自行车测速仪的硬件设计与实现
2.1单片机的选用与介绍
目前已投放市场的主要单片机产品多达70多个系列,500多个品种。
这其中还不包括那些系统或整机厂商定制的专用单片机,及针对专门业务、专门市场的单片机品种。
这里对我们设计所需的8051单片机进行介绍。
最早由Intel公司推出的8051/31类单片机也是世界上用量最大的几种单片机之一。
由于Intel公司在嵌入式应用方面将重点放在186、386、奔腾等与PC类兼容的高档芯片的开发上,8051类单片机主要由Philips、三星、华邦等公司接手生产。
这些公司都在保持与8051单片机兼容的基础上改善了8051许多特点(如时序特性)。
提高了速度、降低了时钟频率,放宽了电源电压的动态范围,降低了产品的价格。
2.1.1单片机的主要性能及功能特性的描述
与MCS-51单片机产品兼容、8K字节在系统可编程Flash存储器、1000次擦写周期、全静态操作:
0Hz~33Hz、三级加密程序存储器、32个可编程I/O口线、三个16位定时器/计数器、八个中断源、全双工UART串行通道、低功耗空闲和掉电模式、掉电后中断可唤醒、看门狗定时器、双数据指针、掉电标识符。
8051单片机中AT89S52是一种低功耗、高性能CMOS8位微控制器,具有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内容被保存,振荡器被冻结,单片机一切工作停止,直到下一个中断或硬件复位为止。
8位微控制器8K字节在系统可编程FlashAT89S52。
图2.1芯片AT89S52的管脚分布图
2.1.2单片机最小系统的简介
维持单片机运行的最简单的配置系统,构成单片机最小应用系统。
由于晶振、开关等器件无法集成到51芯片内部,由这些器件所构成的晶振电路和复位电路是单片机工作所必要的两个基本电路。
对于8051、8751片内有RAM、EPROM的系统来讲,单片机与晶振电路及开关、电阻、电容等构成的复位电路组成单片机最小系统。
对于8031机型来说,片内不含有程序存储器,所以除以上基本的配置外,必须外扩片外的程序存储器,再用到地址锁存器,才能构成最小应用系统。
图2-1是AT89S52构成的最小应用系统。
图2.2AT89S52单片机最小系统
2.2传感器的选择
2.2.1红外对管
把红外对管分别安装在自行车车轮的两侧,当车轮转动时,辐条会阻挡红外对管的光路,接收管输出低电平,单片机根据此信号可计算里程、速度等。
红外对管的优点是测量精度高,缺点是安装比较复杂和容易受外来光线、灰尘等的影响。
2.2.2干簧管
干簧管是一种磁敏的有触点无源电子开关元件,应用在里程表上的原理与开关型霍尔元件类似,把干簧管安装在自行车贴近车轮的支架上,磁钢安装在辐条上,当磁钢靠近干簧管的时候,干簧管闭合,单片机根据此信号可计算里程、速度等。
干簧管的优点是成本低廉和安装简易,缺点是比较脆弱和不够稳定。
2.2.3开关型霍尔元件
霍尔元件是利用霍尔效应把磁输入信号转换成电信号的器件。
把开关型霍尔元件安装在自行车贴近车轮的支架上,磁钢安装在辐条上,当磁钢靠近霍尔元件的时候,传感器输出一个无抖动的低电平,单片机根据此信号可计算里程、速度等。
霍尔元件的优点是稳定和安装简易。
图2.3霍尔元件示意图
本论文根据需要选用开关型霍尔元件。
2.3显示模块的选择及介绍
2.3.1动态扫描LED数码管显示
里程表的显示内容以数字为主,利用LED数码管可基本满足使用要求,且成本较低。
但是用动态扫描的方式驱动数码管,亮度太低,在阳光下几乎看不见显示内容,失去使用价值。
2.3.2串行静态LED数码管显示
把单片机的串行口设置为方式0(同步移位寄存器),输出显示信息,可实现LED数码管的静态显示,其亮度令人满意。
但由于要使用74HC164/74LS164串并转换芯片驱动LED数码管,因此会带来体积大、成本高、功耗高等的缺点。
2.3.3LCD液晶显示模块
在日常生活中,我们对液晶显示器并不陌生。
液晶显示模块已作为很多电子产品的通过器件,在计算器、万用表及很多家用电子产品中都可以看到,显示的主要是数字、专用符号和图形。
液晶显示模块具有体积小、功耗低、显示内容丰富等特点,现在字符型液晶显示模块已经是单片机应用设计中最常用的信息显示器件了。
本测速仪使用常见的1602LCD型号的字符型液晶显示模块
2.3.4LCD1602液晶显示模块的介绍
液晶显示的原理是利用液晶的物理特性,通过电压对其显示区域进行控制,有电就有显示,这样即可以显示出图形。
其不存在像CRT那样内部具有超高压元器件,不至于出现由于高压导致的x射线超标。
而且机器结构电路简单,模块化以及芯片的高集成化足以把电路工作时候产生的电磁辐射降到最低。
这样的设计直接降低了电路的功耗,发热量也非常小。
字符型液晶显示模块是一种专门用于显示字母、数字、符号等点阵式LCD,目前常用16*1,16*2,20*2和40*2行等的模块。
下面以长沙太阳人电子有限公司的1602字符型液晶显示器为例,介绍其用法。
图2.4字符型液晶显示模块
图2.5接口信号说明
2.4硬件原理说明及PCB布线原则
2.4.1硬件原理图
图2.6硬件原理图
2.4.2硬件原理说明
原理图由最小系统、信号检测模块、液晶显示模块、按键选择模块、供电模块、报警模块6大块组成。
以下就结合原理图介绍一下个个模块。
该设计的信号检测模块是开关型霍尔元件,在电路原理图中为J2,它是霍尔元件的接插件。
把开关型霍尔元件安装在自行车贴近车轮的支架上,磁钢安装在辐条上,当磁钢靠近霍尔元件的时候,传感器输出一个无抖动的低电平,给单片机口P32,单片机根据此信号可计算里程、速度等。
显示模块是1602LCD液晶显示器,在电路原理图中为J3,它是液晶显示器的16脚单排接插件,与液晶Vo引脚相连的可变电阻是调节LCD的背景灯光亮度的;与BLA引脚相连的R2是控制LCD背景的;P0口的管脚是复用的,排阻RP1是上拉电阻,起到提高输出高电平的值并起到限流作用。
按键选择模块中包括SW1、SW2、SW3、SW4、SW5。
SW1用于时钟设置时更改“时”,直径设置时更改十位;SW2用于时钟设置时更改“分”的十位,直径设置时更改个位;SW3用于时钟设置时更改“分”的个位;SW4用做确定键,确认更改设置;SW5则是用于控制对液晶显示屏的切换,与单片机的P33相连作为一个中断,一按则产生一个中断信号LCD屏幕就显示相应的画面。
而R3、R4、R5、R6是与按键相连的上拉电阻。
其用途也是提高输出高电平的值与限流作用。
供电模块我使用4节2500mahAA的电池组构成,把四节电池串联起来,然后再引出两根,即正极与负极。
在电路原理图中J1,就是供电模块的接插件,把正负两根线插上就构成了电源。
设计的报警模块由电阻R7、三极管和蜂鸣器组成。
电阻R7起到一个限流作用,三极管本身有放大作用,在这里把通到蜂鸣器的信号放大对蜂鸣器起到一个驱动作用。
当行驶速度大于设定的最大值时,蜂鸣器会发出报警信号给用户,提醒用户减速,注意安全。
该硬件系统以单片机最小系统为基础,在此基础上加上以上的这些模块,从而更好的体现多功能自行车测速仪的功能。
2.4.3PCB布线原则
将原理图在Protel99SE软件中画完,然后再把它转变成PCB图。
画PCB图有以下的原则:
2.4.3.1连线精简原则
连线要精简,尽可能短,尽量少拐弯,力求线条简单明了,特别是在高频回路中,当然为了达到阻抗匹配而需要进行特殊延长的线就例外了,例如蛇行走线等。
2.4.3.2安全载流原则
铜线的宽度应以自己所能承载的电流为基础进行设计,铜线的载流能力取决于以下因素:
线宽、线厚(铜铂厚度)、允许温升等。
印制导线最大允许工作电流(导线厚50um,允许温升10℃)
2.4.3.3设计的应用原则
在高速PCB设计中,看似简单的过孔也往往会给电路的设计带来很大的负面效应,为了减小过孔的寄生效应带来的不利影响,在设计中可以尽量做到:
第一,多方面来考虑,选择合理尺寸的过孔大小。
例如对6-10层的内存模块PCB设计来说,选用10/20mil(钻孔/焊盘)的过孔较好,对于一些高密度的小尺寸的板子,也可以尝试使用8/18mil的过孔。
对于电源或地线的过孔则可以考虑使用较大尺寸,以减小阻抗。
第二,尽量不换层,即尽量不要使用不必要的过孔。
第三,打过孔,过孔和管脚之间的引线越短越好。
第四,放置一些接地的过孔,以便为信号提供最近的回路。
甚至可以在PCB板上大量放置一些多余的接地过孔。
2.5硬件装调
根据PCB图刻好板,接着再把对应的元器件装到板上,并焊接完成。
电路板做好后进行调试,调试时按模块来进行,可以采用编写独立的测试程序来进行,即保留该模块的所有代码,删除其他无关的代码,逐个进行调试,这种方法特别适合初学者和经验不足者。
对于由有经验的人,则可以整个程序进行调试,遇到疑难问题无法判断时,再临时编写测试程序进行调试。
系统调试是一个非常漫长而复杂的工作,需要根据实际情况来增加各种测试信号,以便进行问题的分析和判断。
3系统软件的设计
3.1液晶显示屏的切换
按SW1-SW3调整时钟后,按SW4确认。
接着进入自行车轮胎半径设置画面:
SetBikeTireL=55cm
默认设置为55cm,对应22英寸自行车轮胎半径。
附:
轮胎直径大小英寸与厘米对照表
英寸
16”
18”
20”
22”
24”
26”
28”
28.5”
厘米
40cm
45cm
50cm
55cm
61cm
66cm
71cm
72cm
按SW1、SW2调整轮胎直径后,按SW4确认,里程表开始工作。
各项参数分成三屏选择显示,按动SW5(Disp)按以下次序进行切换:
图3.1屏幕切换
当SW5选屏按键没有按下时,液晶显示器屏幕显示如图第一层所示的当前行驶累计的里程与当前行驶累计的时间;当按键按一下则屏幕就显示下一层所示的当前速度与最大速度;若继续按一下则屏幕就显示第三层所示的当前时间,以此类推进入下一个循环。
3.2主程序
图3.2主程序流程图
在主程序的中断中,中断一共有三个,内部时间定时器(T0)中断、与霍尔元件相连的外部中断0(INT0)、与SW5相连的外部中断1(INT1)。
如下图所示就是自行车霍尔元件的脉冲中断(INT0):
图3.3自行车霍尔元件脉冲中断流程图
3.3子程序
3.1.1按键处理时钟设置的子程序
因为时钟的小时用24制,所以只用了一个按键,而分钟有59,比较多,就用了两个按键来按;在这里把SW1和SW2共用了,在时钟设置和直径设置中分别有不同的作用。
P2.4=SW1,时钟设置时更改“时”,直径设置时更改十位
P2.3=SW2,时钟设置时更改“分”的十位,直径设置时更改个位
P2.2=SW3,时钟设置时更改“分”的个位
P2.1=SW4,确定键,确认更改设置
扫描按键
检测按键SW1是否有按下,
当按键SW1有按下,则小时加1
没按下则返回扫描按键
检测按键SW2是否有按下,
当按键SW2有按下,则分钟的十位加1
没按下则返回扫描按键
检测按键SW3是否有按下,
当按键SW3有按下,则分钟的个位加1
没按下则返回扫描按键
检测按键SW4是否有按下,
当按键SW4有按下,
则确认更改设置,
进行显示,并开始计时
没按下则返回扫描按键
图3.4按键处理时钟设置的子程序
3.1.2按键处理直径设置的子程序
扫描按键
检测按键SW1是否按下,
若按下则直径的十位加1,
没按下则返回扫描按键
检测按键SW2是否按下,
若按下则直径的个位加1,
没按下则返回扫描按键
检测按键SW4是否按下,
若按下则确认更改设置,
进行设置,并开始计时
没按下则返回扫描按键
图3.5按键处理直径设置的子程序
3.4软件调试
程序编好后,在编程软件中编译一下是否有错误,检查无错误后,在Proteus软件中进行仿真。
Proteus软件是一种画电路图的软件,能把程序与电路图结合起来进行调试,把程序加载至单片机芯片中,之后就能形象的观察仿真结果。
虽然现场的调试与软件的仿真结果会不一样,但是一般都会在软件仿真后,再进行现场调试。
等到软件调试正确后,再利用编程器将调试好的程序固化到AT89S52单片机中。
结论
在设计多功能自行车测速仪的过程中,我收集了很多关于多功能自行车测速仪的参考资料,并综合所有的资料确定了课题的设计思路与方案。
这是我第一次完成的产品设计,该设计从最初的设计方案变成最后的实物,花了我不少的心血,在我的指导老师的帮助下我解决了设计中遇到的各个难题。
通过这次毕业设计锻炼了我独立思考的能力,进一步加强了我的动手能力,使我无论在硬件还是软件方面设计能力都有所提高,同时也让我明白在做产品设计的时候该注意考虑细节问题,对以后在工作中都有很大的帮助。
附录1
PCB图
附录2
元器件材料清单
附录3
程序代码
#include
#defineucharunsignedchar
/***************************************************************
引脚定义:
P24=SW1 时钟设置时更改“时”,直径设置时更改十位
P23=SW2时钟设置时更改“分”的十位,直径设置时更改个位
P22=SW3时钟设置时更改“分”的个位
P21=Enter 确认更改设置
P33=Disp 正常工作时更改显示模式
****************************************************************/
sbitP24=P2^4;
sbitP23=P2^3;
sbitP22=P2^2;
sbitP21=P2^1;
sbitP33=P3^3;
sbitRS=P3^7;
sbitRW=P3^6;
sbitE=P3^5;
sbitbusy=P0^0;
/****************************************************************
变量定义:
i 延时变量
qsls圈数临时变量,用于判断里程显示选用m还是km作为单位
qs 圈数
sj 累计行驶时间,单位为秒
totallc累计里程
pjsd 平均速度
ssji 定时器T1 20ms中断次数,用于计算速度等
sji 本次速度对应的20ms中断次数
sjiold上次速度对应的20ms中断次数
sd2 当前速度
mxsd 用于更新最大速度
mxsd2 最大速度对应的20ms次数
tc 轮胎周长
*s字符串显示子程序字符指针
line字符串显示子程序列数
row字符串显示子程序行数
com写控制字
dat显示码字
gw累计里程、当前速度、累计时间、最大速度的个位
sw累计里程、当前速度、累计时间、最大速度的十位
bw累计里程、当前速度、累计时间、最大速度的百位
qw累计里程、当前速度、累计时间、最大速度的千位
ww累计里程、累计时间的万位
sww累计里程、累计时间的十万位
ssj 定时器T050ms中断次数,每20次sj加1
cgw当前时间(时钟)的个位
csw当前时间(时钟)的十位
cbw当前时间(时钟)的百位
cqw当前时间(时钟)的千位
cww当前时间(时钟)的万位
csww当前时间(时钟)的十万位
cww2当前时间(时钟)的辅助万位
MODE显示模式
tr1轮胎设置变量1(十位)
tr2轮胎设置变量2(个位)
****************************************************************/
unsignedinti,qsls;
unsignedlongqs,sj,totallc,pjsd,ssji,sji,sjiold,aa,sd2,mxsd,mxsd2,tc;
ucha