自行车里程表的设计毕业设计论文.docx

上传人:b****6 文档编号:7078507 上传时间:2023-01-17 格式:DOCX 页数:28 大小:33.14KB
下载 相关 举报
自行车里程表的设计毕业设计论文.docx_第1页
第1页 / 共28页
自行车里程表的设计毕业设计论文.docx_第2页
第2页 / 共28页
自行车里程表的设计毕业设计论文.docx_第3页
第3页 / 共28页
自行车里程表的设计毕业设计论文.docx_第4页
第4页 / 共28页
自行车里程表的设计毕业设计论文.docx_第5页
第5页 / 共28页
点击查看更多>>
下载资源
资源描述

自行车里程表的设计毕业设计论文.docx

《自行车里程表的设计毕业设计论文.docx》由会员分享,可在线阅读,更多相关《自行车里程表的设计毕业设计论文.docx(28页珍藏版)》请在冰豆网上搜索。

自行车里程表的设计毕业设计论文.docx

自行车里程表的设计毕业设计论文

课程单片机原理及应用课程设计

题目自行车里程表的设计

主要内容、基本要求、主要参考资料等

1、主要内容:

根据单片机课程所学内容,结合其他相关课程知识,设计一个自行车里程表,以加深对单片机知识的理解,锻炼实践动手能力,为以后的毕业设计和工作打下坚实基础。

2、基本要求:

以AT89C2051型单片机为核心,实时测量并显示自行车行驶过程中两项运动参数:

速度和里程。

所测量各值可单独显示,测量值误差小于1%。

超速行驶(设置两各可选择的限速参数:

10m/s,8m/s)时,能自动发出声光报警。

3、主要参考资料:

[1]张毅坤,陈善久.单片微型计算机原理及应用.西安:

西安电子科技大学出版社,2002.

[2]张友德,赵志英,徐时亮.单片微机原理应用与实验.上海:

复旦大学出版社,2000.

[3]伟福Lab2000P系列单片机仿真实验系统说明书.

完成期限2010.3.15-2010.3.19

指导教师

专业负责人

2010年3月13日

目录

第一章概述2

第二章硬件设计3

2.1系统组成结构框图3

2.2具体硬件电路及工作原理3

2.3AT89C2051单片机简介4

2.3.1芯片概述4

2.4其他外围硬件电路6

2.4.1电源电路6

2.4.2霍尔传感器6

2.4.34位串行静态显示电路7

第三章软件设计8

3.1主程序设计8

3.2外中断0和T1定时溢出中断服务子程序设计8

3.3速度/里程显示控制子程序设计8

3.4系统完整源程序9

总结10

参考文献11

附录12

附录1整体电路图12

附录2源程序13

 

第一章概述

本设计介绍的速度与里程表设计以单片机和光电传感器为核心。

传感器将不同车速转变成的不同频率的脉冲信号输入到单片机进行控制与计算,再采用LED模块进行显示,使得电动自行车的速度与里程数据能直接的显示给使用者。

该设计能实时地将所测的速度与累计里程数显示出来,主要是将传感器输入到单片机的脉冲信号的频率(传感器将不同车速转变成不同频率的脉冲信号)实时地测量出来,考虑到信号的衰减、干扰等影响,在信号送入单片机前应对其进行放大整形,然后通过单片机计算出速度和里程,再将所得的数据存储到串口数据存储器,并由LED显示模块交替显示所测速度与里程。

本设计的里程数的算法是一种大概的算法(假设在一定时间内自行车是匀速行进,平均速度与时间的乘积即为里程数)。

本系统由信号预处理电路、单片机AT89C2051、系统化LED显示模块、串口数据存储电路和系统软件组成。

其中信号预处理电路包含信号放大、波形变换和波形整形。

对待测信号进行放大的目的是降低对待测信号的幅度要求;波形变换和波形整形电路则用来将放大的信号转换成可与单片机相连的TTL信号;通过单片机的设置可使内部定时器T1对脉冲输入引脚T0进行控制,这样能精确地算出加到T0引脚的单位时间内检测到的脉冲数;设计中速度显示采用LED模块,通过速度换算得来的里程数采用I2C总线并通过E2PROM来存储,既节省了所需单片机的口线和外围器件,同时也简化了显示部分的软件编程。

   设计时,应综合考虑测速精度和系统反应时间。

本设计用测量脉冲频率来计算速度,因而具有较高的测速精度。

在计算里程时取了自行车的理想状态。

