基于单片机的电子式转速里程表的设计毕业设计论文文档格式.docx

上传人:b****6 文档编号:18372152 上传时间:2022-12-15 格式:DOCX 页数:22 大小:257.92KB
下载 相关 举报
基于单片机的电子式转速里程表的设计毕业设计论文文档格式.docx_第1页
第1页 / 共22页
基于单片机的电子式转速里程表的设计毕业设计论文文档格式.docx_第2页
第2页 / 共22页
基于单片机的电子式转速里程表的设计毕业设计论文文档格式.docx_第3页
第3页 / 共22页
基于单片机的电子式转速里程表的设计毕业设计论文文档格式.docx_第4页
第4页 / 共22页
基于单片机的电子式转速里程表的设计毕业设计论文文档格式.docx_第5页
第5页 / 共22页
点击查看更多>>
下载资源
资源描述

基于单片机的电子式转速里程表的设计毕业设计论文文档格式.docx

《基于单片机的电子式转速里程表的设计毕业设计论文文档格式.docx》由会员分享,可在线阅读,更多相关《基于单片机的电子式转速里程表的设计毕业设计论文文档格式.docx(22页珍藏版)》请在冰豆网上搜索。

基于单片机的电子式转速里程表的设计毕业设计论文文档格式.docx

霍尔电流传感器反应速度一般在7微妙,不用考虑单片机循环判断的时间。

若在圆盘上贴上多块磁钢,则圆盘每转一圈,输出的脉冲信号将相应增加,单位时间测到的脉冲数将增多,测出的转速也将更加精细。

本设计建模时采用一个圆盘上贴一个磁钢进行模拟。

实际制作中可以贴上多块磁钢,即可以克服因车轮转速太慢而在设定时间测不到脉冲的问题。

图2.1.1-1霍尔转速传感器的外形图

图2.1.1-2霍尔传感器检测转速示意图

2.1.2AT89C51芯片简介

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

AT89C51是一个低功耗高性能单片机,40个引脚,32个外部双向输入/输出(I/O)端口,同时含2个外中断口,2个16位可编程定时计数器,2个全双工串行通信口,AT89C51可以按照常规方法进行编程,也可以在线编程。

其将通用的微处理器和Flash存储器结合在一起,特别是可反复擦写的Flash存储器可有效地降低开发成本。

AT89C51具有如下功能特性:

★兼容MCS—51指令系统;

★32个双向I/O口;

★两个16位可编程定时/计数器;

★1个串行中断;

★两个外部中断源;

★4k可反复擦写(>

1000次)FlashROM;

★128x8bit部RAM;

★6个中断源;

★低功耗空闲和掉电模式;

★软件设置睡眠和唤醒功能。

图2.1.2-1AT89C51芯片

2.1.3液晶显示模块SED1520芯片介绍

本课题仿真实验系统采用的液晶显示屏置控制器为SED1520,点阵为122×

32,需要两片SED1520组成,由E1、E2分别选通,以控制显示屏的左右两半屏。

图形液晶显示模块有两种连接方式。

一种为直接访问方式,一种为间接控制方式。

本设计采用直接控制方式。

直接控制方式就是将液晶显示模块的接口作为存储器或I/O设备直接挂在计算机总线上。

计算机通过地址译码控制E1和E2的选通;

读/写操作信号R/W由地址线A1控制;

命令/数据寄存器选择信号AO由地址线A0控制。

实际电路如图所示。

地址映射如下(地址中的X由LCDCS决定,可参见地址译码部分说明)

表2.1.3-1地址映射

0X000H

0X001H

0X002H

0X003H

0X004H

0X005H

0X006H

0X007H

写E1指令

写E1数据

读E1状态

读E1数据

写E2指令

写E2数据

读E2状态

读E2数据

图2.1.3-1液晶屏显示控制电路

2.1.3.1SED1520芯片介绍

SED1520液晶显示驱动器是一种点阵图形式液晶显示驱动器,它可直接与8位微处理器相连,集行、列驱动器于一体,因此使用起来十分方便,作为藏式控制器被广泛应用于点阵数较少的液晶显示模块。

2.1.3.2SED1520的特性

置显示RAM区RAM容量为2560(32行80列)位。

