《单片机应用与仿真训练》课程设计报告-基于单片机的出租车计价器的设计.doc

上传人:韩长文 文档编号:5091589 上传时间:2020-02-01 格式:DOC 页数:29 大小:247.50KB
返回 下载 相关 举报
《单片机应用与仿真训练》课程设计报告-基于单片机的出租车计价器的设计.doc_第1页
第1页 / 共29页
《单片机应用与仿真训练》课程设计报告-基于单片机的出租车计价器的设计.doc_第2页
第2页 / 共29页
《单片机应用与仿真训练》课程设计报告-基于单片机的出租车计价器的设计.doc_第3页
第3页 / 共29页
《单片机应用与仿真训练》课程设计报告-基于单片机的出租车计价器的设计.doc_第4页
第4页 / 共29页
《单片机应用与仿真训练》课程设计报告-基于单片机的出租车计价器的设计.doc_第5页
第5页 / 共29页
点击查看更多>>
资源描述

《《单片机应用与仿真训练》课程设计报告-基于单片机的出租车计价器的设计.doc》由会员分享,可在线阅读,更多相关《《单片机应用与仿真训练》课程设计报告-基于单片机的出租车计价器的设计.doc(29页珍藏版)》请在三一文库上搜索。

1、河南理工大学大学课程设计说明书 河南理工大学河南理工大学河南理工大学 单片机应用与仿真训练单片机应用与仿真训练设计报告设计报告 基于单片机的出租车计价器的设计基于单片机的出租车计价器的设计 姓 名: 学 号: 专业班级: 指导老师: 所在学院: 电气工程与自动化 2011 年 7 月 1 日 基于基于 51 单片机原理出租车计价器的设计单片机原理出租车计价器的设计 河南理工大学大学课程设计说明书 摘要摘要 本设计的是一个基于单片机 AT89S52 的出租车自动计费设计,附有复位电路, 时钟电路,键盘电路等。复位电路是单片机的初始化操作,除了正常的初始化外, 为摆脱困境,通过复位电路可以重新开始

2、。时钟电路采用 12MHz 的晶振,作为系 统的时钟源,具有较高的准确性。 在上电时四位共阴极 5461AS 数码管显示最初的起步价,里程收费,等待时 间收费三种收费,通过按键可以调整起步价,里程收费,等待时间收费。通过 按键模拟出租车的运行,暂停,停止。在 5461AS 液晶上可以显示运行的时间, 运行时暂停的时间,通过计算可以得出总共的费用和总的路程。在这里主要是 以 AT89S52 单片机为核心控制器,P0 口接 5461AS 液晶显示模块,P1 口接按键 的,通过按键输入。 关键词关键词:单片机 AT89C51; AT89S52;5461AS 液晶;出租车计费器; 河南理工大学大学课程

3、设计说明书 - 1 - 目目 录录 前前 言言- 2 - 第一章第一章 出租车计价系统的设计要求与设计方案出租车计价系统的设计要求与设计方案 - 3 - 1.1出租车计价器设计要求- 3 - 1.2系统主要功能- 3 - 1.3方案论证与比较- 3 - 第二章第二章 出租车计价系统的硬件设计出租车计价系统的硬件设计.- 5 - 2.1振荡电路 .- 5 - 2.2复位电路设计- 5 - 2.3键盘接口电路- 6 - 2.4显示电路 .- 7 - 2.5路程测量部分- 7 - 2.6单片机各引脚功能说明- 8 - 2.75461AS 液晶的简介 - 9 - 第三章第三章 出租车计价系统出租车计价

4、系统的软件设计的软件设计.- 12 - 3.1单片机资源使用- 12 - 3.2中断子函数- 12 - 3.3判键子函数- 13 - 3.4显示子程序- 13 - 3.5总程序流程框图- 15 - 第四章第四章 PROTEUS 的简介的简介- 16 - 4.1PROTEUS介绍- 16 - 第五章第五章 设计体会与小结设计体会与小结- 17 - 参考文献参考文献- 18 - 附附 录录- 19 - 一源程序- 19 - 二设计总图- 25 - 河南理工大学大学课程设计说明书 - 2 - 前前 言言 出租车计价器是出租车营运收费的专用智能化仪表,随着电子技术的发展,出 租车计价器技术也在不断进步