实际中,误差控制在几米之内,相对于整个里程来说不是很大。

为了保证系统的实时性,系统的速度转换模块和显示数据转BCD码模块都采用快速算法。

另外,还应尽量保证其他子模块在编程时的通用性和高效性。

本设计的速度和里程值采用6位显示,并包含两个小数位。

 

第二章硬件设计

2.1系统组成结构框图

根据功能要求,首先要进行的是总体方案的设计于论证,构思一个符合实际要求的系统,如图2.1所示。

系统由测量模块、功能选择模块、显示模块、供电模块和单片机小系统构成。

功能选择后启动测量,大片及实时采集、处理后显示。

发电机

图2.1系统组成结构框图

 2.2具体硬件电路及工作原理

具体硬件电路如图2.2所示。

图2.2系统硬件电路原理图

速度和里程由开关型霍尔传感器测量,已知自行车轮子的周长(本系统采用的是1.8m,设为L),轮子每转动一圈,传感器采样一个下降沿信号并送到单片机的外中断0产生一次中断,全书加1,两个相邻下降沿信号的时间由单片机定时器1计时(设为T),哪么计算当前速度(设为V)和行驶里程(设为S)的公式为:

V=1.8/T,S=1.8m*所行驶的圈数

S1是单片机的复位开关,系统采用按键电平复位开关;S2是电源开关,并由灯D1指示;S3为速度和里程切换开关;S4为限速切换开关,可以根据自身需要选择不同的最大超速速度;S5为里程单位切换开关。

P1.4输出低电平时,控制D2亮,表示此时显示的里程值为km/h,P1.5输出低电平时,控制灯D3亮,提示速度太慢;P1.6输出低电平时,控制灯D4亮,表示此时的显示值时里程(否则为速度);P1.7控制超速报警电路,其为高电平表示行驶速度正常,为低电平时,三极管9012导通,驱动蜂鸣器报警。

 2.3AT89C2051单片机简介

2.3.1芯片概述

AT89C2051是一个低电压,高性能CMOS8位单片机,片内含2kbytes的可反复擦写的只读Flash程序存储器和128bytes的随机存取数据存储器(RAM),器件采用ATMEL公司的高密度、非易失性存储技术生产,兼容标准MCS-51指令系统,片内置通用8位中央处理器和Flash存储单元,功能强大AT89C2051单片机可为您提供许多高性价比的应用场合。

   AT89C2051是一个功能强大的单片机,但它只有20个引脚,15个双向输入/输出(I/O)端口,其中P1是一个完整的8位双向I/O口,两个外中断口,两个16位可编程定时计数器,两个全双向串行通信口,一个模拟比较放大器。

同时AT89C2051的时钟频率可以为零,即具备可用软件设置的睡眠省电功能,系统的唤醒方式有RAM、定时/计数器、串行口和外中断口,系统唤醒后即进入继续工作状态。

省电模式中,片内RAM将被冻结,时钟停止振荡,所有功能停止工作,直至系统被硬件复位方可继续运行。

管角配置图2.3所示。

图2.32051引脚图

主要功能介绍

(1)兼容MCS51指令系统

(2)15个双向I/O口

(3)两个16位可编程定时/计数器

(4)时钟频率0-24MHz

(5)两个外部中断源

(6)可直接驱动LED

(7)低功耗睡眠功能

(8)可编程UARL通道

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

(10)6个中断源

(11)2.7-6.V的宽工作电压范围

(12)128x8bit内部RAM

(13)两个串行中断

(14)两级加密位

(15)内置一个模拟比较放大器

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

可见。

2051可以为很多的嵌入式控制应用提供高度灵活而且价格低廉的方案,特别适合小系统。

本系统仅用到单片机的10个I/O口,所以选用2051单片机做主系统。

2.4其他外围硬件电路

2.4.1电源电路

如图2.4所示。

发电机发出+15V的交流电,经整流滤波后,再给镍氢电池组充电,充电采用恒流方式。

已充电的电池组经7805稳压,给霍尔传感器和单片机系统供电。

图2.4电源电路原理图

于充电电流可达400~500mA,且充电时间较长,所以三极管选用功率高的C8050。

5KΩ的电位器用于调节充电电流,避免电流过大烧坏元件。

当然,实验设计过程中为了简便,我们可以不用电机。

直接用4个1.5V的电池组经7805稳压后得到+5V电压给单片机系统和霍尔传感器供电。

2.4.2霍尔传感器

霍尔传感器是利用霍尔效应把磁输入信号转换成电信号的器件。

