地铁自动售票系统

合集下载

地铁站的无人售票系统

地铁站的无人售票系统

地铁站的无人售票系统地铁系统的便利性和高效性使得越来越多的人选择地铁作为通勤方式。

而为了提升乘客的出行体验,地铁站纷纷引入了无人售票系统。

本文将探讨地铁站的无人售票系统对乘客和地铁运营的影响,并分析其优点和挑战。

一、无人售票系统的介绍地铁站的无人售票系统是一种自助售票方式,乘客可以通过自动售票机购买车票。

这种系统通常具备以下功能:购票、充值、查询线路、打印车票等。

乘客只需按照系统提示进行操作,即可完成购票流程。

二、无人售票系统的优点1. 提供便捷购票体验:传统购票方式需要排队等候,而无人售票系统可以避免人流拥堵,缩短售票时间,节省乘客的时间成本。

2. 增强用户隐私保护:在无人售票系统中,乘客可以避免与售票员的直接接触,减少了个人信息泄露的风险。

3. 24小时无间断服务:无人售票系统可以全天候提供服务,无论是白天还是夜晚,乘客都可以方便地购买车票,增加了出行的灵活性。

4. 减少运营成本:无人售票系统可以取代部分人工售票工作,节约了用工成本,降低了地铁站的运营开支。

三、无人售票系统的挑战1. 技术支持要求高:无人售票系统需要依赖先进的技术设备和稳定的网络,任何系统故障都可能会导致售票系统暂时无法使用,给乘客带来不便。

2. 用户操作难度:对于不熟悉科技设备的人来说,使用无人售票系统可能存在一定的困难。

如何提供简洁明了的操作界面和友好的用户指引,是系统设计方面的挑战。

3. 安全隐患:无人售票系统的安全性是一个重要问题。

攻击者可能通过网络漏洞或其他手段攻击系统,篡改票价或窃取乘客信息。

因此,确保系统安全对于无人售票系统的长期稳定运行至关重要。

四、无人售票系统的发展趋势1. 智能化发展:未来无人售票系统有望加入人工智能技术,通过人脸识别、身份验证等技术手段提供更快速和高效的购票体验。

2. 多元化支付方式:除了传统的现金和刷卡支付,无人售票系统将更加广泛地接受移动支付、二维码支付等多种支付方式,方便乘客选择。

地铁车站自动售检票系统

地铁车站自动售检票系统

3.检票
检票指乘客所持车票在进出站时接受检票处理,检票又分 进站检票和出站检票。
1)进站检票
进站时,单程票和储值票将分别作如下处理。单程票:读 取单程票信息,经确认有效后,将被写上进站时间、地点 、车站代码和检票机代码等信息。储值票:将被写上进站 时间、地点、车站代码和检票机代码等信息。
2)出站检票
1)单程票
单程票只限于在轨道交通一次性使用。单程票可通过 自动售票机和半自动售票机出售。单程票在出售时写 入金额,在乘客出站时单程票被出站检票机回收,并 被写上回收信息。单程票在发售当天、当站进站有效 ,当实际使用金额小于购票金额时,不返还车票余额 ;当实际使用金额大于购票金额时,乘客应补票,才 能出站。
任务一 车票 任务二 自动售检票系统的组成 任务三 自动售票机 任务四 半自动售票机 任务五 自动检票机 任务六 自动售检票系统其它设备
引入
乘客乘坐城市轨道交通出行的过程包括进站、购票 、检票、乘车和出站几个阶段。为旅客提供售检票服务 的设备及其背后支持的一整套庞大的系统称为自动售检 票系统,简称AFC系统。
2.磁道的定义
磁道的一般定义如下。
(1)磁道Track1。它的数据标准最初是由“国际航空运输 协会”制定的。磁道Track1上的数据和字母记录了航空运 输中的自动化信息,例如货物标签信息、交易信息、机票 订票/订座情况等。
(2)磁道Track2。它的数据标准最初是由“美国银行家协 会”制定的。该磁道上的信息已经被当今很多的银行系统 所采用。它包含了一些最基本的相关信息,例如卡的唯一 识别号码、有效期等。
出站时,单程票和储值票将分别作如下处理。单程票:如 果车票有效,则通过出站检票机回收;如车票无效,退还 给乘客并提示乘客补票。储值票:由检票机读写器对卡进

