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

上传人:b****6 文档编号:7257336 上传时间:2023-05-11 格式:DOCX 页数:23 大小:180.60KB
下载 相关 举报
以智能速度里程表为主的多功能系统设计.docx_第1页
第1页 / 共23页
以智能速度里程表为主的多功能系统设计.docx_第2页
第2页 / 共23页
以智能速度里程表为主的多功能系统设计.docx_第3页
第3页 / 共23页
以智能速度里程表为主的多功能系统设计.docx_第4页
第4页 / 共23页
以智能速度里程表为主的多功能系统设计.docx_第5页
第5页 / 共23页
以智能速度里程表为主的多功能系统设计.docx_第6页
第6页 / 共23页
以智能速度里程表为主的多功能系统设计.docx_第7页
第7页 / 共23页
以智能速度里程表为主的多功能系统设计.docx_第8页
第8页 / 共23页
以智能速度里程表为主的多功能系统设计.docx_第9页
第9页 / 共23页
以智能速度里程表为主的多功能系统设计.docx_第10页
第10页 / 共23页
以智能速度里程表为主的多功能系统设计.docx_第11页
第11页 / 共23页
以智能速度里程表为主的多功能系统设计.docx_第12页
第12页 / 共23页
以智能速度里程表为主的多功能系统设计.docx_第13页
第13页 / 共23页
以智能速度里程表为主的多功能系统设计.docx_第14页
第14页 / 共23页
以智能速度里程表为主的多功能系统设计.docx_第15页
第15页 / 共23页
以智能速度里程表为主的多功能系统设计.docx_第16页
第16页 / 共23页
以智能速度里程表为主的多功能系统设计.docx_第17页
第17页 / 共23页
以智能速度里程表为主的多功能系统设计.docx_第18页
第18页 / 共23页
以智能速度里程表为主的多功能系统设计.docx_第19页
第19页 / 共23页
以智能速度里程表为主的多功能系统设计.docx_第20页
第20页 / 共23页
亲,该文档总共23页,到这儿已超出免费预览范围,如果喜欢就下载吧!
下载资源
资源描述

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

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

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

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

 

《单片机原理及应用》课程设计报告

 

课题:

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

 

班级学号

学生姓名

指导教师

 

淮阴工学院

电子与电气工程学院

 

一、课程设计目的

《单片机原理及应用》课程设计是一项重要的实践性教育环节,是学生在校期间必须接受的一项工程训练。

在课程设计过程中,在教师指导下,运用工程的方法,通过一个简单课题的设计练习,可使学生通过综合的系统设计,熟悉应用系统的设计过程、设计要求、完成的工作内容和具体的设计方法,了解必须提交的各项工程文件,也达到巩固、充实和综合运用所学知识解决实际问题的目的。

通过课程设计,应能加强学生如下能力的培养:

(1)独立工作能力和创造力;

(2)综合运用专业及基础知识,解决实际工程技术问题的能力;

(3)查阅图书资料、产品手册和各种工具书的能力;

(4)工程绘图的能力;

(5)编写技术报告和编制技术资料的能力。

二、设计要求

1、总体要求

(1)独立完成设计任务

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

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

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

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

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

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

2、具体要求

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

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

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

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

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

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

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

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

3、具体课题:

本题属于多功能任务设计,基于本实验室所提供的电路模板,具体题目为:

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

课题名字的多功能任务的含义是:

要求所设计的电路和程序必须实现4个功能,电路提供四个按键,要求同学们能编写、调试对应的键盘扫描子程序,从而实现,当按下A按键,实现蜂鸣器或继电器动作,当按下B按键,实现LED流水灯(循环显示),当按下C按键,实现数码管动态扫描显示(显示内容可以自己确定),前3个功能,对于每个课题都是相同,只有最后一个按键不同,其功能取决于所选课题名称,即当按下D按键,要求实现相应课题的最主要的功能,例如,对于“以智能温度计为主的多功能任务设计”的课题,当按下该课题所对应的D按键,就要实现显示温度的功能,其余类似。

三、设计步骤

3.1硬件初步设计

图1硬件总框图

3.1.1按键控制扫描模块:

按键用于控制数码显示、LED显示、扬声器等模块的工作。

通过扫描按键是否按下,来设定上述各模块的工作情况,使各模块可以在按键的控制下,有序地进行工作。

3.1.2扬声器模块:

本设计是通过P3.7口控制扬声器发出连续,断续的声音。

当按键1按下时,则由P3.7口输出方波信号,使扬声器发出声音。

3.1.3LED显示模块:

根据流水灯的形式,建立流水灯显示程序。

本设计中通过P2口控制流水灯的显示,8个LED共阳极,故P2口低电平有效。

3.1.4数码显示模块:

根据实际确定字形码表,建立显示子程序。

本设计中采用四位共阳极数码管,通过单片机AT89C52的P1口控制其位选,以达到动态显示的效果,再通过P0口控制其段选以显示相应的数值。

数码管有共阳和共阴之分,可用静态显示,也可用动态显示。

静态显示,原理简单,容易编程,但电路复杂占用的资源较多。

动态显示电路,控制较难,但电路简单,在资源紧张时是首选。

这里用的是动态显示。

数码管动态显示接口是单片机中应用最为广泛的一种显示方式之一,动态驱动是将所有数码管的8个显示笔划"a,b,c,d,e,f,g,dp"的同名端连在一起。

 

字型

共阳极段码

字型

共阳极段码

0

C0H

5

92H

1

F9H

6

82H

2

A4H

7

F8H

3

B0H

8

80H

4

99H

9

90H

表1数码管动态显示接口地址

3.2硬件原理电路图

图2硬件原理电路图

本设计中所用的单片机型号为AT89C52,其主要特性为:

1)有CHMOS工艺的节能运行方式

2)兼容MCS51指令系统

3)3个16位可编程定时/计数器中断

4)2个串行中断

5)2个外部中断源

6)2个读写中断口线

7)低功耗空闲和掉电模式

8)8k可反复擦写(>1000次)FlashROM

9)256x8bit内部RAM

10)时钟频率0-24MHz

11)可编程UART串行通道

12)共6个中断源,3级加密位

13)软件设置睡眠和唤醒功能

3.3单元电路设计

3.3.1按键电路

图3按键电路

由于本系统中按键数量较少,且单片机的I/O口相对富余,使用独立式键盘。

同样,由于单片机高电平输出能力比低电平输出能力弱,使用如图所示的按键电路。

读按键前,先将端口设置为高电平。

此时,单片机内部由一个MOS管作为上拉电阻,在按键没被按下时,单片机端口人保持高电平;当按键被按下后,单片机I/O口被强行接地,变为低电平。

按键电路中由于单片机内部MOS管有微弱的上拉作用,所以外部硬件可以不接上拉电阻。

3.3.2流水灯电路

流水灯由单片机的P1口控制。

考虑到单片机I/O口高电平驱动能力弱而低电平驱动能力强的特点以及系统功耗大小,采用如图所示的电路。

现由P1口低电平驱动发光二极管发光。

 

单片机P1口

图4流水灯显示电路

图中D1-D8为发光二极管,R13-R20为限流电阻。

发光二极管在电流范围

内都能正常发光。

则限流电阻

,一般发光二极管

,假设单片机低电平输出能力足够强,即

,则

按实际器材条件,选择限流电阻为

3.3.3蜂鸣器电路

SPEAK(P3.7)信号控制器件开通关断,使得蜂鸣器发声或不发声。

图5蜂鸣器电路

3.3.4数码显示电路

显示电路是系统人机接口的重要组成部分。

该系统中采用动态显示的方法来驱动四位数码管显示。

数码管为共阳型,所以字形段码为阴码。

显示驱动电路如图所示。

Rf=330Ω

图6数码管显示电路

按照单片机输出端口与数码显示管的连接关系,对应着显示内容的形状,计算字形编码如下表所示。

显示

字形

A

(Px.7)

F

(Px.6)

B

(Px.5)

G

(Px.4)

C

(Px.3)

Dp

(Px.2)

D

(Px.1)

E

(Px.0)

阴码

0

L

L

L

H

L

H

L

L

0x14

1

H

H

L

H

L

H

