东南大学自动化学院
《微机实验及课程设计》
课程设计报告
综合测试题六: 出租车自动计价器
姓 名: 刘策 学 号: 08014116 专 业: 自动化 实 验 室: 金智楼五楼 组 别: 同组人员: 设计时间: 2016年06月 1日 —— 2016年6 月16 日
评定成绩: 审阅教师:
目 录
一.课程设计目的与要求..………………………………………………………………….. 二.方案论证与原理设计....………....……………………………………………………… 三.实验流程与测试结果…........…………………………………………………………… 四.实验总结……………………...…………………………………………………………. 五
.
附
录....................................................................................................................................
一. 课程设计目的与要求
1、课程设计目的
(1)总结、应用前面八个实验中积累的微机实验经验; (2)熟悉8253、8255等芯片的使用方法;
(3)结合课堂中所学的汇编语言基础知识,进行系统的编程,培养动手操作能力 (4)锻炼了查找错误,修正错误的能力
2、课程设计要求
设计一个出租车自动计价器,计费包括起步价、行车里程计费、等待时间计费三部分,用三只数码管显示总金额,最大值为99.9 元,起步价8.0 元,3 公里之内按起步价计费,超过3 公里,往返双程可设每1 公里1.2 元,单程每公里1.8 元,等待时间每分钟0.2 元。用两位数码管显示总里程数,最大值99km,用两位数码管显示等待时间(分钟),最大值99 分钟。用直流电机模拟出租车行驶,里程数与脉冲个数成正比,每1km 脉冲数100 个(可设定),低于每小时5 公里时作为等待状态。 (1)基本要求
i假设有计数比较器测定停车与行车状态,转换成开关信号。开关输入行车状态,并用LED 灯显示;同时有空车信号,可用于启动计价并用LED 灯显示; ii记录里程数,等待时间,计算总金额,并实时显示; iii模拟刹车和启动动作,动作后立即停车/行车; iv简单的标定和检错功能。 (2)进一步设计要求
i打印输出功能,在屏幕上打印上下车时间、里程、价格; ii保存最近5次数据,可选择打印在屏幕上以便检查; iii有语音提示功能。
二.方案论证与原理设计
整个出租车自动计价器系统是由主程序控制模块、计价模块、显示模块三部分组成。 1、主程序控制模块
总控制模块的作用是控制出租车的行车状态以及控制数码管的显示内容,包括如下几点: (1)判断是否选中单程或双程 (2)判断出租车是否处于等待 (3)判断数码管显示内容 (4)判断系统是否开始行驶 具体的规划如下:
以8255芯片为例,将A口定义为方式0输入,A0连接8253定时器的OUT1输出,以便用来检测是否存在1s定时。后面相继的1-5分别接到逻辑电平开关K1-K5,K6接某个与门右引脚控制直流电机的开关。而K7开关接到一个LED灯上,检验判断是处于开始计价还是空车状态。 开关名称 K1 K2 K3 K4 K5 K6 与门右引对应口 PA1 PA2 PA3 显示功K=0 停止状态 单程 K3 K4 K5 能 电机 关闭直流空车状态 PA4 PA5 脚 PA7 K7 0 功能 K=1 计费状态 双程 1 1 X 时间 X X 里程 打开直流开始计价 电机 费用低0 0 0 位 费用高0
2、计数模块
0 1 位 计算路程、计算时间两个,通过计数模块可以获得出租车目前行驶的路程以及已经行驶的时间,该模块的数据应用到计费模块可以行驶及等待过程的总费用。
其原理是根据直流电机每秒中输出的脉冲数分情况,预先设定好一个脉冲阈值(本实验用的是10),当直流电机每秒输出的脉冲数大于10时,出租车处于行车状态,此时里程=历史里程+脉冲数/100。当直流电机每秒输出的脉冲数小于10时,出租车处于等待状态,此时等待时间加1。
8253 定时器功能分配如下:计数器0设置成方式3,计数器1设置成方式0,计数器0、1的计数初值均设置为1000,然后将两个计数器级联,计数器0输入1MHz的时钟信号,利用out1产生的1S的周期信号来产生1S的定时中断。计数器2设置成方式0,将直流电机的脉冲输入到CLK2,用来计数直流电机的脉冲数。
3、计费模块
计费模块利用计数模块提供的时间以及路程等信息,通过条件等操作针对不同的情况采用不同的计费方式,最终得到总费用。
计费公式如下:
?8yuandistance??3km?ifsingletrip????8?(distance?3)?2.4?waitTime?0.2distance?3km TotalFee??8yuandistance??3km?ifdoubletrip????8?(distance?3)?1.2?waitTime?0.2distance?3km?
4、显示模块
根据设计要求我们可以将显示模块主要分为屏幕显示和数码管显示两个部分。
第一部分是屏幕显示,在屏幕上显示里程数、等待时间和总费用,最近5次费用等等,可以通过调用DOS中断显示数据;第二部分是通过数码管显示,由于数码管只有两个,我们组合使用K3、K4、K5选择显示当前里程数、等待时间和总费用的高低位,数码管位选和段选分别用8255芯片的C口PC0和PC1、B口PB0~PB7控制。而空车信号由LED灯显示,只需将K7连接LED灯上即可显示空车状态。其中8255B口设置成方式0输出,用于控制八位数码管的段选。8255C口设置为方式 0输出方式。
三. 实验流程与测试结果