基于单片机的电动车里程记录仪的设计

合集下载

基于单片机的车速里程表的设计

基于单片机的车速里程表的设计

黑龙江东方学院毕业论文(设计)题目:基于单片机的车速里程表的设计学生姓名学号专业班级指导教师学部答辩日期2012年5月19日黑龙江东方学院本科生毕业论文(设计)任务书基于单片机的控制车速里程表的设计摘要里程表广泛应用于各类机车,传统的机械式里程表虽然稳定可靠,但功能单一、易受磨损。

随着电子技术的迅猛发展,电子式里程表得以广泛应用,现在很多轿车仪表已经使用电子车速里程表,本设计介绍一种基于单片机的智能电子里程表。

该电子式里程表是一种数字式仪表,主要由车速表和里程表两部分组成,其传感器采用无接触测量的光电传感器。

它不仅可显示车辆行驶的总里程,也可显示一段时间的阶段里程,还可显示车速,以及实现超速报警等功能,并具有较强的再开发能力。

它的实现方式是,通过安装在汽车转轴上的测量盘,用霍尔传感器检测使转速物理量变换成脉冲电量,通过单片机测量产生脉冲的频率就可以得出圆盘的转速,再通过计算,从而得出里程、车速的信息,并由LED显示器显示出来。

并且该电子式里程表累积的里程数字存储在非易失性的EEPROM存储器内,在无电状态下数据也能保存。

关键词:AT89C52,数码管显示器,霍尔传感器,存储器Speed odometer design based on single chip microcomputercontrolAbstractPermeate in the social realm along with the calculator in recent years, single slice the application of the machine just at constantly alignment thorough, arouse a traditional control an examination a day a new moon benefit renewal in the meantime.In solidly the hour the examination the single slice that controls with auto the machine the application the system, single slice machine usually Be a core parts to use, only single slice the machine aspect knowledge is not enough, return should according to concrete the hardware structure, and aim at concrete application the software of[with] the object characteristics combine to make perfect. Imitating many passage pressure systemses is to make use of pressure to spread the feeling machine to collect current pressure combine the reflection is on the display, it can analyze the pressure surfeit distance, erupting to report to the bine the adoption electronics steelyard principle can according to input the amount of money that the unit price computes an object accuratelyThis thesis discuss that pour the design and creation of the timer in brief, for pour four LED figures displays in the timer to say, I am for the sake of the simplification circuit,decline low cost, adopt to take software as the connect of lord a people's method, do not use specialized hardware to translate the code machine namely, but adopt the software procedure to carry on translating codeKeywords:AT89C52, digital tube display, countdown timer, Holzer sensor目录摘要 (I)Abstract ........................................................................................................................................ I I 第1章绪论.. (3)1.1课题背景 (3)1.2国内外研究现状 (3)1.3主要研究内容 (3)第二章车速里程表总体设计 (6)2.1 总体设计思路 (6)2.2 子程序和主函数的设计 (7)2.3车速里程表的简介组成及原理 (9)第三章系统硬件设计 (12)3.1 AT89C52单片机的的介绍 (12)3.2 AT89C52单片机的硬件结构 (10)3.3 主要性能参数 (11)3.4 霍尔传感器电路 (11)3.5 LED显示模块电路及74 LS07驱动器 (16)第四章软件设计 (18)4.1 主程序设计流程图 (21)4.1.1 初始化模块 (21)4.1.2 主程序模块 (21)4.1.3 中断处理模块 (21)4.2 车速测量子程序流程图 (21)第五章软件调试 (23)5.1 程序的检测与调试 (23)5.2 PROTEUS仿真过程 (25)结论 (28)参考文献 (29)致谢 (30)基于单片机的控制车速里程表的设计第1章绪论1.1 课题背景本题目根据车速、里程的测量原理,以AT89C52系列单片机为核心器件,组成点阵式的液晶显示屏,通过编程显示车速里程。

(整理)基于单片机和光电传感器的显示电动自行车速度里程表设计

(整理)基于单片机和光电传感器的显示电动自行车速度里程表设计

基于单片机与光电传感器的电动自行车速度/里程表设计作者:发布时间:2009-04-20 00:15:34来源:繁体版访问数:34张怀强周通陆坤何为民从保护环境和经济条件许可等因素综合来看,电动自行车目前乃至今后都有着广阔的发展空间。

目前市面上电动自行车的速度表和里程表都是机械的,看起来不够直观与方便。

如果能用led直接显张怀强周通陆坤何为民从保护环境和经济条件许可等因素综合来看,电动自行车目前乃至今后都有着广阔的发展空间。

目前市面上电动自行车的速度表和里程表都是机械的,看起来不够直观与方便。

如果能用led直接显示出来里程数或速度值,就可节省用户的时间及精力处理自行车行进过程中的突发事件。

本文介绍的速度与里程表设计以单片机和光电传感器为核心。

