出租车计价器系统完整版

合集下载

单片机AT89C51完成的出租车计价系统

单片机AT89C51完成的出租车计价系统

摘要本毕业设计说明书针对用单片机AT89C51完成的出租车计价系统。

随着经济的发展,带动汽车行业快速发展,出租车日益普遍,了解在出租车上应用的计费系统,对我们日常生活也有帮助。

而使用单片机实现该系统,是深化单片机应用的良好途径。

本系统由单片机AT89C51和一些外围原件组成,具有操作简单,显示明了,功能强大的特点。

整个系统只有两个按键,一个“启动/停止”,一个“复位”;使用六个七段数码管作为显示器,可以显示数字、字母使系统信息一目了然;本系统除了里程统计和费用计算以外,还具有万年历和语音播报功能。

万年历由时钟芯片DS1302实时提供时钟信号,再由单片机调用显示;语音播报由语音芯片ISD1420提供语音信息,语音信息放在不同的地址里,由单片机从这些地址中调用合适的语音进行播放。

本方案充分发挥人性化的特点,利用ISD1420的语音功能,模拟实现带语音提示的出租车计价系统。

比较真实地模拟出租车的空车、载客、到站及对各状况的费率的计算、统计、显示和语音播报等功能。

本系统涉及到的理论知识有: AT89C51单片机知识、ISD1420语音芯片的可擦、写的语音芯片的工作原理及应用、实时时钟芯片的工作原理及应用、出租车计费系统的原理和实现方法。

关键词:时钟芯片DS1302 语音芯片ISD1420 单片机AT89C51 掉电保护芯片24C02ABSTRACTThe abstract this graduation project instruction booklet in view of the rental car which completes with monolithic integrated circuit AT89C51 counts the price system. Along with the economical development, leads the automobile profession fast development, the rental car is day by day common, understood on the rental car the application cost system, also has the help to our daily life.But uses the monolithic integrated circuit to realize this system, is deepens the monolithic integrated circuit application the good way. This system is composed by monolithic integrated circuit AT89C51 and some periphery original part, has the operation to be simple, demonstration perspicuity, function formidable characteristic. Overall system only then two pressed keys, “start/stop”, “replacement”; Uses six seven section of nixietubes to take the monitor, may demonstrate the numeral, the letter cause the system information to be clear; This system besides course statistics and calculation of charge, but also has ten thousand calendars and the pronunciation disseminates news the function. Ten thousand calendars real-time provide the clock signal by clock chip DS1302, again transfers the demonstration by the monolithic integrated circuit; The pronunciation disseminates news by pronunciation chip ISD1420 provides the pronunciation information, the pronunciation information places in the different address, transfers the appropriate pronunciation by the monolithic integrated circuit from these addresses to carry on the broadcast. This plan full display user friendly characteristic, uses ISD1420 the pronunciation function, the simulation realization belt voice prompt rental car counts the price pared with really simulates the rental car the spatial vehicle, carries passengers, to station of arrival and to various conditions tariff computation, the statistics, the demonstration and the pronunciation disseminates news and so on the functions. This system involves the theory knowledge includes: The AT89C51 monolithic integrated circuit knowledge, the ISD1420 pronunciation chip may scratch the pronunciation chip principle of work and the application, the real-time clock chip principle of work and the application, the rental car cost system principle and the realization method which, write.Key word: Clock chip DS1302 P onunciation chip ISD1420 M nolithic integrated circuit AT89C51 F lls electricity protection chip 24C02目录第1章前言----------------------------------------------(5)1.1 出租车计费器概述------------------------------------------------------(5)1.2单片机发展前景概述----------------------------------(6)1.3单片机的应用范围------------------------------------(7)第2章方案论证比较与选择------------------------------(8)2.1方案一(数字电路方案)------------------------------(8)2.2 方案二(单片机电路方案)------------------------------------------(8)第3章系统总体介绍------------------------------------------------(9)3.1 系统组成-------------------------------------------(9)3.2 里程计量及费用计算功能-----------------------------(9)3.3 语音播放功能---------------------------------------(10)3.4 实时时钟功能---------------------------------------(10)3.5按键功能-------------------------------------------(10)3.6 555功能-------------------------------------------(11)3.6电路设计原理图-------------------------------------(12)3.7 电路设计PCB图-------------------------------------------------------(13)第4章硬件设计-----------------------------------------------------------(14)4.1 主程序/CPU模块 ------------------------------------------------------(14)4.2 语音播放模块-----------------------------------------------------------(17)4.3脉冲发生器模块------------------------------------------------------(26)4.4时钟模块--------------------------------------------(27)4.5按键扫描模块------------------------------------------------------------(29)4.6掉电保护模块----------------------------------------(30)4.7显示模块--------------------------------------------------------------------(31)第5章系统程序设计------------------------------------(33)5.1系统主程序流程框图-----------------------------------(34)5.2 里程和费率计算程序流程图-----------------------------(35)5. 3 程序设计------------------------------------------------------------------(36)第6章设计心得---------------------------------(41)致谢---------------------------------------------(42)参考文献 ----------------------------------------------------------------------------(43)附录----------------------------------------------------(44)1.1元件清单----------------------------------------------------------------------(44)1.2时序图-------------------------------------------------------------------------(48)第1章前言1.1出租车计费器概述出租车计费器是乘客与司机双方的交易准则,它是出租车行业发展的重要标志,是出租车中最重要的工具。

