单片机课程设计对外部脉冲计数及出租车计费系统的设计.docx

上传人:b****8 文档编号:12594080 上传时间:2023-06-06 格式:DOCX 页数:22 大小:201.65KB
下载 相关 举报
单片机课程设计对外部脉冲计数及出租车计费系统的设计.docx_第1页
第1页 / 共22页
单片机课程设计对外部脉冲计数及出租车计费系统的设计.docx_第2页
第2页 / 共22页
单片机课程设计对外部脉冲计数及出租车计费系统的设计.docx_第3页
第3页 / 共22页
单片机课程设计对外部脉冲计数及出租车计费系统的设计.docx_第4页
第4页 / 共22页
单片机课程设计对外部脉冲计数及出租车计费系统的设计.docx_第5页
第5页 / 共22页
单片机课程设计对外部脉冲计数及出租车计费系统的设计.docx_第6页
第6页 / 共22页
单片机课程设计对外部脉冲计数及出租车计费系统的设计.docx_第7页
第7页 / 共22页
单片机课程设计对外部脉冲计数及出租车计费系统的设计.docx_第8页
第8页 / 共22页
单片机课程设计对外部脉冲计数及出租车计费系统的设计.docx_第9页
第9页 / 共22页
单片机课程设计对外部脉冲计数及出租车计费系统的设计.docx_第10页
第10页 / 共22页
单片机课程设计对外部脉冲计数及出租车计费系统的设计.docx_第11页
第11页 / 共22页
单片机课程设计对外部脉冲计数及出租车计费系统的设计.docx_第12页
第12页 / 共22页
单片机课程设计对外部脉冲计数及出租车计费系统的设计.docx_第13页
第13页 / 共22页
单片机课程设计对外部脉冲计数及出租车计费系统的设计.docx_第14页
第14页 / 共22页
单片机课程设计对外部脉冲计数及出租车计费系统的设计.docx_第15页
第15页 / 共22页
单片机课程设计对外部脉冲计数及出租车计费系统的设计.docx_第16页
第16页 / 共22页
单片机课程设计对外部脉冲计数及出租车计费系统的设计.docx_第17页
第17页 / 共22页
单片机课程设计对外部脉冲计数及出租车计费系统的设计.docx_第18页
第18页 / 共22页
单片机课程设计对外部脉冲计数及出租车计费系统的设计.docx_第19页
第19页 / 共22页
单片机课程设计对外部脉冲计数及出租车计费系统的设计.docx_第20页
第20页 / 共22页
亲,该文档总共22页,到这儿已超出免费预览范围,如果喜欢就下载吧!
下载资源
资源描述

单片机课程设计对外部脉冲计数及出租车计费系统的设计.docx

《单片机课程设计对外部脉冲计数及出租车计费系统的设计.docx》由会员分享,可在线阅读,更多相关《单片机课程设计对外部脉冲计数及出租车计费系统的设计.docx(22页珍藏版)》请在冰点文库上搜索。

单片机课程设计对外部脉冲计数及出租车计费系统的设计.docx

单片机课程设计对外部脉冲计数及出租车计费系统的设计

湖南工业大学

课程设计

电气与信息工程学院(系、部)2011~2012学年第1学期

课程名称单片机应用系统指导教师职称讲师

学生姓名专业班级自动化092学号09401700727

题目对外部脉冲计数及出租车计费系统的设计

湖南工业大学

课程设计任务书

2011—2012学年第1学期

学院(系、部)专业班级

课程名称:

单片机应用系统

设计题目:

对外部脉冲计数及出租车计费系统的设计

完成期限:

自2011年12月19日至2011年12月30日共2周

1.1外部脉冲自动计数,自动显示。

1.1.1设计一个255计数器:

0-255计数,计满后自动清0,重新计数(在数码管中显示)。

1.1.2设计一个50000计数器:

0-50000计数,计满后自动清0,重新计数(在数码管中显示)。

1.2设计一个出租车计费系统:

起步价为5元(2km以内),2km后,0.8元/0.5km;要求每500m刷新计费一次,在8位数码管中,前3位显示数码管显示里程数,后3位数码管显示价钱(角,元,十元,百元)

注:

