欢迎来到三一文库! | 帮助中心 三一文库31doc.com 一个上传文档投稿赚钱的网站
三一文库
全部分类
  • 研究报告>
  • 工作总结>
  • 合同范本>
  • 心得体会>
  • 工作报告>
  • 党团相关>
  • 幼儿/小学教育>
  • 高等教育>
  • 经济/贸易/财会>
  • 建筑/环境>
  • 金融/证券>
  • 医学/心理学>
  • ImageVerifierCode 换一换
    首页 三一文库 > 资源分类 > DOC文档下载  

    [论文精品] 对外部脉冲计数及出租车计费系统的设计.doc

    • 资源ID:3903802       资源大小:888.50KB        全文页数:17页
    • 资源格式: DOC        下载积分:4
    快捷下载 游客一键下载
    会员登录下载
    微信登录下载
    三方登录下载: 微信开放平台登录 QQ登录   微博登录  
    二维码
    微信扫一扫登录
    下载资源需要4
    邮箱/手机:
    温馨提示:
    用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)
    支付方式: 支付宝    微信支付   
    验证码:   换一换

    加入VIP免费专享
     
    账号:
    密码:
    验证码:   换一换
      忘记密码?
        
    友情提示
    2、PDF文件下载后,可能会被浏览器默认打开,此种情况可以点击浏览器菜单,保存网页到桌面,就可以正常下载了。
    3、本站不支持迅雷下载,请使用电脑自带的IE浏览器,或者360浏览器、谷歌浏览器下载即可。
    4、本站资源下载后的文档和图纸-无水印,预览文档经过压缩,下载后原文更清晰。
    5、试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。

    [论文精品] 对外部脉冲计数及出租车计费系统的设计.doc

    单片机课程设计 学课 程 设 计资 料 袋 电气与信息工程 学院(系、部) 2011 2012 学年第 1 学期 课程名称 单片机应用系统 指导教师 职称 讲师 学生姓名 专业班级 自动化092 学号 题 目 对外部脉冲计数及出租车计费系统的设计 成 绩 起止日期 2011 年 12 月 19 日 2011 年 12 月 30 日目 录 清 单序号材 料 名 称资料数量备 注1课程设计任务书2课程设计说明书3课程设计图纸张456 湖南工业大学课程设计任务书2011 2012 学年第 1 学期 电气与信息工程学院 学院(系、部) 自动化 专业 092 班级课程名称: 单片机应用系统 设计题目: 对外部脉冲计数及出租车计费系统的设计 完成期限:自 2011 年 12 月 19 日至 2011 年 12 月 30 日共 2 周内容及任务11 外部脉冲自动计数,自动显示。111设计一个255计数器:0255计数,计满后自动清0,重新计数(在数码管中显示)。112设计一个50000计数器:050000计数,计满后自动清0,重新计数(在数码管中显示)。12 设计一个出租车计费系统: 起步价为5元(2km以内),2km后,0.8元/0.5km;要求每500m刷新计费一次,在8位数码管中,前3位显示数码管显示里程数,后3位数码管显示价钱(角,元,十元,百元)注:要求首先采用PROTEUS完成单片机最小系统的硬件电路设计及仿真;程序仿真测试通过后,再下载到单片机实训板上执行。进度安排起止日期工作内容200812.19讲述设计内容及基本原理200812.20-2008.12.28进行系统的设计200812.29-2008.12.30进行系统的调试主要参考资料1 刘苗生、潘宗预. 单片机测控系统设计. 中国物质出版社,2006年指导教师(签字): 年 月 日系(教研室)主任(签字): 年 月 日附件三(单片机应用系统)设计说明书(题目)对外部脉冲计数及出租车计费系统的设计起止日期: 2011 年 12 月 19 日 至 2011 年 12 月 30 日学生姓名班级自动化092学号成绩指导教师(签字)电气与信息工程学院(部)年 月 日单片机课程设计报告姓名: 班级:自动化092 学号:一、 设计任务11 外部脉冲自动计数,自动显示:111设计一个255计数器:0255计数,计满后自动清0,重新计数(在数码管中显示)。112设计一个50000计数器:050000计数,计满后自动清0,重新计数(在数码管中显示)。12 设计一个出租车计费系统: 起步价为5元(2km以内),2km后,0.8元/0.5km;要求每500m刷新计费一次,在8位数码管中,前3位显示数码管显示里程数,后3位数码管显示价钱(角,元,十元,百元)二、 设计思路1硬件模块:采用74ls48译码器和74ls138译码器与数码管组成显示模块:P1口低四位与74ls48相连控制段选,P1高四位与74ls138译码器相连控制位选,小数点DP通过一个反相器与小数点所在位的位地址相连显示。2.程序模块:计数部分:用8位二进制数表示,采用可以重装载的计数器T0模式二进行计数,给T0赋初值0FFH,使每进一个脉冲,T0产生一个溢出中断。中断部分:采用寄存器计数(0-255计数时,采用一个寄存器计数;0-50000计数时,采用三个寄存器计数,分别逢100、100、5进位)显示部分:将寄存器中所计的数值除以100,所得的商就是十进制的百位,再将余数除以10,所得的商就是十进制的十位,所得的余数就是个位。再将所得的十进制数进行译码,并在led数码管上显示出来。(出租车计费器在显示部分之前还需一个数据处理模块,将里程与计费联系起来。)三、 硬件电路设计1.0-255计数2.0-50000计数3.出租车计费(两公里以内)4.出租车计费(两公里以上)四、 源代码设计课程设计之一:外部脉冲自动计数,自动显示。(0255) ;*;课程设计之一:外部脉冲自动计数,自动显示。(0255);设计说明:设计一个255计数器:0255计数,计满后自动清0,重新计数(在数码管中显示)。;运行平台:design1;班级:自动化092;学号:;姓名:;*ORG 0000H AJMP START ORG000BH;T0的中断入口地址 LJMP T0INT ORG0030HSTART: MOV SP,#60H;堆栈指针初始化 MOVTMOD,#06H;T0计数器模式2 MOV TH0,#0FFH;TL0的初值MOV TL0,#0FFH;每进去一次溢出一次MOV R7,#0;R7计数SETB ET0;T0允许SETB TR0;开启T0SETB EA;开中断总开关MAIN: MOVA,R7MOV B,#64HDIV AB;R7/100得到商A为百位上的值,余数放在B中ADDA,#0B0H;加上位选百位MOV R4,A;将百位上的值放到R4中MOVA,BMOV B,#0AHDIVAB;将R7/100的余数除以10,商A为十位上的值,余数B为个位的值ADDA,#0D0H;加上位选十位MOVR3,A;将十位的值放到寄存器R3中MOVA,BADD A,#0E0H;加上位选个位MOVR2,A;将个位的值放到R2中;*;显示部分;*MOV P2,R4 ;显示百位LCALL DELAYMOVP2,R3;显示十位LCALL DELAYMOV P2,R2;显示个位LCALL DELAYSJMP MAIN;循环 ;*;中断部分;*ORG200HT0INT: INC R7 ;计数子程序CJNE R7,#0FFH,AAA ;判断R7所计的数是否达到255,MOV R7,#0 ;R7重新赋初值AAA: RETI;*;延时部分;*ORG300HDELAY:MOVR6,#200 ;延时1msLOOP:NOPNOPNOPDJNZ R6,LOOPRET END课程设计之二:外部脉冲自动计数,自动显示。(050000);*;课程设计之二:外部脉冲自动计数,自动显示。(050000);设计说明:设计一个50000计数器:050000计数,; 计满后自动清0,重新计数(在数码管中显示)。;运行平台:design2;2011/12/27;班级:自动化092;学号:;姓名:;*ORG0000HAJMP STARTORG000BH;T0的中断入口地址LJMP T0INT ORG0030HSTART: MOVSP,#60H;堆栈指针初始化MOVTMOD,#06H;T0计数器模式2 MOVTH0,#0FFH;TL0的初值MOVTL0,#0FFH;每进去一次溢出一次MOVR7,#0;R7计数MOVR6,#0MOV R5,#0SETB ET0;T0允许SETB TR0;开启T0SETB EA;开中断总开关MAIN: MOVA,R6MOV B,#10DIVABMOV R4,A;R6/10的商,即求出千位上的值放入R4中MOV A,BMOV R3,A;R6/10的余数,即求出百位上的值放入R3中MOV A,R7MOV B,#10DIV ABMOV R2,A;R7/10的商,即求出十位上的值放入R2中MOV A,BMOV R1,A;R7/10的余数,即求出个位上的值放入R1中;*;显示部分;*MOV A,R5ADD A,#20H;加上万位的位选MOV P2,A;显示万位LCALL DELAY;调用延时MOV A,R4ADD A,#30H;加上千位的位选MOV P2,A;显示千位LCALL DELAY;调用延时MOV A,R3ADD A,#40H;加上百位的位选MOV P2,A ;显示百位LCALLDELAY;调用延时MOV A,R2ADD A,#50H;加上十位的位选MOVP2,A;显示十位LCALL DELAY;调用延时MOVA,R1ADD A,#60H;加上个位的位选MOVP2,A;显示个位LCALLDELAY;调用延时SJMPMAIN;*;中断部分;*ORG200HT0INT: INC R7 ;计数子程序CJNER7,#1,BBB ;判断计数是否达到50000,与50001比较CJNER5,#5,BBB ;MOV R5,#0 ;若等于50001时,则从00000开始计数MOV R7,#0 ;BBB:CJNE R7,#100,AAA ;R7计数,逢100向R6进1,并清0MOV R7,#0INC R6CJNE R6,#100,AAA ;R6逢100,向R5进1,并清0MOV R6,#0INC R5AAA:RETI;*;延时部分;*ORG300HDELAY:MOVR0,#200 ;延时1msLOOP:NOPNOPNOPDJNZ R0,LOOPRET END课程设计之三:出租车计费系统;*; 课程设计之三:出租车计费系统;设计说明:起步价为5元(2km以内),2km后,0.8元/0.5km; 要求每500m刷新计费一次,在8位数码管中,前3位显示数码; 管显示里程数,后3位数码管显示价钱(角,元,十元,百元);运行平台:design3;2011/12/27;班级:自动化092;学号:;姓名:;*;初始化部分;*ORG0000HAJMP STARTORG000BH;T0的中断入口地址LJMP T0INTORG0030HSTART: MOVSP,#60H;堆栈指针初始化MOVTMOD,#06H;T0计数器模式2 MOVTH0,#9CH;存放TL0的初值MOVTL0,#9CH;每进去一百次溢出一次MOVR7,#5;R7赋初值,每0.5Km刷新一次MOV R5,#0;个位赋初值MOV R4,#0;十位赋初值MOV R2,#20;起初两公里的界限MOV 26H,#5;给26H赋初值,起步价5元CLR F0;用户标志位F0置0CLR PSW.1;用户标志位psw.1置0SETB ET0;T0允许SETB TR0;开启T0SETB EA;开中断总开关;*;数据处理部分;*MAIN: JNB PSW.1,LOOP1 ;psw.1不为0则跳过数据处理模块JNB F0,LOOP1 ;F0不为0则跳过数据处理模块CLR F0 ;F0清0MOV A,R6MOV B,#16 ;将里程小数位乘以价格MUL ABMOV B,#10 DIV ABMOV 20H,B ;里程小数位乘以价格后,把百分位的十进制值放入20HMOV B,#10DIV ABMOV 21H,B ;里程小数位乘以价格后,把计费的十分位的十进制值放入21HMOV 22H,A ;里程小数位乘以价格后,把计费的个位的十进制值放入22H MOV A,R5MOV B,#16 ;将里程个位乘以价格MUL ABMOV B,#10DIV ABMOV 23H,B ;里程个位乘以价格后,把计费的十分位的十进制值放入23HMOV B,#10 DIV ABMOV 24H,B ;里程个位乘以价格后,把计费的个位的十进制值放入24HMOV 25H,A ;里程个位乘以价格后,把计费的十位的十进制值放入25HMOV A,23HADD A,21H ;将23H中的值加上21H中的值ADD A,#8 ;再加上8MOV B,#10DIV AB ;MOV 23H,B ;得到十分位上的最终值ADD A,24H ;将十分位上的进位与放个位值24H中的值相加ADD A,22H ;将22H中的个位值加到A中MOV 24H,A ;将个位的值放到24H中MOV A,R4 MOV B,#16MUL AB;将里程十位上的值乘以价格MOV B,#10DIV ABMOV 26H,B ;将里程十位乘以价格后,把计费的个位的十进制值放入26HMOV B,#10DIV ABMOV 27H,B ;将里程十位乘以价格后,把计费的十位的十进制值放入27HMOV 28H,A ;将里程十位乘以价格后,把计费的百位的十进制值放入28HMOV A,26HADD A,24H ;将(24H)与(26H)相加ADD A,#1 ;再加上1MOV B,#10 DIV AB;将(24H)+(26H)+1所得值十位、个位分离MOV 26H,B ;将个位的最终值赋给26HADD A,27H ;将个位的进位与(27H)相加ADD A,25H ;再加上(25H)MOV B,#10DIV AB ;将个位进位+(25H)+(27H)所得的值百位、十位分离MOV 27H,B ;将十位的最终值赋给27HADD A,28H ;将十位的进位与(28H)相加MOV 28H,A ;将百位上的最终值赋给28H;*;显示部分;*LOOP1:MOV A,23HADD A,#70HMOV P2,ALCALL DELAY;计费显示小数位MOV A,26HADD A,#60HMOV P2,ALCALL DELAY;计费显示个位MOV A,27HADD A,#50HMOV P2,A LCALL DELAY ;计费显示十位MOV A,28HADD A,#40HMOV P2,ALCALL DELAY;计费显示百位MOV A,R4ADD A,#00HMOV P2,A;里程显示十位LCALL DELAYMOV A,R5ADD A,#10HMOV P2,A;里程显示个位LCALL DELAYMOV A,R6ADD A,#20HMOV P2,A;里程显示小数位LCALL DELAYAJMP MAIN;*;中断部分;*ORG200HT0INT: DJNZ R2,CCC ;判断工作后是否达到两公里,若没达到则跳过SETB PSW.1 ;若达到2Km,则标志位psw.1置1CCC:DJNZ R7,BBB ;判断是否每达到0.5Km,没达到则跳过SETB F0 ;若达到则F0置1MOV R7,#5 ;R7重装初值 BBB:INC R6 ;里程小数位,逢10进1CJNE R6,#10,AAAMOV R6,#0 INC R5 ;里程个位,逢10进1CJNE R5,#10,AAAMOV R5,#0INC R4CJNE R4,#10,AAA ;里程十位,逢10进1MOV R4,#0 ;达到最大值时重新开始计数MOV R2,#0CLR PSW.1AAA:RETI;*;延时部分;*ORG300HDELAY:MOVR3,#200 ;延时1msLOOP:NOPNOPNOPDJNZ R3,LOOPRET END五、 心得体会说实话我对单片机还是比较感兴趣的,大二时就在外面报了一个单片机的培训班,由于那里教的是c语言编程,且偏向于应用,所以对单片机的内部结构讲的很粗糙。最小系统自己也焊过,也编了不少程序,但都是c写的。暑假在家时对汇编也研究了一段时间,那本书是微机原理,讲的8086cpu的汇编,开头部分是看的稀里糊涂,但是看到编程那一块才稍微好些。这学期学校开课了,讲的是也汇编,虽然是mcu51的汇编指令,但对于单片机的内部结构讲的比较深,对我的帮助很大,让我对单片机又有了新的认识,以前的一些问题也豁然开朗了,再经过这次的课程设计,对汇编的应用也更加熟练了。在具体说说这次的课程设计吧,总的来说这次的课程设计是不难的,因为这只是一个单任务系统,相比较以前做过的一些多任务的简单多了。但是,以前的都是用c写的,而这次我是用汇编写的,还是有些棘手的地方的。这三个设计任务:从0-255计数,再到0-50000计数,再到最后的出租车计费系统,是一个连续的设计,上一步是下一步的基础,每一步又有所区别。第一个设计计数用一个寄存器就可以搞定,而到第二个实验,一个寄存器就不够用了,所以我用了3个寄存器。到第三个时,又因为加入了计算的部分,又复杂了不少。因此,只有一步一个脚印,做好没一步才能把握住设计的方向。在这次8位CPU的课程设计中,应用的最多的一个功能应该是CPU的定时器/计数器,计数器的应用方法有2种,一是不带中断,直接读取计数器的所计的数,个人觉得这种方法对于数据处理不方便。因此我采用了另一种,是配合定时器中断一起使用,这种方法应该是现实中应用的最多的一种,在定时器中断基础上将时间按片划分,将任务细分,这样不仅使CPU的利用率提高了,且可以更方便的进行数据处理 。采用一些外部芯片可以简化编程工作,但是在实际应用中这都会增加了硬件成本,一般还是优先采用软件解决问题。对于I/O口,这次我也采用了比较节约的方法,即采用P2口既控制数码管位选有控制数码管段选。总而言之,这次课程设计,加深了我对理论知识的理解,而将理论很好地应用到实际当中去满足了我们最大的成就感,而且我们还学会了如何去培养我们的创新精神,从而让我们学会将理论很好地联系实际,不断地去开动自己的大脑,全身心地付出做自己力所能及的事情。我们在这一设计过程中,学会了坚持不懈,不轻言放弃。设计过程,也好比是我们人类成长的历程,常有一些不如意,也许这就是在对我们提出了挑战,勇敢过,也战胜了,胜利的钟声也就一定会为我们而敲响

    注意事项

    本文([论文精品] 对外部脉冲计数及出租车计费系统的设计.doc)为本站会员(小小飞)主动上传,三一文库仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知三一文库(点击联系客服),我们立即给予删除!

    温馨提示:如果因为网速或其他原因下载失败请重新下载,重复下载不扣分。




    经营许可证编号:宁ICP备18001539号-1

    三一文库
    收起
    展开