地铁afc

地铁afc

地铁afc一、引言地铁(Metro)是一种高速高容量的城市公共交通工具,被广泛应用于全球各大城市。

为了确保地铁系统的安全和高效运营,地铁自动售票系统(Automatic Fare Collection,简称AFC)被引入。

AFC是一种用于收取地铁乘客票款的技术手段,其包括了自动售票机、地铁门禁系统以及后台数据管理系统等。

本文将对地铁AFC系统进行详细介绍。

二、地铁AFC系统的组成地铁AFC系统由以下几个组成部分构成:1. 自动售票机(Ticket Vending Machine,TVM):自动售票机是乘客购买地铁票的主要设备。

它通常安装在地铁站的售票大厅或入口处,提供各种购票方式,例如现金、信用卡、电子钱包等。

乘客只需按照屏幕上的提示,选择购票方式并支付相应费用,便可获取地铁乘车证。

2. 地铁门禁系统(Ticket Gate System,TGS):地铁门禁系统是用于控制地铁入口和出口的设备,主要用于验证乘客是否已购买有效车票。

当乘客持有效车票接近门禁系统时,系统会自动辨别票的有效性,并开启相应的闸门,方便乘客进入或离开地铁站。

3. 后台数据管理系统:后台数据管理系统是地铁AFC系统的核心,负责存储和处理所有与票款相关的数据。

它能够实时监控各个地铁站点的票款收入情况,并进行统计、分析和报告,为地铁管理部门提供有价值的数据支持,用于决策和优化地铁运营。

三、地铁AFC系统的优势地铁AFC系统带来了诸多优势,对地铁运营和乘客体验都具有积极的影响。

1. 提高乘客出行效率:地铁AFC系统使购票和通过门禁变得更加快捷和便利,减少了排队时间,提高了地铁乘车效率。

2. 降低票款流失风险:由于地铁AFC系统的自动化和数字化特点,票款的收取与管理过程更加规范和透明,有效减少了票款流失的风险。

3. 数据化运营管理:通过后台数据管理系统实时监控票款收入情况,地铁管理部门能够及时了解各个站点的客流状况、热点区域分布等信息,从而进行合理的运营和调整。

地铁AFC售票系统操作注意事项

地铁AFC售票系统操作注意事项

地铁AFC售票系统操作注意事项地铁AFC(Automatic Fare Collection)售票系统操作注意事项随着城市发展和人口增加,地铁作为一种方便快捷的交通工具被越来越多的人所使用。

为了提高地铁系统的运营效率和便民程度,地铁公司引入了自动售票系统(Automatic Fare Collection,简称AFC),以替代传统的人工售票方式。

本文将介绍一些地铁AFC售票系统操作注意事项,帮助乘客更好地使用该系统。

首先,顾客需要了解地铁AFC售票系统的基本流程。

一般而言,AFC售票系统由地铁售票窗口、自动售票机和刷卡设备组成。

乘客可以选择购买单程票、月票或一些特殊票种,根据自身需求选择适合的票种。

当乘客选择自动售票机购买票时,需要注意以下几点。

首先,在选择票种时,乘客应仔细查看票价信息和有效期限,以免购买错误或过期票。

其次,乘客应准备好现金或银行卡,确保支付方式的顺利进行。

在支付过程中,要注意保护自己的银行卡密码,避免被他人窃取或非法使用。

最后,在购票完成后,务必记得取回购票凭证和零钞,并检查票面信息是否正确。

对于使用刷卡设备乘坐地铁的乘客,也需要注意以下几点。

首先,在刷卡前,乘客应确认自己的实体卡或手机支付功能是否携带且已开启,并确保卡内余额充足。