要求首先采用PROTEUS完成单片机最小系统的硬件电路设计及仿真;程序仿真测试通过后,再下载到单片机实训板上执行。

起止日期

工作内容

2008.12.19

讲述设计内容及基本原理

2008.12.20-2008.12.28

进行系统的设计

2008.12.29-2008.12.30

进行系统的调试

[1]刘苗生、潘宗预.单片机测控系统设计.中国物质出版社,2006年

指导教师(签字):

年月日

系(教研室)主任(签字):

年月日

(单片机应用系统)

设计说明书

(题目)

对外部脉冲计数及出租车计费系统的设计

起止日期:

2011年12月19日至2011年12月30日

 

学生姓名

班级

自动化092

学号

09401700727

成绩

指导教师(签字)

 

电气与信息工程学院(部)

年月日

 

单片机课程设计指导书

 

电气与信息工程学院实验室

 

一、设计任务:

1.1外部脉冲自动计数,自动显示。

1.1.1设计一个255计数器:

0-255计数,计满后自动清0,重新计数(在数码管中显示)。

1.1.2设计一个50000计数器:

0-50000计数,计满后自动清0,重新计数(在数码管中显示)。

1.2设计一个出租车计费系统:

起步价为5元(2km以内),2km后,0.8元/0.5km;要求每500m刷新计费一次,在8位数码管中,前3位显示数码管显示里程数,后3位数码管显示价钱(角,元,十元,百元)

注:

要求首先采用PROTEUS完成单片机最小系统的硬件电路设计及仿真;程序仿真测试通过后,再下载到单片机实训板上执行。

二、单片机最小系统硬件资源介绍:

※89S51单片机;

※6位共阳极数码管;

※段码驱动器74HC573,位选译码器74HC138;

※4路独立式按键;

※外部晶振电路;

※ISP下载接口(Insystemprogram,在系统编程);

※DC+5V电源试配器(选配);

※ISP下载线(选配)。

单片机最小系统实训板硬件资源分布见图1元件布局图和图2电路原理图:

其中P1为外部电源输入座(DC+5V),S8为电源最小系统的电源开关,E1和C3为电源滤波,去耦电容。

D1为系统电源指示灯。

J2为ISP下载接口,S7系统复位按键。

CRY1,C1,C2为外部时针电路。

IC1为89S51(DIP-40),左上角为第一脚。

PRE1,PRE2。

为上拉排阻(阻值4.7k—10k)。

J5,J9,J6,J10分别对应单片机的P0,P1,P2,P3口。

便于二次开发。

6路共阳极数码管动态显示电路,P0口通过74HC573(起驱动和隔离作用,让电流通过74CH573流入公共地),来控制数码管的8路段码,P20-P22通过74HC138译码器(使用其中的6路)控制数码管的公共端(中间还有三极管做驱动器)。

这样设计的理由:

为了保证该单片机最小系统的二次开发的资源充足和合理性。

如果单只做一个动态显示电路,可以省去74HC573,和74HC138。

图1元件布局图

图2单片机最小系统原理图

三、设计思路:

1、255计数:

255可用8位二进制数表示,故本设计可直接采用可以重装载的计数器T1模式二进行计数。

然后对TL1的内容进行相应的二进制---十进制转换:

首先TL1的内容除以64H,所的商就是十进制的百位,然后用余数除以0AH,所得的商就是十进制数的十位,余数即相应的十进制的个位。

接着将相应的十进制数进行译码,并在LED数码管上显示出来。

每来一个脉冲其显示的结果加一,直加至255然后T1重新开始计数。

图3255计数程序流程图

1、255计数:

255可用8位二进制数表示,故本设计可直接采用可以重装载的计数器T1模式二进行计数。

然后对TL1的内容进行相应的二进制---十进制转换:

首先TL1的内容除以64H,所的商就是十进制的百位,然后用余数除以0AH,所得的商就是十进制数的十位,余数即相应的十进制的个位。

接着将相应的十进制数进行译码,并在LED数码管上显示出来。

每来一个脉冲其显示的结果加一,直加至255然后T1重新开始计数。

1、000~255循环计数程序:

ORG0000H

AJMPSTART

ORG0030H

START:

