以智能速度里程表为主的多功能系统设计.docx

上传人:b****6 文档编号:15630246 上传时间:2023-07-06 格式:DOCX 页数:20 大小:234.63KB
下载 相关 举报
以智能速度里程表为主的多功能系统设计.docx_第1页
第1页 / 共20页
以智能速度里程表为主的多功能系统设计.docx_第2页
第2页 / 共20页
以智能速度里程表为主的多功能系统设计.docx_第3页
第3页 / 共20页
以智能速度里程表为主的多功能系统设计.docx_第4页
第4页 / 共20页
以智能速度里程表为主的多功能系统设计.docx_第5页
第5页 / 共20页
以智能速度里程表为主的多功能系统设计.docx_第6页
第6页 / 共20页
以智能速度里程表为主的多功能系统设计.docx_第7页
第7页 / 共20页
以智能速度里程表为主的多功能系统设计.docx_第8页
第8页 / 共20页
以智能速度里程表为主的多功能系统设计.docx_第9页
第9页 / 共20页
以智能速度里程表为主的多功能系统设计.docx_第10页
第10页 / 共20页
以智能速度里程表为主的多功能系统设计.docx_第11页
第11页 / 共20页
以智能速度里程表为主的多功能系统设计.docx_第12页
第12页 / 共20页
以智能速度里程表为主的多功能系统设计.docx_第13页
第13页 / 共20页
以智能速度里程表为主的多功能系统设计.docx_第14页
第14页 / 共20页
以智能速度里程表为主的多功能系统设计.docx_第15页
第15页 / 共20页
以智能速度里程表为主的多功能系统设计.docx_第16页
第16页 / 共20页
以智能速度里程表为主的多功能系统设计.docx_第17页
第17页 / 共20页
以智能速度里程表为主的多功能系统设计.docx_第18页
第18页 / 共20页
以智能速度里程表为主的多功能系统设计.docx_第19页
第19页 / 共20页
以智能速度里程表为主的多功能系统设计.docx_第20页
第20页 / 共20页
亲,该文档总共20页,全部预览完了,如果喜欢就下载吧!
下载资源
资源描述

以智能速度里程表为主的多功能系统设计.docx

《以智能速度里程表为主的多功能系统设计.docx》由会员分享,可在线阅读,更多相关《以智能速度里程表为主的多功能系统设计.docx(20页珍藏版)》请在冰点文库上搜索。

以智能速度里程表为主的多功能系统设计.docx

以智能速度里程表为主的多功能系统设计

《单片机原理及应用课程设计任务》

 

课题:

以智能速度里程表为主的多功能系统设计

一.设计目的

1.总体要求

(1)独立完成设计任务

(2)绘制系统硬件总框图

(3)绘制系统原理电路图

(4)制定编写设计方案,编制软件框图,完成详细完整的程序清单和注释;

(5)制定编写调试方案,编写用户操作使用说明书

(6)写出设计工作小结。

对在完成以上文件过程所进行的有关步骤如设计思想、指标论证、方案确定、参数计算、元器件选择、原理分析等作出说明,并对所完成的设计作出评价,对自己整个设计工作中经验教训,总结收获和今后研修方向。

2.具体要求

本次工程实践的校内部分主要以单片机为基础,进行单片机软件编程,目的是为了提高学生的软件编程和系统设计能力,整个设计系统包括两个部分,硬件及软件部分,硬件部分已经制作成功,学生只需要掌握其原理和焊接相应的元器件,掌握元器件的辨别和元器件的作用以及应用场所即可,另外对所焊接的电路还需要进行仔细的检查,判断是否有焊接错误的地方或者短路的地方,对出现的异常情况要能够根据现象判别原因,并具备解决问题的能力,从而切实提高学生的硬件电子电路的分析、判断能力。

软件编程是本次工程实践的重要环节。

在为期两周的工程实践中,将占据主要时间,学生要完成的软件编程任务主要包括以下几点:

1)熟悉KeilC51编程平台及Proteus软件仿真;

2)编写、调试蜂鸣器、继电器动作、方波程序并进行软硬件联调;

3)编写、调试LED流水灯(循环显示)程序并进行软硬件联调;

4)编写、调试键盘扫描子程序并进行软硬件联调;