传感器将不同车速转变成的不同频率的脉冲信号输入到单片机进行控制与计算,再采用led模块进行显示,使得电动自行车的速度与里程数据能直观的显示给使用者。

系统概述本系统由信号预处理电路、单片机at89c2051、系统化led显示模块、串口数据存储电路和系统软件组成。

其中信号预处理电路包含信号放大、波形变换和波形整形。

对待测信号进行放大的目的是降低对待测信号的幅度要求;波形变换和波形整形电路则用来将放大的信号转换成可与单片机相连的ttl信号;通过单片机的设置可使内部定时器t1对脉冲输入引脚t0进行控制,这样能精确地算出加到t0引脚的单位时间内检测到的脉冲数;设计中速度显示采用led模块,通过速度换算得来的里程数采用i2c总线并通过e2prom来存储,既节省了所需单片机的口线和外围器件,同时也简化了显示部分的软件编程。

系统的原理框图如图1所示。

图1 系统的原理框图工作原理该设计能实时地将所测的速度与累计里程数显示出来,主要是将传感器输入到单片机的脉冲信号的频率(传感器将不同车速转变成不同频率的脉冲信号)实时地测量出来,考虑到信号的衰减、干扰等影响,在信号送入单片机前应对其进行放大整形,然后通过单片机计算出速度和里程,再将所得的数据存储到串口数据存储器,并由led显示模块交替显示所测速度与里程。

电动车里程表课程设计报告书

电动车里程表课程设计报告书

目录第 1 章概述2第 2 章硬件设计22.1 系统组成框图22.2 具体硬件电路及工作原理32.3 AT89C2051单片机介绍42.3.1 芯片概述42.4 其他外围硬件电路52.4.1 电源电路52.4.2 霍尔传感器62.4.3 4位串行静态显示电路6第 3 章软件设计73.1 主程序设计73.2 外部中断0和T1时序溢出中断服务子程序设计8 3.3 速度/里程显示控制子程序设计83.4 系统完整源程序8总结10参考文献11附录12附录1 整体电路图12附录 2 源程序13第一章概述本设计中引入的速度和里程表设计基于微控制器和光电传感器。

传感器将不同车速转换成的不同频率的脉冲信号输入单片机进行控制计算,再通过LED模组进行显示,从而将电动自行车的速度和里程数据直接显示给用户。

该设计可以实时显示实测车速和累计里程,主要是通过实时测量传感器输入到单片机的脉冲信号的频率(传感器将不同的车速转换成不同频率的脉冲信号),考虑到信号衰减、干扰等影响,信号在致到单片机前应进行放大整形,然后由单片机计算速度和里程,将得到的数据存入串口端口数据记忆,测得的速度和速度由LED显示模块交替显示。

里程。

本设计中设计的里程算法是一种近似算法(假设自行车在某个时间匀速行驶,平均速度与时间的乘积就是里程)。

该系统由信号预处理电路、单片机AT 89C2051、系统LED显示模块、串行数据存储电路和系统软件组成。

其数字预处理电路包括信号放大、波形变换和波形整形。

对被测信号进行放大的目的是为了降低对被测信号的幅度要求;波形变换和波形整形电路,用于将放大后的信号转换为可连接单片机的TTL信号;控制脉冲输入引脚T0,可以准确计算单位时间内检测到的脉冲数2C。

存储,既省去了所需的单片机接口线和外围设备,又简化了显示部分的软件编程。

设计时应综合考虑测速精度和系统响应时间。

本设计采用测量脉冲频率计算速度,具有较高的速度测量精度。

计算里程时采用自行车的理想状态。

单片机课程设计:里程计数器

单片机课程设计:里程计数器

Part Six
单片机课程设计中 里程计数器的未来
发展
技术发展趋势与展望
智能化:里程计数器将更加智能化,能够自动识别和记录行驶里程 集成化:里程计数器将与其他车载设备集成,实现信息共享和协同工作 安全性:里程计数器将更加注重安全性,防止数据篡改和泄露 环保性:里程计数器将更加注重环保性,减少能源消耗和污染排放
06 单 片 机 课 程 设 计 中 里 程 计数器的未来发展
Part One
里程计数器概述
里程计数器的定义和作用
定义:里程计数器是一 种用于记录车辆行驶距 离的电子设备,通常安 装在车辆的仪表盘上。
作用:里程计数器可以 提供车辆的行驶距离、 行驶时间等信息,帮助 车主了解车辆的行驶状 况,同时也可以作为车 辆保养和维修的依据。
单片机课程设计-里程计 数器
,a click to unlimited possibilities
汇报人:
目录
01 里 程 计 数 器 概 述 03 里 程 计 数 器 的 实 现 过 程
02 单 片 机 课 程 设 计 中 的 里 程计数器
04 里 程 计 数 器 的 性 能 优 化
05 单 片 机 课 程 设 计 中 里 程计数器的实际应用
程序编写:根据项目需求编写里程 计数器的程序代码,包括主程序、 中断服务程序等
传感器选择与接口电路
传感器类型: 霍尔传感器、 光电传感器等
传感器性能: 精度、响应时 间、稳定性等
接口电路设计: 信号调理、信 号放大、信号
滤波等
接口电路与单 片机的连接方 式:串行通信、
并行通信等
数据存储和处理
数据采集:通过传感器获取里程数据 数据存储:将采集到的数据存储在存储器中 数据处理:对存储的数据进行计算和处理,得到里程数 数据显示:将处理后的里程数显示在屏幕上

