数电课程设计:出租车计价器
数字电路课程设计出租车计费器

数字电路课程设计题目:出租车计费器学院:计算机与信息工程学院班级:电科112姓名:于芳芳学号:1146332402013年 5 月 4 日目录一、(题目)的功能 (2)二、(题目)设计框架............................... (3)三、元器件选择 (4)四、原理图 (5)五、实物图 (6)六、结论及心得 (7)一、(题目)的功能1、按启动键后开始计费。
2、汽车随着行驶里程的增加,计价器里程数字显示的读数从10逐渐增大,到达目底地,便可按显示的数字收费。
二、设计框架计价器控制电路框图计程车计价器控制电路框图:译码显示显示译码显示译码加法器里程单价y清零出租车传感信号>=1里程计数器起步价清零三、元件选择74LS192、74LS85、74LS193及门电路直流稳压电源数据开关、按钮、阻容元件若干四、元件使用方案1、74LS192具有下述功能:① 异步清零:MR=1,Q3Q2Q1Q0=0000 ,此功能可实现计数器的清零)。
②异步置数:MR=0, =0,Q3Q2Q1Q0=D3D2D1D0 。
③保持: MR=0, =1,CPU=CPD=1,Q3Q2Q1Q0保持原态。
④加计数:CR=0, =1,CPU=CP,CPD=1,Q3Q2Q1Q0按加法规律计数。
⑤减计数:CR=0, =1,CPU=1,CPD= CP,Q3Q2Q1Q0按减法规律计数。
2、74ls193四位二进制可加减计数器74LS193引脚图管脚及功能表74LS193是同步四位二进制可逆计数器,它具有双时钟输入,并具有同步清除和同步置数等功能,其引脚排列及逻辑符号如下所示:74LS193的引脚排列及逻辑符号引脚排列图中:LOAD 为置数端, UP为加计数端,DOWN 为减计数端, CO、BO为加、减进位输出端,A、B、C、D为计数器输入端,CLEAR 为清除端,Q0、Q1、Q2、Q3为数据输出端。
3、74ls85集成数值比较器74LS85集成数值比较器74LS85是四位数值比较器,它的管脚图和真值表如下:图10-4 74LS85的管脚图其中10、12、13、15(或1、9、11、14)脚是输入端,2、3、4(或5、6、7)脚为输出端。
基于数电设计出租车里程计价器

电子技术课程设计报告题目:出租车里程计价器设计学生姓名:学生学号:年级:专业:班级:指导教师:机械与电气工程学院制2016年11月出租车计价器课程设计机械与电气工程学院自动化1设计的任务与要求1.1课程设计任务(1)能够实现计程功能(2)实现计费功能,计费标准为:按行驶里程收费,起步费为6.0元,并在车行3公里后再按2.0 元/公里,最高计费为99.9元,车停止不计费,能将车费显示出来。
1.2初始参数和要求(1)74LS160计数器的简介74LS160 是一个具有异步清零、同步置数、可以保持状态不变的十进制上升沿计数器,共有54/74160 和54/74LS160 两种线路结构型式。
(2)74LS85比较器的简介74LS85比较器是一个4位数值比较器,它是由高位开始比较,逐位进行。
若最高位已比较出大小,则以后各位大小都对比较结果没有影响;如果最高位相等,则比较次高位;同理,次高位已比较出大小,则以后各位大小对结果没有影响。
如果4位比较都相等,则再看级联信号输入。
级联输入信号是由低位比较器的输出而来。
(3)74LS283加法器的简介74LS加法器是4为超前进位加法器,能够实现两个数值信号的相加。
(4)初始要求电路能够实现初始设定,起步费为6.0元,并在车行3公里后再按2.0 元/公里计算,车停止不计费,能将路程及车费显示出来。
2出租车里程计价器设计方案制定2.1系统工作原理本设计方案系统的总体工作原理如图1所示。
按行驶里程收费,起步费为6.0元,并在车行3公里后再按2.0 元/公里,最高计费为99.9元,车停止不计费,将路程及车费显示出来。
路程的计算来自于车轮给予的脉冲,车启动后计费器开始工作。
本设计方案为设定每米车轮给路程计数器一个脉冲,并通过显示器把路程显示出来,同时把路程与预置的3公里进行比较,当路程小于等于3公里时,车费显示为6元。
当路程大于3公里且接收到50米脉冲时,计费器加一毛钱。
当加够一块钱时,计数器进位,与预置为6元的加法器相加。
数电课程设计出租车计价器