5)编写、调试数码管动态扫描程序并进行软硬件联调;

6)以智能速度里程表为主的多功能任务设计。

其中前五个内容是后两个内容的基础,主要是编制一些子程序,为后继的整个系统设计打下基础。

最后的速度里程表能实时地将所测的速度显示出来,同时也能够累计显示总里程数。

电路提供四个按键,要求同学们能编写、调试对应的键盘扫描子程序,从而实现,当按下A按键,实现蜂鸣器或继电器动作,当按下B按键,实现LED流水灯(循环显示),当按下C按键,实现数码管动态扫描显示(显示内容可以自己确定),按下D按键,能实时显示所测的速度和总里程数。

二.总体设计

2.1系统硬件总述

此次课程设计的里程表主要是由AT89C2051为核心,利用单片机的运算和控制功能,并采用串口液晶显示模块实时显示所测速度和里程的速度里程表设计方案。

该方案由于使用了串口液晶显示模块和E2PROM,以及高效快速算法,因而可在节约系统资源和简化程序设计的基础上保证测量精度和系统实时性。

运用汇编语言来控制单片机AT89C52来实现LED流水灯动态数码显示、速度里程表功能。

其中速度里程表设计能实时地将所测的速度显示出来,同时也能够累计显示总里程数。

该速度里程表能将传感器输入到单片机的脉冲信号的宽度实时地测量出来,然后通过单片机计算出速度和里程,再将所得的数据存储到串口数据存储器,并由串口液晶显示模块实时显示出所测速度。

2.2设计原理图

图1速度里程表电路原理图

三.硬件单元设计

3.1LED灯显示

本次课程设计中,程序语言翻译成单片机所需的二进制代码,单片机即可工作。

因为单片机不能直接高电平驱动LED灯,所以要用Vcc和R1到R8来控制低电平驱动点亮。

如图D1到D8和R1、R2以及R6到R11连接到单片机IO口,当P1口某脚为低电平时相应LED发光。

实现LED灯的闪烁,只需依次从低位到高位逐个变为低电平,等待一会儿再变高即可。

图2LED灯显示电路

3.2蜂鸣器

蜂鸣器发声原理是电流通过电磁线圈,使电磁线圈产生磁场来使振动膜发声的。

因此产生一定大的电流是让蜂鸣器发声的必要条件。

但是因为单片机IO口输出的电流较小,其TTL电平基本上驱动不了蜂鸣器,所以需要增加一个放大电路。

蜂鸣器有两种驱动方式:

①通过改变单片机对应IO口输出波形的频率,就可以调整控制蜂鸣器声音大小。

②改变其占空比,也可以控制蜂鸣器的声音大小。

本实验采用第一种方法,即PNP或NPN三极管电流放大电路驱动,通过一个PNP三极管来放大电流,当输出高电平时,三极管截止,没有电流流过线圈,蜂鸣器不发声。

当输出低电平时,三极管导通,发出声音。

因此,我们可以通过程序控制IO口输出的电平来使蜂鸣器发出声音和关闭,从而实现各种可能音响的产生。

图3蜂鸣器原理图

3.3时钟控制

石英晶体振荡器,石英谐振器简称为晶振,它是利用具有压电效应的石英晶体片制成的。

这种石英晶体薄片受到外加交变电场的作用时会产生机械振动,当交变电场的频率与田英晶体的固有频率相同时,振动便变得很强烈,这就是晶体谐振特性的反应。

利用这种特性,就可以用石英谐振器取代LC(线圈和电容)谐振回路、滤波器等。

其发出的时钟脉冲直接送入片内定时控制部件,其中C电容对频率有微调作用。

图4时钟电路

3.4数码管显示

为了能使简化电路且达到设计效果,我们采用4位数码管动态显示方式。

由于各位数码管的段线并联,段码的输出对各位数码管来说都是相同的。

因此,在同一时刻如果各位数码管的位选线都处于选通状态的话,4位数码管将显示相同的字符。

若要各位数码管能够显示出与本位相应的字符,就必须采用扫描显示方式。

即在某一时刻,只让某一位的位选线处于导通状态,而其它各位的位选线处于关闭状态。

同时,段线上输出相应位要显示字符的字型码。