5、和提高。国内出租车计价器已经经历了4 个阶段 的发展。从传统的全部由机械元器件组成的机械式,到半电子式即用电子线路代 替部分机械元器件的出租车计价器;再从集成电路式到目前的单片机系统设计的 出租车计价器。出租车计价器计费是否准确、出租车司机是否作弊才是乘客最 关心的问题,而计价器营运数据的管理是否方便才是出租车司机最关注的。因此 怎样设计出一种既能有效防止司机作弊又能方便司机的计价器尤为重要。因此, 本文以单片机A T89S52 为核心设计一款多功能出租车计价器,该计价器能实现 按时间和里程综合计算车价,能显示时间、里程、单价、总车价等相关信息显 示。它比市场上的一些计价器使用更方便,功能更全

6、,还具有有效防止司机作弊 和系统稳定性好的优点。 河南理工大学大学课程设计说明书 - 3 - 第一章第一章 出租车计价系统的设计要求与设计方案出租车计价系统的设计要求与设计方案 1.1 出租车计价器出租车计价器设计要求设计要求 设计一个出租车自动计费器,计费包括起步价、行车里程计费、二部分, 用 5461AS 液晶 显示总金额,运行时间,暂停时间,最大值为 99.9 元,起步价 为 5.0 元,3Km 之内起步价计费,超过 3Km,增加 2.0 元(即 1KM 增加 2.0 元), 用液晶显示总里程,同时用液晶显示等待时间和运行花费时间。 、计费功能 费用的计算是按行驶里程收费。设起步价为 5

7、.00 元。 1、当里程3km 时,每公里按 2.0 元计费 、显示功能 1、显示行驶里程:用四位数字显示,显示方式为“XXXX”,单位为 km。 计程范围 0-99km,精确到 1km。 2、显示等候时间:用两位数字显示,显示方式为“XX”,单位为 min。计 时范围 0-59min,精确到 1min。 3、显示总费用:用四位数字显示,显示方式为“XXX.X”,单位为元。计 价范围 0-999.9 元,精确到 0.1 元。 1.2 系统主要功能系统主要功能 本出租车自动计费,上电后显示最初的起步价,里程计费单价,等待时间 计费单价,通过按键可以调节起步价,里程计费单价,等待时间计费单价。同

8、时具有运行,暂停,停止等状态,可以显示运行的时间,同时可以显示暂停的 时间,具有累加功能,暂停和运行时间在暂停和运行前一次的状态上计时。出 租车停止后能够显示行驶的总费用。 1.3 方案论证与比较方案论证与比较 方案一:采用数字电子技术,利用 555 定时芯片构成多谐振荡器,或采用 外围的晶振电路作为时钟脉冲信号,采用计数芯片对脉冲尽心脉冲的计数和分 河南理工大学大学课程设计说明书 - 4 - 频,最后通过译码电路对数据进行译码,将译码所得的数据送给数码管显示, 一下是该方案的流程框图,方案一如图 1-1 所示: 图 1-1 方案一 案二:采用 EDA 技术,根据层次化设计理论,该设计问题自顶

9、向下可分为 分频模块,控制模块 计量模块、译码和动态扫描显示模块,其系统框图如图 1-2 所示: 图 1-2 方案二 方案三:采用 MCU 技术,通过单片机作为主控器,利用 1602 字符液晶作为 显示电路,采用外部晶振作为时钟脉冲,通过按键可以方便调节,以下是方案 三的系统流程图,本方案主要是必须对于数字电路比较熟悉,成本又不高。方 案图如图 1-3 所示: 河南理工大学大学课程设计说明书 - 5 - 图 1-3 方案三 方案总结:通过各个方案的比较,本次采用方案三,不但控制简单,而且 成本低廉,设计电路简单。 河南理工大学大学课程设计说明书 - 6 - 河南理工大学大学课程设计说明书 -

