ImageVerifierCode 换一换
格式:DOCX , 页数:21 ,大小:308.60KB ,
资源ID:23416791      下载积分:3 金币
快捷下载
登录下载
邮箱/手机:
温馨提示:
快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。 如填写123,账号就是123,密码也是123。
特别说明:
请自助下载,系统不会自动发送文件的哦; 如果您已付费,想二次下载,请登录后访问:我的下载记录
支付方式: 支付宝    微信支付   
验证码:   换一换

加入VIP,免费下载
 

温馨提示:由于个人手机设置不同,如果发现不能下载,请复制以下地址【https://www.bdocx.com/down/23416791.html】到电脑端继续下载(重复下载不扣费)。

已注册用户请登录:
账号:
密码:
验证码:   换一换
  忘记密码?
三方登录: 微信登录   QQ登录  

下载须知

1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。
2: 试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。
3: 文件的所有权益归上传用户所有。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 本站仅提供交流平台,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

版权提示 | 免责声明

本文(单片机课程设计出租车计费系统255计数50000计数.docx)为本站会员(b****9)主动上传,冰豆网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知冰豆网(发送邮件至service@bdocx.com或直接QQ联系客服),我们立即给予删除!

单片机课程设计出租车计费系统255计数50000计数.docx

1、单片机课程设计出租车计费系统255计数50000计数 (题目)255计数器、50000计数器、出租车计费系统起电气与信息工程学院单片机课程设计实验报告一、设计任务:11 外部脉冲自动计数,自动显示。111设计一个255计数器:0255计数,计满后自动清0,重新计数(在数码管中显示)。112设计一个50000计数器:050000计数,计满后自动清0,重新计数(在数码管中显示)。12 设计一个出租车计费系统: 起步价为5元(2km以内),2km后,0.8元/0.5km;要求每500m刷新计费一次,在8位数码管中,前3位显示数码管显示里程数,后3位数码管显示价钱(角,元,十元,百元)注:要求首先采用

2、PROTEUS完成单片机最小系统的硬件电路设计及仿真;程序仿真测试通过后,再下载到单片机实训板上执行。二、单片机最小系统硬件资源介绍:1 单片机系统数码管和键盘接口电路2 7279A 资料三、设计思路:1、255计数:255可用8位二进制数表示,故本设计可直接采用可以重装载的计数器T1模式二进行计数。然后对TL1的内容进行相应的二进制-十进制转换:首先TL1的内容除以64H,所的商就是十进制的百位,然后用余数除以0AH,所得的商就是十进制数的十位,余数即相应的十进制的个位。接着将相应的十进制数进行译码,并在LED数码管上显示出来。每来一个脉冲其显示的结果加一,直加至255然后T1重新开始计数。

3、255计数器汇编程序ORG 0000HAJMP STARTORG 0300HSTART:MOV DPTR,#0CFE9H MOV A,#0D1H MOVX DPTR,A NOP NOP NOP NOP NOP NOP NOP NOP MOV TMOD,#50H MOV TH1,#00H MOV TL1,#00H SETB TR1 LOOP1:MOV A,TL1 MOV B,#64H DIV AB MOV R1,A /存百位 MOV A,B MOV B,#0AH DIV AB MOV R2,A /存十位 MOV R3,B /存个位 MOV DPTR,#0CFE9H MOV A,#80H MOVX

4、 DPTR,A /选择第一个显示管 MOV DPTR,#TAB MOV A,R1 MOVC A,A+DPTR MOV DPTR,#0CFE8H MOVX DPTR,A CLR A MOV DPTR,#0CFE9H MOV A,#81H MOVX DPTR,A /选择第二个显示管 MOV DPTR,#TAB MOV A,R2 MOVC A,A+DPTR MOV DPTR,#0CFE8H MOVX DPTR,A CLR A MOV DPTR,#0CFE9H MOV A,#82H MOVX DPTR,A /选择第三个显示管 MOV DPTR,#TAB MOV A,R3 MOVC A,A+DPTR M