这样在同一时刻,只有选通的那一位显示出字符,而其它各位则是熄灭的,如此循环下去,就可以使各位数码管显示出将要显示的字符。

虽然这些字符是在不同时刻出现的,而且同一时刻,只有一位显示,其它各位熄灭,但由于数码管具有余辉特性和人眼有视觉暂留现象,只要每位数码管显示间隔足够短,给人眼的视觉印象就会是连续稳定地显示。

数码管不同位显示的时间间隔可以通过调整延时程序的延时长短来完成。

数码管显示的时间间隔也能够确定数码管显示时的亮度,若显示的时间间隔长,显示时数码管的亮度将亮些,若显示的时间间隔短,显示时数码管的亮度将暗些。

若显示的时间间隔过长的话,数码管显示时将产生闪烁现象。

所以,在调整显示的时间间隔时,即要考虑到显示时数码管的亮度,又要数码管显示时不产生闪烁现象。

数码管是由7个条形的LED和右下方一个圆形的LED组成。

数码管有共阴极和共阳极两种,共阴极数码管的公共阴极接地,当各段阳极上的电平为“1”时,该段点亮。

图5数码管显示图

3.5键盘

键盘在单片机应用系统中,实现输入数据、传送命令的功能,是人工干预的主要手段。

键盘分两大类:

编码键盘和非编码键盘。

编码键盘:

由硬件逻辑电路完成必要的键识别工作与可靠性措施。

每按一次键,键盘自动提供被按键的读数,同时产生一选通脉冲通知微处理器,一般还具有反弹跳和同时按键保护功能。

这种键盘易于使用,但硬件比较复杂,对于主机任务繁重之情况,采用8279可编程键盘管理接口芯片构成编码式键盘系统是很实用的方案。

非编码键盘:

只简单地提供键盘的行列与矩阵,其他操作如键的识别,决定按键的读数等仅靠软件完成,故硬件较为简单,但占用CPU较多时间。

为了确保CPU对一次按键动作只确认一次按键,必须消除抖动的影响。

按键的消抖,通常有软件,硬件两种消除方法。

这种方法只适用于键的数目较少的情况。

图6键盘电路

3.6AT89C52

AT89C52是一个低电压,高性能CMOS8位单片机。

AT89C52有40个引脚,32个外部双向输入/输出(I/O)端口,同时内含2个外中断口,3个16位可编程定时计数器,2个全双工串行通信口,2个读写口线,AT89C52可以按照常规方法进行编程,但不可以在线编程。

AT89C52P主要用于会聚调整时的功能控制。

功能包括对会聚主IC内部寄存器、数据RAM及外部接口等功能部件的初始化,会聚调整控制,会聚测试图控制,红外遥控信号IR的接收解码及与主板CPU通信等。

主要管脚有:

XTAL1(19脚)和XTAL2(18脚)为振荡器输入输出端口,外接12MHz晶振。

RST/Vpd(9脚)为复位输入端口,外接电阻电容组成的复位电路。

VCC(40脚)和VSS(20脚)为供电端口,分别接+5V电源的正负端。

P0~P3为可编程通用I/O脚,其功能用途由软件定义,在本设计中,P0端口(32~39脚)被定义为N1功能控制端口,分别与N1的相应功能管脚相连接,13脚定义为IR输入端,10脚和11脚定义为I2C总线控制端口,分别连接N1的SDAS(18脚)和SCLS(19脚)端口,12脚、27脚及28脚定义为握手信号功能端口,连接主板CPU的相应功能端,用于当前制式的检测及会聚调整状态进入的控制功能。

图7AT89C52管脚图

四.软件单元设计

4.1程序流程图

图8程序流程图

 

五.调试

5.1硬件调试

本设计是以智能速度里程表为主的多功能任务课程设计。

当按下第一个按钮,蜂鸣器发出声音;当按下第二个按钮,实现流水灯功能;当按下第三个按钮,实现4位数码管的动态显示;当按下第四个按钮,实现里程和速度的显示,前三位显示里程,后三位显示速度。

至此,硬件调试基本无误。

5.2软件调试

仿真时发现点击原理图上的开关没有反应,于是我们开始检查配置,发现程序没有加载进去,于是重新加载了一下。