基于单片机的电动车里程表设计说明

基于单片机的电动车里程表设计说明

《基于单片机的电动车里程表设计》目录引言 (1)1.总体设计 (2)2.设计任务与要求 (2)3.电路原理 (2)4.硬件系统模块 (3)4.1芯片的选择 (6)4.2结构框图 (7)5.软件系统设计 (7)5.1控制系统源程序 (11)6.调试 (13)7.参考文献 (13)引言里程表广泛应用于各类机车,传统的机械式里程表虽然稳定可靠,但功能单一、易受磨损。

随着电子技术的迅猛发展,电子式里程表得以广泛应用,现在很多轿车仪表已经使用电子车速里程表,从保护环境和经济条件许可等因素综合来看,电动自行车目前乃至今后都有着广阔的发展空间。

目前市面上电动自行车的速度表和里程表都是机械的,看起来不够直观与方便。

如果能用液晶显示屏直接显示出来里程数和速度值,就可节省用户的时间与精力处理自行车行进过程中的突发事件。

本设计介绍一种基于单片机的智能电子里程表。

该电子式里程表是一种数字式仪表,主要由车速表和里程表两部分组成,其传感器采用无接触测量的光电传感器。

传感器将不同车速转变成的不同频率的脉冲信号输入到单片机进行控制与计算,再采用液晶显示器模块进行显示,使得电动自行车的速度与里程数据能直观的显示给使用者。

它不仅可显示车辆行驶的总里程,还可显示当前车速,以与实现超速报警等功能,并具有较强的再开发能力。

它的实现方式是,通过安装在汽车转轴上的测量盘,用光电式转速传感器检测转速的脉冲信息,在脉冲状态下,将转速的变化转换成光通量的变化,再通过光电转换元件将光通量的变化转换成电量的变化,接着通过频率测量电路将脉冲信号输入到单片机中,然后依据电量与转速的函数关系实现转速测量,再通过计算,从而得出里程、车速的信息,并由液晶显示器显示出来。

一、设计任务与要求以AT89C51单片机为核心,采用霍尔传感器,实现对自行车行驶里程、速度的测量,并能选择显示自行车行驶里程值和当前速度。

可以实现对自行车车轮大小的设置等。

自行车超过一定限速时可以进行声光报警提示。

基于单片机的光电式自行车速度里程表设计

基于单片机的光电式自行车速度里程表设计

光电式自行车速度里程表设计摘要随着科技的迅速发展,单片机的应用也越来越广泛,并带动传统控制检测技术不断更新。

现在的里程表大多是电子式的,用数码管或液晶显示器即时显示,显示更加直观。

电子式里程表采用接触车速传感器代替软轴传动, 可使里程表的安装位置不受距离限制,进一步有效地克服了机械式里程表中的诸多不足。

方案采用了一种以单片机AT89C51为主控机,使用光电传感器进行自行车里程、速度测量的装置。

传感器将不同车速产生的不同频率的脉冲信号输入到单片机进行控制与计算,再采用LCD液晶显示模块进行显示,使得自行车的速度与里程数据能直观的显示给使用者。

本设计主要包括自行车轮脉冲采集、键盘输入和数据显示等部分,主程序用C语言编写,完成各项功能及数据的处理。

本里程表的设计具有结构简单,成本低廉,显示清晰,稳定可靠等优点。

并且可以进行扩充,更方便于使用者。