本系统采用JK8002D霍尔接近开关,他是一种非接触型无触点开关,系统通过它探测外部的磁场的强弱变化,继而控制开关输出。

磁场由外部的磁钢产生。

JK8002D霍尔接近开关的内部原理图和输入/输出特性如图(5)和图(6)所示。

JK8002D霍尔接近开关的输入量是磁感应强度B,当B值达到一定的程度(如Bl)时,霍尔开关内部的触发器翻转,其输出电平状态也随之翻转。

当探头与磁钢距离由远而近为8mm时,霍尔元件输出端输出一个无抖动的低电平(约为0.2V),当两者距离足够远时,霍尔元件输出端输出一个无抖动的高电平(约为3.7V),所以输出信号可直接到单片机的外中断0的引脚。

2.4.34位串行静态显示电路

当单片机的UART口部进行串行通信时,可设置其工作于同步移位寄存器方式0,以输出显示信息,实现n位LED的静态显示,这样做只占用了很少的I/O口线。

系统中,4各共阳极得LED数码管和4片74LS164构成4位数字显示电路,74LS164将串行输入的显示信息转换成并行输出,驱动数码管显示。

74LS164在低电平输出时允许通过的电流为8mA,故不必添加驱动电路即可获取理想亮度。

与动态扫描方式相比较,该方式无须CPU做不停的扫描,频繁地为显示服务,节省了CPU的时间,软件世界也比较简单。

显示电路如图2.5所示。

图2.54位串行静态显示电路原理图

第三章软件设计

3.1主程序设计

主程序流程图见图3.1。

开机后系统自检,正常时LED显示“——”,同时等待自行车行驶。

轮子开始转圈后,系统进行记录和计算,并根据速度/里程开关的选择显示数值。

Y

图3.1主程序流程图

3.2外中断0和T1定时溢出中断服务子程序设计

外中断0服务子程序用于对输入脉冲的个数即轮子转圈的次数计数。

每计数一次,系统保存圈数值的同时保存定时器的计时值,并根据功能开关键实时显示相应的值。

T1定时溢出中断服务子程序用于实时统计记一次数的经历时间。

T1定时的基准时间设为20ms,假设记一次数中T1中断的次数为C,1.8/(20C)ms即当前自行车行驶的速度。

用内部定时加外中断的方法实现了对输入脉冲信号的测量,这是本系统最关键的程序部分。

3.3速度/里程显示控制子程序设计

最大允许速度由限速切换开关S4控制,超速使单片机的P1.7输出低电平报警。

若行驶速度太慢(<0.5m/s),灯D3不断闪烁,LED交替显示“Erro”、“Sudu”和当前速度值,以引起骑车者的注意。

速度显示值的单位有km/h和每m/s,由功能键S5切换。

对于里程值,为了较精确地显示,程序设置了不同里程范围时所显示的小数点后数字的位数:

里程为10m~99m,显示2位小数;里程为100m~999m,显示1位小数。

3.4系统完整源程序

如附录1

总结

本设计以AT89C2051为核心,通过光电传感器来检测自行车的运转情况进而实现电动自行车的速度,里程的计算及里程的累计,存储,最后用6位的LED能直观的将速度与里程显示给用户,并且在速度高于一定的值时可自动向用户报警,从而达到智能速度里程表。

这次课程设计使我掌握了很多实践知识,在老师和同学的帮助下对单片机有了进一步的了解。

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

整个设计过程可以说不是很顺利,因为有很多知识已经淡忘,还有很多新的东西没有掌握,所以这次设计在不断的复习、学习中度过,使我受益匪浅,也使我对单片机的运用有了进一步的了解和掌握,也为今后的学习生活和工作打下良好的基础。

 

参考文献

[1]张毅坤,陈善久.单片微型计算机原理及应用.西安:

西安电子科技大学出版社,2002.

[2]张友德,赵志英,徐时亮.单片微机原理应用与实验.上海:

复旦大学出版社,2000.

[3]伟福Lab2000P系列单片机仿真实验系统说明书.

 

附录

附录1整体电路图

 

附录2源程序

自行车里程表