MOVTMOD,#60H;计数器T1,工作方式2

MOVTH1,#00H;计数初值

MOVTL1,#00H

SETBTR1;开启计数器T1

MOVDPTR,#TABLE;查表首地址

MAIN:

MOVA,TL1;二-十进制转换

MOVB,#64H

DIVAB;取百位存于A,余数存于B

MOV30H,A;百位存于30H地址

MOVA,B;取余数继续转换

MOVB,#0AH

DIVAB;取十位存于A,个位存于B

MOV31H,A;取十位存于31H地址

MOV32H,B;取个位存于32H地址

LCALLDISPLAY;显示

JNBTF1,MAIN

CLRTF1;清除溢出标志(因为没有开中断,也可以不清除)

SJMPMAIN;循环执行

DISPLAY:

MOVR0,#00H;位选首值

MOVR1,#30H;段选值对应首地址

MOVR2,#03H;3位数码管,循环3次

LOOP1:

MOVP2,R0;循环取数

MOVA,@R1

MOVCA,@A+DPTR;查表取段码

MOVP1,A

LCALLDELAY;显示上延时

INCR0;改变位选取值

INCR1;改变段选对应地址取值

DJNZR2,LOOP1

RET

DELAY:

MOVR7,#64H;延时子程序

LOOP:

NOP

NOP

NOP

DJNZR7,LOOP

RET

TABLE:

DB3FH,06H,5BH,4FH,66H;数码管段码显示二进制数

DB6DH,7DH,07H,7FH,6FH

2、0~50000计数:

由于超出了255,而直接将TH1,TL1中的数取出来转换显得有些繁琐,于是采用中断,每中断一次将脉冲数存在Rn寄存器中,而每一个Rn中只存0~99,计到100就向高位进一,而本寄存器则清零。

2、0~50000循环计数程序:

ORG0000H

AJMPSTART

ORG001BH;中断入口地址

AJMPINTT1;转中断程序

ORG0030H

START:

MOVTMOD,#50H;计数器T1,工作方式1

MOVTH1,#0FFH;计数初值

MOVTL1,#0FFH

SETBTR1;开启计数器T1

SETBEA;开总中断

SETBET1;开T1中断允许

MOVDPTR,#TABLE;查表首地址

MOVR1,#00H

MOVR2,#00H

MOVR3,#00H

MOVR6,#02H

DD:

LCALLMAIN;等待中断处理,循环执行

SJMPDD

MAIN:

MOVA,R1;R1存0~99

MOVB,#0AH

DIVAB

MOV30H,A

MOV31H,B

MOVA,R2;R2存0~99,但表示0~9900

MOVB,#0AH

DIVAB

MOV32H,A

MOV33H,B

MOVA,R3;R3存0~5,但表示0~50000

MOVB,#0AH

DIVAB

MOV34H,A

MOV35H,B

LCALLDISPLAY;显示

RET

INTT1:

MOVTH1,#0FFH;继续赋初值

MOVTL1,#0FFH

INCR3

LOOPA:

CJNER1,#05H,LOOPB;最高位到5转移

DJNZR6,LOOPD

MOVR6,#02H;为能显示50000专门设置

MOVR1,#00H;显示了50000后返回0

SJMPLOOPD

LOOPB:

CJNER2,#64H,LOOPC;计到99转移

MOVR2,#00H;清零

INCR1;向高位进一

SJMPLOOPA;继续判断,以防出现显示遗漏

LOOPC:

CJNER3,#64H,LOOPD;计到99转移

MOVR3,#00H;清零

INCR2;向高位进一

SJMPLOOPB;继续判断,以防出现显示遗漏

LOOPD:

RETI;中断返回,加一后继续显示

DISPLAY:

MOVR5,#06H;显示子程序

MOVR4,#00H

MOVR0,#30H

L1:

MOVP2,R4;位选

MOVA,@R0

MOVCA,@A+DPTR

MOVP1,A;段选

LCALLDELAY

INCR4

INCR0

DJNZR5,L1

RET

DELAY:

MOVR7,#64H;延时子程序

LOOP:

NOP

NOP

NOP

DJNZR7,LOOP

RET

TABLE:

DB3FH,06H,5BH,4FH,66H;数码管显示段码二进制

DB6DH,7DH,07H,7FH,6FH

3、出租车计费程序:

LLEQU50;假设来一个脉冲表示车轮转的圈数与车轮周长的乘积

ORG0000H;即每个脉冲表示车子走的路程设为50m(为显示方便设大点)

AJMPSTART

ORG001BH

AJMPINTT1;转中断处理

ORG0030H

START:

MOVSP,#3FH

MOVTMOD,#50H;来2个脉冲表示行进100m,每走100m进入中断处理

MOVTH1,#0FFH

MOVTL1,#0FEH

SETBTR1

SETBEA

SETBET1

MOVDPTR,#TABLE;查表首地址

MOVR1,#00H

MOVR2,#00H

MOVR3,#00H

MOVR4,#00H

MOVR5,#00H

MOVR6,#32H

DD:

LCALLMAIN

SJMPDD

MAIN:

MOVA,R4;R4对应数码管前2位,表示路程,

MOVB,#0AH;精度为0.1km

DIVAB

MOV30H,A

MOV31H,B

MOVA,R2;R2对应数码管3、4位,表示路程,单位为km

MOVB,#0AH

DIVAB

MOV32H,A

MOV33H,B

MOVA,R5;R5对应数码管4、5位,表示费用,单位为元

MOVB,#0AH;精度为0.8元

DIVAB

MOV34H,A

MOV35H,B

MOVA,R6;R6对应数码管6、7位,表示费用

MOVB,#0AH

DIVAB

MOV36H,A

MOV37H,B

LCALLDISPLAY

RET

INTT1:

MOVTH1,#0FFH

MOVTL1,#0FEH

INCR3

INCR2

CJNER2,#64H,LOOPC

INCR4

MOVR2,#00H;R2存中断次数

LOOPC:

CJNER5,#64H,LOOPA;R5计到100则重新开始

MOVR2,#00H

MOVR4,#00H

MOVR1,#00H

MOVR3,#00H

MOVR5,#00H

MOVR6,#32H

SJMPLOOPB

LOOPA:

CJNER3,#05H,LOOPB;每中断5次进行相应处理

INCR1

MOVR3,#00H

CJNER1,#05H,LOOPB

MOVR1,#04H;专门设置为处理2.0km以内的计费问题

MOVA,R6

ADDA,#08H;2.0km以后每加0.5kmR6加0.8元

MOVR6,A

SUBBA,#64H

JCLOOPB;判断R6中的数是否大于100

INCR5;若超出一百,则向R5进一,并舍弃R6的百位

MOVA,R6

MOVB,#64H

DIVAB

MOVR6,B

LOOPB:

RETI;中断返回

DISPLAY:

MOVP2,#00H;显示

MOVA,30H

MOVCA,@A+DPTR

MOVP1,A

LCALLDELAY

MOVP2,#01H

MOVA,31H

MOVCA,@A+DPTR

MOVP1,A

LCALLDELAY

MOVP2,#02H

MOVA,32H

MOVCA,@A+DPTR

ADDA,#80H

MOVP1,A

LCALLDELAY

MOVP2,#03H

MOVA,33H

MOVCA,@A+DPTR

MOVP1,A

LCALLDELAY

MOVP2,#04H

MOVA,34H

MOVCA,@A+DPTR

MOVP1,A

LCALLDELAY

MOVP2,#05H

MOVA,35H

MOVCA,@A+DPTR

MOVP1,A

LCALLDELAY

MOVP2,#06H

MOVA,36H

MOVCA,@A+DPTR

ADDA,#80H

MOVP1,A

LCALLDELAY

MOVP2,#07H

MOVA,37H

MOVCA,@A+DPTR

MOVP1,A

LCALLDELAY

RET

DELAY:

MOVR7,#64H;延时子程序

LOOP:

NOP

NOP

NOP

DJNZR7,LOOP

RET

TABLE:

DB3FH,06H,5BH,4FH,66H;数码管显示段码二进制

DB6DH,7DH,07H,7FH,6FH

 

四:

下图为000——255的计数图

 

下图为0——50000的计数

 

下图为计程车的计费系统图

五:

课程设计心得

