毕业设计论文-基于51单片机的计程车计价器内容摘要:

采用外部中断 int0 口和定时器 0 的协同工作实现了测速。 使定时器 0 工作在方式 2,对定时器 0装入初值计时,计时时间为 ,通过 4000 次定时器 0 的中断计为 1s。 此时,数通过 int0 的中断数,即可得到,一秒的脉冲数,则能够算出车轮的 11 西华大学电气与电子信息学院电气应用系统设计报告 速度。 然后通过计价子程序以及显示程序显示在了数码管上 , 测速电路 见 图。 计价方式 1,通过数得每秒通过的 INT0 脉冲获得速度,然后通过计价方式 1 的公 式算的里程,最终用里程得到价格,再通过显示子程序显示在数码管上。 计价方式 2,当速度小于 4M/S 大于 0M/S 时,每当定时器计满 4000 次中断时,整型数据 time_sum+1,当 time_sum=10 的时候,储存价格的整型数据 timemoney+1,然后通过计价子程序与显示子程序算出价格,实现了当速度小于一定值时,计价器按时间计价。 计价方式 3,当速度等于 0M/S 时,当 time_sum=10 的时候,整型数据 wait_sum+1,当 wait_sum=3 时,即计程车停车等待了 30S,储存价格的整型数据 waitmoney+1,然后通过计价子程序与显示程序算出价格,实现了当停车等待超过一定时间时,计价器按时间计价。 具体计算方法为: s/m4V 时, 2020S , 4M ; S , 1000/)2020(4  SM s/m40 V , 41im e m o n e y  TM。 s/m0V , 410a itm o n e y  WM + 8 8 .8+ 2 0 V 图 12 西华大学电气与电子信息学院电气应用系统设计报告 4 系统软件设计 软件总体设计 51 单片机的程序设计语言主要有两种:一是汇编程 序设计;二是 C 语言编程设计,两种程序设计语言都有各自的优点。 用汇编语言编写和高级语言 (C 语言 )比较起来节省空间,这样对于存储空间仅 4Kb 的芯片来说是极之有利的, 51 单片机能更高速的运行。 C 语言编写的程序,虽然不象汇编那样速度快、但程序简单易行、并且需要较小的存储空间。 C 语言作为一种编译型程序设计语言,它兼顾了多种高级语言的特点,并具备汇编语言的功能。 此外, C 语言程序还具有完善的模块程序结构,从而为软件开发中采用模块化程序设计方法提供了有力的保障。 因此,使用 C 语言进行程序设计已成为软件开发的主流。 本设计就是 采用 C 语言编写的,由于采用模块化操作,使得程序在修改,执行的时候显得方便易行。 系统程序设计 本设计中,软件设计采用模块化操作,利用各个模块之间的相互联系,在设计中采用主程序调用各个子程序的方法,使程序通俗易懂,我们设计了整体程序流程图: 在 main 函数编写开始,要进行初始化,包括对系统初始化和对存储器初始化,要对硬件设备进行初始化,并使硬件处于就绪状态。 通过判断是否计费 ,清零等状态,来分别调用不同的子程序,使程序在设计之前,就有了很强的逻辑关系。 本程序的子程序包括显示子程序 , 计价子程序 , 延时子 程序。 并且,通过调用外部中断和定时器 0 中断实现了对计程车计价器基本功能的实现。 在主程序模块中,需要完成对各参量和接口的初始化、出租车起价和单价的初始化等工作。 另外,在主程序模块中还需要设置修改单价的程序。 当汽车运行起来时,就启动计价,根据里程寄存器中的内容计算和判断行驶里程是否已超过起步价公里数。 若已超过,则根据里程值、每公里的单价数和起步价数来计算出当前的总金额,并将结果输出在显示屏上。 中途等待时,产生计时,当时间超过等待设定值时,开始进行计价,并把等待价格加到总金额里。 这些对应于硬件就是通过按下各个控 制开关,来分别进行不同的动作,最后数码管根据输入的信息,来显示不同的数据信息,这就达到了软件控制硬件,同时输入信息控制输出信息的目的。 整个程序的流程图如图 所示: 13 西华大学电气与电子信息学院电气应用系统设计报告 图 程序框图 初始化 开始显示 是否开始计费 速度 4 4速度 0 速度 =0 计价程序 1 计价程序 2 计价程序 3 判断是否停止键按下 结果显示 清零单价复位 Y Y N 14 西华大学电气与电子信息学院电气应用系统设计报告 5 系统调试 系统调试包括软件调试和硬件调试。 硬件调试的任务是排除所焊接电路故障。 软件调试是利用开发工具进行在线仿真调试。 调试的一般过程如图 所示: 图 系统调试流程图 系统调试的一般过程是上电运行后观察其运行状态,数码管是否点亮等。 软件调试先是各个模块、各个子程序分别调试,最后进行系统联机调试。 编程工具 — C51 语言 8051 单片机的应用程序设计,使用 C51 语言进行程序设计虽然相对于汇编语言代码效率有所下降,但可以方便地实现程序设计模块化,代码结构清晰、可读性强,易于维护、更新和移植,适合较大规模的单片机程序设计。 近年来,随着 C51 语言的编译器性能的不断提高,在绝大多数应用环境下, C51 程序的执行效率已经非常接近汇编语言,因此,使用 C51 进行单 片机程序设计已经成为单片机程序设计的主流选择之一。 程序调试软件 — KEIL 本设计的软件都是在 Keil u Vision 上进行编写,编译,调试以及运行操作。 系统仿真软件调试 — PROTEUS Proteus 软件。 系统调试 硬件调试 软件调试 系统联调 现场调试 调试结束 15 西华大学电气与电子信息学院电气应用系统设计报告 file 菜单下的 open design 选项,找到所需的元器件,元器件上单击右键选中,再单击左键对其进行命名和赋值,接着在编辑器左边的一栏中,找出并绘制设计所要的各种元器件,按照 电路图连接后并保存。 keil 编译产生的 hex 文件下载到单片机中:双击 51 单片机,在对话框中把保存过的 hex 文件打开,再单击确定。 ,进行软件仿真调试,直到出现正确的结果。 图 为软件的仿真窗口图: X T A L 218X T A L 119A L E30EA31P S E N29RS T9P 0 .0 /A D 039P 0 .1 /A D 138P 0 .2 /A D 237P 0 .3 /A D 336P 0 .4 /A D 435P 0 .5 /A D 534P 0 .6 /A D 633P 0 .7 /A D 732P 1 .01P 1 .12P 1 .23P 1 .34P 1 .45P 1 .56P 1 .67P 1 .78P 3 .0 /R X D10P 3 .1 /T X D11P 3 .2 /I NT 012P 3 .3 /I NT 113P 3 .4 /T 014P 3 .7 /R D17P 3 .6 /W R16P 3 .5 /T 115P 2 .7 /A 1 528P 2 .0 /A 821P 2 .1 /A 922P 2 .2 /A 1 023P 2 .3 /A 1 124P 2 .4 /A 1 225P 2 .5 /A 1 326P 2 .6 /A 1 427U1A T 8 9 C5 1+ 2 0 VC11 0 u fR11k+ 5 vX1CR Y S T A LC23 0 p fC33 0 p f234567891R P 1RE S P A C K 8+ 5 v+ 5 vD3肖特基二极管V o l t s+ 4 .5 0L15VB A T 14 .5 V 图 Proteus 仿真图 下图是通过在 Keil C 中编译通过,并生成 Hex 文件,在 PROTEUS 中 的单片机里拷入程序,正常运行的情况下,数码管的第一位和第二位显示里程数,第三位至 第五位显示价格,第六位至第八位显示速度。 当按键 1 按下之后,单片机开中断,数码管才能正常显示里程数,价格,以及速度。 当按键 1 松开,按键 2 按下的时候,单片机所连接的两个 7 段四位共阴极数码管的每一位都会被清零。 松开按键 2,再按下按键 1,单片机又会开中断,开始正常工作。 系统仿真 图如图 所示: 16 西华大学电气与电子信息学院电气应用系统设计报告 + M A XX T A L 218X T A L 119A L E30EA31P S E N29RS T9P 0 .0 /A D 039P 0 .1 /A D 138P 0 .2 /A D 237P 0 .3 /A D 336P 0 .4 /A D 435P 0 .5 /A D 534P 0 .6 /A D 633P 0 .7 /A D 732P 1 .01P 1 .12P 1 .23P 1 .34P 1 .45P 1 .56P 1 .67P 1 .78P。
阅读剩余 0%
本站所有文章资讯、展示的图片素材等内容均为注册用户上传(部分报媒/平媒内容转载自网络合作媒体),仅供学习参考。 用户通过本站上传、发布的任何内容的知识产权归属用户或原始著作权人所有。如有侵犯您的版权,请联系我们反馈本站将在三个工作日内改正。