如果使用实体卡,还要确保卡片没有损坏,以免刷卡失败。

其次,在刷卡设备前,要保持安静并排队等候,不要过度挤压或推挤他人。

在刷卡时,应将卡片或手机支付功能对准读卡器,确保刷卡成功。

同时,刷卡后还要留意屏幕上的扣费信息是否正确,并记得按时下车时刷卡退卡,以免造成过度扣费。

此外,在使用地铁AFC售票系统时,乘客还需要注意以下几点。

首先,乘客应尽量避开繁忙时间段,选择人流相对较少的时间出行,以减少排队等候的时间。

其次,乘客在进站时要随时关注站内及车厢内的公告信息,确保自己乘坐的是正确的列车。

在进站后,也要注意站内指示牌和标示,确保按指定路径前往月台或乘车口。

城市轨道交通自动售检票系统概述共51张PPT课件

城市轨道交通自动售检票系统概述共51张PPT课件

(一)城市轨道交通AFC系统的内涵 人性化 客流导向 社会效益 提供信息支持 提高运行效率 强化安全管理 提升形象
(二)AFC系统的信息技术
AFC系统是涉及机电一体化、信息识别、信息处理、信息安全、信息管理、网络通信、数据库、智能卡、嵌入式、过程控制、测试、仿真、图象处理、操作系统和集成等多种技术的大型信息系统。
(3)无法充值 原因:储值卡读卡器没有正确连接。 解决办法:正确连接储值卡读卡器。 (4)屏幕显示“网络连接失败” 原因:网络出现故障。 解决办法:请检查半自动售票机和服务器之间的网络连接是否正常;检查系统服务器软件是否正常运行。 (5)乘客显示器没有显示 原因:乘客显示器电源没有打开或者连接错误。 解决办法:打开乘客显示器电源或者检查线缆连接情况。
购票选择
允许投币
取消交易
投币金额足够?
需要找零?
出票
找零处理
保存交易记录
退还已投入现金
YES
NO
YES
退还已投入现金
NO
YES
①机箱 ②“召援”按钮(“求助”按钮) ③整机状态指示器 显示设备工作状态的部件,如暂停服务等。 ④硬币、纸币入币口、储值卡(或银行卡)投入口 进行购票操作时,从硬币入币口投入硬币,纸币入币口投入纸币,储值卡投入口插入储值卡。 ⑤照明设备 为乘客操作和维护工作提供照明。 ⑥乘客显示器和红外触摸屏 ⑦出票口和找零口 从此处吐出车票和找零款。 ⑧打印凭条口 用储值卡(或银行卡)购票需打印消费凭条时从此处取凭条
自动增(加)值机通常安装在非付费区,用于乘客自助完成对储值票的增值,通常自动增(加)值机还可以提供车票查验等其他服务。 自动增(加)值机一般由乘客显示器、触摸屏、IC车票读写器及天线、纸币处理单元、主控单元、维修面板/移动维护终端接口、乘客接近传感器、机身、支持软件、电模块(含UPS或电池)和票据打印机等部件组成。

轨道交通自动售检票系统(AFC)系统