目录引言 (1)一、设计目的 (1)二、设计任务 (1)2.1设计要求及技术指标 (1)2.2要完成的任务 (1)2.3设计模块 (2)2.4总体思想 (2)2.5总体框图 (3)三、出租车自动计费器的实现 (3)3.1出租车电路的实现 (3)3.1.1里程计算与显示电路 (3)3.1.2里程比较电路 (4)3.2时间计费模块中的计数部分 (6)3.2.1设计任务分析 (6)3.2.3单元电路分析与设计 (6)3.2.4系统原理电路与仿真 (6)3.3 时间计费模块中的比较部分 (7)3.3.1 设计任务分析 (7)3.3.2 系统方案设计 (7)3.3.3 单元电路分析与设计 (7)3.3.4 系统原理电路与仿真 (8)3.4计价部分 (8)四、仿真过程 (8)4.1里程大于3km时 (9)4.2 等待时间大于5分钟时 (9)五、总电路 (10)六、设计心得 (10)七、出租车计费器核心器件简介 (12)7.1 74LS160 (12)7.2 74LS85 (14)7.3 555计时器 (15)7.4 7400N 74LS02N 7404N (17)7.5所用元件数量及价格表 (18)八、参考文献 (19)引言随着社会的进步以及人们生活水平的日益提高都促使交通工具的不断变化,无论是在大城市或是中小城市越来越多的出租车公司不断的出现。
出租车的出现方便了人们的生活,对于现在快节奏生活方式的人们来说出租车无疑是最好的交通工具。
那么其收费的方式自然而然就被给予关注,比如收费标准以及行驶里程等。
一、设计目的1.1 本电子设计主要实现以下目的:1)增强对数字电子技术课程的了解与掌握2)学习相关软件的使用方法3)具备简单电子的设计能力二、设计任务2.1设计要求及技术指标设计一出租车计价器,设计要求及技术指标如下:1、能计汽车行驶的里程和停车等候时间。
2、能自动显示出该收的车费和停车等候费。
3、超过基本里程,每千米行车费增加1元。
(完整word版)数电课设报告——出租车计价器

课程设计任务书学生姓名:专业班级:指导教师:许建霞工作单位:信息工程学院题目: 出租车计价器的设计与实现初始条件:本设计既可以使用集成译码器、计数器、定时器、脉冲发生器和必要的门电路等,也可以使用单片机系统构建多功能数字钟。
用数码管显示行驶里程、停车时间和计费值。
要求完成的主要任务: (包括课程设计工作量及技术要求,以及说明书撰写等具体要求)1、课程设计工作量:1周。
2、技术要求:1)设计一个出租车计价器。
要求用4位数码管显示行驶里程、停车时间和计费值,采用按键切换显示物理量。
2)出租车的起步价为3元,当里程行驶到1km后,费用为4元;当里程行驶到1.5km后,费用为5元;,当里程行驶到2km后,费用为6元;当里程行驶到2.5km后,费用为7元;当里程行驶到3km 后,费用为8元;此后每公里计费为0.7元/0.5km。
停车每达3分钟,增加0.7元。
3)具有秒、分为60进制计数功能,能显示分、秒停车状态的计时结果,格式为:00:00min。
按照轮胎转动1圈为1m计算,计算并显示行驶的里程结果,格式为:000.0km。
能显示乘车费用,格式为:000.0元。
4)确定设计方案,按功能模块的划分选择元、器件和中小规模集成电路,设计分电路,画出总体电路原理图,阐述基本原理。
3、查阅至少5篇参考文献。
按《武汉理工大学课程设计工作规范》要求撰写设计报告书。
全文用A4纸打印,图纸应符合绘图规范。
时间安排:1、2013年5 月17日,布置课设具体实施计划与课程设计报告格式的要求说明。
2、年月日至年月日,方案选择和电路设计。
3、年月日至年月日,电路调试和设计说明书撰写。
4、2013年7月5日,上交课程设计成果及报告,同时进行答辩。
指导教师签名:年月日系主任(或责任教师)签名:年月日目录1. 1 原理图的设计 (4)1.1方案的选择、比较 (4)1.1.1 方案一 (4)1.1.2 方案二 (5)1.1.3 方案比较选择 (6)1.2 方案二的说明及电路 (6)1.2.1 AT89S52单片机及最小系统 (6)1.2.2 振荡电路 (7)1.2.3 按键单元 (7)1.2.4 显示单元 (8)1.2.5 存储单元 (9)1.3 系统总程序..........................................................................................10 1.3.1系统总程序 (10)1.3.2 行驶路程子程序 (11)1.3.3 等待时间子程序 (12)1.4主要电路图及工作原理 (14)2 仿真结果分析 (15)3 分析测试数据 (16)4收获、体会、建议 (17)5元器件清单 (18)5.1单片机主板BOM清单 (18)5.2 显示部分器件 (19)6 主要参考文献资料 (20)附录一 (22)附录二 (23)摘要随着生活水平的提高,人们已不再满足于衣食住的享受,出行的舒适已受到越来越多人的关注。
课程设计出租车计价器的设计

