




已阅读5页,还剩16页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
第 20 页计算机科学与技术学院2011级硬件课程设计报告 中国矿业大学计算机科学与技术学院硬件课程设计报告姓 名: 学 号: 专 业: 计算机科学与技术 班 级: 计科11-1班 设计题目: 出租车计价系统 指导教师: 2013年 10月 徐州 目 录1需求分析31.1任务要求31.2参数设置31.3功能实现42 总体设计52.1总体方案及框图52.2芯片原理62.3电路连接图92.4软件模块流程图113详细设计123.1代码及注释123.2 问题分析及解决方案163.3运行结果173.4心得体会19参考文献201、 需求分析1.1任务要求 如今,出租车已经遍布全国各地每一个城市每一个角落,已经成为人们出行的重要交通工具。随着出租车行业的壮大和发展,一些不良现象比如出租车司机乱收费等情况也时有发生。而出租车计价系统能够使出租车收费更加快捷方便、透明公正,具有广阔的市场前景。 从用户的角度看,出租车计价系统要能够实现自动测算里程数并计算收费金额。在输入方面,应该能够手动控制计价器的启动和关闭,还要能切换白天和夜间模式,方便不同模式的计价;输出方面,要将能将里程数和价格显示出来,方便司机和乘客查看,真正实现公开透明收费。1.2参数设置输入参数:通过逻辑电平开关来开关计价器、切换白天/夜间模式 K1:闭合/启动 断开/关闭 K2:闭合/夜间模式 断开/白天模式输出参数:将计算得出的数据显示在LCD液晶显示屏上 里 程:XX km 金 额:XX元价格设置:白天模式起步价3公里内8元钱,3公里外2元/公里夜间模式起步价3公里内10元钱,3公里外3元/公里1.3功能实现直流电机控制逻辑电平开关K1直接与电直流机相连,通过 输出高低电平控制电机的开闭白天、黑夜模式切换逻辑电平开关K2与8255A的PB0口连 接,8255A读取数据进行检测判断,然后定义 模式进行计算数据输出显示利用128*64LCD液晶显示屏做最终显示载体, 8255A将程序计算所得的数据通过事先定义 的字符内码显示在LCD上检测里程利用直流电机里的霍尔传感器将脉冲传导到8254 的CLK0口,设置计数初值为1000(即1000个脉 记作1公里),然后从OUT0输出到8255A的PB1 口,8255A从中读取电平(一次负跳变记为1公里) 并通过程序进行计算复位清0通过逻辑电平开关K3与8255A的PB2口相连, 8255A进行检测,若为高电平,则将所有数据全部 初始化,实现清0功能2、 总体设计2.1总体方案及框图 通过逻辑电平开关K1控制白天黑夜模式切换,连接到 8255A 的B口,另一个开关K2控制直流电机转动,然后霍尔传感器检测直流电机的转动,将信息传入8254计数器通道0接口中(设1000个脉冲为一公里路程),然后连接到8255A的B口,8255A在B口读取数据并进行计算,最后将显示到LCD液晶显示屏上。逻辑电平开关K3在任意时刻控制系统清0.系统框图:2.2芯片原理(有部分资料摘抄)(1)8254计数器8254功能分析Intel8253是NMOS工艺制成的可编程计数器/定时器, 8253内部有三个计数器,分别成为计数器0、计数器1和计数器2,他们的机构完全相同。每个计数器的输入和输出都决定于设置在控制寄存器中的控制字,互相之间工作完全独立。每个计数器通过三个引脚和外部联系,一个为时钟输入端CLK,一个为门控信号输入端OUT,另一个为输出端OUT。每个计数器内部有一个8位的控制寄存器,还有一个16位的计数初值寄存器CR、一个计数执行部件CE和一个输出锁存器OL。执行部件实际上是一个16位的减法计数器,它的起始值就是初值寄存器的值,而初始值寄存器的值是通过程序设置的。输出锁存器的值是通过程序设置的。输出锁存器OL用来锁存计数执行部件CE的内容,从而使CPU可以对此进行读操作。本次实验仅利用8254通道0,控制字00110111B,使用方式3,设置计数初值为1000,霍尔传感器的脉冲每输入CLK0口1000个,在OUT0口就输出一个,实现计数功能。8253引脚信号CS:片选信号,低电平有效;A0、A1:地址信号;(2)8255A8255A功能分析8255A是可编程并行接口,可以根据外界条件(I/O设备需要的信号线和它能提供的状态线)来使其构成多种接口电路。8255A内部有3个数据端口,即A口、B口、C口。口有三种工作方式:即方式、方式和方式,而口只能工作在方式或方式下,而口通常作为联络信号使用。在三种工作方式中,本设计只使用了方式0,即方式0是基本的输入/输出方式,在这种方式下,三个端口都可以由程序规定为输入/出方式。C口分为两个4位-高4位和低4位,可以分别设置为输入或输出方式。本实验将控制字设为10000010B,初始化8255A,使得A口输出,B口输入,C口输出,A口、B口工作在方式0。8255A引脚信号CS:片选信号,低电平有效;A0、A1:地址信号。JP52: PC口;JP53: PB口;JP56: PA口。1)与外设相连的PA7PA0:A口数据信号线;PB7PB0:B口数据信号线;PC7PC0:C口数据信号线;2)与CPU相连的RESET:复位信号。D7D0:它们是8255A的数据线和系统总线相连。CS:片选信号。在系统中,一般根据全部接口芯片来分配若于低位地址(比如A5、A4、A3)组成各种芯片选择码,当这几位地址组成某一个低电平,于8255A被选中。只有当有效时,读信号写才对8255进行读写。 RD:读信号。当此信号有效时,CPU可从8255A中读取数据。WR:写信号。当此信号有效时,CPU可向8255A中写入数据。A1、A0:端口选择信号。8255A内部有3个数据端口和1个控制端口,共4个端口。规定:A1、A0为00时,选中A端口;A1、A0为01时,选中B端口;A1、A0为10时,选中C端口;A1、A0为11时,选中控制口。2.3电路连接图连线: K1/逻辑电平开关直流电机K2/逻辑电平开关PB0/8255AK3/逻辑电平开关PB2/8255A计数/直流电机CLK/08254 GATE/08254+5VOUT/08254PB1/8255A PA7PA0/8255AD7D0/LCDPC0/8255AD/ILCD PC1/8255ARW/LCDPC2/8255AE/LCD LCD工作于并行模式CS/8255A288H28FH CS/8254280H287H2.4软件模块流程图3、 详细设计3.1重要代码及注释(1) 清0 MOV DX,PORT_8255_B IN AL,DX AND AL,04H TEST AL,04H JZ JUDGE MOV PAY,8 MOV DIST,0(2) 计程JUDGE: IN AL,DX AND AL,02H TEST AL,02H ;判断是否为高电平 JNZ JUDGE ;若为高电平,继续检测 INC DIST ;若不是高电平了,即有一个脉 冲,路程加1km(3) 判断并设置白天/夜间模式;设置晚上起步价(在路程为1km时将起步价在原基础上加2) CMP DIST,1 ;判断是否超过1km JA A IN AL,DX AND AL,01H TEST AL,01H ;判断开关状态,闭合高电平表示晚上 JZ A ;若最低位为低电平,表示白天 ADD PAY,02H ;晚上,起步价由8元变成10元;判断是否超过起步里程3kmA: CMP DIST,3 ;与起步里程比较,判断是否超过3km JBE TRANS ;小于3km则金额仍为起步价 IN AL,DX AND AL,01H TEST AL,01H ;检查是否为晚上 JZ DAY ;白天 INC PAY ;晚上一公里三元;白天一公里两元 DAY: ADD PAY,02H(4) 分离路程、金额的个十位并匹配内码;利用除法求十进制的个位和十位TRANS: MOV AX,DIST MOV BL,10 DIV BL MOV T2,AH ;路程个位 MOV T1,AL ;路程十位 MOV AX,PAY MOV BL,10 DIV BL MOV T4,AH ;金额个位 MOV T3,AL ;金额十位;将金额、路程的个位、十位分别转换为LCD上显示的内码 LEA BX,NUMBER ADD BL,T1 ADD BL,T1 MOV AX,BX LEA DI,TABLE1 MOV WORD PTRDI+8,AX ;路程十位 LEA BX,NUMBER ADD BL,T2 ADD BL,T2 MOV AX,BX LEA DI,TABLE1 MOV WORD PTRDI+10,AX ;路程个位 LEA BX,NUMBER ADD BL,T3 ADD BL,T3 MOV AX,BX LEA DI,TABLE1 MOV WORD PTRDI+24,AX ;金额十位 LEA BX,NUMBER ADD BL,T4 ADD BL,T4 MOV AX,BX LEA DI,TABLE1 MOV WORD PTRDI+26,AX ;金额个位3.2问题分析及解决方案(1) 个位、十位分离显示在设计程序时,我设想将路程、金额数据各设计成2位十进制数。在程序计算得出数据之后,将其个位、十位分离出来,读出各自字符内码,再进行显示。但是当程序设计出来之后,发现显示很不正常,路程显示总是在15km的时候突然跳成10km,而金额的十位一直都是0。这个问题一直困扰了我两节课的时间,改了几次都没能正常输出。后来经过老师点拨,我才发现是我对DAA指令的理解出错,在个位十位分离的时候错误的使用这个语句,造成程序出错。于是我听从老师建议,采用除法进行分离:MOV AX,DIST ;MOV BL,10 ;DIV BL。既简介明了,又不容易出错。(2) 起步价设置设置价格时只用一个变量PAY,8255A的PB1口每得到一个脉冲,路程变量DIST加1,金额变量PAY加2(如果是夜间模式,则再加1)。而夜间模式的起步价比白天高2元,所以编程首先检测模式,如果是夜间模式就将PAY加2。原本我这个解决很完美,一运行才发现,白天模式完全正确,但是夜间模式起步价根本没变,还是原来的8元,而单价则变成了5元。于是我判定应该是增加起步价那一步在每一个脉冲输入时都进行了循环。改了几次都没办法解决,后来想办法在前面加上一段 CMP DIST,1 JA A。首先判断路程是否超过1km,如果超过了,则不执行此段,避免了起步价每次增加的错误。(3) 复位 最初的设想里并没有复位这一步,但是后来发现每一次运行完之后想要再次运行都要重启机箱,还要将程序重新运行,很是麻烦。考虑到实际运用过程中,出租车司机不可能每一次都把机器关掉来清除原来的数据。所以加上了复位清0这一功能,用逻辑电平开关K3作为控制端,连接到PB2,每次只要8255A检测到变成高电平,程序就立马把里程和金额数据初始化,实现复位的功能,更加人性化,贴合实际需求。3.3 运行结果 程序运行后,打开K1开关,直流电机就开始转动,数据直接显示在LCD液晶屏上。随着电机的转动,数据也在不断地更新。如果断开K1开关,电机停止转动,数据显示保持不动。如果闭合K2开关,立刻切换到夜间模式进行运行显示。如果闭合K3开关,显示会一下变成最初的数据,里程变为0km,金额变成起步价。经过长时间的编程调试,最终运行结果完全符合最初的设想和要求。3.4心得体会 这次硬件课程设计是上大学以来做的实验设计中历时最久、最为困难的一个。以前的实验大都是软件编程,程序比较短小,而且不涉及硬件。而这次花了半个学期的课程时间来做一个成果,这是以前都没有过的。困难主要体现在对于硬件编程不熟练,汇编语言的生疏,还有硬件调试更加复杂。但是通过这次实验真的学到了很多,首先是独自处理问题的能力。面对一个现成的题目,怎么利用现有的硬件条件进行设计,这已经跟以前单纯的实验不一样了,需要结合需求和现有条件进行取舍,找出最为可行的设计方案。这对于我而言非常重要,让我学到了除了单纯编程写代码更多的东西。程序仅仅是一个工具,而利用这个工具去解决实际问题的能力和方法对于我们而言更加重要。整个程序设计的过程是比较麻烦的,主要是对于汇编语言掌握不到位,很多语句都不熟练,编程开始阶段几
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 入门场景速写课件教学
- 2025年游戏化营销在品牌粉丝经济中的策略研究报告
- 偏瘫患者轮椅使用课件
- 供应室院感知识培训内容课件
- 企业每周安全培训记录课件
- 环境信访闭环管理办法
- 疫情期间出差管理办法
- 高级导游等级考试(导游综合知识)综合能力测试题及答案(吉林2025年)
- 金属丰度与尘埃关联-洞察及研究
- 出租车真有用课件
- 女性私密项目培训
- 2025年《审计理论与实务(中级)》考前几页纸
- 北京高考英语一轮专项复习:词汇-高频短语(含解析)
- 中学实验员安全培训课件
- 砂石采购合同范本
- 幼儿园课程实施方案
- 学校食堂操作流程培训
- 2025年四川省水电投资经营集团有限公司招聘笔试参考题库含答案解析
- 医德医风领导小组制度及职责
- 退役军人保密教育
- 文旅开发代运营服务合同8篇
评论
0/150
提交评论