轨道交通自动售检票系统(AFC)系统
和定值票类似,但票价会有优惠,只能发售给特定范围内的乘客。
发售给特定乘客,如老人、残疾人等,每次乘车都免费。
乘客一次购买,可以进出闸特定次数。乘客乘车只算次数,不算票 价。 为了纪念特定事件而特别发行的定值票。票卡图案特制,一般不能 充值。其它和定值票一致。
由轨道交通运营公司员工使用的票卡。由于员工与乘客有本质的区 别,一般员工票都有特殊的进出闸需求。
票卡定义
轨道交通 专用票卡
非轨道交通 专用票卡
二、票务政策——票种
单程票 出站票 定值票 优惠票 免费票 乘次票 纪念票 员工票 测试票 限时票
备用票种
票卡特点
由乘客直接购买,只能进出闸一次,出闸回收。
在特殊情况下,如丢失单程票、单程票损坏等,由工作人员处理后 发给乘客,用于当站出闸的票卡。
乘客一次购买,可以多次进出闸。票卡钱包值上限确定,用完钱包 后可充值。
11
四、设备简介——E/S功能
编码分拣机(ES) ❖ 初始化、赋值 ❖ 重编码 ❖ 分拣
四、设备简介——BOM功能
车站终端设备-票房售票机(BOM)
❖ 发售单程票、储值票 ❖ 分析、更新车票 ❖ 行政处理 ❖ 退款、解锁、延期
四、设备简介——TVM功能
车站终端设备-自动售票机(TVM) ❖ 设备监控 ❖ 发售单程票 ❖ 纸币、硬币找零 ❖ 上传交易收益数据、下载参数
四、设备简介——TVM内部结构
乘客/维护照明装置 喇叭 硬币投入口 招援按钮 维护面板 主控单元 取票/硬币找零口
硬币回收钱箱 单程票发售模块
UPS电源
运行状态显示器
储值卡插入口(预留) 银行卡插入口(预留) 纸币入币口 硬币处理模块
纸币处理模块 人体感应器 收据打印机 加热器 电源箱

地铁自动售票机使用方法

地铁自动售票机使用方法

地铁自动售票机使用方法
地铁自动售票机的使用方法如下:
1. 选择目的地车站:在屏幕主界面显示地铁线路及站点图,乘客点击目的地车站名称。

2. 定义车票:选择车票数量(系统缺省默认为一张),然后屏幕显示车票单价、张数、总支付金额、已收金额等信息。

3. 支付:乘客可以选择现金付款或使用储值卡。

硬币接收为一元币种,纸币接收为5元或10元币种。

乘客也可用储值卡来付款,自动售票机读写器先判断储值卡内余额是否充足,若充足则扣去相应的钱款数额。

对于银行卡及信用卡支付票款,目前只留有接口,以备今后系统升级。

4. 取票:一旦售票机判断乘客支付足额立即开始编码车票,然后发放车票并找零,完成售票。

5. 求助:如果乘客有其他需求,或在购票过程中有什么问题,可通过设在自动售票机旁的求助按钮向工作人员求助。

通过以上步骤,您可以在地铁自动售票机上完成购票过程。

如有任何问题,您可以直接向地铁站工作人员寻求帮助。

地铁自动售票机简介

地铁自动售票机简介

地铁自动售票机简介1. 简介地铁自动售票机(Automatic Ticketing Machine,ATM)是地铁站常见的一种自助售票设备。

它通过触摸屏界面和打印机,为乘客提供多种购票方式,并实现自助购票、取票、余额查询等功能。

地铁自动售票机的出现,大大提高了地铁乘客购票的便利性和效率,减少了人工售票带来的排队等待时间。

2. 功能地铁自动售票机通常具备以下主要功能:2.1 车票购买乘客可以使用地铁自动售票机购买地铁车票。

自动售票机提供多种支付方式,包括现金、银行卡、手机支付等。

乘客可以根据需要选择适合自己的支付方式,并按照界面提示操作完成购票过程。

购票后,地铁自动售票机会打印并输出相应的车票。

2.2 余额查询和充值地铁自动售票机也提供余额查询和充值功能。

乘客可以通过界面操作查询自己的余额情况,也可以选择充值的方式增加余额。

这使得地铁乘客可以在更加方便的地方进行余额查询和充值操作,减少了排队等待时间。

2.3 乘车优惠及活动地铁自动售票机通常会显示当地乘车的各种优惠政策及活动,例如学生票、老年票、团体票等。

乘客可以在购票过程中选择适合自己的优惠,享受相应的乘车优惠。

这样不仅方便了乘客,也提高了相关优惠政策的使用率。

2.4 语言和界面选择地铁自动售票机通常支持多种语言和界面选择。

这意味着不同地区的乘客可以选择自己熟悉的语言进行购票操作,增加了使用的便利性和用户体验。

3. 优势3.1 方便快捷地铁自动售票机的最大优势在于其方便快捷的购票流程。