出租车计价器系统设计

出租车计价器系统设计

出租车计价器系统设计一、引言二、系统需求1.实时计算乘客的费用,包括起步价、里程费和时间费。

2.支持现金和电子支付两种支付方式。

3.集成GPS导航功能,方便司机找到目的地。

4.提供乘客和司机的行程记录,以便后续查询和管理。

5.具备车辆运营数据统计和分析功能,方便管理者监控业务运营情况。

6.界面友好,操作简单方便。

三、系统设计1.架构设计出租车计价器系统可以采用分布式架构,主要由计价器终端设备、服务器和后台管理系统组成。

计价器终端设备负责实时计算费用,接收用户支付信息并提供导航功能。

服务器将终端设备上的数据上传到后台管理系统,并处理支付信息。

后台管理系统负责行程记录的存储和查询,车辆运营数据统计等功能。

2.功能设计计价器终端设备的主要功能包括:-实时显示乘客的费用,包括起步费、里程费和时间费。

-支持现金和电子支付两种支付方式。

对于现金支付,可以提供找零功能。

-集成GPS导航功能,显示乘客的目的地并为司机提供导航指引。

-提供乘客和司机的行程记录,包括乘车地点、目的地、起步时间、到达时间等信息。

后台管理系统的主要功能包括:-存储和查询行程记录,方便乘客和司机进行查询,也方便管理者进行统计和分析。

-处理支付信息,包括验证支付的有效性和进行支付结果的记录。

-根据行程记录和支付信息生成报表,进行车辆运营数据的统计和分析。

3.数据库设计系统需要至少设计以下几个数据库表:-行程记录表,包含乘车地点、目的地、起步时间、到达时间等信息。

-支付记录表,包含支付方式、支付金额、支付结果等信息。

-车辆表,包含车辆的基本信息,如车牌号、品牌、颜色等。

-用户表,包含乘客的基本信息,如姓名、手机号等。

四、系统流程1.乘客叫车并上车后,司机启动计价器终端设备。

2.计价器显示乘客的起步费和当前费用,并启动计时和记录起步时间。

3.计价器终端设备显示乘客的目的地,并提供导航指引。

4.司机按照导航指引将乘客送到目的地。

5.到达目的地后,计价器停止计时,显示乘客的总费用。

出租车自动计费系统

出租车自动计费系统

课程设计东北石油大学课程设计任务书课程EDA技术课程设计题目出租车自动计费系统专业电子信息工程姓名邵文瀚学号080901140717主要内容、基本要求、主要参考资料等主要内容:设计一个最大量程为99.99元的出租车自动计费,计费器具有行车里程计费、等候时间计费及起价三部分功能,并用数码管显示车费的数目。

基本要求:1、设计一个出租车自动计费器,具有行车里程计费、等候时间计费、及起价三部分,用四位数码管显示总金额,最大值为99.99元;2、行车里程单价1元/公里,等候时间单价0.5元/10分钟,起价3元(3公里起价)均能通过人工输入。

3、行车里程的计费电路将汽车行驶的里程数转换成与之成正比的脉冲数,然后由计数译码电路转换成收费金额,实验中以一个脉冲模拟汽车前进十米,则每100个脉冲表示1公里,然后用BCD码比例乘法器将里程脉冲乘以每公里单价的比例系数,比例系数可由开关预置。

例如单价是1.0元/公里,则脉冲当量为0.01元/脉冲。

4、用LED显示行驶公里数,两个数码管显示收费金额。

主要参考资料:[1] 潘松著.EDA技术实用教程(第二版). 北京:科学出版社,2005.[2] 康华光主编.电子技术基础模拟部分. 北京:高教出版社,2006.[3] 阎石主编.数字电子技术基础. 北京:高教出版社,2003.完成期限2011.3.11指导教师专业负责人2011年3月7日一、总体设计思想1.基本原理随着出租车行业的发展,出租车已经是城市交通的重要组成部分,从加强行业管理以及减少司机与乘客的纠纷出发,具有良好性能的计价器对出租车司机和乘客来说都是很必要的。

而采用模拟电路和数字电路设计的计价器整体电路的规模较大,用到的器件多,造成故障率高,难调试。

而采用单片机进行的设计,相对来说功能强大,用较少的硬件和适当的软件相互配合可以很容易地实现设计要求,且灵活性强,可以通过软件编程来完成更多的附加功能。