关键词光电传感器单片机液晶显示器里程表THE DESIGN OFBICYCLE ODOMETERABSTRACTWith the rapid development of technology, more and more widespread application of microcomputer, promote the traditional control detection technology constantly updated. Most of the current electronic odometer, and with the LED digital tube or LCD display real-time, display more intuitive. Electronic odometer flexible shaft using the contact speed sensor instead of driving, mileage tables can be installed without distance limitations, and further to effectively overcome the mechanical disadvantagesof mileage in the table.The plan adopts the system and configuration of combining the microcontroller AT89C51 as the main control computer ,using the photoelectric sensorbicycle odometer, speed measuring devices. when Different speed pulse signals of different frequencies produced by sensor are input into the microcontroller,after its calculation, liquid crystal will display the datas, making the bike's speed and distance data visually to the user.The design includes a bike wheel pulse acquisition, keyboard input and data display section, the main program using C language, This paper first needed to "milestones" design of equipment in detail, on theproblems existing in the design, explained And then to hardware and software design and implementation of the part made earnest analysis, Then presented system modeling process and the corresponding system based on this model, the control simulation, and the simulation results are compared.ODOMET ER录摘要 (I)ABSTRAC..T (II)1 绪论. (1)1.1 问题由来. (1)1.2 课题现状. (1)1.3 设计任务. (2)2 系统原理概述 (3)2.1 系统原理总概述 (3)2.2 系统硬件组成原理 (3)2.3 软件系统工作流程 (4)3 系统硬件设计 (5)3.1 采集信息部分以及传感器的选择. (5)3.2 轮脉冲检测与转换电路 (6)3.2.1. 轮脉冲检测 (7)3.2.2. 信号预处理电路 (7)3.3 单片机系统部分 (9)3.3.1 AT89C51 单片机介绍 (9)3.3.2 定时/计数器的结构及控制. (9)3.3.3 中断控制 (11)3.4 单片机外围电路介绍. (11)3.4.1 复位电路 (11)3.4.2 晶振电路 (12)3.5 显示部分. (13)3.5.1 LCD 液晶显示器. (13)3.5.2 显示接口电路设计 (15)3.6 报警电路. (15)3.7 键盘控制. (15)4 软件设计 (16)4.1 测量算法概述 (18)4.2 中断子程序的设计 (19)4.3 数据处理子程序的设计. (18)4.3.1 里程计算子程序. (21)4.3.2. 速度计算子程序 (19)4.4 显示子程序的设计 (20)5 设计总结 (22)5.1 实现目标与特点 (22)5.2 结论及不足. (23)致谢 (23)参考文献 (24)附录 (28)附录I 系统电路原理图 (28)附录II 设计源程序 (29)1 绪论1.1 问题由来我国是人口大国,也是自行车大国,随着生活节奏的不断加快,自行车已经不仅仅是运输、代步的工具,现在则是代表着绿色、环保、节能。

基于单片机的电动自行车速度历程计设计

基于单片机的电动自行车速度历程计设计

基于单片机的电动自行车速度里程计设计摘要随着居民生活水平的不断提高,电动自行车不再仅仅是运输、代步的工具,而是成为人们娱乐、休息、锻炼的首选。

电动自行车的速度里程表能够让人们清楚的知道当前的速度、里程等物理量,方便了人们的生活。

本系统使用了七段LED 显示器的设计,能自动显示车辆行驶的总里程数及行车速度。

本文首先概述速度里程计的基本原理和特性,并且阐述选择霍尔旋转传感器的原因。

然后,本文讲述本系统中AT89C51的的基本工作原理和特性。

其次,本文详细阐述EEPROM存储器24C01的结构和原理。

在最后,详细的描述了系统主要程序的设计。

关键词:单片机AT89C51;霍尔传感器;EEPROM型存储器24C01;七段LED灯..目录1 引言 (1)2 系统总体概述 (2)2.1 工作原理 (2)2.11 原理框图 (2)2.12 原理介绍 (3)2.13 原理框图 (3)3 硬件介绍 (5)3.1 霍尔元件 (5)3.11霍尔器件 (5)3.12霍尔效应 (5)3.13 霍尔开关电路 (5)3.14旋转传感器 (6)3.2 LED数码管 (6)3.3 T89C51简介 (7)3.4 24C01简介 (10)4 软件设计 (14)4.1 系统内存的规划 (14)4.2程序介绍 (14)4.3主程序流程图 (15)4.4主程序 (15)结论 (29)1 引言自行车被发明及使用到现在已经有两百多年的历史了,这两百多年间人类在不断的尝试和研发过程中,就在最近十年的时间里,人们发明了电动自行车,因而,在世界引发了一场电动车的推广的热潮。

本课题所设计的电动车速度里程表的目的是为了让驾驶者能看到当前的行车速度和车辆累计行使的路程,并且能提醒驾驶者行车速度的限制和能达到在超出行驶速度时鸣叫报警以保证行车安全的目的。

本设计是基于单片机的车速里程表,采用霍尔型非接触式转速传感器。

控制器采用AT89C51单片机,传感器采用霍尔元件,显示器用AT89C51的P0口和P2口扩展。

基于单片机的电子式汽车里程表设计

基于单片机的电子式汽车里程表设计

基于单片机的电子式汽车里程表设计【摘要】本文介绍了一种以霍尔元件为基础的汽车车速和里程计的设计方法。

利用AT89C51单片机作为控制核心,利用A44E型霍尔计测转速,通过1602液晶显示器显示车辆行驶的里程和车速。

文中对车速和里程计的硬件电路进行了详细的阐述。

在硬件上,采用霍尔元件,将车辆每次运行所产生的脉冲个数输入到单片机中,再由单片机对这些信号进行处理后,输出到显示器上。