乘客不再需要排队等待人工售票,通过简单的操作即可快速完成购票过程。

这大大减少了排队时间,提高了乘客的出行效率。

3.2 24小时运行地铁自动售票机一般全天候开放,24小时不间断地为乘客提供服务。

不受时间限制的运行,使得乘客可以随时购票,自由选择出行时间。

尤其对于早晚高峰期,地铁自动售票机的运行能够有效缓解客流压力,提供更好的购票体验。

3.3 多种支付方式地铁自动售票机支持多种支付方式,满足乘客的不同需求。

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

数字电路综合设计实验报告——地铁自动售票系统一、设计课题的任务要求基本要求:1、地铁票价统一为每张两元,只能投入币值为五元的人民币进行购票。

2、能够开机自检,检验显示器件正常。

3、通过按键开关BTN输入购票张数和投入的人民币张数并恰当显示相应信息。

4、设置适当的声音提示或显示提示表示取票和找零。

5、一次购票成功后系统能够恰当地转入下一次购票状态。

6、系统能够复位。

提高要求:将投币种类增加为1元、5元、10元三种。

二、系统设计1.设计思路地铁售票系统按要求需要有购票张数输入,投入1元,5元,10元张数输入,出票提示输出,找零输出,开机自检,复位和循环购票几项功能。

由于BTN按键开关每次按下就会产生一个正脉冲,因此我决定对所需的4个按键开关进行防抖处理,检测按下次数,购票张数和投入1元,5元,10元张数分别对应ticket,RMB1,RMB5,RMB10.票数和投入的总的货币数分别用模三的向量和一个模四的向量进行累加,同时将其设为全局信号,利用数码管将其同步显示。

同时我将购票过程分为以下几个状态:(1)xianshi_state(开机自检状态,当检测到复位键后进入下一状态)(2)waiting_state(等待状态,当按下买票按键式开始买票)(3)select_state(选票状态,输入购票张数,确定进入下一状态,取消返回等待状态)(4)insert_state(投币状态,投入钱币,点击购票键进入下一状态)(5)titcket_state(出票状态,显示输出的票数)(6)change_state(找零状态,显示购票后的余额)因此设有一个主进程即为状态机转移进程,实现按键的检测和状态的转移,完成开机自检及循环购票的功能。

2.总体框图:是清零,端口清零,回到等待状态。

状态转移图no='1' no='1'对外接口clksell(投1元)BTN0 led 出票信号(投5元 ) BTN1 (投10元) BTN2(票数) BTN3 蜂鸣找零信号(取消) BTN4 (确定) BTN5(buy )BTN6(复位)BTN7三.仿真波形及波形分析基本要求买2张票,投入1张5元货币 最终出票显示为2张,找零为1元显示结果前11显示结果后在订票过程中点击取消:回到初始的等待状态显示结果前显示结果后投入钱币后取消:投入一张5元后取消,退出投入的5元,并回到等待状态显示结果前显示结果后提高要求后仿真:买3张票后投入一张5元货币,一张10元货币。

