出租车计价器设计+程序+原理图+实物图
基于单片机的多功能出租车计价器的设计

朋
打印机机接口
2.2.7数据存储部分 数据存储部分的作用是在电源断开时,存储当前设 定的单价信息。AT24C02是ATMEL公司的2 kB的 电可擦除存储芯片,采用2线串行的总线和单片机通 讯,电压最低可以到2.5 V,额定电流为1 mA,静态电
流10Ua(5.5 V),芯片内的资料可以在断电的情况下保
系统硬件初始化 山
I
I
擐作系统初始化 山 LcD初始化
,
数据采集任务
数据处理任务
本文采用SPCE061A CPU结合嵌入式实时操作 系统}tC/OS一Ⅱ,设计并实现了环境温度湿度实时测控 系统。在温度一10~85℃和湿度20%~98%RH,可 任意设定温湿度控制点,而且实时监测环境温、湿度的 变化情况,并记录、存储相关数据。另外,该系统便于功 能扩展,测控精度高、可靠性高、系统成本低、易操作、易 维护,具有广泛的应用前景。
图7
时钟芯片接口电路
2.2.5语音播报部分 考虑到计价器的微型化、智能化,语音芯片采用集 成度较高ISD2560芯片,其最大特点是采用E2PROM 进行模拟信息直接存取而不必经过A/D和D/A转换。 它内部带有话筒放大器、自动增益控制时钟、扬声器驱 动电路等,采用+5 V电源供电。 语音模块与单片机的接口如图8所示,设计过程 中,先将固定语音部分(上、下车用语、)信息存储到 ISD2560内部的不同起点地址中。营运过程中根据上、 下车的不同营运状态来实现不同语音功能播放。在语 音芯片工作时,系统首先主程序调用放音处理程序,根 据发音地址寻找lSD2560中的发音单元,然后将信号 送到扬声器发出声音。
DOWN来对数据值进行加与减。然后再通过功能设 置/确认键来对所设数据的确认。
基于C语言的出租车计价器程序设计

目录1 前言 (3)2 系统设计方案 (4)2.1 系统的设计需求 (4)2.2 系统的工作原理 (4)3 系统硬件设计 (5)3.1 单片机介绍 (5)3.2 硬件组成 (8)4 系统软件设计 (12)5 仿真调试 (14)6 结论 (16)7 参考文献 (178)8 心得体会及致谢 (20)附录A 设计总图 (224)附录B 源程序 (235)1 前言随着生活水平的提高,人们已不再满足于衣食住的享受,出行的舒适已受到越来越多人的关注[1]。
相对于公共汽车拥挤与缓慢以及私家车高昂的费用,出租车无疑是一种低价高质的出行交通工具。
近年来越来越多的人为了出行方便舒适愿意选择使用出租车,出租车行业得以快速发展[2]。
出租车计价器是出租车营运收费的专用智能化仪表,随着电子技术的发展,出租车计价器的技术在不断进步和提高[3]。
最初的计价器计费模式较为单一,不便于在不同的运营环境下选取不同的计费模式。
考虑到出租车行驶可能会出现从市区行驶到郊区或者行驶到偏僻地区,郊区或偏僻区打车的人少的现象,司机空车行驶返回成本较高,这时需要乘客为空车返回的路程承担一定的费用,这就需要区分单程/往返不同计价模式。
“单程”模式是指目的地在郊区或者比较偏僻的地方,到达目的地后打车的人比较少,需要乘客乘客承担一定的空车返回的费用;“往返”模式是指目的地在市区,到达目的地后还会有乘客乘车返回,这种情况下司机不需要空车返回,乘客不需要承担回程费用。
考虑到夜晚时出租车的灯光需要消耗能源以及司机夜间服务比白天较为辛苦,所以一般夜晚出租车的价格需要比白天高一点。
早期的出租车计价器均采用模拟电路和数字电路设计。
计价器整体电路的规模较大,需要器件多,容易出故障,难调试。
和模拟电路和数字电路设计相比而言,基于单片机进行设计的计价器,用较少的硬件和适当的软件相互配合就可以很容易的实现设计需求,硬件电路简单,稳定性好,灵活性强[4],通过软件编程就可以实现计费模式的切换。
出租车自动计费器EDA设计

6。
7出租车自动计费器EDA设计6。
7。
1 设计要求设计一个出租车自动计费器,计费包括起步价、行车里程计费、等待时间计费三部分,用三位数码管显示金额,最大值为999。
9元,最小计价单元为0.1元,行程3公里内,且等待累计时间3分钟内,起步费为8元,超过3公里,以每公里1。
6元计费,等待时间单价为每分钟1元。
用两位数码管显示总里程。
最大为99公里,用两位数码管显示等待时间,最大值为59min。
6.7.2原理描述根据层次化设计理论,该设计问题自顶向下可分为分频模块,控制模块计量模块、译码和动态扫描显示模块,其系统框图如图6—63所示,各模块功能如下:图6—63出租车自动计费器系统框图1分频模块分频模块对频率为240Hz的输入脉冲进行分频,得到的频率为16Hz,10Hz和1Hz的三种频率.该模块产生频率信号用于计费,每个1HZ脉冲为0。
1元计费控制,10HZ信号为1元的计费控制,16Hz信号为1。
6元计费控制。
2 计量控制模块计量控制模块是出租车自动计费器系统的主体部分,该模块主要完成等待计时功能、计价功能、计程功能,同时产生3分种的等待计时使能控制信号en1, 行程 3公里外的使能控制信号en0。
其中计价功能主要完成的任务是:行程 3公里内,且等待累计时间3分钟内,起步费为8元;3公里外以每公里1.6元计费,等待累计时间3分钟外以每分钟1元计费;计时功能主要完成的任务是:计算乘客的等待累计时间,计时器的量程为59分,满量程自动归零;计程功能主要完成的任务是:计算乘客所行驶的公里数.计程器的量程为99公里,满量程自动归零.3 译码显示模块该模块经过8选1选择器将计费数据(4位BCD码)、计时数据(2位BCD码)、计程数据(2位BCD码)动态选择输出。
其中计费数据jifei4~ jifei1~送入显示译码模块进行译码,最后送至百元、十元、元、角为单位对应的数码管上显示,最大显示为999。
9元;计时数据送入显示译码模块进行译码,最后送至分为单位对应的数码管上显示,最大显示为59秒;计程数据送入显示译码模块进行译码,最后送至以公里为单位的数码管上显示,最大显示为99公里。
ZT单片机课程设计--出租车计价器

