自行车行程速度毕业设计

更新时间:2024-04-27 16:27:01 阅读量: 综合文库 文档下载

说明:文章内容仅供预览,部分内容可能不全。下载后的文档,内容与下面显示的完全一致。下载之前请确认下面内容是否您想要的,是否完整无缺。

中州大学毕业设计

学 号:

中州大学毕业设计

设计题目:基于单片机的自行车里程速度计设计

学 院: 专 业: 班 级: 姓 名: 指导教师:

日 期: 年 月 日

摘 要

1

中州大学毕业设计

目前自行车已成为人们娱乐、休闲、锻炼的首选,尤其是对于用来锻炼的人们,自行车速度里程计让他们清楚地知道当前的速度、里程等物理量,更好的用于锻炼。本论文主要阐述一种基于霍尔元件的自行车速度里程计设计。以 AT89C51 单片机为核心,A44E 霍尔传感器测转数,实现对自行车速度里程计测量统计。该速度里程计将传感器输入到单片机的脉冲信号的宽度实时地测量出来,然后通过单片机计算出速度和行程,再将所得的数据存储到串口数据存储器,采用CAT24WC32 实现在系统掉电的时候保存速度和行程信息,并由串口液晶显示模块实时显示出所测速度和行程。本设计介绍了自行车速度/里程测试仪的硬件电路和软件设计。硬件部分利用霍尔元件将自行车每转一圈的脉冲数传入单片机系统,然后单片机系统将信号经过处理送显示。软件部分用汇编语言进行编程,采用模块化设计思想。该系统硬件电路简单,子程序具有通用性,完全符合设计要求。

关键词:速度/里程;霍尔元件;单片机;LCD液晶显示

Abstract

2

中州大学毕业设计

Now the bicycle has become the first choice of entertainmenting and exercising. Especially for people to exercise,The bicycle speed/trip can fulfill the basic need of people’s life, so that they can learn the speed and the mileage of the bicycle. In these paper, the bicycle speed/trip design based on the Hall element is elaborated. By AT89C51 as kernel, using A44E Hall element to measure revolution, the measure and statistic are achieved. The range informations are saved by CAT24WC32 when the power is off, the bicycle speed can be displayed on LCD. In this article, the hardware circuit and software design of bicycle speed/trip instrument are introduced in detail. About the hardware, the pulse number is transmitted of one cycle of the bicycle into Single Chip Microcomputer system. Then the signal processed by Single Chip Microcomputer system is sent to display scream. About the software, in assemble language, the program is designed in the mode of modules. The system has simple hardware, common sub-program, and meet the demand of design.

Key words: speed/trip; Hall element; Single Chip Microcomputer; LCD

目录

一、概述

1、设计目的??????????????????????? 1

3

中州大学毕业设计

2、课题简介??????????????????????? 1 二、系统设计

1、总体设计方案????????????????????? 2 2、硬件部分简介????????????????????? 3 (1)AT89c51芯片简介?????????????????? 3 (2)硬件设计?????????????????????? 4 3、软件部分??????????????????????? 5 (1)初始化程序?????????????????????6 (2)主程序???????????????????????8 (3)中断程序??????????????????????9 (4)里程、速度处理程序?????????????????11 (5)显示子程序?????????????????????14 (6)延时子程序?????????????????????16 三、调试???????????????????????????17 1、硬件调试??????????????????????? 17 2、软件调试??????????????????????? 17 四、操作说明?????????????????????????19 五、参考文献?????????????????????????20 六、心得体会?????????????????????????21 七、附录???????????????????????????22 1、元器件清单?????????????????????? 22 2、整体原理图?????????????????????? 23 3、完整程序??????????????????????? 24

自行车里程计/速度计的设计

一、 概述

4

中州大学毕业设计

1、 设计目的

本设计采用AT89C51单片机作控制,利用霍尔元件等器件设计一个可用LED数码管显示当前自行车行驶的距离及速度并具有超速报警功能的自行车里程/速度表,使其作为自行车的一种辅助工具,让自行车的功用更强大,给人们带来更多的方便。 2、 课题简介

自行车被发明及使用到现在已有两百多年的历史,在这两百年间人类在不断的尝试与研发过程中,自行车发展的目的也从最早的代步工具转换成休闲娱乐的用途,随着生活水平的提高,人们希望自行车的功能更强大,而里程计/速度计正满足了这个需求。现在先进的里程/速度计不仅能显示实时的速度和里程,还显示时间,甚至具有测量骑车人的心跳、显示骑车人热量消耗等功能。

由于时间有限,本设计完成的功能减为两个,即测量并通过LED数码管进行动态显示当前的速度和里程,并在超速时发出警报。 要求达到的各项指标及实现方法如下:

1. 利用霍尔传感器产生里程数的脉冲信号。 2. 对脉冲信号进行计数。

实现:利用单片机自带的计数器T1对霍尔传感器脉冲信号进行计数。 3. 对数据进行处理,要求用LED显示里程总数和即时速度。 实现:利用软件编程,对数据进行处理得到需要的数值。

最终实现目标:自行车的速度里程表具有里程、速度测试与显示功能,采用单片机作控制,显示电路可显示里程及速度。

二、系统设计

1、总体设计方案

采用AT89C51芯片,用霍尔元件将车轮的转速转换成电脉冲,经过处理后送

入单片机。里程及速度的测量,是经过AT89C51的定时/计数器测出总的脉冲数和每转一圈的时间,再经过单片机的计算得出,计算结果通过LED显示器显示出来。

传感器是获取自然或生产领域中信息的关键器件,是现代信息系统和各种设备不可缺少的信息采集工具。磁传感器是一种将磁学量信号转变为电信号的器件或装置。随着信息产业、工业自动化、医疗仪器等的飞速发展和计算机应用的普及,需要大量的传感器将被测或被控的非电信号转换成可与计算机兼容的电信号。作为输入信号,这就给磁传感器的快速发展提供了机遇,形成了磁传感器的产业。

5

中州大学毕业设计

其中最具代表的磁传感器就是霍尔传感器,在自动检测系统中,利用霍尔传感器测转数是一种最基本的测量工作。

单片机是本次设计的核心部件,它是信号从采集到输出的桥梁,而且包括计算、定时、信息处理等功能