10、7 - 第二章第二章 出租车计价系统的硬件设计出租车计价系统的硬件设计 4.14.1 振荡电路振荡电路 单片机内部有一个高增益、反相放大器,其输入端为芯片引脚 XTAL1,其 输出端为引脚 XTAL2。通过这两个引脚在芯片外并接石英晶体振荡器和两只电 容(电容和一般取 33pF)。这样就构成一个稳定的自激振荡器。 振荡电路脉冲经过二分频后作为系统的时钟信号,再在二分频的基础上三分频 产生 ALE 信号,此时得到的信号时机器周期信号。振荡电路如图 2-1 所示: 图 2-1 振荡电路 4.24.2 复位电路设计复位电路设计 复位操作有两种基本形式:一种是上电复位,另一种是按键复位。按键复 位具有

11、上电复位功能外,若要复位,只要按图中的 RESET 键,电源 VCC 经电阻 R1、R2 分压,在 RESET 端产生一个复位高电平。上电复位电路要求接通电源后, 通过外部电容充电来实现单片机自动复位操作。上电瞬间 RESET 引脚获得高电 平,随着电容的充电,RERST 引脚的高电平将逐渐下降。RERST 引脚的高电平只 要能保持足够的时间(2 个机器周期) ,单片机就可以进行复位操作。按键复位 电路图如图 2-2 所示。 河南理工大学大学课程设计说明书 - 8 - 图2-2 AT89C52引脚配置 4.34.3 键盘接口电路键盘接口电路 独立式键盘:独立式键盘中,每个按键占用一根 I/O

12、口线,每个按键电路 相对独立。I/O 口通过按键与地相连,I/O 口有上拉电阻,无键按下时,引脚端 为高电平,有键按下时,引脚电平被拉低。I/O 口内部有上拉电阻时,外部可 不接上拉电阻。键盘接口电路如图 2-3 所示: 图2-3键盘接口电路 4.44.4 显示显示电路电路 对于现实电路我们可以采用数码管,也可以采用液晶显示,液晶又分字符 型和点阵型,我们使用的液晶是字符型液晶,并且带字符库的,不需要查找代 码。英文字符就可。液晶电路使用时,如果发现液晶不亮可以调节连接液晶的 点位器,改变液晶的亮度。显示电路如图 2-4 所示: 河南理工大学大学课程设计说明书 - 9 - 图 2-4 数码管封

13、装图及数据线与数码管管脚关系 4.54.5 路程测量部分路程测量部分 出租车中需要一个能准确获得车轮转动即路量信号的装置,以得到标准的脉 冲信号送入单片机的定时/ 计数器 T1 即 P3. 5 引脚,利用单片机的 T1 的计数 功能完成 100 次的计数后产生一中断来完成路程的测量。(设车轮周长为 1 m , 则霍尔传感器每产生 100 个脉冲便表示车已行程 0. 1 km ,根据际情况在程序 中进行设置) 。汽车联轴器按圆周间隔嵌入磁钢,用霍传感器集成芯片 A44E 测 并输出脉冲,其工作原理如图 4 所示,霍尔传感器集成芯片 A44E 有信号转换、 电压放大、等功能,为增加其抗干扰的能力,

14、经过 74L S14 对信号整形后再通过 光偶送入 P3. 5 引脚。 图 2-5 路程测量电路 河南理工大学大学课程设计说明书 - 10 - 4.64.6 单片机各引脚功能说明单片机各引脚功能说明 AT89S52电路图如图 2-6 所示: VCC:供电电压。GND:接地。P0 口:P0 口为一个 8 位漏级开路双向 I/O 口,每 脚可吸收 8TTL 门流。当 P1 口的管脚第一次写 1 时,被定义为高阻输入。P0 能 够用于外部程序数据存储器,它可以被定义为数据/地址的第八位。在 FIASH 编 程时,P0 口作为原码输入口,当 FIASH 进行 图 2-6 校验时,P0 输出原码,此时

15、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 口的管脚被外部拉低,将输出电流。这

