课程设计(论文)-基于单片机的出租车计价器的设计.doc_第1页
课程设计(论文)-基于单片机的出租车计价器的设计.doc_第2页
课程设计(论文)-基于单片机的出租车计价器的设计.doc_第3页
课程设计(论文)-基于单片机的出租车计价器的设计.doc_第4页
课程设计(论文)-基于单片机的出租车计价器的设计.doc_第5页
已阅读5页,还剩33页未读 继续免费阅读

下载本文档

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

文档简介

辽辽 宁宁 工工 业业 大大 学学 单片机原理及接口技术单片机原理及接口技术 课程设计(论文)课程设计(论文) 题目:题目: 基于单片机的出租车计价器设计基于单片机的出租车计价器设计 院(系):院(系): 电气工程学院电气工程学院 专业班级:专业班级: 自动化自动化143143班班 学学 号:号: 学生姓名:学生姓名: 指导教师:指导教师: 起止时间:起止时间:2017.06.05-2017.06.16 本科生课程设计(论文) I 课程设计(论文)任务及评语课程设计(论文)任务及评语 院(系):电气工程学院 教研室:自动 化 学 号学生姓名专业班级自动化143班 课程设计 (论文)题 目 基于单片机的出租车计价器设计 课程设计(论文)任务 课题完成的功能、设计任务及要求、技术参数课题完成的功能、设计任务及要求、技术参数 实现功能实现功能 本次设计采用单片机为控制器,通过脉冲计数,显示当前里程数、时间、所付金额 及转速,具有存储里程数、金额功能,并通过串口向上位机上传储存的里程数及金额。 硬件设计包括 CPU 选型、最小系统、按键、存储、显示、通信电路等。 设计任务及要求设计任务及要求 1、确定设计方案,画出方案框图。 2、进行硬件电路的设计,包括元器件选择,绘制原理图。 3、进行实物的制作。 4、软件部分完成主程序、相应子程序流程图设计,并编写完整程序代码。 5、要求认真独立完成所规定的全部内容;所设计的内容要求正确、合理。 6、按学校规定的格式,撰写、打印设计说明书一份;设计说明书应在4000字以上。 技术参数技术参数 1、采用 LCD 显示; 2、模拟计费设置:前0.05公里,金额8元,每增加0.01公里,金额增加2元,等时 收费为1元/min。 进度计划 1、布置任务,查阅资料,确定系统设计方案(2 天) 2、系统硬件设计及实物制作(3 天) 3、系统软件设计及编写功能程序及调试(3 天) 4、撰写、打印设计说明书(1 天) 5、验收及答辩。 (1天) 本科生课程设计(论文) II 注:成绩:平时20% 论文质量60% 答辩20% 以百分制计 指导教师评语及成绩 平时: 论文质量: 答辩: 总成绩: 指导教师签字: 年 月 日 本科生课程设计(论文) III 摘 要 现在各大中城市出租车行业都已普及自动计价器,所以计价器技术的发展已成定局。 而部分小城市尚未普及,但随着城市建设加快,象征着城市面貌的出租车行业也将加速 发展,计价器的普及也是毫无疑问的,所以汽车计价器的市场还是十分有潜力的。 本系统以 STC89C52 单片机为核心,用信号发生器产生脉冲模拟车轮运转,通过外 部中断采集车轮转数。然后用 DS1302 进行时间的读取,用 AT24C02 进行存储总的里程 数及金额并通过串口将总的里程数及金额发送到上位机显示出来。最后在 LCD 上显示出 当前里程数、时间、所付金额、转速及存储的里程数与金额。在基于此种思想的基础上 进行了硬件与软件的设计,硬件电路包括 STC89C52 单片机最小系统电路、实时时钟电 路、LCD 显示电路、串口通信电路、存储电路、按键电路电路等其他辅助电路。软件部 分实现了存储程序、实时时钟程序以及串口程序。 通过对出租车计价器的设计,司机能够对乘客坐车的收费既合理又更加科学,并且 能够更好的反映乘客实际的里程数及金额,此外还能够有效减少由于价格不和产生的冲 突问题,达到安全方便的目的。 关键词:STC89C52;串口通信;AT24C02;LCD 显示; 本科生课程设计(论文) IV 目 录 第 1 章 绪论.1 1.1 研究背景及意义.1 1.2 出租车计价器的研究现状.2 第 2 章 课程设计的方案.3 2.1 概述 .3 2.2 系统组成总体结构 .3 第 3 章 硬件设计.5 3.1 STC89C52 最小系统设计.5 3.2 实时时钟电路设计 .6 3.3 LCD 显示电路设计.7 3.4 按键电路设计 .8 3.5 电源电路设计 .8 3.6 串口通信电路设计 .8 3.7 存储电路设计 .9 第 4 章 软件设计 .10 4.1 出租车计价器主程序设计 .10 4.2 实时时钟程序设计 .11 4.3 串口通信程序设计 .11 4.4 存储程序设计 .12 第 5 章 系统测试与分析/实验数据及分析.13 5.1 概述 .13 5.2 当前里程数及金额调试 .13 5.3 24C02 存储及转速调试.14 5.4 等时计费调试 .15 5.5 串口通信调试.16 本科生课程设计(论文) V 第 6 章 课程设计总结 .17 参考文献 .18 附录一 总体电路图 .19 附录二 出租车计价器程序 .20 本科生课程设计(论文) 1 第 1 章 绪论 1.1 研究背景及意义 出租车行业在我国是八十年代初兴起的一项新兴行业,随着出租车行业的发 展,出租车已经是城市交通的重要组成部分,出租车计费器是乘客与司机双方的 交易准则,它是出租车行业发展的重要标志,是出租车中最重要的工具。它关系 着交易双方的利益。具有良好性能的计费器无论是对广大出租车司机朋友还是乘 客来说都是很必要的。因此,汽车计价器的研究也是十分有一个应用价值的。要 将出租车计价系统产品化,应该根据客户不同的需求进行不同的设计,应该在程 序中增加一些可以人为改变的参数,以便客户根据不同的需要随时调节单价以及 计价方式。因此,研究出租车计价器及扩大其应用,有着非常现实的意义。 多年来国内普遍使用的计价器只具备单一的计量功能。目前全世界的计价器 中有 90%为台湾所生产。现今我国生产计价器的企业有上百家,主要是集中在北 京,上海,沈阳和广州等地。 我国第一家生产计价器的是重庆市起重机厂,最早的计价器全部采用机械齿 轮构,只能完成简单的计程功能,可以说,早期的计价器就是个里程表。随着科 学技术的发展,产生了第二代计价器。它采用了手摇计算机与机械结构相结合的 方式,实现了半机械半电子化。此时它在计程的同时还可完成计价的工作。大规 模集成电路的发展又产生了第三代计价器,也就是全电子化的计价器。它的功能 也在不断完善。出租汽车计价器是一种专用的计量仪器,它安装在出租汽车上, 能连续累加,并指示出行程中任一时刻乘客应付费用的总数,其金额值是计程和 计时时间的函数。出租车计价器在最初使用时具备的主要功能是根据行驶里程计 价,要求精度高,可靠性好。随着电子技术的发展以及对计价器的不断改进和完 善,便产生了诸多的附加功能。例如:(1)LED 显示功能,数码管的使用让计价器 实现多屏显示的功能,可同时显示各项营运数据,使乘客一目了然;(2)永久时钟 功能,在非营运状态下,日历时钟芯片的使用使计价器可以显示永久时钟;(3)存 储功能,可存储多项营运数据,便于查询。新型数据存储器的应用使得计价器的 营运数据在掉电情况下还可以保存 10 年。 本科生课程设计(论文) 2 1.2 出租车计价器的研究现状 国内出租车计价器已经经历了四个阶段的发展,从传统的全部由机械元器件组 成的机械式,到半电子式即用电子线路代替部分机械元器件的出租车计价器,再从 集成电路式到目前的单片机系统设计的出租车计价器。 使用单片机设计的出租车 计价器功能强大,能够满足计程、计时、计费、存储、查看、统计等多种计量功 能。利用软件编程可设计出不同的计费模式,不同的情况采取不同的收费方式, 使司机在工作中能够应付各种突发状况,设计理念更加人性化,符合当今社会的 需要。其各种功能由键盘控制,操作简单。且计价器造价低廉,安装方便,成为 当今出租车司机的首选产品。 本科生课程设计(论文) 3 第 2 章 课程设计的方案 2.1 概述 基于单片机的出租车计价器设计采用 STC89C52 做控制器,进行按键电路、 时钟模块、LCD 显示、串口通信、存储电路等模块设计,同时进行 STC89C52 控 制软件的编写,能够通过脉冲计数,显示当前里程数、时间、所付金额及转速, 具有存储里程数、金额功能,并通过串口向上位机上传储存的里程数及金额。同 时也可以通过按键设置当出租车等待时将会产生等时收费的功能。 设计要达到的参数指标如下。 (1)采用 LCD 显示; (2)模拟计费设置:前 0.05 公里,金额 8 元,每增加 0.01 公里,金额增加 2 元,等时收费为 1 元/min。 2.2 系统组成总体结构 根据以上性能与指标要求,确定该系统总体结构框图如图 2.1 所示。 单片机 LCD显示电路 存储电路 串口通信电路 按键电路 实时时钟电路 脉冲输入 电源电路 图 2.1 系统总体结构框图 各模块具体的功能如下: 本科生课程设计(论文) 4 (1)单片机最小系统:包括时钟电路、复位电路。STC89C52 作为主控芯片, 由外部 11.0592MHz 提供系统时钟,最高可测得的频率为 500KHZ。 (2)脉冲输入:由信号源产生脉冲,通过外部中断 0 输入到单片机。 (3)按键电路:通过按键来转换各部分功能并显示出来。 (4)LCD 显示电路:将当前里程数、时间、所付金额及转速显示到液晶屏 第一个界面,将存储的里程数及金额显示在第二个界面上。 (5)串口通信电路:将储存的里程数及金额发送到上位机上显示出来。 (6)储存电路:储存总的里程数及金额,保证掉电数据不丢失。 (7)电源电路:为单片机最小系统、时钟模块、LCD显示、存储电路以及 在整体系统之间进行供电。 (8)实时时钟电路:将实时的时间送入单片机并在 LCD 上显示出来。 本科生课程设计(论文) 5 第 3 章 硬件设计 3.1 STC89C52 最小系统设计 3.1.1 STC89C52 最小系统 STC89C52 最小系统主要包括复位电路、时钟电路。具体的原理图如图 3.1 所示。 图 3.1 STC89C52 最小系统 3.1.2 复位电路设计 复位电路则主要用来进行 STC89C52 单片机最小系统、LCD 显示等多个电路 的复位,而单片机复位的方式大体分为两种:硬件复位与软件复位,硬件复位的 方式又可分为上电复位与按键复位等,软件复位则包括 ISP 寄存器复位、看门狗 复位等。 本设计中采用按键复位的方式,相比于看门狗复位、ISP 寄存器复位等软件 复位方式而言,设计更为简单,且实时性更高。由于 STC89C52 是高电平复位, 所以设计中的复位电路也是高电平复位方式。系统复位电路图如图 3.2 所示。 本科生课程设计(论文) 6 图 3.2 复位电路 3.1.3 时钟电路设计 STC89C52 内部有一个高增益反向放大器(即与非门的一个输入端编程为常 有效时) ,用于构成片内振荡器,引脚 XTAL1(单片机 19 引脚)和 XTAL2(单 片机 18 引脚)分别为此放大器的输入端和输出端。XTAL1 和 XTAL2 两端跨接 晶体或陶瓷谐振器,就构成了稳定的自激振荡器,其发出的脉冲直接送入内部时 钟发生器。外接晶振时,电容通常选 22pF 左右;外接陶瓷谐振器时,电容约为 47pF。为了减少寄生电容,更好的保证振荡器稳定可靠地工作,谐振器和电容应 尽可能的与单片机芯片靠近。时钟电路如图 3.3 所示。 图 3.3 时钟电路 3.2 实时时钟电路设计 虽然 STC89C52 最小系统代有时钟电路,但是相对来说,还不够精准,因此 在外部设计了 DS1302 实时时钟电路。 DS1302 是一种高性能、低功耗、实时时钟芯片,并且具备涓流充电的功能, 在手持设备以及通信领域得到了普遍的应用,它的主要特性如下:DS1302 能够 实现秒、分钟、小 时、日、周、月、年 的显示,而且具有闰年自动调整的功能, 并且可以配置时间显示的方式为 24 小时制或者 12 小时制。相对于并行通信的方 本科生课程设计(论文) 7 式来说,使用串行 I/O 通信的方式,比较节省 I/O 口。DS1302 在 2.0-5.5 之间的 电压范围内均可以正常工作。DS1302 在 2.0V 的工作电压下,其工作电流不超过 300mA,可见其功耗很低。实时时钟电路图如图 3.4 所示。 图 3.4 实时时钟电路 3.3 LCD 显示电路设计 LCD12864 是一款具有 4 位或 8 位并行、2 线或 3 线串行多种接口方式,内 部含有国标一级、二级简体中文字库的点阵图形液晶显示模块。其显示分辨率为 12864,内置 8192 个 16*16 点汉字,和 128 个 16*8 点 ASCII 字符集。利用该模 块灵活的接口方式和简单、方便的操作指令,可构成全中文人机交互图形界面。 可以显示 84 行 1616 点阵的汉字. 也可完成图形显示。LCD 显示电路如图 3.5 所示。 图 3.5 LCD 显示电路 本科生课程设计(论文) 8 3.4 按键电路设计 整个系统可以通过按键来设定相应的功能。 按键 2:脉冲输入启动按钮; 按键 3:脉冲输入停止按钮; 按键 4:切换显示总的里程数及金额; 按键 5:将总的里程数及金额清零; 按键 6:等时收费启动按钮; 按键 7:等时收费停止按钮。 按键电路如图 3.6 所示。 图 3.6 按键电路 3.5 电源电路设计 整个系统需要通过外部电源进行供电,所以设计的电源电路如图3.7所示。 图 3.7 电源电路 3.6 串口通信电路设计 串口通信是将来自 CPU 的并行数据转化为串行数据发送到上位机。 MAX232 芯片的作用是将单片机输出的 TTL 电平转换成 PC 机能接收的 232 本科生课程设计(论文) 9 电平或将 PC 机输出的 232 电平转换成单片机能接收的 TTL 电平。的作用是将单 片机输出的 TTL 电平转换成 PC 机能接收的 232 电平或将 PC 机输出的 232 电平 转换成单片机能接收的 TTL 电平。串口通信电路如图 3.8 所示。 图 3.8 串口通信电路 3.7 存储电路设计 该存储电路用以储存总的路程及金额,保证掉电之后数据不会丢失。 AT24C02 是一个 2K 位串行 CMOS EEP-ROM,内部含 256 字节的存储器,该储 器的特点是功耗小、成本低、电源范围宽,静态电源电流约 30uA110uA,是应 用广泛的小容量存储器之一。AT24C02 有一个 16 字节页写缓冲器,器件通过 IIC 总线接口进行操作,有一个专门的写保护功能。存储电路如图 3.9 所示。 图 3.9 存储电路 本科生课程设计(论文) 10 第 4 章 软件设计 4.1 出租车计价器主程序设计 在主程序中,需要完成对各接口芯片的初始化、出租车里程数及金额初始化、 中断初始化及循环等待等工作。另外在主程序中还需设置启动按钮、停止按钮、 等时计费按钮以便进行功能的转换。里程数与金额通过外部中断 0 进行计算,当 外部中断有脉冲输入时,根据脉冲的个数进行一系列的转换得到里程数与金额。 主程序流程图如图 4.1 所示。 开始 初始化 进行正常里程数、 金额及转速计算 显示时间 是否启动 是否等时计费 将里程数及金 额存储到24C02 将总的里程数及金 额发送到上位机 调用上次的总 里程数及金额 进行等时 金额计算 是否停止 结束 Y Y N N Y 显示当前里 程数及金额 显示总的里程 数、金额及转速 N 图 4.1 主程序流程图 本科生课程设计(论文) 11 4.2 实时时钟程序设计 本设计采用的是 DS1302 实时时钟芯片,当定时时间到时读取年、月、日、 时、分、秒,进行显示,DS1302 程序流程图如图 4.2 所示。 开始 定时时间到 读取时间 显示时间 返回 图 4.2 DS1302 程序流程图 4.3 串口通信程序设计 本设计采用的是 MAX232 作为串口通信芯片,当主程序给出一个发送的命令后, 在电脑上打开串口会接收到总的里程数及金额,并将相应的数值显示出来。串口 通信程序流程图如图 4.3 所示。 开始 串口初始化 串口发送数据 等待数据发 送结束 返回 图 4.3 串口通信流程图 本科生课程设计(论文) 12 4.4 存储程序设计 本设计采用的是 AT24C02 作为存储芯片,该芯片具有功耗小、成本低、电 源范围宽的特点,器件通过 I2C 总线接口进行操作。由主程序中数据的送入,在 掉电之后重新读取上一次的数据,达到数据保护的功能。存储程序流程图如图 4.4 所示。 开始 I2C初始化 存储总的里 程数及金额 结束 读取上次的总 里程数及金额 图 4.4 存储程序流程图 本科生课程设计(论文) 13 第 5 章 系统测试与分析 5.1 概述 基于单片机的出租车计价器的实物调试有当前里程数及金额、等时收费、 24C02 存储及串口通信这几部分。本系统采用充电宝供电,方便调试。实物如题 5.1 所示。 图 5.1 调试实物 该系统主要功能是对当前里程数、金额、转速、总的里程数及金额的计算, 通过对脉冲输入的采集,计算脉冲数,进行当前里程数、金额、转速、总的里程 数及金额的显示,通过 24C02 保证掉电后总的里程数及金额不丢失,并将总的里 程数及金额通过串口上发到电脑显示。 5.2 当前里程数及金额调试 出租车计价器通过对外部脉冲的采集,经过计算公式 100 个脉冲为 0.01Km 得到当前里程数及金额的值,根据任务要,前 0.05Km 金额为 8 元,之后每增加 0.01Km 金额增加 2 元,在实物调试中可达到要求,有时会出现 0.01Km 的偏差, 但并不会影响调试效果。当前里程数及金额显示如图 5.2,5.3 所示。 本科生课程设计(论文) 14 图 5.1 当前里程数及金额 图 5.3 增加 0.01Km 后的值 5.3 24C02 存储及转速调试 将计算后的里程数及金额送入到 24C02 中保存,以防掉电后数据丢失,便于 下一次上电能够在前一次的里程数及金额上实现累加,使得该系统更接近与实际 效果。转速是根据采集的脉冲数进行数值转化,按车轮上的码盘有十个孔进行计 算得到的值。24C02 存储及转速如图 5.4 所示。 本科生课程设计(论文) 15 图 5.4 24C02 存储及转速 5.4 等时计费调试 根据任务要求,等时收费时每增加一分钟金额增加 1 元,里程数不变,在实 物调试时,利用定时器进行定时,可达到要求,并且能够准确的在 LCD 上显示, 等时收费显示如图 5.5 所示。 图 5.5 等时收费 本科生课程设计(论文) 16 5.5 串口通信调试 在调试串口时,由于单片机也与电脑相连接所以出现串口选择错误的问题, 经过几次调试后,顺利的将总的里程数及金额发送到电脑上显示出来。串口通信 显示如图 5.6 所示 图 5.5 串口通信 本科生课程设计(论文) 17 第 6 章 课程设计总结 论文在进行了大量的调研和查阅国内、外文献的基础上,确定了基于单片机 的出租车计价器的设计方案。本设计采用 STC89C52 做控制器,完成对里程数、 金额及转速的计算并通过 LCD 显示,也可通过 AT24C02 存储总的里程数及金额, 还可通过串口向上位机发送总的里程数及金额,同时也可以通过按键设置当出租 车等待时将会产生等时收费的功能。 本论文主要完成了如下工作: (1)研究和分析了出租车计价器的功能和构成,确定系统的设计方案。 (2)根据出租车计价器的工作过程,按要求完成了系统的硬件电路设计,设 计完成了 STC89C52 单片机最小系统电路、实时时钟电路、LCD 显示电路、串口 通信电路、存储电路、按键电路电路等其他辅助电路。 (3)按照系统的要求完成存储程序设计、实时时钟程序设计以及串口程序设 计。 (4)进行实物调试。 本科生课程设计(论文) 18 参考文献 1佘雅婷.基于 MCS-51 单片机的出租车计价器J.电脑知识与技术,2016,(29): 233-234+240. 2何震,黄小容.基于单片机的出租车计费系统的设计J.中外企业家,2016,(16): 173+177. 3叶磊,黄莹,齐轩晨,刘艳.基于 430 单片机的出租车计价器设计与实现J.微 型机与应用,2015,(17):92-95. 4刘晓玲,程望斌,唐江,钟云,樊丽娜,石彩丽.出租车智能计价器优化设计与研 究J.电子技术,2014,(12):48-50+45. 5翟敏焕.基于单片机的出租车计价器设计J.现代计算机(专业版),2014,(01): 64-67. 6赵婷,姚竹亭,房东东,刘一江.基于 MCS51 的出租车计价器设计与仿真J.电 子产品世界,2013,(02):52-54. 7许洋洋,王丽娟,贾瑞匣.出租车计费系统设计J.电子测试,2013,(24):7-8. 8徐良雄.出租车计价器的设计与分析J.仪器仪表用户,2012,(03):61-63. 9袁益林,韩云东,宫崇阳,魏腾飞.利用 89S51 单片机的出租车计价器设计J. 电脑编程技巧与维护,2011,(09):19-23. 10舒涛,伍远超,李明.基于 AT89S51 单片机的出租车计价器系统设计J.现代 电子技术,2010,(22):57-59. 11李全利.单片机原理及接口技术.北京:高等教育出版社,2009. 12谢维成.单片机原理与应用及 C51 程序设计.北京:清华大学出版社,2011. 13邹华,张兰红.单片机原理及应用.北京:机械工业出版社,2012. 14张毅刚.单片机原理及接口技术.北京:人民邮电出版社,2016. 15张毅刚.单片机原理及应用.北京:高等教育出版社,2004. 本科生课程设计(论文) 19 附录一 总体电路图 本科生课程设计(论文) 20 附录二 出租车计价器程序 /*主程序*/ #include #include #include #include #include #include #include #define uchar unsigned char #define uint unsigned int #define HIGH (65536-10000)/256 #define LOW (65536-10000)%256 bit TIMERFLAG; bit flag; bit flag1=0; bit flag2; unsigned int idata count1=0; unsigned int idata count2=0; double idata num=0; double idata num1=8; unsigned char idata i,j,w; unsigned int idata a; volatiledoubleidata b=0,c=0,d=0,e=0,z=0,x=0; unsignedcharidata b1,b2,b3,b4,c1,c2,c3,c4; unsignedchartemp12; unsigned char temp38; unsigned char temp48; unsigned char temp58; unsigned char temp88; sbit key1=P37; sbit key2=P36; sbit key3=P35; sbit key4=P34; sbit key5=P13; sbit key6=P12; void SendS(unsigned char *s); void SendB(unsigned char dat); void InitUART (void) SCON = 0 x50; TMOD |= 0 x20; TH1 = 0 xFD; TR1 = 1; EA = 1; void init_down(void) EA=1; EX0=1; IT0=1; void Init_Timer0(void) TMOD=0X01; ET0=1; 本科生课程设计(论文) 2 EA=1; TH0=HIGH; TL0=LOW; TR0=1; void main (void) init(); IRcvStr(0 xae,8,temp3,4); b1=temp30; IRcvStr(0 xae,10,temp3,4); b2=temp30; IRcvStr(0 xae,12,temp3,4); b3=temp30; IRcvStr(0 xae,12,temp3,4); b4=temp30; sprintf(temp5,%c%c.%c%c,b1,b2,b3,b 4); d=atof(temp5); IRcvStr(0 xae,0,temp4,4); c1=temp40; IRcvStr(0 xae,2,temp4,4); c2=temp40; IRcvStr(0 xae,4,temp4,4); c3=temp40; IRcvStr(0 xae,6,temp4,4); c4=temp40; sprintf(temp8,%c%c.%c%c,c1,c2,c3,c4); e=atof(temp8); Init_Timer0(); init_down(); LCD_Init(); LCD_Clear(); Ds1302_Init(); Ds1302_Write_Time(); Ds1302_Read_Time(); LCD_Write_String(0,0,出租车计价器 设计); LCD_Write_String(0,1,学生姓名:刘 吉行); LCD_Write_String(0,2,学号: 140302065); LCD_Write_String(0,3,班级自动化: 143); DelayMs(1000); LCD_Clear(); InitUART(); while(1) Ds1302_Read_Time(); sprintf(temp,DATE %02d-%02d- %02d,(int)time_buf11,(int)time_buf1 2,(int)time_buf13); LCD_Write_String(0,0,temp); sprintf(temp,TIME %02d:%02d:%02d,(int)time_buf14,(in t)time_buf15,(int)time_buf16); LCD_Write_String(0,1,temp); if(!key1) DelayMs(10); if(!key1) while(!key1); EX0=1; 本科生课程设计(论文) 3 if(!key2) DelayMs(10); if(!key2) while(!key2); EX0=0; if(!key5) DelayMs(10); if(!key3) while(!key3); flag1=1; if(!key6) DelayMs(10); if(!key4) while(!key4); flag1=0; if(flag1=0) if(flag=1) flag=0; b=count2; b=b*0.00001; d=d+b-z; z=b; sprintf(temp3,%d,(int)d/10); ISendStr(0 xae,8,temp3,4); sprintf(temp3,%d,(int)d%10); ISendStr(0 xae,10,temp3,4); sprintf(temp3,%d,(int)(d- (int)(d)*10); ISendStr(0 xae,12,temp3,4); sprintf(temp3,%d,(int)(d*10- (int)(d*10)*10); ISendStr(0 xae,14,temp3,4); if(b=0) c=0; if(b0) c=num1; if(b0.05) c=(num1+2); e=e+c-x; x=c; sprintf(temp4,%d,(int)e/10); 本科生课程设计(论文) 4 ISendStr(0 xae,0,temp4,4); sprintf(temp4,%d,(int)e%10); ISendStr(0 xae,2,temp4,4); sprintf(temp4,%d,(int)(e- (int)(e)*10); ISendStr(0 xae,4,temp4,4); sprintf(temp4,%d,(int)(e*10- (int)(e*10)*10); ISendStr(0 xae,6,temp4,4); sprintf(temp,mil %8.2fkm,b); LCD_Write_String(0,2,temp) sprintf(temp,money %6.2fY,c); LCD_Write_String(0,3,temp); else if(flag1=1) if(flag2=1) flag2=0; c=num1+3; e=e+c-x; x=c; sprintf(temp4,%d,(int)e/10); ISendStr(0 xae,0,temp4,4); sprintf(temp4,%d,(int)e%10); ISendStr(0 xae,2,temp4,4); sprintf(temp4,%d,(int)(e- (int)(e)*10); ISendStr(0 xae,4,temp4,4); sprintf(temp4,%d,(int)(e*10- (int)(e*10)*10); ISendStr(0 xae,6,temp4,4); sprintf(temp,money %6.2fY,c); LCD_Write_String(0,3,temp); if(!key3) DelayMs(10); if(!key3) while(!key3); LCD_Clear(); if(TIMERFLAG) a=count1; a=a*1; a=a/10; sprintf(temp,speed %5dr/s,a); LCD_Write_String(0,0,temp); TIMERFLAG=0; count1 = 0; sprintf(temp,mil %3.2fkm,d); LCD_Write_String(0,1,temp); SendS(temp); sprintf(temp,money %6.2fY,e); LCD_Write_String(0,2,temp); SendS(temp); DelayMs(2000); 本科生课程设计(论文) 5 if(!key4) DelayMs(10); if(!key4) while(!key4); LCD_Clear(); if(TIMERFLAG) a=count1; a=a*1; a=a/10; sprintf(temp,speed %5dr/s,a); LCD_Write_String(0,0,temp); TIMERFLAG=0; count1 = 0; d=0.00; e=0.00; sprintf(temp,mil %3.2fkm,d); LCD_Write_String(0,1,temp); SendS(temp); sprintf(temp,money %6.2fY,e); LCD_Write_String(0,2,temp); SendS(temp); DelayMs(2000); void SendB(unsigned char dat) SBUF = dat; while(!TI); TI = 0; void SendS(unsigned char *s) while(*s!=0) SendB(*s); s+; void down(void) interrupt 0 count1+; count2+; void Timer0_isr(void) interrupt 1 TH0=HIGH; TL0=LOW; i+; if(i=100) i=0; TIMERFLAG=1; j+; if(j=100) 本科生课程设计(论文) 6 j=0; flag=1; w+; if(w=100) w=0; flag2=1; /*12864 子程序*/ #include 12864.h #include delay.h sbit RS = P24; sbit RW = P25; sbit EN = P26; #define RS_CLR RS=0 #define RS_SET RS=1 #define RW_CLR RW=0 #define RW_SET RW=1 #define EN_CLR EN=0 #define EN_SET EN=1 #define DataPort P0 bit LCD_Check_Busy(void) DataPort= 0 xFF; RS_CLR; RW_SET; EN_CLR; _nop_(); EN_SET; return (bit)(DataPort void LCD_Write_Com(unsigned char com) DelayMs(5); RS_CLR; RW_CLR; EN_SET; DataPort= com; _nop_(); EN_CLR; void LCD_Write_Data(unsigned char Data) DelayMs(5); RS_SET; RW_CLR; EN_SET; DataPort= Data; _nop_(); EN_CLR; void LCD_Clear(void) LCD_Write_Com(0 x01); DelayMs(5); void LCD_Write_String(unsigned char x,unsigned char y,unsigned char *s) if (y = 0) LCD_Write_Com(0 x80 + x); 本科生课程设计(论文) 7 else if(y=1) LCD_Write_Com(0 x90 + x); else if(y=2) LCD_Write_Com(0 x88 + x); else LCD_Write_Com(0 x98 + x); while (*s) LCD_Write_Data( *s); s +; void LCD_Write_Char(unsigned char x,unsigned char y,unsigned char Data) if (y = 0) LCD_Write_Com(0 x80 + x); else if(y=1) LCD_Write_Com(0 x90 + x); else if(y=2) LCD_Write_Com(0 x88 + x); else LCD_Write_Com(0 x98 + x); LCD_Write_Data( Data); voi

温馨提示

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

评论

0/150

提交评论