ZT单片机课程设计--出租车计价器嵌入式系统设计课程设计设计名称:出租车计价器学院:现代科技学院专业班级:信息0801姓名:张腾学号:2008100767一.设计任务及思路1.出租车计价器需要的主要外部设备有公里计数器,以及显示、定时装置,通过线路连接构成一个完整的系统。
2.公里计数器设想:利用光电或者霍尔效应原理对车轮转过360°角位移产生一个脉冲信号送给单片机作为一定距离的计数值。
3.显示器:用LED显示,动态扫描显示,不断输出即时价格已及时间。
4.定时装置(本设计中未引入):记录在停车或某些情况下的时间,用于辅助计价。
二、里程计数器的原理(光电式)在与车轴同步的轴上装有一隔光盘,上仅有以窄缝可以通光。
在隔光盘两侧分别装有与车体固定的光源和感光元件。
当隔光盘随轴转动时,光源发出的光被隔光盘隔离,只有在窄缝处感光元件接收到光信号,对后续电路产生一个脉冲。
这就是对里程转换为计数值的基本原理。
其产生的脉冲信号则作为单片机计数器的输入信号,当单片机中计数器计到某一数量即为车行驶一公里,并对价格进行增加。
在没有实际对这样计数装置试用,只能对其原理进行分析,在之下的程序设计中只取其脉冲信号作为单片机输入信号(P3.4)。
三、LED显示电路对设计总体分析下,只需对其价格进行显示,选用四个LED数码管分别显示价格的百位、十位、个位以及十分位(单位:元)。
显示方式采用动态扫描的方式,数据输出为P0口,位选为P2口,共阴极(如图)。
四、计价器的计价要求1.计价方式:起价(两公里)白天8元,晚上10元;由一开关进行选择。
每公里一元,即每一百米加价一角。
2.转数与公里数:汽车轮胎周长近似为1.5米,故一百米需要转过67圈,计67个数产生一个溢出中断。
五、电路原理图及引脚P0.7-P0.0 数码管输出数据P2.7-P2.4 数码管位选P1.0 显示小数点(长亮)P1.2 计价器工作开关P1.3 白天/夜间切换P3.4 计数脉冲输入出租车计价器电路原理六、流程图N 开始开始计价昼夜选择显示零 显示零Y显示夜间起价显示白天起价夜 昼显示价格 主程序流T1中断够67次N Y R4=0 ? NYR4+1价格寄存器加一 调整BCD 码 放入数据显示区返回中断程序七、源程序ORG 0000H ;起始地址AJMP STARTORG 001BH ;计数中断地址LJMP CNT1ORG 0030H ;主程序地址START: MOV PSW, #00HMOV IE, #88H ;IE=10001000BMOV TMOD, #60H ;TMOD=01100000B,T1工作方式2MOV TH1, #0BDH ;自动重装MOV TL1, #0BDH ;计67个数SETB TR1 ;计数器启动CLR P1.0 ;点亮小数点dpMOV R4, #0FFH ;置数-1MOV R0, #20H ;指向数据区首地址MOV R1, #04H ;数字个数LP1: MOV @R0, #00H ;把00放入显示数据区INC R0 ;指针加一DJNZ R1, LP1 ;继续置数OFF: SETB P1.2JNB P1.2, ON ;计价器开始跳转至ONACALL DISP ;调用显示子程序AJMP OFFON: SETB P1.3JB P1.3, DAY ;判断白天or夜间行车NIGHT: MOV R2, #00H ;价格后两位压缩BCD码MOV R3, #01H ;价格高两位压缩BCD码MOV 21H, #01H ;显示数据区放入起价BCD码CALL DISP ;显示夜间起价AJMP LP2DAY: MOV R2, #80H ;价格后两位压缩BCD码MOV R3, #00H ;价格高两位压缩BCD码MOV 22H, #08H ;显示数据区放入起价BCD码LP2: CALL DISP ;显示白天起价AJMP LP2CNT1: MOV 35H, R5MOV 36H, R6MOV 32H, R0MOV 31H, AMOV 30H, R4 ;保护中断前寄存器内容CJNE R4, #00H, INCC ;两公里内计数值加1 CLP0: MOV A, R2ADD A, #01H ;后两位计价加一DA A ;十进制调整MOV R2, AMOV A, R3ADDC A, #00H ;前两位计价加进位DA A ;十进制调整MOV R3, ACLP2: MOV A, R2MOV B, #10HDIV AB ;将压缩BCD码拆成BCD码MOV 23H, BMOV 22H, A ;按高低位存入显示数据区MOV A, R3MOV B, #10HDIV AB ;将压缩BCD码拆成BCD码MOV 21H, BMOV 20H, A ;按高低位存入显示数据区CALL DISP ;显示价格AJMP RETCINCC: INC R4 ;两公里内计数器加一RETC: MOV A, 31HMOV R0, 32HMOV R5, 35HMOV R6, 36H ;恢复中断前数据内容RETI ;中断结束DISP: MOV R5, #04H ;显示子程序,显示个数MOV R0, #20H ;指向数据区首地址MOV R6, #80H ;位选MOV DPTR, #TAB ;指针指向显示列表DLP0: MOV A, @R0MOVC A, @A+DPTR ;取出对应的显示代码MOV P0, A ;输出数据MOV A, R6MOV P2, A ;输出位选RR A ;右移位选MOV R6, AINC R0 ;指向下一地址DJNZ R5, DLP0 ;循环RET ;结束TAB: DB 3FH, 06H, 5BH, 4FH, 66H, 6DH, 7DH, 07H, DB 7FH, 67H ;显示代码列表END八、调试利用KeilC51软件对其进行编译、仿真,得出比较满意的效果。
出租车计费器

