单片机课程设计出租车计价器设计.doc_第1页
单片机课程设计出租车计价器设计.doc_第2页
单片机课程设计出租车计价器设计.doc_第3页
单片机课程设计出租车计价器设计.doc_第4页
单片机课程设计出租车计价器设计.doc_第5页
已阅读5页,还剩34页未读 继续免费阅读

下载本文档

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

文档简介

大学课程设计说明书 单片机原理与接口技术单片机原理与接口技术 课程设计课程设计 题题 目 目 基于单片机的出租车计价器的设计基于单片机的出租车计价器的设计 学学 院 院 管理科学与工程学院管理科学与工程学院 专专 业 业 电子信息工程电子信息工程 学学 号 号 200883017200883017 姓姓 名 名 夏念念夏念念 大学课程设计说明书 初始条件 初始条件 1 运用所学的单片机原理与接口技术知识和数字电路知识 2 52 单片机应用开发系统一套 3 PC 机及相关应用软件 要求完成的主要任务要求完成的主要任务 以目前生活中正在使用的出租车计价器为原型进行设计 要求具有 按时间和里程综合计算车价的功能 能显示时间 里程 单价 总车价 等相关信息 1 完成出租车计价器的设计和调试 2 撰写课程设计说明书 说明书使用 A4 打印纸计算机打印 用 Proteus 等绘图软件绘制电子线路图纸 基于基于 52 单片机原理出租车计价器的设计单片机原理出租车计价器的设计 摘要摘要 本设计的是一个基于单片机 AT89C52 的出租车自动计费设计 附有复位电路 时 钟电路 键盘电路等 复位电路是单片机的初始化操作 除了正常的初始化外 为 摆脱困境 通过复位电路可以重新开始 时钟电路采用 12MHz 的晶振 作为系统 的时钟源 具有较高的准确性 在上电时字符型液晶 1602 显示最初的起步价 里程收费 等待时间收费三 种收费 通过按键可以调整起步价 里程收费 等待时间收费 通过按键模拟 出租车的运行 暂停 停止 在 1602 液晶上可以显示运行的时间 运行时暂停 的时间 通过计算可以得出总共的费用和总的路程 在这里主要是以 AT89C52 单片机为核心控制器 P0 口接 1602 液晶显示模块 P1 口接按键的 通过按键 输入 关键词关键词 单片机 AT89C52 1602液晶 出租车计费器 大学课程设计说明书 目目 录录 前前 言言 1 第一章第一章 出租车计价系统的设计要求与设计方案出租车计价系统的设计要求与设计方案 2 1 1出租车计价器设计要求 2 1 2系统主要功能 2 1 3方案论证与比较 2 第二章第二章 出租车计价系统的硬件设计出租车计价系统的硬件设计 4 2 1振荡电路 4 2 2复位电路设计 4 2 3键盘接口电路 5 2 4显示电路 5 2 5路程测量部分 6 2 6单片机各引脚功能说明 6 2 71602 液晶的简介 8 第三章第三章 出租车计价系统出租车计价系统的软件设计的软件设计 10 3 1单片机资源使用 10 3 2中断子函数 10 3 3判键子函数 11 3 4显示子程序 11 3 5总程序流程框图 13 第四章第四章 PROTEUS 的简介的简介 14 4 1PROTEUS介绍 14 第五章第五章 设计体会与小结设计体会与小结 15 参考文献参考文献 15 附附 录录 16 一 源程序 16 二 设计总图 2 前前 言言 出租车计价器是出租车营运收费的专用智能化仪表 随着电子技术的发展 出 租车计价器技术也在不断进步和提高 国内出租车计价器已经经历了4 个阶段 大学课程设计说明书 2 的发展 从传统的全部由机械元器件组成的机械式 到半电子式即用电子线路代 替部分机械元器件的出租车计价器 再从集成电路式到目前的单片机系统设计的 出租车计价器 出租车计价器计费是否准确 出租车司机是否作弊才是乘客最 关心的问题 而计价器营运数据的管理是否方便才是出租车司机最关注的 因此 怎样设计出一种既能有效防止司机作弊又能方便司机的计价器尤为重要 因此 本文以单片机A T89S52 为核心设计一款多功能出租车计价器 该计价器能实现 按时间和里程综合计算车价 能显示时间 里程 单价 总车价等相关信息显 示 它比市场上的一些计价器使用更方便 功能更全 还具有有效防止司机作弊 和系统稳定性好的优点 第一章第一章 出租车计价系统的设计要求与设计方案出租车计价系统的设计要求与设计方案 1 1 出租车计价器出租车计价器设计要求设计要求 设计一个出租车自动计费器 计费包括起步价 行车里程计费 等待时间 计费三部分 用 1602 液晶 显示总金额 运行时间 暂停时间 最大值为 99 9 元 起步价为 5 0 元 3Km 之内起步价计费 超过 3Km 设速度为 100m s 10s 增加 1 3 元 即 1KM 增加 1 3 元 等待时间单价为每分钟 1 5 元 用液晶显 示总里程 同时用液晶显示等待时间和运行花费时间 大学课程设计说明书 3 1 2 系统主要功能系统主要功能 本出租车自动计费 上电后显示最初的起步价 里程计费单价 等待时间 计费单价 通过按键可以调节起步价 里程计费单价 等待时间计费单价 同 时具有运行 暂停 停止等状态 可以显示运行的时间 同时可以显示暂停的 时间 具有累加功能 暂停和运行时间在暂停和运行前一次的状态上计时 出 租车停止后能够显示行驶的总费用 1 3 方案论证与比较方案论证与比较 方案一 采用数字电子技术 利用 555 定时芯片构成多谐振荡器 或采用 外围的晶振电路作为时钟脉冲信号 采用计数芯片对脉冲尽心脉冲的计数和分 频 最后通过译码电路对数据进行译码 将译码所得的数据送给数码管显示 一下是该方案的流程框图 方案一如图 1 1 所示 图 1 1 方案一 案二 采用 EDA 技术 根据层次化设计理论 该设计问题自顶向下可分为 分频模块 控制模块 计量模块 译码和动态扫描显示模块 其系统框图如图 1 2 所示 图 1 2 方案二 方案三 采用 MCU 技术 通过单片机作为主控器 利用 1602 字符液晶作为 显示电路 采用外部晶振作为时钟脉冲 通过按键可以方便调节 以下是方案 三的系统流程图 本方案主要是必须对于数字电路比较熟悉 成本又不高 方 案图如图 1 3 所示 大学课程设计说明书 4 图 1 3 方案三 方案总结 通过各个方案的比较 本次采用方案三 不但控制简单 而且 成本低廉 设计电路简单 第二章第二章 出租车计价系统的硬件设计出租车计价系统的硬件设计 4 14 1 振荡电路振荡电路 单片机内部有一个高增益 反相放大器 其输入端为芯片引脚 XTAL1 其 输出端为引脚 XTAL2 通过这两个引脚在芯片外并接石英晶体振荡器和两只电 容 电容和一般取 33pF 这样就构成一个稳定的自激振荡器 振荡电路脉冲经过二分频后作为系统的时钟信号 再在二分频的基础上三分频 产生 ALE 信号 此时得到的信号时机器周期信号 振荡电路如图 2 1 所示 图 2 1 振荡电路 4 24 2 复位电路设计复位电路设计 复位操作有两种基本形式 一种是上电复位 另一种是按键复位 按键复 位具有上电复位功能外 若要复位 只要按图中的 RESET 键 电源 VCC 经电阻 R1 R2 分压 在 RESET 端产生一个复位高电平 上电复位电路要求接通电源后 通过外部电容充电来实现单片机自动复位操作 上电瞬间 RESET 引脚获得高电 平 随着电容的充电 RERST 引脚的高电平将逐渐下降 RERST 引脚的高电平只 要能保持足够的时间 2 个机器周期 单片机就可以进行复位操作 按键复位 电路图如图 2 2 所示 大学课程设计说明书 5 图2 2 AT89C51引脚配置 4 34 3 键盘接口电路键盘接口电路 独立式键盘 独立式键盘中 每个按键占用一根I O口线 每个按键电路相对独 立 I O口通过按键与地相连 I O口有上拉电阻 无键按下时 引脚端为高电 平 有键按下时 引脚电平被拉低 I O口内部有上拉电阻时 外部可不接上拉 电阻 4 44 4 显示显示电路电路 对于现实电路我们可以采用数码管 也可以采用液晶显示 液晶又分字符 型和点阵型 我们使用的液晶是字符型液晶 并且带字符库的 不需要查找代 码 英文字符就可 液晶电路使用时 如果发现液晶不亮可以调节连接液晶的 点位器 改变液晶的亮度 显示电路如图 2 4 所示 大学课程设计说明书 6 图 2 4 数码管封装图及数据线与数码管管脚关系 4 54 5 路程测量部分路程测量部分 出租车中需要一个能准确获得车轮转动即路量信号的装置 以得到标准的脉 冲信号送入单片机的定时 计数器 T1 即 P3 5 引脚 利用单片机的 T1 的计数 功能完成 100 次的计数后产生一中断来完成路程的测量 设车轮周长为 1 m 则霍尔传感器每产生 100 个脉冲便表示车已行程 0 1 km 根据际情况在程序 中进行设置 汽车联轴器按圆周间隔嵌入磁钢 用霍传感器集成芯片 A44E 测 并输出脉冲 其工作原理如图 4 所示 霍尔传感器集成芯片 A44E 有信号转换 电压放大 等功能 为增加其抗干扰的能力 经过 74L S14 对信号整形后再通过 光偶送入 P3 5 引脚 大学课程设计说明书 7 图 2 5 路程测量电路 4 64 6 单片机各引脚功能说明单片机各引脚功能说明 AT89S52电路图如图 2 6 所示 VCC 供电电压 GND 接地 P0 口 P0 口为一个 8 位漏级开路双向 I O 口 每 脚可吸收 8TTL 门流 当 P1 口的管脚第一次写 1 时 被定义为高阻输入 P0 能 够用于外部程序数据存储器 它可以被定义为数据 地址的第八位 在 FIASH 编 程时 P0 口作为原码输入口 当 FIASH 进行 图 2 6 校验时 P0 输出原码 此时 P0 外部必须被拉高 图 2 6 AT89S52 P1 口 P1 口是一个内部提供上拉电阻的 8 位双向 I O 口 P1 口缓冲器能接 收输出 4TTL 门电流 P1 口管脚写入 1 后 被内部上拉为高 可 用作输入 P1 口被外部下拉为低电平时 将输 出电流 这是由于内部上拉的缘故 在 FLASH 编程和校验时 P1 口作为第八位地址接收 P2 口 P2 口为一个内部上拉电阻的 8 位双 向 I O 口 P2 口缓冲器可接收 输出 4 个 TTL 门电流 当 P2 口被写 1 时 其管脚被内部 上拉电阻拉高 且作为输入 并因此作为输入 时 P2 口的管脚被外部拉低 将输出电流 这 是由于内部上拉的缘故 P2 口当用于外部程序 存储器或 16 位地址外部数据存储器进行存取时 P2 口输出地址的高八位 在 给出地址 1 时 它利用内部上拉优势 当对外部八位地址数据存储器进行读 写时 P2 口输出其特殊功能寄存器的内容 P2 口在 FLASH 编程和校验时接收高 八位地址信号和控制信号 P3 口 P3 口管脚是 8 个带内部上拉电阻的双向 I O 口 可接收输出 4 个 TTL 门电流 当 P3 口写入 1 后 它们被内部上拉为高电平 并用作输入 作为输入 由于外部下拉为低电平 P3 口将输出电流 ILL 这是由于上拉的 缘故 P3 口也可作为 AT89S52 的一些特殊功能口 P3 口同时为闪烁编程和编程 校验接收一些控制信号 RST 复位输入 当振荡器复位器件时 要保持 RST 脚两个机器周期的高电 平时间 大学课程设计说明书 8 ALE PROG 当访问外部存储器时 地址锁存允许的输出电平用于锁存地址 的地位字节 在 FLASH 编程期间 此引脚用于输入编程脉冲 在平时 ALE 端 以不变的频率周期输出正脉冲信号 此频率为振荡器频率的 1 6 因此它可用 作对外部输出的脉冲或用于定时目的 然而要注意的是 每当用作外部数据存 储器时 将跳过一个 ALE 脉冲 如想禁止 ALE 的输出可在 SFR8EH 地址上置 0 此时 ALE 只有在执行 MOVX MOVC 指令是 ALE 才起作用 另外 该引脚被略 微拉高 如果微处理器在外部执行状态 ALE 禁止 置位无效 PSEN 外部程序存储器的选通信号 在由外部程序存储器取指期间 每个 机器周期两次 PSEN 有效 但在访问外部数据存储器时 这两次有效的 PSEN 信 号将不出现 EA VPP 当 EA 保持低电平时 则在此期间外部程序存储器 0000H FFFFH 不管是否有内部程序存储器 注意加密方式 1 时 EA 将内部锁定为 RESET 当 EA 端保持高电平时 此间内部程序存储器 在 FLASH 编程期间 此 引脚也用于施加 12V 编程电源 VPP XTAL1 反向振荡放大器的输入及内部时钟工作电路的输入 XTAL2 来自反向振荡器的输出 第三章第三章 出租车计价系统出租车计价系统的软件设计的软件设计 4 14 1 单片机资源使用单片机资源使用 在本次设计中像电路键盘用到了 P1 口 其中 P1 0 到 P1 4 口作为键盘的输 入 直流电机电路的控制线用了 P2 口线 P3 0 P3 1 P3 2 分别为 led 信号 控制脚 显示电路用到了 P0 和 P2 口 P0 口为液晶的数据口 4 2 中断子函数中断子函数 对于中断程序 只要定时器计数满就会产生中断 50ms 中断一次 共计 20 次 秒钟加 1 秒钟计满再分钟加 当分钟加到 99 时全部清零 以下是中断子 函数的流程图如图 3 1 所示 大学课程设计说明书 9 图 3 1 中断子程序流程图 4 3 判键子函数判键子函数 对于独立式键盘判键 首先看有键按下不 如果有键按下则延时一会儿 在判断是否真的有键按下 如果确实有键按下 在判键释放 最后执行键功能 程序 判键子函数的流程框图如图 3 2 所示 Count 开始 Second count 0 是否产生中断 Count 20 Second 60 Minite second 0 Minite 99 Minite 0 结束 否 否 否 否 是 是 是 是 大学课程设计说明书 10 图 3 2 判键子程序流程图 4 4 显示子程序显示子程序 1602 液晶是字符型液晶 它的内部自带字符库 它可以写两行的字符 同 时每行可以写 40 个字符 在写显示程序的时候 我们先写命令 再设定字符显 示 最后写数据 在每写一次命令或数据都需要判断液晶是否忙 液晶显示程 序流程图如图 3 3 所示 定时器初始化 开始 液晶初始化 判断按键函数1 V Value1 10Value2 5Value3 5 数据处理 显示函数 Jump in 1 液晶清屏 判断按键函数 V1 运行 暂停 停止 数据处理 显示函数 Jump out 1 液晶清屏 清零函数 结束 否 是 V 1 V 2 V 3 否 是 V1 1V1 2V1 3 是 否 否 是 大学课程设计说明书 11 图 3 3 显示子总程序流程框图 图 3 4 整体程序流程图 大学课程设计说明书 12 第四章第四章 proteus 的简介的简介 4 1 Proteus 介绍介绍 Proteus 软件是来自英国 Labcenter electronics 公司的 EDA 工具软件 它组合了高级原理布图 混合模式 SPICE 仿真 PCB 设计以及自动布线来实现一 个完整的电子设计系统 此系统受益于 15 年来的持续开发 被 电子世界 在 其对 PCB 设计系统的比较文章中评为最好产品 The Route to PCB CAD Proteus 产品系列也包含了我们革命性的 VSM 技术 用户可以对基于微控制器的 设计连同所有的周围电子器件一起仿真 用户甚至可以实时采用诸如 LED LCD 键盘 RS232 终端等动态外设模型来对设计进行交互仿真 其功能模块 个易用而又功能强大的 ISIS 原理布图工具 PROSPICE 混合 模型 SPICE 仿真 ARES PCB 设计 PROSPICE 仿真器的一个扩展 PROTEUS VSM 便于包括所有相关的器件的基于微处理器设计的协同仿真 此外 还可以结合 微控制器软件使用动态的键盘 开关 按钮 LEDs 甚至 LCD 显示 CPU 模型 支 持许多通用的微控制器 如 PIC AVR HC11 以及 8051 最新支持 ARM 交互的 装置模型包括 LED 和 LCD 显示 RS232 终端 通用键盘 I2C SPI 器件 强 大的调试工具 包括寄存器和存储器 断点和单步模式 IAR C SPY 和 Keil uVision2 等开发工具的源层调试 应用特殊模型的 DLL 界面 提供有关元件库 的全部文件 大学课程设计说明书 13 第五章第五章 设计体会与小结设计体会与小结 出租车计费器系统的设计已经全部完成 能按预期的效果进行模拟汽车启 动 停止 暂停等功能并能够通过 LCD 显示车费数目 本款出租车计价器包括 单价输出 单价调整 显示当前的系统时间等功能 另外 多功能出租车计价 器还具有性能可靠 电路简单 成本低 实用性强等特点 加上经过优化的程 序 使其有很高的智能化水平 一个月来 经过自己努力 基本上完成了设计要求的内容 在系统可行性 分析 原理图设计等方面都作了许多实际工作 取得了一些成绩 同时也遇到 了一些问题 存在一些不足 经过这一个月的学习 我觉得自己不论是在理论 知识方面还是在动手能力方面都有了不小的进步 自己从中受益匪浅 这次设 计很好的把以前学到的理论知识应用于实践 使我认识到理论知识与实践之间 有一定的差距 只有通过不断的努力学习和实践才能很好的把理论知识应用到 实践当中 也只有通过不断的实践才能对理论知识的理解 通过这次设计不仅学会了如何去查找相关资料 更重要的是通过查找资料 和翻阅书籍学到了不少知识 扩大了知识面 提高了知识水平 经过单元设计 和系统设计巩固了以前所学的专业知识 自己真正认识到理论联系实际的重要 性 为以后的学习和工作提供了很多有价值的经验 通过这次设计不仅增强了 自己的动脑能力和动手能力 也提高了我思考问题 分析问题 解决问题的能 力 更重要的是学会用工程化的思想来解决问题 这在以前的学习过程中是不 曾学到的 这次设计是我认真认识到完整 严谨 科学分析问题 解决问题的思想是 多么的重要 只有拥有了科学的态度才能设计出有用的产品 另外通过本次设 计 是我认识到自己理论知识的应用能力有很大的欠缺 需要在以后的学习中 进一步提高 参考文献参考文献 1 李广弟 朱月秀 冷祖祁 单片机基础 M 第 3 版 北京航空航天大学出版社 2007 2 李华 MCS 51 系列单片机实用接口技术 M 北京航空航天大学出版社 1996 3 李群芳 肖看 单片机原理接口与应用 北京 清华大学出版社 2005 4 朱承高 电工及电子技术手册 M 北京 高等教育出版社 1990 5 高峰 单片微型应用系统设计及实用技术 北京 机械工业出版社 2004 6 胡辉 单片机原理及应用设计 21 世纪高等院校规划教材 M 水利水电出 版社 2005 7 7 刘守义 单片机应用技术 M 西安 西安电子科技大学出版社 1996 大学课程设计说明书 14 源程序源程序 include define uint unsigned int define unch unsigned char sbit lcden P1 4 lcd 使能端 高脉冲有效 sbit lcdrs P1 5 lcd 数据 指令端 低电平 写指令 高电平 写数据 sbit lcdrw P1 6 lcd 读 写指令端 低电平执行写 高电平执行读 sbit key1 P2 0 复位按键 初始起步价 5 元 里程数归 0 sbit key2 P2 1 按键 手动调整白天 夜间的单价和时钟时间的调整 sbit key3 P2 2 按键 手动调整白天 夜间的单价和时钟时间的调整 sbit key4 P2 3 白天夜间切换按键 sbit key5 P2 4 移屏显示时钟 sbit key6 P2 5 校正时间按键 unch code time 2 6 day Night 白天夜间字符串数组 unch code week table 7 4 Mon Tue Wed Thu Fri Sat Sun 星期显示 unch code date table Date 20 年月日初始写入 变量定义为整形实际显示是浮点型 程序写入小数点 uint kilometer 里程变量 unch unit price day unit price night 白天夜间单价变量 unch change flag display 屏幕切换标志变量 unch sw gw 分解位变量 unch i unch num1 定时器 1 所需变量 unch temp second temp minute temp hour 时钟小时 分钟 秒变量 unch year month day 时钟年 月 日变量 unch week n 时钟星期所需变量 unch temp add1 时钟校正时地址暂存变量 unch row 校正第几行变量 大学课程设计说明书 15 unch count10s 等待 10s 变量 uint total price temp 根据里程数确定的价格变量 uint total price wait 等待 10s 后的价格变量 void start temp second 0 秒初始值 temp minute 0 分钟初始值 temp hour 0 小时初始值 year 10 年份初始值 month 8 月份初始值 day 24 日初始值 week 1 星期初始值 temp add1 0 校时地址暂存变量初始值 row 1 校时第几行初始值 分解位函数 void calculate unch middle sw middle 10 十位 gw middle 10 个位 ms 延时函数 void delay uint z uint i j for i z i 0 i for j 110 j 0 j lcd 写数据 大学课程设计说明书 16 void write data unch date lcden 0 lcdrs 1 写数据 高电平有效 P0 date 先赋值 delay 5 延时后 lcden 1 lcden 一旦拉高 数据立马写入 delay 5 延时后 lcden 0 再次置低 准备下一次拉高 lcd 写指令 void write com unch com lcden 0 lcdrs 0 写指令 低电平有效 P0 com 赋值 delay 5 延时后 lcden 1 lcden 拉高 delay 5 延时后 lcden 0 再次置低 lcd 初始化 void lcd initial lcden 0 lcdrw 0 表示对 lcd 进行写操作 write com 0 x38 lcd 显示 write com 0 x0c 开显示 不显示光标 write com 0 x06 读或写后 地址指针 1 total price wait 0 等待时计费变量清 0 kilometer 0 里程数清 0 unit price day 14 白天单价初始值 1 4 程序写入小数点 unit price night 17 夜间单价初始值 1 7 程序写入小数点 大学课程设计说明书 17 里程显示函数 整形表示 程序写入小数点 精确 0 1km void kilometer display uint temp unch bw sw gw write com 0 x80 bw temp 100 sw temp 100 10 gw temp 100 10 write data 0 bw write data 0 sw write data write data 0 gw write data k write data m 单价显示函数 整形表示 程序写入小数点 void unit price display unch temp unch sw gw sw temp 10 gw temp 10 write com 0 x80 9 write data 0 sw write data write data 0 gw write data write data k write data m 总价显示函数 整形表示 程序写入小数点 精确到角 void total price display uint temp unch qw bw sw 大学课程设计说明书 18 qw temp 1000 bw temp 1000 100 sw temp 1000 100 10 write com 0 x80 0 x40 write data 0 qw write data 0 bw write data write data 0 sw 白天 夜间 j 0 表示白天 j 1 表示夜间显示函数 void time display unch j unch n write com 0 x80 0 x40 9 for n 0 time j n 0 n write data time j n 外部中断 0 下降沿触发形式统计里程数 void extern interrupt0 initial EA 1 开总中断 EX0 1 开外部中断 0 IT0 1 外部中断 0 下降沿触发 50ms 定时初始化用于时钟 void timing1 initial TMOD 0 x15 TH1 65536 45872 256 11 0592M 晶振 TL1 65536 45872 256 EA 1 开总中断 ET1 1 开定时器 1 大学课程设计说明书 19 TR1 1 启动定时器 1 时钟 采用中断的方式记录里程 下降沿触发 void extern interrupt0 interrupt 0 unch mile num count10s 0 if mile num 10 每个方波代表 10 米 10 次代表 100 米即显示 0 1 公里 mile num else mile num 0 kilometer kilometer 1 屏 2 日期显示函数 void lcd date display unch i write com 0 x80 0 x40 24 for i 0 date table i 0 i write data date table i 屏 2 时钟显示函数 void lcd2 display if num1 20 定时器 1 50ms 一次中断 20 次即为 1s 大学课程设计说明书 20 num1 0 temp second count10s if temp second 60 temp second 0 temp minute if temp minute 60 temp minute 0 temp hour if temp hour 24 temp hour 0 day week if week 7 week 0 if day 32 未考虑某月 31 天 或 30 天以及闰年平年 day 1 month if month 13 month 1 year calculate temp second 分解秒的 各位 write com 0 x80 24 8 确定 秒在 lcd 屏上的位置 write data 0 sw write data 0 gw 大学课程设计说明书 21 calculate temp minute 分解分的各位 write com 0 x80 24 0 x05 确定分钟在 lcd 屏上的位置 write data 0 sw write data 0 gw write data calculate temp hour 分解时的各位 write com 0 x80 24 0 x02 确定小时在 lcd 屏上的位置 write data 0 sw write data 0 gw write data write com 0 x80 24 12 确定星期在 lcd 屏上的位置 for n 0 week table week n 0 n write data week table week n calculate year 分解 年的各位 write com 0 x80 0 x40 24 7 确定年在 lcd 屏上的位置 write data 0 sw write data 0 gw write data calculate month 分解月的各位 write com 0 x80 0 x40 24 10 确定月在 lcd 屏上的位置 write data 0 sw write data 0 gw write data 大学课程设计说明书 22 calculate day 分解日的各位 write com 0 x80 0 x40 24 13 确定日在 lcd 屏上的位置 write data 0 sw write data 0 gw write data 0 定时器 1 中断程序 void timing1 interrupt 3 TR1 0 TH1 65536 45872 256 TL1 65536 45872 256 num1 lcd2 display 第二屏液晶显示函数 TR1 1 独立键盘扫描函数 void key scan if key1 0 复位按键 初始起步价 5 元 里程数归 0 delay 5 if key1 0 while key1 delay 5 while key1 total price temp 0 lcd initial 初始化液晶第一 屏 里程数归 0 起步价 5 元 kilometer display kilometer 显示复位后初始 里程数 大学课程设计说明书 23 if i 2 1 奇数次按下 是夜间状态再复位 unit price display unit price night 显示夜间 单价 time display 1 显示夜间状态 if i 2 0 偶数次按下 是白天状态再复位 unit price display unit price day 显示白天单 价 time display 0 显示白天状态 total price display 500 起步价 5 元 程 序写入小数点 lcd date display 年月日初始 写入 if flag display 0 如果是在屏 幕 1 if key2 0 delay 5 if key2 0 while key2 delay 5 while key2 if i 2 0 偶数次按下 切换键后是白天 白天单价调整增加 unit price day if i 2 1 奇数次按下 切换键后是夜间 夜间单价调整增加 unit price night if key3 0 大学课程设计说明书 24 delay 5 if key3 0 while key3 delay 5 while key3 if i 2 0 偶数次按下 切换键后是白天 白天单价调整减少 unit price day if i 2 1 奇数次按下 切换键后是夜间 夜间单价调整减少 unit price night 如果是在屏幕 2 则校正时钟 if flag display 1 if key6 0 delay 5 if key6 0 temp add1 3 地址变量不断更 新 while key6 TR1 0 时钟停止准备校 时 switch temp add1 case 15 temp add1 8 充新赋值地址暂存变量 准备校正第 2 排 row 2 break case 17 temp add1 0 第一屏校正完后 row 1 大学课程设计说明书 25 write com 0 x0c 光标不闪 TR1 1 时钟启动 break if temp add1 3 采用寻地址法校正 小时加 法校正 if key2 0 delay 5 if key2 0 while key2 temp hour if temp hour 24 temp hour 0 write com 0 x80 24 temp add1 1 calculate temp hour write data 0 sw write data 0 gw if temp add1 6 采用寻地址法校正 分钟 加法校正 if key2 0 delay 5 if key2 0 while key2 大学课程设计说明书 26 temp minute if temp minute 60 temp minute 0 write com 0 x80 24 temp add1 1 calculate temp minute write data 0 sw write data 0 gw if temp add1 9 采用寻地址法校正 秒加 法校正 if key2 0 delay 5 if key2 0 while key2 temp second if temp second 60 temp second 0 write com 0 x80 24 temp add1 1 calculate temp second write data 0 sw write data 0 gw 大学课程设计说明书 27 if temp add1 12 采用寻地址法校正 星期加法校正 if key2 0 delay 5 if key2 0 while key2 week if week 7 week 0 write com 0 x80 24 temp add1 for n 0 week table week n 0 n write data week table week n if temp add1 8 采用寻地址 法校正 年加法校正 if key2 0 delay 5 if key2 0 while key2 year if year 99 year 0 write com 0 x80 0 x40 24 temp add1 1 calculate year 大学课程设计说明书 28 write data 0 sw write data 0 gw if temp add1 11 采用寻地址法校正 月加法校正 if key2 0 delay 5 if key2 0 while key2 month if month 13 month 1 write com 0 x80 0 x40 24 temp add1 1 calculate month write data 0 sw write data 0 gw if temp add1 14 采用 寻地址法校正 日加法校正 if key2 0 delay 5 if key2 0 while key2 大学课程设计说明书 29 day if day 32 day 1 write com 0 x80 0 x40 24 temp add1 1 calculate day write data 0 sw write data 0 gw if temp add1 3 采用寻地址 法校正 小时减法校正 if key3 0 delay 5 if key3 0 while key3 temp hour if temp hour 255 temp hour 23 write com 0 x80 24 temp add1 1 calculate temp hour write data 0 sw write data 0 gw 大学课程设计说明书 30 if temp add1 6 采用寻地 址法校正 分钟减法校正 if key3 0 delay 5 if key3 0 while key3 temp minute if temp minute 255 temp minute 59 write com 0 x80 24 temp add1 1 calculate temp minute write data 0 sw write data 0 gw if temp add1 9 采用 寻地址法校正 秒减法校正 if key3 0 delay 5 if key3 0 while key3 temp second if temp second 255 temp second 59 大学课程设计说明书 31 write com 0 x80 24 temp add1 1 calculate temp second write data 0 sw write data 0 gw if temp add1 12 采用寻地址法校正 星期减法校正 if key3 0 delay 5 if key3 0 while key3 week if week 255 week 6 write com 0 x80 24 temp add1 for n 0 week table week n 0 n write data week table week n if temp add1 8 采用寻地址法校 正 年减法校正 if key3 0 delay 5 if key3 0 大学课程设计说明书 32 while key3 year if year 255 year 99 write com 0 x80 0 x40 24 temp add1 1 calculate year write data 0 sw write data 0 gw if temp add1 11 采用寻地址法校 正 月减法校正 if key3 0 delay 5 if

温馨提示

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

评论

0/150

提交评论