欢迎来到淘文阁 - 分享文档赚钱的网站! | 帮助中心 好文档才是您的得力助手!
淘文阁 - 分享文档赚钱的网站
全部分类
  • 研究报告>
  • 管理文献>
  • 标准材料>
  • 技术资料>
  • 教育专区>
  • 应用文书>
  • 生活休闲>
  • 考试试题>
  • pptx模板>
  • 工商注册>
  • 期刊短文>
  • 图片设计>
  • ImageVerifierCode 换一换

    出租车计程计价器的设计.doc

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

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

    出租车计程计价器的设计.doc

    【精品文档】如有侵权,请联系网站删除,仅供学习与交流出租车计程计价器的设计.精品文档. 出租车计程计价器的设计一·课程设计目的与要求 为了能够精确地测量出租车行驶的路程和计算出该路程所需的价格,并显示出路程值和所需的钱值,基于单片机MCS-51能够完成该工作。 利用实验室提供的设配,利用实验箱上LED显示器设计能够显示6位(前四位是价钱值,后两位路程值),利用实验箱上提供的外部脉冲作为车轮走过的路程(设车轮直径为D=60cm,S=D=2m),设起步价为12.5元,超过3km,超出的每千米按2.4元计算,同时包含停车每超过45s又要加6角。二·设计方案 (1)设计原理 1.利用发光二级管L0灭来辨识有乘客,亮时没有乘客。通过开关K1来控制。具体接线是将P1.1与L0相连,P3.3与K1相连。利用实验箱上的直流电机转速产生的脉冲作为T0的外来计数脉冲。具体接线是将P3.4与实验箱上的CKMOT(CKMOT即是直流电机转数产生脉冲输出端)相连。 2.规定如下:起始价为12.5元,若在3Km以内则应付费12.5元,如果超过了3Km则应按超过3km的另外以每千米2.4元计算,及总价为 JJ=12.5+(S-3)×2.4元 。若途中因为红灯或塞车的原因停车则每停车45秒要另加0.6元即JJ=JJ+0.6.如举个例子S=85km,中途没有停车则JJ=12.5+(85-3)×2.4=209.3(元)则6个数码管将显示“209.3 85” 3.具体过程叙述如下:程序一开始由于CLR p1.1知L0亮,并且开始时开关K1置1档,直到有乘客上车时,把开关打向0档,L0灭,同时显示器开始计程计价(开始显示为“12.5 00")之后车轮每转一圈相当于输出一个外部脉冲到P3.4,利用T0计数,T0每计125则T0中断一次,由于1km=4×125×2(车轮每转一圈则路程为2m),即在T0中断程序中还有一个计中断次数的。在本设计中用到6个数码管分别为 百元,十元,元,角,十千米,千米。程序中用十进制BCD码来表示价钱和路程,因此要用到将BCD码转换成非压缩的BCD码来驱动数码管显示。即用 30H 存储路程S(压缩BCD码)。另外用31H,32H来存储计价值JJ的压缩BCD码,高字节放在32H中(百元,十元),低字节放在31H中(元,角),开始计价时30H为0,32H中为1(10元)31H中为25(二元五角)。调用BCDZH将BCD码转成非压缩BCD码在调用DISP显示函数驱动数码管显示。在T0中断中若S>3km则调用BCDJ24即以后每千米加2.4元,在调用BCDZH和DISP显示路程和价钱。注意30H32H中对应的非压缩BCD码存放在40H45H(40H存放一千米,41H存放十千米,42H存放角,43H存放元,44H存放十元,45H存放百元)。程序中还用T1定时器来检测是否处于停车状态,由晶振频率fosc=12MHz,T1定时为50ms,每过5S(100*0.1)检测一次TL0中的数据是否与上次相同,若相同则认为停车状态,直到检测了9次(9*5=45S)则就要加6角,之后再调用BCDZH和DISP驱动显示器,显示计价计程,又清零重新记录停车时间。此程序中比较特殊在于,T0每次中断恰好走过250m,及恰好也是调用BCDJ6,这就省略了一些计算步骤。三·硬件系统说明和电路图原理 8279P1.1P3.3P3.4 Mcs-51+5vK1 数码管显示器使用六位 ckmot同样不用再连,箱上已连接实验箱上已连接好,不用再连 四·程序模块主要流程图和源程序及注释程序流程图 开始,设置S,JJ存储单元程序 系统初始状态化,状态码清零,S,JJ设置初值,T0计数,T1定时,R7,R3,R4,R5设置初值中断子程序:T!INT,T0INT中断返回调用DISP,等待中断,T0,T1,进入中断设计,子程序BCDZH,BCDJ6,T0INT,T!INT,又循环调用DISP源程序代码:QDJ EQU 125;起步价12.5元GLJ EQU 24;每公里价2.4元S EQU 30H ;路程压缩BCD码存放30HJJDZJ EQU 31H;计价值低字节存放在31H压缩BCD码,元,角JJGZJ EQU 32H;计价值高字节存放在32H压缩BCD码,百元,十元SGW EQU 40H;路程个位非压缩BCD码,kmSSW EQU 41H ;路程十位非压缩BCD码,10kmJJJ EQU 42H ;计价值角位,非压缩BCD码JJY EQU 43H ;计价值元位,非压缩BCD码JJSY EQU 44H;计价值十元位,非压缩BCD码JJBY EQU 45H;计价值百元位,非压缩BCD码 ORG 0000H;程序开始 LJMP MAIN ORG 000BH LJMP T0INT ORG 001BH LJMP T1INTMAIN: MOV SP,#60H MOV DPTR,#5FFFH ;显示初始化 MOV A,#0DCH MOVX DPTR,ALP: MOVX A,DPTR JNB ACC.7,LP MOV A,#00H MOVX DPTR,A MOV A,#34H MOVX DPTR,A MOV TMOD,#16H ;T0计数,模式二,T1定时,模式一 MOV TH0,#83H ;T0计数初值,每计到125,中断一次 MOV TL0,#83H MOV TH1,#3CH ;T1定时初值,每50ms,中断一次 MOV TL1,#0B0H MOV R7,#00H ;T0中断的次数,4次则路程加1kmMOV R3,#83H ;用于存放每次TLTLO中数 MOV R4,#00H ;T1中断子程序中100次,则5s检测车是否停车状态 MOV R5,#00H ;T1中断子程序中90次,则停车45s,加6角 SETB EA ;开启cpu中断,T0,T1中断 SETB ET1 SETB ET0 SETB PT0 ;T0中断优先级高 CLR P1.1 ;无乘客L0亮灯 MOV SGW, #00H ;显示位清零 MOV SSW,#00H MOV JJJ,#00H MOV JJY,#00H MOV JJSY,#00H MOV JJBY,#00H ;ACALL DISP JB P3.3,$ ;有乘客时,开始启动T0计数,T1定时,开关K1控制 SETB TR0 SETB TR1 CLR P1.1 ;有乘客时L0灭灯 MOV S,#00H ;路程初始值0km MOV JJGZJ,#01H ;计价初始值12.5元 MOV JJDZJ,#25H ACALL BCDZH ;调用BCD转换程序,成非压缩BCD码LL: ACALL DISP ;调用显示程序,并等待中断 LJMP LL;将压缩BCD码转换成非压缩BCD码子程序如下BCDZH: PUSH PSW SETB RS0 ;选用工作寄存器组0 MOV R0,#S ;S的转换 MOV R1,#SGWLPB: MOV A,R0 MOV R2,A ANL A,#0FH ;保留低四位 MOV R1,A INC R1 MOV A,R2 ANL A,#0F0H ;保留高四位, SWAP A MOV R1,A INC R0 ;计价值的转? INC R1 CJNE R0,#33H,LPB CLR RS0 ;选回工作寄存器组0 POP PSW RET;T0中断子程序T0INT: PUSH PSW INC R7 CJNE R7,#04H,LPT0;路程不满1km,S不加1,转到LPTO MOV A,S ;S+1 ADD A,#01H DA A MOV S,A MOV R7,#00H ;R7复0LPT0: MOV A,S ;S是否大于3km CLR C SUBB A,#03H JC FH0 ;S<3,转到FH0 ; MOV A,S ; CLR C ;SUBB A,#6 ;JC L3 ;ACALL BCDJ12 ;LJMP FH0L3: ACALL BCDJ6 ;由于每次计数125,中断一次,125*2=250m,即中断一次加0.6元FH0: ACALL BCDZH ;调用bcd码转换成非压缩bcd码,驱动数码管显示 ;ACALL DISP POP PSW RETI;BCDJ6子程序,T0中断一次250m就加6角,使用压缩BCD码BCDJ6: MOV A,JJDZJ ADD A,#06H DA A MOV JJDZJ,A MOV A,JJGZJ ADDC A,#00H DA A MOV JJGZJ,A RET ;附加的;BCDJ12: MOV A,JJDZJ ;ADD A,#12;DA A;MOV JJDZJ,A;MOV A,JJGZJ;ADDC A,#0;DA A;MOV JJGZJ,A;RET;T1中断子程序 T1INT:PUSH PSW MOV TH1,#3CH MOV TL1,#0B0H INC R4 CJNE R4,#64H,LY ;未到5s,转到LY MOV R4,#00H ;R4复0MOV A,TL0CLR C SUBB A,R3 ;5s检测是否停车,JNZ LY2 ;A=0,R3=TL0,A!=0->LY2 INC R5 CJNE R5,#09H,LY2 ;是否停了45s MOV R5,#00H ;R5复0 ACALL BCDJ6 ;停车45s加6角 ACALL BCDZHLY2: MOV R3,TL0 ;用于存放每次TL0的值LY: POP PSW RETI;显示子程序DISP: MOV R3,#06H ;显示的位数 MOV A,#92H ;输出写显示RAM命令字 MOV DPTR,#5FFFH ;指向8279命令口 MOVX DPTR,A ;起始地址为0单元,自动加1 MOV R1,#SGW ;要显示数据的存放单元首地址TY11: MOV A,R1 MOV DPTR,#CODE1 ;#CODE1为查表偏移量 MOVC A,A+DPTR ;查表得到段码 MOV DPTR,#5EFFH ;指向8279数据口 MOVX DPTR,A ;写入显示RAM INC R1 DJNZ R3,TY11 RETCODE1: DB 0C0H,0F9H,0A4H,0B0H,99H ;段码表(共阳极) DB 92H,82H,0F8H,80H,90H,88H DB 83H,0C6H,0A1H,86H,8EH,8CH DB 0C1H,89H,0C7H,0BFH,91H DB 00H,0FFH END五·课程设计总结 这次单片机课程设计对于自己来说,收获很多。通过这次包括汇编编程和对硬件的操作在内的,由自己动手实践的,在体提高自己编程能力方面和对单片机硬件操作能力方面都有一个很大的提高。由开始选题然后找到相关参考书,试着编写程序,到最后逐步的修改,碰到问题找老师和同学帮助(如如何提供外部脉冲来源,单步调式,设置断点等),最后能够在实验箱实现,这过程中收获颇多。总之,这次课程设计即有加深对课本知识了解,也加强了自己操作和编程能力。六·参考书目【1】王琼,单片机原理及应用实验教程。合肥:合肥工业大学出版社,2005【2】王琼,单片机原理及应用。合肥:合肥工业大学出版社,2008【3】张大明,单片机控制实训指导及综合应用实例。机械工业出版社。2008

    注意事项

    本文(出租车计程计价器的设计.doc)为本站会员(豆****)主动上传,淘文阁 - 分享文档赚钱的网站仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知淘文阁 - 分享文档赚钱的网站(点击联系客服),我们立即给予删除!

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




    关于淘文阁 - 版权申诉 - 用户使用规则 - 积分规则 - 联系我们

    本站为文档C TO C交易模式,本站只提供存储空间、用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。本站仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知淘文阁网,我们立即给予删除!客服QQ:136780468 微信:18945177775 电话:18904686070

    工信部备案号:黑ICP备15003705号 © 2020-2023 www.taowenge.com 淘文阁 

    收起
    展开