EDA技术课程设计出租车自动计费系统.doc

上传人:文库蛋蛋多 文档编号:4135400 上传时间:2023-04-07 格式:DOC 页数:16 大小:438KB
返回 下载 相关 举报
EDA技术课程设计出租车自动计费系统.doc_第1页
第1页 / 共16页
EDA技术课程设计出租车自动计费系统.doc_第2页
第2页 / 共16页
EDA技术课程设计出租车自动计费系统.doc_第3页
第3页 / 共16页
EDA技术课程设计出租车自动计费系统.doc_第4页
第4页 / 共16页
EDA技术课程设计出租车自动计费系统.doc_第5页
第5页 / 共16页
点击查看更多>>
资源描述

《EDA技术课程设计出租车自动计费系统.doc》由会员分享,可在线阅读,更多相关《EDA技术课程设计出租车自动计费系统.doc(16页珍藏版)》请在三一办公上搜索。

1、课 程 设 计课 程 EDA技术课程设计 题 目 出租车自动计费系统 院 系 电子科学学院 专业班级 电子信息工程 学生姓名 学生学号 指导教师 东北石油大学课程设计任务书课程 EDA技术课程设计题目 出租车自动计费系统专业 电子信息工程 姓名 宋延龙 学号 070901140316主要内容、基本要求、主要参考资料等主要内容:设计一个最大量程为99.99元的出租车自动计费,计费器具有行车里程计费、等候时间计费及起价三部分功能,并用数码管显示车费的数目。基本要求:1、设计一个出租车自动计费器,具有行车里程计费、等候时间计费、及起价三部分,用四位数码管显示总金额,最大值为99.99元;2、行车里程

2、单价1元/公里,等候时间单价0.5元/10分钟,起价3元(3公里起价)均能通过人工输入。3、行车里程的计费电路将汽车行驶的里程数转换成与之成正比的脉冲数,然后由计数译码电路转换成收费金额,实验中以一个脉冲模拟汽车前进十米,则每100个脉冲表示1公里,然后用BCD码比例乘法器将里程脉冲乘以每公里单价的比例系数,比例系数可由开关预置。例如单价是1.0元/公里,则脉冲当量为0.01元/脉冲。4、用LED显示行驶公里数,两个数码管显示收费金额。主要参考资料:1 潘松著.EDA技术实用教程(第二版). 北京:科学出版社,2005.2 康华光主编.电子技术基础 模拟部分. 北京:高教出版社,2006.3

3、阎石主编.数字电子技术基础. 北京:高教出版社,2003. 完成期限 2011.3.11 指导教师 专业负责人 2011年 3月7日一、总体设计思想1.基本原理随着出租车行业的发展,出租车已经是城市交通的重要组成部分,从加强行业管理以及减少司机与乘客的纠纷出发,具有良好性能的计价器对出租车司机和乘客来说都是很必要的。而采用模拟电路和数字电路设计的计价器整体电路的规模较大,用到的器件多,造成故障率高,难调试。而采用单片机进行的设计,相对来说功能强大,用较少的硬件和适当的软件相互配合可以很容易地实现设计要求,且灵活性强,可以通过软件编程来完成更多的附加功能。本设计采用AT89S52单片机为主控器,

4、以A44E霍尔传感器测距,实现对出租车的多功能的计价设计,输出采用8段数码显示管。大体设计思路为把传感器安装在车轮上,主要检测汽车行进的公里数,并产生一系列相应的脉冲输出,脉冲送到单片机进行处理,单片机根据程序设定通过计算脉冲数换算出行驶公里数,再根据从EEPROM中读取的价格等相关数据进行金额的计算,计算好的金额、里程和单价都实时地显示在数码管上。独立键盘可以调节价格等相关数据,按下相应的按钮,产生信号交由单片机处理并实时显示出来,调节好的数据存储到EEPROM中,掉电后可以使调好的数据不丢失,系统结构图如图。2.设计框图根据计费器设计要求,可将该系统分成四大模块,一块为计费模块,一块为时间