当轮子每转一圈,通过开关型霍尔元件传感器采集到一个脉冲信号,并从引脚12即P3.2外部中断0端输入,传感器每获取一个脉冲信号即对系统提供一次计数中断。每次中断代表车轮转动一圈,中断数n轮圈的周长为L的乘积为里程值。计数器T1计算每转一圈所用的时间t,就可以计算出即时速度v。当里程键按下时,里程指示灯亮,LED切换显示当前里程,与当速度键按下时,速度指示灯亮,LED切换显示当前速度,若自行车超速,系统发出报警信号,指示灯闪烁。里程数据自动记忆,也可用于电动自行车、摩托车、汽车等机动车仪表上。

设计包括硬件、软件两部分,硬件电路包括AT89C51单片机的外围电路以及LED显示电路等,这里对硬件部分只做简单介绍,主要阐述的是软件部分的设计,包括数据初始化程序的设计、主程序的设计、处理子程序的设计、显示子程序的设计;最后针对仿真过程遇到的问题进行了具体说明与分析,对本次设计进行总结。

外部信号 AT89C52里程显示 霍尔传感 速度显示 外部存储 单片机报警部分

图2.1 系统的原理框图

6

中州大学毕业设计

2、 硬件部分介绍

(1)AT89C51芯片简介

AT89C51是一种带4K字节闪存可编程可擦除的只读存储器即为 (FPEROM—Flash Programmable and Erasable Read Only Memory)的低电压、高性能CMOS 8位微处理器,俗称单片机。

T INT 定时/计数器 中断系统 P0-P3 并行I/OCPU 串口I/OTXD口口存储器 RXD 管脚说明:

VCC:供电电压。 GND:接地。

P0口:P0口为一个8位漏级开路双向I/O口,每脚可吸收8TTL门电流。当P1口的管脚第一次写1时,被定义为高阻输入。P0能够用于外部程序数据存储器,它可以被定义为数据/地址的第八位。在FIASH编程时,P0 口作为原码输入口,当FIASH进行校验时,P0输出原码,此时P0外部必须被拉高。

P1口:P1口是一个内部提供上拉电阻的8位双向I/O口,P1口缓冲器能接收输出4TTL门电流。P1口管脚写入1后,被内部上拉为高,可用作输入,P1口被外部下拉为低电平时,将输出电流,这是由于内部上拉的缘故。在FLASH编程和校验时,P1口作为第八位地址接收。

P2口:P2口为一个内部上拉电阻的8位双向I/O口,P2口缓冲器可接收,输出4个TTL门电流,当P2口被写“1”时,其管脚被内部上拉电阻拉高,且作为输入。并因此作为输入时,P2口的管脚被外部拉低,将输出电流。这是由于内部上拉的缘故。P2口当用于外部程序存储器或16位地址外部数据存储器进行存取时,P2口输出地址的高八位。在给出地址“1”

7

图2-2 单片机内部机构示意图

中州大学毕业设计

时,它利用内部上拉优势,当对外部八位地址数据存储器进行读写时,P2口输出其特殊功能寄存器的内容。P2口在FLASH编程和校验时接收高八位地址信号和控制信号。

P3口:P3口管脚是8个带内部上拉电阻的双向I/O口,可接收输出4个TTL门电流。当P3口写入“1”后,它们被内部上拉为高电平,并用作输入。作为输入,由于外部下拉为低电平,P3口将输出电流(ILL)这是由于上拉的缘故。

P3口也可作为AT89C51的一些特殊功能口,如下表所示: 口管脚 备选功能

P3.0 RXD(串行输入口)

P3.1 TXD(串行输出口) P3.2 /INT0(外部中断0) P3.3 /INT1(外部中断1) P3.4 T0(记时器0外部输入) P3.5 T1(记时器1外部输入)

P3.6 /WR(外部数据存储器写选通) P3.7 /RD(外部数据存储器读选通)

P3口同时为闪烁编程和编程校验接收一些控制信号。

RST:复位输入。当振荡器复位器件时,要保持RST脚两个机器周期的高电平时间。

ALE/PROG:当访问外部存储器时,地址锁存允许的输出电平用于锁存地址的地位字节。在FLASH编程期间,此引脚用于输入编程脉冲。在平时,ALE端以不变的频率周期输出正脉冲信号,此频率为振荡器频率的1/6。因此它可用作对外部输出的脉冲或用于定时目的。然而要注意的是:每当用作外部数据存储器时,将跳过一个ALE脉冲。如想禁止ALE的输出可在SFR8EH地址上置0。此时, ALE只有在执行MOVX,MOVC指令是ALE才起作用。另外,该引脚被略微拉高。如果微处理器在外部执行状态ALE禁止,置位无效。

/PSEN:外部程序存储器的选通信号。在由外部程序存储器取指期间,每个机器周期两次/PSEN有效。但在访问外部数据存储器时,这两次有效的/PSEN信号将不出现。

/EA/VPP:当/EA保持低电平时,则在此期间外部程序存储器(0000H-FFFFH),不管是否有内部程序存储器。注意加密方式1时,/EA将内部锁定为RESET;当/EA端保持高电平时,此间内部程序存储器。在FLASH编程期间,此引脚也用于施加12V编程电源(VPP)。

8

中州大学毕业设计

XTAL1:反向振荡放大器的输入及内部时钟工作电路的输入。 XTAL2:来自反向振荡器的输出。

振荡器特性:

XTAL1和XTAL2分别为反向放大器的输入和输出。该反向放大器可以配置为片内振荡器。石晶振荡和陶瓷振荡均可采用。如采用外部时钟源驱动器件,XTAL2应不接。有余输入至内部时钟信号要通过一个二分频触发器,因此对外部时钟信号的脉宽无任何要求,但必须保证脉冲的高低电平要求的宽度。

(2)硬件设计

自行车里程计/速度计电路原理图见附录。

