毕业设计(论文)基于单片机的自行车里程表的设计.doc

上传人:仙人指路1688 文档编号:3981115 上传时间:2023-03-30 格式:DOC 页数:42 大小:526KB
返回 下载 相关 举报
毕业设计(论文)基于单片机的自行车里程表的设计.doc_第1页
第1页 / 共42页
毕业设计(论文)基于单片机的自行车里程表的设计.doc_第2页
第2页 / 共42页
毕业设计(论文)基于单片机的自行车里程表的设计.doc_第3页
第3页 / 共42页
毕业设计(论文)基于单片机的自行车里程表的设计.doc_第4页
第4页 / 共42页
毕业设计(论文)基于单片机的自行车里程表的设计.doc_第5页
第5页 / 共42页
点击查看更多>>
资源描述

《毕业设计(论文)基于单片机的自行车里程表的设计.doc》由会员分享,可在线阅读,更多相关《毕业设计(论文)基于单片机的自行车里程表的设计.doc(42页珍藏版)》请在三一办公上搜索。

1、摘 要本文介绍的速度与里程表设计以STC89C52单片机系统和霍尔传感器为核心。传感器将不同车速转变成的不同频率的脉冲信号输入到单片机进行控制与计算,再采用LCD液晶显示模块进行显示,使得电动自行车的速度与里程数据能直观的显示给使用者。本系统由霍尔传感器、单片机ST8C9C52RC、LCD1602液晶显示模块、数据存储电路和键盘控制组成。通过单片机的设置可对霍尔传感器输入的脉冲信号进行计数和处理,这样能精确地算出加到引脚的单位时间内检测到的脉冲数;设计里程和速度显示采用LCD模块,里程数通过EEPROM来存储。本文先对里程表设计当中所需设备作了详细介绍,对设计中存在的问题进行了说明;而后对硬件

2、和软件部分的设计和实现作了认真的分析;然后给出了系统的建模过程及相应的系统模型,在此基础上进行了控制仿真,并对仿真效果进行了比较。本里程表的设计具有结构简单,成本低廉,显示清晰,稳定可靠等优点。并且可进行扩充,加入时速表的功能,更加方便的了解你现在所处的情况。关键词:STC89单片机 LCD1602液晶显示 霍尔传感器 EEPROM存储器目 录第1章 绪论11.1 课题背景、发展及意义11.2 系统设计概述11.3 各章节的安排2第2章 自行车里程表的设计方法与基本原理32.1 霍尔传感器32.2 STC89C52单片机32.3 频率测量法42.4 LCD160252.5 存储器EEPROM5

3、2.6 键盘控制6第3章 硬件实现的设计方法与原理73.1 系统概述73.2 功能实现83.3 系统总框图83.4 各部分硬件图8341 显示部分8342 按键控制部分11343 霍尔传感器12344 复位电路13345 电源电路13346 EEPROM掉电存储器电路14第4章 自行车里程表软件实现方法154.1 软件编程实现15411 系统软件框图15412 数据处理16413 键盘控制174.2 程序源代码与流程图18421 程序流程图18422 程序源代码194.3 PCB印刷电路板图40第5章 总结41参考文献42致 谢431 霍尔传感器霍尔传感器是一种能实现磁电转换的传感器,用它们可

4、以检测磁场及其变化。霍尔传感器具有许多优点,它们的结构牢固,体积小,寿命长,安装方便,功耗小,频率高,耐震动,不怕灰尘、油污及盐雾等的污染或腐蚀。霍尔开关器件具有无触点、输出波形清晰、无抖动、位置重复精度高等优点。 霍尔效应:在一块半导体薄片上,其长度为,宽度为,厚度为,当它被置于磁感应强度的磁场中,如果在它的相对的两边通以控制电流,且磁场方向与电流方向正交,则在半导体另外两端将产生一个大小与控制电流方向和磁感应强度乘积成正比的电势h,即Uh=KhIB,其中h为霍尔元件的灵敏度。该电势就称为霍尔电势,半导体薄片就是霍尔元件。由于霍尔元件具有在静止状态下感受磁场的能力,且结构简单,形小体轻,动态