H

H

0xD7

2

L

H

L

L

H

H

L

L

0x4C

3

L

H

L

L

L

H

L

H

0x45

4

H

L

L

L

L

H

H

H

0x87

5

L

L

H

L

L

H

L

H

0x25

6

L

L

H

L

L

H

L

L

0x24

7

L

H

L

H

L

H

H

H

0x57

8

L

L

L

L

L

H

L

L

0x04

9

L

L

L

L

L

H

L

H

0x05

°

L

L

L

L

H

H

H

H

0x0F

E

L

L

H

L

H

H

L

L

0x2C

r

H

H

H

L

H

H

H

L

0xEE

Null

H

H

H

H

H

H

H

H

0xFF

备注

L为低电平,对应显示段亮;H为高电平,对应显示段灭。

表2显示字形对应驱动阴码计算表

只要在段码输入端输入对应的阴码,再从DR1-DR4的位码信号中给出要显示内容的数码管的选择信号,便可在对应的数码管中按对应段码显示内容。

R13-R20为限流电阻。

三极管饱和开通时,集电极-发射极之间电压

,数码管的压降

,数码管的工作电流

则限流电阻可这样计算获得:

现取

四、软件初步设计

4.1主程序流程图

图7主程序流程图

 

4.2各模块流程图

图8扬声器程序流程图

 

图9彩灯循环显示流程图

图10数码管动态显示流程图

 

图11速度里程表程序流程图

4.3各模块软件设计

4.3.1扬声器电路的设计

本次设计中,设计扬声器产生简单的“嘟嘟”声。

只需在P3.7口输出方波即可。

当KEY1按下后,单片机则会发出10个方波信号,频率约为1960HZ。

信号结束后,调用0.5秒延时,如此就会使扬声器发出“嘟嘟”声。

4.3.2彩灯循环显示的设计

设计中,由单片机的P2.0~P2.7控制8个发光管。

当KEY2按下后,每隔0.5秒就将对应发光管的P2.X口清零,使发光管一次点亮,如此往复。

4.3.3数码管动态显示的设计

设计中,由P1.0~P1.3口控制数码管的片选,由P0口控制数码管的段选。

当KEY3按下后,分别让4个数码管显示“1”,“2”,“3”,“4”,即当P1.0~P1.3分别为高电平时,将“F9H”、“A4H”、“B0H”、“99H”分别赋给P0口,显示的时间间隔是2毫秒。

对于人来说,已经无法分辨数码是否是轮流点亮的。

4.3.4智能速度里程表的设计

我在本次设计中,我假设车轮周长为一米,在P3.2口加一个方波信号,模拟车轮滚动。

当产生一个下降沿(即视为车轮滚动一圈),就产生一次外部中断。

其中30H~34H记录的是里程,分别对应米,十米,百米,千米,万米。

当产生一次外部中断,里程数就加一。

而40H~43H记录的是单位时间内所走过的里程,即速度。

当产生一次外部中断,里程数加一。

当产生一秒的时间中断,就把40H~43H的内容赋给20H~23H锁存。

显示电路中,首先判断速度里程切换按钮是否按下,没按下则由数码管显示31H~34H的内容,即里程数。

若按下,则显示20H~23H的内容,即速度。

五、硬件系统参数选择

在本次设计中,各端口设置如下:

P0:

数码管段选位

P1:

低四位为数码管片选位

高四位为开关控制位

P2:

流水灯控制位

P3:

P3.2为外部中断0入口位

P3.3为速度里程切换显示开关位

P3.7为扬声器控制位

六、软件设计

在主程序中用到了五条汇编语言指令:

CLR、ACALL、SETB、LJMP、END。

CLR:

是将其后面指定的位清为0,程序中使对应端口输出低电平

CALL:

是子程序调用指令,程序中调用了DELAY延时子程序

SETB:

是将其后面指定的位置成1,程序中使对应端口输出高电平

JMP:

是跳转指令,意思是:

跳转到指定的标号处继续运行

END:

是程序结束的伪指令,意思是告诉编译器,程序到此结束。

伪指令只告诉编译器此程序到此有何要求或条件,它不参与和影响程序的执行。