电子课程设计——出租车计费器学院:电子信息工程学院专业、班级:姓名:学号:指导老师:2014年12月出租车计费器设计任务与要求设计一个出租车计费器,能按路程计费,具体要求如下:1、实现计费功能:计费标准为:按行驶里程计费,起步价为6.00元,并在3km后按1.20元/km计费,当计费达到或超过20元时,每公里加收50%的车费,车停止和暂停时不计费。
2、设计动态扫描电路,将车费和里程显示出来。
方案一一、总体框图方案一总体框图如图1-1所示。
路程信号采集模块里程显示模块计费显示模块图1-1 方案一总体框图1、路程信号采集模块此模块的主要功能为传感器采集出租车的行车信息,在此次的设计中,出租车行驶的公里数用脉冲来替代,出租车每行驶0.1公里,路程信号采集模块检测到一个脉冲。
2、里程显示模块此模块的功能主要为显示出租车行驶的里程数,在此次的设计中,采用数码管进行显示。
此模块中运用十进制计数器74LS160组成的组合电路对路程信号采集模块采集到的脉冲进行累计,并将累加结果作为出租车当前行驶里程数并通过数码管显示出来。
3、计费显示模块此模块的功能主要为显示出租车当前行驶里程下对应的车费,通过数码管显示出来。
在这一模块中,仍然采用十进制的计数器对价钱进行累加,根据设计要求,由于不同的行驶里程下所对应的计价方式不同,考虑到计价的准确性,此处采用累计与里程数脉冲频率成一定比例的脉冲的数量作为车费通过数码管显示出来。
例如,显示里程数的脉冲频率为100HZ,在行驶至三公里以后,计费部分的脉冲换为120HZ,这样相当于出租车每行驶一公里,价钱累加1.2元,当计价超过或达到20元时,计费部分的脉冲换做180HZ,这样相当于出租车每行驶一公里,价钱累加1.8元。
二、选择器件器件逻辑符号分别如图1-2、1-3、1-4、1-5、1-6、1-7所示,器件对应真值表与特性表分别如表1-1、1-2、2-3、1-4、1-5、1-6所示。
出租车计价器方案设计书程序原理图实物图

目录摘要 (Ⅰ)第1章引言 (1)1. 1 出租车计价器概述····················································· (1)1. 2 本设计任务······················································ (1)1.2.1 设计任务······················································ (1)1.2.2 设计要求······················································ (1)1. 3 系统主要功能······················································ (2)第2章出租车计价器硬件设计 (3)2.1 系统的硬件构成及功能························································ (3)2. 2 AT89S51单片机及其引脚说明··························································42.3 AT24C02引脚图及其引脚功能 (6)2. 4 AT24C02 掉电存储单元的设计·························································62.5 里程计算、计价单元的设计 (7)2.6 数据显示单元设计························································ (8)第3章系统软件设计 (10)3. 1 系统主程序设计························································ (10)3. 2 定时中断程序设计····················································· (12)3. 3 里程计数中断服务程序设计····················································· (12)3.4 中途等待中断服务程序设计····················································· (12)3. 5 键盘服务程序设计····················································· (12)3. 6 显示子程序服务程序设计····················································· (12)第4章系统调试与测试结果分析 (13)4. 1 使用的仪器仪表························································ (13)4.2 系统调试 (13)第1章引言本次课程设计利用单片机技术来实现一台多功能出租车计价器,具有性能可靠、电路简单、成本低等特点。
出租车计费器

出租车计费器设计要求计费标准为武汉起步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所示。
EDA编程出租车计价器

目录1课程设计目的22设计任务与要求22.1设计任务22.2设计要求23系统组成24模块设计34.1秒分频模块34.2控制模块34.3计量模块34.3.1计价部分44.3.2计时部分44.3.3计程部分44.4译码显示模块45程序调试运行45.1顶层原理图45.2仿真结果56硬件验证66.1引脚锁定66.2硬件验证情况77、课程设计总结77.1、收获77.2、心得体会8参考文献9附录10出租车自动计价器的设计1课程设计目的为培养学生树立正确的设计思想和实事求是的工作作风,学习运用所学基础知识理论、专业知识、基本技能去分析和解决工程技术实际问题,提高学生的综合素质,使学生成为工程应用型合格人才,故进行《EDA技术及应用》的课程设计。
帮助学生全面熟悉、掌握VHDL语言基本知识,掌握利用VHDL语言对常用的的组合逻辑电路和时序逻辑电路编程,把编程和实际结合起来,熟悉编制和调试程序的技巧,掌握分析结果的若干有效方法,进一步提高上机动手能力,培养使用设计综合电路的能力,养成提供文档资料的习惯和规范编程的思想。
2设计任务与要求2.1设计任务本课题要求设计车租车自动计价器,能基本实现自动计价的功能。
2.2设计要求本出租车计价器的计费系统:行程3公里内,且等待累计时间2分钟内,起步费为10元;3公里外以每公里1.6元计费,等待累计时间2分钟外以每分钟1.5元计费。
并能显示行驶公里数、等待累计时间、总费用。
设计的主要技术指标如下:①、计价范围:0~999.9元计价分辨率:0.1元②、计程范围:0~99公里计程分辨率:1公里③、计时范围:0~59分计时分辨率:1分3系统组成出租车自动计价器的系统方框图如图1所示:它有分频模块、控制模块、计时模块、计费模块及显示等模块组成。
图1.出租车自动计价器的系统方框图4模块设计4.1秒分频模块秒分频模块对频率为240Hz的输入脉冲进行分频,得到的频率为16Hz,15Hz和1Hz 的三种频率。
出租车计价器设计程序原理图实物图