5、特性好、动态范围大,寿命长和可进行非接触测量等优点,故在检测技术、自动控制技术和信息处理等方面得到日益广泛应用。霍尔传感器在未来发展中的趋势将是高灵敏度、高精度和高稳定度,它将在微电子技术发展的基础上更加飞速的发展。 2.2 STC89C52单片机单片机要正常运行,必须具备一定的硬件条件,其中最主要的就是三个基本条件:1.电源正常;2.时钟正常;3.复位正常。在STC89C51单片机的40个引脚中:电源引脚2根,晶振引脚2根,控制引脚4根,可编程输入输出引脚32根。工作电源:电源是单片机工作的动力源泉,对应的接线方法为:40脚(VCC)电源引脚,工作时接+5V电源,20脚(GND)为接地线。

6、复位电路:由电容串联电阻构成,由图并结合电容电压不能突变的性质,可以知道,当系统一上电,RST脚将会出现高电平,并且,这个高电平持续的时间由电路的RC值来决定.典型的51单片机当RST脚的高电平持续两个机器周期以上就将复位,所以,适当组合RC的取值就可以保证可靠的复位.一般教科书推荐C取10u,R取8.2K.当然也有其他取法的,原则就是要让RC组合可以在RST脚上产生不少于2个机器周期的高电平.晶振电路:时钟电路为单片机产生时序脉冲,单片机所有运算与控制过程都是在统一的时序脉冲的驱动下的进行的,如果单片机的时钟电路停止工作(晶振停振),那么单片机也就停止运行了。当采用内部时钟时,连接方法如下图

7、所示,在晶振引脚XTAL1(19脚)和XTAL2(18脚)引脚之间接入一个晶振,两个引脚对地分别再接入一个电容即可产生所需的时钟信号,电容的容量一般在几十皮法,如30PF。典型的晶振取11.0592MHz(因为可以准确地得到9600波特率和19200波特率,用于有串口通讯的场合)/12MHz(产生精确的uS级时歇,方便定时操作)控制引脚EA接法。EA/VPP(31脚)为内外程序存储器选择控制引脚,当EA为低电位时,单片机从外部程序存储器取指令;当EA接高电平时,单片机从内部程序存储器取指令。AT89S51单片机内部有4KB可反复擦写1000次以上的程序存储器,因此我们把EA接到+5V高电平,让

8、单片机运行内部的程序,我们就可以通过反复烧写来验证我们的程序了。2.3 频率测量法用于频率测量的方法有很多,频率测量的准确度主要取决于所测的频率、范围以及被测对象的特点.而测量所能达到的精度,不仅仅取决于作为标准器使用的频率源的精度,也取决于所使用的测量设备和测量方法.该设计能实时地将所测的速度与累计里程数显示出来,主要是将传感器输入到单片机的脉冲信号的频率(传感器将不同车速转变成不同频率的脉冲信号)实时地测量出来,然后通过单片机计算出速度和里程,再将所得的数据存储到EEPROM数据存储器,并由LCD1602显示模块显示所测瞬时速度、平均速度、加速度与里程等。本设计的里程数的算法是一种累计的算

9、法(固定脉冲接收数为一圈,从而计算瞬时速度和平均速度)。设计时,应综合考虑测速精度和系统反应时间。本设计用测量脉冲频率来计算历程,因而具有较高的测距精度。在计算里程时取了自行车的理想状态。实际中,误差控制在几米之内,相对于整个里程来说不是很大。另外,还应尽量保证其他子模块在编程时的通用性和高效性。本设计的速度和里程值采用7位显示,并包含3个小数位。我们所用的霍尔传感器是A44E型。首先我们把磁钢放在自行车的转轴上,而霍尔元件就放在与其水平的转轴上,当我们完成安装后,转动自行车的转轴,磁钢也就跟着一起转动,从而使霍尔传感器周围的磁场发生变化,这种变化将会导致霍尔电压变化从而产生一个脉冲电压。由于

10、磁钢共分为片,磁场将会改变8次,磁场强度大时输出高电平,磁场低时输出为低电平。所以将会产生个方波,既每输出个方波代表自行车转动了一周。例如:我们的自行车车轮在R=0.25m时,通过C=2*R计算得出车轮的周长C=1.5m。由于每一圈霍尔传感器将输出8个脉冲,当自行车行驶1KM时会转动667次,这样每1KM将回产生5336个脉冲,单片机对这5336个脉冲计数,当达到这个数时单片机将会产生中断。通过单片机计算出来的速度和里程的数据,通过LCD1602显示模块直观显示。总里程数会自动保存到EEPROM数据存储器,当电动自行车开动,单片机开机经过初始化后显示出来,这样以来用户可以清楚的知道自己的车子已