时光飞逝,一转眼,一个学期又进尾声了,本学期的单片机综合课程设计也在两周内完成了。

俗话说“好的开始是成功的一半”。

说起课程设计,我认为最重要的就是做好设计的预习,认真的研究老师给的题目,要分析的透彻。

其次,老师对实验的讲解要一丝不苟的去听去想,因为只有都明白了,做起设计就会事半功倍,如果没弄明白,就迷迷糊糊的去选题目做设计,到头来一点收获也没有。

最后,要重视程序的模块化,修改的方便,也要注重程序的调试,掌握其方法。

本次单片机课程设计的任务,

1.1外部脉冲自动计数,自动显示。

1.1.1设计一个255计数器:

0-255计数,计满后自动清0,重新计数(在数码管中显示)。

1.1.2设计一个50000计数器:

0-50000计数,计满后自动清0,重新计数(在数码管中显示)。

1.2设计一个出租车计费系统:

起步价为5元(2km以内),2km后,0.8元/0.5km;要求每500m刷新计费一次,在8位数码管中,前3位显示数码管显示里程数,后3位数码管显示价钱(角,元,十元,百元)

注:

要求首先采用PROTEUS完成单片机最小系统的硬件电路设计及仿真;程序仿真测试通过后,再下载到单片机实训板上执行。

我们都是在寝室自己动手,编写程序,用proteus仿真。

在这次难得的课程设计过程中我锻炼了自己的思考能力和动手能力。

通过编写程序和设计电路的过程中,加强了我思考问题的完整性和实际生活联系的可行性。

在方案设计选择和芯片的选择上,培养了我们综合应用单片机的能力,对单片机的各个管脚的功能也有了进一步的认识。

还锻炼我们个人的查阅技术资料的能力,动手能力,发现问题,解决问题的能力。

并且我们熟练掌握了有关器件的性能及测试方法

回顾起此次单片机课程设计,至今我仍感慨颇多,从编程到仿真,从理论到实践,在整整两星期的日子里,可以说得是苦多于甜,但是可以学到很多很多的的东西,同时不仅可以巩固了以前所学过的知识,而且学到了很多在书本上所没有学到过的知识。

通过这次课程设计使我懂得了理论与实际相结合是很重要的,只有理论知识是远远不够的,只有把所学的理论知识与实践相结合起来,从理论中得出结论,才能真正为社会服务,从而提高自己的实际动手能力和独立思考的能力。

在设计的过程中遇到问题,可以说得是困难重重,这毕竟第一次做的,难免会遇到过各种各样的问题,同时在设计的过程中发现了自己的不足之处,对以前所学过的知识理解得不够深刻,掌握得不够牢固,对单片机汇编语言掌握得不好……通过这次课程设计之后,一定把以前所学过的知识重新温故。

这次课程设计终于顺利完成了,在设计中遇到了很多编程问题,最后在老师的辛勤指导下,终于游逆而解。

同时,在老师的身上我学得到很多实用的知识,在次我表示感谢!

同时,对给过我帮助的所有同学和各位指导老师再次表示忠心的感谢!

同时通过这次的课程设计作品的制作让我对单片机的理论有了更加深入的了解,在具体的制作过程中我们发现现在书本上的知识与实际的应用存在着不小的差距,书本上的知识很多都是理想化后的结论,忽略了很多实际的因素,或者涉及的不全面,可在实际的应用时这些是不能被忽略的,我们不得不考虑这方的问题,这让我们无法根据书上的理论就轻易得到预想中的结果,有时结果甚至很差别很大。

通过这次实践使我更深刻的体会到了理论联系实际的重要性,我们在今后的学习工作中会更加的注重实际,避免称为只会纸上谈兵的赵括。

感谢学校给我们这个机会,让我们联系实际更好的掌握书本上的知识,提高我们自身各方面的能力。

我相信这次单片机课程设计将是我重要的实践经验,在将来的工作中,会给我带来巨大的帮助。

展开阅读全文
相关资源
猜你喜欢
相关搜索
资源标签

当前位置:首页 > 自然科学 > 物理

copyright@ 2008-2023 冰点文库 网站版权所有

经营许可证编号:鄂ICP备19020893号-2