5、OV DPTR,#0CFE8H MOVX DPTR,A LJMP LOOP1TAB:DB 3FH,06H,5BH,4FH,66H DB 6DH,7DH,07H,7FH,6FH ENDPROTUES仿真图50000计数器设计思路;由于DIV AB指令中A、B均为8位寄存器,因此255二进制转十进制计数的方法不能用于0-50000的循环计数。可根据TH0(T0计数)或TH1(T1计数)中的内容为多少进行256累加,因为TH0或TH1中每一个二进制1代表十进制的256,再和TL0或TL1按前一步二转十的方法转换得到的百、十、个相加,即可完成16位二进制转十进制50000计数器汇编程序ORG 0000

6、H SJMP START ORG 000BH AJMP T0START: MOV TMOD,#05H ; 用计数器T0工作方式1进行工作 MOV P1,#0 ; 将P1口置0 MOV TH0,#0FFH ; MOV TL0,#0FFH ; 计数器初始化,有一个脉冲即中断 MOV P3,#0 ; 将P3口置0 CLR C ; C置0 MOV DPTR,#TAB ; 指针指向TAB SETB EA ; 总中断控制设为1 SETB ET0 ; T0中断允许控制设为1 MOV R0,#0 ; 个位值清零 MOV R1,#0 ; 十位值清零 MOV R2,#0 ; 百位值清零 MOV R3,#0 ; 千

7、位值清零 MOV R4,#0 ; 万位值清零 SETB TR0 ; 打开T0开关 ACALL T1 ; 显示加等待中断T0: MOV TH0,#0FFH ; MOV TL0,#0FFH ; 中断将计数器初始化 INC R0 ; R0自加1 MOV A,R0 ; 将R0的值赋入A中 CJNE A,#10,AAA ; 比较A是否等于十,如果为十则进位,未满十就继续计数 MOV R0,#0 ; R0置0 INC R1 ; 进位到十位AAA: MOVC A,A+DPTR ; 查表 MOV P2,A ; SETB P1.0 ; 显示个位 ACALL DELAY ; 延时 CLR P1.0 ; MOV A

8、,R1 ; R1的值赋入A中 CJNE A,#10,BBB ; 比较,是否进位 MOV R1,#0 ; 进位 R1置0 INC R2 ; 进位到百位BBB: MOVC A,A+DPTR ; 查表 MOV P2,A ; SETB P1.1 ; 显示十位 ACALL DELAY ; 延时 CLR P1.1 ; MOV A,R2 ; R2赋入百位 CJNE A,#10,CCC ; 比较,是否进位 MOV R2,#0 ; 进位,R2置0 INC R4 ; 进位到千位CCC: MOVC A,A+DPTR ; 查表 MOV P2,A SETB P1.2 ; 显示百位 ACALL DELAY ; 延时 CL

9、R P1.2 MOV A,R3 ; R3赋入A中 CJNE A,#10,DDD ; 比较,是否进位 MOV R3,#0 ; 进位置0 INC R4 ; 进位到万位DDD: MOVC A,A+DPTR ; 查表 MOV P2,A SETB P1.3 ; 显示千位 ACALL DELAY ; 延时 CLR P1.3 MOV A,R4 ; R4赋入A中 CJNE A,#5,EEE ; 比较万位是否到5 MOV R4,#0 ; 万位到5时置0 MOV R3,#0EEE: MOVC A,A+DPTR ; 查表 MOV P2,A ; SETB P1.4 ; 显示万位 ACALL DELAY ; 延时 CL

10、R P1.4 RETIT1:MOV A,R0 ; 等待中断时调用 MOVC A,A+DPTR MOV P2,A SETB P1.0 ACALL DELAY CLR P1.0 MOV A,R1 MOVC A,A+DPTR MOV P2,A SETB P1.1 ACALL DELAY CLR P1.1 MOV A,R2 MOVC A,A+DPTR MOV P2,A SETB P1.2 ACALL DELAY CLR P1.2 MOV A,R3 MOVC A,A+DPTR MOV P2,A SETB P1.3 ACALL DELAY CLR P1.3 MOV A,R4 MOVC A,A+DPTR M