11、经运行了多少公里了。而速度的显示则是在计算出速度里程后立刻显示出来,体现实时性。2.4 LCD1602与LED数码管相比,液晶显示器的显示效果相对较好,液晶显示器显示不仅直观,而且界面具有人机交互美观的特点。而且具有低功耗,容易控制,占用CPU资源少这些优点,从而成为一些显示器的首选。LCD1602有16根引脚,1.VSS引脚和16.BLK引脚接地,2.VCC和15.BLA引脚接电源,控制引脚RS、RW和E分别对应P24、P25、P26,DB0DB7分别对应P00P07。由霍尔传感器采集的脉冲数据信号,通过单片机对其进行记数。当达到先前所设计的计数值的时候单片机就申请中断,从而使单片机响应中断

12、程序,既使其输出一个信号代表此时自行车已经行驶了1KM,这时在经过显示单元电路使LCD1602液晶板显示1KM。当第二个信号来的时候,电路实现加一的功能后在送LCD显示。这样就实现了显示里程的目的。2.5存储器EEPROMEEPROM(ElectricallyErasableProgrammableRead一OnlyMemory)即电子擦除式只读存储器,它是一种非挥发性存储器,是可用户更改的只读存储器(ROM),其可通过高于普通电压的作用来擦除和重编程(重写)。不像EPROM芯片,EEPROM不需从计算机中取出即可修改。在一个EEPROM中,当计算机在使用的时候是可频繁地重编程的,EEPROM

13、的寿命是一个很重要的设计考虑参数。EEPROM的一种特殊形式是闪存,其应用通常是个人电脑中的电压来擦写和重编程。电可擦除只读存储器EEPROM的主要优点是能在应用系统中进行在线改写,并能在断电情况下保存数据而不需保护电源。因此,在智能仪表、控制装置、分布式监测系统子站、开发装置中得到广泛应用。2.6 键盘控制键盘在单片机应用系统中,实现输入数据、传送命令的功能,是人工干预的主要手段。键盘分两大类:编码键盘和非编码键盘。编码键盘:由硬件逻辑电路完成必要的键识别工作与可靠性措施。每按一次键,键盘自动提供被按键的读数,同时产生一选通脉冲通知微处理器,一般还具有反弹跳和同时按键保护功能。这种键盘易于使

14、用,但硬件比较复杂,对于主机任务繁重之情况,采用8279可编程键盘管理接口芯片构成编码式键盘系统是很实用的方案。非编码键盘:只简单地提供键盘的行列与矩阵,其他操作如键的识别,决定按键的读数等仅靠软件完成,故硬件较为简单,但占用CPU较多时间。有:独立式按键结构、矩阵式按键结构。首先,确定键盘编码方案:采用编码键盘或非编码键盘。随后,确定键盘工作方式:采用中断或查询方式输入键操作信息。然后,设计硬件电路。非编码键盘系统中,键闭合和键释放的信息的获取,键抖动的消除,键值查找及一些保护措施的实施等任务,均由软件来完成。键盘是单片机系统设计中一种主要的信息输入接口,合理的设计,不仅可以节省系统的设计成

15、本,更可使仪器设备的操作变得更为简单、方便,很大程度上提高系统综合性能。第3章 硬件实现的设计方法与原理3.1 系统概述本系统是由数据采集,单片机控制系统,键盘显示,数据存储4部分构成。其中数据的采集是由霍尔传感器来完成的,它的输出是矩形脉冲(即一高一低),就向单片机系统提供脉冲信号。其中关键的处理由单片机系统来完成,单片机将对P00脚的信号进行计数,当计数的脉冲达到8个的时候,对里程计数参数进行加一处理,由显示部分送LCD进行显示,显示当前的行驶里程情况。在本次行驶过后数据存入EEPROM中,以便下次行驶时在其基础上继续计数送出显示总共的里程数,以达到记忆的目的。键盘的作用是提供人对整个系统