毕业设计任务书 (Ⅰ)摘要 (Ⅱ)第1章绪论1.1 前言…………………………………………………………………1.2 系统设计的要求……………………………………………………第2章单元电路的选择与计算2.1 操纵电路……………………………………………………………电源电路……………………………………………………………………………………………………………………2.3显示电路……………………………………………………………2.4键盘电路……………………………………………………………第3章总电路3.1 原理图………………………………………………………………3.2 系统工作原理………………………………………………………第4章系统软件设计4.1 主程序………………………………………………………………4.2 里程计数中断程序…………………………………………………4.3 计算程序……………………………………………………………4.4 显示程序……………………………………………………………4.5 键盘程序……………………………………………………………4.6 程序…………………………………………………………………结论/展望参考文献摘要最近几年来,城市建设日趋加速,我国出租汽车行业迅猛进展,成为人们工作、生活中不可缺少的交通工具。
出租汽车效劳行业和出租汽车计价器紧密相关,因为出租汽车必需安装出租汽车计价器才能投入营运。
出租汽车计价器是一种能依照乘客乘坐汽车行驶距离和等候时刻的多少进行计价,并直接显示车费值的计量器具。
计价器作为出租车的一个重要组成部份,关系着出租车司机和乘客的两边利益,起着重要作用,因此,具有良好性能的计价器对广大出租车司机和乘客来讲是很必要的。
本课题是出租车计价器系统的设计,重点是设计出租车计价器的有效性。
整个系统是以89C52单片机为中心,采纳A44E霍尔传感器对轮胎转数进行计数,实现对出租车里程的测量。
本课题要紧研究出租车计价器的硬件设计。
出租车计费器课程设计

出租车计费器课程设计一、课程目标知识目标:1. 学生能理解出租车计费器的基本原理,掌握其计算方式和收费标准。
2. 学生能够运用数学知识,设计并计算出租车的计费规则,解决实际生活中的计费问题。
3. 学生了解出租车计费器在生活中的应用,认识到数学与日常生活的紧密联系。
技能目标:1. 学生能够通过小组合作,运用所学的数学知识,设计出合理的出租车计费方案。
2. 学生能够运用信息技术,利用编程软件或其他工具,模拟实现出租车计费器的功能。
3. 学生在解决问题的过程中,培养分析问题、解决问题的能力。
情感态度价值观目标:1. 学生通过学习出租车计费器相关知识,增强对数学学科的学习兴趣,提高学习的积极性。
2. 学生在小组合作中,培养团队协作精神,学会尊重他人意见,提高沟通能力。
3. 学生能够认识到科技与生活的紧密联系,激发对科技创新的兴趣,培养创新意识。
本课程针对小学高年级学生,结合生活中的实际问题,让学生在实际操作中学习数学知识,提高解决实际问题的能力。
课程要求学生在掌握基本知识的基础上,注重培养团队协作、创新意识和实际操作能力,使学生在学习过程中获得成就感,激发学习兴趣。
通过本课程的学习,为学生今后的学习生活奠定基础。
二、教学内容本课程以小学数学教材中“计量单位”和“单价、总价”相关知识为基础,结合实际生活中的出租车计费问题,组织以下教学内容:1. 计量单位:复习长度单位(米、千米)、时间单位(时、分),理解出租车计费中涉及到的计量单位及其换算。
2. 单价与总价:学习单价、总价的概念,理解出租车计费的单价和总价计算方法。
3. 出租车计费规则:学习并掌握出租车起步价、里程价、时长价等计费规则,了解不同城市的计费标准。
4. 实际操作:设计计费方案,运用所学知识解决实际问题。
教学内容安排如下:第一课时:复习计量单位,导入出租车计费问题。
第二课时:学习单价与总价,探讨出租车计费规则。
第三课时:小组合作,设计计费方案,进行实际操作。
数字电路课程设计---出租车里程计价器