毕业论文目录摘要 (Ⅰ)第1章引言 (1)1. 1 出租车计价器概述 (1)1. 2 本设计任务 (1)1.2.1 设计任务 (1)1.2.2 设计要求 (1)1. 3 系统主要功能 (2)第2章出租车计价器硬件设计 (3)2.1 系统的硬件构成及功能 (3)2. 2 AT89S51单片机及其引脚说明 (4)2.3 AT24C02引脚图及其引脚功能 (6)2. 4 AT24C02 掉电存储单元的设计 (6)2.5 里程计算、计价单元的设计 (7)2.6 数据显示单元设计 (8)第3章系统软件设计 (10)3. 1 系统主程序设计 (10)3. 2 定时中断程序设计 (12)3. 3 里程计数中断服务程序设计 (12)3.4 中途等待中断服务程序设计 (12)3. 5 键盘服务程序设计 (12)3. 6 显示子程序服务程序设计 (12)第4章系统调试与测试结果分析 (13)4. 1 使用的仪器仪表 (13)4.2 系统调试 (13)第1章引言本次课程设计利用单片机技术来实现一台多功能出租车计价器,具有性能可靠、电路简单、成本低等特点。
1.1 出租车计价器概述计价器显示的营运金额是营运里程与价格的函数(等候时间一般折算成一定比例的里程来计算)。
出租车计价器通过传感器与行驶车辆连接。
出租汽车的实际里程通过传感器的脉冲信号在计价器里折算成一定的计价营运里程。
目前市场上出租车计价器功能主要有具有数据的复位功能、白天/晚上转换功能、数据输出功能、计时计价功能等等,但能够进行语音播报数据信息的出租车计价器还是比较少见的,针对这一点我们来设计一款多功能出租车计价器,在原有功能的基础上增加单价输出、单价调整、路程输出、显示当前的系统时间、语音播报数据信息等功能。
1.2 本设计任务1.2.1 设计任务设计一款基于AT89S51单片机的出租车计价器。
1.2.2 设计要求1.基本要求(1)不同情况具有不同的收费标准。
● 白天● 晚上● 途中等待(>10min 开始收费)(2)能进行手动修改单价。
PLC 出租车计价器的设计

目录一.设计目的及要求二.工作原理、系统方框图三.各部分选定方案及电路组成、相关器件说明四.系统调试与检测五.设计结论六.设计心得与总结七.参考文献附录一:元器件清单附录二:小组各成员所做工作说明,每个成员对最终方案的贡献一.设计目的及要求汽车在行驶时,里程传感器将里程数转换成与之成正比的脉冲个数,然后由计数译码电路变成收费金额。
每行驶1公里,里程传感器输出一个脉冲信号,即10个脉冲/公里。
[设计要求](1)设计制作自动计费器,金额总数包括行车里程计费、等车时间计费和起步价三部分,金额用数码管显示。
(2)里程单价设2.1元/公里,等车单价为0.6元/10分钟,起步价设为5元(3)行车单价、等车单价、起步价可分别预置。
二.工作原理、系统方框图出租车计价器是安装在出租汽车上的专用计量仪器,作用是显示出出租车行驶的里程和乘客所需要付的金额,具有良好性能的计价器是乘客和司机都希望的。
1出租车计价器的计价原理乘客应付的金额值是路程和时间的函数,计程和计时是计价器计价的依据,为方便起见,计程划分为起程和续程两部分,计时也分起始时间和后续时间。
起程、续程值和起始时间、后续时间值的大小,一般由当地政府有关部门(如客运交通管理、物价部门)视当地诸因素如城市大小、交通情况、生活和物价水平等确定,通常起程、起始时间大于续程、后续时间。
起程内的车费通称为基本车费、基价或起步价,乘客乘车计程不足基价里程是按基价收费,超过基价里程时超出部分按后续单价累计;计价器设定有免费等候时间,即运营时乘客要求停车免费等候时间,超过免费等候时间按等候单价累计收费。
计价器按照一定间隔作跳跃式变化(例如图2.1),显示金额。
出租车的行进状态分为两种:一种是在没有乘客情况下.1的状态,称为空车;一种是在有乘客情况下的状态,称为重车。
出租车上备有一个空车牌标志,当处于空车情况下时,空车牌翻上,此时计价器不计价;当有乘客上车时,首先翻下空车牌,表示重车,然后计营运数据。
EDA课程设计--出租车计价器

摘要随着我国经济社会的全面发展,各大中小城市的出租车营运事业发展迅速,出租车已经成为人们日常出行选择较为普通的交通工具。
出租车计价器是出租车营运收费的专用智能化仪表,是使出租车市场规范化、标准化的重要设备。
一种功能完备,简单易用,计量准确的出租车计价器是加强出租车行业管理,提高服务质量的必需品。
本设计采用VHDL硬件描述语言作为设计手段,采用自顶向下的设计思路,得到一种出租车计价系统的软件结构,通过QuartusⅡ软件下进行仿真,证明所设计的电路系统完成了出租车计价的功能,各项指标符合设计要求。
该设计虽然功能简单,智能化水平比较低,但仍具有一定的实用性。
该设计是在VHDL的基础上对出租车计价器进行设计来实现其基本功能的,与以往的基于单片机的数模混合电路相比,FPGA具有稳定性好,抗干扰能力强等优点,且非常适合做为出租车计价器的控制核心,所以选择用VHDL来对计价器进行设计来实现其功能。
关键词 : 计价器 QuartusⅡ数码管一、设计目的和要求设计一个出租车计价器,该计价器计费系统技术参数和设计要求:(1)实现计费功能,计费标准为:起步均价6元,并在车行驶3公里后以每公里1.6元计费,当计费器达到或超过20元时,每公里加收50%的车费,车辆停止和暂停时不收费。
计价范围:0—999.9元,计价分辨率:0.01元;计程范围:0—99公里,计程分辨率:0.01公里。
(2)数码管动态显示功能,能显示行驶公里数、总费用。
(3)汽车具有启动、停止、暂停和换挡等状态。
二、设计原理1设计模块本设计是对出租车计价器的四个模块进行分析的,综述如下:分频模块:分频模块是其它模块的基础,输入时钟选为32Hz,分频后的时钟频率为1Hz,为后续模块提供基本时钟。
路程模块:该模块是对车辆行驶路程进行计数,以1Hz时钟为基础,检测行程脉冲,路程模块中有内部变量来判断路程,当大于3公里、20公里时,分别有相应的使能信号对此作出记录,最大路程显示为99公里。
单片机出租车计价器程序及原理图