11、OV P2,A SETB P1.4 ACALL DELAY CLR P1.4 AJMP T1DELAY:MOV R7,#10DE1:MOV R6,#50DE2:DJNZ R6,DE2 DJNZ R7,DE1 RETTAB: DB 0C0H,0F9H,0A4H,0B0H,99H,92H,82H,0F8H,80H,90H,88H,83H,0C6H,0A1H,86H,8EH设计思路:在上步的基础上,每1个脉冲当作1公里(可自己设置几个脉冲1公里),5个脉冲,数码管显示05.0 005,前3位金额,后3位为里程,超过5个脉冲,里程加1,金额加0.8元。难点主要在于计费金额的显示,可将初值置为50,其中

12、十位调用带点的字型码,即显示05.0,超过5个脉冲,里程加1,金额加8,由于十位是带有小数点,即可实现金额加0.8元。计费器程序ORG 0000H LJMP START ORG 000BH LJMP T0 JIAO EQU 20H YUAN EQU 21H SHIY EQU 22H BAIY EQU 23H BAIMI EQU 24H LI EQU 25H SHILI EQU 26H ORG 2000H START:MOV TMOD,#06H ;设置计数器T0工作方式2 MOV TH0,#0FFH ; MOV TL0,#0FFH ;初始化 SETB EA ;总中断控制设为1 SETB ET0

13、;T0中断允许控制设为1 SETB TR0 ;打开TR0开关 CLR JIAO MOV YUAN,#5 ;从5元开始计费 CLR SHIY CLR BAIY CLR BAIMI CLR LI CLR SHILI MOV R0,#21 ;超过了两公里换另一种计费方式 MOV DPTR,#TAB A0: ACALL XS AJMP A0 T0: INC BAIMI DJNZ R0,H0 MOV R0,#5 ;每500米更新一次金额 B1: MOV A,JIAO ADD A,#8 ;每次走500米,金额加0.8元 MOV JIAO,A CJNE A,#10,Z0 ;比较是否满十,满十仅进位 MOV

14、JIAO,#0 INC YUAN SJMP Z1 Z0: JC Z1 SUBB A,#10 MOV JIAO,A INC YUAN Z1: MOV A,YUAN CJNE A,#10,Z2 ;比较是否满十,满十仅进位 MOV YUAN,#0 INC SHIY Z2: MOV A,SHIY CJNE A,#10,H0 ;比较是否满十,满十仅进位 MOV SHIY,#0 INC BAIY H0: MOV A,BAIMI CJNE A,#10,Y0 ;比较是否满十,满十仅进位 MOV BAIMI,#0 INC LI Y0: MOV A,LI CJNE A,#10,Z3 ;比较是否满十,满十仅进位 M

15、OV LI,#0 INC SHILI Z3: ACALL XS ZZZ: RETI XS: MOV A,JIAO MOVC A,A+DPTR MOV P2,A ;显示角 SETB P1.0 ; 位选 ACALL W1 CLR P1.0 MOV A,YUAN MOV DPTR,#TAB1 MOVC A,A+DPTR MOV P2,A ;显示元 SETB P1.1 ;位选 ACALL W1 CLR P1.1 MOV DPTR,#TAB MOV A,SHIY MOVC A,A+DPTR MOV P2,A ;显示十元 SETB P1.2 ;位选 ACALL W1 CLR P1.2 MOV A,BAIY

16、 MOVC A,A+DPTR MOV P2,A ;显示百元 SETB P1.3 ;位选 ACALL W1 CLR P1.3 MOV A,BAIMI MOVC A,A+DPTR MOV P2,A ;显示百米(0.1公里) SETB P1.4 ;位选 ACALL W1 CLR P1.4 MOV DPTR,#TAB1 MOV A,LI MOVC A,A+DPTR MOV P2,A ;显示公里数 SETB P1.5 ;位选 ACALL W1 CLR P1.5 MOV DPTR,#TAB MOV A,SHILI MOVC A,A+DPTR MOV P2,A ;显示十公里数 SETB P1.6 ;位选 A

17、CALL W1 CLR P1.6 RET W1: MOV R7,#10 DJNZ R7,$ RET TAB: DB 0C0H,0F9H,0A4H,0B0H,99H,92H,82H,0F8H,80H,90H ; 共阳极数值码 TAB1:DB 40H,79H,24H,30H,19H,12H,02H,78H,00H,10H温度报警器源程序DISPLAY0 EQU 71H ;EQU赋值命令 DISPLAY1 EQU 72H DISPLAY2 EQU 73H ADC EQU 74H ST BIT P1.0 ;将P2.5地址赋值给START EOC BIT P1.1 ;将P2.6地址赋值给EOC OE B