出票口出3张票,找零9元,回到等待状态显示结果前显示结果后买3张票后只投入5元由于钱不足买票,状态指示afford会亮四、源程序library ieee;use ieee.std_logic_1164.all;use ieee.std_logic_unsigned.all;entity subway isport(clk :in std_logic;buy : in std_logic;yes : in std_logic;no : in std_logic;RMB1:in std_logic;RMB5:in std_logic;RMB10:in std_logic;ticket:in std_logic;f:out std_logic_vector(6 downto 0);sell:out std_logic_vector(5 downto 0);ticket_out : out std_logic_vector(2 downto 0);change_out : out std_logic_vector(3 downto 0);present_state : out std_logic;a,b,c,d:out std_logic:='0';speak:out std_logic;reset:in std_logic;start:in std_logic;--RMB5_in,RMB10_in:out std_logic;afford:out std_logic);end subway;architecture behave of subway istype state_type is (xianshi_state,waiting_state,select_state,insert_state,ticket_state, change_state);signal state:state_type;signal clk_out100,clk_out200:std_logic;signal ticket_in,RMB1_in,RMB5_in,RMB10_in:std_logic;signal tmp1:integer range 0 to 24999;signal tmp2:integer range 0 to 1;signal tickettemp,RMB1temp,RMB5temp,RMB10temp:std_logic;signal tickettempp,RMB1tempp,RMB5tempp,RMB10tempp:std_logic;signal ticket_count:std_logic_vector(2 downto 0);signal total_money:std_logic_vector(3 downto 0);signal speak_r:std_logic;signal qian:std_logic_vector(3 downto 0);beginp1:process(clk)beginif (clk'event and clk='1') thenif tmp1=24999 thentmp1<=0;elsetmp1<=tmp1+1;end if;end if;end process p1;p11:process(clk_out200)beginif (clk_out200'event and clk_out200='1') thenif tmp2=1 thentmp2<=0;elsetmp2<=tmp2+1;end if;end if;end process p11;p2:process(tmp1,tmp2)beginif tmp1=24999 thenclk_out200<='1';elseclk_out200<='0';end if ;if tmp2=1 thenclk_out100<='1';elseclk_out100<='0';end if;end process p2;--process(clk)--begin--clk_out100<=clk;--clk_out200<=clk;--end process;p3:process(clk_out100,RMB1,RMB5,RMB10)beginIF (clk_out100'EVENT AND clk_out100='0') THENRMB1tempp<=RMB1temp;RMB1temp<= RMB1;RMB5tempp<=RMB5temp;RMB5temp<= RMB5;RMB10tempp<=RMB10temp;RMB10temp<= RMB10;tickettempp<=tickettemp;tickettemp<= ticket;END IF;RMB1_in<=clk_out100 AND RMB1temp AND (NOT RMB1tempp);RMB5_in<=clk_out100 AND RMB5temp AND (NOT RMB5tempp);RMB10_in<=clk_out100 AND RMB10temp AND (NOT RMB10tempp);ticket_in<=clk_out100 AND tickettemp AND (NOT tickettempp); END PROCESS p3;process(clk_out100,RMB1_in,RMB5_in,RMB10_in)beginIF (clk_out100'EVENT AND clk_out100='1') THENif(buy='1') thenticket_count<="000";total_money<="0000";end if;if(no='1') thenticket_count<="000";total_money<="0000";end if;if(reset='1') thenticket_count<="000";total_money<="0000";end if;if (ticket_in='1') thena<='1';ticket_count<=ticket_count+"001";end if ;if (RMB1_in='1') thenc<='1';total_money<=total_money+"0001";end if;if (RMB5_in='1') thenb<='1';total_money<=total_money+"0101";end if;if (RMB10_in='1') thend<='1';total_money<=total_money+"1010";end if;end if;end process;p4:process(clk_out100,total_money,ticket_count)variable flag:std_logic;variable sign:std_logic:='0';variable total_price:std_logic_vector(3 downto 0);variable temp:std_logic_vector(3 downto 0);variable total_money1:std_logic_vector(3 downto 0);variable ticket_temp:std_logic_vector(2 downto 0);variable i,j,k:integer range 0 to 999;variable m:integer range 0 to 999;variable beep:integer range 0 to 10;beginspeak<=speak_r;IF (clk_out100'EVENT AND clk_out100='1') THENcase state iswhen xianshi_state=>speak_r<='0';present_state<='1';flag:='0';temp:="0000";total_price:="0000";ticket_out<="111";change_out<="1111";present_state<='1';i:=0;ticket_temp:="000";total_money1:="0000";if (reset='1') thenstate<=waiting_state;elsestate<=xianshi_state;end if;when waiting_state=>speak_r<='0';present_state<='0';flag:='0';temp:="0000";total_price:="0000";ticket_out<="000";change_out<="0000";qian<="0000";i:=0;j:=0;k:=0;ticket_temp:="000";total_money1:="0000";if(reset='1') thenstate<=waiting_state;end if;if (buy='1') thenpresent_state<='1';state<=select_state;elsestate<=waiting_state;end if;when select_state=> speak_r<='0';case ticket_count is when "001"=>total_price:="0010"; ticket_temp:="001"; when "010"=>total_price:="0100"; ticket_temp:="010"; when "011"=>total_price:="0110"; ticket_temp:="011"; when "100"=>total_price:="1000"; ticket_temp:="100"; when "101"=>total_price:="1010"; ticket_temp:="101"; when "110"=>total_price:="1100"; ticket_temp:="110"; when "111"=>total_price:="1110"; ticket_temp:="111"; when others=>end case;if(reset='1') thenstate<=waiting_state;end if;if (no='1') thenstate<=waiting_state;end if;if (yes='1') thenstate<=insert_state;end if;when insert_state =>speak_r<='0';-- if (total_price>total_money) then--if(m<499) then--present_state<='0';--m:=m+1;--elsif(m=999) then--m:=0;--else--m:=m+1;--present_state<='1';--end if;--end if;if(reset='1') thenstate<=waiting_state;end if;total_money1:=total_money;if (no='1') thenstate<=change_state;flag:='1';end if;if (buy='1') thenif (total_price>total_money1) then state<=change_state;flag:='1';elsestate<=ticket_state;end if;end if;when ticket_state=>if(reset='1') thenstate<=waiting_state;end if;if(i=999) thenstate<=change_state;elsefor beep in 0 to 4 loop speak_r<='1'; end loop;i:=i+1;ticket_out<=ticket_temp;afford<='0';end if;when change_state=>for beep in 0 to 4 loop speak_r<='1'; end loop;if(reset='1') thenstate<=waiting_state;end if;temp:=total_money1-total_price;if(flag='1') thenif(j=999) thenstate<=waiting_state;elsej:=j+1;change_out<=total_money1;qian<=total_money1;end if;elsif (temp="0000") thenstate<=waiting_state;elseif(k=999) thenstate<=waiting_state;elsek:=k+1;change_out<=temp;qian<=temp;end if;end if ;end case;end if;end process;p5:process(clk_out200,ticket_count,total_money) variable i:integer range 0 to 2;variable j:integer range 0 to 1;variable k:integer range 0 to 1;beginIF (clk_out200'EVENT AND clk_out200='1') THEN if(i=0) theni:=1;case ticket_count iswhen "000"=> f<="0111111";sell<="111110"; when"001"=> f<="0000110";sell<="111110"; when"010"=> f<="1011011";sell<="111110"; when"011"=> f<="1001111";sell<="111110"; when "100"=> f<="1100110";sell<="111110"; when"101"=> f<="1101101";sell<="111110"; when "110"=> f<="1111101";sell<="111110"; when"111"=> f<="0000111";sell<="111110";end case;elsif (i=1) theni:=2;case qian iswhen "0000"=>if (j=1) thenf<="0111111";sell<="101111";j:=0;elsej:=j+1;f<="0111111";sell<="011111";end if;when"0001"=>if (j=1) thenj:=0;elsej:=j+1;f<="0111111";sell<="011111";end if; when"0010"=>if (j=1) thenf<="1011011";sell<="101111";j:=0;elsej:=j+1;f<="0111111";sell<="011111";end if; when"0011"=>if (j=1) thenf<="1001111";sell<="101111";j:=0;elsej:=j+1;f<="0111111";sell<="011111";end if;when "0100"=>if (j=1) thenf<="1100110";sell<="101111";j:=0;elsej:=j+1;f<="0111111";sell<="011111";end if; when"0101"=>if (j=1) thenf<="1101101";sell<="101111";j:=0;elsej:=j+1;f<="0111111";sell<="011111";end if;when "0110"=>if (j=1) thenf<="1111101";sell<="101111";j:=0;elsej:=j+1;end if; when"0111"=>if (j=1) thenf<="0000111";sell<="101111";j:=0;elsej:=j+1;f<="0111111";sell<="011111";end if;--when others=>null;when "1000"=>if (j=1) thenf<="1111111";sell<="101111";j:=0;elsej:=j+1;f<="0111111";sell<="011111";end if; when"1001"=>if (j=1) thenf<="1101111";sell<="101111";j:=0;elsej:=j+1;f<="0111111";sell<="011111";end if; when"1010"=>if (j=1) thenf<="0111111";sell<="101111";j:=0;elsej:=j+1;f<="0000110";sell<="011111";end if; when"1011"=>if (j=1) thenf<="0000110";sell<="101111";j:=0;elsej:=j+1;f<="0000110";sell<="011111";end if; when"1100"=>if (j=1) thenf<="1011011";sell<="111011";j:=0;elsej:=j+1;f<="0000110";sell<="110111";end if;when"1101"=>if (j=1) thenf<="1001111";sell<="101111";j:=0;elsej:=j+1;f<="0000110";sell<="011111";end if;when"1110"=>if (j=1) thenf<="1100110";sell<="101111";j:=0;elsej:=j+1;f<="0000110";sell<="011111";end if;when"1111"=>if (j=1) thenf<="1101101";sell<="101111";j:=0;elsej:=j+1;f<="0000110";sell<="011111";end if;end case;elsei:=0;case total_money iswhen "0000"=>if (k=1) thenf<="0111111";sell<="111011";k:=0;elsek:=k+1;f<="0111111";sell<="110111";end if;when"0001"=>if (k=1) thenf<="0000110";sell<="111011";k:=0;elsek:=k+1;f<="0111111";sell<="110111";end if; when"0010"=>if (k=1) thenf<="1011011";sell<="111011";k:=0;elsek:=k+1;f<="0111111";sell<="110111";end if; when"0011"=>if (k=1) thenf<="1001111";sell<="111011";k:=0;elsek:=k+1;f<="0111111";sell<="110111";end if;when "0100"=>if (k=1) thenf<="1100110";sell<="111011";k:=0;elsek:=k+1;f<="0111111";sell<="110111";end if; when"0101"=>if (k=1) thenf<="1101101";sell<="111011";k:=0;elsek:=k+1;f<="0111111";sell<="110111";end if;when "0110"=>if (k=1) thenf<="1111101";sell<="111011";k:=0;k:=k+1;f<="0111111";sell<="110111";end if; when"0111"=>if (k=1) thenf<="0000111";sell<="111011";k:=0;elsek:=k+1;f<="0111111";sell<="110111";end if;--when others=>null;when "1000"=>if (k=1) thenf<="1111111";sell<="111011";k:=0;elsek:=k+1;f<="0111111";sell<="110111";end if; when"1001"=>if (k=1) thenf<="1101111";sell<="111011";k:=0;elsek:=k+1;f<="0111111";sell<="110111";end if; when"1010"=>if (k=1) thenf<="0111111";sell<="111011";k:=0;elsek:=k+1;f<="0000110";sell<="110111";end if; when"1011"=>if (k=1) thenf<="0000110";sell<="111011";k:=0;elsek:=k+1;f<="0000110";sell<="110111";when"1100"=>if (k=1) thenf<="1011011";sell<="111011";k:=0;elsek:=k+1;f<="0000110";sell<="110111";end if;when"1101"=>if (k=1) thenf<="1001111";sell<="111011";k:=0;elsek:=k+1;f<="0000110";sell<="110111";end if;when"1110"=>if (k=1) thenf<="1100110";sell<="111011";k:=0;elsek:=k+1;f<="0000110";sell<="110111";end if;when"1111"=>if (k=1) thenf<="1101101";sell<="111011";k:=0;elsek:=k+1;f<="0000110";sell<="110111";end if;end case;end if;end if;end process;end behave;五.功能说明地铁自动售票系统,主要实现了地铁自动售票功能,投入1元、5元、10元功能,开机自检功能,投币不足提示功能和正常的输出地铁票和余额功能。

相关文档
最新文档