#include <reg52.h>#include <absacc.h>#define uint unsigned int#define uchar unsigned char#define DISPON 0x3f //显示开#define DISPOFF 0x3e //显示关#define FIRSTROW 0xc0 //显示起始行设置1 1 L5 L4 L3 L2 L1 L0,在0到63行间选择#define SETY 0xb8 //Y方向,8页64行,1 0 1 1 1 P2 P1 P0,0到8页选择#define SETX 0x40 //X方向,半屏64列,0 1 C5 C4 C3 C2 C1 C0 ,0到63列选择/*P2+P0口16位编址,有效位是P2.3~P2.0,无关位用“1”表示P2.0--RS,P2.1--RW,P2.2--CS2,P2.3--CS1右屏命令和数据读写编址 CS2 CS1 RW RS*/#define LLCD_CMD_WR XBYTE[0xf4ff] //0 1 0 0#define LLCD_DAT_WR XBYTE[0xf5ff] //0 1 0 1#define LLCD_CMD_RD XBYTE[0xf6ff] //0 1 1 0#define LLCD_DAT_RD XBYTE[0xf7ff] //0 1 1 1/*左屏命令和数据读写编址*/#define RLCD_CMD_WR XBYTE[0xf8ff] //1 0 0 0#define RLCD_DAT_WR XBYTE[0xf9ff] //1 0 0 1#define RLCD_CMD_RD XBYTE[0xfaff] //1 0 1 0#define RLCD_DAT_RD XBYTE[0xfbff] //1 0 1 1/**********************数据坐标记录**************************左-路程:整数部分 x=9,y=1,小数部分 x=31,y=1左-路程费用:整数部分 x=9,y=3,小数部分 x=31,y=3总费用:整数部分-左:x=45,y=5路程单价:x=34,y=7右-时间:整数部分 x=20,y=1右-时间费用:整数部分 x=10,y=3,小数部分 x=32,y=3总费用:小数部分-右:x=2,y=5时间单价:x=44,y=7*************************************************************/#define L_Mile_X_Z 9#define L_Mile_X_D 30#define L_Mile_Y 1#define L_Cost_X_Z 9#define L_Cost_X_D 30#define L_Cost_Y 3#define L_Total_X 45#define L_Total_Y 5#define L_Unit_X 34#define L_Unit_Y 7#define R_Time_X 20#define R_Time_Y 1#define R_Cost_X_Z 10#define R_Cost_X_D 31#define R_Cost_Y 3#define R_Total_X 2#define R_Total_Y 5#define R_Unit_X 44#define R_Unit_Y 7sbit LED=P2^7 ;sbit START=P1^0;sbit STOP=P1^1;sbit CLEAR=P1^2;sbit MUINT_UP=P1^4;sbit MUINT_D=P1^5;sbit TUINT_UP=P1^6;sbit TUINT_D=P1^7;uchar Mile_Unit=4,Time_Unit=2;long time_cost,time_cost_Z,time_cost_D,time_con_s,time_con_m;long mile_cost,mile_cost_Z,mile_cost_D,mile_con_m,mile_con_km;long speed_con,speed_con_m,speed,speed_flag,cost_flag;long total_z=5,total_d;code char shu[10][6]={0x3E,0x41,0x41,0x41,0x3E,0x00, //00x00,0x42,0x7F,0x40,0x00,0x00, //10x42,0x61,0x51,0x49,0x46,0x00, //20x22,0x41,0x49,0x49,0x36,0x00, //30x38,0x24,0x22,0x7F,0x20,0x00, //40x27,0x45,0x45,0x45,0x39,0x00, //50x3E,0x45,0x45,0x45,0x38,0x00, //60x01,0x01,0x79,0x05,0x03,0x00, //70x36,0x49,0x49,0x49,0x36,0x00, //80x0E,0x51,0x51,0x51,0x3E,0x00, //9};/*************************初始化界面*****************************/code uchar logo[]={0xFF,0x07,0x03,0xE1,0x11,0x09,0x09,0x09,0x08,0x09,0x09,0x09,0x09,0x09,0x09,0x09, 0x08,0x09,0x09,0x09,0x09,0x09,0x09,0x09,0x08,0x09,0x09,0x09,0x09,0x09,0x09,0x09, 0x08,0x09,0x09,0x09,0x09,0x09,0x09,0x09,0x08,0x09,0x09,0x09,0x09,0x09,0x09,0x09, 0x08,0x09,0x09,0x09,0x09,0x09,0x09,0x09,0x08,0x09,0x09,0x11,0xE1,0x03,0x07,0xFF,0x08,0x09,0x09,0x09,0x09,0x09,0x09,0x09,0x08,0x09,0x09,0x09,0x09,0x09,0x09,0x09, 0x08,0x09,0x09,0x09,0x09,0x09,0x09,0x09,0x08,0x09,0x09,0x09,0x09,0x09,0x09,0x09, 0x08,0x09,0x09,0x09,0x09,0x09,0x09,0x09,0x08,0x09,0x09,0x11,0xE1,0x03,0x07,0xFF, 0xFE,0x00,0x00,0xFF,0x00,0x7E,0x3C,0x18,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xC0,0xC0,0x00,0x00,0x00, 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, 0xFE,0x10,0x28,0x44,0x82,0x00,0xF8,0x08,0xF8,0x08,0xF8,0x00,0xFF,0x00,0x00,0xFF, 0xFF,0x00,0x00,0xFF,0x00,0x7E,0x3C,0x18,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xFE,0x04, 0xF8,0x04,0xFE,0x00,0xF4,0x00,0xF8,0x08,0xF8,0x08,0xF8,0x00,0xFF,0x00,0x00,0xFE, 0xFE,0x00,0x00,0xFF,0x00,0x00,0x00,0x00,0x00,0x02,0x02,0x02,0x02,0x02,0x00,0x02, 0x02,0x02,0x02,0x02,0x00,0x02,0x02,0x02,0x02,0x02,0x00,0x00,0x00,0x00,0x02,0x02, 0x02,0x02,0x02,0x00,0x02,0x02,0x02,0x02,0x02,0x00,0x02,0x02,0x02,0x02,0x02,0x00, 0x00,0x00,0x40,0x80,0x00,0x00,0x00,0x80,0x40,0x00,0x00,0x00,0xFF,0x00,0x00,0xFF, 0xFF,0x00,0x00,0xFF,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, 0x00,0x00,0x00,0x00,0x02,0x02,0x02,0x02,0x02,0x00,0x02,0x02,0x02,0x02,0x02,0x00, 0x02,0x02,0x02,0x02,0x02,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, 0x00,0x00,0x40,0x80,0x00,0x00,0x00,0x80,0x40,0x00,0x00,0x00,0xFF,0x00,0x00,0xFE, 0xFE,0x00,0x00,0xFF,0x00,0xFC,0x78,0x30,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x60,0x60,0x00,0x00,0x00, 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, 0x00,0x00,0x12,0x12,0x13,0x7E,0x13,0x12,0x12,0x00,0x00,0x00,0xFF,0x00,0x00,0xFF, 0xFF,0x00,0x00,0xFF,0x00,0xFC,0x78,0x30,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x60,0x60,0x00,0x00, 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, 0x00,0x00,0x12,0x12,0x13,0x7E,0x13,0x12,0x12,0x00,0x00,0x00,0xFF,0x00,0x00,0xFE, 0xFE,0x00,0x00,0x01,0x02,0x04,0x04,0x04,0x04,0x05,0x05,0x05,0x05,0x05,0x04,0x05, 0x05,0x05,0x05,0x05,0x04,0x05,0x05,0x05,0x05,0xC5,0x24,0x14,0x14,0x14,0x15,0x15, 0x15,0x15,0x15,0x14,0x15,0x15,0x15,0x15,0x15,0x14,0x15,0x15,0x15,0x15,0x15,0x14, 0x14,0x14,0x14,0x14,0x14,0x14,0x14,0x14,0x14,0x14,0x14,0x12,0x11,0x10,0x10,0x1F, 0x1F,0x10,0x10,0x11,0x12,0x14,0x14,0x14,0x14,0x14,0x15,0x15,0x15,0x15,0x15,0x14, 0x15,0x15,0x15,0x15,0x15,0x14,0x15,0x15,0x15,0x15,0x15,0x14,0x14,0x14,0x14,0x15, 0x15,0x15,0x15,0x15,0x14,0x15,0x25,0xC5,0x05,0x05,0x04,0x05,0x05,0x05,0x05,0x05, 0x05,0x04,0x04,0x04,0x04,0x04,0x04,0x04,0x04,0x04,0x04,0x02,0x01,0x00,0x00,0xFE, 0xFE,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xFF,0x00,0x00,0x00,0xFF,0x7E,0x3C, 0x18,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x60, 0x60,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x49,0x4A,0x4C, 0xF8,0x4C,0x4A,0x49,0x00,0x00,0x00,0xFF,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xFE,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x02,0x04,0x04,0x04,0x04,0x04, 0x04,0x04,0x04,0x04,0x04,0x04,0x04,0x04,0x04,0x04,0x04,0x04,0x04,0x05,0x05,0x05, 0x05,0x05,0x04,0x05,0x05,0x05,0x05,0x05,0x04,0x05,0x05,0x05,0x05,0x05,0x04,0xFC, 0xFC,0x04,0x05,0x05,0x05,0x05,0x05,0x04,0x05,0x05,0x05,0x05,0x05,0x04,0x05,0x05, 0x05,0x05,0x05,0x04,0x04,0x04,0x04,0x04,0x04,0x04,0x04,0x04,0x04,0x04,0x04,0x04, 0x05,0x04,0x04,0x04,0x04,0x04,0x02,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xFE, 0xFE,0xE0,0xC0,0x80,0x80,0x80,0x80,0x80,0x00,0x80,0x80,0x80,0x80,0x80,0x9E,0xA0, 0x20,0x9E,0x80,0xBC,0x82,0x82,0xBC,0x80,0x3D,0x80,0x84,0x9E,0xA4,0xA4,0x80,0xB6, 0x36,0x80,0x80,0x00,0x00,0x00,0x00,0x00,0x00,0x30,0x30,0x00,0x3E,0x41,0x41,0x41, 0x3E,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x00,0x80,0x80,0x80,0x80,0xC0,0xE0,0xFF, 0xFF,0xE0,0xC0,0x80,0x80,0x80,0x80,0x80,0x00,0x80,0x80,0x80,0x80,0x80,0x9E,0xA0, 0x20,0x9E,0x80,0xBC,0x82,0x82,0xBC,0x80,0x3D,0x80,0x84,0x9E,0xA4,0xA4,0x80,0xB6, 0x36,0x80,0x80,0x3E,0x41,0x41,0x41,0x3E,0x00,0x30,0x30,0x00,0x00,0x00,0x00,0x00, 0x00,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x00,0x80,0x80,0x80,0x80,0xC0,0xE0,0xFE, };/*************************************************************写命令*************************************************************/void lcd_cmd_wr(uchar cmdcode,uchar right){if(right)RLCD_CMD_WR=cmdcode;elseLLCD_CMD_WR=cmdcode;}/*************************************************************写数据*************************************************************/void lcd_data_wr(uchar dispdata,uchar right){if(right)RLCD_DAT_WR=dispdata;elseLLCD_DAT_WR=dispdata;}/*************************************************************数据清屏*************************************************************/void lcd_clr(void){uchar i,j;for(i=0;i<8;i++)lcd_cmd_wr(SETY+i,0);lcd_cmd_wr(SETX,0);lcd_cmd_wr(SETY+i,1);lcd_cmd_wr(SETX,1);for(j=0;j<64;j++){lcd_data_wr(0,0);lcd_data_wr(0,1);}}}/************************************************************* 写一个数字*************************************************************/ void lcd_shu_wr(uchar w,uchar x,uchar y,uchar shu_1){uchar i;lcd_cmd_wr(SETY+y,w);lcd_cmd_wr(SETX+x,w);for(i=0;i<6;i++)lcd_data_wr(shu[shu_1][i],w);}/************************************************************* 写一个三个数字*************************************************************/ void lcd_sanshu_wr(uchar w,uchar x,uchar y,uint str){uint bai,shi,ge;bai=str/100;shi=(str%100)/10;ge=str%10;lcd_shu_wr(w,x,y,bai);lcd_shu_wr(w,x+6,y,shi);lcd_shu_wr(w,x+12,y,ge);}/************************************************************* 写一贞128X64点的图片显示*************************************************************/ void lcd_bmp_wr(uchar *bmp){uchar i,j;for(i=0;i<8;i++)lcd_cmd_wr(SETY+i,0);lcd_cmd_wr(SETX,0);lcd_cmd_wr(SETY+i,1);lcd_cmd_wr(SETX,1);for(j=0;j<64;j++){lcd_data_wr(bmp[128*i+j],0);lcd_data_wr(bmp[128*i+j+64],1);}}}/************************************************************* 延时函数*************************************************************/ DelayNms(uint y){uint x;for(;y>0;y--)for(x=113;x>0;x--);}/************************************************************* LCD初始化*************************************************************/ void lcd_init(void){lcd_cmd_wr(DISPON,0);lcd_cmd_wr(FIRSTROW,0);lcd_cmd_wr(SETY,0);lcd_cmd_wr(SETX,0);lcd_cmd_wr(DISPON,1);lcd_cmd_wr(FIRSTROW,1);lcd_cmd_wr(SETY,1);lcd_cmd_wr(SETX,1);lcd_clr();DelayNms(500);lcd_bmp_wr(logo);//welcome_init();}/************************************************************** 初始化中断,定时器等**************************************************************/void interrput_init(){IT0=1; //外部中断0触发方式:边沿触发EX0=1; //开外部中断0ET0=1; //开定时器中断0ET1=1; //开定时器中断1//EA=1; //开部中断TMOD=0x11; //00010001TH0=(65535-50000)/256;TL0=(65535-50000)%256;TR0=1;TH1=(65535-50000)/256;TL1=(65535-50000)%256;TR1=0;}/**************************************************************显示数据**************************************************************/void display(){lcd_sanshu_wr(0,L_Mile_X_Z,L_Mile_Y,mile_con_km); //写行驶路程lcd_sanshu_wr(0,L_Mile_X_D,L_Mile_Y,mile_con_m);lcd_sanshu_wr(0,L_Cost_X_Z,L_Cost_Y,mile_cost_Z); //写路程费用lcd_sanshu_wr(0,L_Cost_X_D,L_Cost_Y,mile_cost_D);lcd_sanshu_wr(0,L_Total_X,L_Total_Y,total_z); //写总费用整数部分lcd_shu_wr(0,L_Unit_X,L_Unit_Y,Mile_Unit); //写路程单价lcd_sanshu_wr(1,R_Time_X,R_Time_Y,time_con_m); //写行驶时间lcd_sanshu_wr(1,R_Cost_X_Z,R_Cost_Y,time_cost_Z); //写时间费用lcd_shu_wr(1,R_Cost_X_D,R_Cost_Y,time_cost_D);lcd_sanshu_wr(1,R_Total_X,R_Total_Y,total_d); //写总费用小数部分lcd_shu_wr(1,R_Unit_X,R_Unit_Y,Time_Unit); //写时间单价}/*************************************************************键盘输入**************************************************************/void keyboard(){P1=0xff;if(P1!=0xff){DelayNms(1);if(P1!=0xff){if(!START) EA=1;if(!STOP) EA=0;if(!CLEAR){mile_con_km=0;mile_con_m=0;mile_cost_Z=0;mile_cost_D=0;total_z=5;time_con_m=0;time_cost_Z=0;time_cost_D=0;total_d=0;display();}if(!MUINT_UP){Mile_Unit++;while(!MUINT_UP);lcd_shu_wr(0,L_Unit_X,L_Unit_Y,Mile_Unit);//写路程单价}if(!MUINT_D){Mile_Unit--;while(!MUINT_D);lcd_shu_wr(0,L_Unit_X,L_Unit_Y,Mile_Unit);//写路程单价}if(!TUINT_UP){Time_Unit++;while(!TUINT_UP);lcd_shu_wr(1,R_Unit_X,R_Unit_Y,Time_Unit);//写时间单价}if(!TUINT_D){Time_Unit--;while(!TUINT_D);lcd_shu_wr(1,R_Unit_X,R_Unit_Y,Time_Unit);//写时间单价}}}}/**************************************************************测速**************************************************************/ void testspeed(){if(speed>=18){speed_flag=1;TR1=0;}else{speed_flag=0;TR1=1;}}/************************************************************** 主函数**************************************************************/ void main(){lcd_init();interrput_init();display();while(1){keyboard();testspeed();}}/************************************************************* 外部中断0服务程序测所走过的路程,并且测车速*************************************************************/ void Int0() interrupt 0{LED=!LED;speed_con_m++;if(speed_flag){mile_con_m++;if(mile_con_m==1000){mile_con_m=0;mile_con_km++;if(mile_con_km==1)cost_flag=1;}}}/************************************************************定时器0中断服务程序测速计时器*************************************************************/void timer0() interrupt 1{TH0=(65535-50000)/256; //50msTL0=(65535-50000)%256;speed_con++;if(speed_con%5==0) //0.25s测速一次{speed=speed_con_m*2;speed_con_m=0;}if(speed_con==20) ////1s刷新显示一次{speed_con=0;if(cost_flag){mile_cost_D=(mile_con_m*Mile_Unit)%1000; //计算路费用mile_cost_Z=(mile_con_km-1)*Mile_Unit;mile_cost_Z=mile_cost_Z+(mile_con_m*Mile_Unit)/1000;total_z=mile_cost_Z+time_cost_Z; //计算总费用total_z+=5;total_d=mile_cost_D+time_cost_D*100;total_z=total_z+total_d/1000;total_d=total_d%1000;}display();}}/*************************************************************定时器1中断服务程序按时间计费计时器*************************************************************/void timer1() interrupt 3{.TH1=(65535-50000)/256; //50ms计时TL1=(65535-50000)%256;time_con_s++;if(time_con_s==1200) //一分钟{time_con_s=0;time_con_m++;time_cost=time_con_m*Time_Unit; //计算时间费用time_cost_Z=time_cost/10;time_cost_D=time_cost%10;}}11 / 11。
出租车计价系统设计

