自行车测速、里程计
- 格式:doc
- 大小:132.50 KB
- 文档页数:9
学号:中州大学毕业设计设计题目:基于单片机的自行车里程速度计设计学院:专业:班级:姓名:指导教师:日期:年月日摘要1目前自行车已成为人们娱乐、休闲、锻炼的首选,尤其是对于用来锻炼的人们,自行车速度里程计让他们清楚地知道当前的速度、里程等物理量,更好的用于锻炼。
本论文主要阐述一种基于霍尔元件的自行车速度里程计设计。
以AT89C51 单片机为核心,A44E 霍尔传感器测转数,实现对自行车速度里程计测量统计。
该速度里程计将传感器输入到单片机的脉冲信号的宽度实时地测量出来,然后通过单片机计算出速度和行程,再将所得的数据存储到串口数据存储器,采用CAT24WC32 实现在系统掉电的时候保存速度和行程信息,并由串口液晶显示模块实时显示出所测速度和行程。
本设计介绍了自行车速度/里程测试仪的硬件电路和软件设计。
硬件部分利用霍尔元件将自行车每转一圈的脉冲数传入单片机系统,然后单片机系统将信号经过处理送显示。
软件部分用汇编语言进行编程,采用模块化设计思想。
该系统硬件电路简单,子程序具有通用性,完全符合设计要求。
关键词:速度/里程;霍尔元件;单片机;LCD液晶显示Abstract2Now the bicycle has become the first choice of entertainmenting and exercising. Especially for people to exercise,The bicycle speed/trip can fulfill the basic need of people’s life, so that they can learn the speed and the mileage of the bicycle. In these paper, the bicycle speed/trip design based on the Hall element is elaborated. By AT89C51 as kernel, using A44E Hall element to measure revolution, the measure and statistic are achieved. The range informations are saved by CAT24WC32 when the power is off, the bicycle speed can be displayed on LCD. In this article, the hardware circuit and software design of bicycle speed/trip instrument are introduced in detail. About the hardware, the pulse number is transmitted of one cycle of the bicycle into Single Chip Microcomputer system. Then the signal processed by Single Chip Microcomputer system is sent to display scream. About the software, in assemble language, the program is designed in the mode of modules. The system has simple hardware, common sub-program, and meet the demand of design.Key words: speed/trip; Hall element; Single Chip Microcomputer; LCD目录一、概述1、设计目的 (1)32、课题简介 (1)二、系统设计1、总体设计方案 (2)2、硬件部分简介 (3)(1)AT89c51芯片简介 (3)(2)硬件设计 (4)3、软件部分 (5)(1)初始化程序 (6)(2)主程序 (8)(3)中断程序 (9)(4)里程、速度处理程序 (11)(5)显示子程序 (14)(6)延时子程序 (16)三、调试 (17)1、硬件调试 (17)2、软件调试 (17)四、操作说明 (19)五、参考文献 (20)六、心得体会 (21)七、附录 (22)1、元器件清单 (22)2、整体原理图 (23)3、完整程序 (24)自行车里程计/速度计的设计一、概述41、设计目的本设计采用AT89C51单片机作控制,利用霍尔元件等器件设计一个可用LED 数码管显示当前自行车行驶的距离及速度并具有超速报警功能的自行车里程/速度表,使其作为自行车的一种辅助工具,让自行车的功用更强大,给人们带来更多的方便。
编号:201234140123 本科毕业论文基于单片机的自行车里程测速仪设计毕业设计(论文)原创性声明和使用授权说明原创性声明本人郑重承诺:所呈交的毕业设计(论文),是我个人在指导教师的指导下进行的研究工作及取得的成果。
尽我所知,除文中特别加以标注和致谢的地方外,不包含其他人或组织已经发表或公布过的研究成果,也不包含我为获得及其它教育机构的学位或学历而使用过的材料。
对本研究提供过帮助和做出过贡献的个人或集体,均已在文中作了明确的说明并表示了谢意。
作者签名:日期:指导教师签名:日期:使用授权说明本人完全了解XX大学关于收集、保存、使用毕业设计(论文)的规定,即:按照学校要求提交毕业设计(论文)的印刷本和电子版本;学校有权保存毕业设计(论文)的印刷本和电子版,并提供目录检索与阅览服务;学校可以采用影印、缩印、数字化或其它复制手段保存论文;在不以赢利为目的前提下,学校可以公布论文的部分或全部内容。
作者签名:日期:I摘要随着居民生活水平的不断提高,自行车不再仅仅是普通的运输、代步的工具,而是成为人们娱乐、休闲、锻炼的首选。
自行车测速仪能够满足人们最基本的需求,让人们能清楚地知道当前的速度、里程、时间等物理量。
本文介绍了一种基于单片机控制的简易自动自行车速度以及里程计算系统,包括自行车里程表的硬件构成,软件逻辑以及程序代码。
该里程测速系统以AT89C51作为系统控制核心,采用霍尔传感器来检测信号,通过一定时间间隔内对信号的采集,结合自行车本身车轮参数,经过单片机对采集信号进行分析计算,最终在LCD上显示车辆行驶里程、平均速度和瞬时速度,并且具有超速报警功能。
该系统硬件电路简单,子程序具有通用性,完全符合设计要求。
为了便于扩展和更改,软件的设计采用模块化结构,使程序设计的逻辑关系更加简洁明了,使硬件在软件的控制下协调运作。
正文中首先简单描述系统硬件工作原理,且附以系统硬件设计框图,论述了本次毕业设计所应用的各硬件接口技术和各个接口模块的功能及工作过程, 并具体描述了AT89C51接口的软、硬件调试;其次阐述了程序的流程和实现过程。
SIGMA BC506 自行车码表使用说明功能介绍:1、可显示速度、骑行距离(最大99,999KM)、骑行时间(最大999:59小时)、累计骑行里程(最大99,999KM),时钟功能。
2、手动和自动显示功能。
自动显示(AUTO),自动显示功能开启后,能间隔1秒,顺序显示骑行距离、时间、总里程和时钟。
下面简单介绍一下使用方法:一、功能显示。
1、自动显示。
按动功能按钮(码表下方大按钮),只至出现AUTO字样,此时码表自动显示骑行距离、时间、总里程和时钟,间隔时间为1秒。
2、手动显示。
按动功能按钮,出现KM字样,表示此时显示的是旅行距离;按动功能按钮,出现闹钟图案,表示此时显示的是旅行时间,精确显示到秒;按动功能按钮,出现Σ字样,表示此时显示的是从装上码表开始的累计骑行距离。
3、码表清零。
按住功能按钮不小于3秒,此时码表上的数字闪烁,继续按住不动直到清零,清零不影响累计骑行距离。
二、设定。
此功能决定着码表的正确使用,非常关键。
主要功能是输入车轮周长,调校时钟、改变速度单位、开启自动显示功能等。
进入设置界面。
按住码表背面的设置按钮3秒,出现SET字样,即进入设置界面,此时下面显示的四位数字为车轮周长,此时按动功能按钮,将进入下一个功能的设置界面。
下面以设置车轮周长为例,介绍此功能的使用。
在设置界面下,按动设置按钮,码表上的数字将开始闪动,表示此时可以输入数字,按动功能按钮,闪动的数字会改变,我的车胎是26*2.1,应在第一个数字位输入2,等待第二个数字闪动,按动功能按钮,第二位输入1,依次在第三位和第四位输入3,即周长为2133。
按照以上的方法,可以调校时钟等,因方法一样不再重复。
退出设置界面。
按动设置键3秒,即可恢复到使用状态。
附表,Wheel Size Chart47-305 16*1.75*2 0790 1272 325-630 27*11/4 1366 219947-406 20*1.75*2 0988 1590 28-630 27*11/4fiftry 1350 217437-540 24*13/8A 1210 1948 40-622 28*1.5 1381 222447-507 24*1.75*2 1184 1907 47-622 28*1.75 1409 226823-571 26*1 1225 1973 40635 28*11/2 1407 226540-559 26*1.5 1258 2026 37-622 28*13/8*15/8 1370 220544-559 26*1.6 1274 2051 18-622 700*18c 1306 210247-559 26*1.75*2 1286 2070 20-622 700*20c 1313 211450-559 26*1.9 *1298 2089 23-622 700*23c 1325 213354-559 26*2.00 1313 2114 25-622 700*25c 1333 214657-559 26*2.125 1325 2133 28-622 700*28c 1335 214937-560 26*13/8 1307 2105 32-622 700*32c 1350 217437-584 26*13/8*11/2 1296 2086 37-622 700*35c 1370 220520-571 26*3/4 1214 1954 40-622 700*40c 1381 224 Mph km/h。
届.别. 2013届学号毕业设计基于单片机设计的自行车测速系统姓名系别、专业导师姓名、职称完成时间1目录摘要 .............................................................. 3矚慫润厲钐瘗睞枥庑赖。
Abstract............................................................ 3聞創沟燴鐺險爱氇谴净。
1 绪论 ........................................................... 4残骛楼諍锩瀨濟溆塹籟。
1.1 课题背景 ................................................. 5酽锕极額閉镇桧猪訣锥。
1.2 课题主要任务及内容........................................ 5彈贸摄尔霁毙攬砖卤庑。
1.3 任务分析与实现............................................ 5謀荞抟箧飆鐸怼类蒋薔。
2 系统设计 ....................................................... 6厦礴恳蹒骈時盡继價骚。
2.1 硬件方案设计.............................................. 6茕桢广鳓鯡选块网羈泪。
2.2 软件方案设计.............................................. 7鹅娅尽損鹌惨歷茏鴛賴。
2.3 硬件电路设计.............................................. 8籟丛妈羥为贍偾蛏练淨。
2.3.1 概述................................................ 8預頌圣鉉儐歲龈讶骅籴。
编号:河南大学2011届本科毕业论文自行车里程速度计的设计The Design Of The Bicycle trip /speed tester 论文作者姓名:高兵作者学号:070440055所在学院:计算机与信息工程学院所学专业:自动化导师姓名职称:肖兴达(副教授)论文完成时间:2011年5月20日2011年5月20日目录摘要 (I)Abstract (II)第1章绪论 (1)1.1 课题研究的目的 (1)1.2 课题的主要任务及内容 (1)第2章自行车里程速度计总体方案设计 (2)2.1 任务分析与实现 (2)2.2 自行车里程速度计硬件方案设计 (2)2.2.1 整体方案论证 (2)2.2.2 系统的组成 (3)第3章单片机AT89C51简介 (4)3.1 单片机的组成和特点 (4)3.2 AT89C51的主要特性和实物图 (4)3.3 AT89C51的引脚功能介绍 (6)3.4 单片机定时/计数功能介绍 (8)第4章测速传感器的选型 (10)4.1 开关型霍尔传感器的工作原理 (10)4.2 A44E集成开关型霍尔传感器介绍 (11)4.3 传感器的检测原理和检测电路 (12)第5章整体硬件电路设计 (13)5.1 单片机最小系统设计 (13)5.1.1复位电路的设计 (13)5.1.2 时钟晶振电路的设计 (14)5.2 传感器检测电路的设计 (16)5.3 电源电路的设计 (17)5.4 键盘电路的设计 (18)5.5 外部存储电路的设计 (19)5.5.1 存储器CAT24WC32概述 (19)5.5.2 CAT24WC32引脚功能介绍 (20)5.5.3 I²C总线协议介绍 (21)5.5.4 CAT24WC32和AT89C51的硬件连接设计 (23)5.6 显示电路的设计 (23)5.6.1 EDM1190A的特点 (24)5.6.2 主要技术参数 (24)5.6.3 引脚介绍 (24)5.6.4 EDM1190A的数据传输原理 (25)5.7 声光报警电路的设计 (27)第6章软件设计 (29)6.1 软件设计概述 (29)6.2 主程序设计 (29)6.3 中断子程序的设计 (31)6.4 键盘子程序的设计 (32)6.4.1 功能选择键S1程序的设计 (32)6.4.2 增加键S2程序的设计 (32)6.4.3 减少键S3程序的设计 (33)6.5 数据处理子程序的设计 (34)6.5.1 速度计算子程序的设计 (34)6.5.2 里程计算子程序的设计 (35)6.6 显示子程序的设计 (36)6.7 I²C协议下读/写E²PROM程序的设计 (36)结论与展望 (37)致谢 (39)主要参考文献 (39)附录一元器件清单 (40)附录二系统原理图 (41)附录三系统源程序 (42)摘要目前自行车已成为人们娱乐、休闲、锻炼的首选,尤其是对于用来锻炼的人们,自行车速度里程计让他们清楚地知道当前的速度、里程等物理量,更好的用于锻炼。
浅谈自行车里程计/速度计的设计作者:耿子庆来源:《科教导刊》2011年第15期摘要本文主要利用单片机AT89C51研制自行车里程计和速度计仪器,此仪器可应用于电动自行车、摩托车、汽车等机动车仪表上。
此仪器能够准确显示出速度和里程,操作使用很方便。
因此本设计采用了以AT89C51单片机为核心低成本,高精度,微型化数字显示里程计/速度计的硬件电路方法。
中图分类号:TP368.4 文献标识码:ADiscussion about Design of the Bicycle Odometer / SpeedometerGENG Ziqing(Jilin Finance School, Jilin, Jilin 132011)AbstractThis paper mainly uses single-chip microcomputer AT89C51 odometer and developed bicycle speedometer instruments, this instrument can be applied to electric bicycles, motorcycles, cars, etc. on the meter motor vehicles. This instrument can accurately show speed and mileage, operate very convenient. Therefore the design uses AT89C51 with low cost, high accuracy, miniaturization digital display odometer/ speedometer hardware circuit method.Key wordsAT89C51; crystals; TC4024; minimum system自行车里程计和速度计经常应用于电动自行车、摩托车、汽车等机动车仪表上。
摘要随着居民生活水平的不断提高,自行车不再仅仅是普通的运输、代步的工具,而是成为人们娱乐、休闲、锻炼的首选。
自行车的速度里程表能够满足人们最基本的需求,让人们能清楚地知道当前的速度、里程等物理量。
本论文主要阐述一种基于霍尔元件的自行车的速度里程表的设计。
以AT89C52单片机为核心,A44E 霍尔传感器测转数,实现对自行车里程/速度的测量统计,采用24C02实现在系统掉电的时候保存里程信息,并能将自行车的里程数及速度用LED实时显示。
文章详细介绍了自行车的速度里程表的硬件电路和软件设计。
硬件部分利用霍尔元件将自行车每转一圈的脉冲数传入单片机系统,然后单片机系统将信号经过处理送显示。
软件部分用汇编语言进行编程,采用模块化设计思想。
该系统硬件电路简单,子程序具有通用性,完全符合设计要求。
关键词:里程/速度;霍尔元件;单片机;LED显示ABSTRACTWith the developing of people’s life, the bicycle is not only the universal tool of transportation and substitute for walking, but becomes the first choice of entertainment and exercising. The bicycle mileage/speed can fulfill the basic need of people’s life, so that they can learn the speed and the mileage of the bicycle. In this paper, the bicycle mileage/speed design based on the Hall element is elaborated. By AT89C52 as kernel, using A44E Hall element to measure revolution, the measure and statistic are achieved. The range information is saved by 24C02 when the power is off, the bicycle speed can be displayed on LED. In this article, the hardware circuit and software design of bicycle mileage/speed instrument are introduced in detail. About the hardware, the pulse number is transmitted of one cycle of the bicycle into Single Chip Microcomputer system. Then the signal processed by Single Chip Microcomputer system is sent to display scream. About the software, in assemble language; the program is designed in the mode of modules. The system has simple hardware, common sub-program, and meets the demand of design.KEY WORDS: Mileage / speed; Hall element; Single chip microcomputer; LED目录摘要 (I)第一章绪论 (1)1.1课题简介 (1)1.2 单片机发展趋势 (1)1.3课题的主要任务及容 (3)第二章系统总体方案设计 (4)2.1设计总体思想 (4)2.2硬件方案设计 (6)2.3软件方案设计 (8)第三章硬件电路设计 (10)3.1概述 (10)3.2传感器及其测量系统 (10)3.2.1霍尔传感器的测量原理 (11)3.2.2集成开关型霍尔传感器 (12)3.3单片机的原理及应用 (13)3.3.1单片机原理简介 (13)3.3.2单片机的引脚功能介绍 (15)3.3.3单片机中断系统介绍 (18)3.3.4单片机定时/计数功能介绍 (20)3.4其他元器件的选择 (21)3.4.1存储器的选择 (21)3.4.2 触发器的选择 (22)3.4.3 74LS244芯片的介绍 (24)3.5单片机外围电路的设计 (24)3.5.1时钟电路的设计 (24)3.5.2复位电路的设计 (26)3.5.3显示电路的设计 (27)3.6 本章小结 (29)第四章软件程序设计 (30)4.1总体论述 (30)4.2总体程序设计 (30)4.3中断子程序的设计 (33)4.4数据处理子程序的设计 (34)4.5显示子程序的设计 (35)第五章系统调试与分析 (38)5.1系统仿真调试 (38)5.2调试故障及原因分析 (39)5.3设计总结 (41)5.4改进与创新 (41)致 (43)参考文献 (45)附录 (47)第一章绪论1.1课题简介自行车被发明及使用到现在已有两百多年的历史,这两百年间人类在不断的尝试与研发过程中,将玩具式的木马车转换到今日各式新颖休闲运动自行车,自行车发展的目的也从最早的交通代步的工具转换成休闲娱乐运动的用途。
1 、引言 (3)2 、AT89C52单片机 (4)2.1 AT89C52单片机简介 (4)2.2 AT89C52的管脚及其含义 (4)3 、TC4024 (8)4、 24C01芯片 (9)4.124C01简介 (9)4.224C01的特性: (10)5 、硬件电路的设计 (11)5.1系统硬件电路 (11)5.2系统的工作原理 (12)6、软件设计 (13)6.1系统内存的规划 (13)6.2系统的主要程序设计 (13)7 、系统调试 (16)7.1硬件调试 (16)7.2软件调试 (16)参考文献 (18)1 引言传感器,英文名字为Sensor或Transducer,亦称换能器、变换器。
在科技迅速发展的今天,传感器越来倍受重视。
在日常生活、航天、航空,常规武器、交通运输,机械制造、化工、生物医学工程、自动化检测工程及计量等各项领域都被广泛应用。
目前,传感器已向新材料开发,集成化、智能化、数字化、新工艺,高精度化及高稳定、高可靠化等技术发展。
特别是霍尔传感器,鉴于它的价廉、易于使用,使它广泛运用于里程计、速度计等。
单片微型计算机简称单片机,又称微控制器,特别适用于控制领域。
通常单片机由单块集成电路构成,内部包含有计算机的基本部件:CPU(中央处理器),存储器和I/O接口电路等。
因此,单片机只需要与适当的软件及外部设备相结合,便可以成为一个单片机控制系统。
目前,场上销售的单片机有4位、8、16位、32位,并且单片机朝着高性能多种方向发展,尤其是8位单片机以经成为当前单片机的主流,主要体现在CPU功能增强、内部资源增多、引脚的功能化、低电压和低功好耗化上。
单片机因为其体积小、功能强,可靠性高,灵活方便等优点,所以可以用于各个领域,对各行各业的技术改造和产品更新换代起到重要的推动作用。
本人经过学习,用AT89C52设计了一个自行车里程/速度计。
本设计可轮流显示自行车行使的里程和速度, 采用TC4024芯片作为计数器以及2C401存储数据,3个单级共阴数码管作为显示系统。
自行车里程速度表的工作原理及设计
现在,很多人都把骑自行车作为一项锻炼身体的运动项目,如果在自行车上加装一个里程速度表,就可以知道自己骑车的速度和行程,从而很好地控制运动量。
本文介绍一种用单片机制作的自行车里程速度表。
里程和速度显示可进行切换,采用三位数码管显示,最大可显示里程为99.9km。
显示最高速度可为99.9km/h。
该里程速度表也可以用在电动自行车和速度不超过
100km/h的摩托车上。
一、电路原理
电路如图1所示。
由检测传感器、单片机电路和数码显示电路等组成。
检测传感器由永久磁铁和开关型霍尔集成电路UGN3020.组成。
UGN3020由霍尔元件、放大器、整形电路及集电极开路输出电路等组成。
其功能是把磁信号转换成电信号。
图2a是其内部框图。
霍尔元件H为磁。
我比较喜欢骑自行车出去走走,以前也做了个自行车测速(里程)计,用4位数码管输出数据的,它的优点是驱动简单,电压范围广,可用3.7V的锂电池直接供电,整个电路结构简单,耗能低,但它的缺点也是显而易见的,数码管在阳光下,无法看清楚,而且只有一组4位数据,不能同时查看速度及里程,不方便。由于购得更小的液晶模块,所以近期用液晶做输出显示器件,做了一个新的里程(速度)计。在阳光下清晰,晚上可用背光,2行共16个字符,并带存储器。有系统运行时间显示,外中断信号与写数据信号、电池低指示。 整体尺寸为65X35X12。加上电池(880mah),厚度要增加3mm,电池接上码表正在测试,已运行14个小时,理论可运行40多小时。
(原文件名:http_imgload.jpg) 引用图片
// 1602 2*16字符 第一行0x80 第二行0xc0 // 模式(km/h) 12.5kmh | 999.99km // 24C02存储 0x00-0x03: 99 99 99 99 cm // 0x2e,0x6b,0x6d,0x06,0x07,0x20,0x3d 0x30-0x39开始是数字0-9 // . , k , m , ┗ ,/h ,black, = //------头-------------------------------------------------------- //申明 #include "REG2051.H" #include "INTRINS.H" #define uchar unsigned char #define uint unsigned int //轮周长1.98m及各位值 0.5ms取 1.98*(1/0.5)*1000*10 #define girth 39600 #define girth_h 1 #define girth_l 98 //单片机IO连接 #define LCM0802B_IO P1 sbit LCM0802B_RS = P3^7; sbit LCM0802B_RW = P3^5; sbit LCM0802B_EN = P3^4; sbit KEY = P3^3; sbit SIGN = P3^2; sbit AT24C02_SDA = P3^1; sbit AT24C02_SCL = P3^0; //液晶驱动函数定义 void LCM_RD_BUSY(void); //读忙信号 void LCM_WR_CMD(uchar); //写操作命令 void LCM_WR_DAT(uchar); //写数据 void LCM_WR(uchar,uchar); //输出一个字符 //存储IC驱动函数定义 void AT24C02_START(void); //开启 void AT24C02_STOP(void); //停止 void AT24C02_CK(void); //时钟 void AT24C02_WR_byte(uchar); //写入单字节 uchar AT24C02_RD_byte(void); //读入单字节 uchar AT24C02_RD(uchar); //从24c02的地址address中读取一个字节数据 void AT24C02_WR(uchar,uchar); //向24c02的address地址中写入一字节数据info //函数定义 void _init(void); //软硬件初始化 void AT24C02_WRAMD(void); //24c02写入RAM数据 void _nus(uchar); //us延时 void _nms(uchar); //ms延时 void dis_dis(void); //距离数据输出 //变量定义 uchar d_var[4]={0,0,0,0}; //距离的cm值0x00-0x03双数计算 uint timej; //时间周期个数 uint int_tp; //周期个数传递 bit flg_cal; //允许计算 bit sf; //s指示标志 uint sj; //s指示计数 bit sen; //有更新数据
//---- 中断 ----------------------------------------------------- //500us周期定时函数 void T0_SEV(void) interrupt 1 using 1 { TR0 = 0; ET0 = 0; TH0 = 0xff; TL0 = 0x5a; //计时初值 timej++; //超过3.5S无中断相应,即判断速度为0,则最低速度2.04km/h if(timej == 7000){ int_tp = timej; timej = 0; flg_cal = 1; } if(sj>0){ sj--; }//s计数递减 ET0 = 1; TR0 = 1; } //外部中断函数 void Int0_SEV(void) interrupt 0 using 0 { EX0 = 0; int_tp = timej; timej = 0; flg_cal = 1;//读取计数周期数 EX0 = 1; }
//------主体-------------------------------------------------------- //主函数 void main() { _init(); //初始化 while(1){ if(!KEY){ _nms(2); //去抖延时 if(!KEY){ uchar key_tp = 200; EA = 0; timej = 0; do{ key_tp--; _nms(3); }while(!KEY&&key_tp>0); //长短按计时循环 EA = 1; if(key_tp==0){ d_var[0] = 0; d_var[1] = 0; d_var[2] = 0; d_var[3] = 0; //清零 _nus(20); dis_dis(); //输出距离 }//长按 //短按长按都要写入数据 sj = 3000; sf = 1; LCM_WR(0x80,0x06); //0x06 AT24C02_WRAMD(); //24c02写入RAM数据 //等待释放按键 while(!KEY){ while(!KEY); _nms(2); } } }//按键功能,长按清除历程信息,短按切换ms与kmh if(flg_cal){ //清零 输出十分位" 0.0" if(int_tp == 7000){ LCM_WR(0x81,0x20); LCM_WR(0x82,0x30); LCM_WR(0x84,0x30); } else{//正常计算输出 sen = 1; //速度 if(int_tp>143){ int_tp = girth/int_tp; int_tp = (int_tp*18)/5; // kmh=3.6*ms LCM_WR(0x84,(int_tp%10)+0x30); //输出十分位 int_tp = int_tp/10; LCM_WR(0x82,(int_tp%10)+0x30); //输出个位 if(int_tp<10) LCM_WR(0x81,0x20); //输出十位0时清除 else LCM_WR(0x81,(int_tp/10)+0x30); //输出十位 }//在99.9km/h范围内 //距离 步长1.98m d_var[3] += girth_l; if(d_var[3]>99){ d_var[3]-=100; d_var[2]++; } d_var[2] += girth_h; if(d_var[2]>99){ d_var[2]-=100; if(d_var[1]==99){ d_var[1]=0; if(d_var[0]==99) d_var[0]=0; else d_var[0]++; } else d_var[1]++; } dis_dis(); //输出距离 } int_tp = 0; flg_cal = 0;//复位 }//输出计算的主要数据 if(sj == 0){ sj = 3000; if(sen){ //有更新数据才写入 sen = 0; LCM_WR(0x80,0x06); //0x06 sf = 1; AT24C02_WRAMD(); //写入存储器 } } if(sf && sj<2000){ sf = 0; LCM_WR(0x80,0x20); } //写存储器闪更新 }//主循环 }
void _init(void) { EA = 0; _nus(255); //等待外围设备完成加电 //初始化液晶,显示"?" LCM_WR_CMD(0x01); //清屏幕0x01 LCM_WR_CMD(0x38); //设置数据线模式0x38 8位 两行 5X7 LCM_WR_CMD(0x0C); //设置显示状态0x0C 整体显示开 光标关 光标闪烁关 LCM_WR_CMD(0x06); //设置输入方式0x06 增量方式 不移位 LCM_WR_CMD(0x80); //设置光标初始位 //LCM_WR(0x80,0x3f);//屏幕初始化输出"?" //输出 bike mile LCM_WR(0x80,0x3d); LCM_WR(0x81,0x62); LCM_WR(0x82,0x69); LCM_WR(0x83,0x6b); LCM_WR(0x84,0x65); LCM_WR(0x85,0x3d); LCM_WR(0x86,0x3d); LCM_WR(0x87,0x3d);//=bike=== LCM_WR(0xc0,0x3d) ;LCM_WR(0xc1,0x3d); LCM_WR(0xc2,0x3d); LCM_WR(0xc3,0x6d); LCM_WR(0xc4,0x69); LCM_WR(0xc5,0x6c); LCM_WR(0xc6,0x65); LCM_WR(0xc7,0x3d);//===mile= //初始化液晶自定义字符库 LCM_WR_CMD(0x70); //自定义字符'┗' 在0x06 LCM_WR_DAT(0x00); LCM_WR_DAT(0x00); LCM_WR_DAT(0x00); LCM_WR_DAT(0x10); LCM_WR_DAT(0x18); LCM_WR_DAT(0x1C); LCM_WR_DAT(0x1E); LCM_WR_DAT(0x00); LCM_WR_CMD(0x78); //自定义字符'/h' 在0x07 LCM_WR_DAT(0x04); LCM_WR_DAT(0x14); LCM_WR_DAT(0x14); LCM_WR_DAT(0x16); LCM_WR_DAT(0x15); LCM_WR_DAT(0x15); LCM_WR_DAT(0x15); LCM_WR_DAT(0x00); //初始化24c02 AT24C02_SCL = 1; _nop_(); AT24C02_SDA = 1; _nop_(); _nms(4); //读24c02到RAM 初始化 d_var[] d_var[0] = AT24C02_RD(0x00); d_var[1] = AT24C02_RD(0x01); d_var[2] = AT24C02_RD(0x02); d_var[3] = AT24C02_RD(0x03); if(d_var[0]>99 || d_var[1]>99 || d_var[2]>99 || d_var[3]>99){ d_var[0] = 0; d_var[1] = 0; d_var[2] = 0; d_var[3] = 0;//清零 AT24C02_WRAMD(); }//错误数据判断 读取24c02中的距离数据,如果有数据>99,则出错,复位0 KEY = 1; SIGN = 1; //串口初始化 TMOD = 0x01; //定时中断0允许 方式0 使能off TH0 = 0xff; TL0 = 0x5a; //500us (65536-166) /256=255 %256=90 ET0 = 1; TR0 = 0; PX0 = 1; IT0 = 1; EX0 = 0; //外中断0 跳变触 使能off //变量初始化 timej = 0; int_tp = 0; flg_cal = 0; sf = 0; sj = 3000; sen = 0;