系统的软件部分,采用了模块化的设计思路,用 C语言编写程序。

本系统的硬件结构简单,各子程序的通用性强,达到了设计的要求。

【关键词】里程速度霍尔元件单片机 LCD1系统方案设计1.1设计要求1.设计一种数码里程计,可应用于所有车辆,并可显示里程、车速等信息。

2.系统应能够准确计算行驶里程,并将其显示在终端上。

3.系统应具备稳定性和可靠性,能够长时间运行并正常工作。

4.设计应考虑易于安装和操作,方便驾驶员使用。

5.系统应具备良好的用户界面,能够清晰、直观地显示各项信息。

6.设计应符合相关的安全标准和规范,确保驾驶员的行车安全。

7.设计应具备一定的扩展性和可升级性,方便后续的功能扩展和升级。

8.设计应考虑成本控制,力求实现性价比最优的方案。

9.设计应具备一定的抗干扰能力,能够在复杂的环境中正常工作。

1.2设计说明1.主要采用AT89C51微控制器作为核心芯片;2.将采用1602显示装置,可以实现行车速度、行车路程、时钟和温度等信息的显示。

3.为了感应温度,将使用DS18B20感应器进行温度的监测。

4.时钟功能将由DS1302时钟晶片提供。

它能够准确计时,确保车辆行驶过程中的时间显示准确无误。

5.利用A44E霍尔传感器检测车速;6.可通过按钮进行时钟数值的修改,设定车速和温度的闹钟数值;7.当超速或温度超过设定值时,蜂鸣器将发出警报信号。

2系统硬件设计2.1 总体设计方案说明本文介绍了一种基于普通MCS-51单片机的轮毂转速信号处理系统该系统通过使用传感器将车轮速度转换为电脉冲信号,并通过处理后发送给微控制器进行处理。

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

目录第 1 章绪论....................................................................... 错误!未定义书签。

1.1课题背景........................................................................... 错误!未定义书签。

1.2设计的整体思路 (2)第 2 章硬件的设计 (4)2.1 AT89C52系列单片机的介绍 (4)2.2存储电路 (5)2.3时钟电路 (6)2.4复位电路 (7)2.5显示电路 (8)2.6报警电路 (9)第 3 章软件的设计与调试 (9)3.1子程序与主函数的设计 (9)3.2 Protues仿真过程........................................................... 错误!未定义书签。

参考文献. (14)附录一硬件设计原理图 (15)附录二程序清单 (16)第 1 章绪论单片机现在渗透到我们生活的各个领域,几乎很难找到哪个领域没有单片机的踪迹。

导弹的导航装置,飞机上各种仪表的控制,计算机的网络通讯与数据传输,工业自动化过程的实时控制和数据处理,广泛使用的各种智能IC卡,民用豪华轿车的安全保障系统,录像机、摄像机、全自动洗衣机的控制,以及程控玩具、电子宠物等等,这些都离不开单片机。

更不用说自动控制领域的机器人、智能仪表、医疗器械以及各种智能机械了。

1.1课题背景本题目根据车速、里程的测量原理,以MCS-51系列单片机为核心器件,组成点阵式的液晶显示屏,通过编程显示车速、里程。

按照设计要求熟悉系统硬件电路、接口电路,完成硬件电路的电路板的设计,完成该系统的程序设计,提交程序设计框图及程序设计清单。

1.2设计的整体思路设计包括硬件设计和软件设计,其中硬件是基础软件是核心,软件的数据通过硬件进行处理和控制,最终实现用户的功能。

一、硬件介绍本设计的硬件包括:AT89C52芯片:程序的处理和控制中心。

数字码盘:模拟霍尔传感器,向芯片外部中断提供脉冲。

RESPACK8八位排阻:将P0口拉成高电平。

1602液晶显示屏:显示速度和路程数据。

24C02C:存储总里程数据二、主要技术指标1、计算速度和路程。

2、存贮历史里程数据。

3、量程记满时清除历史里程数据。

4、显示及时速度。

5、超速报警三、设计原理框图如下:1.2软件设计流程图第 2 章硬件电路的设计2.1 AT89C52系列单片机的介绍AT89C52是美国ATMEL公司生产的低电压,高性能CMOS 8位单片机,片内含8K bytes 的可反复擦写的只读程序存储器(PEROM)和256 bytes 的随机存取数据存储器(RAM),器件采用ATMEL公司的高密度,非易失性存储技术生产,与标准MCS-51指令系统及8052产品引脚兼容,片内置通用8位中央处理器(CPU)和Flash存储单元,功能强大AT89C52单片机适合于许多较为复杂控制应用场合。

功能特性概述:AT89C52提供以下标准功能:8K 字节Flash闪速存储器,256字节内部RAM,32个I/O口线,3个16位定时/计数器,一个6向量两级中断结构,一个全双工串行通信口,片内振荡器及时钟电路。