16、是由于内部上拉的缘故。P2 口当用于外部程序 存储器或 16 位地址外部数据存储器进行存取时, P2 口输出地址的高八位。在给出地址“1”时,它利用内部上拉优势,当对外 部八位地址数据存储器进行读写时,P2 口输出其特殊功能寄存器的内容。P2 口 在 FLASH 编程和校验时接收高八位地址信号和控制信号。 P3 口:P3 口管脚是 8 个带内部上拉电阻的双向 I/O 口,可接收输出 4 个 TTL 门电流。当 P3 口写入“1”后,它们被内部上拉为高电平,并用作输入。 作为输入,由于外部下拉为低电平,P3 口将输出电流(ILL)这是由于上拉的 缘故。P3 口也可作为 AT89S52 的一些特殊

17、功能口,P3 口同时为闪烁编程和编程 校验接收一些控制信号。 RST:复位输入。当振荡器复位器件时,要保持 RST 脚两个机器周期的高电 河南理工大学大学课程设计说明书 - 11 - 平时间。 ALE/PROG:当访问外部存储器时,地址锁存允许的输出电平用于锁存地址 的地位字节。在 FLASH 编程期间,此引脚用于输入编程脉冲。在平时,ALE 端 以不变的频率周期输出正脉冲信号,此频率为振荡器频率的 1/6。因此它可用 作对外部输出的脉冲或用于定时目的。然而要注意的是:每当用作外部数据存 储器时,将跳过一个 ALE 脉冲。如想禁止 ALE 的输出可在 SFR8EH 地址上置 0。 此时, AL

18、E 只有在执行 MOVX,MOVC 指令是 ALE 才起作用。另外,该引脚被略 微拉高。如果微处理器在外部执行状态 ALE 禁止,置位无效。 /PSEN:外部程序存储器的选通信号。在由外部程序存储器取指期间,每个 机器周期两次/PSEN 有效。但在访问外部数据存储器时,这两次有效的/PSEN 信 号将不出现。 /EA/VPP:当/EA 保持低电平时,则在此期间外部程序存储器(0000H- FFFFH) ,不管是否有内部程序存储器。注意加密方式 1 时,/EA 将内部锁定为 RESET;当/EA 端保持高电平时,此间内部程序存储器。在 FLASH 编程期间,此 引脚也用于施加 12V 编程电源(

19、VPP) 。 XTAL1:反向振荡放大器的输入及内部时钟工作电路的输入。 XTAL2:来自反向振荡器的输出。 4.74.7 5461AS 液晶的简介液晶的简介 5461AS 共阴四位数码管主要技术参数如表 2-1 所示: 显示容量:16*2 个字符 芯片工作电压: 4.55.5V 工作电流: 2.0mA(5.0V) 模块最佳工作电压: 5.0V 字符尺寸:2.95*4.35(W*H)mm 表 2-1 5461AS 共阴四位数码管主要技术参数 接口信号说明如图 2-6 所示: 河南理工大学大学课程设计说明书 - 12 - 图 2-5 5461AS 共阴四位数码管接口信号说明 控制器接口说明(HD

20、44780 及兼容芯片) 1、 基本操作时序 a 读状态:输入:Rs=L, Rw=H, E=H 输出:D0D7=状态字 b 写指令:输入:Rs=L, Rw=L, D0D7=指令码 输出:无 E=高脉冲 C 读数据:输入:Rs=H, Rw=L, E=H 输出:D0D7=数据 d 写数据:输入:Rs=H, Rw=L, D0D7=数据 输出:无 E=高脉冲 状态字说明如表 2-2 所示: STA7 D7 STA6 D6 STA5 D5 STA4 D4 STA3 D3 STA2 D2 STA1 D1 STA0 D0 表 2-2 状态字说明(a) STA0-6 当前数据地址指针的数值 STA7 读写操作

21、使能1:禁止 0:允许 表 2-3 状态字说明(b) 注:对控制器进行读写操作之前,都必须进行读写检测,确保 STA7 为 0 RAM 地址映射图 控制器内部带有 80*8 位的 RAM 缓冲区,对应关系如下图 2-5 所示: 表 2-4 RAM 地址映射图 LCD16 字*2 行 0 0 0 1 0 2 0 3 0 4 0 5 0 6 0 7 0 8 0 9 0 A 0 B 0 C 0 D 0 E 0 F 1 0 2 7 4 0 4 1 4 2 4 3 4 4 4 5 4 6 4 7 4 8 4 9 4 A 4 B 4 C 4 D 4 E 4 F 5 0 6 7 河南理工大学大学课程设计说明