本次设计信号的捕获采用的是霍尔传感器。 霍尔器件具有许多优点,它们的结构牢固、体积小、重量轻、寿命长、安装方便、功耗小、频率高(可达1MHz)、耐震动、不怕灰尘、油污、水汽及烟雾等的污染或腐蚀。霍尔线性器件的精度高、线性度好;霍尔开关器件无触点、无磨损、输出波形清晰、无抖动、无回跳、位置重复精度高。取用各种补偿和保护措施的霍尔器件工作温度范围宽,可达-55℃~150℃。XTAL1和XTAL2分别为反向放大器的输入和输出。该反向放大器可以配置为片内振荡器。石晶振荡和陶瓷振荡均可采用。如采用外部时钟源驱动器件,XTAL2应不接。由于输入至内部时钟信号要通过一个二分频触发器,因此对外部时钟信号的脉宽无任何要求,但必须保证脉冲的高低电平要求的宽度。

P0口作为输出口用于显示历程状态和速度状态。由于P0口没有上拉电阻, 因此作为输出口时要加上上拉电阻来驱动LED数码管的点亮。接于引脚10即P3.2、RXD的开关用于控制改变显示的方式,当开关闭合时,显示速度;开关打开时显示里程。第12脚即外部中断0用于对轮子圈数的计数输入,轮子每转一圈,霍尔传感器输出一个低电平脉冲。第十三脚即外部中断1用于控制定时器T1的启停,当输入为0时关闭定时器。此控制信号是将轮子圈数的计数脉冲经二分频后形成,这样,每次定时器T1的开启时间刚好为转一圈的时间,根据轮子的周长就可以计算出自行车的速度。P1.4口和P1.5口用于EEPROM存储器24C01的存取控制。11脚输出用于超速时的报警,此时蜂鸣器发出声音,同时LED灯闪烁。

LED数码管采用四位相连的共阴极数码管,片选信号分别通过三极管接 至21-24管脚即P2.0-P2.4口,从而实现里程和速度的动态显示。

自行车的速度里程表的硬件电路设计是基础部分,它包括信号的捕获、放大、整形,单片机的计算处理,数码管的实时显示和单片机外围基本电路的设计,两大主要器件就是传感器和单片机。

9

中州大学毕业设计

3.软件部分软件部分

模块化结构设计即是根据要求和硬件设计的结构,将整个系统的功能分成许多小的功能模块,再根据这些小的功能模块进行程序编写的过程。这样的设计方法,使得系统的整个功能和各部分的功能趋于明朗化。当系统出现问题,就可以根据功能设置找出问题的根源,从而更快地解决问题。所以说,在整个设计过程中,软件设计必须与硬件设计紧密地结合在一起。

软件设计包括初始化程序、主程序、行车过程中里程和速度计算子程序、延时子程序、中断服务子程序、显示子程序等。 系统软件总体流程图如图3.1所示

总体设计思路:首先进行初始化,选择车轮周长,P3.0是用于里程和速度切换的,低电平为显示速度,高电平为显示里程。根据P3.0的状态来决定显示内容,P3.0=1时,转到计算速度子程序并进行显示;P3.0=0时,转到计算里程子程序并进行显示。P1.0和P1.1口分别用于显示里程状态和速度状态。P1.2、P1.3、P1.6和P1.7口分别用于设置轮圈的大小,低电平有效。中断0用于对轮子圈数的计数输入,轮子每转一圈,霍尔传感器输出一个低电平脉冲。将根据里程寄存器中的内容计算和判断出行驶里程数。中断1用于控制定时器T1的启/停,当输入为0时关闭定时器。此控制信号是将轮子圈数的计数经二分频后形成。这样,每次定时器T1的开启时间刚好为转一圈的时间,根据轮子的周长就可以计算出自行车的速度。

10

中州大学毕业设计

开始 初始化 N P3.0=1? Y 计算里程 计算速度 显示里程 显示速度

图 3.1 系统整体流程图

主要内存单元及用处:

50H:EEPROM器件寻址字节存放单元 51H:EEPROM传送字节数存放单元 30H:EEPROM发送数据缓冲单元 40H:EEPROM读出数据存放单元 0A0H:EEPROM寻址字节写入 0A1H:EEPROM寻址字节读出 62H:DPTR计数扩展高8位

6CH:定时器T1计数扩展高8位

6DH:定时器T1计数扩展高8—16位 60H、61H、62H:里程计数单元

68H、69H、6AH、6BH:存放自行车每圈时间数 70H、71H、72H、73H:显示BCD码数据存放用 11H--15H:存放被除数 16H—19H:存放除 (1)初始化程序

初始化程序主要完成以下工作:将T1设为外部控制定时器方式;外部中断0及

11

中州大学毕业设计

外部中断1设为边沿触发方式;将部分内存单元清0;设置轮子周长;开中断及定时器;将EEPROM中的数据调入内存。

CLEARMEN:MOV TMOD,#90H ;T1为16位外部控制定时器 MOV SP,#75H ;堆栈从75H开始

SETB PX0 ;外部中断0优先级为1 SETB IT0 ;外部中断0用边沿触发 SETB IT1 ;外部中断1用边沿触发 CLR A ;清A

MOV 20H,A ; MOV 6CH,A ; MOV 6DH,A ; MOV 70H,A ; MOV 71H,A ; MOV 72H,A ; MOV 73H,A ; MOV 60H,A ; MOV 61H,A ; MOV 62H,A ; MOV 63H,A ;

DEC A ;A MOV 68H,A ; MOV 69H,A ; MOV 6AH,A ; MOV 6BH,A ; MOV P1,A ;P1CLEAR1: JB P1.2,KEY1 ; MOV 21H,#0FH

LJMP CLEAR2 ;KEY1: JB P1.3,KEY2 ; MOV 21H,#12H

LJMP CLEAR2

KEY2: JB P1.6,KEY3 ; MOV 21H,#14H LJMP CLEAR2

KEY3: JB P1.7,ERR ; MOV 21H,#19H

CLEAR2: SETB TR1 ; SETB EA ;

清内存中特定单元 清内存中特定单元 清内存中特定单元 清内存中特定单元 清内存中特定单元 清内存中特定单元 清内存中特定单元 清内存中特定单元

清内存中特定单元 6 清内存中特定单元 清内存中特定单元 为0FFH

内存置数据0FFH 内存置数据0FFH 内存置数据0FFH 内存置数据0FFH 口置1

根据P1.2设置状态 转CLEAR2

根据P1.3设置状态 根据P1.6设置状态 根据P1.7设置状态 开定时器T1 开中断允许