同时,AT89C52可降至0Hz的静态逻辑操作,并支持两种软件可选的节电工作模式。

空闲方式停止CPU的工作,但允许RAM,定时/计数器,串行通信口及中断系统继续工作。

掉电方式保存RAM中的内容,但振荡器停止工作并禁止其它所有部件工作直到下一个硬件复位。

引脚如图2.1所示。

振荡器反相放大器如图2.2所示。

图2.1 AT89C52引脚图XTAL1:振荡器反相放大器的及内部时钟发生器的输入端。

XTAL2:振荡器反相放大器的输出端。

中断:AT89C52共有6个中断向量:两个外中断(INT0和INT1),3个定时器中断(定时器0,1,2)和串行口中断。

所有这些中断源可通过分别设置专用寄存器IE的置位或清0来控制每一个中断的允许或禁止。

IE也有一个总禁止位EA,它能控制所有中断的允许或禁止。

2.2存储电路SCK串行时钟:AT24C02串行时钟输入管脚用于产生器件所有数据发送或接收的时钟。

SDA 串行数据/地址:CAT24WC02双向串行数据/地址管脚用于器件所有数据的发送或接收,是一个开漏输出管脚可与其它开漏输出或集电极开路输出进行线或(wire-OR )。

WP 写保护:如果WP 管脚连接到Vcc 所有的内容都被写保护,只能读。

当WP 管脚连接到Vss 或悬空,允许器件进行正常的读/写操作。

本次设计采用的24C02是为了防止掉电时里程数据的丢失,由于24C02C 的数据线和地址线是复用的,采用串口的方式传输数据,所以只用两根线SCK 和SDA 与单片机传输数据。

在软件编程时采用2E PROM 程序包来控制24C02C 发送或接受数据。

2.3 时钟电路时钟是单片机的心脏,单片机各功能部件的运行都是以时钟频率为基准,有条不紊地一拍一拍地工作。

因此,时钟频率直接影响单片机的速度,时钟电路的质量也直接影响单片机系统的稳定性。

AT89C52片内由一个反相放大器构成振荡器,可以由它产生时钟。

常用的时钟电路有两种方式,一种是内部时钟方式,另一种为外部时钟方式。

本设计采用前者。

单片机内部有一个用于构成振荡器的高增益反相放大器,该高增益反相放大器的输入为芯片引脚XTAL1,输出端为引脚XTAL2。

这两个引脚跨接石英晶体振荡器和电容,就构成一个稳定的自激振荡器。

电路中的电容C1和C2常选择为30P 左右。

对外接电容的值虽然没有严格的要求,但电容的大小会影响振荡器的高低、振荡器的稳定性、起振的快速性和温度的稳定性。

而外接晶体的振荡频率的大小,主要取决于单片机的工作频率范围,每一种单片机都有自己的最大工作频率,外接的晶体振荡频率不大于单片机的最大工作频率即可。

此外,如果单片机有串行通信,则应该选择振荡频率除以串行通信频率可以除尽的晶体。

本设计晶振采用12MHz ,则计数周期为6111210112T Hz ==⨯⨯μ()S 2.4 复位电路AT89C52单片机的复位输入引脚RET 为AT89C52提供了初始化的手段。

有了它可以使程序从指定处开始执行,即从程序存储器中的0000H 地址单元开始执行程序。

在89C52的时钟电路工作后,只要在RET引脚上出现两个机器周期以上的高电平时,单片机内部则初始复位。

只要RET保持高电平,则89C52循环复位。

只有当RET由高电平变成低电平以后,89C52才从0000H地址开始执行程序。

本系统的复位电路是采用按键复位的电路,如图2.12所示,是常用复位电路之一。

单片机复位通过按动按钮产生高电平复位称手动复位。

上电时,刚接通电源,电容C相当于瞬间短路,+5V立即加到RET/VPD端,该高电平使89C52全机自动复位,这就是上电复位;若运行过程中需要程序从头执行,只需按动按钮即可。

按下按钮,则直接把+5V加到了RET/VPD端从而复位称为手动复位。

复位后,P0到P3并行I/O口全为高电平,其它寄存器全部清零,只有SBUF寄存器状态不确定。

工作原理:通电瞬间,RC电路充电,RST引脚出现高电平,只要RST端保持10ms以上高电平,就能使单片机有效地复位。