本设计采用AT89S52单片机为主控器,以A44E霍尔传感器测距,实现对出租车的多功能的计价设计,输出采用8段数码显示管。

出租汽车计价器检定管理操作系统

出租汽车计价器检定管理操作系统

出租汽车计价器检定管理操作系统刘伟彧(哈尔滨市计量检定测试所,哈尔滨市150036)摘要计算机的应用现以遍及到社会生产和生活中的各个领域,本文则是关于出租汽车计价器检定管理操作系统的应用论文。

关键词操作系统数据库模糊查询热键一、概述出租汽车计价器检定管理操作系统采用FOXPRO2.6数据库系统,通过4个数据库文件(SWPG.DBF编辑数据库,WCNG.DBF公司库,SYS.DBF系统库,TEMP.DBF缓冲库)设计编制完成的。

本系统具有良好的用户界面,并提供简明必要的汉字提示,操作简单,用户通过人机交互式的使用方式,可方便地完成特定的功能。

此系统除具备JJG517—88出租汽车计价器检定规程中检定记录所具有的全部功能外,还具有众多的如根据输入的数据自动计算合格范围、自动判断其是否合格、自动计算合格率、受检率及模糊查找等特殊的功能。

二、系统运行的环境1.硬件运行环境:(1)主机:386以上各种兼容机,(2)内存:640KB基本内存;(3)打印机:各种打印机。

2.软件环境:PC-DOS和MS-DOS3.3以上版本的磁盘操作系统与UCDOS5.0以上版本汉字操作系统支持。

三、系统程序文件(见系统功能图)1.JJO MAIN.prg(主程序)功能:列出管理软件主菜单,供操作人员选择调用,同时列出已在案的所在地区出租汽车车辆总数、总受检率、总合格率、总的停运、报废车辆数及系统信息,其中包含了5个子菜单。

输入完毕,系统自动按顺序建立公司代码。

3.CHA.prg(公司代码浏览)功能:列出已登记的公司代码,以及该公司已检计价器的合格数量以备单车数据输入所用。

该子程序模块又包含了:(1)CHANGE.prg修改子程序,用于数据的修改,热键F1:(2)DELE.prg删除子程序,用于数据的删除,热键F3。

4.BIANJL.prg(编辑子程序)功能:输入欲编辑的公司代码后,以滚动屏方式随机将所有属于该公司的注册检定车辆按车牌号升序列出,并可随时进入单个车辆的数据输入。

出租车计价器5页

出租车计价器5页

本计价器的主要功能包括:计时功能;计费功能;计程功能;LCD显示;功能:1)启动计费器,里程计数器和时间计数器从零开始,费用计费器从10元开始计算;2)根据出租车行驶的里程数和时间(包括停车等待时间)进行计费,当出租车启动在3公里以内,且在等待累计2分钟内时费用计数器复位为起步价10元;3)当出租车在行驶状态下超过3公里时,每满1公里时,费用计数器加1元;4)当出租车等待时间累计超过2分钟时以每分钟1元计费。

