欢迎来到天天文库
浏览记录
ID:33128993
大小:4.46 MB
页数:27页
时间:2019-02-21
《微机原理课程设计汽车速度控制》由会员上传分享,免费在线阅读,更多相关内容在学术论文-天天文库。
1、西安邮电大学(计算机学院)硬件课程设计报告题目:汽车速度控制的设计与实现专业名称:软件工程班级:软件1201学生姓名:学号(8位):指导教师:设计起止时间:2014年12月15日~2014年12月26日1.设计目的:微机接口电路的设计及应用。通过《微机原理与接口》课程设计,使学生能够进一步了解微型计算机工作原理, 微型计算机的硬件结构及微型计算机软件编程。 要求学生根据接口电路的硬件要求进行计算机的汇编语言程序设计,使学生的软件编程能力得到加强,对接口电路的综合应用能力有较大提高。 利用所学微机的理论知识进行软硬件整体设计,提高综合应用能力。通过设计掌握综合使用基本输入设备,通用
2、接口芯片,专用接口芯片的方法;熟悉并行接口芯片8255的使用与硬件接口方法,熟悉8255的各种工作方式,掌握8255的编程方法;掌握实时处理程序的编制和调试方法。从而帮助学生系统地掌握微机原理的接口技术的相关知识,达到将知识融会贯通的目的。同时给学生提供更多、更好的训练机会,培养学生的创新能力。2.设计内容:所选题目的具体要求。在自行设计接口板的的按键转换汽车的挡位,用发光二极管显示挡位,用数码管显示汽车的速度。(1).按“1”键启动系统,汽车以最低速度行驶,同时用1盏绿灯显示挡位,数码管显示速度(最低速度为5Km/h)。当需要换档时,用键盘键入2、3键,并加用一盏黄灯和一盏红灯显
3、示,同时在数码管上显示相应的速度。(2).汽车慢加速时用“A”键,急加速时用“B”键。慢刹车时用“C”键,急刹车时用“D”键。加速和刹车时用数码管显示相应的速度变化。(3).当汽车需紧急停车时,键入“ESC”键,所有发光二极管熄灭,同时数码管显示“0”。3.设计过程:①根据设计内容,给出设计方案,选择需要的接口芯片和外设等,确定相应的接口芯片的工作方式,并给出proteus下设计出的系统原理图,见文章末尾②根据系统要求,设计程序,给出流程图描述程序。数码管流程图程序流程:设置初始状态:速度为0,数码管显示为01档初始状态:速度为5,LED1亮1档最大速度状态:速度为25,数码管显示
4、252档初始状态:速度为25,LED2亮2档最大速度状态:速度为60,数码管显示603档初始状态:速度为60,LED3亮3档最大速度状态:速度为120,数码管显示120进入初始状态,判断是否按下K1开关,若没按下则回到初始状态,若按下则进入1档初始状态1档初始状态下接受指令:判断是否按下KA开关,若按下则进入慢加速状态,直到速度加到1档的最大速度25,进入1档最大速度状态;若没按下KA开关,则判断是否按下KB开关,若按下则进入快加速状态,直到速度加到1档的最大速度25,进入1档最大速度状态;若没按下KB开关,则判断是否按下KC开关,若按下则进入慢减速状态,直到速度减到0,进入初始状
5、态;若没按下KC开关,则判断是否按下KD开关,若按下则进入快减速状态,直到速度减到0,进入初始状态;若没按下KD开关,则判断是否按下KE开关,若按下则进入停车状态,速度减到0,进入初始状态;若没按下KE开关,则停留在1档初始状态,等待接收指令;1档最大速度状态下接收指令:判断是否按下K2开关若按下,若按下则进入2档初始状态;若没按下K2开关,则判断是否按下KC开关,若按下则进入慢减速状态,直到速度减到0,进入初始状态;若没按下KC开关,则判断是否按下KD开关,若按下则进入快减速状态,直到速度减到0,进入初始状态;若没按下KD开关,则判断是否按下KE开关,若按下则进入停车状态,速度减
6、到0,进入初始状态;若没按下KE开关,则停留在2档初始状态,等待接收指令;进入2档初始状态后,它的程序流程和1档初始状态流程一样;进入3档初始状态后,流程和1、2档一样,只是当进入3档最大速度状态后,只能接受减速停车指令。①在前两步的基础上,给出proteus下程序运行的结果截图。见文章末尾②具体硬件实现,给出实际所焊电路的系统连线图。③在所焊电路的板子上运行程序,拍照,打印出系统运行截图。1.设计总结:分析自己的设计结果,总结设计中所遇到的问题以及采取的解决办法。设计结果分析:整个系统运行过程中考虑到了很多情况,做得比较细腻,比如1档必须到达了最大速度才能接收2档指令,不能越到3
7、档;在加速过程中速度只会加到相应档位的最大速度,不会超过它;不足的是:在加速减速状态中不会被中断,速度会加到最大或减到0,这点还需改进。遇到问题:不知道如何让数码管正确的显示相应的数字解决办法:先查看实验指导书了解了数码管的线路连接,然后上网查找数码管显示的方法,再和组员一行一行代码的编写,试了很多次数码管都不显示。最后才知道了程序最开始没有定义堆栈段,导致要显示的数据不能压栈。最终解决了数码管的问题。遇到问题:编译时出现Relativejumpoutofrange错
此文档下载收益归作者所有