12

中州大学毕业设计

SETB EX0 ;开外中断0

SETB ET1 ;开定时中断T1 SETB P3.1 ;关报警器

LCALL VIICREAD ;将EEPROM中原里程数据调入内存 RET

ERR: CPL P3.1 ;未设置车轮周长,开始报警 LCALL DL5S ;延时5S LJMP CLEAR1 ;重新初始化

初始化具体过程:首先对P1.2口的内容进行查询,若P1.2=0,则说明P1.2口接的按钮被按下,即选择第一种车轮周长,同时将周长存入21H单元内;若

P1.2=1,则第一个按钮没被按下,再对P1.3口的内容进行查询,内容为0则将其周长值存入21H中,不为0则扫描P1.6,内容为0则将其周长值存入21H中,不为0则扫描P1.7,若P1.7为0则将其周长值存入21H中,不为0则说明没有选择车轮直径,此时开始报警,并调用延时子程序。接着再从P1.2口扫描,如此循环,直到有键按下后停止报警。

13

中州大学毕业设计

初始化 P1.2=1? Y N N P1.3=1? Y N P1.6=1? Y 开报警器并延时 N P1.7=1? Y 出错提示 关报警器 将车圈周长调入21H 开中断,启动定时器

图 3.2 初始化程序流程图

(2)主程序

主程序根据P3.0口的开关状态选择里程速度显示。 START: LCALL CLEARMEN ;上电初始化

START1: JB P3.0,DISPLAYS ;P3.0=1,显示里程 LCALL DISPLAYV ;P3.0=0,显示速度 START2: SJMP START1 ;循环

14

中州大学毕业设计

开始 初始化 P3.0=1? Y 调用里程处理子程序 N 调用速度处理子程序

图3.3 主程序流程图

(3)用外部中断0实现的里程计数程序

定时中断是为满足定时或计数的需要而设置的。在单片机内部有两个定时/计数器,以对其中的计数结构进行计数的方法,来实现定时或计数功能。当结构发生计数溢出时,即表明定时时间或计数值已满,这时就以计数溢出信号作为中断请求,去置位一个溢出标志,作为单片机接受中断请求的标志。这种中断请求是在单片机芯片内部发生的,因此无须在芯片上设置引入端。

定时/计数器控制寄存器TCON是8位寄存器,地址为88H,可以位寻址。其高4位用于定时/计数器中断控制,低4位借给外部中断,用做中断标志和触发方式选择位。本设计采用定时中断,对自行车的里程和速度进行计数。 INTEX0: PUSH ACC ;累加器堆栈保护 PUSH PSW ;状态字堆栈保护

INC 60H ;圈数加1 CLR A ;清A

CJNE A,60H,INTEX0OUT ;计数器没溢出转INTEX0OUT INC 61H ;溢出进位(61H加1)

CJNE A,61H,INTEX0OUT ;计数器没溢出转INTEX0OUT INC 62H ;溢出进位(62H加1) INTEX0OUT:LCALL VIICWRITE ;里程数据存入EEPROM SETB EX1 ;开外部中断1

15

中州大学毕业设计

POP PSW ;状态字恢复

POP ACC ;累加器恢复 RETI ;中断返回

;每转一圈时间计数处理程序,每圈时间放在68H—6BH单元中 INTEX1: PUSH ACC ;累加器堆栈保护 PUSH PSW ;状态字堆栈保护 CLR EX1 ;关外部中断1

JNB 00H,INTEX11 ;溢出标志为0转INTEX11

MOV TL1,#0FFH ;溢出时计时单元赋#0FFH(显示速度为零) MOV TH1,#0FFH

MOV 6CH,#0FFH MOV 6DH,#0FFH

INTEX11: MOV 68H,TL1 ;将时间计数值移入暂存单元68H-6BH MOV 69H,TH1 MOV 6AH,6CH MOV 6BH,6DH

CLR A ;清A

MOV TL1,A ;计数单元置零 MOV TH1,A

MOV 6CH,A MOV 6DH,A

CLR 00H ;清溢出标志

POP PSW ;状态字堆栈恢复 POP ACC ;累加器堆栈恢复 RETI ;中断返回 ;T1计数器中断服务程序。(计数器T1由外部中断1输入控制,当为高电平时计时开始)

INTT1: PUSH ACC ; 累加器堆栈保护 PUSH PSW ;状态字堆栈保护 INC 6CH ;6C计时单元加1

MOV A,6CH ;6C单元内容移入A JNZ INTT11 ;不为0,转INTT11 INC 6DH ;进位,6DH单元加1 MOV A,6DH ;移入A

JNZ INTT11 ;不为0,转INTT11

SETB 00H ;计时器溢出,置溢出标志位 INTT11: POP PSW ;状态字堆栈恢复 POP ACC ;累加器堆栈恢复

16

中州大学毕业设计

RETI ;中断返回

开始 关中断 现场保护 开中断 中断处理 关中断 现场恢复 开中断

中断返回 图 3.4 中断流程图

(4)里程、速度处理程序 里程处理程序

外中断0服务程序用于对单片机P3.2口输入的圈脉冲进行计数,为十六进制计数器。60H为低位,62H为高位。每次计数一次后,对里程数据进行一次存储操作。当车轮每转一圈,通过霍尔元件将脉冲数输入单片机内,通过计数器计出脉冲数,再用乘法子程序算出里程数。

SSS: MOV 19H,#64H ;除数最高位赋值 MOV 18H,#00H ;除数赋值 MOV 17H,#00H ; 除数赋值 MOV 16H,#00H ; 除数赋值 MOV 11H,#00H ; 被除数赋值

17

中州大学毕业设计

MOV 12H,#00H ; 被除数赋值

MOV 13H,62H ; 被除数赋值 MOV 14H,61H ; 被除数赋值 MOV 15H,60H ; 被除数赋值

LCALL DIVST ;调除法程序 LCALL BCDST ; 跳到二进制转BCD码程序 MOV A,25H ;将25H内容移入A ANL A,#0FH ; 高四位为0 MOV 70H,A ; MOV A,25H ; SWAP A ; ANL A,#0FH ; MOV 71H,A ; MOV A,24H ; ANL A,#0FH ; MOV 72H,A ; MOV A,24H ; SWAP A ; ANL A,#0FH ; MOV 73H,A ;