16、的控制,它将实现整个系统开关,显示器显示内容的切换,秒表的计时以及里程清零等的控制。以上所诉就是整个系统的总体设计思想。利用霍尔元件对里程进行测量。将霍尔元件安装在车前叉的一侧,在车圈侧面等间隔贴多个磁片。当磁片经过霍尔元件时,霍尔元件输出端的电压发生变化产生脉冲,单片机根据脉冲数来计算里程。霍尔元件不受天气的影响,即便被泥沙或灰尘覆盖对测量也不会有任何影响。由霍尔元件加整形电路构成的霍尔开关系统,具有输出响应快,数字脉冲性能好,安装方便,性能可靠,不受光线、泥水等因素影响,价格便宜的优点。该设计能实时地将所测的累计里程数显示出来,主要是将传感器输入到单片机的脉冲信号实时地测量出来,然后通过单

17、片机计算出里程,再将所得的数据存储到数据存储器,并由LCD显示模块交替显示所测里程。本设计的速度的算法两种算法:一种是瞬时速度(每秒的运行速度),一种是平均速度(假设在一定时间内自行车是匀速行进,一段时间内的里程与这段时间的商即为平均速度)。设计时,应综合考虑测距精度和系统反应时间。本设计用测量脉冲数来计算距离,在软件编程方面进行多次扫描测量确保了较高的精度。在计算里程时取了自行车的理想状态。实际中,误差控制在几米之内,相对于整个里程来说不是很大。为了保证系统的实时性。系统显示模块有几种显示切换,包括:平均速度+加速度+总里程显示、平均速度+加速度+秒表计时+秒表计时里程显示、秒表计时+秒表计

18、时里程+总里程显示、平均速度+加速度+瞬时速度显示、平均速度+加速度显示、瞬时速度+加速度。 3.2 功能实现系统实现的功能包括:1、显示行驶总里程数、平均速度、瞬时速度和瞬时加速度。2、同时带有秒表计时功能,以及在计时时段所行驶的里程数!3、并且可以通过按键控制显示内容的切换、秒表的控制和里程数清零功能。4、系统具有总里程数存储功能以及自带复位功能。 3.3 系统总框图图3-3系统总框图3.4 各部分硬件及电路图341 显示部分本设计的显示模块为LCD1602。 工业字符型液晶,能够同时显示16x02即32个字符。(16列2行) 注:为了表示的方便 ,后文皆以1表示高电平,0表示第电平。 管

19、脚功能1602采用标准的16脚接口,其中: 第1脚:VSS为电源地 第2脚:VDD接5V电源正极 第3脚:V0为液晶显示器对比度调整端,接正电源时对比度最弱,接地电源时对比度最高(对比度过高时会产生“鬼影”,使用时可以通过一个10K的电位器调整对比度)。 第4脚:RS为寄存器选择,高电平1时选择数据寄存器、低电平0时选择指令寄存器。 第5脚:RW为读写信号线,高电平1时进行读操作,低电平0时进行写操作。 第6脚:E(或EN)端为使能(enable)端。 第714脚:D0D7为8位双向数据端。 第1516脚:空脚或背灯电源。15脚背光正极,16脚背光负极。操作控制 操作控制表操作: 读状态 写指

20、令 读数据 写数据 输入: RS=0,RW=1,E=1 RS=0,RW=0, D07=指令码,E=H脉冲 RS=1,RW=1,E=1 RS=1,RW=0, D07=数据,E=H脉冲 注:关于E=H脉冲开始时初始化E为0,然后置E为1,再置0。字符集 1602液晶模块内部的字符发生存储器(CGROM)已经存储了160个不同的点阵字符图形,这些字符有:阿拉伯数字、英文字母的大小写、常用的符号、和日文假名等,每一个字符都有一个固定的代码,比如大写的英文字母“A”的代码是01000001B(41H),显示时模块把地址41H中的点阵字符图形显示出来,我们就能看到字母“A”。 因为1602识别的是ASCI

