版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、单片机原理及应用单片机原理及应用A课程设计课程设计 学 院: 电 气 工 程 学 院 题 目: 基于单片机的里程表设计 起止时间: 2016年8月22日至2016年9月9日 学 生 姓 名: 专 业 班 级: 指 导 教 师: 教研室主 任: 院 长: 2016年8月20日单片机原理及应用单片机原理及应用A课程设计课程设计任务书任务书学 院: 电气工程学院 题 目: 基于单片机的里程表设计 起止时间: 2016年8月22日至2016年9月9日 学 生 姓 名: 专 业 班 级: 指 导 教 师: 教研室主 任: 院 长: 2016年8月20日一一. . 课程设计内容课程设计内容 完成一个基于单
2、片机的里程表设计。课程设计内容如下:1 系统功能2 系统方案设计3. 系统硬件电路的设计3.1单片机系统及显示电路3.2霍尔元件测速模块电路3.3 里程数据存储模块电路4. 系统程序的设计4.1霍尔模块测速的算法设计4.2主程序流程图4.3霍尔模块测速数据接收中断程序5. 调试及性能分析5.1调试5.2性能指标6. 收获与体会7. 参考文献8. 附录1:源程序清单. 附录2:制作实物照片二二. 课程设计要求课程设计要求 1.课程设计报告写作请参考“课程设计报告写作的内容、要求与应注意的一些问题课程设计报告写作的内容、要求与应注意的一些问题”。所有的文档和表格必须采用Word形式,格式按照“课程
3、设计报告写作的内容、要求与应注课程设计报告写作的内容、要求与应注意的一些问题意的一些问题”要求。2.设计报告中的电原理图,设计报告中的电原理图,PCB图、元器件布局图必须采用自己画的图。不能够抄袭别图、元器件布局图必须采用自己画的图。不能够抄袭别人的应用电路、程序、人的应用电路、程序、PCB图,必须自己完成,抄袭图,必须自己完成,抄袭者和被抄袭者都不及格。者和被抄袭者都不及格。3.设计资料中的有关的公式可以直接采用。设计资料中有关的曲线图可以直接采用,成文时根据需要选用(可放大300倍后裁剪到Word文档中),以图文清晰为标准。4.英文资料中的图可以直接采用(可放大300倍后裁剪到Word文档
4、中),图中的英文可以采用英文(中文)方式翻译在图下或者文章中。5.英文资料中的一些词,如果翻译拿不准,可以采用英文(中文)方式标注。6. 课程设计报告需要写自己的收获和体会。不能够抄袭别人的收获和体会,不能够抄袭别人的收获和体会,雷同者不及雷同者不及格。格。7. 每个人需要交文字稿和电子稿,采用2003Word(或者更高版本)文档形式。三三. 课程设计进度(时间)安排课程设计进度(时间)安排课程设计进度(时间)安排如下: 1. 2016年8月22日2016年8月24日 理解课程设计题目的设计要求,查阅相关资料;2. 2016年8月25日2016年9月4日 完成各部分电路设计及系统调试;3. 2
5、016年9月5日2016年9月6日 完成课程设计初稿;4. 2016年9月7日2016年9月8日完成完整的课程设计报告;5. 2016年9月9日 上交课程设计作品并答辩。四四. 参考文献参考文献(1)黄智伟. 凌阳单片机课程设计指导M北京:北京航空航天大学出版社,2007(2)周航慈.单片机程序设计基础M北京:北京航空航天大学出版社,1997(3)求实科技.单片机典型模块设计实例导航M北京:人民邮电出版社,2004(4)余永权.89系列(MCS-51)Flash单片机原理及应用M北京:电子工业出版社,2003(5)王幸之.单片机应用系统电磁干扰与抗干扰技术M北京:北京航空航天大学出版社,200
6、6(6)黄智伟全国大学生电子设计竞赛技能训练M北京:北京航空航天大学出版社,2007(7)黄智伟印制电路板(PCB)设计技术与实践(第二版)M北京:电子工业出版社,2012(8)郭天祥.新概念51单片机C语言教程:入门 提高 开发 拓展全攻略M北京:电子工业出版社,2009 指导老师:黄智伟指导老师:黄智伟 2016年8月20日 南华大学电气工程学院课程设计摘要:摘要:本次设计是采用MSC-51系列单片机中的STC89C52RC和YL-57霍尔传感器模块以及24C02B(E2PROM)模块构成的低成本电子式里程表。单片机STC89C52RC是一款低功耗、高性能的CMOS8位单片机,由于它强大的
7、功能和低价位,因此在很多领域都是用它。YL-57霍尔传感器模块是有磁场切割就有TTL电平信号输出,该模块包括一个74HC04和一块3144霍尔传感器,该产品具有品质卓越、超快响应、抗干扰能力强、性价比极高等优点。设计主要包括硬件电路的设计和系统软件的设计。硬件电路主要包括单片机、霍尔磁感应检测模块、显示模块、蜂鸣器以及控制设备等5部分。由LCD1602液晶模块构成系统显示模块;测速控制电路由YL-57霍尔传感器模块和预设速度值比较警告电路组成,同时将行驶里程数存入E2PROM使里程数断电不丢失;用户根据需要预先输入车轮周长和限速速速,测量实际行驶速度,发出警告信号(蜂鸣器蜂鸣),敦促驾驶员减速
8、行驶。软件部分包括了主程序、显示子程序、E2PROM读写子程序。 关键词关键词:STC89C52RC;YL-57霍尔传感器模块;24C02B(E2PROM) 模块南华大学电气工程学院课程设计目 录1. 系统功能.12. 系统方案设计.23. 系统硬件电路的设计.93.1单片机系统及显示电路.93.2 霍尔元件测速模块电路.123.3 里程数据存储模块电路.124. 系统程序的设计.124.1霍尔模块测速的算法设计.124.2系统流程图.134.3霍尔模块测速数据接收中断程序.135. 调试及性能分析. .145.1调试.145.2性能指标.146. 收获与体会.147. 参考文献.168. 附
9、录1:源程序清单.17附录2:制作实物照片.17南华大学电气工程学院课程设计第 1 页 共 36页1.系统功能随着现代科学技术的发展,人们使用不同手段外出的机会逐渐增多,像单车、摩托、汽车、巴士等。然而这些各不相同的交通工具由于应用场合和自身结构设计的不同产生了各种各样的车速里程表,即使同一种类的交通工具也因测速方法和生产厂家的不同产生了不同型号的车速里程表。种类繁多的行车里程表,不仅减小了里程表的适用范围,降低了器件的通用性,更给这些交通工具的维护更换带来不小困难,而且由于量产规模的减小增加了单个里程表的价格。同时市场上销售的很多里程表功能单一,无法满足不同用户对单里程、总里程、超速报警等各
10、种功能的需求。在这种背景下,这次课设希望设计出一种精度高、可靠性高、价格合适、功能丰富且的电子里程表。在本课设中,利用安装在汽车转轴上的磁铁,在汽车行驶中,磁铁随着车轮做圆周运动,从而使霍尔元件产生脉冲,这些脉冲可由单片机外部中断INT0记录,再通过相关公式计算得到车速及里程信息,用一个LCD1602显示,从而得到车速和里程等信息。在里程信息的存储功能上,采用了广泛使用的串行EEPROM芯片AT24C02N,每秒将芯片内的里程信息更新一次,掉电情况下也不会丢失里程数据。以单片机为核心的智能电子里程表,不仅可以显示车辆行驶的总里程,还可以显示车速,以及实现超速报警等功能,并具有较强的再开发能力。
11、该系统可以方便的实现汽车速度、行驶里程的测量和显示,它使用起来相当方便,具有精度高、量程宽、灵敏度高、体积小、功耗低等优点,有利于我们日常生活和汽车生产业的发展,也可以当作测速处理模块嵌入其它系统中。该系统结构简单,抗干扰能力强,适合于多种环境下进行速度里程测量,有广泛的应用前景。南华大学电气工程学院课程设计第 2 页 共 36页2. 系统方案论设计2.1设计过程一个以单片机为核心的电子里程表,需要实现的功能为:(1)能够准确的显示当前的行驶速度以及行驶的距离。(2)一旦发现超过了当前速度预设速度值,蜂鸣器蜂鸣警报驾驶员减速行驶,速度恢复正常停止警报。(3)系统的显示方式为采用LCD1602液
12、晶屏显示。(4)系统通过将里程数据写入EEPROM芯片AT24C02中,保证在掉电情况下也不会丢失里程数据。(5)通过扫描按键的方式,当按下指定按键后可以将总里程数清零,实现总里程重新计数。2.2设计总体方案及其论证本设计要实现的功能是:实时显示当前行驶速度值,并且在当前速度超过系统预设速度时,系统会以蜂鸣器鸣响的方式进行警报提示,敦促驾驶员减速到安全速度,蜂鸣器停止鸣响,系统通过IIC总线协议将当前里程数写入EEPROM芯片实现断电记忆功能。1) 速度测量:对当前行驶速度进行测量与限制数值比较并在显示器显示。 2) 显 示:LCD1602就地显示此时此刻行驶速度和行驶的总里程数据。 3) 里
13、程存储:通过每秒操作EEPROM将里程数据写入,提供里程数断电保护功能。同时通过按键实现清零功能。依据功能设定,本系统主要分为以下三个模块:(1) 速度值采集模块(2) 数据处理模块(3) 用户交互模块 其中速度值采集模块使用的是YL-57霍尔传感器模块,它使用单路TTL电平信号输出,接口简单,而且无需校准。测速电路搭建简单。南华大学电气工程学院课程设计第 3 页 共 36页数据处理模块使用的是STC89C52RC单片机,其完成霍尔传感器数据的采集、运算和逻辑控制的功能。通过运算计算出当前速度值以及行驶的总里程数。同时与系统预设安全行驶速度进行比较,提示驾驶员是否超速行驶,并将里程数据存储到外
14、部EEPROM。用户交互模块主要由按键、1602点阵液晶、蜂鸣器构成。其中按键用于用户清零总里程数据,1602用于当前速度,总里程显示,蜂鸣器用于提示用户。按照系统的设计功能所要求的,电子里程表系统原理图如下图2.2.1所示:图2.2.1 电子里程表系统原理图单片机作为主控制器,主要负责处理由霍尔传感器送来的电平数,并把处理好的数据送向显示器模块,霍尔传感器主要用来采集车轴的转动圈数信息,并把所采集到得数据送向单片机,按键电路主要是用来完成单片机的复位操作和里程数的清零操作。蜂鸣器电路就是用三极管来实现控制的,用来提示用户已超过设定的安全速度。2.3 器件选定2.3.1霍尔传感器霍尔传感器是根
15、据霍尔效应制作的一种磁场传感器霍尔效应是磁电效应的一种,这一现象是霍尔(A.H.Hall,18551938)于1879年在研究金属的导电机构时发现的。后来发现半导体、导电流体等也有这种效应,而半导体的霍尔效应比金属强得多,利用这现象制成的各种霍尔元件,广泛地应用于工业自动化技术、检测技术及信息处理等方面。YL-独立按键霍尔传感器LCD1602EEPROM警报(蜂鸣器)单片机STC89C52RC南华大学电气工程学院课程设计第 4 页 共 36页57霍尔传感器模块是利用霍尔效应把强弱交替的磁信号转换为电平脉冲信号的器件。把霍尔3144安装在靠近车轮的固定支架上,磁铁安装在随车轮转动的地方,当磁铁靠
16、近3144时,霍尔第三脚输出0V电平,YL-57模块将3144信号处理后以TTL电平信号通过DO脚输出,模块无触发,输出低电平,模块有触发,输出高电平。单片机通过相关公式算出里程、速度等各值。YL-57霍尔传感器的优点是稳定可靠和安装简易。图2.3.1 YL-57霍尔传感器实物图YL-57霍尔传感器产品参数:模块说明1 .尺寸:2.7 cm* 1.4 cm2 .主要芯片:74HC04 、3144 霍尔传感器3 .工作电压:直流 5 伏接口说明1 .VCC 外接 5V 电压2 .GND 外接 GND3 .DO 小板数字量 开关量 输出接口( 0 和 1 )2.3.2 3144电气特性VDD=8V
17、,T = 25。电气特性如表2.3.1。表2.3.1 3144霍尔传感器电气特性南华大学电气工程学院课程设计第 5 页 共 36页2.3.3引脚说明YL-57霍尔传感器模块引脚说明如表2.3.3所示:表2.3.3 YL-57霍尔传感器模块引脚说明pin名称注释1VCC外接5V电压2GND外接地GND3DO数字量输出接口(0和1)2.4 STC89C52RC单片机2.4.1单片机介绍STC89C52RC是一种带4K字节闪烁可编程可擦除只读存储器(FPEROMFalsh Programmable and Erasable Read Only Memory)的低电压,高性能CMOS8位微处理器,俗称
18、单片机2。该器件采用STC高密度非易失存储器制造技术制造,与工业标准的MCS-51指令集和输出管脚相兼容。由于将多功能8位CPU和闪烁存储器组合在单个芯片中,STC的STC89C52RC是一种高效微控制器,为很多嵌入式控制系统提供了一种灵活性高且价廉的方案。STC89C52RC功能强大,价格低廉,可靠耐用,拥有很强的保密功能。STC89C52RC引脚图如图2.4.1所示。南华大学电气工程学院课程设计第 6 页 共 36页图2.4.1 STC89C52RC引脚图2.4.2单片机引脚说明VCC:供电电压。 GND:接地。 P0口:P0口为一个8位漏级开路双向I/O口,每脚可吸收8TTL门电流。当P
19、0口的管脚第一次写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”时,其
20、管脚被内部上拉电阻拉高,且作为输入。并因此作为输入时,P2口的管脚被外部拉低,将输出电流。这是由于内部上拉的缘故。P2口当用于外部程序存储器或16位地址外部数据存储器进行存取时,P2口输出地址的高八位。在给出地址“1”时,它利用内部上拉优势,当对外部八位地址数据存储器进行读写时,P2口输出其特殊功能寄存器的内容。P2口在FLASH编程和校验时接收高八位地址信号和控制信号。 南华大学电气工程学院课程设计第 7 页 共 36页P3口:P3口管脚是8个带内部上拉电阻的双向I/O口,可接收输出4个TTL门电流。当P3口写入“1”后,它们被内部上拉为高电平,并用作输入。作为输入,由于外部下拉为低电平,P
21、3口将输出电流(ILL)这是由于上拉的缘故。 RST:复位输入。当振荡器复位器件时,要保持RST脚两个机器周期的高电平时间。ALE/PROG:当访问外部存储器时,地址锁存允许的输出电平用于锁存地址的低位字节。在FLASH编程期间,此引脚用于输入编程脉冲。在平时,ALE端以不变的频率周期输出正脉冲信号,此频率为振荡器频率的1/6。因此它可用作对外部输出的脉冲或用于定时目的。然而要注意的是:每当用作外部数据存储器时,将跳过一个ALE脉冲。如想禁止ALE的输出可在SFR8EH地址上置0。此时, ALE只有在执行MOVX,MOVC指令是ALE才起作用。另外,该引脚被略微拉高。如果微处理器在外部执行状态
22、ALE禁止,置位无效。 XTAL1:反向振荡放大器的输入及内部时钟工作电路的输入。XTAL2:来自反向振荡器的输出。P3口除了作为普通I/O口,还有第二功能:表2.4.1 P3口的第二功能端口引脚功能特性P3.0串行输入口(RXD)P3.1串行输出口(TXD)P3.2外中断0(INTO)P3.3外中断1(INT1)P3.4定时/计数器0的外部输入口(T0)P3.5定时/计数器1的外部输入口(T1)P3.6外部数据存储器写选通(WR)P3.7外部数据存储器读选通(RD) 2.4.3单片机最小系统所谓单片机的最小系统是指使单片机能运行程序、正常工作的最简单电路系统,是保证单片正常启动、开始工作的必
23、须电路,缺一不可。单片机最小系统一般由单片机、程序存储器、时钟电路和复位电路组成。对于STC89C52RC单片机南华大学电气工程学院课程设计第 8 页 共 36页,由于片内有4K的程序存储器,所以其最小系统除了单片机本身外,只需外接时钟电路与复位电路即可。2.5 中断系统2.5.1中断 程序执行过程中,允许外部或内部事件通过硬件打断程序的执行,使其转向为处理内部事件的中断服务程序中去;完成中断服务的程序后,CPU继续原来被打断的程序,这样的过程称为中断过程。2.5.2 中断的产生 能产生中断的外部和内部事件。STC89C52RC有5个中断源:(1)INT0:外部中断0请求,低电平有效。通过P3
24、.2引脚输入。(2)INT1:外部中断1请求,低电平有效。通过P3.3引脚输入。(3)T0:定时器/计数器0溢出中断请求。(4)TI:定时器/计数器1溢出中断请求。(5)TXD/RXD:串行口中断请求。当串行口完成一帧数据的发送或接收时,便请求中断。每一个中断源都对应一个中断请求标志位,它们设置在特殊功能寄存器TCON和SCON中。当这些中断源请求中断时,相应的标志分别有TCON和SCON中的相应位来锁存。2.6 复位电路图2.6.1 单片机复位电路原理图南华大学电气工程学院课程设计第 9 页 共 36页 复位是单片机的初始化操作。其主要功能使单片机从0000H单元开始执行程序。除了进入系统的
25、正常初始化之外,当由于程序运行出错或操作错误使系统处于死锁状态时,为摆脱困境,也需按复位键重新启动。2.7 时钟电路图2.7.1单片机时钟电路原理图时钟电路可以简单定义如下:1.就是产生象时钟一样准确的振荡电路;2.任何工作都按时间顺序。用于产生这个时间的电路就是时钟电路。时钟电路一般由晶体震荡器、晶震控制芯片和电容组成。时钟电路应用十分广泛,如电脑的时钟电路、电子表的时钟电路以及MP3、MP4的时钟电路。时钟电路用于产生单片机的基本时钟信号,是用来配合外部晶体实现振荡的电路,这样可以为单片机提供运行时钟,如果运行时钟为0 的话,单片机就不工作,当然超出单片机的工作频率的时钟也会导致单片机不工
26、作。时钟电路是微型计算机的心脏,它控制着计算机的工作节奏,CPU就是通过复杂的时序电路完成不同的指令功能的。MCS-51的时钟信号可以由两种方式:一种是内部方式,利用芯片内部的振荡电路,产生时钟信号:另一种为外部方式,时钟信号由外部引入。如果没有时钟电路来产生时钟驱动单片机,单片机是无法工作的12。AT89S51的时钟信号可由内部振荡器产生,也可由外部电路直接提供。内部振荡器的输入和输出脚分别为XTAL1和XATL2,由XTAL2给单片机内部电路提供时钟信号。当时钟信号由外部电路提供时,外部时钟引入XTAL2,而XTAL1脚接地。2.8 LCD南华大学电气工程学院课程设计第 10 页 共 36
27、页2.8.1 LCD1602液晶简介字符型液晶显示模块是一种专门用于显示字母、数字、符号等点阵式LCD,目前常用16*1,16*2,20*2和40*2行等的模块。2.8.2 LCD1602的主要技术参数1602的主要技术参数如表2.8.1 所示,LCD1602的管脚图如图2.8.2 所示:表2.8.1 1602的主要技术参数工作电压:4.55.5V容量162个字符最佳工作电压 5.0V工作电流2.0mA字符尺寸2.954.35(WH)mm图2.8.1 LCD1602的管脚原理图2.8.3 LCD1602的RAM地址映射及标准字库表液晶显示模块是一个比较慢的显示器件,因此在执行指令之前要首先确认
28、模块的忙标志处于低电平,表示空闲,不然此指令失效,输入显示字符地址后会显示字符,图2.8.3是1602的内部显示地址。南华大学电气工程学院课程设计第 11 页 共 36页图2.8.2 1602LCD内部显示地址3. 系统硬件电路的设计本系统主要硬件设计包括电源电路、蜂鸣器电路、晶振电路、EEPROM电路、LCD显示电路以及霍尔传感器电路等。 3.1 单片机系统及显示电路3.1.1单片机系统单片机最小系统,或者称为最小应用系统,是指用最少的元件组成的单片机可以工作的系统。对51系列单片机来说,最小系统一般应该包括:单片机、晶振电路、上电复位电路。图3.1.1 单片机最小系统电路原理图南华大学电气
29、工程学院课程设计第 12 页 共 36页3.1.2显示电路 在日常生活中,我们对液晶显示器并不陌生,它已作为很多电子产品的通过器件,比方在计算器、万用表、电子表及很多家用电子产品中都可以看到,显示的主要是数字、专用符号和图形。显示模块选用1602字符型液晶模块,它是目前工控系统中使用最广泛的液晶屏之一,由于它显示的质量高,电路图如图3.2.5所示,1602字符型液晶模块是点阵型液晶,驱动方便,经过编程后显示内容多样化。3.2 霍尔模块测速模块电路YL-57霍尔传感器模块属于开关型传感器,1脚接5V电平即电源VCC端,2脚接0V电平即电源GND端,3脚接STC89C52RC单片机的P32口,霍尔
30、3144工作电压为(4.524V),范围很宽,方便不同场合应用。输出的是TTL电平。当磁铁南极靠近霍尔3144时,施加的磁场强度达到工作点,模块D施密特触发器输出高电平,三极管导通,模块E输出低电平,此时为开状态。反之霍尔3144为高电平5V。施密特触发器整形之后就变成方波脉冲输出。霍尔元件具有在静止状态下感受磁场的能力,且结构简单,形小体轻,频带宽(可从直流到微波),动态特性好、动态范围大,寿命长和可进行非接触测量等优点,所以选择霍尔传感器作为本次设计的要素。里程、速度等都是由霍尔元器件测量。将所测的速度与累计里程数显示出来,主要是将传感器输入到单片机的脉冲信号的频率(传感器将不同车速转变成
31、不同频率的脉冲信号)实时地测量出来,然后通过单片机计算出速度和里程。如图3.1.2所示:南华大学电气工程学院课程设计第 13 页 共 36页图3.1.2 霍尔传感器模块电路原理图3.3 里程数据存储模块电路AT24C02是断电不丢失数据的串行EEPROM芯片,该芯片的存储容量为2KB(256*8Bit)。可以反复擦写十万次以上,芯片里的数据可保存100年。AT24C02的引脚(如图3.1.3)功能简绍如下:A0A2为可编程地址输入端,可在同一系统中接8块该芯片,芯片地址由A0A2的值决定,即从000111。(图中为pin1pin3引脚) VSS为电源地引脚,接0V电平GND。 SDA串行数据输
32、入/输出端。里程表系统中接STC89C52RC单片机P31口。 SCL串行时钟输入端。里程表系统中接STC89C52RC单片机P30口。 WP写保护端口。作用是保护硬件数据。该引脚接高电平表示只能对该芯片进行读操作而不能改变芯片里的数据,接低电平表示可以对该芯片进行读和写的操作。本系统需要对该芯片进行读和写的操作,因此在里程表系统中接0V电平GND。 VCC电源正端。接5V电平VCC引脚。 在里程表系统中,SDA和SCL两个引脚需要接一个5K左右的上拉电阻,以保证不会出现数据的错误读写。A0A2和WP引脚直接接GND引脚,即该芯片在本系统中的地址为000,而且可以对该芯片进行读和写操作。图3.
33、3.1 AT24C02引脚图南华大学电气工程学院课程设计第 14 页 共 36页图3.3.2 AT24C02电路原理图4. 系统程序的设计4.1 霍尔模块测速的算法设计在车轮转动一圈中,霍尔电路只能导通一次,即发生一次电平跳变。如果知道车轮的周长,利用单片机记录若干时间内脉冲变化的次数,然后就可以算出汽车的车速和所行使的里程了,计算如下: 设汽车单位时间车轮转动圈数为num 汽车单位时间行驶路程为mile(m) 汽车车速为speed(km/h) 汽车车轮周长为cricle(m) mile=num*cricle speed=num*cricle*3600/10004.2主程序流程图本系统设计好硬
34、件电路后,就需要设计系统程序了。程序按不同的功能可以分为六部分,分别是:显示程序、存储程序、按键程序、数据处理程序。首先在主程序部分对报警接口进行初始化,使其上电后不会报警,再打开外中断、定时器溢出中断等并给定时器赋初始值,之后进入循环,分别循环扫描显示程序、按键程序、里程计算程序、速度计算程序、存储程序等。系统程序的难点在于LCD1602读写字节程序,由于对延时时长要求很高,很容易出现不显示或不能正确显示。其次是速度计算程序,虽然计算公式符合理论,但总是不能正确显示出速度南华大学电气工程学院课程设计第 15 页 共 36页值,只有加中间变量和一定延时时间才能解决该问题。最后是总里程要求很小的
35、误差,该处程序容易忽略丢失小数位造成的误差。N Y Y 图4.1.1 系统软件流程图4.3 霍尔模块测速数据接收中断程序用外部中断INT0做为计数器,定时器T0定时一秒钟,当一秒钟到了以后,在相应程序中计算出车速送到LCD显示同时显示里程值并将行驶的里程送到存储器中存储。程序示例:void exter0() interrupt 0num+;5. 调试及性能分析5.1 调试在系统调试阶段,发现如下几个问题: (1)车速表调试过程中,发现无论如何修改相关程序,LCD显示器都不能正确显示。起初以为是显示程序的问题,经过仔细分析仿真结果,发现显示器经常处初始化是否到一秒数据处理是否超速开始写入EEPR
36、OM蜂鸣器警报LCD显示等待南华大学电气工程学院课程设计第 16 页 共 36页于忙状态,这说明显示器相关指令延时时间不够。修改相关延时时间后,问题得到改善。 (2)加入总里程功能后,在调试时,发现系统掉电后无法保存总里程数据。反复调试后发现是存储器读写太快的原因造成的。(3)速度值调试时,起初LCD1602显示的速度值很小,显然是错误值。经过再三检查,发现计算速度的公式并没有错误,而是由于缺少中间变量,即现用中间变量计算出速度值,然后再赋给显示速度所用的值,在程序中用speed表示。此外计算出速度后需延时一定时间,否则高速时显示值跳变很厉害。(4)测试按键是否能清零时,发现开始不能清零,排查
37、发现是没有改变当前mile定义的值,加入代码同时清零EEPROM和当前mile参数的值。5.2 性能分析 从系统设计算法来看,因为定义瞬时速度参数Speed为unsigned int类型故当前速度测量误差在1Km/h;总里程显示误差范围0.001Km。从实际使用范围来看,本次课程设计的误差对正常使用没有任何影响,故本次课设完全达到实验预设的结果。该系统基本达到预期效果。6. 收获与体会这次课设题目为基于单片机的电子里程表,按系统所能实现的功能来讲,称其为基于单片机的数字里程表更合适。本系统实现了用LCD1602显示速度、超速提示、总里程、里程值断电保护、里程值清零 。这些不同值的显示通过相关按
38、钮的切换来实现。除了显示功能,还有超速报警功能。另外可通过按钮清零里程值。虽本系统的缺陷在于不能根据车辆所在位置自主设定报警值,也不能提示驾驶者不同路段的限速值和前方是否有违规拍摄等等。在完成这次课设中,我学到了很多以往没有学习过的软硬件知识。毕业之前,通过课设对之前学习过的知识进行了梳理和复习,并且通过自主学习和请教师友也学到了很多课本上没有的知识。 其中最大的收获是编程逻辑能力得到了不小的提高。以前连一个简单的程序都很难独自完成,经过课设设计的考验后,现在却能写出具有一定功能的程序,南华大学电气工程学院课程设计第 17 页 共 36页而且也喜欢上编程了。这次课设也使我认识到电子电路知识的重
39、要性。也让我我认识到,在以后的学习或工作中,不仅要知道各种电子元器件如何接,更要明白为什么这样接,同时也要注意细节。做到刨根问底,从头学习电路知识。7. 参考文献1.谭浩强.C程序设计M.北京:清华大学出版社,2005.07.2.汤武辉.Proteus仿真软件与单片机实验教学.长江大学学报(自然版),2010,(3)南华大学电气工程学院课程设计第 18 页 共 36页:33-36.3.王剑,朱涛,李冬.protel 99se电路仿真在电子实验教学中的应用.2010,(5):38-40.4.董春兰. 智能车速里程表的设计J.http:/ 5.徐寒,徐健健.智能速度里程表设计J.电子测量技术,20
40、05,16,(2):7-9. 6.徐春河.浅谈AT89S51.制造业自动化,2010,(12):6.7.佚名.智能速度里程表设计J. http:/ /20060311097.html,2006.03.8.吴汉清.常用的典型单片机资料.无线电,2007,(11):50-57.9.佚名.基于AT89C51单片机的转速测量系统设计J.http:/ ,2010.05.10.李姿,宋洋.基于单片机的智能车速里程表的设计J.黑龙江科技信息,2011,12. 11.佚名.自行车测速仪J.http:/ 提高 开发 拓展全攻略M北京:电子工业出版社,2009.14.黄智伟全国大学生电子设计竞赛技能训练M北京:北
41、京航空航天大学出版社,2007.8. 附录1:源程序清单/*主函数模块*/*文件名: demo2/main.c */南华大学电气工程学院课程设计第 19 页 共 36页#include lcd1602.h#include main.h#include e2pr.hunsigned int v,quanshu=0; /储存车轮一秒内转过的圈数unsigned int s; /储存里程数unsigned char count; /储存定时器T0中断次数bit flag; /计满1秒钟标志位/*函数功能:延时1ms(3j+2)*i=(333+2)10=1010(微秒),可以认为是1毫秒*/void
42、delay1ms() unsigned char i,j; for(i=0;i10;i+) for(j=0;j33;j+) ; /*函数功能:延时若干毫秒入口参数:n*/ void delay(unsigned char n) unsigned char i;for(i=0;in;i+) delay1ms(); /*南华大学电气工程学院课程设计第 20 页 共 36页函数功能:扫描里程清零按键(ESC)是否按下返回参数:1按下按键 0没有按下按键*/ unsigned char key(void) KeyOut1 = 0;KeyOut2 = 1;KeyOut3 = 1;KeyOut4 = 1;
43、if (KeyIn1 = 0) /K1=0? delay(20); /延时20ms return 1; return 0; /*函数功能:超速蜂鸣器警报返回参数:无*/void runbuzz(void)unsigned int i=0,j=0,n=100;while (n-)BUZZ = BUZZ;for (i=0; i 100)j = 0;/*函数功能:主函数*/ void main(void) unsigned char L,H; / L低8位,H高8位 H=i2c_readbyte(0 x00); L=i2c_readbyte(0 x01); s=H*256 + L; BUZZ=1;
44、LcdInitiate(); /调用LCD初始化函数 TMOD=0 x51; /定时器T0工作于计时模式1;TH0=(65536-46083)/256; /定时器T0的高8位设置初值,每50ms产生一次中断TL0=(65536-46083)%256; /定时器T0的低8位设置初值,每50ms产生一次中断EA=1; /开总中断ET0=1; /定时器T0中断允许TR0=1; /启动定时器T0IT0=1; /外部中断0请求触发方式 EX0=1;IP=0X01;count=0; /将T0中断次数初始化为0display_sym(); /显示速度提示符 display_val(000); /显示器工作正
45、常标志南华大学电气工程学院课程设计第 22 页 共 36页 display_unit(); /显示速度单位 while(1) /无限循环 if(key() i2c_writebyte(0 x00, 0 x00); delay(10); i2c_writebyte(0 x01, 0 x00); H=i2c_readbyte(0 x00); L=i2c_readbyte(0 x01); s=H*256 + L;flag=0; /时间还未满1秒钟 while(flag=0); /时间未满等待 v=(quanshu*2*3.6);if(v50) runbuzz();s=(quanshu*2)+s;qu
46、anshu=0; display_val(v); /显示速度 display_mil(s);/显示里程 H=s/256;L=s%256; i2c_writebyte(0 x00, H);delay(10); i2c_writebyte(0 x01, L); /*函数功能:定时器T0的中断服务函数*/南华大学电气工程学院课程设计第 23 页 共 36页void Time0(void ) interrupt 1 using 1 /定时器T0的中断编号为1,使用第1组工作寄存器 count+; /T0每中断1次,count加1 if(count=20) /若累计满20次,即计满1秒钟 flag=1;
47、 /计满1秒钟标志位置1 count=0; /清0,重新统计中断次数 TH0=(65536-46083)/256; /定时器T0高8位重新赋初值 TL0=(65536-46083)%256; /定时器T0低8位重新赋初值 /*函数功能:外部中断0服务函数(霍尔)P3.2口*/void exter0() interrupt 0quanshu+;/*LCD1602初始化显示函数模块*/*文件名: demo2/lcd1602.c */#include lcd1602.h#include main.h unsigned char code digit =0123456789;/*函数功能:判断液晶模块
48、的忙碌状态返回值:result。result=1,忙碌;result=0,不忙*/南华大学电气工程学院课程设计第 24 页 共 36页 unsigned char BusyTest(void) bit result;RS=0; /根据规定,RS为低电平,RW为高电平时,可以读状态 RW=1; E=1; /E=1,才允许读写 _nop_(); /空操作 _nop_(); _nop_(); _nop_(); /空操作四个机器周期,给硬件反应时间 result=BF; /将忙碌标志电平赋给result E=0; /将E恢复低电平 return result; /*函数功能:将模式设置指令或显示地址写
49、入液晶模块入口参数:dictate*/void WriteInstruction (unsigned char dictate) while(BusyTest()=1); /如果忙就等待 RS=0; /根据规定,RS和R/W同时为低电平时,可以写入指令 RW=0; E=0; /E置低电平(根据表8-6,写指令时,E为高脉冲, / 就是让E从0到1发生正跳变,所以应先置0 _nop_(); _nop_(); /空操作两个机器周期,给硬件反应时间南华大学电气工程学院课程设计第 25 页 共 36页 P0=dictate; /将数据送入P0口,即写入指令或地址 _nop_(); _nop_(); _
50、nop_(); _nop_(); /空操作四个机器周期,给硬件反应时间 E=1; /E置高电平 _nop_(); _nop_(); _nop_(); _nop_(); /空操作四个机器周期,给硬件反应时间 E=0; /当E由高电平跳变成低电平时,液晶模块开始执行命令 /*函数功能:指定字符显示的实际地址入口参数:x*/ void WriteAddress1(unsigned char x) WriteInstruction(x|0 x80); /显示位置的确定方法规定为80H+地址码x void WriteAddress2(unsigned char x) WriteInstruction(x
51、|0 xC0); /显示位置的确定方法规定为C0H+地址码x /*函数功能:将数据(字符的标准ASCII码)写入液晶模块入口参数:y(为字符常量)南华大学电气工程学院课程设计第 26 页 共 36页*/ void WriteData(unsigned char y) while(BusyTest()=1); RS=1; /RS为高电平,RW为低电平时,可以写入数据 RW=0; E=0; /E置低电平(根据表8-6,写指令时,E为高脉冲, / 就是让E从0到1发生正跳变,所以应先置0 P0=y; /将数据送入P0口,即将数据写入液晶模块 _nop_(); _nop_(); _nop_(); _n
52、op_(); /空操作四个机器周期,给硬件反应时间 E=1; /E置高电平 _nop_(); _nop_(); _nop_(); _nop_(); /空操作四个机器周期,给硬件反应时间 E=0; /当E由高电平跳变成低电平时,液晶模块开始执行命令 /*函数功能:对LCD的显示模式进行初始化设置*/void LcdInitiate(void) delay(15); /延时15ms,首次写指令时应给LCD一段较长的反应时间 WriteInstruction(0 x38); /显示模式设置:162显示,57点阵,8位数据接口南华大学电气工程学院课程设计第 27 页 共 36页delay(5); /延
53、时5ms,给硬件一点反应时间 WriteInstruction(0 x38);delay(5);WriteInstruction(0 x38); /连续三次,确保初始化成功delay(5);WriteInstruction(0 x0c); /显示模式设置:显示开,无光标,光标不闪烁delay(5);WriteInstruction(0 x06); /显示模式设置:光标右移,字符不移delay(5);WriteInstruction(0 x01); /清屏幕指令,将以前的显示内容清除delay(5); /* 函数功能:显示速度、里程提示符 */void display_sym(void) Wri
54、teAddress1(0 x00); /写显示地址,将在第1行第1列开始显示WriteData(v); /将字符常量v写入LCDWriteData(=); /将字符常量=写入LCDWriteAddress2(0 x00); /写显示地址,将在第2行第1列开始显示 WriteData(s); /将字符常量s写入LCDWriteData(=); /将字符常量=写入LCD /* 函数功能:显示速度数值 */南华大学电气工程学院课程设计第 28 页 共 36页void display_val(unsigned int x) unsigned char j,k,l; /j,k,l分别储存速度的百位、十位
55、和个位j=x/100; /取百位 k=(x%100)/10; /取十位 l=x%10; /取个位 WriteAddress1(0 x02); /写显示地址,将在第1行第2列开始显示WriteData(digitj); /将百位数字的字符常量写入LCDWriteData(digitk); /将十位数字的字符常量写入LCDWriteData(digitl); /将个位数字的字符常量写入LCD /* 函数功能:显示总里程数值 */ void display_mil(unsigned int x) unsigned char i,j,k,l,m,n; /j,k,l分别储存速度的百位、十位和个位i=x/
56、1000000; /取千位j=(x%1000000)/100000; /取百位 k=(x%100000)/10000; /取十位 l=(x%10000)/1000; /取个位m=(x%1000)/100; /小数点后一位n=(x%100)/10; /小数点后两位WriteAddress2(0 x02); /写显示地址,将在第1行第3列开始显示WriteData(digiti); /将千位数字的字符常量写入LCDWriteData(digitj); /将百位数字的字符常量写入LCDWriteData(digitk); /将十位数字的字符常量写入LCDWriteData(digitl); /将个位
57、数字的字符常量写入LCDWriteData(.);/显示小数点 南华大学电气工程学院课程设计第 29 页 共 36页WriteData(digitm);/将小数点后一位字符常量写入LCDWriteData(digitn);/将小数点后两位字符常量写入LCD /*函数功能:显示速度单位“Km/h” 显示里程单位“Km”*/void display_unit(void) WriteAddress1(0 x05); /写显示地址,将在第1行第7列开始显示WriteData(K); /将字符常量K写入LCDWriteData(m); /将字符常量m写入LCDWriteData(/); /将字符常量/写入LCDWriteData(h); /将字符常量h写入LCDWriteAddress2(0 x09); /写显示地址,将在第2行第10列开始显示WriteData(K); /将字符常量K写入LCDWriteData(m); /将字符常量m写入LCD /*EEPROM AT24C02读写初始化写入字节函数*/*文件名: demo2/e2pr.c */#include main.h#include e2pr.hvo
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2026年林草覆盖率提升与低质低效林改造水土保持效益评估
- 坡面防护工程监理实施细则
- 护理伦理与患者权利保护
- 老年病人临终关怀护理要点
- 混合痔的老年患者护理注意事项
- 2026年AINative网络技术体系网络数据算力深度融合
- 2026年小区防盗安全培训
- 2026年无锡藕塘护理院大头阿亮与86岁蒋奶奶温情互动日常
- 2026年乡村振兴战略专项省级项目竞争性遴选流程
- 糖尿病的分型诊断和治疗管理
- (三调)武汉市2026届高中毕业生三月调研考试化学试卷(含答案)
- 《工程造价管理》中职全套教学课件
- 3 《做个“开心果”》 课件 2025-2026学年道德与法治二年级下册统编版
- 2026届江苏南京市高三一模高考模拟数学试卷(含答案详解)
- 2026年财政局事业单位招聘试题及答案解析
- 2026年六安职业技术学院单招职业适应性考试题库完整答案详解
- 老年大学教师考核制度
- 2025年特种设备安全管理人员A证全国考试题库(含答案)
- 公司档案管理制度与流程
- 控申复赛卷宗材料
- (2026年春季新版本)人教版三年级数学下册全册教案
评论
0/150
提交评论