单片机课程设计出租车候时计价系统

整理文档很辛苦,赏杯茶钱您下走!

免费阅读已结束,点击下载阅读编辑剩下 ...

阅读已结束,您可以下载文档离线阅读编辑

资源描述

xxxxxx大学课程设计报告课程设计名称:单片机系统综合课程设计课程设计题目:出租车候时计价系统院(系):专业:班级:学号:姓名:指导教师:完成日期:xxxxxx大学课程设计报告目录目录第1章总体设计方案………………………………………………………………11.1课程设计的内容和要求………………………………………………………..11.2课程设计原理…………………………………………………………………..11.3课程设计思路…………………………………………………………………..21.4实验环境………………………………………………………………………..2第2章详细设计方案………………………………………………………………32.1实现方法………………………………………………………………………..32.2程序连线图……………………………………………………………………..32.2模块设计………………………………………………………………………..4第3章调试及结果分析……………………………………………………………83.1调试步骤及方法………………………………………………………………..83.2实验结果及分析………………………………………………………………..8参考文献………………………………………………………………………………9附录1(源程序)……………………………………………………………………10附录2(电路原理图)…………………..…………………………………………….15附录3(器件清单)…………………………………………..……………………….16xxxxxx大学课程设计报告第1章总体设计方案1第1章总体设计方案1.1课程设计的内容和要求(1)课程设计内容根据出租车候时计价原理,利用南京伟福公司的LAB6000通用微控制器仿真控制系统,模拟一个出租车候时计价系统,具体内容如下:a)制定收费标准,即每秒的钱数。b)数码管上显示时间和应收的费用,时间以时分秒的形式显示,费用以元角显示(计价后的分位直接截断取整)。c)初始记时为零,启动计时后,时间和费用相应地增加。d)系统能够停止计时,将计时和费用清零。(2)课程设计要求a)独立完成课程设计任务;b)通过老师现场验收;c)交出完整的课程设计报告。1.2课程设计原理根据题目要求,制定合理的收费标准,通过数码管动态显示时间和费用信息显示数码管为六个,表示时间的用四个数码管,用两个数码管显示费用。用户通过两个外中断控制计费系统的开始与清零,用定时器中断控制计费系统的时间的准确增长,整个系统计时与清零状态的切换通过查询自定义的位变量的真假值而执行不同的程序段,从而控制计费系统的不同状态的切换;通过定义适当的时间延迟函数,实现对数码管刷新的控制避免数码管显示时出现闪烁和难分辨的情况。xxxxxx大学课程设计报告第1章总体设计方案21.3课程设计思路(1)提出方案首先乘客上车,在用户明确目的地时启动计时,按下开始计费按钮(对应外中断0,外中断零发送中断请求,启动计时)。收费方案:该计费系统设有出租车起步价,起步价为8元,两分钟之内收费金额为起步价8元;计时超过两分钟时,超出的部分按每一分钟两元计费,数码管显示费用时为30秒增加1元。乘客到达目的地时用户按下停止计费按钮,此时计费系统停止计费。(2)方案论证从实际应用的角度,对于出租车计费系统,较为合理的设计应该设有起步价,并且根据城市的整体生活水平制定合理的收费标准,根据沈阳市的出租车收费情况,本计费系统制定起步价为8元,超过两分钟的时间每分钟按两元收费。另外对于时间和费用的显示,用户在乘客上车时启动计时,当乘客到达目的地时,用户停止计时此时数码管应显示具体的时间与费用而不是在停止计费时就将数码管全部清零。在下次计时开始时在对数码管清零较为合理。1.4实验环境·硬件环境:PC机,LAB6000系统实验开发箱;·软件环境:WAVE软件仿真模拟环境。xxxxxx大学课程设计报告第2章详细设计方案3第2章详细设计方案2.1实现方法将数码管模块的片选端接到CS0地址片选端口上,则对数码管的控制由两个端口确定,分别是8002H和8004H,8002H为数码管的片选端口,用其低六位控制六个数码管的选通,8004H端口为数据端口,控制数码管显示的段码,定时器1用来准确的定时,定时时间为一秒,数码管以秒为单位增加,计算出来的每个数码管的段码值依次送往8004H数据端口,通过循环控制六位数码管的循环扫描,并通过一定时间的延迟,完成时间和费用的显示。2.2程序连线图硬件电路由键盘显示接口芯片8031构成,如图2.4所示。8051为本系统的主要处理芯片,本系统用到的芯片的资源有如下几部分:数据存储器(8002H与8004H地址的数据分别用作数码管的位选和数据源)。定时器1(用作准确的计时,定时间为一秒,用作计费系统的时钟)。外中断0和外中断1(用作用户的两个按钮,外中断0对应的是开始计时按钮,Int08051Int1Key/LedCSLED显示部分8000H-8FFFHCS0开关1开关2xxxxxx大学课程设计报告第2章详细设计方案4外中断1对应的是停止计时按钮)。Led显示模块为计费系统的显示模块,片选段选中CS0端口,六个八段数码管循环扫描显示时间与费用。2.2模块设计(1)数码管扫描模块图2.1管扫描模块原理图存储器的与锁存器74LS374和74LS245通过总线相连,其中74LS374用作锁存器,连接至存储器的8002H地址单元,用于六个数码管的片选;74LS245用作锁存与驱动作用,对应存储器的8004H地址单元,用作数码管阵列的数据端口。8002H的低六位的某位对应为一表示改为所对应的数码管被选中,用于显示数据。xxxxxx大学课程设计报告第2章详细设计方案5图2.2数码管扫描模块程序流程图数码管显示部分的主要原理就是通过查询要显示数据所对应的段码值的下标,得到要显示数据的段码,并调用延迟函数,进行数码管的循环扫描显示,本实验开发箱的LED阵列的片选用的是8002H地址数据的低六位,所对应的段码值为01H、02H、04H、08H、10H、20H。显示时首先将数码管显示的段值输入到8004H端口,然后再向8002H地址中赋值对应的位码。(2)功能选择模块功能选择模块共包括两部分:开始计时部分和停止计时部分。当用户按下开始计时按钮时,计费系统进入计时扫描状态,当乘客到达指定地点后用户按下停止计费按钮,程序进入时间的显示和费用的显示状态,当再次有乘客乘车时,用户再次按下开始计时按钮,系统数码管清零并重新开始计时与计费。xxxxxx大学课程设计报告第2章详细设计方案6(3)主程序流程主程序用于控制各功能部分的切换以及数码管刷新显示的控制,主程序的主线是LedNumVal变量,该变量是数码管显示的依据,以及数码管数据变化的中心线,还有主要的位变量Flag,外中断0和外中断1改变Flag的值,通过查询方式查询Flag的值,Flag的值对应不同的数码管刷新方式,当记事起开始计时事件被触发时,Flag为1,数码管清零并开始计时,当停止计时事件被触发时,Flag为零数码管停止计时,循环显示时间与费用;当计时系统刚启动flag为零,数码管循环显示零,程序流程图如下图所示:xxxxxx大学课程设计报告第2章详细设计方案7图2.3主程序流程图开始数码管循环扫描输出零Flag=0计时开始数码管停止计时显示时间与费用Flag=1停止计时结束YNYYNN数码管清零数码管计时Flag=0开始计时显示时间与费用xxxxxx大学课程设计报告第3章调试及结果分析8第3章调试及结果分析3.1调试步骤及方法编译并连接程序后全速运行,可设置三种调试方式:a)启动计时后两分钟之内停止计时,观察数码管显示的是否正确。b)启动计时后两分钟后在停止计时,观察数码管的显示是非正确。c)启动定时后再次启动计时,观察数码管的显示情况,观察数码管显示是否有异常。3.2实验结果及分析本程序满足课程设计要求,在程序运行时,编译并连接程序后全速运行,按下启动计时按钮,数码管开始显示时间与费用,观察一段时间后发现两分钟之内数码管的时间显示部分在不停的计时并显示而数码管的费用显示部分只显示8元不变,等到两分钟过后计时部分正常计时,计费部分每隔三十秒费用增加1元,当计时一段时间后按下停止计时按钮,数码管显示总共的时间和费用,停止计时。当下次在此启动计时时,数码管清零,并从起步价8元开始计费。当两次启动计时时程序显示正常,数码管显示无异常显示。xxxxxx大学课程设计报告参考文献8参考文献[1]张毅刚,刘杰.MCS-51单片机原理与应用[M].哈尔滨:哈尔滨工业出版社,2008[2]高锋.单片微型计算机原理与接口技术[M].北京:科学出版社,2007[3]胡汉才,温冬婵.单片机原理及接口技术[M].北京:清华大学出版社,2004xxxxxx大学课程设计报告附录15附录1(源程序)#includereg51.h#includeintrins.hvoiddelay(unsignedinti);//函数声名//此表为LED的字模,共阴数码管0-9-UnsignedcharcodeDisp_Tab[]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f};//段码控制//此表为8个数码管位选控制,共阴数码管1-8个-unsignedcharcodedispbit[6]={0x20,0x10,0x08,0x04,0x02,0x01};//位选控制查表的方法控制unsignedcharxdata*p=0x8004;unsignedcharxdata*q=0x8002;bitflag;unsignedinti,LedNumVal=0;//变量定义unsignedintLedOut[6];intr;/************主函数**********************/intmain(void){flag=0;//定时器1初始化;使用定时器1TMOD=0X10;TH1=0X3C;TL1=0XB0;//中断初始化;开放定时器1中断和外中断0、1EA=1;ET1=1;xxxxxx大学课程设计报告附录11ET0=1;EX0=1;EX1=1;IT1=1;IT0=1;r=0;loop:while(flag!=1){LedOut[0]=Disp_Tab[LedNumVal/60/10];if(LedNumVal=360||LedNumVal==0)LedOut[1]=Disp_Tab[LedNumVal/60%10]|0x80;elseLedOut[1]=Disp_Tab[(LedNumVal-240)/60%10]|0x80;LedOut[2]=Disp_Tab[LedNumVal%60/10];LedOut[3]=Disp_Tab[LedNumVal%60%10];LedOut[4]=Disp_Tab[1*LedNumVal/30/10];LedOut[5]=Disp_Tab[1*LedNumVal/30%10]|0x80;for(i=0;i6;i++){*p=LedOut[i];*q=dispbit[i];//使用查表法进行位选delay(75);//扫描间隔时间太长会数码管会有闪烁感}*q=0x00;}LedNumVal=240;while(flag!=0){xxxxxx大学课程设计报告附录12LedOut[0]=Disp_Tab[(LedNumVal-240)/60/10];LedOut[1]=Disp_Tab[(LedNumVal-240)/60%10]|0x80;LedOut[2]=Disp_Tab[(LedNumVal-240)%60/10];LedOut[3]=Disp_Tab[(LedNumVal-240)%60%10];if(LedNumVal=360){LedOut[4]=Disp_Tab[1*240/30/10];LedOut[5]=Disp_Tab[1*2

1 / 19
下载文档,编辑使用

©2015-2020 m.777doc.com 三七文档.

备案号:鲁ICP备2024069028号-1 客服联系 QQ:2149211541

×
保存成功