超详细!基于Proteus的出租车计价器实现(数字电路课程设计)

本文阐述基于Proteus 7.8的出租车计价器电路的实现,附具体电路的工程文件下载:
工程文件下载链接

设计要求

  1. 里程测量精确到1㎞
  2. 按起步价7元/3公里,起步价外按1.4元/公里进行计价。
  3. 等候按1.4元/10分钟计算。
  4. 具有里程显示、收费显示、里程单价显示。

设计方法

基本上按照模块完成,我将它分为里程模块、小数价格模块、个位价格模块、十位价格模块、显示模块,模块与模块之间通过逻辑电路建立联系。用方波信号代替路程传感器和等待时间传感器,用开关来控制清零。研究数值的变化与各模块信号之间的联系,选择合适的触发条件,通过查询资料,找到合适的具有相应功能的芯片,设计条件电路或者状态电路,具体电路如下:
图1  原理图总览

电路工作原理分析

里程计数及显示

里程是十进制的,用十进制进位计数器,可以用十进制进位加法计数器74ls160或者二进制进位加法计数器74ls161(我采用的是74ls160,这样比较方便)。我用二位十进制数显示里程,所以还要一个异步十进制计数器,要实现异步进位,74ls90可以实现异步十进制计数功能。两个四位二进制数连到数码管上,显示里程数。起步价三公里内7元,大于三公里才开始加价,需要比较功能并输出高电平,数值比较器74ls85可以实现这个功能,里程个位大于3和十位有数字两种情况作或运算,再连到一个三态门上,这样就能判断里程是否满足加价条件。图2  里程设置

起步价和加价设置

三公里内价格是7元,所以刚开始的价格应该在7元的基础上加价,通过查资料,74ls83或者74ls283可以实现四位二进制全加器的功能(我采用了74ls283),将起步价7元和加价相加(另外还需要在超过10块钱后刷新个位,这样7元这个基数就不能保留了,取而代之的是0或者1,具体要根据未进位前的数值来判断,具体在“价格修正”部分分析)

加价是每公里1.4元,小数部分每次+4,一共是4、8、2、6、0五种情况,我想到尾灯控制电路里用的环形状态机,通过4个74ls74循环五种状态控制小数部分变化。个位每次+1,但是考虑到小数部分为6或者8的时候+1.4,个位+2,整数部分仍可以使用74ls160计数,每次都+1,小数进位部分当状态机循环到8或者6的位置,下一状态小数向整数进位(考虑到小数部分初始状态是0,如果用0、2判断,则初始状态也会+1,会导致计数错误,衡量了两个电路的复杂程度,选择采用74ls74延时再给74ls160计数器+1信号)。然后将整数+1部分和小数进位部分相加,同样使用74ls183。
图3  起步价和加价设置

价格修正

考虑到一开始是在起步价7元的基础上加价的,而且进位之后还要清零。个位在“逢十进一”后有0、1两种情况(例如68.6+1.4=70和9.8+1.4=11.2)。这个电路有点复杂,我尝试了几次过后还是选择使用状态机,首先分析,起步价在超过10元之后可以清零,个位的基准价格变为0或者1,那么0111B(7的8421码)第二位和第三位就可以清零并保持下去,所以我仍然采用74ls74D触发器,将输入端口D置高电平,Q ̅在未加触发信号的情况下是高电平,根据D触发器方程Q=D,在第一次进位后,Q ̅变为0,之后就一直是0(复位除外,74ls74有预置端和清零端,都都置1时不影响工作,R清零端置0时,输出Q为低电平,即初始状态)。
图4  价格修正
①进位信号,0101B(10D)触发(同时可用于清零);
②情况一:进位前是8,如8.6、8.8,置高电平等待进位信号;
③情况二:进位前是9,小数位进位之后是.4、.6、.8,置高电平等待进位信号;
④以上两种情况涵盖了需要将个位修正为0的情况,和进位信号相与即可;
⑤状态机:个位修正为0,R端接清零信号,clk接进位信号,如果无需修正,那么进位信号触发会将D端高电平传到Q端,这样就是1;
⑥状态机:在第一次进位之后就把8421码 中间两位清零,之后不干扰计数,R端接复位信号;
⑦或门:最低位要求两个状态机可以同时操控;

数码管显示

因为元件库里有四位二进制的数码管,所以我为了电路的简洁没有加上数码管译码器,但由于缺少小数点,故又使用了共阴极7段数码管加上74ls48译码器,将小数点位置1点亮。按要求一共用到三处数码管显示:图5  里程显示
图6  价格显示(中间的是七段共阴极数码管)
图7  单价显示

总结

本文电路较为复杂,肯定有更好的解决方法。该方案仅供参考,电路还有很多可以优化的方法,不要被一种方法限死。

如果有疏漏或者错误的地方还请指正,如果能够帮助到你,请给我点个赞。
祝各位学业有成。

  • 16
    点赞
  • 88
    收藏
    觉得还不错? 一键收藏
  • 10
    评论
基于Proteus仿真的30秒计时器课程设计是一项将电子设计与编程应用于实际场景中的项目。该设计旨在培养学生的电子设计和编程能力,同时加深对计时器原理的理解。 首先,我们需要使用Proteus软件进行电路设计。我们可以利用555定时器芯片和一些其他电子元件设计一个简单的30秒计时器电路。学生需要了解555定时器的工作原理和引脚连接方式,并在Proteus中进行电路设计。通过仿真,学生可以验证电路的正确性并进行调试。 接下来,我们需要编程实现30秒计时功能。学生可以选择使用C语言或基于Arduino的编程语言进行编程。他们需要能够通过代码控制计时器的开始、暂停和重置功能。通过编程,学生不仅可以理解计时器工作的原理,还可以培养他们的编程能力。 在课程设计中,我们可以设置一些实际的应用场景,如定时开关灯、计时比赛等,让学生将仿真和实际应用相结合。这样学生可以将所学的知识应用于实际情境中,提高他们的综合能力和问题解决能力。 此外,我们还可以设置一些实验和小组项目,让学生在实际操作中更深入地了解电子设计和编程方面的知识。这些实践项目可以提高学生的动手能力和团队合作精神。 总之,基于Proteus仿真的30秒计时器课程设计可以帮助学生理解电子设计原理、提高他们的编程能力,并将所学的知识应用于实际场景中。这个课程设计将帮助学生培养综合能力和问题解决能力,为他们未来的学习和职业发展打下坚实基础。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 10
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值