22、书 - 13 - 显示模式设置如表 2-5 所示: 指令码功能 00111000 设置 16*2 显示,5*7 点阵,8 位数据接 口 表 2-5 显示模式设置 显示开关及光标设置如表 2-6 所示: 指令码功能 00001DCB D=1 开显示; D=0 关显示 C=1 显示光标; C=0 不显示光标 B=1 光标闪烁; B=0 光标不显示 000001NS N=1 当读或写一个字符后地址指针加 一,且光标加一 N=0 当读或写一个字后地址指针减一, 且光标减一 S=1 当写一个字符后,整屏显示左移 (N=1)或右移(N=0),以得到光标不移 动而屏幕移动的效果 S=0 当写一个字符,整屏显

23、示不移动 表 2-4 显示开关及光标设置 数据控制 控制器内部没有一个数据地址指针,用户可通过它们来访问内部的全部 80 字节 RAM。 河南理工大学大学课程设计说明书 - 14 - 第三章第三章 出租车计价系统出租车计价系统的软件设计的软件设计 4.14.1 单片机资源使用单片机资源使用 在本次设计中像电路键盘用到了 P1 口,其中 P1.0 到 P1.4 口作为键盘的输 入,直流电机电路的控制线用了 P2 口线,P3.0、P3.1、P3.2 分别为 led 信号 控制脚。显示电路用到了 P0 和 P2 口,P0 口为液晶的数据口。 4.2 中断子函数中断子函数 对于中断程序,只要定时器计数

24、满就会产生中断 50ms 中断一次,共计 20 次,秒钟加 1,秒钟计满再分钟加,当分钟加到 99 时全部清零。以下是中断子 函数的流程图如图 3-1 所示: 图 3-1 中断子程序流程图 Count+ 开始 Second+ count=0 是否产生中断? Count=20? Second=60? Minite+ second=0 Minite=99? Minite=0 结束 否 否 否 否 是 是 是 是 河南理工大学大学课程设计说明书 - 15 - 4.3 判键子函数判键子函数 对于独立式键盘判键,首先看有键按下不,如果有键按下则延时一会儿, 在判断是否真的有键按下,如果确实有键按下,在判

25、键释放,最后执行键功能 程序。判键子函数的流程框图如图 3-2 所示: 图 3-2 判键子程序流程图 4.4 显示子程序显示子程序 1602 液晶是字符型液晶,它的内部自带字符库,它可以写两行的字符,同 时每行可以写 40 个字符,在写显示程序的时候,我们先写命令,再设定字符显 示,最后写数据,在每写一次命令或数据都需要判断液晶是否忙。液晶显示程 序流程图如图 3-3 所示: 河南理工大学大学课程设计说明书 - 16 - 图 3-3 显示子程序流程图 图 3-3 液晶显示程序流程图 4.5 总程序流程框图总程序流程框图 LCD初始化 开始 LCD写命令 LCD判忙 P0.7=0? 写数据 判忙

26、 P0.7=0? 写完成 了? 写完成 了? 设置字符 位置 结束 否 否 是 是 否 否 是 是 定时器初始化 开始 液晶初始化 判断按键函数1 V=? Value1+10Value2+5Value3+5 数据处理 显示函数 Jump_in=1? 液晶清屏 判断按键函数 V1=? 运行 暂停 停止 数据处理 显示函数 Jump_out=1? 液晶清屏 清零函数 结束 否 是 V=1 V=2 V=3 否 是 V1=1V1=2V1=3 是 否 否 是 河南理工大学大学课程设计说明书 - 17 - 图 3-4 整体程序流程图 河南理工大学大学课程设计说明书 - 18 - 第四章第四章 proteu

