电子车速里程表的设计
摘 要
随着电子技术的迅猛发展,电子式里程表得以广泛应用,现在很多轿车仪表已经使用电子车速里程表。本设计介绍一种基于AT89C51单片机的智能电子里程表。该电子式里程表是一种数字式仪表,主要由车速表和里程表两部分组成,其传感器采用霍尔传感器的脉冲信号检测与转换。此里程表不仅可显示车辆行驶的总里程,也可显示一段时间的阶段里程,还可显示车速,以及实现超速报警等功能,并具有较强的再开发能力。
本文详细描述了利用霍尔传感器和AT89C51单片机开发测速系统的过程,重点对传感器在单片机下的硬件连接,软件编程以及各模块系统流程进行了详尽分析,对各部分的电路也一一进行了介绍,该系统可以方便的实现实时速度、里程的采集和显示,它使用起来相当方便,具有精度高、量程宽、灵敏度高、体积小、功耗低等优点,有利于我们日常生活和汽车生产业的发展,也可以当作测速处理模块嵌入其它系统中,作为其他主系统的辅助扩展。该系统结构简单,抗干扰能力强,适合于恶劣环境下进行速度里程测量,有广泛的应用前景。
关键词:AT89C51,数码管显示器,霍尔传感器,速度里程表
目 录
1 绪论 ........................................................................................................................................ 1
1.1 课题描述 . ........................................................................................................................ 1
1.2 基本工作原理及框图 . .................................................................................................... 1
2 相关芯片及硬件电路设计 .................................................................................................... 2
2.1 AT89C51芯片 . .............................................................................................................. 2
2.1.1 AT89C51的主要特性 . ........................................................................................... 2
2.1.2 AT89C51的管脚说明 . ........................................................................................... 3
2.2 霍尔速度传感器 ............................................................................................................. 4
2.2.1 霍尔传感器工作原理 .............................................................................................. 4
2.2.2 霍尔效应 .................................................................................................................. 4
2.2.3 霍尔元件 .................................................................................................................. 4
2.3 单片机最小系统及电路 ................................................................................................. 5
2.4 车速信号处理电路 ......................................................................................................... 6
2.5 显示电路 ......................................................................................................................... 8
2.5 系统原理图 ..................................................................................................................... 9
3 系统的软件及程序设计 ........................................................................................................ 9
3.1 主程序程序框图 ............................................................................................................. 9
3.2 调试及仿真 ................................................................................................................... 11
总 结 .................................................................................................................................. 12
致 谢 .................................................................................................................................. 13
参考文献 .................................................................................................................................. 14
附 录 .................................................................................................................................. 15
1 绪论
1.1 课题描述
随着电子技术的迅猛发展,电子式里程表得以广泛应用,现在很多轿车仪表已经使用电子车速里程表。以单片机为核心的智能电子里程表,不仅可以显示车辆行驶的总里程,还可以显示车速,以及实现超速报警等功能,并具有较强的再开发能力。本设计利用霍尔传感器开发测速系统,完成速度信号采集电路的设计。其次重点对传感器在单片机下的硬件连接,软件编程以及各模块系统流程进行了详尽分析。该系统可以方便的实现汽车速度、行驶里程的测量和显示,它使用起来相当方便,具有精度高、量程宽、灵敏度高、体积小、功耗低等优点,有利于我们日常生活和汽车生产业的发展,也可以当作测速处理模块嵌入其它系统中,作为其他主系统的辅助扩展。霍尔传感器与AT89C51结合实现最简测速系统,该系统结构简单,抗干扰能力强,适合于恶劣环境下进行速度里程测量,有广泛的应用前景。
1.2 基本工作原理及框图
根据系统的设计要求,利用矩形波触发脉冲代替霍尔传感器,从而对车轮转速进行模拟。选择单片机AT89C51为测控系统的核心来完成数据采集、处理、显示等功能。 该系统的总体设计思路如下:矩形波发生器产生矩形波脉冲发送到AT89C51单片机上,经过51单片机处理,将速度和里程在显示电路上显示,本系统显示器用6位共阴LED 数码管以动态扫描法实现。
按照系统设计功能的要求,确定系统由3个模块组成:主控制器、检测电路和显示电路[1]。
图1速度里程表的原理框图
本课题以是89C51单片机为核心设计的一种数字速度里程检测系统,系统整体硬件电路包括,传感器数据采集电路,速度里程显示电路,单片机主板电路等组成。系统框图主要由控制模块、外部信号及其检测装置、外部存储器、LED 显示组成。
速度里程表总体电路结构框图如图1所示。
2 相关芯片及硬件电路设计
2.1 AT89C51芯片
AT89C51是一种带4K 字节闪烁可编程可擦除只读存储器(FPEROM—Falsh Programmable and Erasable Read Only Memory)的低电压,高性能CMOS8位微处理器,俗称单片机[2]。该器件采用ATMEL 高密度非易失存储器制造技术制造,与工业标准的MCS-51指令集和输出管脚相兼容。由于将多功能8位CPU 和闪烁存储器组合在单个芯片中,ATMEL 的AT89C51是一种高效微控制器,为很多嵌入式控制系统提供了一种灵活性高且价廉的方案。AT89C51引脚图如图2所示。
图2 AT89C51引脚图
2.1.1 AT89C51的主要特性
与MCS-51 兼容;4K 字节可编程FLASH 存储器;寿命:1000写/擦循环;数据保
留时间:10年;全静态工作:0Hz-24MHz ;三级程序存储器锁定;128×8位内部RAM ;32可编程I/O线;两个16位定时器/计数器;5个中断源;可编程串行通道;低功耗的闲置和掉电模式;片内振荡器和时钟电路[3]。
2.1.2 AT89C51的管脚说明
VCC :供电电压。
GND :接地。
P0口:P0口为一个8位漏级开路双向I/O口,每脚可吸收8TTL 门电流。当P0口的管脚第一次写1时,被定义为高阻输入。P0能够用于外部程序数据存储器,它可以被定义为数据/地址的低八位。在FIASH 编程时,P0 口作为原码输入口,当FIASH 进行校验时,P0输出原码,此时P0外部必须接上拉电阻[4]。
P1口:P1口是一个内部提供上拉电阻的8位双向I/O口,P1口缓冲器能接收输出4TTL 门电流。P1口管脚写入1后,被内部上拉为高,可用作输入,P1口被外部下拉为低电平时,将输出电流,这是由于内部上拉的缘故。在FLASH 编程和校验时,P1口作为低八位地址接收。
P2口:P2口为一个内部上拉电阻的8位双向I/O口,P2口缓冲器可接收,输出4个TTL 门电流,当P2口被写“1”时,其管脚被内部上拉电阻拉高,且作为输入。并因此作为输入时,P2口的管脚被外部拉低,将输出电流。这是由于内部上拉的缘故。P2口当用于外部程序存储器或16位地址外部数据存储器进行存取时,P2口输出地址的高八位。在给出地址“1”时,它利用内部上拉优势,当对外部八位地址数据存储器进行读写时,P2口输出其特殊功能寄存器的内容。P2口在FLASH 编程和校验时接收高八位地址信号和控制信号。
P3口:P3口管脚是8个带内部上拉电阻的双向I/O口,可接收输出4个TTL 门电流。当P3口写入“1”后,它们被内部上拉为高电平,并用作输入。作为输入,由于外部下拉为低电平,P3口将输出电流(ILL )这是由于上拉的缘故。
RST :复位输入。当振荡器复位器件时,要保持RST 脚两个机器周期的高电平时间。ALE/PROG:当访问外部存储器时,地址锁存允许的输出电平用于锁存地址的低位字节。在FLASH 编程期间,此引脚用于输入编程脉冲。在平时,ALE 端以不变的频率周期输出正脉冲信号,此频率为振荡器频率的1/6。因此它可用作对外部输出的脉冲或用于定
时目的。然而要注意的是:每当用作外部数据存储器时,将跳过一个ALE 脉冲。如想禁止ALE 的输出可在SFR8EH 地址上置0。此时, ALE 只有在执行MOVX ,MOVC 指令是ALE 才起作用。另外,该引脚被略微拉高。如果微处理器在外部执行状态ALE 禁止,置位无效。
XTAL1:反向振荡放大器的输入及内部时钟工作电路的输入。
XTAL2:来自反向振荡器的输出[5]。
2.2 霍尔速度传感器
2.2.1 霍尔传感器工作原理
霍尔传感器是根据霍尔效应制作的一种磁场传感器霍尔效应是磁电效应的一种,这一现象是霍尔(A.H.Hall ,1855—1938)于1879年在研究金属的导电机构时发现的。后来发现半导体、导电流体等也有这种效应,而半导体的霍尔效应比金属强得多,利用这现象制成的各种霍尔元件,广泛地应用于工业自动化技术、检测技术及信息处理等方面。霍尔效应是研究半导体材料性能的基本方法。通过霍尔效应实验测定的霍尔系数,能够判断半导体材料的导电类型、载流子浓度及载流子迁移率等重要参数[6]。
2.2.2霍尔效应
如图3所示为霍尔效应示意图。 在半导体薄片两端通以控制电流I ,并在薄片的垂直方向施加磁感应强度为B 的匀强磁场,则在垂直于电流和磁场的方向上,将产生电势差为UH 的霍尔电压。
图3霍尔效应示意图
2.2.3霍尔元件
根据霍尔效应,人们用半导体材料制成的元件叫霍尔元件。它具有对磁场敏感、结
构简单、体积小、频率响应宽、输出电压变化大和使用寿命长等优点,因此,在测量、自动化、计算机和信息技术等领域得到广泛的应用,原理图如图4所示。
图4霍尔效应原理图
2.3 单片机最小系统及电路
单片机最小系统, 或者称为最小应用系统, 是指用最少的元件组成的单片机可以工作的系统。对51系列单片机来说,最小系统一般应该包括:单片机、晶振电路、上电复位电路。下面给出一个51单片机的最小系统电路图[7],如图5所示。
图5 51单片机最小系统
复位电路:由电容串联电阻构成,由图并结合“电容电压不能突变”的性质,可以知道, 当系统一上电,RST 脚将会出现高电平,并且这个高电平持续的时间由电路的RC 值来决定。典型的51单片机当RST 脚的高电平持续两个机器周期以上就将复位。所以,
适当组合RC 的取值就可以保证可靠的复位。一般电容C 取10uF ,电阻R 取8.2K 。也有其他取法的,原则就是要让RC 组合可以在RST 脚上产生不少于2个机周期的高电平。如图5所示为复位电路。
图5复位电路
晶振电路:典型的晶振取11.0592MHz (因为可以准确地得到9600波特率和19200波特率,用于有串口通讯的场合)/12MHz(产生精确的uS 级时歇,方便定时操作)。
2.4 车速信号处理电路
车速里程表是用来指示汽车行驶速度和累计行驶里程的仪表,由车速表和里程表两部分组成,普通车速表一般为磁感应式,其结构如图6所示。
车速表主要由永久磁铁、铝罩、护罩、刻度盘和表针等组成,永久磁铁与主动轴紧固在一起,主动轴由来自变速器输出轴的挠性软轴驱动,指针、铝罩固接在中心轴上,刻度盘固定在表外壳上。不工作时,铝罩在游丝的作用下, 使指针位于“0”位。当汽车行驶时,软轴驱动主动轴带动“U ”形永久磁铁旋转,在铝罩上感应出电涡流而产生磁场,这个磁场与永久磁铁的旋转磁场相互作用产生钮矩,使铝罩向永久磁铁旋转方向转过一定角度,直到由游丝的弹力所产生的反方向扭矩与之平衡。车速越高,产生的扭矩越大,指针在刻度盘上摆动的角度就越大,即指示的车速就越高。里程表主要由蜗轮蜗杆和数字轮组成,当汽车行驶时,主动轴经三对蜗轮蜗杆驱动数字轮上的最右侧的第一个数字轮(一般为1/10Km),任一个数字轮与左侧相邻的数字轮传动比都为10:1,这样显示的数字呈十进位递增,便自动累积了汽车总的行驶里程。
图6 汽车速度里程表
由于霍尔元件具有在静止状态下感受磁场的能力,且结构简单,形小体轻,频带宽(可从直流到微波) ,动态特性好、动态范围大,寿命长和可进行非接触测量等优点,所以选择霍尔传感器作为本次设计的要素。里程、速度等都是由霍尔元器件测量。将所测的速度与累计里程数显示出来,主要是将传感器输入到单片机的脉冲信号的频率(传感器将不同车速转变成不同频率的脉冲信号)实时地测量出来,然后通过单片机计算出速度和里程,再将所得的数据存储到串口数据存储器,并由LED 显示模块交替显示所测速度与里程。
由于车速信号为脉冲信号,由图7可知,此输入信号高电平不低于8V ,低电平不高于0.3V 。因此将信号处理电路的门槛电压设计约为1.2V 左右,以满足信号输入要求。信号低于1.2V 时,三极管不导通,F1端为低电平,从而实现了单片机的信号输入。
图7车速信号输入电路图
2.5 显示电路
液晶显示模块具有体积小、功耗低、显示内容丰富等特点,现在字符型液晶显示模块已经是单片机应用设计中最常用的信息显示器件了。本里程表使用常见的1602字符型LCD 模块。1602可以显示2行16个字符,有8位数据总线D0-D7和RS 、R/W、E 三个控制端口,工作电压为5V ,并且带有字符对比度调节和背光[8]。LCD 液晶显示模块如图8所示。
图8 LCD 液晶显示模块
本设计中采用7SEG-MPX8-CC-BLUE 八位共阴极数码管(蓝色),显示速度和路程数据。显示电路如图9所示。
图9 显示电路
2.5 系统原理图
速度里程表设计电路图如图10所示, 控制器使用单片机AT89C51, 霍尔传感器用信号发生器代替,矩形波触发器作为发生装置,用LED 实现速度和里程的显示。
图10速度里程表计设计电路图
3 系统的软件及程序设计
整个系统的功能是由硬件电路配合软件来实现的,当硬件基本定型后,软件的功能也就基本定下来了。首先要根据系统的总体功能选择一种最合适的监控程序结构,然后根据实时性的要求,合理地安排监控软件和各执行模块之间地调度关系。用C 语言完成对设计的软件编程,程序先对各变量进行声明和定义,之后是延时子程序,在进行定时器、计数器的初始化。在主函数中,先定义变量,程序的主体是由计数器产生的脉冲分别转换为速度和里程,并将各个位的数字送到对应的数码管的位,驱动显示[9]。
3.1主程序程序框图
系统程序主要采用顺序结构,包括主程序,延时子程序,速度、里程计算子程序和
显示程序等。
单片机CPU 接收到传感器感测到的脉冲(即锯齿波触发器产生的脉冲), 并通过计数器对脉冲个数进行计数。单片机执行运算程序对所记的脉冲个数运算后,得到速度和里程,经CPU 处理后在显示程序的驱动下在显示器中显示[10]。延时程序的作用是是输出数据在显示器上做短暂的停留,易于观察。系统的主流程图与延时服务子程序如图11、12所示。
图11 系统主流程图 图12 延时子程序图
函数名称:主函数
说明:因为用三位数码管表示速度,在里程小于2Km 时速度增加,当里程大于2Km 时,速度不变,保持在20Km/h。当第9709个脉冲来临时要将计数器清零,并且速度也要清零 。
3.2 调试及仿真
Proteus 中的电路仿真是在ISIS 原理图设计模块中延续下来的,利用Proteus 的交互式仿真功能,用户可以清楚的观察电路的工作情况。Proteus 原理图仿真分析的首要任务是从元件库中选取绘制电路所需元件,查找所需元件,将元件放置在绘图区,同时编辑元件的参数,然后连线。再利用电器规则对设计进行检查直到通过其检查为止,在源代码通过编译无误后就可以进行仿真。经软件调试-仿真器proteus 调试通过,并烧录芯片,得到所要求的设计结果[11]。如图11试验成功。
图11 速度里程表仿真图
说明:此时速度不变为20Km/h(后三位),里程为8.3Km (前三位)。
总 结
该课题的主要任务是开发一个以MCS-51单片机为核心的电子车速度里程表。本设计主要分为硬件部分和软件部分,硬件部分着重考虑硬件电路的简单性,故尽可能简化硬件电路,节省线路板的空间,达到硬件电路最优化设计。软件采用C 语言编写,采用模块化设计思想,程序可读性强。通过仿真、实验验证了系统的可行,能满足设计要求,达到设计的指标,实现对自行车里程/速度的计算功能,并用LED 显示。
通过这次课程设计,我不仅熟练的掌握了用protues 绘制电路图的过程,更是学会了用Keil 编写运行C 语言的能力。锻炼了自己分析问题,自己动手解决问题的能力。这次课程设计不仅仅是对平时知识积累运用的过程,更是发现新知识、把知识应用到实践的过程。
致 谢
在此次单片机的课程设计中,我经过不懈女里完成了这次的单片机课程设计。我要感谢我的指导老师张具琴老师的热心指导和李文方老师的悉心教导。在单片机的课程设计中,我知道了我还有好多不足之处,要想走的更远,只有更加努力地去学习,才能不断进步。另外,通过这次课程设计,在张具琴老师一丝不苟的态度和认真指导之下,让我学到了好多课本上学不到的知识,明白了更多的道理。
最终我成功的完成了此次课程设计。最后我要感谢我的大学任课老师和同学,谢谢一直有你们的陪伴,在此向各位老师以及同学们表示衷心的感谢!
参考文献
[1]李群芳. 单片机原理接口技术与应用(第2版)[M]. 北京:清华大学出版社,2010.
[2]李姿, 宋洋. 基于单片机的智能车速里程表的设计[J].黑龙江科技信息,2011,12.
[3]万福君, 潘松峰, 王秀梅.MCS-51单片机原理[M]. 北京:清华大学出版社,2008.
[4]刘同法, 陈忠平. 单片机基础与最小系统实践[M]. 北京:北京航空航天大学出版社.2008
[5]安宗权. 电动电子车速里程表分频电路设计[J].自动化与仪器仪表, 2001, 5: 39-44.
[6]何宏. 单片机原理与接口技术[M]. 北京:国防工业出版社.
[7]楼然苗.51系列单片机设计实例[M]. 北京:北京航空航天大学出版社.
[8] 张迎新. 单片机原理及应用(第二版)[M]. 北京:电子工业出版社,2009.
[9] 陈忠平, 曹巧媛, 曹琳琳. 单片机原理及接口[M]. 北京:清华大学出版社,2007.
[10] 李勋, 刘源, 李静东. 单片机实用教程[M]. 北京:北京航空航天大学出版社,2006.
[11] 郭天祥. 新概念51单片机C 语言教程[M]. 北京:电子工业出版社,2009.
附 录
主程序:
void main(void)
{
unsigned char i,j; //定义循环控制变量
unsigned char cnt=0; unsigned int temp=0;
unsigned int tab=0,wap=0,a; //定义无符号整形变量
double way = 0,sudu = 0; //定义浮点型数据,way 表示路程,sudu 表示速度 unsigned char led[6]; //用来存放要显示数字的各位数字
init_timer1(); //计数器初始化
while(1)
{
if((TH1==0x25)&&(TL1>=0xed)) //第9709个脉冲来临时将计数器清零 { TH1=0x00; } TL1=0x00; sudu=0; //速度清零
temp=TH1;
temp=temp
way=temp*PI*DIA/1000.0; //车子行驶的路程存入浮点型变量way 中
while(p3_2==1); //等待INT 0变低
TR0=1;
while(p3_2==0); //等待INT 0变高 while(p3_2==1); //等待INT 0变低 temp=temp|TL1; //将TH1和TL1中数据合到一个整形变量temp 中
TR0=0;
a=TH0;
a=a
}
wap=sudu*10; //将速度数据转化为整形,最低位表示十分位,其次为个位,十位
tab=way*10; //将路程数据转化为整形,最低位表示百米, 其次表示千米,万米 函数名称:延时子程序
延时子程序的功能是产生有一个延时,是得到的速度里程在数码管上显示。
void delay(unsigned int dat) //延时大小由形参的大小决定
{ unsigned int k,j;
for(k=0;k
{
for(j=0;j
}
}
显示程序
显示程序的功能是将单片机计算得到的结果在延时程序的作用在显示在数码管上。 led[0]=wap%10; //速度十分位位上的数字存led[0]
led[1]=wap%100/10; //得出速度个位上的数字存led[1]
led[2]=wap/100; //得出速度十位上的数字存led[2]
led[3]=tab%10; //得出里程百米上的数字存led[3]
led[4]=tab%100/10; //得出里程千米上的数字存led[4]
led[5]=tab/100; //得出里程十千米上的数字存led[5]
for(j=0;j
for(i=0; i
{
P2=led_bit[i]; //把led[i]表示的位置的位选通 if((i==1)||(i==4))
{
P0=led_num[led[i]]&0x7f;
}
else
{
P0=led_num[led[i]]; //
}
delay(1);
}
//把相应位置的数显式出来,带小数点// 把相应位置的数显式出来,不带小数点 //延时一个微小时间
电子车速里程表的设计
摘 要
随着电子技术的迅猛发展,电子式里程表得以广泛应用,现在很多轿车仪表已经使用电子车速里程表。本设计介绍一种基于AT89C51单片机的智能电子里程表。该电子式里程表是一种数字式仪表,主要由车速表和里程表两部分组成,其传感器采用霍尔传感器的脉冲信号检测与转换。此里程表不仅可显示车辆行驶的总里程,也可显示一段时间的阶段里程,还可显示车速,以及实现超速报警等功能,并具有较强的再开发能力。
本文详细描述了利用霍尔传感器和AT89C51单片机开发测速系统的过程,重点对传感器在单片机下的硬件连接,软件编程以及各模块系统流程进行了详尽分析,对各部分的电路也一一进行了介绍,该系统可以方便的实现实时速度、里程的采集和显示,它使用起来相当方便,具有精度高、量程宽、灵敏度高、体积小、功耗低等优点,有利于我们日常生活和汽车生产业的发展,也可以当作测速处理模块嵌入其它系统中,作为其他主系统的辅助扩展。该系统结构简单,抗干扰能力强,适合于恶劣环境下进行速度里程测量,有广泛的应用前景。
关键词:AT89C51,数码管显示器,霍尔传感器,速度里程表
目 录
1 绪论 ........................................................................................................................................ 1
1.1 课题描述 . ........................................................................................................................ 1
1.2 基本工作原理及框图 . .................................................................................................... 1
2 相关芯片及硬件电路设计 .................................................................................................... 2
2.1 AT89C51芯片 . .............................................................................................................. 2
2.1.1 AT89C51的主要特性 . ........................................................................................... 2
2.1.2 AT89C51的管脚说明 . ........................................................................................... 3
2.2 霍尔速度传感器 ............................................................................................................. 4
2.2.1 霍尔传感器工作原理 .............................................................................................. 4
2.2.2 霍尔效应 .................................................................................................................. 4
2.2.3 霍尔元件 .................................................................................................................. 4
2.3 单片机最小系统及电路 ................................................................................................. 5
2.4 车速信号处理电路 ......................................................................................................... 6
2.5 显示电路 ......................................................................................................................... 8
2.5 系统原理图 ..................................................................................................................... 9
3 系统的软件及程序设计 ........................................................................................................ 9
3.1 主程序程序框图 ............................................................................................................. 9
3.2 调试及仿真 ................................................................................................................... 11
总 结 .................................................................................................................................. 12
致 谢 .................................................................................................................................. 13
参考文献 .................................................................................................................................. 14
附 录 .................................................................................................................................. 15
1 绪论
1.1 课题描述
随着电子技术的迅猛发展,电子式里程表得以广泛应用,现在很多轿车仪表已经使用电子车速里程表。以单片机为核心的智能电子里程表,不仅可以显示车辆行驶的总里程,还可以显示车速,以及实现超速报警等功能,并具有较强的再开发能力。本设计利用霍尔传感器开发测速系统,完成速度信号采集电路的设计。其次重点对传感器在单片机下的硬件连接,软件编程以及各模块系统流程进行了详尽分析。该系统可以方便的实现汽车速度、行驶里程的测量和显示,它使用起来相当方便,具有精度高、量程宽、灵敏度高、体积小、功耗低等优点,有利于我们日常生活和汽车生产业的发展,也可以当作测速处理模块嵌入其它系统中,作为其他主系统的辅助扩展。霍尔传感器与AT89C51结合实现最简测速系统,该系统结构简单,抗干扰能力强,适合于恶劣环境下进行速度里程测量,有广泛的应用前景。
1.2 基本工作原理及框图
根据系统的设计要求,利用矩形波触发脉冲代替霍尔传感器,从而对车轮转速进行模拟。选择单片机AT89C51为测控系统的核心来完成数据采集、处理、显示等功能。 该系统的总体设计思路如下:矩形波发生器产生矩形波脉冲发送到AT89C51单片机上,经过51单片机处理,将速度和里程在显示电路上显示,本系统显示器用6位共阴LED 数码管以动态扫描法实现。
按照系统设计功能的要求,确定系统由3个模块组成:主控制器、检测电路和显示电路[1]。
图1速度里程表的原理框图
本课题以是89C51单片机为核心设计的一种数字速度里程检测系统,系统整体硬件电路包括,传感器数据采集电路,速度里程显示电路,单片机主板电路等组成。系统框图主要由控制模块、外部信号及其检测装置、外部存储器、LED 显示组成。
速度里程表总体电路结构框图如图1所示。
2 相关芯片及硬件电路设计
2.1 AT89C51芯片
AT89C51是一种带4K 字节闪烁可编程可擦除只读存储器(FPEROM—Falsh Programmable and Erasable Read Only Memory)的低电压,高性能CMOS8位微处理器,俗称单片机[2]。该器件采用ATMEL 高密度非易失存储器制造技术制造,与工业标准的MCS-51指令集和输出管脚相兼容。由于将多功能8位CPU 和闪烁存储器组合在单个芯片中,ATMEL 的AT89C51是一种高效微控制器,为很多嵌入式控制系统提供了一种灵活性高且价廉的方案。AT89C51引脚图如图2所示。
图2 AT89C51引脚图
2.1.1 AT89C51的主要特性
与MCS-51 兼容;4K 字节可编程FLASH 存储器;寿命:1000写/擦循环;数据保
留时间:10年;全静态工作:0Hz-24MHz ;三级程序存储器锁定;128×8位内部RAM ;32可编程I/O线;两个16位定时器/计数器;5个中断源;可编程串行通道;低功耗的闲置和掉电模式;片内振荡器和时钟电路[3]。
2.1.2 AT89C51的管脚说明
VCC :供电电压。
GND :接地。
P0口:P0口为一个8位漏级开路双向I/O口,每脚可吸收8TTL 门电流。当P0口的管脚第一次写1时,被定义为高阻输入。P0能够用于外部程序数据存储器,它可以被定义为数据/地址的低八位。在FIASH 编程时,P0 口作为原码输入口,当FIASH 进行校验时,P0输出原码,此时P0外部必须接上拉电阻[4]。
P1口:P1口是一个内部提供上拉电阻的8位双向I/O口,P1口缓冲器能接收输出4TTL 门电流。P1口管脚写入1后,被内部上拉为高,可用作输入,P1口被外部下拉为低电平时,将输出电流,这是由于内部上拉的缘故。在FLASH 编程和校验时,P1口作为低八位地址接收。
P2口:P2口为一个内部上拉电阻的8位双向I/O口,P2口缓冲器可接收,输出4个TTL 门电流,当P2口被写“1”时,其管脚被内部上拉电阻拉高,且作为输入。并因此作为输入时,P2口的管脚被外部拉低,将输出电流。这是由于内部上拉的缘故。P2口当用于外部程序存储器或16位地址外部数据存储器进行存取时,P2口输出地址的高八位。在给出地址“1”时,它利用内部上拉优势,当对外部八位地址数据存储器进行读写时,P2口输出其特殊功能寄存器的内容。P2口在FLASH 编程和校验时接收高八位地址信号和控制信号。
P3口:P3口管脚是8个带内部上拉电阻的双向I/O口,可接收输出4个TTL 门电流。当P3口写入“1”后,它们被内部上拉为高电平,并用作输入。作为输入,由于外部下拉为低电平,P3口将输出电流(ILL )这是由于上拉的缘故。
RST :复位输入。当振荡器复位器件时,要保持RST 脚两个机器周期的高电平时间。ALE/PROG:当访问外部存储器时,地址锁存允许的输出电平用于锁存地址的低位字节。在FLASH 编程期间,此引脚用于输入编程脉冲。在平时,ALE 端以不变的频率周期输出正脉冲信号,此频率为振荡器频率的1/6。因此它可用作对外部输出的脉冲或用于定
时目的。然而要注意的是:每当用作外部数据存储器时,将跳过一个ALE 脉冲。如想禁止ALE 的输出可在SFR8EH 地址上置0。此时, ALE 只有在执行MOVX ,MOVC 指令是ALE 才起作用。另外,该引脚被略微拉高。如果微处理器在外部执行状态ALE 禁止,置位无效。
XTAL1:反向振荡放大器的输入及内部时钟工作电路的输入。
XTAL2:来自反向振荡器的输出[5]。
2.2 霍尔速度传感器
2.2.1 霍尔传感器工作原理
霍尔传感器是根据霍尔效应制作的一种磁场传感器霍尔效应是磁电效应的一种,这一现象是霍尔(A.H.Hall ,1855—1938)于1879年在研究金属的导电机构时发现的。后来发现半导体、导电流体等也有这种效应,而半导体的霍尔效应比金属强得多,利用这现象制成的各种霍尔元件,广泛地应用于工业自动化技术、检测技术及信息处理等方面。霍尔效应是研究半导体材料性能的基本方法。通过霍尔效应实验测定的霍尔系数,能够判断半导体材料的导电类型、载流子浓度及载流子迁移率等重要参数[6]。
2.2.2霍尔效应
如图3所示为霍尔效应示意图。 在半导体薄片两端通以控制电流I ,并在薄片的垂直方向施加磁感应强度为B 的匀强磁场,则在垂直于电流和磁场的方向上,将产生电势差为UH 的霍尔电压。
图3霍尔效应示意图
2.2.3霍尔元件
根据霍尔效应,人们用半导体材料制成的元件叫霍尔元件。它具有对磁场敏感、结
构简单、体积小、频率响应宽、输出电压变化大和使用寿命长等优点,因此,在测量、自动化、计算机和信息技术等领域得到广泛的应用,原理图如图4所示。
图4霍尔效应原理图
2.3 单片机最小系统及电路
单片机最小系统, 或者称为最小应用系统, 是指用最少的元件组成的单片机可以工作的系统。对51系列单片机来说,最小系统一般应该包括:单片机、晶振电路、上电复位电路。下面给出一个51单片机的最小系统电路图[7],如图5所示。
图5 51单片机最小系统
复位电路:由电容串联电阻构成,由图并结合“电容电压不能突变”的性质,可以知道, 当系统一上电,RST 脚将会出现高电平,并且这个高电平持续的时间由电路的RC 值来决定。典型的51单片机当RST 脚的高电平持续两个机器周期以上就将复位。所以,
适当组合RC 的取值就可以保证可靠的复位。一般电容C 取10uF ,电阻R 取8.2K 。也有其他取法的,原则就是要让RC 组合可以在RST 脚上产生不少于2个机周期的高电平。如图5所示为复位电路。
图5复位电路
晶振电路:典型的晶振取11.0592MHz (因为可以准确地得到9600波特率和19200波特率,用于有串口通讯的场合)/12MHz(产生精确的uS 级时歇,方便定时操作)。
2.4 车速信号处理电路
车速里程表是用来指示汽车行驶速度和累计行驶里程的仪表,由车速表和里程表两部分组成,普通车速表一般为磁感应式,其结构如图6所示。
车速表主要由永久磁铁、铝罩、护罩、刻度盘和表针等组成,永久磁铁与主动轴紧固在一起,主动轴由来自变速器输出轴的挠性软轴驱动,指针、铝罩固接在中心轴上,刻度盘固定在表外壳上。不工作时,铝罩在游丝的作用下, 使指针位于“0”位。当汽车行驶时,软轴驱动主动轴带动“U ”形永久磁铁旋转,在铝罩上感应出电涡流而产生磁场,这个磁场与永久磁铁的旋转磁场相互作用产生钮矩,使铝罩向永久磁铁旋转方向转过一定角度,直到由游丝的弹力所产生的反方向扭矩与之平衡。车速越高,产生的扭矩越大,指针在刻度盘上摆动的角度就越大,即指示的车速就越高。里程表主要由蜗轮蜗杆和数字轮组成,当汽车行驶时,主动轴经三对蜗轮蜗杆驱动数字轮上的最右侧的第一个数字轮(一般为1/10Km),任一个数字轮与左侧相邻的数字轮传动比都为10:1,这样显示的数字呈十进位递增,便自动累积了汽车总的行驶里程。
图6 汽车速度里程表
由于霍尔元件具有在静止状态下感受磁场的能力,且结构简单,形小体轻,频带宽(可从直流到微波) ,动态特性好、动态范围大,寿命长和可进行非接触测量等优点,所以选择霍尔传感器作为本次设计的要素。里程、速度等都是由霍尔元器件测量。将所测的速度与累计里程数显示出来,主要是将传感器输入到单片机的脉冲信号的频率(传感器将不同车速转变成不同频率的脉冲信号)实时地测量出来,然后通过单片机计算出速度和里程,再将所得的数据存储到串口数据存储器,并由LED 显示模块交替显示所测速度与里程。
由于车速信号为脉冲信号,由图7可知,此输入信号高电平不低于8V ,低电平不高于0.3V 。因此将信号处理电路的门槛电压设计约为1.2V 左右,以满足信号输入要求。信号低于1.2V 时,三极管不导通,F1端为低电平,从而实现了单片机的信号输入。
图7车速信号输入电路图
2.5 显示电路
液晶显示模块具有体积小、功耗低、显示内容丰富等特点,现在字符型液晶显示模块已经是单片机应用设计中最常用的信息显示器件了。本里程表使用常见的1602字符型LCD 模块。1602可以显示2行16个字符,有8位数据总线D0-D7和RS 、R/W、E 三个控制端口,工作电压为5V ,并且带有字符对比度调节和背光[8]。LCD 液晶显示模块如图8所示。
图8 LCD 液晶显示模块
本设计中采用7SEG-MPX8-CC-BLUE 八位共阴极数码管(蓝色),显示速度和路程数据。显示电路如图9所示。
图9 显示电路
2.5 系统原理图
速度里程表设计电路图如图10所示, 控制器使用单片机AT89C51, 霍尔传感器用信号发生器代替,矩形波触发器作为发生装置,用LED 实现速度和里程的显示。
图10速度里程表计设计电路图
3 系统的软件及程序设计
整个系统的功能是由硬件电路配合软件来实现的,当硬件基本定型后,软件的功能也就基本定下来了。首先要根据系统的总体功能选择一种最合适的监控程序结构,然后根据实时性的要求,合理地安排监控软件和各执行模块之间地调度关系。用C 语言完成对设计的软件编程,程序先对各变量进行声明和定义,之后是延时子程序,在进行定时器、计数器的初始化。在主函数中,先定义变量,程序的主体是由计数器产生的脉冲分别转换为速度和里程,并将各个位的数字送到对应的数码管的位,驱动显示[9]。
3.1主程序程序框图
系统程序主要采用顺序结构,包括主程序,延时子程序,速度、里程计算子程序和
显示程序等。
单片机CPU 接收到传感器感测到的脉冲(即锯齿波触发器产生的脉冲), 并通过计数器对脉冲个数进行计数。单片机执行运算程序对所记的脉冲个数运算后,得到速度和里程,经CPU 处理后在显示程序的驱动下在显示器中显示[10]。延时程序的作用是是输出数据在显示器上做短暂的停留,易于观察。系统的主流程图与延时服务子程序如图11、12所示。
图11 系统主流程图 图12 延时子程序图
函数名称:主函数
说明:因为用三位数码管表示速度,在里程小于2Km 时速度增加,当里程大于2Km 时,速度不变,保持在20Km/h。当第9709个脉冲来临时要将计数器清零,并且速度也要清零 。
3.2 调试及仿真
Proteus 中的电路仿真是在ISIS 原理图设计模块中延续下来的,利用Proteus 的交互式仿真功能,用户可以清楚的观察电路的工作情况。Proteus 原理图仿真分析的首要任务是从元件库中选取绘制电路所需元件,查找所需元件,将元件放置在绘图区,同时编辑元件的参数,然后连线。再利用电器规则对设计进行检查直到通过其检查为止,在源代码通过编译无误后就可以进行仿真。经软件调试-仿真器proteus 调试通过,并烧录芯片,得到所要求的设计结果[11]。如图11试验成功。
图11 速度里程表仿真图
说明:此时速度不变为20Km/h(后三位),里程为8.3Km (前三位)。
总 结
该课题的主要任务是开发一个以MCS-51单片机为核心的电子车速度里程表。本设计主要分为硬件部分和软件部分,硬件部分着重考虑硬件电路的简单性,故尽可能简化硬件电路,节省线路板的空间,达到硬件电路最优化设计。软件采用C 语言编写,采用模块化设计思想,程序可读性强。通过仿真、实验验证了系统的可行,能满足设计要求,达到设计的指标,实现对自行车里程/速度的计算功能,并用LED 显示。
通过这次课程设计,我不仅熟练的掌握了用protues 绘制电路图的过程,更是学会了用Keil 编写运行C 语言的能力。锻炼了自己分析问题,自己动手解决问题的能力。这次课程设计不仅仅是对平时知识积累运用的过程,更是发现新知识、把知识应用到实践的过程。
致 谢
在此次单片机的课程设计中,我经过不懈女里完成了这次的单片机课程设计。我要感谢我的指导老师张具琴老师的热心指导和李文方老师的悉心教导。在单片机的课程设计中,我知道了我还有好多不足之处,要想走的更远,只有更加努力地去学习,才能不断进步。另外,通过这次课程设计,在张具琴老师一丝不苟的态度和认真指导之下,让我学到了好多课本上学不到的知识,明白了更多的道理。
最终我成功的完成了此次课程设计。最后我要感谢我的大学任课老师和同学,谢谢一直有你们的陪伴,在此向各位老师以及同学们表示衷心的感谢!
参考文献
[1]李群芳. 单片机原理接口技术与应用(第2版)[M]. 北京:清华大学出版社,2010.
[2]李姿, 宋洋. 基于单片机的智能车速里程表的设计[J].黑龙江科技信息,2011,12.
[3]万福君, 潘松峰, 王秀梅.MCS-51单片机原理[M]. 北京:清华大学出版社,2008.
[4]刘同法, 陈忠平. 单片机基础与最小系统实践[M]. 北京:北京航空航天大学出版社.2008
[5]安宗权. 电动电子车速里程表分频电路设计[J].自动化与仪器仪表, 2001, 5: 39-44.
[6]何宏. 单片机原理与接口技术[M]. 北京:国防工业出版社.
[7]楼然苗.51系列单片机设计实例[M]. 北京:北京航空航天大学出版社.
[8] 张迎新. 单片机原理及应用(第二版)[M]. 北京:电子工业出版社,2009.
[9] 陈忠平, 曹巧媛, 曹琳琳. 单片机原理及接口[M]. 北京:清华大学出版社,2007.
[10] 李勋, 刘源, 李静东. 单片机实用教程[M]. 北京:北京航空航天大学出版社,2006.
[11] 郭天祥. 新概念51单片机C 语言教程[M]. 北京:电子工业出版社,2009.
附 录
主程序:
void main(void)
{
unsigned char i,j; //定义循环控制变量
unsigned char cnt=0; unsigned int temp=0;
unsigned int tab=0,wap=0,a; //定义无符号整形变量
double way = 0,sudu = 0; //定义浮点型数据,way 表示路程,sudu 表示速度 unsigned char led[6]; //用来存放要显示数字的各位数字
init_timer1(); //计数器初始化
while(1)
{
if((TH1==0x25)&&(TL1>=0xed)) //第9709个脉冲来临时将计数器清零 { TH1=0x00; } TL1=0x00; sudu=0; //速度清零
temp=TH1;
temp=temp
way=temp*PI*DIA/1000.0; //车子行驶的路程存入浮点型变量way 中
while(p3_2==1); //等待INT 0变低
TR0=1;
while(p3_2==0); //等待INT 0变高 while(p3_2==1); //等待INT 0变低 temp=temp|TL1; //将TH1和TL1中数据合到一个整形变量temp 中
TR0=0;
a=TH0;
a=a
}
wap=sudu*10; //将速度数据转化为整形,最低位表示十分位,其次为个位,十位
tab=way*10; //将路程数据转化为整形,最低位表示百米, 其次表示千米,万米 函数名称:延时子程序
延时子程序的功能是产生有一个延时,是得到的速度里程在数码管上显示。
void delay(unsigned int dat) //延时大小由形参的大小决定
{ unsigned int k,j;
for(k=0;k
{
for(j=0;j
}
}
显示程序
显示程序的功能是将单片机计算得到的结果在延时程序的作用在显示在数码管上。 led[0]=wap%10; //速度十分位位上的数字存led[0]
led[1]=wap%100/10; //得出速度个位上的数字存led[1]
led[2]=wap/100; //得出速度十位上的数字存led[2]
led[3]=tab%10; //得出里程百米上的数字存led[3]
led[4]=tab%100/10; //得出里程千米上的数字存led[4]
led[5]=tab/100; //得出里程十千米上的数字存led[5]
for(j=0;j
for(i=0; i
{
P2=led_bit[i]; //把led[i]表示的位置的位选通 if((i==1)||(i==4))
{
P0=led_num[led[i]]&0x7f;
}
else
{
P0=led_num[led[i]]; //
}
delay(1);
}
//把相应位置的数显式出来,带小数点// 把相应位置的数显式出来,不带小数点 //延时一个微小时间