程序加载完成后继续仿真,还是没有明显的效果,思考之后开始检查输入的频率,果然,发现输入频率太高,达到了100Hz,数码管显示的数字跳的太快了,于是把频率改为1Hz,至此,本次课程设计的现象终于出现了。

六.设计总结

两周的课程设计结束了,在这次的课程设计中不仅检验了我所学习的知识,也培养了我如何去把握一件事情,如何去做一件事情,又如何完成一件事情。

在设计过程中,与同学分工设计,和同学们相互探讨,相互学习,相互监督。

学会了合作,学会了运筹帷幄,学会了宽容,学会了理解,也学会了做人与处世。

课程设计是我们专业课程知识综合应用的实践训练,着是我们迈向社会,从事职业工作前一个必不少的过程.”千里之行始于足下”,通过这次课程设计,我深深体会到这句千古名言的真正含义.我今天认真的进行课程设计,学会脚踏实地迈开这一步,就是为明天能稳健地在社会大潮中奔跑打下坚实的基础.

通过这次课程设计,本人在多方面都有所提高,巩固与扩充了课程所学的内容,掌握设计的方法和步骤,掌握设计的基本的技能,懂得了怎样分析,怎样确,了解了单片机的基本结构,提高了计算能力,绘图能力,熟悉了规范和标准,同时各科相关的课程都有了全面的复习,独立思考的能力也有了提高。

在这次设计过程中,体现出自己单独设计的能力以及综合运用知识的能力,体会了学以致用、突出自己劳动成果的喜悦心情,从中发现自己平时学习的不足和薄弱环节,从而加以弥补。

七.参考文献

(1)何立民,《单片机高级教程》北京航空航天大学出版社

(2)赵晓安,《MCS-51单片机原理及应用》天津大学出版社

(3)李广第,《单片机基础》北京航空航天大学出版社

(4)徐惠民、安德宁,《单片微型计算机原理接口与应用》北京邮电大学出版社

 

参考程序:

ORG0000H;程序执行开始地址

LJMPMAIN;跳转到标号start执行

ORG0003H;外部中断0入口地址

LJMPEXINT0

ORG001BH;定时器T1中断程序入口

LJMPINTT1;跳至INTT1执行

ORG0100H

MAIN:

MOVSP,#10H

SETBIT0

SETBEA

SETBET1

MOVTMOD,#10H

MOVTL1,#0B0H;设置定时时间0.008s

MOVTH1,#3CH

MOVR0,#14H

AJMPSTART

 

START:

LCALLKEY;调用按键子程序

AJMPSTART

;---------------------------------------------------------------------------------------------------

 

KEY:

MOVP1,#0F0H;单片机按键口置位

MOVA,P1

MOVB,A

ACALLDELAY2

MOVA,P1

CJNEA,B,K4;判断是否有键按下,没有则转移

CJNEA,#0E0H,K1;判断KEYA键是否按下,没有则转移

AJMPKEYA;KEYA键按下,执行扬声器子程序

K1:

CJNEA,#0D0H,K2;判断KEYB键是否按下,没有则转移

AJMPKEYB;KEYB键按下,执行流水灯子程序

K2:

CJNEA,#0B0H,K3;判断KEYC键是否按下,没有则转移

AJMPKEYC;KEYC键按下,执行数码管动态显示子程序

K3:

CJNEA,#070H,K4;判断KEYD键是否按下,没有则转移

AJMPKEYD;KEYD键按下,执行速度里程表子程序

K4:

RET

 

;*******扬声器*******

KEYA:

MOVR7,0AH

LP:

MOVR6,#0FFH

SETBP3.7

DJNZR6,$

MOVR6,#0FFH

CLRP3.7

DJNZR6,$

DJNZR7,LP

LCALLDELAY1

RET

 

;*******流水灯*******

KEYB:

MOVP2,#11111110B

LCALLDELAY1

MOVP2,#11111101B

LCALLDELAY1

MOVP2,#11111011B

LCALLDELAY1

MOVP2,#11110111B

LCALLDELAY1

MOVP2,#11101111B

LCALLDELAY1

MOVP2,#11011111B

LCALLDELAY1

MOVP2,#10111111B

LCALLDELAY1

MOVP2,#01111111B

LCALLDELAY1