27、s 的简介的简介 4.1 Proteus 介绍介绍 Proteus 软件是来自英国 Labcenter electronics 公司的 EDA 工具软件, 它组合了高级原理布图、混合模式 SPICE 仿真,PCB 设计以及自动布线来实现一 个完整的电子设计系统。此系统受益于 15 年来的持续开发,被电子世界在 其对 PCB 设计系统的比较文章中评为最好产品“The Route to PCB CAD”。 Proteus 产品系列也包含了我们革命性的 VSM 技术,用户可以对基于微控制器的 设计连同所有的周围电子器件一起仿真。用户甚至可以实时采用诸如 LED/LCD、键盘、RS232 终端等动态外

28、设模型来对设计进行交互仿真。 其功能模块:个易用而又功能强大的 ISIS 原理布图工具;PROSPICE 混合 模型 SPICE 仿真;ARES PCB 设计。PROSPICE 仿真器的一个扩展 PROTEUS VSM: 便于包括所有相关的器件的基于微处理器设计的协同仿真。此外,还可以结合 微控制器软件使用动态的键盘,开关,按钮,LEDs 甚至 LCD 显示 CPU 模型。支 持许多通用的微控制器,如 PIC,AVR,HC11 以及 8051。最新支持 ARM。交互的 装置模型包括:LED 和 LCD 显示,RS232 终端,通用键盘,I2C,SPI 器件。强 大的调试工具,包括寄存器和存储器

29、,断点和单步模式。IAR C-SPY 和 Keil uVision2 等开发工具的源层调试。应用特殊模型的 DLL 界面-提供有关元件库 的全部文件。 河南理工大学大学课程设计说明书 - 19 - 第五章第五章 设计体会与小结设计体会与小结 出租车计费器系统的设计已经全部完成,能按预期的效果进行模拟汽车启 动,停止,暂停等功能并能够通过 LCD 显示车费数目。本款出租车计价器包括 单价输出、单价调整、显示当前的系统时间等功能。另外,多功能出租车计价 器还具有性能可靠、电路简单、成本低、实用性强等特点,加上经过优化的程 序,使其有很高的智能化水平。 一个月来,经过自己努力,基本上完成了设计要求的

30、内容,在系统可行性 分析、原理图设计等方面都作了许多实际工作,取得了一些成绩,同时也遇到 了一些问题,存在一些不足。经过这一个月的学习,我觉得自己不论是在理论 知识方面还是在动手能力方面都有了不小的进步,自己从中受益匪浅。这次设 计很好的把以前学到的理论知识应用于实践,使我认识到理论知识与实践之间 有一定的差距,只有通过不断的努力学习和实践才能很好的把理论知识应用到 实践当中,也只有通过不断的实践才能对理论知识的理解。 通过这次设计不仅学会了如何去查找相关资料,更重要的是通过查找资料 和翻阅书籍学到了不少知识,扩大了知识面,提高了知识水平。经过单元设计 和系统设计巩固了以前所学的专业知识,自己

31、真正认识到理论联系实际的重要 性,为以后的学习和工作提供了很多有价值的经验。通过这次设计不仅增强了 自己的动脑能力和动手能力,也提高了我思考问题、分析问题、解决问题的能 力,更重要的是学会用工程化的思想来解决问题。这在以前的学习过程中是不 曾学到的。 这次设计是我认真认识到完整、严谨、科学分析问题、解决问题的思想是 多么的重要,只有拥有了科学的态度才能设计出有用的产品。另外通过本次设 计,是我认识到自己理论知识的应用能力有很大的欠缺,需要在以后的学习中 进一步提高。 河南理工大学大学课程设计说明书 - 20 - 参考文献参考文献 1. 李广弟,朱月秀,冷祖祁.单片机基础M.第 3 版.北京航空

32、航天大学出版社, 2007 2. 李华.MCS-51 系列单片机实用接口技术M.北京航空航天大学出版社,1996 3. 李群芳,肖看.单片机原理接口与应用.北京:清华大学出版社,2005 4. 朱承高.电工及电子技术手册M.北京:高等教育出版社,1990 5. 高峰.单片微型应用系统设计及实用技术.北京:机械工业出版社,2004 6. 胡辉,单片机原理及应用设计21 世纪高等院校规划教材M,水利水电出 版社,2005.7 7.刘守义,单片机应用技术M,西安:西安电子科技大学出版社,1996 河南理工大学大学课程设计说明书 - 21 - 附附 录录 一源程序一源程序 #include #defi