数字电路课程设计---出租车里程计价器
作为一门数字电路课程设计,出租车里程计价器是一个重要的练习工程。
出租车里程
计价器是一个可以测量出租车行驶里程的电子装置,可以根据乘客的行驶里程数以及出租
车的费率计算出乘客的费用。
本课程设计将建立一个完整的出租车里程计价器系统,主要
功能是通过按键来记录出租车行驶的里程数,以及能够根据费率计算乘客应付费用。
整个出租车里程计价器系统可以由以下部分构成:键盘和电子计算器、单片机和集成
电路、液晶显示器、晶体管和三极管,以及连接各部分的电路。
针对上述的部件,本课程设计的基本步骤是:首先,在键盘和电子计算器之间建立一
个“实时”的系统,用来记录出租车行驶里程数;其次,建立一个单片机程序,将出租车
行驶里程数和出租车的费率进行比较,并计算出乘客的费用;最后,在晶体管和三极管的
帮助下设计一个显示乘客应付费用的液晶显示器,完成整个出租车里程计价器系统的设计。
总的来说,本课程设计是为了帮助学习者了解和熟悉各种电路,从而让学习者掌握出
租车里程计价器的设计和实现方法。
该课程设计中将用到信号传递、数据存储和运算、信
号采集等多项电路技术,最后将 LPC 1688 单片机实现上述功能,完成一套实用的出租车
里程计价器系统的搭建。
数字电路逻辑设计出租车计价器

