已阅读5页,还剩18页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
湖南工业大学课程设计资料袋学院(系、部) 电气与信息工程 学院(系、部) 2013 - 2014 学年第 1 期 课程名称 单片机应用系统 指导教师 石伟 职称 副教授 学生姓名 专业班级 学号 题 目 对外部脉冲计数及出租车计费系统的设计 起止日期 2013 年 12 月 9 日 2013 年 12 月 22 日目 录 清 单序号材 料 名 称资料数量备 注1课程设计任务书12课程设计说明书13课程设计图纸13张456课程设计任务书2013 2014学年第 1 学期 电气与信息工程 学院(系、部) 电气工程及自动化 专业 1102 班级课程名称: 单片机应用系统 设计题目: 对外部脉冲计数及出租车计费系统的设计 完成期限:自 2013 年 12 月 9 日至 2013 年 12 月 22 日共 2 周内容及任务11 外部脉冲自动计数,自动显示。111设计一个255计数器:0255计数,计满后自动清0,重新计数(在数码管中显示)。112设计一个50000计数器:050000计数,计满后自动清0,重新计数(在数码管中显示)。12 设计一个出租车计费系统: 起步价为5元(2km以内),2km后,0.8元/0.5km;要求每500m刷新计费一次,在8位数码管中,前3位显示数码管显示里程数,后3位数码管显示价钱(角,元,十元,百元)进度安排起止日期工作内容2013.12.9讲述设计内容及基本原理2013.12.10-2011.12.18进行系统的设计2013.12.18-2013.12.22进行系统的调试主要参考资料1 刘苗生、潘宗预. 单片机测控系统设计. 中国物质出版社,2006年2王爽 汇编语言 清华大学出版社, 2009年3 郭天祥 新概念51单片机教程 电子工业出版社 ,2009年指导教师(签字): 年 月 日系(教研室)主任(签字): 年 月 日(单片机应用系统)设计说明书(题目)对外部脉冲计数及出租车计费系统的设计起止日期: 2013 年 12 月 9 日 至 2013年 12 月 22 日学生姓名班级学号成绩指导教师(签字) 电气与信息工程学院(部) 年 月 日一、设计任务:11 外部脉冲自动计数,自动显示。111设计一个255计数器:0255计数,计满后自动清0,重新计数(在数码管中显示)。112设计一个50000计数器:050000计数,计满后自动清0,重新计数(在数码管中显示)。12 设计一个出租车计费系统: 起步价为5元(2km以内),2km后,0.8元/0.5km;要求每500m刷新计费一次,在8位数码管中,前3位显示数码管显示里程数,后3位数码管显示价钱(角,元,十元,百元)注:要求首先采用PROTEUS完成单片机最小系统的硬件电路设计及仿真;程序仿真测试通过后,再下载到单片机实训板上执行。二、设计原理及思路1. 设计一个255计数器:0255计数,计满后自动清0,重新计数(在数码管中显示)。原理:255可用8位二进制数表示,故本设计可直接采用可以重装载的计数器T1模式二进行计数。然后对TL1的内容进行相应的二进制-十进制转换:首先TL1的内容除以64H,所的商就是十进制的百位,然后用余数除以0AH,所得的商就是十进制数的十位,余数即相应的十进制的个位。接着将相应的十进制数进行译码,并在LED数码管上显示出来。每来一个脉冲其显示的结果加一,直加至255然后T1重新开始计数。2设计一个50000计数器:050000计数,计满后自动清0,重新计数(在数码管中显示)。原理: 将TH1和TL1中的十六进制数转为BCD码,;入口:HT1,TL1中是 16 位二进制数,其中TH1中是高 8 位;;出口:R2 R3 R4 中是 BCD 码,其中R2中是万位,R3中是千、百位,R4中是十、个位。再转为对应的个.十.百.千.万位。送到缓冲区。接着调用显示子程序。3.设计一个出租车计费系统: 起步价为5元(2km以内),2km后,0.8元/0.5km;要求每500m刷新计费一次,在8为数码管中,前3为显示数码管显示里程数,后3位数码管显示价钱(角,元,十元,百元)原理:计数器每计数100个外部脉冲就产生中断,里程加1百米,大于两千米百位就和5和0比较,如果相等就调用价格计算子程序,价格加0.8元。然后返回中断,调用里程和价格显示子程序。三、PROTEUS硬件电路图1.255计数器2.50000计数器3. 出租车计费系统 四、调试程序1.255计数器BIT_COUNT DATA 07FH TIMER DATA 07EH TIMER1 DATA 07DH SHIWEI_DATA DATA 07CH BAI DATA 07BH SHI DATA 07AH GEWEI DATA 079H DATA_IN DATA 020H DATA_OUT DATA 021H KEY BIT P1.3 ;7279的KEY连接于P1.3 CLK BIT P1.6 ;7279的CLK连接于P1.6 DAT BIT P1.7 ;7279的DATA连接于P1.7 CS BIT P2.7 ;7279的CS连接于P2.7 ORG 000H JMP STARTORG 100HSTART: MOV SP,#2FH ;定义堆栈 MOV P1,#11011011B ;I/O口初始化MOV TIMER,#50 CALL START_DELAY ;7279上电复位后要延时25ms MOV DATA_OUT,#10100100B ;发复位指令 CALL SEND SETB CS ;复位CS为高电平MOV TMOD,#05H ;定时器 T0初始化(计数) SETB TR0 ;启动T0 MAIN: MOV A,TL0 CALL BCD ;数据BCD转换CALL DISP ;数码管显示 JMP MAIN;*; 发送子程序;*SEND: MOV BIT_COUNT,#8 CLR CS CALL LONG_DELAYSEND_LOOP: MOV C,DATA_OUT.7 MOV DAT,C SETB CLK MOV A,DATA_OUT RL A MOV DATA_OUT,A CALL SHORT_DELAY CLR CLK CALL SHORT_DELAY DJNZ BIT_COUNT,SEND_LOOP CLR DAT RET;*; 接收子程序;*RECEIVE: MOV BIT_COUNT,#8 SETB DAT CALL LONG_DELAYRECEIVE_LOOP: SETB CLK CALL SHORT_DELAY MOV A,DATA_IN RL A MOV DATA_IN,A MOV C,DAT MOV DATA_IN.0,C CLR CLK CALL SHORT_DELAY DJNZ BIT_COUNT,RECEIVE_LOOP CLR DAT RET;*; BCD码调整子程序;*BCD: ;BCD码调整子程序 MOV B,#64H DIV AB MOV BAI,A ;保存百位 MOV A,B MOV B,#0AH DIV AB MOV SHI,A ;保存十位 MOV GEWEI,B ;保存个位 RET;*; 显示子程序;*DISP: CLR CS ;显示子程序MOV DATA_OUT,#10000010B CALL SEND MOV DATA_OUT,BAI CALL SEND MOV DATA_OUT,#10000001B CALL SEND MOV DATA_OUT,SHI CALL SENDMOV DATA_OUT,#10000000B CALL SEND MOV DATA_OUT,GEWEI CALL SEND SETB CS RET;*; 长延时子程序;*LONG_DELAY: MOV TIMER,#80DELAY_LOOP: DJNZ TIMER,DELAY_LOOP RET;*; 短延时子程序;*SHORT_DELAY:MOV TIMER,#6SHORT_LP: DJNZ TIMER,SHORT_LP RET ;*; 启动延时子程序;*START_DELAY: MOV TIMER1,#255START_DELAY1:DJNZ TIMER1,START_DELAY1 DJNZ TIMER,START_DELAY RET END2.50000计数器BIT_COUNT DATA 07FH TIMER DATA 07EH TIMER1 DATA 07DH JL_HDATA DATA 07CH JL_LDATA DATA 07BH WAN DATA 07AH QIAN DATA 079H BAI DATA 078H SHI DATA 077H GEWEI DATA 076H YICHU DATA 075H DATA_IN DATA 020H DATA_OUT DATA 021H KEY BIT P1.3 ;7279的KEY连接于P1.3 CLK BIT P1.6 ;7279的CLK连接于P1.6 DAT BIT P1.7 ;7279的DATA连接于P1.7 CS BIT P2.7 ;7279的CS连接于P2.7 ORG 000H JMP STARTORG 100HSTART: MOV SP,#2FH ;定义堆栈 MOV P1,#11011011B ;I/O口初始化MOV TIMER,#50 CALL START_DELAY ;7279上电复位后要延时25ms MOV DATA_OUT,#10100100B ;发复位指令 CALL SEND SETB CS ;复位CS为高电平MOV TMOD,#05H ;定时器 T0初始化(计数) SETB TR0 ;启动T0 ; MOV TL0,#4DH ; MOV TH0,#0C3HMAIN: MOV GEWEI,#00H MOV SHI,#00H MOV BAI,#00H MOV QIAN,#00H MOV WAN,#00H MOV YICHU,#00H ; MOV A,TL0 ;INC A ;MOV TL0,A MOV A,TL0CALL BCDA ;MOV A,GEWEI ;MOV A,SHI ;MOV A,BAI ;MOV A,#0C3H MOV A,TH0 CALL BCDB ;数据BCD转换 CALL DISP ;数码管显示 MOV A,TL0 MOV A,TH0 ; MOV A,GEWEI ; MOV A,SHI ; MOV A,BAI ; MOV A,QIAN ;MOV A,WAN JMP MAIN;*; 发送子程序;*SEND: MOV BIT_COUNT,#8 CLR CS CALL LONG_DELAYSEND_LOOP: MOV C,DATA_OUT.7 MOV DAT,C SETB CLK MOV A,DATA_OUT RL A MOV DATA_OUT,A CALL SHORT_DELAY CLR CLK CALL SHORT_DELAY DJNZ BIT_COUNT,SEND_LOOP CLR DAT RET;*; 接收子程序;*RECEIVE: MOV BIT_COUNT,#8 SETB DAT CALL LONG_DELAYRECEIVE_LOOP: SETB CLK CALL SHORT_DELAY MOV A,DATA_IN RL A MOV DATA_IN,A MOV C,DAT MOV DATA_IN.0,C CLR CLK CALL SHORT_DELAY DJNZ BIT_COUNT,RECEIVE_LOOP CLR DAT RET;*; BCD码调整子程序;*BCDA: ;BCD码调整子程序 低八位 MOV B,#64H DIV AB MOV BAI,A ;保存百位 MOV A,B MOV B,#0AH DIV AB MOV SHI,A ;保存十位 MOV GEWEI,B ;保存个位 RETBCDB: ;BCD码调整子程序 高八位 MOV R2,00H MOV R3,00H MOV R4,00H MOV B,#64H DIV AB MOV R2,A ;保存百位 MOV A,B MOV B,#0AH DIV AB MOV R3,A ;保存十位 MOV R4,B ;保存个位 ;高八位实际BCD码调整 MOV A,R4 MOV B,#06H MUL AB MOV B,#0AH DIV AB ADD A,SHI MOV SHI,A MOV R7,B MOV A,R7 ADD A,GEWEI MOV GEWEI,A MOV A,R4 MOV B,#05H MUL AB MOV B,#0AH DIV AB ADD A,BAI MOV BAI,A MOV R7,B MOV A,R7 ADD A,SHI MOV SHI,A MOV A,R4 MOV B,#02H MUL AB MOV B,#0AH DIV AB ADD A,QIAN MOV QIAN,A MOV R7,B MOV A,R7 ADD A,BAI MOV BAI,A MOV A,R3 MOV B,#06H MUL AB MOV B,#0AH DIV AB ADD A,BAI MOV BAI,A MOV R7,B MOV A,R7 ADD A,SHI MOV SHI,A MOV A,R3 MOV B,#05H MUL AB MOV B,#0AH DIV AB ADD A,QIAN MOV QIAN,A MOV R7,B MOV A,R7 ADD A,BAI MOV BAI,A MOV A,R3 MOV B,#02H MUL AB MOV B,#0AH DIV AB ADD A,WAN MOV WAN,A MOV R7,B MOV A,R7 ADD A,QIAN MOV QIAN,A MOV A,R2 MOV B,#06H MUL AB MOV B,#0AH DIV AB ADD A,QIAN MOV QIAN,A MOV R7,B MOV A,R7 ADD A,BAI MOV BAI,A MOV A,R2 MOV B,#05H MUL AB MOV B,#0AH DIV AB ADD A,WAN MOV WAN,A MOV R7,B MOV A,R7 ADD A,QIAN MOV QIAN,A MOV A,R2 MOV B,#02H MUL AB MOV B,#0AH DIV AB ADD A,YICHU MOV YICHU,A MOV R7,B MOV A,R7 ADD A,WAN MOV WAN,A MOV A,GEWEI MOV B,#0AH DIV AB ADD A,SHI MOV SHI,A MOV GEWEI,B MOV A,SHI MOV B,#0AH DIV AB ADD A,BAI MOV BAI,A MOV SHI,B MOV A,BAI MOV B,#0AH DIV AB ADD A,QIAN MOV QIAN,A MOV BAI,B MOV A,QIAN MOV B,#0AH DIV AB ADD A,WAN MOV WAN,A MOV QIAN,B MOV A,WAN MOV B,#0AH DIV AB ADD A,YICHU MOV YICHU,A MOV WAN,B RET;*; 显示子程序;*DISP: CLR CS MOV DATA_OUT,#10000100B CALL SEND MOV DATA_OUT,WAN CALL SEND MOV DATA_OUT,#10000011B CALL SEND MOV DATA_OUT,QIAN CALL SENDMOV DATA_OUT,#10000010B CALL SEND MOV DATA_OUT,BAI CALL SEND MOV DATA_OUT,#10000001B CALL SEND MOV DATA_OUT,SHI CALL SENDMOV DATA_OUT,#10000000B CALL SEND MOV DATA_OUT,GEWEI CALL SEND SETB CS MOV A,WAN CJNE A,#5,LOOPL LOOPL: JC LOOP ; MOV R6,TL0 ; MOV A,TH0 ; CJNE A,#0C3H,LOOP ;CJNE R6,#50H,LOOP MOV TH0,#00H MOV TL0,#00H LOOP:RET;*; 长延时子程序;*LONG_DELAY: MOV TIMER,#80DELAY_LOOP: DJNZ TIMER,DELAY_LOOP RET;*; 短延时子程序;*SHORT_DELAY:MOV TIMER,#6SHORT_LP: DJNZ TIMER,SHORT_LP RET;*; 启动延时子程序;*START_DELAY: MOV TIMER1,#255START_DELAY1:DJNZ TIMER1,START_DELAY1 DJNZ TIMER,START_DELAY RET END3.出租车计费系统#include #include #define uint unsigned int#define uchar unsigned char#define PIN 0x80sbit KEY=P13;sbit CLK=P16;sbit DAT=P17;sbit CS=P27;uchar data_out,dianli,shili,li,yuan,shiyuan,jiao;uint licheng,zongjia;void long_delay() uchar a; for(a=0;a=50;a+) _nop_(); void short_delay() uchar b; for(b=0;b=8;b+) _nop_(); void sendbyte(uchar data_out)uchar i;CS=0;long_delay();for(i=0;i8;i+)if(data_out&0x80) DAT=1;else DAT=0;CLK=1;short_delay(); CLK=0;short_delay();data_out=data_out1;DAT=0;void xianshi_7279(uchar a, uchar b) /*显示第a个数b*/sendbyte(a);sendbyte(b);void bcd()/*调整bcd码*/shili=(licheng%1000)/100;li=(licheng%100)/10;dianli=licheng%10;shiyuan=zongjia/1000;yuan=(zongjia%1000)/100;jiao=(zongjia%100)/10;void display()xianshi_7279(PIN+5,shili);xianshi_7279(PIN+4,li+128);xianshi_7279(PIN+3,dianli);xianshi_7279(PIN+2,shiyuan);xianshi_7279(PIN+1,yuan+128);xianshi_7279(PIN,jiao);void main()uint t;P1=0xdb;for (t=0;t0x2000;t+) ;sendbyte(0xa4); /*复位*/CS=1;TMOD=0X05; /*开工作方式0*/TR0=1;while(1) licheng=(TH0*256+TL0)*5;if(licheng=10000)TH0=0;TL0=0; bcd(); display(); 五、心得体会作为一名电气工程及自动化专业的大三学生,我觉得做单片机课程设计是十分有意义的,而且是十分必要的。在已度过的大学时间里,我们大多数接触的是专业课。我们在课堂上掌握的仅仅是专业课的理论知识,如何去锻炼我们的实践能力?如何把我们所学的专业基础课理论知识运用到实践中去呢?我想做类似的课程设计就为我们提供了良好的实践平台。 开始的第一天就自己做的是0到255的计数器,我们上课是只上到定时器那一章节,对于后面的数码管显示没有讲到,但是这次却要用到数码管显示数据,所以开始知识知道要用到定时器,在TH、TL里面放个初值,然后启动定时/计数器就可以开始计数了,然后到了255个后又重新开始,但是怎么把所记的脉冲数显示出来却不懂。专门把书好好看了遍,数码管显示知道是怎么回事后就可以开始了。 完成这次的单片机课程设计花费将近一周时间,但是却从理论到实践,学到了很多的东西。同时不仅巩固了以前所学过的知识。通过这次课程设计使我懂得了理论与实际相
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 护理学2025年病理学测试试卷(含答案)
- 人教部编版八年级上册(道德与法治)善用法律教学设计
- 衣服定做转让合同范本
- 购房合同转让协议模板
- 美术画桌购销合同范本
- 监理合同停工补充协议
- 阀门产品购销合同范本
- 行政套房买卖合同范本
- 购房合同补充平台协议
- 美容店学徒合同协议书
- 质量管理与思政
- 2025年度哈尔滨“丁香人才周”(春季)民兵教练员补充招聘20人笔试考试备考题库及答案解析
- 足疗服务篇培训
- (人教版205新教材)英语三年级上册核心基础知识清单年
- 代谢综合征麻醉管理要点
- 2025年教师资格考试《学科教学论》备考题库及答案解析
- 2025浙江金华市交通投资集团有限公司招聘笔试笔试历年参考题库附带答案详解
- 网吧消防演练方案及流程
- 2025年秋青岛版(五四学制)(2024)小学数学二年级上册《智慧广场-简单的周期问题(一)》教案
- 观赏鱼买卖合同(标准版)
- 自行式剪刀车作业平台施工方案
评论
0/150
提交评论