2.5显示电路1602液晶显示模块可以和单片机AT89C51直接接口,1602的驱动程序11条指令,(1)void Clear_display(); //清显示屏指令(2)void Return_home(); //光标归位指令(3)void Entry_mode_set(); //输入模式设置指令(4)void Display_on_or_off(); //显示屏的开关控制指令(5)void Cursor_or_Display_shift(); //设定显示屏或光标移动方向指令(6)void Function_set(); //功能设定指令(7)void Set_character_address(); //设定CGRAM地址指令(8)void Set_display_address(); //设定DDRAM地址指令(9)void Read_busy_flag(); //读取忙信号或AC地址指令(10)void Write_data(); //将数据写入DDRAM或CGRAM指令(11)void Read_data(); //从CGRAM或DDRAM读出数据的指令2.6报警电路当速度超过30时,蜂鸣器报警,速度可以设定第 3 章软件的设计与调试3.1子程序和主函数的设计一、子程序的设计设汽车轮子半径为r,脉冲数为n,t=50毫秒,一个脉冲的时间为time,速度为v(km/h),路程为s(km),pi=3.14。

子程序按模块化的思路编写。

各子程序如下:1.初始化:设置 T0计时器工作方式1,输入口为p3.2 开总中断。

打开外中断0中断控制位.设置外部中断0优先级控制位。

设置外部中断0触发方式为边沿触发方式。

打开T0中断允许。

2.外部中断:当P3.2口有脉冲时进入外部中断0。

time=sec+t*0.05,记一个脉冲的时间。

tab_v[5]=0.9*pi*r/time,计算速度并放入数组中。

高低速的判断,当V>=5时为高速,并用flag = 0,记高速标志位,flag=1,记低速标志位;for(i = 0;i<6;i++)tab_v[i] = tab_v[i+1]; //数组移数据关闭T0,给T0赋50毫秒初值。

开启T0 ,当来一个脉冲n++;当n == 50000时,n清零n = 0;3.定时器0中断:当来一个脉冲进入定时器0中断,给T0定时器赋50毫秒初值,当记满50毫秒t++。

4.处理函数:计算速度分高速和低速。

速度计算公式:tab_v[5]=0.9*pi*r/time;(单位km/h)低速时:v=tab_v[5],即显示第五个速度值。

高速时:v+=tab_v[i];计算五个速度之和。

v=v/5;求得平均速度。

路程公式:s=0.00025*pi*r*n,随着脉冲n的增加s不断累加。

3.2PROTEUS仿真过程一、电路原理图如下图:图3.1车速里程表原理图二、生成HEX文件如下图4.2。

图3.2生成文件三、编译结果如下图4.3。

图3.3编译结果仿真结果没有错误和警告,编译通过。

四、仿真结果如下图仿真结果一表示:速度为0,路程也为0。

仿真结果二表示:速度为16km/h,行驶里程为4公里。