RAM中的1位数据控制液晶屏上,具有16个行驱动口和16个列驱动口 

,并可级联两个SED1520实现32行驱动。

可直接与80系列微处理器相连,亦可直接与68系列微处理器相连。

驱动占空比为1/16或1/32。

可以与SED1520配合使用,以便扩展列驱动口数目。

2.1.3.3SED1520指令与显示RAM结构

SED1520指令系统比较简单,共13条,除读状态指令、读显示RAM数据指令外,其他指令均为写操作,并且读写指令均为单字节指令。

在送出每条指令时,必须进行控制器状态检测,状态字节的含义如下:

D7:

1/0,模块忙/准备就绪;

D5:

1/0,模块显示关/开;

D4:

1/0,模块复位/正常;

D3-D0:

未用;

在指令使用中,关键要分清显示行、列设置和显示页面设置的关系。

单片SED1520可驱动61×

16液晶屏,其部显示RAM相对于0每8行为一个显示页面。

本设计所用的字符液晶模块由两块SED1520级联驱动,其中一个工作在主工作方式下,另一个工作在从方式下,主工作方式SED1520负责上半屏16行的驱动和左半屏的61列驱动,从工作方式的SED1520则负责下半屏16行的驱动和右半屏的61列驱动,使能信号E1、E2用来区分具体控制的是那一片SED1520。

这样两片SED1520级联可驱动122×

32图形点阵液晶显示屏,可完成图形显示,也可显示七个半(16×

16点阵)汉字。

图2.1.3.3-1图形点阵液晶显示屏

2.2设计方法

2.2.151单片机定时器/计数器的基本结构及工作原理

单片机部设有两个16位的可编程定时器/计数器。

可编程的意思是指其功能(如工作方式、定时时间、启动方式等)均可由指令来确定和改变。

在定时器/计数器中除了有两个16位的计数器之外,还有两个特殊功能寄存器(控制寄存器和方式寄存器)。

2.2.1.1定时器/计数器的结构如下

图2.2.1.1-1定时器/计数器的结构

从上面定时器/计数器的结构图中我们可以看出,16位的定时/计数器分别由两个8位专用寄存器组成,即:

T0由TH0和TL0构成;

T1由TH1和TL1构成。

其访问地址依次为8AH-8DH。

每个寄存器均可单独访问。

这些寄存器是用于存放定时或计数初值的。

此外,其部还有一个8位的定时器方式寄存器TMOD和一个8位的定时控制寄存器TCON。

这些寄存器之间是通过部总线和控制逻辑电路连接起来的。

TMOD主要是用于选定定时器的工作方式;

TCON主要是用于控制定时器的启动停止,此外TCON还可以保存T0、T1的溢出和中断标志。

当定时器工作在计数方式时,外部事件通过引脚T0(P3.4)和T1(P3.5)输入。

2.2.1.2定时计数器的原理

16位的定时器/计数器实质上就是一个加1计数器,其控制电路受软件控制、切换。

当定时器/计数器为定时工作方式时,计数器的加1信号由振荡器的12分频信号产生,即每过一个机器周期,计数器加1,直至计满溢出为止。

显然,定时器的定时时间与系统的振荡频率有关。

因一个机器周期等于12个振荡周期,所以计数频率

如果晶振为12MHz,则计数周期为:

这是最短的定时周期。

若要延长定时时间,则需要改变定时器的初值,并要适当选择定时器的长度(如8位、13位、16位等)。

当定时器/计数器为计数工作方式时,通过引脚T0和T1对外部信号计数,外部脉冲的下降沿将触发计数。

计数器在每个机器周期的S5P2期间采样引脚输入电平。

若一个机器周期采样值为1,下一个机器周期采样值为0,则计数器加1。

此后的机器周期S3P1期间,新的计数值装入计数器。

所以检测一个由1至0的跳变需要两个机器周期,故外部事件的最高计数频率为振荡频率的1/24。

例如,如果选用12MHz晶振,则最高计数频率为0.5MHz。

虽然对外部输入信号的占空比无特殊要求,但为了确保某给定电平在变化前至少被采样一次,外部计数脉冲的高电平与低电平保持时间在一个机器周期以上。