/*各引脚用途及系统功能说明

P1.0速度和里程切换:

1显示速度,0显示里程

P1.1限速度切换:

110m/s;08m/s

P1.2km/h和m/s的切换:

P1.4指示显示器单位为km/h

P1.5速度太慢灯闪烁警告

P1.60时灯亮,指示里程;为以灯不亮,显示速度

P1.7超速度报警

距离最大值为9999m

6H圈、38H圈、22C圈、15B6圈

0m=

周长0707H00B4H0012H0012H/0AH

//变量定义//

XIAOSHUEDU57H;小数点位数单元

GEWEIEDU40H;显示单元

SHIWEIEDU41H;

BAIWEIEDU42H;

QIANWEIEDU43H;

QSHU1EDU43H;

QSHU0EDU61H;自行车圈数存储单元高位

QSHU0EDU62H;自行车圈数存储单元低位

SJIAN0EDU6CH;T1定时溢出存储单元高位

SJIAN1EDU6DH;T1定时溢出存储单元低位

//主程序//

ORG000H

AJMPSTART

ORG0003H

AJMPINTEX0

ORG001BH

AJMPIT11

ORG0030H

START:

MOVSP,#75H;设置堆栈指针

MOVSCON,#00H;串行口工作方式

MOVGEWEI,#0AH;开机显示

MOVSHIWEI,#0AH

MOVBAIWEI,#0AH

MOVQIANWEI,#0AH

ACALLDIS11

SETBP3.2;外中断0为输入查询方式

JBP3.2;等待第一个有效脉冲(下降沿)到来

ACALLCLEARRAM;调用系统准备显示初始化子程序

STLOOP:

JNBP1.0,ST1;p1.0=0,显示速度

ACALLDISPLAYS;P1.0=1,显示里程

SJMPSTLOOP;循环显示

ST1:

ACALLDISPLAYV;第一个下降沿来后显示速度

AJMPSTLOOP;循环显示

//系统准备显示初始化子程序//

CLEARRAM:

MOVTMOD,#10H;T1用于定时,工作于模式1

MOVTH1,#0B1H;定时20ms初始值

SETBP1.2;P1.2-P1.0为输入

SETBP1.1

SERBP1.0

CLRA;相应内RAM空间清零

MOV21H,A;速度/里程的BCD码高位清0

MOV22H,A;速度/里程的BCD码低位清0

MOVQSHU1,A;圈数空间清0

MOVQSHU0,A

MOV6AH,A;T1溢出次数暂存单元高位清0

MOV6BH,A;T1溢出次数暂存单元低位清0

MOVSJIAN0,A;计数器空间清零

MOVSJIAN1,A

MOVXIAOSHU,#01H;默认显示3位小数

SETBIT0;设置外中断为边沿触发方式

SETBPT1;T1优先级最高

SETBEA;开总中断

SETBET1;开T1中断

SETBEX0;开外0中断

//外中断0服务子程序//

INTEX0:

PUSHACC;累加器堆栈保护

PUSHPSW;状态字堆栈保护

INCQSHU0;圈加1

SETBP1.7;置1不报警

CLRA;清A

CJNEA,QSHU0,SUBX0;计数没溢出转SUBX0

INCQSHU1;溢出进位(61H加1)

SUBX0:

CLRTR1;关计时,读轮子转一圈的时间

MOV6AH,SJIAN0;时间暂存

MOV6BH,SJIAN1

MOVTH1,#0B1H;定时器T1重付初值

MOVTL1,#0DFH

CLRA

MOVSJIAN0,A;清计时空间

MOVSJIAN1,A

SETBTR1;重新计时

POPPSW;状态字恢复

POPACC;累加器恢复

RETI;中断返回

//T1定时器溢出时中断服务子程序//

IT11:

PUSHACC;堆栈保护

PUSHPSW

INCSJIAN1;定时20毫秒溢出次数

MOVA,SJIAN1;读一圈定时的次数

CJNEA,#0BBH,SUBT1;速度太慢(<0.5),处理

AJMPSUBT2

SUBT1:

JCSUBT2

INC69H;(69H)为奇数,LED显示“Erro”

MOVA,69H;再显示具体速度的值

JBACC.0ERRO;(69H)为偶数,LED显示“Sudu”

MOVGEWEI,#05H;再显示具体速度的值

MOVSHIWEI,#0BH

MOVBAIWEI,#0DH

MOVQIANWEI,#0BH

MOVXIAOSHU,#0BH

ACALLDIS11

SJMPFS12

ERRO:

MOVGEWEI,#0CH

MOVSHIWEI,#OBH

MOVBAIWEI,#0BH

MOVQIANWEI,#0DH

ACALLDIS21

;“Erro”或“sudu”和具体速度大值交替闪烁显示

FS12:

MOVR2,#01H;

CLRP1.5

ACALLDELAY2

SETBP1.5

ACALLDELAY2

DJNZR2,FLASH

SUBT2:

MOVTH1,#0B1H

MOVTL1,#0DFH

SETBTR1

POPPSW

POPACC

RETI

//里程显示控制子程序//

DISPLAYS:

CLRP1.6

ACALLJULI

MOVA,QSHU1

CJNEA,#02H,DIAOYONG

AJMPPANDY

DIAOYONG:

JNCPANDY1

AJMPBUDY

PANDY:

MOVA,QSHU0

CJNEA,#2CH,PANDY2

AJMPPANDY1

PANDY2:

JCBUDY

PANDY1:

MOVR6,#00h

MOVR7,#0AH

ACALLJULI2

ACALLBCDC

ACALLFENKAI

ACALLDIS21

ACALLDELAY1

RET

BUDY:

MOVR6,#00h

MOVR7,#01h

ACALLJULI2

ACALLBCDC

ACALLFENKAI

ACALLDIS11

ACALLDELAY1

ACALLDELAY1

RET

//速度显示控制子程序//

DISPLAYV:

SETBP1.6

ACALLSUDU

ACALLBCDC

ACALLFENKAI

MOVXIAOSHU,#01H

RET

//处理子程序1//

JULI:

PUSHPSW

PUSHACC

MOVR2,QSHU1

MOVR3,QSHU0

JNZGAO

MOVA,QSHU0

CJNEA,#06H,PAN1

AJMPPAN2

PAN1:

JNCPAN2

AJMPCZ707

PAN2:

MOVA,QSHU0

CJNEA,#38H,PAN3

AJMPGAO

PAN3:

JCCZB4

GAO:

AJMPCZ12

CZ707:

MOVR6,#07H

MOVR7,#07H

MOVXIAOSHU,#01H

AJMPKAISHI

CZB4:

MOVR6,#00H

MOVR7,#0B4H

MOVXIAOSHU,#02H

AJMPKAISHI

CZ12:

MOVR6,#00H

MOVR7,#00H

MOVXIAOSHU,#03H

KAISHI为两字节乘两字节程序段

KAISHI:

MOVA,R3

MOVB,R7

MULAB

MOVR4,B

MOVR5,B

MOVA,R3

MOVB,R6

MULAAB

ADDA,R4

MOVR4,A

CLRA

ADDCA,B

MOVB,R7

MULAB

ADDA,R4

MOVR4,A

MOVA,R3

ADDCA,B

MOVR3,A

CLRA

RLCA

XCHA,R2

MOVB,R6

MULAB

ADDA,R3

MOVR3,A

MOVA,R2

ADDCA,B

MOV50H,R2

MOV51H,R3

MOV52H,R4

MOV53H,R5

POPPSW

POPACC

RET

//处理里程子程序2//

Juli2:

PUSHPSW

PUSHACC

MOVR2,50H

MOVR3,51H

MOVR4,52H

MOVR5,53H

DIVD11:

CLRC

MOVA,R3

SUBBA,R7

MOVA,R2

SUBBA,R6

JCDVD11

SETBOV

RET

DVD111:

MOVB,#10H

DVD211:

CLRC

MOVA,R5

MOVR5,A

MOVA,R4

RLCA

MOVR4,A

MOVA,R3

RLCA

MOVR3,A

XCHA,R2

XCHA,R2

MOVF0,C

CLRC

SUBBA,R7

MOVR1,A

MOVA,R2

SUBBA,R6

ANLC,/F0

JCDVD311

MOVR2,A

MOVA,R1

MOVR3,A

INCR5

DVD311:

DJNZB,DVD211

MOVA,R4

MOVR2,A

MOVA,R5

MOVR3,A

CLROV

MOV30H,R2

MOV31H,R3

POPACC

POPPSW

NOP

RET

//十六进制转换乘BCD子程序//

BCDC:

PUSHACC

PUSHPSW

MOVR6,30H

MOVR7,31H

CLRA

MOVR3,A

MOVR4,A

MOVR5,A

MOVR2,#10H

HB322:

MOVA,R7

RLCA

MOVR7,A

MOVA,R6

RLCA

MOVR6,A

MOVA,R5

DAA

MOVR5,A

MOVA,R4

ADDCA,R4

DAA

MOVR4,A

MOVA,R3

ADDCA,R3

DJNZR2,HB322

MOV20H,R3

MOV21H,R4

MOV22H,R5

POPPSW

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

当前位置:首页 > 幼儿教育 > 幼儿读物

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

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