图3.4仿真结果一图3.5仿真结果二参考文献[1] 万福君,潘松峰,刘芳,吴贺荣,王秀梅.MCS-51单片机原理、系统应用[M].清华大学出版社,2008.[2] 张迎新.单片机原理及应用(第二版)[M].电子工业出版社,2009.[3] 宋文绪,杨帆.自动检测技术(第三版)[M].高等教育出版社,2008.[4] 郭天祥.新概念51单片机C语言教程[M].电子工业出版社,2009.[5] 陈忠平,曹巧媛曹琳琳,刘琼,申晓龙.单片机原理及接口[M].清华大学出版社,2007.附录一硬件设计原理图附录二程序清单//速度超过30KM/H报警#include<reg52.h>#include<stdio.h>#include<intrins.h>#define uint unsigned int#define uchar unsigned charuint zd;uchar b,i,count,temp2;unsigned long time;uint speed,c,allc; //速度里程总里程#define L 50sbit beep=P3^7;//speak 端口//-----------24c02----------------------#define C02_write 0xa0 //写#define C02_read 0xa1 //读sbit SCL=P1^4; //时钟sbit SDA_EEPROM=P1^5; //数据bit ack;bit dd;uchar New[2]=""; //使用者密码uchar Old[2]=""; //IIC密码//------------24c02---------------------sbit S1 = P3^0;//Pin4/***********************************************************************/ void delay1(uchar MS);unsigned char ReadTemperature(void);void Init_DS18B20(void);unsigned char ReadOneChar(void);void WriteOneChar(unsigned char dat);/************************************************************************/sbit RS = P2^4;//Pin4sbit RW = P2^5; //Pin5sbit E = P2^6;//Pin6sbit out = P1^0;//Pin6#define Data P0 //数据端口char data TimeNum[]=" ";char data Test1[]=" ";void Delay(uint z){uint x,y;for(x=z;x>0;x--)for(y=110;y>0;y--);}/******************************************************************//* 函数声明*//******************************************************************//*********** ****************************************************/void DelayUs(unsigned char us)//delay us{unsigned char uscnt;uscnt=us>>1;/* Crystal frequency in 12MHz*/while(--uscnt);}/******************************************************************/void DelayMs(unsigned char ms)//delay Ms{while(--ms){DelayUs(250);DelayUs(250);DelayUs(250);DelayUs(250);}}void WriteCommand(unsigned char c){DelayMs(5);//short delay before operationE=0;RS=0;RW=0;_nop_();E=1;Data=c;E=0;}/****************************************************************/ void WriteData(unsigned char c){DelayMs(5); //short delay before operationE=0;RS=1;RW=0;_nop_();E=1;Data=c;E=0;RS=0;}/*********************************************************************/ void ShowChar(unsigned char pos,unsigned char c){unsigned char p;if (pos>=0x10)p=pos+0xb0; //是第二行则命令代码高4位为0xcelsep=pos+0x80; //是第二行则命令代码高4位为0x8WriteCommand (p);//write commandWriteData (c); //write data}/*************************************************************************/ void ShowString (unsigned char line,char *ptr){unsigned char l,i;l=line<<4;for (i=0;i<16;i++)ShowChar (l++,*(ptr+i));//循环显示16个字符}/*********************************************************************/ void InitLcd(){DelayMs(15);WriteCommand(0x38); //display modeWriteCommand(0x38); //display modeWriteCommand(0x38); //display modeWriteCommand(0x06); //显示光标移动位置WriteCommand(0x0c); //显示开及光标设置WriteCommand(0x01); //显示清屏}////////////////////2402/////////////////////////////////////--------------------------------------------------------- void delay_ms(uchar i){uchar j;for(;i>0;i--)for(j=124;j>0;j--);}void I2C_start(void){SDA_EEPROM=1;SCL=1;_nop_();_nop_();_nop_();_nop_();_nop_();SDA_EEPROM=0;_nop_();_nop_();_nop_();_nop_();_nop_();SCL=0;_nop_();_nop_();}void I2C_stop(void){SDA_EEPROM=0;_nop_();_nop_();_nop_();_nop_();_nop_();SDA_EEPROM=1;_nop_();_nop_();_nop_();_nop_();_nop_();SCL=0;_nop_();_nop_();}void I2C_ackownledge(void) {SDA_EEPROM=0;_nop_();_nop_();SCL=1;_nop_();_nop_();_nop_();_nop_();_nop_();SCL=0;_nop_();_nop_();}void I2C_no_ackownledge(void){SDA_EEPROM=1;_nop_();_nop_();SCL=1;_nop_();_nop_();_nop_();_nop_();_nop_();SCL=0;_nop_();_nop_();_nop_();}void I2C_sendB(uchar byte){uchar counter;for(counter=0;counter<8;counter++){if(byte&0x80) SDA_EEPROM=1;else SDA_EEPROM=0;_nop_();SCL=1;_nop_();_nop_();_nop_();_nop_();_nop_();SCL=0;_nop_();_nop_();byte<<=1;}_nop_();_nop_();SDA_EEPROM=1;_nop_();_nop_();_nop_();SCL=1;_nop_();_nop_();_nop_();if(SDA_EEPROM==0) ack=1;else ack=0;SCL=0;_nop_();_nop_();}uchar I2C_receiveB(void){uchar temp;uchar counter;temp=0;SDA_EEPROM=1;_nop_();_nop_();for(counter=0;counter<8;counter++){_nop_();_nop_();_nop_();_nop_();_nop_();SCL=1;_nop_();_nop_();if(SDA_EEPROM==1) t emp=(temp<<1)|0x01;else temp=temp<<1;_nop_();_nop_();SCL=0;_nop_();_nop_();_nop_();}_nop_();_nop_();return(temp);}/*bit I2C_write_byte(uchar byte,uchar address){I2C_sendB(address);if(ack=0){I2C_stop();return(0);}else I2C_sendB(byte); *///存UserPasswordbit I2C_send_string(uchar no,uchar address) {uchar counter;for(counter=0;counter<no;counter++){I2C_start();I2C_sendB(C02_write);if(ack==0) return(0);I2C_sendB(address+counter);if(ack==0) return(0);I2C_sendB(New[counter]);I2C_stop();delay_ms(20);}return(1);}//读EEPROMPasswordbit I2C_receive_string(uchar no,uchar address) {uchar counter;for(counter=0;counter<no;counter++){I2C_start();I2C_sendB(C02_write);if(ack==0) return(0);I2C_sendB(address+counter);if(ack==0) return(0);I2C_start();I2C_sendB(C02_read);if(ack==0) return(0);Old[counter]=I2C_receiveB();I2C_no_ackownledge();I2C_stop();}}//-----------------------------------------------------------////////////////////2402/////////////////////////////////////////////*中断开始*//*********延时K*1ms,12.000mhz**********/void int0_isr(void) interrupt 0 /*外部中断0,接P3.2口*/{unsigned int temp;zd++; //中断次数time=count; //中断次数TR0=0; //关定时器temp=TH0; //定时器高temp=((temp << 8) | TL0); //定时器值TH0=0x3c; //定时器0 15535 65535-15535 =50000 us TL0=0xaf; //定时器0 15535 65535-15535 =50000 us count=0; //0TR0=1; //启动定时器time=time*50000+temp; //中断次数*50000+temp 总的时间。

相关文档
最新文档