当CPU用软件给定时器设置了某种工作方式之后,定时器就会按设定的工作方式独立运行,不再占用CPU的操作时间,除非定时器计满溢出,才可能中断CPU当前操作。

CPU也可以重新设置定时器工作方式,以改变定时器的操作。

由此可见,定时器是单片机中效率高而且工作灵活的部件。

2.2.1.3控制寄存器

定时器/计数器T0和T1有2个控制寄存器TMOD和TCON,它们分别用来设置各个定时器/计数器的工作方式,选择定时或计数功能,控制启动运行,以及作为运行状态的标志等。

其中,TCON寄存器中另有4位用于中断系统。

定时器/计数器方式寄存器TMOD

定时器方式控制寄存器TMOD在特殊功能寄存器中,字节地址为89H,无位地址。

TMOD的格式如下图所示。

表2.2.1.3-1TMOD的格式

D7D6D5D4D3D2D1D0

GATE

C\T

M1

M0

控制定时器T1

控制定时器T0

GATE:

门控位。

GATE=0时,定时器由软件控制位TR0或TR1来控制启停。

TRi位为1时,定时器启动开始工作;

为0时定时器停止工作。

GATE=1时,定时器的启动停止由外部中断引脚和TRi位共同控制。

只有当外部中断引脚INT0或INT1为高时,TR0或TR1置1才能启动定时器工作。

C\T:

功能选择位。

当C\T=0时设置为定时器工作模式;

当C\T=1时设置为计数器工作模式。

M1、M0:

工作方式选择位。

定时器\计数器有4种工作方式,由M0、M1来定义:

表2.2.1.3-2M1、M0定义

操作方式

功能说明

方式0

13位定时器\计数器,TLi只用低5位

1

方式1

16位定时器\计数器

方式2

自动重装初值的8位定时器\计数器,THi的值在保持不变,TLi溢出时,THi的值自动装入TLi中。

方式3

仅适用于T0,T0分成2个独立的8位计数器;

T1停止计数。

定时器/计数器方式控制寄存器不能进行位寻址,只能用字节传送指令设置定时器工作方式,低半字节定义为定时器0,高半字节定义为定时器1。

复时,TMOD所有位均为0。

2.2.1.4定时器/计数器控制寄存器TCON

TCON在特殊功能寄存器中,字节地址为88H,位地址(由低位到高位)为88H~8FH,由于有位地址,十分便于进行位操作。

TCON的作用是控制定时器的启、停,标志定时器溢出和中断情况。

TCON的格式如下图所示。

其中,TFl,TRl,TF0和TR0位用于定时器/计数器;

IEl,ITl,IE0和IT0位用于中断系统。

表2.2.1.4-1定时器/计数器控制寄存器TCON

8FH8EH8DH8CH8BH8AH89H88H(位地址)

TF1

TR1

TF0

TR0

IE1

IT1

IE0

IT0

各位定义如下:

TF1和TF0:

分别为定时器1和定时器0溢出标志。

当计数器计满产生溢出时,由硬件自动置“1”,并可申请中断。

进入中断服务程序后,由硬件自动清零。

TR1和TR0:

定时器1和定时器0启动控制位。

IE1和IE0:

外部中断引脚INT0或INT1中断请求标志位。

当外部中断源有请求时其对应的中断标志位置“1”。

其复位方式由触发方式来设置。

IT1和IT0:

为外部中断1和外部中断0的触发方式选择位。

ITi设置为“0”时为电平触发;

设置为“1”时为边沿触发方式。

TCON中低4位与中断有关。

由于TCON是可以位寻址的,因而如果只是清溢出或启动定时器工作,可以用位操作命令。

例如:

执行“CLRTF0”后则清定时器0的溢出;

执行“SETBTR1”后可启动定时器1开始工作。

2.2.1.5定时器/计数器的初始化

由于定时器/计数器的功能是由软件编程确定的,所以一般在使用定时/计数器前都要对其进行初始化,使其按设定的功能工作。

初始化的步骤如下:

★确定工作方式(即对TMOD赋值);

★预置定时或计数的初值(可直接将初值写入TH0、TL0或TH1、TL1);

★根据需要开放定时器/计数器的中断(直接对IE位赋值);