目录内容提要 (2)正文 (3)硬件电路原理图 (3)程序流程图 (4)源程序代码 (4)设计体会 (7)参考文献 (7)内容提要出租车计价器系统要求:价格=速度*时间*单价。
出租车在白天、夜晚计价方式不同。
白天:1.1元/公里,超过6公里2.0元/公里;夜晚:1.5元/公里,超过6公里2.5元/公里。
总价等于其和。
本设计将价格换算成:价格=车轮圈数*车轮周长*单价。
采用计数器TM50、TM51的外部计数功能从轮速传感器上采集脉冲信号;利用NEC单片机的外部中断功能(P0/P12.0)进行白天与夜晚的切换;利用开发板上的LED数码管进行价格显示模拟。
同时,通过改变电路连接方式,可实现计费暂停,清零功能。
本系统是以NEC78K0系列单片机为平台,以C语言为工具进行的设计开发。
正文:出租车计价器系统本系统设计的意义在于,实现了出租车计费完全采用‘走多少路花多少钱’的模式,从消费者的利益出发,是原有系统的优化。
在此次设计中,本人的主要任务是参与主程序的编写任务,并进行调试修改。
一、硬件电路连接原理图:原理图说明:1、端口设置:按键中断——P0/P12.0 数码管:阳极——P4.0~P4.7阴极——P5.0~P5.3 车速传感器输入端——P1.7与P3.3 2、功能解释:车速传感器产生车轮圈数信号,此信号经过单片机的处理输出价格并在LED数码管上显示;按键为中断,控制白天与夜晚之间计费的转换。
二、程序流程图:开始初始化P0中断:是否白天TM50计数白天里程TM51计数黑夜里程Y N三、源程序代码:#pragma sfr#pragma DI#pragma EI#pragma interrupt INTTM50 DAY#pragma interrupt INTTM51 NIGHT#pragma interrupt INTP0 DNCunsigned char tab1[10]={0xfc,0x60,0x3e,0x6e,0xe2,0xce,0xde,0x64,0xfe,0xee}; unsigned char tab2[10]={0xfc,0x18,0x6e,0x5e,0x9a,0xd6,0xf6,0x1c,0xfe,0xde}; unsigned int num100=0,num10=0,num1=0,num0=0;float m=0,s=0,i=0,j=0;unsigned int n=0;void delay() /*延时函数*/{int t;for(t=0;t<50;t++);}void jishuqi() /*计数器TM50、TM51初始化*/ {PM1.7=1;PU1.7=1;TCL50=0X01;TMC50=0X80;CR50=0Xc2;TMIF50=0;TMMK50=0;TMPR50=0;PM3.3=1;PU3.3=1;TCL51=0X01;TMC51=0X00;CR51=0Xc2;TMIF51=0;TMMK51=0;TMPR51=0;}void heibai() /*外部中断P0初始化*/{PM12.0=1;PU12.0=1;PIF0=0;PMK0=0;PPR0=1;EGP.0=1;EGN.0=0;}void zhongbiao() /*LED显示端口初始化*/ { PM4=0;PU4=0XFF;PM5=0;PU5=0XFF;P5=0X00;}__interrupt void DAY() /*TM50白天中断函数*/{i++;s=3.14*2*0.5*i;if(s<=6.0)m=1.1*s;else if(s>6.0)m=2*(s-6.0)+6.6;n=10*m;num100=n/1000; /*显示数精确到一位小数*/ num10=(n/100)%10;num1=(n/10)%100%10;num0=(n/1000)%100%10;}__interrupt void NIGHT() /* TM51夜晚中断函数*/ {j++;s=3.14*2*0.5*j;if(s<=6.0)m=1.5*s;else if(s>6.0)m=2.5*(s-6.0)+9.0;n=10*m;num100=n/1000;num10=(n/100)%10;num1=(n/10)%100%10;num0=(n/1000)%100%10;}__interrupt void DNC() /* P0外部中断函数*/ {TMMK50=!TMMK50;TCE51=!TCE51;i=0; /* 清零功能设置*/j=0;}void main() /* 主函数*/{DI();IMS=0xcc;IXS=0x00;jishuqi(); /* 调用初始化函数*/heibai();zhongbiao();EI();while(1) /* LED数码管显示程序*/{P5.0=0;P5.1=1;P5.2=1;P5.3=1;P4=tab2[num0];delay();P5.0=1;P5.1=0;P5.2=1;P5.3=1;P4=tab2[num1];delay();P5.0=1;P5.1=1;P5.2=0;P5.3=1;P4=tab1[num10];delay();P5.0=1;P5.1=1;P5.2=1;P5.3=0;P4=tab1[num100];delay();}}四、设计体会:通过此次NEC电子设计实习,加强了对NEC单片机、Protel基本功能的认识,能够较为灵活的利用NEC单片机进行简单系统的设计开发,进一步熟练了Prote电路设计软件的使用。
EDA_出租车计价器03_上传