21、I码,试验可以用ASCII码直接赋值,在单片机编程中还可以用字符型常量或变量赋值,如A。 以下是1602的16进制ASCII码表地址: 读的时候,先读左边那列,再读上面那行,如:感叹号!的ASCII为0x21,字母B的ASCII为0x42(前面加0x表示十六进制)。指令集 1602通过D0D7的8位数据端传输数据和指令。 显示模式设置: (初始化) 0011 0000 0x38 设置162显示,57点阵,8位数据接口; 显示开关及光标设置: (初始化) 0000 1DCB D显示(1有效)、C光标显示(1有效)、B光标闪烁(1有效) 0000 01NS N=1(读或写一个字符后地址指针加1 &

22、光标加1), N=0(读或写一个字符后地址指针减1 &光标减1), S=1 且 N=1 (当写一个字符后,整屏显示左移) s=0 当写一个字符后,整屏显示不移动 数据指针设置: 数据首地址为80H,所以数据地址为80H+地址码(0-27H,40-67H) 其他设置: 01H(显示清屏,数据指针=0,所有显示=0);02H(显示回车,数据指针=0)。图3-4-1 系统显示部分连接图 LCD1602343 霍尔传感器A44E霍尔开关集成电路应用霍尔效应原理,采用半导体集成技术制造的磁敏电路,它是由电压调整器、霍尔电压发生器、差分放大器、史密特触发器,温度补偿电路和集电极开路的输出级组成的磁敏传感电

23、路,其输入为磁感应强度,输出是一个数字电压讯号。产品特点:一致性好、稳定性能稳定、可靠性高、响应速度高,可和各种逻辑电路直接接口可实现功能:无触点开关、位置/速度检测与控制、流量检测典型应用领域:纺织机械、缝纫设备、家用电器、安全报警装置、汽车电子、直流无刷电机极限参数:(TA=25)电源电压VCC4.5-28V 输出负载电IO25mA贮存温度范围TS -65150工作温度范围TA-4085图3-4-3 霍尔传感器A44E344 复位电路图3-4-4 系统集成复位电路图345 电源电路供电电源分外接交流和USB接口的外接直流。注意事项:电源不要超过20V DC 20V AC。 电流不要大于3A

24、,防止意外。图3-4-5 电源电路图346 EEPROM掉电存储器电路软件操作操作时序SCL 时钟线SDA 数据线A2、A1、A0 芯片物理地址选择。WP端,写保护。图3-4-6 EEPROM掉电存储器电路图第4章 自行车里程表软件实现方法4.1 软件编程实现411 系统软件框图如图4-1-1所示,本系统软件采用模块化设计方法。整个系统由初始化模块、频率测量模块、速度,里程计数模块、LCD显示模块、速度计算模块、里程显示模块、数据存储,读取模块、定时器中断服务模块以及其他功能模块组成。图4-1-1 系统软件框图412 数据处理本设计所用的霍尔传感器是一个微小传感器A44E型。它实现了采样功能。

25、首先我们把磁钢放在自行车的转轴上,而霍尔元件就放在与其水平的转轴上,当我们完成安装后,转动自行车的转轴,磁钢也就跟着一起转动,从而使霍尔传感器周围的磁场发生变化,这种变化将会导致霍尔电压变化从而产生一个的脉冲电压。由于磁钢共分为8片,磁场将会改变8次,磁场强度大时输出高电平,磁场低时输出为低电平。所以将会产生8个方波,既每输出8个方波代表自行车转动了一周。比如我们的自行车车轮在R=0.25m时,通过C=2*R计算得出车轮的周长C=1.5m。由于每一圈霍尔传感器将输出8个脉冲,当自行车行驶1KM时会转动667次,这样每1KM将回产生5336个脉冲,单片机对这5336个脉冲计数。通过单片机计算出来

26、的速度和里程的数据,通过LCD1602显示模块显示。总里程数的显示存储在EEPROM掉电存储器里,当电动自行车开动,单片机开机经过初始化后读取并且显示出来,这样以来用户可以清楚的知道自己的车子已经运行了多少公里了。 图4-1-2 STC89C52RC的引脚图。413 键盘控制键盘是实现人机对话的必要设备,用户可用键盘向计算机输入数据或命令。本系统采用独立键盘接口,独立式按键是指直接用I/O口线构成单个的按键电路。每一个独立式按键单独占用一根I/O口线。其接口电路如图4.2所示。独立式按键接口电路配置灵活,软件结构简单。但每个按键要占用一根I/O口线,适用于按键数量少的键盘。电路中,按键输入低电