★启动定时器/计数器(若已规定用软件启动,则可把TR0或TR1置“1”;

若已规定由外中断引脚电平启动,则需给外引脚步加启动电平。

当实现了启动要求后,定时器即按规定的工作方式和初值开始计数或定时)。

2.2.1.6定时器/计数器的四种工作方式

定时器T0或T1无论用作定时器或计数器都有4种工作方式:

方式0、方式1、方式2和方式3。

除方式3外,T0和T1有完全相同的工作状态。

通过对方式寄存器TMOD中M1、M2位的设置,可选择四种工作方式。

工作方式0

工作方式0是一个13位的定时/计数器,16位计数器只用了高8位THi和低5位(TLi的D4~D0位),TLi的高3位未用。

工作方式1

16位的定时/计数器,原理同工作方式0

工作方式2

自动重装计数器。

16位计数器拆成两个8位计数器,低8位作计数器用,高8位用于保存计数初值。

当低8位计数产生溢出时,将TFi位置1,同时又将保存在高8位中的计数初值重新装入低8位计数器中,又继续计数,循环重复不止。

工作方式3

方式3只适用定时器T0,T0在该模式下被拆成两个独立的8位计数器TH0和TL0。

其中TL0使用原来T0的一些控制位和引脚,它们是:

C/T,GATE,TR0,TF0和T0(P3.4)引脚INT0(P3.2)引脚。

此方式下的TL0除作8位计数器外,其功能和操作与方式0,方式1完全相同,可作计数也可作定时用。

该方式下的TH0,此时只可作简单的部定时器功能。

它借用原定时器1的控制位和溢出标志位TR1和TF1,同时占用了T1的中断源。

TH0的启动和关闭幕式仅受TR1的控制,TR1=1,TH0启动定时;

TR1=0,TH0停止定时工作。

该方式下的T1仍可设置为方式0、方式1、方式2,用于任何不需要中断的场合。

2.2.2频率测量

本课题所采用的霍尔传感器由一个磁钢和一个霍尔器件组成。

磁钢被贴在非磁性圆盘上,随圆盘一起旋转,霍尔器件固定在圆盘附近,圆盘每转一圈,霍尔器件将产生一个脉冲,一个脉冲即代表了一个圆盘的周长。

本设计中霍尔传感器产生的脉冲将被送到单片机的部定时计数器timer1的T1口。

部定时计数器Timer0工作在定时状态,Timer1工作在计数状态。

Timer0和Timer1均工作在模式1。

本设计中Timer0产生0.5秒的定时。

Timer1将对0.5秒对加到T1脚的脉冲进行计数。

假设0.5秒timer1计数到N个脉冲。

则圆盘的转动频率为

若是将磁钢贴于汽车的轮轴上,则汽车轮子每转一圈,霍尔器件产生一个脉冲。

对脉冲频率进行处理,即可转化为车速。

对脉冲数进行累加再乘以轮子的长度,即可得到里程数据。

2.2.3基于伟福Lab2000p仿真实验系统的建模过程

2.2.3.1利用直流电机对车轮变速进行模拟

利用Lab2000p实验系统上的直流电机、DAC0832数模变换模块、单片机8031、指拨开关K0-K7构成一个能够控制电机转速的控制系统,对车轮的变速情况进行模拟。

电机的转速通过软件编程,由指拨开关的不同输入状态进行控制。

表2.2.3.1-1实验系统连线情况

连线

连结孔1

连结孔2

K0

P10

2

K1

P11

3

K2

P12

4

K3

P13

5

K4

P14

6

K5

P15

7

K6

P16

8

K7

P17

9

DA_CS

CS2

10

-5V—+5V

至D/A

2.2.3.2频率测量模块的建立

在直流电机转动圆盘边缘贴有一块磁钢,在圆盘附近装有霍尔传感器,圆盘每转动一次即产生一个脉冲,脉冲输出接单片机的P35引脚。

利用单片机8031的部定时/计数器Timer0进行定时,Timer1对脉冲进行计数。

表2.2.3.2-1实验系统连线情况

脉冲输出

P35

2.2.3.3数据显示

利用实验箱上的LCD模块进行数据显示,将LCD设置成两行,第一行显示里程数据,第二行显示速度数据。