SETBP2.7

RET

 

;数码管动态显示

KEYC:

CLRP1.0

MOVP0,#99H

SETBP1.3

ACALLDELAY2

MOVP0,#0FFH

CLRP1.3

MOVP0,#0B0H

SETBP1.2

ACALLDELAY2

MOVP0,#0FFH

CLRP1.2

MOVP0,#0A4H

SETBP1.1

ACALLDELAY2

MOVP0,#0FFH

CLRP1.1

MOVP0,#0F9H

SETBP1.0

ACALLDELAY2

RET

 

;速度里程表

KEYD:

SETBEX0

SETBTR1

MOVDPTR,#TABLE

DISPALY:

MOVA,P3

ANLA,#08H

JNZS2

;MOV20H,31H

;MOV21H,32H

;MOV22H,33H

;MOV23H,34H

MOVP0,#0FFH

CLRP1.0

MOVA,20H

MOVCA,@A+DPTR

MOVP0,A

SETBP1.3

ACALLDELAY2

MOVP0,#0FFH

CLRP1.3

MOVA,21H

MOVCA,@A+DPTR

MOVP0,A

SETBP1.2

ACALLDELAY2

MOVP0,#0FFH

CLRP1.2

MOVA,22H

MOVCA,@A+DPTR

S3:

MOVP0,A

SETBP1.1

ACALLDELAY2

MOVP0,#0FFH

CLRP1.1

MOVA,23H

MOVCA,@A+DPTR

MOVP0,A

SETBP1.0

ACALLDELAY2

RET

S2:

MOVP0,#0FFH

CLRP1.0

MOVA,31H

MOVCA,@A+DPTR

MOVP0,A

SETBP1.3

ACALLDELAY2

MOVP0,#0FFH

CLRP1.3

MOVA,32H

MOVCA,@A+DPTR

MOVP0,A

SETBP1.2

ACALLDELAY2

MOVP0,#0FFH

CLRP1.2

MOVA,33H

MOVCA,@A+DPTR

CLRACC.7

MOVP0,A

SETBP1.1

ACALLDELAY2

MOVP0,#0FFH

CLRP1.1

MOVA,34H

MOVCA,@A+DPTR

MOVP0,A

SETBP1.0

ACALLDELAY2

RET

 

DELAY1:

MOVR5,#25;延时0.5s

DL1:

MOVR4,#100

DL2:

MOVR3,#100

DJNZR3,$

DJNZR4,DL2

DJNZR5,DL1

RET

DELAY2:

MOVR4,#10;延时2ms

DL3:

MOVR3,#100

DJNZR3,$

DJNZR4,DL3

RET

EXINT0:

PUSHPSW

PUSHACC

INC30H

MOVA,30H

CJNEA,#0AH,LOOP1

MOV30H,#00H

INC31H

MOVA,31H

CJNEA,#0AH,LOOP1

MOV31H,#00H

INC32H

MOVA,32H

CJNEA,#0AH,LOOP1

MOV32H,#00H

INC33H

MOVA,33H

CJNEA,#0AH,LOOP1

MOV33H,#00H

INC34H

LOOP1:

INC40H

MOVA,40H

CJNEA,#0AH,LOOP2

MOV40H,#00H

INC41H

MOVA,41H

CJNEA,#0AH,LOOP2

MOV41H,#00H

INC42H

MOVA,42H

CJNEA,#0AH,LOOP2

MOV42H,#00H

INC43H

LOOP2:

POPACC

POPPSW

RETI

 

TABLE:

DB0C0H,0F9H,0A4H,0B0H,99H,92H,82H,0F8H,80H,90H

 

;速度计算

INTT1:

;计数时间减1

 

MOVTL1,#0B0H;设置定时时间0.008s

MOVTH1,#3CH

DJNZR0,KK1;计数时间是否到1S,没到跳转

MOV20H,40H

MOV21H,41H

MOV22H,42H

MOV23H,43H

MOV40H,#0H

MOV41H,#0H

MOV42H,#0H

MOV43H,#0H

MOVR0,#14H

KK1:

 

RETI

 

;;--------------------------------------------------------------------------------------------------------------

END

 

 

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

当前位置:首页 > 表格模板 > 书信模板

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

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