27、平有效。按键未按时有上拉电阻保证此时输入为高电平。图4-1-3 独立式按键接口电路4.2 程序源代码与流程图421 程序流程图图4-2-1 程序流程图422 程序源代码#include /包含头文件,头文件包含特殊功能寄存器的定义#include /标准输入输出#includeunsigned long int x,t;unsigned int speed,speed2,speed3,dis,dist,y,z,A;unsigned char i,i2,k,k2,l,m,sj1,sj2,sp1,sp2,count2;unsigned char ge1,shi1,bai1,ge,shi,bai,q

28、ian,ge2,shi2,bai2,qian2;unsigned char count0,count1,key,choose;unsigned char second,minute;unsigned char min_shiwei,min_gewei;unsigned char sec_shiwei,sec_gewei; unsigned char speed_gewei,speed_shiwei;unsigned char speed_onewei,speed2_shiwei,speed2_gewei,speed2_onewei;unsigned char a_shiwei,a_gewei,

29、a_onewei,a_twowei,a_thrwei,a_fouwei,a_mart=+,as1,as2;unsigned char Number11=0,0,0,0,0,0,0,0,0,0,0;/* 参数说明 * x,脉冲数 t,时间:单位为 秒 speed,平均速度:V=D/t 单位为 千米 speed2,瞬时速度:单位:千米 dis,距离:计算平均速度 dist,距离2:计算瞬时速度 y,瞬时速度参数 z,秒表计时里程参数 i,里程计数参数 i2,秒表计时里程计数参数 k,里程计数参数 k2,秒表计时里程计数参数 l,里程计数参数 m,里程计数参数 sj1,sj2,脉冲判定参数 sp1,

30、sp2平均速度判定参数 count2,里程计数参数 ge1,里程米位 shi1,里程十米位 bai1,里程百米位 ge,里程千米 shi,里程十千米 bai,里程百千米 qian,里程千千米 ge2,秒表计时里程米位 shi2,秒表计时里程十米位 bai2,秒表计时里程百米位 qian2,秒表计时里程千米位 count0,定时器0计数参数 count1,定时器1计数参数 key,选择执行参数 choose,选择显示参数 second,秒参数 minute,分参数 min_shiwei,min_gewei,分钟十位、个位 sec_shiwei,sec_gewei; 秒钟十位、个位 speed_g

31、ewei,speed_shiwei,speed_onewei,平均速度十位个位小数第一位 speed2_shiwei,speed2_gewei,speed2_onewei,瞬时速度十位个位小数第一位 a_shiwei,a_gewei,a_onewei,加速度十位个位小数第一位 a_mart,加速度符号 as1,as2,加速度判定参数Number11,里程存储数据* 参数说明 */#define Data P0/数据端口#define AddWr 0xae /写数据地址,需要参考24c02芯片文档#define AddRd 0xaf /读数据地址 sbit Sda=P12; /定义EEPROM连

32、接端口sbit Scl=P11;sbit WP=P10; /写保护sbit RS = P24; /Pin4液晶显示操作端口定义sbit RW = P25; /Pin5sbit E = P26; /Pin6sbit LED1=P13;/脉冲接收指示灯sbit IR=P14; /霍尔传感器脉冲输入端 /* 函数定义 */unsigned char keyscan(void);/键盘扫描void DelayUs(unsigned char us);/微秒延时void DelayMs(unsigned char ms);/毫秒延时void WriteCommand(unsigned char c);/

33、写指令void WriteData(unsigned char c);/写数据void showchar(unsigned char pos,unsigned char c);/LCE写入字节函数void InitLcd();/LCD初始化void first_load(void);/数据初始化void key_finding(void);/键盘输入模块,秒表计时开关,里程清零等 void red_recieve(void);/脉冲接收模块void choosed(void);/选择显示执行模块void show_lcd1(void);/显示子模块/显示总里程、平均速度和瞬时速度void sh

34、ow_lcd2(void);/显示子模块/显示总里程、秒表和秒表计时里程void show_lcd3(void);/显示子模块/显示秒表、秒表计时里程、平均速度和加速度void show_lcd4(void);/显示子模块/显示瞬时速度、平均速度和加速度void show_lcd5(void);/显示子模块/显示加速度、平均速度void show_lcd6(void);/显示加速度和瞬时速度void mDelay(unsigned char j);void Start(void);void Stop(void);void Ack(void);void NoAck(void);void Send