RET

速度处理程序

移入70H

将25H内容移入A 交换高低字节 高四位为0 移入71H

将24H内容移入A 高四位为0 移入72H

将24H内容移入A 交换高低字节 高四位为0 移入73H 开始 点亮里程指示灯 将车圈数转换成里程 显示里程值 返回

3.5 里程处理程序流程图

18

图中州大学毕业设计

外中断1服务程序用于处理轮子转动一圈后的计时数据。当标志位(00H)为1时,计数溢出,放入最大时间值(为#0FFH);当标志位为0时,将计数单元(TL1、TH1、6CH、6DH)的值放入68H~6BH单元。定时器计出每转一圈所用的时间,用自行车车轮的周长除以时间就得出自行车的速度。 VVV: MOV 18H,68H ;除数赋值 MOV 17H,69H ;除数赋值

MOV 16H,6AH ;除数赋值 MOV 11H,#00H ;被除数赋值 MOV 12H,#00H ; MOV 13H,#36H ; MOV 14H,#0EEH ; MOV 15H,#80H ; LCALL DIVST ; MOV 14H,#00H ; LCALL BCDST ; MOV A,25H ; ANL A,#0FH ; MOV 70H,A ; MOV A,25H ; SWAP A ; ANL A,#0FH ; MOV 71H,A ; MOV 72H,#00H ;72H MOV 73H,#00H ;73H

RET ;被除数赋值 被除数赋值 被除数赋值 被除数赋值 调除法程序 舍去一位

跳到二进制转BCD码程序 以下将速度值放入显示单元 高四位为0 放入70H内 再取数

高低字节交换 高四位为0 放入71H内 为0 为0 子程序返回

19

中州大学毕业设计

开始 开速度指示灯 计算速度 N P3.0=1? Y 报警 显示速度 返回 图 3.6速度处理程序流程图

(5)显示子程序

采用动态扫描显示接口电路,动态显示接口电路是把所有显示器的8个笔划段a-h同名端连在一起,而每一个显示器的公共极COM各自独立地受I/O线控制。CPU向字段输出口送出字型码时,所有显示器接收到相同的字型码,但究竟是哪个显示器亮,则取决于COM端。可以采用分时的方法,轮流控制各个显示器的COM端,使各个显示器轮流点亮。在轮流点亮扫描过程中,每位显示器的点亮时间是极为短暂的(约1ms),由于人的视觉暂留现象及发光二极管的余辉效应,尽管实际上各位显示器并非同时点亮,但只要扫描的速度足够快,给人的印象就是一组稳定的显示数据,不会有闪烁感。

本设计P2.0、P2.1、P2.2、P2.3信号一起组成位选通的位选信号,P0.0~P0.7信号一起组成段码选通的段选信号,通过软件编程,先把所要显示的数据放入存储单元,然后把数据送入段选通对应的地址,再选通某一个LED,逐步完成四个LED的显示。

;里程显示控制程序

DISPLAYS:SETB P1.0 ;点亮LED1

CLR P1.1 ;关闭速度指示灯

20

中州大学毕业设计

SETB P3.7

LCALL SSS ;将圈数转为公里数 LCALL DISPLAY ;显示公里数据 LJMP START1 ;跳回START1 ;速度显示程序

DISPLAYV:CLR P1.0 ;关闭LED1(里程指示灯) SETB P1.1 ;点亮LED2(速度指示灯) CLR P3.7

LCALL VVV ;每圈时间换算为KM/H程序 MOV A,71H ;将十位数(BCD码)值植入A SUBB A,#04H ;与预定报警值比较 JNC WARING ;时速超过40时报警 SETB P3.1 ;关报警灯 V1: LCALL DISPLAY ;显亮一次 RET ;子程序返回 DISPLAY: MOV R1,#70H ;显示单元首址 MOV R2,#0FEH ;扫描字

PLAY: MOV A,R2 ;扫描字送入A MOV P2,A ;放到端口P2 MOV A,@R1 ;取显示数据

ANL A,#0FH ;高四位清0 MOV DPTR,#TAB ;取段码表首址

MOVC A,@A+DPTR ;查显示数据对应段码 MOV P0,A ;段码输出 LCALL DL1MS ;点亮1MS

INC R1 ;指向下一显示数据地址 MOV A,R2 ;取扫描字

JNB ACC.3,ENDOUT ;已扫描到第四位,转ENDOUT退出 RL A ;循环左移 MOV R2,A ;放回R2

AJMP PLAY ;转PLAY循环 ENDOUT: SETB P2.0 ;关扫描 SETB P2.1 ;关扫描 SETB P2.2 ;关扫描 SETB P2.3 ;关扫描 RET ;子程序返回 ;共阴极段码表

TAB: DB 3FH,06H,5BH,4FH,66H,6DH,7DH,07H

21

中州大学毕业设计

DB 7FH,6FH,77H,7CH,39H,5EH,79H,71H

DB 00H

开始 显示单元首址 取显示数据 求下一位位选码 取段码表首址 修改显示单元地送段码到P0口 送位选到P2口 N 调用延时 4位显示结束 Y 返回 图 3.5 显示程序流程图

(6)延时子程序

;1ms延时程序 利用循环实现延时 DL1MS: MOV R6,#14H DL1: MOV R7,#19H

DL2: DJNZ R7,DL2 ;循环19H次 DJNZ R6,DL1 ;循环14H次 RET

;出错闪烁利用延时255ms

22

中州大学毕业设计

DL5S: MOV R5,#0FFH

DL3: LCALL DL1MS ;调用1ms延时 DJNZ R5,DL3 ;循环255次 RET

三、调试

1.硬件调试

硬件调试时,我们首先检查了接线,对照电路原理图,确保准确无误。其次是检查各个焊点是否有虚焊的情况,检查无误后,接通经稳压后的5V电源。硬件的修改可在元器件参数方面调整,如电阻的阻值等。 2.软件调试

先用KEIL软件输入完整的程序,进行编译。

首先,新建一个项目选择AT89C51,新建一个文件,将程序输入,输完后保存,保存时需加后缀名.ASM。然后将文件添加到新建的工程下。进行检错和编译,窗口如图3.2所示。

图 3.1 KEIL编译窗口

编译无误后即可运行,运行时可从Peripherals中调出输出口P0—P3来观察输出情况。运行时窗口如图3.1所示。

23

中州大学毕业设计

图 3.2 KEIL运行窗口 17 接着再使用PROTEUS仿真软件进行仿真。首先新建一个文件,选择所需的元件并排列好,根据电路原理图进行布线。当完成原理图布线后,利用PROTEUS ISIS编辑环境所提供的电器规则检查命令对设计进行检查,并根据系统提供的错误检查报告修改原理图。直到通过电器规则检查为止。然后在KEIL中生成HEX文件,双击AT89C51芯片,将完整的程序灌入芯片,单击左下角的开始箭头即可开始模拟仿真。

在仿真过程中遇到过一些问题,针对这些问题做了些软件方面的调整。 刚开始仿真时,P0口是灰色的,数码管没有点亮。经检查是由于P0口内部没有上拉电阻,因此,必须另外加上,上拉电阻一段接P0口,另一端直接接到电源的正集。接上后数码管点亮,但显示的是乱码经过仔细的检查,发现了程序中的错误,硬件中选用的是共阴极数码管,而程序中错用了共阳极的段码表,从而造成了应该点亮的部分没亮,而不该点亮的部分反而亮了的错误情况。

24

中州大学毕业设计

18 四、操作说明

本设计为自行车里程计/速度计,实现了里程速度计的基本功能。

接通电源后,由于未选择车轮周长,蜂鸣器报警提示,同时LED灯D3闪烁,直到有键按下。当按下P1.2口所接开关SW2时选择车轮周长1,按下P1.3口所接开关SW3时选择车轮周长2,按下P1.6口所接开关SW4时选择车轮周长3,P1.7口所接开关SW5时选择车轮周长4,选择周长后,每按下开关SW6一次表示车轮转了一圈,此时数码管显示当前的里程值,此时若按下开关SW7则数码管显示当前的速度值,当超速时蜂鸣器报警。

(1)接通电源后,由于未选择车轮周长,蜂鸣器报警提示,红灯闪烁。

25

中州大学毕业设计

(2)按下P1.2口所接开关SW2时选择车轮周长1蓝灯亮

26

中州大学毕业设计

(3)按下开关SW7则数码管显示当前的速度值,绿灯亮,当超速时蜂鸣器报警。

27

中州大学毕业设计

(4)每按下开关SW6一次表示车轮转了一圈,此时数码管显示当前的里程值

28

中州大学毕业设计

五、参考文献

[1]《单片机原理及应用技术》 范力旻 主编 电子工业出版社

[2]《单片机原理及其接口技术》(第二版) 胡汗才编著 北京大学出版社 [3]《51系列单片机设计实列》 楼然苗 李光飞编著 北航出版社 [4]《单片微机测控系统设计大全》 王福瑞编著 北航出版社 [5]《例说8051》 张义和 编著 人民邮电出版社 [6]《传感器应用技术141例》松井邦彦, 梁瑞林 编著 科学出版社, [7]《单片机设计教程》 孙惠芹 编著 电子工业出版社

[8]李勋, 刘源, 李静东. 单片机实用教程.北京航空航天大学出版社, 2006 [9]曲家骇,王季秩,伺服控制系统中的传感器[M]. 机械工业出版社. 1998 [10]张洪润, 张亚凡. 传感器技术与应用教程. 清华大学出版社, 2005

29

中州大学毕业设计

六、心得体会

通过两周的时间,我们较成功的完成了这次课程设计。

刚开始选课题的时候,对各个课题都不了解,难易程度也不太清楚,前面选的几个课题有的比较简单,有的又和其他的组冲突,所以课题定的比较晚,后来感觉对这个方面还是比较感兴趣的,而且它的实际用途也比较大。通过查阅一些资料,我们确定了总体方案。接下来就是采购元器件了,因为以前没买过,没什么经验,买的时候也没仔细看,回来后发现元器件都比较旧,特别是89C51芯片,引脚都发黑了,只好去换了一个。接下来的几天就是焊接电路了,由于我们选的电路比较复杂,所以焊接也是一项大工程。开始我们把所有元件都焊在了一块板子上,排列比较紧凑,结果导线全部接好以后,板子上密密麻麻的全是线,显得很乱。调试的时候,结果不正确,经过一些改动和调整仍不见起色,看着这么多线不知从何下手,后来正负极之间发生短路现象。我们不得不放弃这块板子,准备重新做。于是我们重新买了一套元件,不同的是,这次买了两块板子,根据上一次的经验教训,我们准备将电路分两部分,其中一块板子上只有最小系统,两块板子通过排线相互连接。这样焊接出来的板子看起来就清晰的多,而且,两个人一起焊,每人一块板子焊得更快,效率更高。经过一天的调试,结果终于正确了,看到正确的结果很开心。由于焊接两次,浪费了较多时间,因此时间比较紧张,做得比较辛苦。

这次的课程设计我学到了很多知识,也有了一些经验。不论是在动手动脑方面,都使我受益良多。

30

中州大学毕业设计

七、附录

1、元器件清单 序号 1 2 3 4 5 6 7 8 9 10 11 12 13 名称 芯片 芯片 芯片 电阻 电阻 电阻 电阻 电阻 电容 电容 代号 U1 U3 U2 R1,R2 R25,R26,R27 R24,R6 C2,C3 C1 型号 89C51 TC4024 AT24C01 1KΩ 8.2KΩ 330Ω 33pf 10uf 8550 8050 5mm红色 数量 1 1 1 2 9 3 8 2 2 1 5 3 3 R3,R4,R7,R8,R9,R10,R11,R12,R13 4.7KΩ R15,R16,R17,R18,R19,R20,R21,R22 1.8KΩ 三极Q1,Q2,Q3,Q4,Q7 管 三极Q5,Q6,Q8 管 发光D1,D2,D3 二极管 晶振 X1 四位 共阴极数码管 蜂鸣LS1 器 按键SW1,SW2,SW3,SW4,SW5,SW6,SW7 开关 PCB板 导线 14 15 12MHZ 1 7SEG-MPX4-CC 1 16 17 18 19

SREAKER SW-SPST 1 7 2 若干 31

中州大学毕业设计

2、 电路原理图

VCCC333pC233pX1R151.8kR22R21R20R19R18R17R161.8k1.8k1.8k1.8k1.8k1.8k1.8kVCC1.2MHzC110uR6D1R1LED1k330SW1SW-SPSTU1R58.2k18XTAL219XTAL1P0.0/AD0P0.1/AD1P0.2/AD2P0.3/AD3P0.4/AD4P0.5/AD5P0.6/AD6P0.7/AD7P2.0/A8P2.1/A9P2.2/A10P2.3/A11P2.4/A12P2.5/A13P2.6/A14P2.7/A15P3.0/RXDP3.1/TXDP3.2/INT0P3.3/INT1P3.4/T0P3.5/T1P3.6/WRP3.7/RD393837363534333221222324252627281011121314151617Q59RSTVCC2N1711R3Q64.7kD2R21kR44.7k2N1711293031PSENALEEAQ1Q22N2905Q32N2905Q42N2905LEDSW2SW-SPSTSW3SW-SPSTSW4SW-SPSTSW512345678P1.0P1.1P1.2P1.3P1.4P1.5P1.6P1.7AT89C51R14R134k74k7R12R114k74k7R10R94k74k7R84k7R74k7U2321E2E1E0WCSDASCL756SW-SPSTQ7R232N29054k7SW7SW-SPSTVCCM24C01R26R258R23R3SW61SW-SPSTU3CLKQ1Q2Q3Q4Q5Q6Q7121196543Q82N1711LS1D3R24330SPEAKERLED2MR4024 VCCC333pC233pX1R151.8kR22R21R20R19R18R17R161.8k1.8k1.8k1.8k1.8k1.8k1.8kVCC1.2MHzC110uR6D1R1LED1k330SW1SW-SPSTU1R58.2k18XTAL219XTAL1P0.0/AD0P0.1/AD1P0.2/AD2P0.3/AD3P0.4/AD4P0.5/AD5P0.6/AD6P0.7/AD7P2.0/A8P2.1/A9P2.2/A10P2.3/A11P2.4/A12P2.5/A13P2.6/A14P2.7/A15P3.0/RXDP3.1/TXDP3.2/INT0P3.3/INT1P3.4/T0P3.5/T1P3.6/WRP3.7/RD393837363534333221222324252627281011121314151617Q59RSTVCC2N1711R3Q64.7kD2R21kR44.7k2N1711293031PSENALEEAQ1Q22N2905Q32N2905Q42N2905LEDSW2SW-SPSTSW3SW-SPSTSW4SW-SPSTSW512345678P1.0P1.1P1.2P1.3P1.4P1.5P1.6P1.7AT89C51R14R134k74k7R12R114k74k7R10R94k74k7R84k7R74k7U2321E2E1E0WCSDASCL756SW-SPSTQ7R232N29054k7SW7SW-SPSTVCCM24C01R26R258R23R3SW61SW-SPSTU3CLKQ1Q2Q3Q4Q5Q6Q7121196543Q82N1711LS1D3R24330SPEAKERLED2MR4024

32

中州大学毕业设计

3、 完整程序

VSDA EQU P1.5 VSCL EQU P1.4 SLA EQU 50H NUMBYT EQU 51H MTD EQU 30H MRD EQU 40H SLAW EQU 0A0H SLAR EQU 0A1H DPHH EQU 62H TH1H EQU 6CH TH1HH EQU 6DH ;

;;;;;;;;;;;;;;;;; ;;PROGRAM INPUT;; ;;;;;;;;;;;;;;;;; ;

ORG 0000H LJMP START ORG 0003H LJMP INTEX0 ORG 000BH RETI

ORG 0013H LJMP INTEX1 ORG 001BH LJMP INTT1 ORG 0023H RETI

ORG 002BH RETI ;

;;;;;;;;;;;;;;;;; ;;PROGRAM CLEAR;; ;;;;;;;;;;;;;;;;; ;上电初始化程序

CLEARMEN: MOV TMOD,#90H MOV SP,#75H SETB PX0 SETB IT0 SETB IT1 CLR A MOV 20H,A

33

中州大学毕业设计

MOV 6CH,A MOV 6DH,A

MOV 70H,A MOV 71H,A MOV 72H,A MOV 73H,A MOV 60H,A MOV 61H,A MOV 62H,A MOV 63H,A DEC A MOV 68H,A MOV 69H,A MOV 6AH,A MOV 6BH,A MOV P1,A

CLEAR1: JB P1.2,KEY1 MOV 21H,#0FH LJMP CLEAR2 KEY1: JB P1.3,KEY2 MOV 21H,#12H

LJMP CLEAR2 KEY2: JB P1.6,KEY3 MOV 21H,#14H LJMP CLEAR2 KEY3: JB P1.7,ERR MOV 21H,#19H CLEAR2: SETB TR1 SETB EA SETB EX0 SETB ET1 SETB P3.1 LCALL VIICREAD RET

ERR: CPL P3.1 LCALL DL5S LJMP CLEAR1 ;

;;;;;;;;;;;;;;;;; ;;PROGRAM START;; ;;;;;;;;;;;;;;;;; ;

START: LCALL CLEARMEN

START1: JB P3.0,DISPLAYS

34

中州大学毕业设计

LCALL DISPLAYV START2: SJMP START1 ;

;;;;;;;;;;;;;;;;;; ;;INTEX0 PROGRAM;;;;;; ;

INTEX0: PUSH ACC PUSH PSW INC 60H CLR A

CJNE A,60H,INTEX0OUT INC 61H

CJNE A,61H,INTEX0OUT INC 62H

INTEX0OUT:LCALL VIICWRITE SETB EX1 POP PSW POP ACC RETI ;;;;;;;;;;;;;;;;;; ;;INTEX1 PROGRAM;; ;;;;;;;;;;;;;;;;;; ;

INTEX1: PUSH ACC PUSH PSW CLR EX1

JNB 00H,INTEX11 MOV TL1,#0FFH MOV TH1,#0FFH MOV 6CH,#0FFH MOV 6DH,#0FFH INTEX11: MOV 68H,TL1 MOV 69H,TH1 MOV 6AH,6CH MOV 6BH,6DH CLR A MOV TL1,A MOV TH1,A MOV 6CH,A MOV 6DH,A CLR 00H POP PSW POP ACC RETI

35

中州大学毕业设计

;;;;;;;;;;;;;;;;; ;;INTT1 PROGRAM;; ;;;;;;;;;;;;;;;;; ;

; INTT1: PUSH ACC PUSH PSW INC 6CH MOV A,6CH JNZ INTT11 INC 6DH MOV A,6DH JNZ INTT11 SETB 00H INTT11: POP PSW POP ACC RETI ;

;;;;;;;;;;;;;;;;; ;; DISPLAY S ;; ;;;;;;;;;;;;;;;;; ; ;

DISPLAYS:SETB P1.0 CLR P1.1 SETB P3.7 LCALL SSS LCALL DISPLAY LJMP START1 ; ;

;;;;;;;;;;;;;;;;; ;; DISPLAY V ;; ;;;;;;;;;;;;;;;;; ;

DISPLAYV:CLR P1.0 SETB P1.1 CLR P3.7 LCALL VVV MOV A,71H SUBB A,#04H JNC WARING SETB P3.1

36

中州大学毕业设计

V1: LCALL DISPLAY RET

WARING: CLR P3.1 AJMP V1 ;

;;;;;;;;;;;;;;;;; ;; VIICWRITE ;;

;;;;;;;;;;;;;;;;; VIICWRITE:ACALL WMOV9 MOV SLA,#SLAW MOV NUMBYT,#09H LCALL WRNBYT RET

WMOV9: MOV 5FH,#50H MOV R0,#MTD MOV R1,#5FH MOV R2,#09H WMOV: MOV A,@R1 MOV @R0,A INC R0 INC R1

DJNZ R2,WMOV RET ;

;;;;;;;;;;;;;;;;;;;;; ;;DISPLAY PROGRAM ;;

;;;;;;;;;;;;;;;;;;;;; ;

DISPLAY: MOV R1,#70H MOV R2,#0FEH PLAY: MOV A,R2 MOV P2,A MOV A,@R1 ANL A,#0FH MOV DPTR,#TAB MOVC A,@A+DPTR MOV P0,A LCALL DL1MS INC R1 MOV A,R2

JNB ACC.3,ENDOUT RL A MOV R2,A AJMP PLAY

37

中州大学毕业设计

ENDOUT: SETB P2.0 SETB P2.1 SETB P2.2 SETB P2.3 RET

TAB: DB 3FH,06H,5BH,4FH,66H,6DH,7DH,07H DB 7FH,6FH,77H,7CH,39H,5EH,79H,71H DB 00H ; ;;;;;;;;;;;;;;;;; ;;SSS PROGRAM ;; ;;;;;;;;;;;;;;;;;;;; ;

SSS: MOV 19H,#64H MOV 18H,#00H MOV 17H,#00H MOV 16H,#00H MOV 11H,#00H MOV 12H,#00H MOV 13H,62H MOV 14H,61H MOV 15H,60H LCALL DIVST LCALL BCDST MOV A,25H ANL A,#0FH MOV 70H,A MOV A,25H SWAP A

ANL A,#0FH MOV 71H,A MOV A,24H ANL A,#0FH MOV 72H,A MOV A,24H SWAP A

ANL A,#0FH MOV 73H,A RET ; ;

;;;;;;;;;;;;;;;;;;;; ;;VVV PROGRAM ;; ;;;;;;;;;;;;;;;;;;;; ;

38

中州大学毕业设计

VVV: MOV 18H,68H MOV 17H,69H MOV 16H,6AH MOV 11H,#00H MOV 12H,#00H MOV 13H,#36H MOV 14H,#0EEH MOV 15H,#80H LCALL DIVST

MOV 14H,#00H LCALL BCDST MOV A,25H ANL A,#0FH MOV 70H,A MOV A,25H SWAP A

ANL A,#0FH MOV 71H,A MOV 72H,#00H MOV 73H,#00H RET ; ;

;;;;;;;;;;;;;;;;;;;; ;; DL1MS ;; ;;;;;;;;;;;;;;;;;;;; ;

DL1MS: MOV R6,#14H DL1: MOV R7,#19H DL2: DJNZ R7,DL2 DJNZ R6,DL1 RET ;

;;;;;;;;;;;;;;;;;; ; DL0.5S ; ;;;;;;;;;;;;;;;;;; ;

DL5S: MOV R5,#0FFH DL3: LCALL DL1MS DJNZ R5,DL3 RET ;

;;;;;;;;;;;;;;;;;;;; ; 除法子程序 ;;

39

中州大学毕业设计

;;;;;;;;;;;;;;;;;;;; ;

DIVST: CLR C MOV A,13H SUBB A,18H MOV A,12H SUBB A,17H MOV A,11H SUBB A,16H JNC LOOP4 MOV B,#10H

NDIV1: CLR C MOV A,15H RLC A MOV 15H,A MOV A,14H RLC A MOV 14H,A MOV A,13H RLC A MOV 13H,A MOV A,12H RLC A MOV 12H,A MOV A,11H RLC A MOV 11H,A MOV F0,C CLR C MOV A,13H SUBB A,18H MOV 1AH,A MOV A,12H SUBB A,17H MOV 19H,A MOV A,11H SUBB A,16H JB F0,NDIV2 JC NDIV3 NDIV2: MOV 11H,A MOV A,19H MOV 12H,A MOV A,1AH MOV 13H,A

40

中州大学毕业设计

INC 15H NDIV3: DJNZ B,NDIV1 CLR F0 DIVEND: RET

LOOP4: SETB F0 SJMP DIVEND ;

;;;;;;;;;;;;;;;;;;;; ; BCD码转换程序 ; ;;;;;;;;;;;;;;;;;;;; ;

BCDST: MOV R7,#10H CLR C

MOV 25H,#00H MOV 24H,#00H KKK: MOV A,15H RLC A MOV 15H,A MOV A,14H RLC A MOV 14H,A MOV A,25H ADDC A,25H DA A MOV 25H,A MOV A,24H ADDC A,24H DA A MOV 24H,A DJNZ R7,KKK RET END

41

本文来源:https://www.bwwdw.com/article/64cg.html

Top