数据的显示主要由软件编程进行控制。

表2.2.3.3-1实验系统连线情况

LCD_CS

CS0

2.2.3.4系统硬件框图如下

图2.2.3.4-1系统硬件框图

3程序设计

整个程序的设计基于Lab2000p仿真系统,速度和里程的计算都采取了近似处理。

3.1系统程序流程总框图

图3.1-1系统程序流程总框图

本系统软件采用模块化设计方法。

整个系统由初始化模块、电机转速控制模块、电机转向显示模块、频率测量模块、速度,里程显示模块、汉字显示模块以及其他功能模块组成。

程序设计中,以60H、61H、62H三个地址为数据缓冲区,60H(DATA1)用于存储每0.5s计数到的脉冲数,用于计算速度;

61H(DATA2)、62H(DATA3)两个地址用于存储计数到的脉冲的累加数据,用于计算里程。

3.2主要模块程序设计

3.2.1电机转速控制模块程序设计

电机转速的控制模块由指拨开关、单片机、DAC0832数模变换芯片组成。

指拨开关K0-K7接单片机的P10-P17(P1口),通过指拨开关可输入数据0-255,单片机将指拨开关输入的数据输出到DAC0832数模变换芯片,通过数模变换,转换成-8V-+8V的电压驱动直流电机。

从而达到对电机转速的控制。

输入数据等于128时,输出电压为0V;

数据大于128时,输出电压大于0V;

输入数据小于128时,输出电压小于0V。

movp1,#0ffh;

设置P1口为输入口

movdptr,#cs0832

movA,p1

movxdptr,A

3.2.2频率测量模块程序设计

霍尔传感器产生的脉冲被送到单片机的部定时/计数器timer1的T1口。

部定时/计数器Timer0工作在定时状态,Timer1工作在计数状态。

则圆盘的转动频率为N/0.5=2N。

JISHU:

MOVIE,#10001010B;

打开中断开关

MOVTMOD,#MODE;

设定部定时器/计数器的工作模式

MOVSP,#70H

MOV40H,#00H

MOVTH1,#00H;

将timer1的计数寄存器赋初值0

MOVTL1,#00H;

SETBTR1;

启动timer1

AA:

CLRF1;

标志位赋0

MOVTH0,#03CH;

定时器写入初值

MOVTL0,#0B0H

SETBTR0;

打开定时器timer0

JNBF1,$;

等待50ms

INC40H

MOVA,40H

CJNEA,#09H,AA;

定时中断重复10次

CLRTR1;

关闭计数器timer1

MOVDATA1,TL1;

取出timer1计数值给DATA1

MOVA,DATA1

ADDA,DATA2

MOVDATA2,A;

将计数值累加到DATA2

JNCBB;

检查计数是否溢出

INCDATA3;

有溢出则DATA3加1

BB:

RET

;

----------------------定时中断子程序

TIMER:

CLRTR0

SETBF1

RETI

Timer0工作在模式1时,TLO、THO计数寄存器各使用8位,而28=256,设置计数初值时,把计数起点的值处以256,将余数放入TLO计数寄存器,将商数放入THO计数寄存器。

本实验系统所采用12MHz的晶振,定时器所计数的脉冲的周期为1us。

设计每50ms产生一次定时中断,需计数50000个脉冲,则装入计数寄存器的计数初值为

,装入THO计数寄存器的初值为

,装入TLO计数寄存器的初值为176(0B0H)。

程序流程图如下:

图3.2.2-1程序流程图

3.2.3液晶显示程序的设计

本课题中速度、里程的数据由液晶显示模块显示,所用的液晶显示模块由SED1520芯片驱动,首先必须对液晶显示模块进行初始化,编写相应的字库,编写读写程序等。

液晶显示程序的设计包括了初始化程序、清屏程序、写指令代码子程序、写显示数据子程序、读显示数据子程序、中文显示子程序、数字显示程序以及中文字库和数字字库的编写。

程序详见附表。

3.2.4速度、里程显示程序的设计

本课题中霍尔传感器产生的脉冲被送到单片机的部定时计数器timer1的T1口。

部定时计数器Time

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

当前位置:首页 > IT计算机 > 计算机软件及应用

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

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