基于AT89S51电动车里程/速度计的实现
2014-08-08程阳
程阳
摘要:本论文主要介绍了非机动车中基于AT89S51的电动车里程/速度计的仿真实现,通过AT89S51单片机,采用霍尔传感器,实现对电动车行驶里程、速度的测量,并能选择显示电动车行驶里程值或速度值。
关键词:AT89S51;LED数码管;霍尔传感器;里程在中国,电动车是每年以30%的速度增长的绿色朝阳产业,无论能耗角度还是从占有空间比较,电动自行车的发展趋势、市场前景都非常看好。电动自行车曾以其价廉、便捷、环保的功能优势,受到城市市民的青睐,但是它的非机动性也带来了安全方面的一些问题。我们这里通过把霍尔传感器安装在电动车轮子上来测定速度、并增加超速声光报警提示等功能做为补充。
1设计思路
以AT89S51单片机为核心,采用霍尔传感器,实现对电动车行驶里程、速度的测量,并能选择显示电动车行驶里程值或速度值。可以实现对电动车车轮大小的设置等。电动车超过一定限速时可以进行声光报警提示。
本系统由硬件和软件两部分组成。硬件部分主要完成电动车行驶里程里程的检测、LED显示、按键检测、灯光指示和声音报警等功能。软件部分主要完成电动车行驶里程和速度的计算、速度值里程值的选择显示、按键控制、超速时进行声光报警提示等功能。
2电路的工作原理
硬件部分,我们以AT89S51为核心,它是美国ATMEL公司生产的,具有低功耗,高性能CMOS的 8位字节单片机,它还具有4k在线系统编程(ISP)Flash闪速存储器,并且具有全静态的工作模式和三级程序加密琐,以及32个可编程I/O口线,2个16位定时/计数器,它还能够具用全双工串行UART通道和灵活的在系统编程功能,可灵活应用于各种控制领域。
我们还借助于霍尔传感器AH20,将它安装在电动车的轮子上,轮子每转一圈,霍尔传感器就会产生一个低电平脉冲。把CD4024当作二分频器使用,对霍尔传感器的输出信号加以二分频,实现定时器启动和停止。LED数码管利用动态扫描的方式,数码管的段码及位码的输入端利用P0口和P2口。里程显示和速度显示的状态指示灯利用LED1和LED2。电动车车轮大小的选择开关采用S1~S4。里程/速度显示的切换开关采用S5,当S5闭合时,速度就会显示,当S5断开时,里程就会显示。超速报警指示采用LED3和蜂鸣器。
3软件实现
软件部分:采用C语言编写。20H~23H单元存放车轮大小的数值,60H~62H单元存放圈数,68H、69H单元存放轮子转一圈所用的时间。源程序主要分为主程序、初始化子程序、里程/速度测量子程序、显示子程序等。
3.1 初始化子程序
初始化子程序主要通过下面的步骤:外部控制定时方式用定時器1来设定、边沿触发方式用外中断0和外中断1设定。当开关S1~S4都断开为0时,就会弹出错误警报。
3.2 主程序
根据开关S5的状态选择显示里程值或速度值。并开始调用其他子程序。
3.3 里程速度测量程序
行驶圈数的计数通过外部中断0,该计数值为十六进制数。轮子每转一圈,就会产生一次外部中断,并且计数值加1。启动和停止通过外部中断1控制定时器T1来实现,当外部中断1输入为0时,停止定时器T1,当外部中断1输入为1时,启动定时器T1。将轮子圈数的计数脉冲经二分频后将会产生外部中断1的输入信号,这样轮子转一圈所用的时间刚好等于每次定时器T1的计数时间。
3.4 显示子程序
在显示里程的过程中,首先要点亮里程显示指示灯,并同时熄灭速度显示指示灯,然后把圈数计数器中的数值计算出来,求出总里程值(km)并加以显示。计算公式为:里程=计数值*轮子周长。当需要显示速率时,首先要点亮速度显示指示灯,并同时熄灭里程显示指示灯,然后把轮子的周长数值和车轮转一圈所用的时间数值计算出来,求出实时速度值并加以显示,速度的单位为Km/h。速度计算公式为:速度=轮子周长/定时时间
4调试与功能说明
单片机AT89S51的31脚要和电源接一起;霍尔传感器要安装在电动车的前轮上,永久磁铁要固定在车轮辐条上,AH20作防潮密封后要固定在前叉上,使车轮在转动时磁铁和AH20相遇,并且相遇时间尽量短。磁铁的S极面向AH20的正面,之间的间距调整到5mm左右。
通过本次实验,我们进行设计制作的电动车里程/速度计显示数据准确、使用方便、占用硬件资源少、而且在不改变硬件电路的前提下,仅通过软件编程就实现了计时、定时等功能。
[参考文献]
[1]潭浩强.《C程序设计》.北京航空航天大学出版社.
[2]郝建国,郑燕.单片机在电子电路设计中的应用[M].北京:清华大学出版社.
[3]童诗白,华成英.《模拟电子技术基础》.北京高等教育出版社.
[4]胡汉才.单片机原理及其接口技术.清华大学出版社.