5、计时模块,一块为路程控制模块,另一块为输出显示模块。速度控制模块路程控制模块计费模块扫描显示模块二、设计步骤和调试过程1、总体设计电路 主控机系统采用了Atmel 公司生产的 AT89S52单片机,它含有256 字节数据存储器,内置8K 的电可擦除FLASH ROM,可重复编程,大小满足主控机软件系统设计,所以不必再扩展程序存储器。复位电路和晶振电路是AT89S52 工作所需的最简外围电路。单片机最小系统电路图如下图所示。2、模块设计和相应模块程序2.1速度控制程序如下:LIBRARY IEEE;USE IEEE.STD_LOGIC_1164.ALL;USE IEEE.STD_LOGIC_UN

6、SIGNED.ALL;entity sudukongzhi isport(clk,reset,start:in std_logic; k:in std_logic_vector(2 downto 0); clkout:out std_logic);end sudukongzhi;ARCHITECTURE FUN OF sudukongzhi IS signal count1:std_logic_vector(1 downto 0); signal tmpclk,clks:std_logic; begin kinside=000-k; clks_label: process(reset,clk)

7、 variable count2:std_logic_vector(2 downto 0); begin if reset=0 then count2:=000; elsif (clkevent and clk=1) then if start=1 then if count2=kinside then count2:=000; end if; if not(k=000) then count2:=count2+1; end if; if count2=001 then tmpclk=not tmpclk; end if;end if;end if;end process; clkout=tm