35、(unsigned char Data);unsigned char Read(void);void WrToROM(unsigned char Data,unsigned char Address,unsigned char Num);void RdFromROM(unsigned char Data,unsigned char Address,unsigned char Num);void delay(unsigned int cnt)/经典延时程序 while(-cnt);void Init_Timer0(void)/ 定时器初始化 TMOD |= 0x11; TH0=(65536-50

36、000)/256; /赋值 TL0=(65536-50000)%256; TH1=0xd8; /赋值 TL1=0xf0; EA=1; ET0=1; ET1=1; TR0=1; void Timer0_isr(void) interrupt 1 using 1 /定时器0,完成速度功能TH0=(65536-50000)/256; /重新赋值TL0=(65536-50000)%256;count0+; if (count0=20) /20x50ms=1S,大致延时时间 count0=0;if(IR)sp1+;if(5=sp1)sp1=0;x=0;elsesp2+;if(5=sp2)sp2=0;x=

37、0;speed3=speed2;dist=y*36*5; /单位:千米speed2=dist/1; /公式 速度V=X/t KM/Hspeed2_shiwei=speed2/1000;speed2_gewei=speed2%1000/100;speed2_onewei=speed2%1000%100/10;if(x!=0) t+;as1=speed;dis=x*5; /单位:千米speed=dis*36/t; /公式 速度V=X/t KM/Hspeed_shiwei=speed/1000;speed_gewei=speed%1000/100;speed_onewei=speed%1000%10

38、0/10;as2=speed;elset=0;x=0;speed_shiwei=0;speed_gewei=0;speed_onewei=0;if(as1as2)A=(speed3-speed2)*3600;a_mart=-;a_shiwei=A%10000000%1000000/100000;a_gewei=A%10000000%1000000%100000/10000;a_onewei=A%10000000%1000000%100000%10000/1000;a_twowei=A%10000000%1000000%100000%10000%1000/100;a_thrwei=A%10000

39、000%1000000%100000%10000%1000%100/10;y=0;void Timer1_isr(void) interrupt 3 using 1/定时器1 ,完成秒表功能TH1=0xd8; /重新赋值TL1=0xf0;count1+; if (count1=100) /100x10ms=1S,大致延时时间 count1=0; second+; /秒加1if(second=60) second=0;minute+;if(minute=100)minute=0; sec_shiwei=second/10;/十位显示值处理 sec_gewei=second%10; /个位显示处理

40、min_shiwei=minute/10;min_gewei=minute%10; void distance(void)/脉冲接收模块sj1=0;sj2=0;count2+;x+;y+;if (2=count2)count2=0;if(z=1)/计算计秒时的里程if (100=i2) i2=0;k2+;if(100=k2)k2=0;qian2=k2%100/10;bai2=k2%100%10;shi2=i2%100/10;ge2=i2%100%10;i2+; if (100=i) /总里程i=0;k+;if(100=k)k=0;l+;if(100=l)l=0;m+;if(m=10)m=0;q

41、ian=m;bai=l%100/10;shi=l%100%10;ge=k%100/10;bai1=k%100%10;shi1=i%100/10;ge1=i%100%10;i+;Number0=qian;Number1=bai;Number2=shi;Number3=ge;Number4=bai1;Number5=shi1;Number6=ge1;Number7=i;Number8=k;Number9=l;Number10=m;WrToROM(Number,11,11);/*/* 主函数 */*/main() InitLcd(); /初始化LCD DelayMs(15); /延时保证信号稳定 Init_Timer0(); /定时器初始化 first_load();/数据初始化WP=0;RdFromROM(Number,11,11);/调用存储数据 从地址0开始写一个数据 qian=Number0;bai=Number1;shi=Number2;ge=Number3;bai1=Number4;shi1=Number5;ge1=Number6;i=Number7;k=Number8;l=Number9;m=Number10; while(1) red_recieve();/脉冲接收模块key=

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

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


备案号:宁ICP备20000045号-2

经营许可证:宁B2-20210002

宁公网安备 64010402000987号