18、IT P1.2 ;将P2.7地址赋值给OE ORG 00H SJMP STARTSTART: CLR P3 ;P3清零,为报警电路做准备 MOV P1.2,#1 ;P2.7 给高电平,OE高电平有效 MOV DISPLAY0,#0FFH ;给数码管赋初值 MOV DISPLAY1,#0FFH MOV DISPLAY2,#0FFH MOV DPTR,#TABLE ;跳转至表格 MOV TMOD,#02H ;工作方式二 8-bit定时/计数(自动重装初值) MOV TH0,#0F5H ;定时计数器高八位付初值 MOV TL0,#00H MOV IE,#82H ;EA=1,ET0=1 溢出中断位允许

19、中断 SETB TR0 ;启动定时器TR0 开始运行 WAIT:CLR ST ;转换启动信号STARK清零 SETB ST ;启动转换信号 CLR ST JNB EOC,$ ;EOC为转换结束线,高电平为转换结束 ;当EOC=0时 转移到本指令首地址 SETB OE ;输出转换得到的数据 MOV ADC,P1 ;OE=1时 将AD信号存入ADC中 CLR OE ;输出数据线呈高阻态 给第一个数码管的值 MOV A,ADC MOV B,#51 ;DOUT=VIN*51为AD转换得出数据 DIV AB ;DOUT/51为 DISPLAY2值 MOV DISPLAY2,A ;给第一个数码管的值 报警

20、程序 MOV R0,#2 SUBB A,R0 JC LOOP1 ;如果A大于R0(大于2)则转移至LOOP1 MOV P3,00H ;否则 给第二,第三个数码管的值LOOP2:MOV A,B MOV B,#5 DIV AB MOV DISPLAY1,A ;分别得到DISPLAY1 DISPLAY0的值 MOV A,B MOV DISPLAY0,A LCALL DISP SJMP WAIT ;等待再次得到ADC RETI 数码管点亮程序 DISP:MOV A,DISPLAY0 MOVC A,A+DPTR CLR P1.6 ;位选第一个数码管 低电平有效 MOV P0,A ;点亮第一个数码管 NO

21、P NOP NOP NOP NOP NOP SETB P1.6 ;重新置一(动态扫描) MOV A,DISPLAY1 MOVC A,A+DPTR CLR P1.5 MOV P0,A ;点亮第二个数码管 NOP NOP NOP NOP NOP NOP SETB P1.5 MOV A,DISPLAY2 MOVC A,A+DPTR CLR P1.4 ORL A,#80H ;或指令点亮数码管点号 MOV P0,A ;点亮第三个数管 NOP NOP NOP NOP NOP NOP SETB P1.4 RET 表格 TABLE:DB 3FH,06H,5BH,4FH,66H DB 6DH,7DH,07H,7

22、FH,6FH点亮报警电路数码管LOOP1:MOV P3.1,#1 LJMP LOOP2 END温度报警器仿真图心得体会:通过此次课程设计,使我更加扎实的掌握了有关单片机方面的知识,在设计过程中虽然遇到了一些问题,但经过一次又一次的思考,一遍又一遍的检查终于找出了原因所在,也暴露出了前期我在这方面的知识欠缺和经验不足。实践出真知,通过亲自动手操作,使我们掌握的知识不再是纸上谈兵。过而能改,善莫大焉。在课程设计过程中,我们不断发现错误,不断改正,不断领悟,不断获龋最终的检测调试环节,本身就是在践行“过而能改,善莫大焉”的知行观。这次课程设计终于顺利完成了,在设计中遇到了很多问题,最后在老师的指导下,终于游逆而解。在今后社会的发展和学习实践过程中,一定要不懈努力,不能遇到问题就想到要退缩,一定要不厌其烦的发现问题所在,然后一一进行解决,只有这样,才能成功的做成想做的事,才能在今后的道路上劈荆斩棘,而不是知难而退,那样永远不可能收获成功,收获喜悦,也永远不可能得到社会及他人对你的认可!

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1