资源描述:
《计程车计价器EDA设计.doc》由会员上传分享,免费在线阅读,更多相关内容在行业资料-天天文库。
1、《EDA技术实用教程》设计报告题目:计程车计价器学院:专业:班级:姓名:学号:目录一、…………………………………………………..设计背景二、………………………………………………….设计要求三、……………………………………….设计内容及步骤四、…………………………………………………总体图五、………………………………………………...体会和总结一、设计背景随着社会的快速发展,人民生活的不断提高,虽然私家车的售卖数量在不断提升,但出租车作为一个方便、快捷、舒适的交通工具,在每一个城市,依然扮演着非常重要的
2、角色。出租车计价器是一种交易准则,它是针对乘客与司机双方的一种交易准则。出租车计价器是出租车行业发展过程中的重要标志,是出租车中重要的设备。一个性能优良的出租车计价器无论是对乘客还是司机来说都是非常必要的。随着各个地方的生活水平的不同,对出租车的计费有着不同的标准。研究一个简易、计价精准、可靠性高的计价器还是很有发展前景的。现在单片机性能不断提高和价格不断下降,单片机控制在越来越多的领域得以应用。鉴于上述要求,本次设计采用传统的设计模式,利用软硬件结合的方式来设计出租车计价器。在整个项目开发过程中,
3、有单片机AT89S52控制,通过记录安装在车轮上的光电传感器发出的脉冲个数,实现正常的里程计数,通过软件在实现里程数和车费的函数关系,并将里程数和车费在led数码管中显示出来。在整个设计中,需要根据要求设计电路原理图,PCB电路图绘制,电路板制作,元器件焊接,软件编程,调试等实现出租车计价器的制作。二、设计要求设计一个出租车计价器,要求显示里程和金额。(1)出租车启动和停驶由司机控制;(2)行程小雨基本里程时,显示起步价,基本里程设3公里,起步价5元;(3)行程大于基本里程时,每多行一公里,起步价上
4、加一元。三、设计内容及步骤1.控制模块moduletaxi(money,distance,clk,start,stop,speedup,pause);inputclk;inputstart;inputstop;inputpause;input[1:0]speedup;output[12:0]money;output[12:0]distance;reg[12:0]money;reg[12:0]distance;reg[12:0]money_reg;reg[12:0]distance_reg;reg[3
5、:0]num;reg[12:0]dis;regd;always@(posedgeclk)beginif(stop)beginmoney_reg<='d0;distance_reg<='d0;dis<='d0;num<='d0;endelseif(start)beginmoney_reg<='d500;distance_reg<='d0;dis<='d0;num<='d0;endelsebeginif(!start&&!speedup&&!pause&&!stop)beginif(num=='d9)b
6、eginnum<='d0;distance_reg<=distance_reg+1;dis<=dis+1;endelsebeginnum<=num+1;endendelseif(!start&&!speedup=='b01&&!pause&&!stop)beginif(num=='d9)beginnum<='d0;distance_reg<=distance_reg+2;dis<=dis+2;endelsebeginnum<=num+1;endendendif(dis>='d100)begind<=
7、'd1;dis<='d0;endelsebegind<='d0;endif(distance_reg>='d300)beginif(money_reg<'d2000&&d=='d1)beginmoney_reg<=money_reg+'d100;endendmoney<=money_reg;distance<=distance_reg;endendmodule封装如下图:译码显示模块moduledeceder(scan,seg7,dp,clk20mhz,money_in,distance_in);o
8、utput[7:0]scan;output[6:0]seg7;outputdp;inputclk20mhz;input[12:0]money_in;input[12:0]distance_in;reg[7:0]scan;reg[6:0]seg7;regdp;regclk1khz;reg[3:0]data;reg[3:0]m_one,m_ten,m_hun,m_tho;reg[3:0]d_one,d_ten,d_hun,d_tho;reg[15:0]count;reg[