本科课程设计课程名称:数字电路逻辑设计实验项目:出租车自动计费器实验地点:专业班级:学号:学生姓名:指导教师:2012年12 月24日一.设计要求出租车自动计费器是根据客户用车的实际情况而自动显示用车费用的数字仪表。
仪表根据用车起价和行车里程计费2项求得客户用车的总费用,通过数码管子自动显示。
1.设计制作一个自动计费器,具有起价、行车里程计费部分。
用4位数码管显示总的金额,最大值为99.99元。
2.行车里程单价(*.**元/km)、起价(*.**元)均能通过BCD码盘输入。
3.初始值显示“00.00”,通过按键启动/停止、清零显示内容,有等候时间,暂停后可继续计价。
4.起价、起价里程和每公里价格可通过功能键设置,起步价为8元。
二.设计方案出租车计价器分别由里程计数单元,起步价、单价预置开关,加法器,显示及控制触发器等部分组成。
1.行车里程计费起价公里以内,按起步价算;若超过起步价公里,则每走一公里,计价器则加上每公里的单价款。
出租车计价时,开关K合上。
行车里程的计费电路将汽车行驶的里程数转换成与之成正比的脉冲个数,然后又计数译码电路转换成收费金额。
里程传感器可用霍尔传感器在汽车每前进10m闭合一次,即输出一个脉冲信号,实验用一个脉冲源模拟。
若每前进1km,则输出100个脉冲,将其设为P2,然后选用BCD码比例乘法器(如J690)将里程脉冲数乘以一个表示每km单价的比例系数,比例系数可通过BCD码拨盘预置,例如单价是0.5元/km,则预置的两位BCD码为B2=5、B1=0,则计费电路奖励成计费变换为脉冲个数。
P1 =P2(0.1B2+0.01B1),由于P2为100,经比例乘法器运算后是P1为50 给脉冲,及脉冲当量为0.01元/脉冲。
2.起价计费按照同样的当量将起价输入到电路中,其方法可以通过家属器的预置端直接进行数据预置也可以按当量将起价转换成脉冲数,向计数器输入脉冲。
假如设起价是8元,则对应的脉冲数P0=8/0.01=800最后,得到总的行车费用P=P0+P1,经计数译码及显示电路显示结果。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
湖南大学电气与信息工程学院本科生课程设计课程:数电课程设计题目:出租车计价器专业:电气工程及其自动化班级:学号:姓名:时间:2015年6 月指导教师:一、基本功能及要求1、基本功能:实现计程车的计价器功能。
一方面实现基本功能,包括在行程中满足2公里以内计起步价6 元,以后在车行2公里后且10公里以内再按1.8元/公里,10公里以后按2.2元/公里计费;处于等待的状态下满足5 分钟以内不计价,以后以2元/分计费。
另一方面多功能的实现,计价器可以显示总费用,总里程数和总乘车时间等等。
设计的主要技术指标:1、计价范围: 0~999.0元计价最小单位: 0.1元。
2、计程范围: 0~99公里计价最小单位: 1公里。
3、计时范围: 59分59秒计时最小单位: 1秒(<1小时)2、要求实现模拟功能:能模拟汽车启动、停止等状态。
当汽车行驶时模拟车轮转动以计算行车里程数,当汽车停止时可以计时以计算停车时间过长产生的费用,从而计算出最终的乘车费用。
二、系统模块划分1、计费模块CP1端输入的脉冲信号经系统内部分频后作为模拟行车里程信号。
CP2端输入脉冲信号进系统内部分频后作为行车时间信号。
RR为复位信号。
RR=‘1’时计价器清零。
RSTN为计价器开关。
CASH[15…0]、MILES[15…0]、TIMES[15…0]端分别输出乘车费用,行车里程,行车总时间,它们都是用16位2进制BCD码表示。
2、LCD显示模块BUSY:控制器忙信号,数据未显示稳定时BUSY=1,反之为0。
CASHH[7…0] CASHL[7…0] :乘车费用16位2进制BCD码的高8位数据和低八位数据。
MILEH[7…0] MILEL[7…0] : 行车里程16位2进制BCD码的高8位数据和低八位数据。
CPIN :输入工作时钟信号。
R : LCD显示开关。
TMH[7…0] TML[7…0] :行车时间16位2进制BCD码的高8位数据和低八位数据。
ADDR[3…0]:字符在LCD屏幕上的地址(共两行,每行16个字符)ADDR=“0000”~“1111”对应每行的第0~15个字符。
CLK:控制器工作时钟,上升沿有效。
DATA [7…0] :ASCII码数据总线。
OUTLINE:LCD1602屏幕上的行选择信号,LINE=0时数据在第一行显示,LINE=1时数据在第二行显示。
RST:复位信号,高电平有效。
STORBE:数据输入有效使能,高电平有效。
3、LCD控制模块CLK:控制器工作时钟,上升沿有效RST:复位信号,高电平有效DATA[7..0]:ASCII码数据总线ADDR[3..0]:字符在LCD屏幕上的地址(共两行,每行16个字符)ADDR=“0000”~“1111”对应每行的第0~15个字符LINE: LCD1602屏幕上的行选择信号,LINE=0时数据在第一行显示,LINE=1时数据在第二行显示BUSY:控制器忙信号,数据未显示稳定时BUSY=1;反之为0 STROBE:数据输入有效使能,高电平有效LCD显示器接口:LCD_E:LCD显示器使能LCD_RW:LCD读写方向控制LCD_RS:LCD命令,数据选择LCD_DATA_TRI:LCD数据高阻态控制LCD_DATAO:LCD数据输出总线LCD_DATAI:LCD数据输入总线三、源程序1、计费模块程序LIBRARY IEEE;USE IEEE.STD_LOGIC_1164.ALL;USE IEEE.STD_LOGIC_UNSIGNED.ALL;entity JFQZMK isport (CP1 ,CP2,RR,RSTN: IN STD_LOGIC;MILES,CASH,TIMES: OUT STD_LOGIC_VECTOR(15 DOWNTO 0));end JFQZMK ;architecture JFQLL of JFQZMK isSIGNAL CASHOUT:STD_LOGIC_VECTOR(15 DOWNTO 0);--由CASHTIME&CASHMILE组成--十个十米记为0.1KM的SIGNAL(模拟轮子转一圈走十米)SIGNAL CT:STD_LOGIC_VECTOR(15 DOWNTO 0);SIGNAL CP3:STD_LOGIC;--十个0.1KM脉冲记为1KM的SIGNALSIGNAL T:STD_LOGIC_VECTOR(15 DOWNTO 0);SIGNAL CP:STD_LOGIC;--时间计数及分频的SIGANALSIGNAL COUNTER_REG : STD_LOGIC_VECTOR(31 DOWNTO 0);SIGNAL COUNTER :STD_LOGIC_VECTOR(31 DOWNTO 0);SIGNAL TIMESOUT:STD_LOGIC_VECTOR(15 DOWNTO 0);SIGNAL CLK:STD_LOGIC;--里程计算部分的SIGNALSIGNAL MILESOUT: STD_LOGIC_VECTOR(15 DOWNTO 0);--行车计费部分的SIGNALSIGNAL CASHL: STD_LOGIC_VECTOR(15 DOWNTO 0);SIGNAL CASHH: STD_LOGIC_VECTOR(15 DOWNTO 0);SIGNAL CASHMILE: STD_LOGIC_VECTOR(15 DOWNTO 0);--停车计费部分的SIGNALSIGNAL COST : STD_LOGIC_VECTOR(15 DOWNTO 0);SIGNAL CV: STD_LOGIC_VECTOR(7 DOWNTO 0);SIGNAL CASHTIME: STD_LOGIC_VECTOR(15 DOWNTO 0);--将16位二进制价格转换到BCD码FUNCTION CONVERT(AA:STD_LOGIC_VECTOR) RETURN STD_LOGIC_VECTOR IS VARIABLE AN:STD_LOGIC_VECTOR(15 DOWNTO 0);VARIABLE S:STD_LOGIC_VECTOR(15 DOWNTO 0);BEGINAN:=X"0000";S:=X"0000";FOR N IN 0 TO 15 LOOPIF AA(N)='1' THENCASE N ISWHEN 0 => AN:=X"0001";WHEN 1 => AN:=X"0002";WHEN 2 => AN:=X"0004";WHEN 3 => AN:=X"0008";WHEN 4 => AN:=X"0016";WHEN 5 => AN:=X"0032";WHEN 6 => AN:=X"0064";WHEN 7 => AN:=X"0128";WHEN 8 => AN:=X"0256";WHEN 9 => AN:=X"0512";WHEN 10 => AN:=X"1024";WHEN 11 => AN:=X"2048";WHEN 12 => AN:=X"4096";WHEN 13 => AN:=X"8192";WHEN OTHERS => AN:=X"0000";END CASE;IF (("0" & S(3 d ownto 0)) + ("0" & AN(3 DOWNTO 0)))>"01001" THENS(3 DOWNTO 0):=S(3 DOWNTO 0)+AN(3 DOWNTO 0)+"0110"; --如果相加大于9加6来调整,S(15 DOWNTO 4):=S(15 DOWNTO 4)+X"001";ELSES(3 DOWNTO 0):=S(3 DOWNTO 0)+AN(3 DOWNTO 0);END IF;IF (("0" & S(7 DOWNTO 4)) + ("0" & AN(7 DOWNTO 4)))>"01001" THENS(7 DOWNTO 4):=S(7 DOWNTO 4)+AN(7 DOWNTO 4)+"0110";S(15 DOWNTO 8):=S(15 DOWNTO 8)+X"01";ELSES(7 DOWNTO 4):=S(7 DOWNTO 4)+AN(7 DOWNTO 4);END IF;IF (("0" & S(11 DOWNTO 8)) + ("0" & AN(11 DOWNTO 8)))>"01001" THENS(11 DOWNTO 8):=S(11 DOWNTO 8)+AN(11 DOWNTO 8)+"0110";S(15 DOWNTO 12):=S(15 DOWNTO 12)+X"1";ELSES(11 DOWNTO 8):=S(11 DOWNTO 8)+AN(11 DOWNTO 8);END IF;S(15 DOWNTO 12):=S(15 DOWNTO 12)+AN(15 DOWNTO 12);END IF;END LOOP;RETURN S;END FUNCTION;BEGIN--10个脉冲记为0.1KM的实现PROCESS(CP1,RR) --CP1,RR INPUT SIGNALBEGINIF RR='1' THENCT<=X"0000";ELSIF CP1='1' AND CP1'EVENT THENIF CT="0000000000001001" THENCT<=X"0000";CP3<='1';ELSECP3<='0';CT<=CT+"0000000000000001";END IF;END IF;--分频,每个CP1脉冲就是轮子转一圈,记十个脉冲为0.1km为新信号CP3 END PROCESS;--10个0.1KM脉冲记为1KM的实现PROCESS(CP3,RR)BEGINIF RR='1' THENT<=X"0000";ELSIF CP3='1' AND CP3'EVENT THENIF T="0000000000001001" THENT<=X"0000";CP<='1';ELSECP<='0';T<=T+"0000000000000001";END IF;END IF;END PROCESS;--将时间脉冲分频PROCESS(CP2,RR)BEGINIF RR='1' THENCOUNTER_REG<="00000001101111111111111111111111";--X"989680"; --仿真时设为2COUNTER <= X"00000000";CLK<='0';ELSEIF CP2='1' AND CP2 'EVENT THENIF COUNTER>=COUNTER_REG THENCOUNTER<=X"00000000";CLK<=NOT CLK;ELSECOUNTER<=COUNTER+1;END IF;END IF;END IF;END PROCESS;--时间计数的实现PROCESS(CLK,RR)VARIABLE TIMESOUT_I:STD_LOGIC_VECTOR(15 DOWNTO 0);BEGINIF RR='1' THENTIMESOUT<=X"0000";TIMESOUT_I:=X"0000";ELSIF CLK='1' AND CLK'EVENT THENIF TIMESOUT_I(15 DOWNTO 0)="1001100110011001" THEN --16位二进制数转BCD码TIMESOUT_I:=X"0000";ELSEIF TIMESOUT_I(11 DOWNTO 0)="100101011001" THEN --超过9小时59分钟TIMESOUT_I(11 DOWNTO 0):="000000000000";TIMESOUT_I:=TIMESOUT_I+"0001000000000000";ELSEIF TIMESOUT_I(7 DOWNTO 0)="01011001" THEN --超过59分钟TIMESOUT_I(7 DOWNTO 0):="00000000";TIMESOUT_I:=TIMESOUT_I+"0000000100000000";ELSEIF TIMESOUT_I(3 DOWNTO 0)="1001" THENTIMESOUT_I(3 DOWNTO 0):="0000";TIMESOUT_I:=TIMESOUT_I+"0000000000010000";ELSETIMESOUT_I:=TIMESOUT_I+"0000000000000001";END IF;END IF;END IF;END IF;TIMESOUT<=TIMESOUT_I;END IF; --16位二进制数转BCD码END PROCESS;--里程计算部分PROCESS(CP3,RR)VARIABLE MILESOUT_I:STD_LOGIC_VECTOR(15 DOWNTO 0);BEGINIF RR='1' THENMILESOUT<=X"0000";MILESOUT_I:=X"0000";ELSIF CP3='1' AND CP3'EVENT THENIF MILESOUT_I(15 DOWNTO 0)="1001100110011001" THEN--16位二进制数转BCD码MILESOUT_I:=X"0000";ELSEIF MILESOUT_I(11 DOWNTO 0)="100110011001" THENMILESOUT_I(11 DOWNTO 0):="000000000000";MILESOUT_I:=MILESOUT+"0001000000000000";ELSEIF MILESOUT_I(7 DOWNTO 0)="10011001" THENMILESOUT_I(7 DOWNTO 0):="00000000";MILESOUT_I:=MILESOUT_I+"0000000100000000";ELSEIF MILESOUT_I(3 DOWNTO 0)="1001" THENMILESOUT_I(3 DOWNTO 0):="0000";MILESOUT_I:=MILESOUT_I+"0000000000010000";ELSEMILESOUT_I:=MILESOUT_I+"0000000000000001";END IF;END IF;END IF;END IF; --16位二进制数转BCD码MILESOUT<=MILESOUT_I;END IF;END PROCESS;--行车计费部分PROCESS(MILESOUT,RR)BEGINIF RR='1' THENCASHL<=X"0000";ELSIF MILESOUT <"0000000000100000" THEN --里程小于2.0公里CASHL<="0000000000111100"; --金额赋值6.0元,非BCD码ELSECASHL<="0000000000111100";END IF;END PROCESS;PROCESS(MILESOUT,CP,RR)BEGINIF RR='1' THENCASHH<=X"0000";ELSIF CP='1' AND CP'EVENT THENIF MILESOUT <"0000000011000000" THENCASHH<=X"0000"; --行程<=6.0公里,不额外收费ELSIF MILESOUT <"0000000100000000" THENCASHH<=CASHH+"0000000000010010";--行程<=10公里,1.8元/公里ELSECASHH<=CASHH+"0000000000010110";--行程>10公里,2.2元/公里END IF;END IF;END PROCESS;PROCESS(CASHH,CASHL,RR)BEGINIF RR='1' THENCASHMILE<=X"0000";ELSECASHMILE<=CASHH+CASHL;END IF;END PROCESS;--停车计费部分PROCESS(MILESOUT,CLK,RR)BEGINIF RR='1' THENCOST<=X"0000";CV<=X"00";CASHTIME<=X"0000";--cost存里程数,若实时里程数与cost相等,说明停车ELSIF CLK='1' AND CLK 'EVENT THENIF COST/=MILESOUT THENCV<="00000000";ELSIF CV="00000101" THENCASHTIME<=CASHTIME+"0000000000100000";--停车超过5分钟,每等一分钟2元ELSECV<=CV+"00000001";END IF;COST<=MILESOUT;END IF;END PROCESS;--计价部分PROCESS(CASHTIME,CASHMILE,RR)VARIABLE CASHOUT_I:STD_LOGIC_VECTOR(15 DOWNTO 0);BEGINIF RR='1' THENCASHOUT_I:=X"0000";ELSECASHOUT_I:=CONVERT(CASHTIME+CASHMILE);END IF;CASHOUT<=CASHOUT_I;END PROCESS;--输出部分PROCESS(MILESOUT,CASHOUT,TIMESOUT)BEGINMILES<=MILESOUT;CASH<=CASHOUT;TIMES<=TIMESOUT;END PROCESS;END JFQLL;2、LCD显示模块程序LIBRARY IEEE;USE IEEE.STD_LOGIC_1164.ALL;USE IEEE.STD_LOGIC_UNSIGNED.ALL;entity JFQLCD isport (CPIN,R,BUSY :IN STD_LOGIC;TMH,TML,MILEH,MILEL,CASHH,CASHL :IN STD_LOGIC_VECTOR(7 DOWNTO 0);CLK,RST,STROBE,OUTLINE : OUT STD_LOGIC;DATA : OUT STD_LOGIC_VECTOR(7 DOWNTO 0);ADDR : OUT STD_LOGIC_VECTOR(3 DOWNTO 0));end JFQLCD;architecture JFQ of JFQLCD isTYPE STATES IS (S0,S1,S2,S3,S4);SIGNAL S: STATES;SIGNAL LCDPT : INTEGER RANGE 0 TO 23;SIGNAL CPCT : INTEGER RANGE 0 TO 65535;SIGNAL CP: STD_LOGIC;beginPROCESS(CPIN,R)BEGINCLK<=CPIN;IF R='1' THENCPCT<=65535;ELSIF CPIN='1' AND CPIN 'EVENT THEN IF CPCT=0 THENCPCT<=65535;CP<=NOT CP;ELSECPCT<=CPCT-1;END IF;END IF;END PROCESS;--分频延时PROCESS(CP,R)BEGINIF R='1' THENS<=S0;LCDPT<=0;RST<='1';ELSIF CP='1' AND CP 'EVENT THENCASE S ISWHEN S0=> S<=S1;LCDPT<=0;RST<='1';WHEN S1=> RST<='0';STROBE<='0';IF BUSY='0' THENLCDPT<=LCDPT+1;IF LCDPT=10 THENS<=S3;ELSES<=S2;END IF;END IF;WHEN S2=> S<=S1;STROBE<='1';WHEN S3=> STROBE<='0';IF BUSY='0' THENIF LCDPT=23 THENLCDPT<=10;ELSELCDPT<=LCDPT+1;END IF;S<=S4;END IF;WHEN S4=> STROBE<='1';S<=S3;WHEN OTHERS=> NULL;END CASE;END IF;END PROCESS;PROCESS(LCDPT,TMH,TML,CASHH,CASHL,MILEH,MILEL)BEGINCASE LCDPT ISWHEN 0 => NULL;WHEN 1=> DATA<="00111010";ADDR<="0011";OUTLINE<='0'; --: WHEN 2=> DATA<="00101110";ADDR<="1011";OUTLINE<='0'; --. WHEN 3=> DATA<="01001011";ADDR<="1101";OUTLINE<='0'; --K WHEN 4=> DATA<="01101101";ADDR<="1110";OUTLINE<='0'; --m WHEN 5=> DATA<="01000011";ADDR<="0010";OUTLINE<='1'; --C WHEN 6=> DATA<="01000001";ADDR<="0011";OUTLINE<='1'; --A WHEN 7=> DATA<="01010011";ADDR<="0100";OUTLINE<='1'; --S WHEN 8=> DATA<="01001000";ADDR<="0101";OUTLINE<='1'; --H WHEN 9=> DATA<="00111010";ADDR<="0110";OUTLINE<='1'; --: WHEN 10=> DATA<="00101110";ADDR<="1011";OUTLINE<='1'; --.--LCDPT=7~22 显示FS1~FS8--LCDPT=23~25 显示ZB/TMWHEN 11=>DATA<="0011"&TMH(7 DOWNTO 4);ADDR<="0001";OUTLINE<='0'; WHEN 12=>DATA<="0011"&TMH(3 DOWNTO 0);ADDR<="0010";OUTLINE<='0'; WHEN 13=>DATA<="0011"&TML(7 DOWNTO 4);ADDR<="0100";OUTLINE<='0'; WHEN 14=>DATA<="0011"&TML(3 DOWNTO 0);ADDR<="0101";OUTLINE<='0'; WHEN 15=>DATA<="0011"&MILEH(7 DOWNTO 4);ADDR<="1000";OUTLINE<='0';WHEN 16=>DATA<="0011"&MILEH(3 DOWNTO 0);ADDR<="1001";OUTLINE<='0';WHEN 17=>DATA<="0011"&MILEL(7 DOWNTO 4);ADDR<="1010";OUTLINE<='0';WHEN 18=>DATA<="0011"&MILEL(3 DOWNTO 0);ADDR<="1100";OUTLINE<='0';WHEN 19=>DATA<="00100000";ADDR<="0111";OUTLINE<='1';WHEN 20=>DATA<="0011"&CASHH(7 DOWNTO 4);ADDR<="1000";OUTLINE<='1';WHEN 21=>DATA<="0011"&CASHH(3 DOWNTO 0);ADDR<="1001";OUTLINE<='1';WHEN 22=>DATA<="0011"&CASHL(7 DOWNTO 4);ADDR<="1010";OUTLINE<='1';WHEN 23=>DATA<="0011"&CASHL(3 DOWNTO 0);ADDR<="1100";OUTLINE<='1';WHEN OTHERS=> NULL;END CASE;END PROCESS;END JFQ;四、原理图五、心得体会课程设计刚开始,拿着选定的题目不知如何入手。