整体设计方案:Clk 输入 C9;Sw1输入 L14;TXD 输出 u8;Flash_ce 输出 k18;Lcd_e 输出 M18;LCD_RW 输出 L17;LCD_RS 输出 L18;LCD_d[3:0] 输出 R15 R16 P17 M15;模块划分1.分频电路模块:2. 时间计算模块:start:启动信号,当start为高电平时出租车开动,选择以公里计费;当start为低电平时出租车等待;选择以时间计费m:输出的时间分信号s: 输出的时间秒信号Time_enable:控制计费的时间信号,当其为高电平时控制计数器按时间数计数3. 计程功能“distance_enable:控制计费的公里信号,当其为高电平时控制计数器按路程计数distance:输出的公里信号4.判断控制模块;select_clk:输出选择的时钟信号5.计费模块:fee: 输出的费用信号6.显示模块:分频程序:module div(clk_50M,clk,reset);input clk_50M;input reset;output clk;wire clk_50M;wire reset;reg clk;reg [7:0] count;always@ (posedge clk_50M or negedge reset)beginif(!reset)begincount<=0;clk<=0;endelseif(count==8'd100)begincount<=8'd0;clk<=~clk;endelsecount<=count+1'd1;endendmodulemodule test;reg clk_50M;reg reset;wire clk;div u1(.clk_50M(clk_50M),.reset(reset),.clk(clk));initial#0 clk_50M=1'b0;always #5 clk_50M=~clk_50M;initialbegin#0 reset=1'b0;#100 reset=1'b1;endendmodule计时激励:module timemokuai(clk,reset,start,s,m,time_enable);// 端口的定义input clk,reset,start;output [7:0] s;//输出的秒output [7:0] m;//输出的分output time_enable;//输出的控制计费的信号reg [7:0] s;reg [7:0] m;wire time_enable;always@(posedge clk or negedge reset)//异步复位beginif(!reset)//低电平有效begin //复位s<=8'd0;m<=8'd0;endelse if(!start)//start 信号低电平有效beginif(s[3:0]==9)// 秒的低四位是9begins[3:0]<=4'd0;//清零if(s[7:4]==5) // 秒的高四位是5begins[7:4]<=4'd0; //清零if(m[3:0]==9) // 分的低奈皇?beginm[3:0]<=4'd0; //清零if(m[7:4]==9) // 分的高四位是9m[7:4]<=4'd0; //清零else m[7:4]<=m[7:4]+1'd1; // 分的高四位不是9加一endelse m[3:0]<=m[3:0]+1'd1; //分的低四位不是9加一endelse s[7:4]<=s[7:4]+1'd1; // 秒的高四位不是5加一endelse s[3:0]<=s[3:0]+1'd1; //秒的低四位不是9加一end//end alwaysendassign time_enable=((m[7:0]>8'd2)&&(s[7:0]==8'd0))?1'd1:1'd0; //产生time_enable信号。

EDA简易出租车计价器设计

EDA简易出租车计价器设计

程后自动归零。
(4) 译码显示模块
Page 4
该模块经过8选1选择器将计费数据(4位BCD码)、
计时数据(2位BCD码)、计程数据(2位BCD码)动态
显示输出。其中计费数据jifei4~jifei1送入显示译码模块进
行译码,最后送至以百元、十元、元、角为单位对应的数
码管上显示,最大显示为999.9元;计时数据送入显示译
码模块进行译码,最后送至以分为单位对应的数码管上显
示,最大显示为59分;计程数据送入显示译码模块进行译
码,最后送至以公里为单位的数码管上显示,最大显示为
99公里。其系统组成框图如图2.1所示。
Page 5
时钟信 分频器 计费


等待信


计时
公里脉




计费/
计程
复位
Page 6
3 出租车计费器的层次化设计方案
(1) 分频模块 分频模块对频率为240Hz的输入脉冲进行分频,产生频率为16Hz、 15Hz、1Hz的3种频率。该模块产生频率信号用于计费,每个1Hz脉 冲为0.1元计费控制,15Hz为1.5元的计费控制,16Hz信号1.6元计费 控制。 (2) 控制模块 计价器控制模块主要完成对计价器状态的控制。
Page 3
(3) 计量模块
计量模块完成计价、计时和计程功能。
计价部分:行程在3公里内,而且等待累计时间小于2分钟,起步费为
10元;3公里外以每公里按1.6元计费,等待累计时间超过2分钟按每分钟1.5
元计费。
计时部分:计算乘客的等待累计时间。计时器的量程为59分钟,满量
程后自动归零。
计程部分:计算乘客所行驶的公里数。计程器的量程为99千米, 满量

出租车计价器

出租车计价器

一、基本功能1、显示:可以显示里程、金额、等待时间、速度。

2、计费功能:起步公里数为2公里,价格为6元;若实际运行大于2公里,按单程价格为1.6元/公里,往返则价格为1.6元/公里。

3、按键功能:单程/往返分别由“单程”按键和“往返”按键设定;按“暂停”键,计价器可暂停计价;按“清除”键,计价器能将记录数据(里程、等待时间与金额等)自动清0;按“查询”键,能自动显示总等待时间;按“返回”键,仍然显示里程和金额。

二、系统的组成及工作原理计价器的单片机控制方案图如图1 单片机控制方案图所示。

利用单片机丰富的IO端口,及其控制的灵活性,实现基本的里程计价功能和价格选择、时间显示控制等功能。

不但能实现所要求的功能而且能在很大的程度上扩展功能,而且还可以方便的对系统进行升级图1 单片机控制方案图三、总体设计电路图总体电路图如图2所示图2 总体电路图四、硬件电路设计1、里程计算,计价单元设计里程计算是通过安装在车轮上的霍尔传感器A44E检测到的信号,在该系统中用两种脉冲发生器进行模拟,送到单片机,经处理计算,送给显示单元的。

其原理如图3所示。

图3 模拟测距示意图555电路来产生一个脉冲来模拟霍尔传感器输出的里程脉冲,选择P1.0口作为信号的输入端,内部采用外部中断0,555脉冲产生电路输出一个脉冲信号直接加到IO口P1.0上(产生的频率F=1/T=1.414/[(R1+2R2)C1]),由单片机的内部算法对脉冲计数,通过计算将脉冲增加体现在金额和里程上。

具体电路如图4所示。

图4 555脉冲产生电路图光耦电路是以光为媒介传输电信号的一种光一电转换器件,是另一种模拟将出租车行驶时车轮所转的圈数转换成脉冲信号送入数据处理电路。

H92B4是光偶电路的基本元件,它由发光源和受光器两部分组成,发光源为发光二极管,受光器为光敏三极管。

当发光源与受光器之间存在光线阻挡时,输出端由高电平变为低电平,恢复光通路又变为高电平,就这样形成一个个的高低电平脉冲。

出租车计费器

出租车计费器

出租车计费器设计要求计费标准为武汉起步3元,1公里后为4元/公里,1.5公里后为5元/公里,2公里后为6元/公里,2.5公里后为7元/公里,3公里后为8元/公里,以后1.4元/公里。

当计费达到20元后,每公里加收50%的车费,车停止每3分钟增加0.7元。

车费显示出来,有一位小数。

1、 设计原理及方法如图1所示,包含运算控制模块、分频器、显示模块这三大部分。

图1系统框图运算控制器模块将其他两个进行连接,是本次设计的核心。

它包含计程器、计时器、计价器,同时还有读取外部的拨码开关控制信号,提供当前显示信号与显示位选信号,从而周期性交替显示计价/计时信息、等时信息。

计程器、计时器、计价器根据位选信号,输出相应数据的当前选中数字,由顶层模块根据显示数据类型变换信号进行选择,传输给显示模块。

实验箱的时钟信号为20MHz方波,由分频器分为10Hz的计时信号(一个周期代表现实中的1s)、10Hz的计程信号(一个周期代表现实中的10m)、500Hz的数码管扫描信号(扫描频率62.5Hz)、0.2Hz的显示数据类型变换信号(变化周期5s)。

显示模块由实验箱上的3/8译码器、五个LED灯构成状态的指示灯、程序编写的一个七段数码管译码器。

2、主要模块设计2.1、速度模块速度模块首先根据start信号判断是否开始计费,然后根据输入的速度档位sp[2..0]的判断,确定行驶100m所需要的时钟数,每前进100m,输出一个clkout 信号。

同时由cnt对clk进行计数,当cnt等于kinside时,把clkout信号置1,cnt清0。

其模块框图如图2图2速度模块框图2.1.1、速度模块仿真速度模块的仿真波形图如图3示。

该模块根据出租车所处的运行状态和不同的形式速度,对相应数目的时钟周期进行计数,车每行驶100m时输出信号clkout 输出高电平。

图3速度模块仿真波形图2.2、计程模块主要用于记录行进的距离,其模块框图如图4所示。

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

智能电子产品设计与制作课程设计(论文)题目: 《出租车计价器系统设计》学院:电气与电子信息工程学院专业名称:学号:学生姓名:同组成员:指导教师:课设时间:2011年5月23日—2011年6月10日目录一.设计目的 (2)二.设计要求 (2)三.系统结构 (2)四.功能模块设计 (3)五.软件设计 (5)六.电路组装与调试 (6)七.电路仿真 (7)八.总结 (8)八.附录 (9)出租车计价器课程设计一、设计目的随着出租车行业的发展,出租车已经是城市交通的重要组成部分,从加强行业管理以及减少司机与乘客的纠纷出发,具有良好性能的计价器对出租车司机和乘客来说都是很必要的。

而采用模拟电路和数字电路设计的计价器整体电路的规模较大,用到的器件多,造成故障率高,难调试。

而采用单片机进行的设计,相对来说功能强大,用较少的硬件和适当的软件相互配合可以很容易地实现设计要求,且灵活性强,可以通过软件编程来完成更多的附加功能。

本设计采用AT89S52单片机为主控器,以红外对管测转速,对实际里程的模拟,实现对出租车的多功能的计价设计,并采用AT24C01实现在系统掉电的时候保存单价等信息,输出采用8段数码显示管。

本电路设计的计价器不但能实现基本的计价,而且还能根据白天,黑夜和中途等待来调节单价。

二、设计要求出租车计价器根据乘客乘坐汽车行驶距离和等候时间的多少进行计价,并在行程中同步显示车费值。

从起步价开始,当汽车程行驶未满3公里时,均按起步价计算。

过3公里后,实现每1公里单价收费,中间遇暂停时,计程数不再增加,开始计时收费,测距收费和测时收费的和便构成了一位乘客的车费。

同时,白天和夜晚价格不同,可以进行切换。

白天单价、夜晚单价、等待单价和起步价格都可通过独立键盘进行调节。

(默认起步价为5元/3公里,里程单价白天为1.5元/公里,夜晚为1.8元/公里,等待计时单价为0.5元/5分钟)三、系统结构根据设计的要求选择实验的方案:采用单片机进行的设计,相对来说功能强大,用较少的硬件和适当的软件相互配合可以很容易地实现设计要求,且灵活性强,可以通过软件编程来完成更多的附加功能。

设计采用AT89S51单片机为主控器,以红外对管和电机测转速(按键替代),实现对出租车的基本的计价设计,并采用AT24C02实现在系统掉电的时候保存单价等信息,输出采用8段数码显示管,相对液晶显示价格便宜,利用单片机丰富的I/O端口,及其控制的灵活性,实现基本的计价功能。

器系统结构图如下:四、功能模块1、单片机模块Flash 存储器。

使用Atmel 公司高密度非易失性存储器技术制造,与工业80C51 产品指令和引脚完全兼容。

片上Flash允许程序存储器在系统可编程,亦适于常规编程器。

在单芯片上,拥有灵巧的8 位CPU 和在系统可编程Flash,使得AT89S52为众多嵌入式控制应用系统提供高灵活、超有效的解决方案。

AT89S52具有以下标准功能: 8k字节Flash,256字节RAM, 32 位I/O 口线,看门狗定时器,2 个数据指针,三个16 位定时器/计数器,一个6向量2级中断结构,全双工串行口,片内晶振及时钟电路。

另外,AT89S52 可降至0Hz 静态逻辑操作,支持2种软件可选择节电模式。

空闲模式下,CPU 停止工作,允许RAM、定时器/计数器、串口、中断继续工作。

掉电保护方式下,RAM内容被保存,振荡器被冻结,单片机一切工作停止,直到下一个中断或硬件复位为止。

2、模拟里程原理图测转速原理图红外对管测转速的电路图采用外部中断进行计数,红外对接管每受到一次发射管发来的红外,就产生一次中断,计数器加1,计数超过1000次时,里程加1,计数清零,从新开始计数.3、掉电保护模块AT24C02存储单元AT24C02是一个2K位串行CMOS E2PROM,内部含有256个8位字节,CATALYST公司的先进CMOS技术实质上减少了器件的功耗。

AT24C02有一个16字节页写缓冲器。

该器件通过IIC总线接口进行操作,有一个专门的写保护功能。

功能简介AT24C02支持IC,总线数据传送协议IC,总线协议规定任何将数据传送到总线的器件作为发送器。

任何从总线接收数据的器件为接收器。

数据传送是由产生串行时钟和所有起始停止信号的主器件控制的。

主器件和从器件都可以作为发送器或接收器,但由主器件控制传送数据(发送或接收)的模式,通过器件地址输入端A0、A1和A2可以实现将最多8个AT24C02器件连接到总线上。

只有一片时,A0\A1\A2要接地。

工作参数工作温度工业级-55℃ +125℃ 商业级0 ℃+75℃贮存温度-65℃ +150℃ 各管脚承受电压-2.0 Vcc+2.0VVcc管脚承受电压-2.0 +7.0V 封装功率损耗(Ta=25℃) 1.0W焊接温度(10 秒) 300℃ 输出短路电流100mA芯片图封装图和引脚功能存储单元电路原理图4、键盘调整单元当单价等信息需要进行修改时,就要用到键盘进行修改。

由于调节信息不多,故采用4个独立键盘即可,分别实现清零、切换、增大、减小和功能等作用。

S1:接P1.0口,对上一次的计费进行清零,为下次载客准备S2:接P1.1口,实现白天和夜晚单价的切换;当功能键S4按下时,S2可对数据进行增大。

S3:接P1.2口,当功能键S4按下时,S3可对数据进行减小。

S4:接P1.3口,按1次,进入调整白天单价;按2次,进入调整夜晚单价;按3次,进入调整等待单价;按4次,进入调整起步价;按5次,返回。

5、显示单元显示单元由7个8段共阳数码管组成,采用动态扫描进行显示。

前三个数码管分别接P3.0、P3.1和P3.2,用于显示总金额;中间两个分别接P3.4和P3.5,用于显示里程;后边两个分别接P3.6和P3.7,用于显示单价。

数码管显示图五、软件设计(1)系统主程序在主程序模块中,需要完成对各参量和接口的初始化、出租车起价和单价的初始化以及中断、计算、循环等工作。

另外,在主程序模块中还需要设置启动/清除标志寄存器、里程寄存器和价格寄存器,并对它们进行初始化。

然后,主程序将根据各标志寄存器的内容,分别完成启动、清除、计程和计价等不同的操作。

当电机运行起来时,就启动计价,根据里程寄存器中的内容计算和判断行驶里程是否已超过起步价公里数。

若已超过,则根据里程值、每公里的单价数和起步价数来计算出当前的总金额,并将结果存于总金额寄存器中;中途等待时,无脉冲输入,不产生中断,当时间超过等待设定值时,开始进行计时,并把等待价格加到总金额里,然后将总金额、里程和单价送数码管显示出来。

程序流程如图(2)里程计数中断程序每当红外接收端输出一个低电平信号就使单片机中断一次,当里程计数器对里程脉冲计满1000次时,进入里程计数中断服务程序中,里程变量加一。

主函数中总金额也相应地变化。

(3)中途等待中断程序在中途等待中断程序中,每1ms产生一次中断,将当前里程值送入某个缓存变量,每5分钟将缓存变量中的值和当前里程值比较,当汽车停止,霍尔传感器5分钟没有输出信号,当前里程值和缓存变量内的值相同,则进入等待计时,每5分钟记一次价格。

(4)计算程序计算程序根据里程数分别进入不同的计算公式。

如果里程大于3公里,则执行公式:总金额=起步价+(里程-3)*单价+等待时间*等待单价;否则,执行公式:总金额=起步价+等待时间*等待单价。

(5)显示程序显示程序利用定时器每1ms产生一次中断,相应变量置位,点亮一个数码管,显示一位数据,利用主函数内的循环,实现动态扫描显示,同时根据数码管余辉和人眼暂留现象,即可实现显示。

(6)键盘程序键盘采用查询的方式,放在主程序中,当没有按键按下的时候,单片机循环主程序,一旦右按键按下,便转向相应的子程序处理,处理结束再返回。

流程图如图键盘程序流程图六、电路的组装与调试先按照电路图从小而且低的元器件开始安装,然后焊接然后依次焊接其他由小到大,由低到高的元器件,直到全部安装完毕再次进行电路检测和调试调试时按照以下步骤进行调试:1、调试动态显示电路。

查看数码管是否显示正常。

2、调试AT24C02存储单元。

尝试写入读出指定数据看是否符合要求。

3、调试键盘控制电路。

结合程序调试按键抖动,查看是否符合程序要求。

4、整体调试。

结合实际效果对程序进行优化七、电路的仿真八、总结这次课程设计给我最大的启迪就是,一定要对知识点熟悉并且十分熟练才有可能完全正确的做出自己的产品。

协同工作很重要,一个人不可能很好的完成完整的项目。

对于这次出租车计价器的,使我更加清晰的掌握单片机的各种功能,特别是外部中断的应用,还有就是单片机对I/O口对数码管的控制功能,通过对数码管的动态扫描和键盘的防抖的综合编程,能过很好的实现数据的动态显示。

在实际的操作过程中还是遇到和很多问题,主要体现在对单片机外部中断的的应用理解的不够深刻,以及在程序调用方面的欠缺,而导致功能不能完全实现;还有是关于默写硬件应用不够了解,而在编程中出现了很大麻烦。

通过最终的调试和苦想,以及同学的帮助下,还是解决了问题。

通过这次课程设计,我最大的收获就是自己的动手能力和独立解决问题的能力得到了很大的提高,也充分体会到了自己设计东西的乐趣、学会查阅资料和对别人的东西融会变通的重要性,也明白了很多知识光靠趴在书本上学是学不到其中的精髓的,必须亲自去试着实践,亲自去经历才能对它们真正的掌握,凡事都要自己去动下手,去实践一下,遇到困难,永远不要沮丧气馁。

在动手的过程中,不仅能增强实践能力,而且在理论上可以有更深的认识;这次设计给了我极大的鼓舞和信心,相信在以后的学习中可以通过不断的摸索和实践来提高其他方面的知识。

九、附录附录1附录2:原理图附录三PCB和源程序实物图附件3实物图 模拟计程车起步:实物图: 单价 里程 金额模拟行驶3km 内: 模拟行驶4km 后附件 五 系统源程序Include<reg52.h> #include<instrins.h>#define uchar unsigned char #define uint unsigned int#define delayNOP(); {_nop_();_nop_();_nop_();_nop_();_nop_();};uchar code table[]={0xC0,0xF9,0xA4,0xB0,0x99,0x92,0x82,0xF8,0x80,0x90}; sbit exter=P3^3; //外部中断 sbit key0=P1^0; //清零sbit key1=P1^1; //切换/+sbit key2=P1^2; //-sbit key3=P1^3; //功能键sbit P3_0=P3^0; //数码管各位控制sbit P3_1=P3^1;sbit P3_2=P3^2;sbit P3_4=P3^4;sbit P3_5=P3^5;sbit P3_6=P3^6;sbit P3_7=P3^7;sbit SDA=P2^3; //IIC引脚sbit SCL=P2^2;uint inter,aa,bb,temp,temp1; //变量的定义uint zongjine,licheng,dengdai;uint key3num,qiehuantemp,delaytemp;uchar danjia1,danjia2,danjia3,danjia,qibu;void delay(unsigned char t){unsigned char j,i;for(i=0;i<t;i++)for(j=0;j<255;j++);}void start() //IIC开始位{SDA = 1;SCL = 1;delayNOP();SDA = 0;delayNOP();SCL = 0;}void stop() // IIC停止位{SDA = 0;delayNOP();SCL = 1;delayNOP();SDA = 1;}void respons() //IIC应答位{uchar i;SCL=1;delayNOP();while((SDA==1)&&(i<250))i++;SCL=0;delayNOP();}uchar read_byte() // 从EEPROM读到MCU {uchar i,j;for(i=0;i<8;i++){SCL=1;j<<=1;j|=SDA;SCL=0;}return(j);}void write_byte(uchar date) // 从MCU写到EEPROM{uchar i,temp;temp=date;for(i=0;i<8;i++){temp=temp<<1;SCL=0;delayNOP();SDA=CY;delayNOP();SCL=1;delayNOP();}SCL=0;delayNOP();SDA=1;delayNOP();}void write_data(uchar addr, uchar date) // 在指定地址addr处写入数据date {start();write_byte(0xa0);respons();write_byte(addr);respons();write_byte(date);respons();stop();}uchar read_data(uchar addr) // 在指定地址addr读取数据{uchar date;start();write_byte(0xa0);respons();write_byte(addr);respons();start();write_byte(0xa1);respons();date=read_byte();stop();return date;}void display(uint zongjine0,uint licheng0,uint danjia0){uchar z;uint jbai,jshi,jge,lshi,lge,dshi,dge;jbai=zongjine0/100;jshi=zongjine0%100/10;jge=zongjine0%100%10;lshi=licheng0/10;lge=licheng0%10;dshi=danjia0/10;dge=danjia0%10;for(z=0;z<7;z++){P3=0xff;switch(z){case 0:P3_0=0;P0=table[jbai];break;case 1:P3_1=0;P0=table[jshi]&0x7f;break;case 2:P3_2=0;P0=table[jge];break;case 3:P3_4=0;P0=table[lshi];break;case 4:P3_5=0;P0=table[lge];break;case 5:P3_6=0;P0=table[dshi]&0x7f;break;case 6:P3_7=0;P0=table[dge];break;}delay(3);}}void keyscan() //键盘扫描{if(key3==0) //功能键调节{delay(5);if(key3==0){key3num=1;while(!key3);delay(5);while(!key3);while(key3num){if(key3num==1) //调白天单价{if(key1==0){delay(5);if(key1==0){danjia1++;if(danjia1==100)danjia1=0;while(!key1);delay(5);while(!key1);}}if(key2==0){delay(5);if(key2==0){danjia1--;if(danjia1==-1)danjia1=99;while(!key2);delay(5);while(!key2);}}display(1,0,danjia1);}if(key3num==2) //调夜晚单价{write_data(1,danjia1);if(key1==0){delay(5);if(key1==0){danjia2++;if(danjia2==100)danjia2=0;while(!key1);delay(5);while(!key1);}}if(key2==0){delay(5);if(key2==0){danjia2--;if(danjia2==-1)danjia2=99;while(!key2);delay(5);while(!key2);}}display(2,0,danjia2);}if(key3num==3) //调等待单价{write_data(2,danjia2);if(key1==0){delay(5);if(key1==0){danjia3++;if(danjia3==100)danjia3=0;while(!key1);delay(5);while(!key1);}}if(key2==0){delay(5);if(key2==0){danjia3--;if(danjia3==-1)danjia3=99;while(!key2);delay(5);while(!key2);}}display(3,0,danjia3);}if(key3num==4) //调起步价{write_data(3,danjia3);if(key1==0){delay(5);if(key1==0){qibu++;if(qibu==100)qibu=0;while(!key1);delay(5);while(!key1);}}if(key2==0){delay(5);if(key2==0){qibu--;if(qibu==-1)qibu=99;while(!key2);delay(5);while(!key2);}}display(4,0,qibu);}if(key3num==5) //退出功能键{write_data(4,qibu);key3num=0;}if(key3==0){delay(5);if(key3==0){key3num++;while(!key3);delay(5);while(!key3);}}}}}}void init(){SDA=1;SCL=1;zongjine=0;licheng=0;dengdai=0;danjia1=read_data(1);danjia2=read_data(2);danjia3=read_data(3);qibu=read_data(4);aa=0; //数码管动态扫描的定时器时基个数bb=0; //判断是否等待的时基个数inter=0;EA=1; //开总中断EX1=1; //开外部中断1IT1=1; //触发方式下降沿TMOD=0x01;TH0=(65536-1000)/256;TL0=(65536-1000)%256;ET0=1; //开定时器T0中断TR0=1; //开定时器T0P3=0x08;P0=table[0];}void jisuan(){if(licheng>3)zongjine=qibu+(licheng-3)*danjia+dengdai*danjia3; //金额计算elsezongjine=qibu+dengdai*danjia3; //起步公里内金额计算}void qiehuan(){if(key1==0) //白天夜晚切换{delay(5); //键盘防抖if(key1==0)qiehuantemp=!qiehuantemp;while(!key1);delay(5);while(!key1);}if(qiehuantemp==0)danjia=danjia2;if(qiehuantemp==1)danjia=danjia1;}void main(){init();qiehuantemp=1;key3num=0;while(1){qiehuan(); //切换白天夜晚单价jisuan(); //计算总金额display(zongjine,licheng,danjia);keyscan();if(key0==0) //清零键init();}}void inter1() interrupt 2 //脉冲中断{delay(5); //if(exter==0) //{ //IT1=1;inter++;if(inter==5){inter=0;licheng++;}} //while(!exter); //delay(5); //while(!exter); //}void timer0() interrupt 1{TH0=(65536-1000)/256;TL0=(65536-1000)%256;aa++;bb++;temp1=licheng; //测试是否进入等待if(bb==10000) //10s无反应进入等待计费{bb=0;if(temp=temp&temp1)dengdai++;temp=licheng;}}。

相关文档
最新文档