8、pclk;end FUN;2.2路程控制程序如下:LIBRARY IEEE;USE IEEE.STD_LOGIC_1164.ALL;USE IEEE.STD_LOGIC_UNSIGNED.ALL;USE IEEE.STD_LOGIC_ARITH.ALL;ENTITY luchengkongzhi ISPORT(clk,reset:in std_logic; lucheng1:out std_logic_vector(3 downto 0); lucheng2:out std_logic_vector(3 downto 0);end luchengkongzhi;ARCHITECTURE FUN

9、 OF luchengkongzhi ISbegin process(clk,reset) variable mm:std_logic_vector(11 downto 0); begin if reset=0 then elsif clkevent and clk=1 then if mm(3 downto 0)=1001then mm:=mm+7; else mm:=mm+1; end if; if mm(7 downto 4)=1010then mm:=mm+01100000; end if; if mm(11 downto 8)=1010then mm:=mm+011000000000

10、; end if; end if; lucheng1=mm(3 downto 0); lucheng2=mm(7 downto 4); lucheng3=mm(11 downto 8); end process;end FUN; 2.3计费模块程序如下:LIBRARY IEEE;USE IEEE.STD_LOGIC_1164.ALL;USE IEEE.STD_LOGIC_UNSIGNED.ALL;USE IEEE.STD_LOGIC_ARITH.ALL;ENTITY jifeimokuai ISPORT(clk,reset:in std_logic; judge2:in std_logic_v

11、ector(3 downto 0); judge3:in std_logic_vector(3 downto 0); jifei1:out std_logic_vector(3 downto 0); jifei2:out std_logic_vector(3 downto 0); jifei3:out std_logic_vector(3 downto 0); jifei4:out std_logic_vector(3 downto 0);end jifeimokuai;ARCHITECTURE FUN OF jifeimokuai ISSIGNAL en:STD_LOGIC;signal s

12、houfei:std_logic_vector(7 downto 0);signal shoufeijishu:std_logic_vector(15 downto 0);begin shoufei=00110011when(shoufeijishu(15)=1) or(shoufeijishu(14)=1) or(shoufeijishu(13)=1) else00100010;en=0 when judge3=0000 and judge2(3 downto 2)=00 and (judge2(1)=0)or (judge2(1)=1 and judge2(0)=0) else 1; pr

13、ocess(clk,reset) variable mm:std_logic_vector(15 downto 0); begin if reset=0then mm:=0000011100000000; elsif clkevent and clk=1 then if en=1 then mm:=mm+shoufei; end if; if mm(3)=1 and (not(mm(2 downto 1)=00)then mm:=mm+6; end if; if mm(7)=1 and (not(mm(6 downto 5)=00)then mm:=mm+01100000; end if; i

14、f mm(11)=1 and (not(mm(10 downto 9)=00)then mm:=mm+011000000000; end if; if mm(15 downto 12)=1010then mm:=mm+0110000000000000; end if; end if; jifei1=mm(3 downto 0); jifei2=mm(7 downto 4); jifei3=mm(11 downto 8); jifei4=mm(15 downto 12); shoufeijishu=mm; end process; end FUN;2.4扫描显示模块程序如下:LIBRARY IE

15、EE;USE IEEE.STD_LOGIC_1164.ALL;USE IEEE.STD_LOGIC_UNSIGNED.ALL;entity xianshimokuai isport(clk:in std_logic; p8:in std_logic_vector(3 downto 0); p7:in std_logic_vector(3 downto 0); p6:in std_logic_vector(3 downto 0); p5:in std_logic_vector(3 downto 0); p4:in std_logic_vector(3 downto 0); p3:in std_l

16、ogic_vector(3 downto 0); p2:in std_logic_vector(3 downto 0); p1:in std_logic_vector(3 downto 0); xuanze:out std_logic_vector(7 downto 0); shuzhi:out std_logic_vector(7 downto 0);end entity;ARCHITECTURE FUN OF xianshimokuai IS signal count:std_logic_vector(2 downto 0); signal tmp:std_logic_vector(3 d

17、ownto 0); signal choicein:std_logic_vector(7 downto 0); signal datain:std_logic_vector(7 downto 0);begin clk1_label: process(clk) begin if clkevent and clk=1 then count=count+1; end if; end process; clk2_label: process(clk) begin if clkevent and clk=0 then xuanze=choicein; shuzhi(7 downto 1)=datain(

18、7 downto 1); if(count=0110 or count=0010) then shuzhi(0)=1; else shuzhi(0)=0; end if; end if; end process; choicein=11111110 when count=000else 11111101 when count=001else 11111011 when count=010else 11110111 when count=011else 11101111 when count=100else 11011111 when count=101else 10111111 when co

19、unt=110else 01111111; tmp=p1 when count=000else p2 when count=001else p3 when count=010else p4 when count=011else p5 when count=100else p6 when count=101else p7 when count=110else p8; with tmp select datain(7 downto 1)=1111110 when 0000, 0110000 when 0001, 1101101 when 0010, 1111001 when 0011, 01100

20、11 when 0100, 1011011 when 0101, 1011111 when 0110, 1110000 when 0111, 1111111 when 1000, 1111011 when 1001, 1110111 when 1010, 0011111 when 1011, 1001110 when 1100, 0111101 when 1101, 1001111 when 1110, 1000111 when others;end FUN;3、仿真及仿真结果分析计费模块仿真图计程模块仿真图4、实验调试结果经过耐心的调试,同学们互相讨论研究,终于比较顺利的完成了课程设计的仿真

21、,并得到了比较理想的仿真结果。三、结论及心得体会通过这几天有关于出租车计价器的课程设计,使我对EDA工具的使用有了更熟练的掌握。在整个设计的过程中,还是碰到了一些问题。比如,对于键盘的延时防抖问题不能较好的解决;对于编程的顺序及各模块程序调用掌握得还不够好;对于一些相关的应用软件没能熟练掌握。通过这几天的反复思考,以及参考网上的程序,最终还是完成了设计。设计中我最大的收获就是自己的动手能力和独立解决问题的能力得到了很大的提高,在动手的过程中,不仅能增强实践能力,而且在理论上可以有更深的认识;这次设计给了我极大的鼓舞和信心,相信在以后的学习中可以通过不断的学习和实践来提高专业方面的知识。参考资料1 潘松著.EDA技术实用教程(第二版). 北京:科学出版社,2005.2 康华光主编.电子技术基础 模拟部分. 北京:高教出版社,2006.3 阎石主编.数字电子技术基础. 北京:高教出版社,2003.

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 办公文档 > 其他范文


备案号:宁ICP备20000045号-2

经营许可证:宁B2-20210002

宁公网安备 64010402000987号