课程设计任务书学生姓名:专业班级:指导教师:工作单位:题目: 出租车计价器的设计初始条件:本设计利用QuartusⅡ软件编写VHDL代码,运用EDA实验箱上的FPGA、数码管、LED灯、拨码开关、3/8译码器、系统20MHz时钟等硬件资源,实现简易的出租车计价器的相关功能。
要求完成的主要任务: (包括课程设计工作量及技术要求,以及说明书撰写等具体要求)1、课程设计工作量:2周。
2、技术要求:①设计一个出租车计价器。
要求显示行驶里程、停车时间和计费值。
②出租车的起步价为3元,当里程行驶到1km后,费用为4元;当里程行驶到1.5km后,费用为5元;,当里程行驶到2km后,费用为6元;当里程行驶到2.5km后,费用为7元;当里程行驶到3km后,费用为8元;此后每公里计费为0.7元。
当计费达到20元后,每公里加收50%的车费。
停车每达3分钟,增加0.7元。
3、查阅至少5篇参考文献。
按《武汉理工大学课程设计工作规范》要求撰写设计报告书。
全文用A4纸打印,图纸应符合绘图规范。
时间安排:1.2011 年1 月10 日集中,作课设具体实施计划与课程设计报告格式的要求说明。
2.2011 年1 月11 日,查阅相关资料,学习电路的工作原理。
3.2011 年1 月12 日至2011 年 1 月16 日,方案选择和程序设计设计。
4.2011 年1 月17 日至2011 年 1 月20 日,电路调试和设计说明书撰写。
5.2011 年1 月21 日上交课程设计成果及报告,同时进行答辩。
课设答疑地点:鉴主13楼电子科学与技术实验室。
指导教师签名:年月日系主任(或责任教师)签名:年月日摘要本文介绍了一种采用单片FPGA芯片进行出租车计费器的设计方法,主要阐述如何使用新兴的EDA器件取代传统的电子设计方法,利用FPGA的可编程性,简洁而又多变的设计方法,缩短了研发周期,同时使出租车计费器体积更小功能更强大。
本设计实现了出租车计费器所需的一些基本功能,计费包括起步价、行车里程计费、等待时间计费,同时考虑到出租车行业的一些特殊性,更注重了把一些新的思路加入到设计中。