33、ne uchar unsigned char #define uint unsigned int uchar qianwei,baiwei,shiwei,gewei; /显示数据各个位置数字的临时变量 char led_seg_code10=0x3f,0x06,0x05b,0x04f,0x66,0x6d,0x7d,0x07,0x7f,0x6f; /段码表示 0-9 uint tt,aa,pulse,distance,cost,danjia,wait,way;/定义路程、价钱、等待时间及一 些全局的变量等; uchar dengdai,second,minute; /按键的定义,所有按键按下去为

34、低电平 sbit key0=P10; /清零 sbit key1=P11; /切换路程与等待时间 sbit key2=P12; /单程还是往返设置 sbit key3=P13; /暂停按钮 sbit led1=P14;/ 指示 sbit led2=P15; sbit led3=P16; sbit led4=P17; bit key1_flag;/由于按键会自动复位,这个为标志位 bit key2_flag; bit key3_flag; bit flag; /初始化函数 void initial_data(void) distance=0; cost=0; second=0; minute=0

35、; way=0; key1_flag=1; / key2_flag=0; /单程 or 往返,接指示灯; key3_flag=1; /暂停,接指示灯; flag=0; pulse=0; dengdai=0; 河南理工大学大学课程设计说明书 - 22 - led1=1; /双程指示 led2=1; /暂停指示 led3=1; /堵车指示 led4=1; / 等待时间切换标志 /暂停程序 void zanting(void) if(key3_flag) EX0=0; /关闭中断 定时器 TR0=0; else EX0=1; TR0=1; key3_flag=!key3_flag; /计算数据处理

36、void jisuan() if(pulse180) distance=pulse/6+way/3000; cost=danjia*(distance-30)/10+50; wait=minute*100+second; /显示的辅助程序,分离一个数的各个数字 void fenli(uint temp) /数据的分离处理 河南理工大学大学课程设计说明书 - 23 - if(temp9999) temp=9999; qianwei=temp/1000; baiwei=temp/100%10; shiwei=temp%100/10; gewei=temp%10; /延时约 1ms,数码管显示时使用

37、 void diplay_delay(void) uchar i; for(i=0;i0;i-) for(j=340;j0;j-); /键盘的扫描 void keyscan() if(key1=0) / 按键消抖并判断按下去的次数为基数还是偶数 delay(5); if(key1=0) key1_flag=!key1_flag; if(key0=0) / 清零 delay(5); if(key0=0) initial_data(); if(key3=0) / 暂停 delay(5); if(key3=0) zanting(); if(key2=0) / 单程还是往返 delay(5); if(

38、key2=0) key2_flag=!key2_flag; /指示等扫描 led1=!key2_flag; / 指示,单程还是往返,灯低电平点亮; 往返亮; led2=key3_flag; / 指示,暂停时亮; 河南理工大学大学课程设计说明书 - 25 - led3=flag; / 指示是否等待; led4=key1_flag; /切换指示,显示路程还是等待时间; diplay_delay(); /定时器初始化 void initial_time() TMOD=0x01; TH0=(65536-10000)/256; TL0=(65536-10000)%256; IE=0x83; IT0=1;

39、 /外部边沿触发方式 TR0=1; / 中断记录脉冲数 void zd() interrupt 0 /中断 0 aa+; if(flag)pulse+; /进入中途等待计价 /* 定时器 * void time0() interrupt 1 /定时 0 TH0=(65536-10000)/256; /10ms TL0=(65536-10000)%256; tt+; if(tt=100) /1s 采样 tt=0; aa=aa/5; /速度(n*圈/s) if(aa=5) flag=0; else flag=1; aa=0; if(!flag) way+; dengdai+; if(dengdai=100) dengdai=0; second+; if(second=60) 河南理工大学大学课程设计说明书 - 26 - minute+; second=0; /主程序 void main(void) initial_data(); /初始化数据 initial_time(); /初始化定时器 while(1) keyscan(); jisuan(); led_show(); 河南理工大学大学课程设计说明书 - 2 - 二二设计总图设计总图

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 绩效管理


经营许可证编号:宁ICP备18001539号-1