基于单片机的智能速度里程表的设计_第1页
基于单片机的智能速度里程表的设计_第2页
基于单片机的智能速度里程表的设计_第3页
基于单片机的智能速度里程表的设计_第4页
基于单片机的智能速度里程表的设计_第5页
已阅读5页,还剩6页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

摘要随着时代的进步和开展,单片机技术已经普及到我们生活、工作、科研、各个领域,已经成为一种比拟成熟的技术,本文主要介绍了一个基于AT89C51单片机的速度里程系统,详细描述了利用霍尔传感器开发测速系统的过程,重点对传感器在单片机下的硬件连接,软件编程以及各模块系统流程进行了详尽分析,对各局部的电路也一一进行了介绍,该系统可以方便的实现实现速度、里程的采集和显示,它使用起来相当方便,具有精度高、量程宽、灵敏度高、体积小、功耗低等优点,有利于我们日常生活和汽车生产业的开展,也可以当作测速处理模块嵌入其它系统中,作为其他主系统的辅助扩展。霍尔传感器与AT89C51结合实现最简测速系统,该系统结构简单,抗干扰能力强,适合于恶劣环境下进行速度里程测量,有广泛的应用前景。关键词:单片机AT89C51;速度检测;霍尔传感器;速度里程表目录TOCTOC1绪论1112系统设计简介32.1速度里程表简介 32.2设计目的及要求 32.3设计方案论证 42.4硬件设计电路 43设计语言及软件介绍63.1C语言介绍 63.2软件介绍 663.2.2KeilC51 774系统软件设计94.1概述 94.2系统程序设计模块及流程图 91012134.3调试及仿真 135设计总结和体会156参考文献161绪论传统的车速表是机械式的,典型的机械式里程表连接一根软轴,软轴内有一根钢丝缆,软轴另一端连接到变速器某一个齿轮上,齿轮旋转带动钢丝缆旋转,钢丝缆带动里程表罩圈内一块磁铁旋转,罩圈与指针联接并通过游丝将指针置于零位,磁铁旋转速度的快慢引起磁力线大小的变化,平衡被打破指针因此被带动。这种车速里程表简单实用,被广泛用于大小型汽车上。不过,随着电子技术的开展,现在很多轿车仪表已经使用电子车速表,常见的一种是从变速器上的速度传感器获取信号,通过脉冲频率的变化使指针偏转或者显示数字里程计是由假设干个计数转鼓及其转动装置组成的。为了使用方便,有的车速里程表同时设有累计里程计和区间里程计,累计里程计用来记录汽车累计行驶里程,区间里程计用来记录汽车单程行驶里程。区间里程计有一个归零按钮,可以随时复位至零,重新累计。数字温度计采用进口芯片组装精度高、高稳定性,误差≤0.5%,内电源、微功耗、不锈钢外壳,防护巩固,美观精致。数字温度计采用进口高精度、低温漂、超低功耗集成电路和宽温型液晶显示器,内置高能量电池连续工作≥5年无需敷设供电电缆,是一种精度高、稳定性好、适用性极强的新型现场温度显示仪。是传统现场指针双金属温度计的理想替代产品,广泛应用于各类工矿企业,大专院校,科研院所。温度数我们日常生产和生活中实时在接触到的物理量,但是它是看不到的,仅凭感觉只能感觉到大概的温度值,传统的指针式的温度计虽然能指示温度,但是精度低,使用不够方便,显示不够直观,数字温度计的出现可以让人们直观的了解自己想知道的温度到底是多少度。数字温度计采用温度敏感元件也就是温度传感器〔如铂电阻,热电偶,半导体,热敏电阻等〕,将温度的变化转换成电信号的变化,如电压和电流的变化,温度变化和电信号的变化有一定的关系,如线性关系,一定的曲线关系等,这个电信号可以使用模数转换的电路即AD转换电路将模拟信号转换为数字信号,数字信号再送给处理单元,如单片机或者PC机等,处理单元经过内部的软件计算将这个数字信号和温度联系起来,成为可以显示出来的温度数值,如25.0摄氏度,然后通过显示单元,如LED、LCD或者电脑屏幕等显示出来给人观察。这样就完成了数字温度计的根本测温功能。数字温度计根据使用的传感器的不同,AD转换电路,及处理单元的不同,它的精度,稳定性,测温范围等都有区别,这就要根据实际情况选择符合规格的数字温度计。数字温度计有手持式,盘装式,及医用的小体积的等等。2系统设计简介2.1速度里程表简介\o"编辑本段"汽车车速里程表分为滚轮计数器和点距液晶屏式两种,由指示汽车行驶速度的车速表和记录汽车所行驶过距离的里程计组成的,二者装在共同的壳体中,并由同一根轴驱动。普通车速表一般为磁感应式。滚轮计数器是过去常用的纯机械式仪表,通过一根软轴,一头连到变速箱输出轴,另一头连到里程表;而现在更常用的电子式仪表,它一般是在变速箱输出轴或车轮上装一个转速传感器,用读出的转速通过控制模块内嵌的计算公式来换算成车速以及历程。不管是哪种方式,归根结底,数据都是来自于传动系统输出端的转速〔变速箱输出轴或车轮〕,知道了车轮的转速,比方每分钟转多少圈,再将车轮的周长〔也就是车轮转动一圈走过的距离〕算上,车速就出来了,里程也是同样的道理。图速度里程表2.2设计目的及要求1、了解并掌握 Proteus软件、KEIL软件,并能熟练的使用其进行仿真;2、培养学生综合运用前修课程所学的知识进行系统性的训练;3、养实际动手能力培以及合作的能力;4、利用温霍尔度传感器测量车轮的速度。5、测量速度里程由LED数码管直读显示。2.3设计方案论证根据系统的设计要求,利用矩形波触发脉冲代替霍尔传感器,从而对车轮转速进行模拟。选择单片机AT89C51为测控系统的核心来完成数据采集、处理、显示等功能。 该系统的总体设计思路如下:矩形波发生器产生矩形波脉冲发送到AT89C51单片机上,经过51单片机处理,将速度和里程在显示电路上显示,本系统显示器用6位共阴LED数码管以动态扫描法实现。按照系统设计功能的要求,确定系统由3个模块组成:主控制器、检测电路和显示电路。本课题以是89C51单片机为核心设计的一种数字速度里程检测系统,系统整体硬件电路包括,传感器数据采集电路,速度里程显示电路,单片机主板电路等组成。系统框图主要由控制模块、外部信号及其检测装置、外部存储器、LED显示组成。速度里程表总体电路结构框图如图2.1所示。2.4硬件设计电路速度里程表设计电路图如图2.2所示,控制器使用单片机AT89C51,矩形波触发器作为发生装置,用LED实现速度和里程的显示。图2.2速度里程表计设计电路图3设计语言及软件介绍3.1C语言介绍C语言是一种计算机程序设计语言,它既具有高级语言的特点,又具有汇编语言的特点。它由美国贝尔研究所的D.M.Ritchie于1972年推出,1978年后,C语言已先后被移植到大、中、小及微型机上,它可以作为工作系统设计语言,编写系统应用程序,也可以作为应用程序设计语言,编写不依赖计算机硬件的应用程序。它的应用范围广泛,具备很强的数据处理能力,不仅仅是在软件开发上,而且各类科研都需要用到C语言,适于编写系统软件,三维,二维图形和动画,具体应用比方单片机以及嵌入式系统开发。3.2软件介绍Proteus软件Proteus软件是英国Labcenterelectronics公司出版的EDA工具软件〔该软件中国总代理为广州风标电子技术〕。它不仅具有其它EDA工具软件的仿真功能,还能仿真单片机及外围器件。它是目前最好的仿真单片机及外围器件的工具。虽然目前国内推广刚起步,但已受到单片机爱好者、从事单片机教学的教师、致力于单片机开发应用的科技工作者的青睐。Proteus是世界上著名的EDA工具(仿真软件),从原理图布图、代码调试到单片机与外围电路协同仿真,一键切换到PCB设计,真正实现了从概念到产品的完整设计。是目前世界上唯一将电路仿真软件、PCB设计软件和虚拟模型仿真软件三合一的设计平台,其处理器模型支持8051、HC11、PIC10/12/16/18/24/30/DsPIC33、AVR、ARM、8086和MSP430等,2023年又增加了Cortex和DSP系列处理器,并持续增加其他系列处理器模型。在编译方面,它也支持IAR、Keil和MPLAB等多种编译器。KeilC51KeilC51是美国KeilSoftware公司出品的51系列兼容单片机C语言软件开发系统,与汇编相比,C语言在功能上、结构性、可读性、可维护性上有明显的优势,因而易学易用。KeilC51软件提供丰富的库函数和功能强大的集成开发调试工具,全Windows界面。另外重要的一点,只要看一下编译后生成的汇编代码,就能体会到Keil的优势。KeilC51工具包的整体结构,uVision与Ishell分别是C51forWindows和forDos的集成开发环境(IDE〕,可以完成编辑、编译、连接、调试、仿真等整个开发流程。开发人员可用IDE本身或其它编辑器编辑C或汇编源文件。然后分别由C51及C51编译器编译生成目标文件〔.OBJ〕。目标文件可由LIB51创立生成库文件,也可以与库文件一起经L51连接定位生成绝对目标文件(.ABS〕。ABS文件由OH51转换成标准的Hex文件,以供调试器dScope51或tScope51使用进行源代码级调试,也可由仿真器使用直接对目标板进行调试,也可以直接写入程序存贮器如EPROM中。复位电路单片机最小系统,或者称为最小应用系统,是指用最少的元件组成的单片机可以工作的系统。

对51系列单片机来说,最小系统一般应该包括:单片机、晶振电路、复位电路.

下面给出一个51单片机的最小系统电路图。图3.1复位电路图3.251单片机最小系统复位电路:由电容串联电阻构成,由图并结合“电容电压不能突变〞的性质,可以知道,当系统一上电,RST脚将会出现高电平,并且这个高电平持续的时间由电路的RC值来决定。典型的51单片机当RST脚的高电平持续两个机器周期以上就将复位,所以,适当组合RC的取值就可以保证可靠的复位.一般教科书推荐C取10u,R取8.2K.当然也有其他取法的,原那么就是要让RC组合可以在RST脚上产生不少于2个机周期的高电平。至于如何具体定量计算,可以参考电路分析相关书籍。晶振电路:典型的晶振取11.0592MHz(因为可以准确地得到9600波特率和19200波特率,用于有串口通讯的场合)/12MHz(产生精确的uS级时歇,方便定时操作)。4系统软件设计4.1概述整个系统的功能是由硬件电路配合软件来实现的,当硬件根本定型后,软件的功能也就根本定下来了。从软件的功能不同可分为两大类:一是监控软件〔主程序〕,它是整个控制系统的核心,专门用来协调各执行模块和操作者的关系。二是执行软件〔子程序〕,它是用来完成各种实质性的功能如测量、计算、显示、通讯等。每一个执行软件是一个小的功能执行模块。这里将各执行模块一一列出,并为每一个执行模块进行功能定义和接口定义。各执行模块规划好后,就可以规划监控程序了。首先要根据系统的总体功能选择一种最适宜的监控程序结构,然后根据实时性的要求,合理地安排监控软件和各执行模块之间地调度关系。用C语言完成对设计的软件编程,程序先对各变量进行声明和定义,之后是延时子程序,在进行定时器、计数器的初始化。在主函数中,先定义变量,程序的主体是由计数器产生的脉冲分别转换为速度和里程,并将各个位的数字送到对应的数码管的位,驱动显示。4.2系统程序设计模块及流程图系统程序主要采用顺序结构,包括主程序,延时子程序,速度、里程计算子程序和显示程序等。单片机CPU接收到传感器感测到的脉冲〔即锯齿波触发器产生的脉冲〕,并通过计数器对脉冲个数进行计数。单片机执行运算程序对所记的脉冲个数运算后,得到速度和里程,经CPU处理后在显示程序的驱动下在显示器中显示。延时程序的作用是是输出数据在显示器上做短暂的停留,易于观察。程序的执行分两种情况:在里程数小于2Km时,速度和里程都增加;当里程数大于2Km时,速度那么保持不变,里程继续增加。开始开始变量声明变量声明初始化初始化Yes判断Yes判断nono计算程序计算程序处理程序处理程序显示程序显示程序延时程序延时程序结束结束图系统流程图主程序的主要功能是定义变量并初始化计数器,对计数脉冲进行处理、计算。/********************************************************************函数名称:主函数说明:因为用三位数码管表示速度,在里程小于2Km时速度增加,当里程大于2Km时,速度不变,保持在20Km/h。当第9709个脉冲来临时要将计数器清零,并且速度也要清零。*********************************************************************voidmain(void){unsignedchari,j;//定义循环控制变量 unsignedcharcnt=0; unsignedinttemp=0;unsignedinttab=0,wap=0,a;//定义无符号整形变量doubleway=0,sudu=0;//定义浮点型数据,way表示路程,sudu表示速度unsignedcharled[6];//用来存放要显示数字的各位数字init_timer1();//计数器初始化while(1){ if((TH1==0x25)&&(TL1>=0xed))//第9709个脉冲来临时将计数器清零 {TH1=0x00; TL1=0x00; sudu=0;//速度清零 }temp=TH1;temp=temp<<8;//将TH1中数字左移8位再赋给temp temp=temp|TL1;//将TH1和TL1中数据合到一个整形变量temp中way=temp*PI*DIA/1000.0;//车子行驶的路程存入浮点型变量way中while(p3_2==1);//等待变低TR0=1; while(p3_2==0);//等待变高 while(p3_2==1);//等待变低TR0=0;a=TH0; a=a<<8; a=a||TL1; a=a*0.001; sudu=2*PI/a; wap=sudu*10;} wap=sudu*10;//将速度数据转化为整形,最低位表示十分位,其次为个位,十位tab=way*10;//将路程数据转化为整形,最低位表示百米,其次表示千米,万米延时子程序延时子程序的功能是产生有一个延时,是得到的速度里程在数码管上显示。*********************************************************************函数名称:延时子程序*********************************************************************voiddelay(unsignedintdat)//延时大小由形参的大小决定{unsignedintk,j;for(k=0;k<dat;k++){for(j=0;j<2000;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<10;j++)//在显示上消耗时间,使三个数码管显示不中断{for(i=0;i<6;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);//延

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论