详细完整的程序清单及注释

ORG0000H;程序执行开始地址

LJMPMAIN;跳转到标号MAIN执行

ORG0003H;外部中断0入口地址

LJMPEXINT0;跳转到标号EXINT0执行

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

LJMPINTT1;跳转到标号INTT1执行

ORG0100H;主程序起始地址

MAIN:

MOVSP,#10H;定义起始堆栈指针

SETBIT0;设置外部中断0为边沿触发

SETBEA;允许总中断

SETBET1;允许定时器中断

MOVTMOD,#10H;设置T1工作方式为模式1

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

MOVTH1,#3CH

MOVR0,#14H;设置循环初值

AJMPSTART;跳转到START

START:

LCALLKEY;调用按键子程序

AJMPSTART;跳转到START

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

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;P3.7置数

DJNZR6,$;循环次数减一

MOVR6,#0FFH;设置循环初值

CLRP3.7;P3.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;没有按下,跳转S2显示里程

;按下,则显示速度

MOVP0,#0FFH;数码管段初始化

CLRP1.0;上一次数码管片选清零

MOVA,20H;存放米的单元地址赋A

MOVCA,@A+DPTR;读取对应数码管的值

MOVP0,A;设置数码管段选

SETBP1.3;设置数码管片选

ACALLDELAY2;调用延时

MOVP0,#0FFH;数码管段初始化

CLRP1.3;上一次数码管片选清零

MOVA,21H;存放十米的单元地址赋A

MOVCA,@A+DPTR;读取对应数码管的值

MOVP0,A;设置数码管段选

SETBP1.2;设置数码管片选

ACALLDELAY2;调用延时

MOVP0,#0FFH;数码管段初始化

CLRP1.2;上一次数码管片选清零

MOVA,22H;存放百米的单元地址赋A

MOVCA,@A+DPTR;读取对应数码管的值

MOVP0,A;设置数码管段选

SETBP1.1;设置数码管片选

ACALLDELAY2;调用延时

MOVP0,#0FFH;数码管段初始化

CLRP1.1;上一次数码管片选清零

MOVA,23H;存放千米的单元地址赋A

MOVCA,@A+DPTR;读取对应数码管的值

MOVP0,A;设置数码管段选

SETBP1.0;设置数码管片选

ACALLDELAY2;调用延时

RET

;里程显示

S2:

MOVP0,#0FFH;数码管段初始化

CLRP1.0;上一次数码管片选清零

MOVA,31H;存放十米的单元地址赋A

MOVCA,@A+DPTR;读取对应数码管的值

MOVP0,A;设置数码管段选

SETBP1.3;设置数码管片选

ACALLDELAY2;调用延时

MOVP0,#0FFH;数码管段初始化

CLRP1.3;上一次数码管片选清零

MOVA,32H;存放百米的单元地址赋A

MOVCA,@A+DPTR;读取对应数码管的值

MOVP0,A;设置数码管段选

SETBP1.2;设置数码管片选

ACALLDELAY2;调用延时

MOVP0,#0FFH;数码管段初始化

CLRP1.2;上一次数码管片选清零

MOVA,33H;存放千米的单元地址赋A

MOVCA,@A+DPTR;读取对应数码管的值

CLRACC.7;在千米位加上小数点

MOVP0,A;设置数码管段选

SETBP1.1;设置数码管片选

ACALLDELAY2;调用延时

MOVP0,#0FFH;数码管段初始化

CLRP1.1;上一次数码管片选清零

MOVA,34H;存放万米的单元地址赋A

MOVCA,@A+DPTR;读取对应数码管的值

MOVP0,A;设置数码管段选

SETBP1.0;设置数码管片选

ACALLDELA2;调用延时

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:

MOVTL1,#0B0H;重设定时时间0.05s

MOVTH1,#3CH

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

MOV20H,40H;将单位时间内所走的里程赋予速度单元

MOV21H,41H

MOV22H,42H

MOV23H,43H

MOV40H,#0H;上一时刻单位时间内所走里程清零

MOV41H,#0H

MOV42H,#0H

MOV43H,#0H

MOVR0,#14H

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

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

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

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