基于单片机的自行车里程表硬件设计 - 图文

更新时间:2024-05-01 13:20:01 阅读量: 综合文库 文档下载

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

CHANGZHOU INSTITUTE OF TECHNOLOGY

科研实践

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

二级学院(直属学部): 延陵学院 专业: 电气工程及其自动化 班级: 10电Y3 学生姓名: 何鑫 学号: 10124507 指导教师姓名: 范力旻 职称: 副教授

2013年12月30日至2014年1月10日

0

目录

第一章 绪论......................................................... 2

1.1 课题产生的背景 .............................................. 2 1.2 课题的主要任务及内容 ........................................ 2 第二章 自行车里程表硬件设计......................................... 4

2.1 任务分析与实现 .............................................. 4 2.2 自行车里程表硬件方案设计 .................................... 4

2.2.1 里程/速度测量传感器的设计.............................. 5 2.2.2 方案的确定............................................. 7

第三章 最小系统的设计............................................... 9

3.1 时钟电路的设计 .............................................. 9 3.2 复位电路的设计 ............................................. 10 3.3单片机AT89S52 .............................................. 11

3.3.1.主要性能参数:........................................ 11 3.4电源电路................................................... 12 第四章 输入部分的设计.............................................. 14

4.1 按键电路 ................................................... 14 4.2存储电路设计................................................ 15 4.3里程电路设计................................................ 17

4.3.1 传感器概述............................................ 17 4.3.2 传感器及其测量系统.................................... 17 4.3.3 霍尔传感器的测量原理.................................. 18

第五章 输出部分设计................................................ 19

5.1显示电路的设计.............................................. 19

5.1.1 1602字符型LCD简介 .................................. 19 5.1.2 1602LCD的基本参数及引脚功能 ......................... 20 5.2报警电路设计................................................ 22 第六章 自行车里程表软件方案设计.................................... 23 第七章 硬件仿真................................................... 24

7.1调试系统简介................................................ 24 7.2 利用proteus软件进行仿真 ................................... 24 第八章实物的制作与调试............................................. 27

8.1电路板焊接.................................................. 27 8.2电路板调试.................................................. 27 结论............................................................... 28 附录............................................................... 29

参考文献 ....................................................... 29 元器件清单 ..................................................... 30 原理图 ......................................................... 31 程序清单 ....................................................... 31 实物图 ......................................................... 45

1

第一章 绪论

1.1 课题产生的背景

自世界上第一辆自行车问世至今已有200多年的历史了。18世纪末,法国人西夫拉克发明了最早的自行车。这辆最早的自行车是木制的,其结构比较简单。世界上第一批真正实用型的自行车出现于19世纪初。在20世纪,自行车在中国获得了前所未有的普及和发展。从某种意义上来说,中国是一个自行车的王国。每天清晨和落日时分,滚滚车流在中国的城市中碾动,这是最为壮观的一道风景,这是一条现代中国流动的长城。

随着居民生活水平的不断提高,自行车不再仅仅是普通的运输、代步的工具,而是成为人们娱乐、休闲、锻炼的首选。因此,人们希望自行车的功用更强大,能给人们带来更多的方便。自行车里程表作为自行车的一大辅助工具也正是随着这个要求而迅速发展的,其功能也逐渐从单一的里程显示发展到速度、时间显示,甚至有的还具有测量骑车人的心跳、显示骑车人热量消耗等功能。本设计采用了MCS-51系列单片机设计一种体积小、操作简单的便携式自行车里程表,它能自动地显示当前自行车行走的距离及运行的速度。

单片微型计算机自1976年问世以来发展非常迅速,现在已成为微型计算机一个很重要的分支,在现实生活中应用越来越广泛,已经对人类产生了巨大的影响,尤其是美国Intel公司的MCS—51系列单片机,由于其集成度高、处理功能强、性能价格比高、可靠性高、系统结构简单,可以灵活的与其他芯片组成众多的测量电路用于速度、温度、深度、高度、湿度、光强等方面的测量和研究等特点,在我国现代化生活、生产中已经得到了广泛的应用,如在工业检测控制、仪器仪表、电子工业、机电一体化等众多领域取得了令人瞩目的成果。本设计利用MCS—51系列单片机扩展方便、可靠性能高、处理功能强、速度高等特点,实现对自行车里程和速度的测量。

1.2 课题的主要任务及内容

本课题主要任务是利用霍尔元件、单片机等部件设计一个可用LCD液晶实时显示里程和速度的自行车的速度里程表。本文主要介绍了自行车里程表的设计思

2

想、电路原理、方案论证以及元件的选择等内容,整体上分为硬件部分设计和软件部分设计。

本文首先扼要对该课题的任务进行方案论证,包括硬件方案和软件方案的设计;继而具体介绍了自行车的速度里程表的硬件设计,包括传感器的选择、单片机的选择、显示电路的设计;然后阐述了该自行车的速度里程表的软件设计,包括数据处理子程序的设计、显示子程序的设计;最后针对仿真过程遇到的问题进行了具体说明与分析,对本次设计进行了系统的总结。

具体的硬件电路包括AT89S52单片机的外围电路以及LCD显示电路等。 软件设计包括:芯片的初始化程序、定时中断采样子程序、显示子程序等,软件采用C语言编写,软件设计的思想主要是自顶向下,模块化设计,各个子模块逐一设计。

3

第二章 自行车里程表硬件设计

2.1 任务分析与实现

本次毕业设计的题目是:自行车里程表设计

其设计的任务是:以通用MCS-51单片机为处理核心,用传感器将车轮的转数转换为电脉冲,进行处理后送入单片机。里程及速度的测量,是经过MCS-51的定时/计数器测出总的脉冲数和每转一圈的时间,再经过一系列的计算得出的,其结果通过显示器显示出来。

本系统总体思路如下:里程及速度传感器采用霍尔元件,用一个霍尔芯片、二个小磁铁,霍尔芯片紧贴齿轮,磁铁放在芯片后面。齿轮转动一周霍尔元件与小磁铁靠近一次,这样可以改变通过霍尔芯片的磁通量,霍尔芯片可以输出类似正弦的波形,用运放放大波形,后面接一级比较器,把正弦波转换为方波,方波的频率和齿轮的转速成正比。自行车里程的测量是通过霍尔元件输出端的电压发生变化产生脉冲,通过计数器,根据脉冲数计算里程。自行车速度的测量是通过定时器测出车轮转一周所用的时间t,车轮周长L除以时间t就是自行车的速度。

要求达到的各项指标及实现方法如下: 1. 利用霍尔传感器产生里程数的脉冲信号。 2. 对脉冲信号进行计数。

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

最终实现目标:自行车里程表具有里程、速度测试与显示功能,采用单片机作控制,显示电路可显示里程及速度,可以通过按键设定报警速度,若自行车超速,系统发出报警提示。整个设计过程包括硬件电路的搭建,软件的编程,系统的调试,调试通过后,固化程序,脱离开发系统运行。

2.2 自行车里程表硬件方案设计

自从1971年微型计算机问世以来,随着大规模集成电路技术的不断进步,微型机主要向两个方向发展:一个向高速度,高性能的高档微型计算机方向发展。一个向稳定可靠,小而廉价的单片机方向发展。所谓的单片机,就是把中央处理

4

器CPU、只读存储器ROM、定时/计数器以及I/O 接口电路等集成在一块集成电路芯片上的微型计算机。从组成和功能上看,它具有微型计算机的含义。

单片机由于将CPU、内存和一些必要的接口集成到一个芯片上,并且面向控制功能将结构作了一定的优化,所以它有一般芯片不具有的特点:

1. 体积小、重量轻; 2. 电源单一、功耗低; 3. 功能强、价格低;

4. 全部集成在一块芯片上,布线短、合理;

5. 数据大部分在单片机内传送,运行速度快、抗干扰能力强、可靠性高。 目前,单片机被广泛的应用于测控系统、工业自动化、智能仪表、集成智能传感器、机电一体化产品、家用电器领域、办公自动化领域、汽车电子与航空航天器电子系统以及单片机的多机系统等领域。

2.2.1 里程/速度测量传感器的设计

1. 速度传感器的设计

测速是工农业生产中经常遇到的问题,学会使用单片机技术设计测速仪表具有很重要的意义。要测速,首先要解决是采样的问题。在使用模拟技术制作测速表时,常用测速发电机的方法,即将测速发电机的转轴与待测轴相连,测速发电机的电压高低反映了转速的高低。使用单片机进行测速,可以使用简单的脉冲计数法。只要转轴每旋转一周,产生一个或固定的多个脉冲,将脉冲送入单片机中进行计算,即可获得转速的信息。

(1) 霍尔传感器

霍尔传感器是对磁敏感的传感元件,常用于信号采集的有A44E、CS3020、CS3040等,这类传感器是一个3端器件,外形与三极管相似,只要接上电源、地,即可工作,通常是集电极开路(OC门)输出,工作电压范围宽,使用非常方便。A44e的外形如图2.1所示。将有字面对准自己,三根引脚从左向右分别是电源、地、输出。

5

A44E123

1-Vcc 2-GND 3-OUT 图 2.1 A44e外形图

使用霍尔传感器获得脉冲信号,其机械结构也可以做得较为简单,只要在转轴的齿轮盘上粘上一粒磁钢,霍尔元件固定在前叉上,当车子转动时霍尔元件靠近磁钢,就有信号输出,转轴旋转时,就会不断地产生脉冲信号输出。如果在齿轮盘上粘上多粒磁钢,可以实现旋转一周,获得多个脉冲输出。在粘磁钢时要注意,霍尔传感器对磁场方向敏感,粘之前可以先手动接近一下传感器,如果没有信号输出,可以换一个方向再试。这种传感器不怕灰尘、油污,在工业现场应用广泛。

(2) 光电传感器

光电传感器是应用非常广泛的一种器件,有各种各样的形式,如透射式、反射式等,基本的原理就是当发射管光照射到接收管时,接收管导通,反之关断。以透射式为例,如图2.2所示,当不透光的物体挡住发射与接收之间的间隙时,开关管关断,否则导通。为此,可以制作一个遮光叶片,如图2.3所示,安装在转轴上,当扇叶经过时,产生脉冲信号。当叶片数较多时,旋转一周可以获得多个脉冲信号。

图2.2 光电传感器的原理图

6

图2.3 遮光叶片

(3) 光电编码器

光电编码器的工作原理与光电传感器一样,不过它已将光电传感器、电子电路、码盘等做成一个整体,只要用连轴器将光电传感器的轴与转轴相连,就能获得多种输出信号。它广泛应用于数控机床、回转台、伺服传动、机器人、雷达、军事目标测定等需要检测角度的装置和设备中。某光电编码器的外形如图2.4所示。

图2.4 成品光电编码器

2. 里程测量传感器的设计

里程测量传感器的选择也有以下几种方案:使用光敏电阻对里程进行测量、利用编码器对车轮的圈数进行测量、利用霍尔传感器对里程进行测量、利用干簧管型传感器测量里程。这几种方案都是通过自行车车轮转动产生脉冲数,然后根据脉冲数计算里程。

2.2.2 方案的确定

光敏电阻对光特别敏感,当白天行驶时,外界光源将导致光敏电阻发出错误信号;光敏电阻对环境的要求相当高,如果光敏或发光二极管被泥沙或灰尘所覆盖,光敏电阻就不能再进行准确测量;而编码器必须安装在车轴上,安装较为复

7

杂;霍尔元件或干簧管不但不受天气的影响,即使被泥沙或灰尘覆盖也不会有影响,而且安装方便。所以本设计采用霍尔元件对里程与速度进行测量,既简单易行,又经济适用。

本系统的硬件系统框图如图2.5所示

霍尔元件 报警 单片机

图2.5 系统的原理框图

存储器 LCD显示

8

第三章 最小系统的设计

3.1 时钟电路的设计

时钟是单片机的心脏,单片机各功能部件的运行都是以时钟频率为基准,有条不紊地一拍一拍地工作。因此,时钟频率直接影响单片机的速度,时钟电路的质量也直接影响单片机系统的稳定性。8051片内由一个反相放大器构成振荡器,可以由它产生时钟。常用的时钟电路有两种方式,一种是内部时钟方式,另一种为外部时钟方式。本设计采用前者。典型的晶振取12MHz(因为可以准确地得到9600波特率和19200波特率,用于有串口通讯的场合)。电路中的电容C1和C2常选择为30pF左右。如果单片机系统不需要串口通讯,使用12MHz的晶振,那么计算定时器中断的初值将方便许多,也不需要进行时间修正了,晶振周期=1s/12MHz=1Mus/12MHz=1/12us,单片机机器周期=12*1/12us=1us,需要实现计时1秒,需要1000000/1=1000000个机器周期,那么如果设置定时器初值为0x9CH(即156D),则每256-156=100个机器周期触发一次定时中断,如此中断10000次,正好为1000000个机器周期。

单片机内部有一个用于构成振荡器的高增益反相放大器,该高增益反相放大器的输入为芯片引脚XTAL1,输出端为引脚XTAL2。这两个引脚跨接石英晶体振荡器和微调电容,就构成一个稳定的自激振荡器。单片机内部时钟方式的振荡电路如图3.1所示。

图3.1 单片机片内振荡电路

9

3.2 复位电路的设计

AT89S52的复位输入引脚RET(即RESET)为AT89S52提供了初始化的手段。有了它可以使程序从指定处开始执行,即从程序存储器中的0000H地址单元开始执行程序。在AT89S52的时钟电路工作后,只要在RET引脚上出现两个机器周期以上的高电平时,单片机内部则初始复位。只要RET保持高电平,则AT89S52循环复位。只有当RET由高电平变成低电平以后,AT89S52才从0地址开始执行程序。

本系统的复位电路是采用按键复位的电路,如图3.2所示,是常用复位电路之一。当AT89S52的ALE及PSEN两引脚输出高电平,RET引脚为高电平时,单片机复位。通过按动按钮产生高电平复位称手动复位。上电时,刚接通电源,电容C相当于瞬间短路,+5V立即加到RET/VPD端,该高电平使AT89S52全机自动复位,这就是上电复位;若运行过程中需要程序从头执行,只需按动按钮即可。按下按钮,则直接把+5V加到了RET/VPD端从而复位称为手动复位。复位后,P0到P3并行I/O口全为高电平,其它寄存器全部清零,只有SBUF寄存器状态不确定。由于本设计的晶体振荡器采用的是12M,因此RC采用典型值。复位时间计算:当取100us时Vt?Vcc*e位作用。

?tRC?5V*e100us?1k*10uf?4.9V为高电平,所以可以达到复

图3.2 按键复位电路

10

工作原理:上电瞬间,RC电路充电,RST引脚出现高电平,只要RST端保持10ms以上高电平,就能使单片机有效地复位。

单片微型计算机是指集成在一个芯片上的微型计算机,也就是把组成微型计算机的各种功能部件,包括CPU(Central Processing Unit)、随机存取存储器 RAM(Random Access Memory)、只读存储器ROM(Read-only Memory)、基本输入/输出(1nput/Output)接口电路。定时器/计数器等部件都制作在一块集成芯片上,构成一个完整的微型计算机从而实现微型计算机的基本功能。

3.3单片机AT89S52

单片机实质上是一个芯片。在实际应用中,通常很少将单片机直接和被控对象进行电气连接,必须外加各种扩展接口电路、外部设备、被控对象等硬件和软件,才能构成一个单片机应用系统。

T INT 定时/计数器 中断系统 P0-P3 并行I/OCPU 串口I/O TXD RXD 口口 存储器

图3.3 单片机内部结构示意图

3.3.1.主要性能参数:

与MCS-51产品指令和引脚完全兼容 8k 字节可重擦写Flash 闪速存储器1000次擦写周期全静态操作:0Hz-24MHz,三级加密程序存储器,256×8字节内部RAM,32个可编程I/O口线,3个16位定时/计数器,8个中断源,可编程串行UART通道,低功耗空闲和掉电模式。

11

AT89S52提供以下标准功能:8k字节Flash闪速存储器,256字节内部RAM,32个I/O口线,3个16位定时/计数器,一个6向量两极中断结构,一个全双工串行通信口,片内振荡器及时钟电路。同时,AT89S52可降至0Hz的静态逻辑操作,并支持两种软件可选的节电工作模式。空闲方式停止CPU的工作,但允许RAM,定时/计数器,串行通信口及中断系统继续工作。掉电方式保存RAM中的内容,但振荡器停止工作并禁止其它所有部件工作直到下一个硬件复位。AT89S52管脚图如图3.5所示。AT89S52的主要管脚功能如下:

图3.5 89S52引脚图

3.4电源电路

电源装置是电路的能量提供者,该设计中所制作的电源为单相小功率电源,将9V的直流电源经稳压管转换成所需要的5V直流电源,9V电源是由6个直流1.5V电池串联到电池盒。

由于系统的要求,需要用5V的稳压直流电源对系统中的芯片进行供电,电路采用7805进行设计。 电源稳压芯 7805 是一种典型的组合装封三端稳压集成

12

电路模块,带金属基板散热按装片,该模块多用于有处理器的5V电源的处理板,戏称电脑稳压块。输入电压可达直流12V (容许)输出5V+-5%以内,电流1A,最大短时可达3A (极限) 在超过500毫安输出时最好加装散热器, 7805输入/输出为正,面对字标左脚进右脚出中间脚接地。 见图3-6电源电路

见图3-6 电源电路

降压电路中应注意以下事项:

1、输入输出压差不能太大,太大则转换效率急速降低,而且容易击穿损坏; 2、输出电流不能太大,1.5A 是其极限值。大电流的输出,散热片的尺寸要

足够大,否则会导致高温保护或热击穿; 3、输入输出压差也不能太小,

13

第四章 输入部分的设计

4.1 按键电路

在单片机应用中键盘用得最多的形式是独立键盘及矩阵键盘。本实验用的是独立式键盘,按键的每个按键都单独接到单片机的一个I/O口上,直接按键则通过判断按键端口的电位即可识别按键操作;而矩阵键盘通过行列交叉按键编码进行识别,按钮选择常见的TD-03B即可。

通常所用的按键为轻触机械开关,正常情况下按键的接点是断开的,当我们按压按钮时,由于机械触点的弹性作用,一个按键开关在闭合时不会马上稳定地接通,在断开时也不会一下子断开。因而机械触点在闭合及断开的瞬间均伴随有一连串的抖动,抖动时间的长短由按键的机械特性及操作人员按键动作决定,一般为5ms~20ms;按键稳定闭合时间的长短是由操作人员的按键按压时间长短决定的,一般为零点几秒至数秒不等。

一次完整的击键过程,包含以下5个阶段: 1. 等待阶段: 此时按键尚未按下,处于空闲阶段。

2. 前沿(闭合)抖动阶段:此时按键刚刚按下,但按键信号还处于抖动状态,这个时间一般为5~20ms。为了确保按键操作不会误动作,此时必须有个前沿消抖动延时。

3. 键稳定阶段:此时抖动已经结束,一个有效的按键动作已经产生。系统应该在此时执行按键功能;或将按键所对应的键值记录下来,待按键释放时再执行。 4. 后沿(释放)抖动阶段:一般来说,考究一点的程序应该在这里再做一次消抖延时,以防误动作。但是,如果前面“前沿抖动阶段”的消抖延时时间取值合适的话,可以忽略此阶段。

5. 按键释放阶段:此时后沿抖动已经结束,按键已经处于完全释放状态,如果按键是采用释放后再执行功能,则可以在这个阶段进行按键操作的相关处理。

本课题设计了3个TD-03B按键,它们依次按键的功能是报警速度+1、报警速度-1和里程清零。

14

图3-7按键电路

4.2存储电路设计

24C02是一个2K位串行CMOSE2PROM。内部含有256个8 位字节, CATALYST公司的先进CMOS技术实质上减少了器件的功耗。24C02有一个16 字节页写缓冲器,该器件通过I2C总线接口进行操作有一个专门的写保护功能。24C02支持I2C总线数据传送协议,I2C总线协议规定:任何将数据传送到总线的器件作为发送器,任何从总线接收数据的器件为接收器,数据传送是由产生串行时钟和所有起始停止信号的主器件控制的。主器件和从器件都可以作为发送器或接收器,但由主器件控制传送数据(发送或接收)的模式,通过器件地址输入端 A0、A1和A2可以实现将最多8个24WC02器件连接到总线上。管脚图如4.1所示。

图4.2 24C02管脚图

SCL串行时钟:24C02串行时钟输入管脚用于产生器件所有数据发送或接收的时钟,这是一个输入管脚。

15

SDA串行数据/地址:24C02双向串行数据/地址管脚用于器件所有数据的发送或接收。SDA 是一个开漏输出管脚可与其它开漏输出或集电极开路输出进行线或(wire-OR)。

A0、A1、A2器件地址输入端:这些输入脚用于多个器件级联时设置器件地址, 当这些脚悬空时默认值为0。当使用24WC02时最大可级联8个器件,24WC02被总线寻址这三个地址输入脚。A0、A1、A2可悬空或连接到Vss。

WP 写保护:如果WP管脚连接到Vcc所有的内容都被写保护,只能读。当WP管脚连接到Vss或悬空,允许器件进行正常的读/写操作。

起始信号:时钟线保持高电平期间,数据线电平从高到低的跳变作为I2C总线的起始信号。

停止信号:时钟线保持高电平期间,数据线电平从低到高的跳变作为I2C总线的停止信号。

本题目中24C02起存储作用,将自行车里程存储在24C02中,当掉电时,存储的数据不会丢失,可以读取24C02中的里程数完成里程的累积。

图4-3存储器的电路

16

4.3里程电路设计

4.3.1 传感器概述

传感器在人们研究自然现象、规律以及生产实践活动中,起着非常重要的作用。特别是在当今,科学技术的发展使人类进入了一个信息时代,在利用信息的过程中,首先要解决的就是获取准确可靠的信息。传感器是获取自然或生产领域中信息的关键器件,是现代信息系统和各种设备不可缺少的信息采集工具。磁传感器是一种将磁学量信号转变为电信号的器件或装置。作为输入信号,这就给磁传感器的快速发展提供了机遇,形成了磁传感器的产业。自从磁传感器作为一种独立产品进入应用领域,从10-14T的人体磁场到高达25T以上的强磁场,都可以找到相应的磁传感器进行检测。而这巨大的应用前景也使微机电系统技术在磁传感器中大有可为。其中最具代表的磁传感器就是霍尔传感器,在自动检测系统中,利用霍尔传感器测转数是一种最基本的测量工作,它的特性是霍尔传感器输出的脉冲信号的个数比较直接反映所测量转数的数目。

4.3.2 传感器及其测量系统

霍尔器件是一种磁传感器。用它们可以检测磁场及其变化,可在各种与磁场有关的场合中使用。霍尔器件以霍尔效应为其工作基础。 霍尔器件具有许多优点,它们的结构牢固、体积小、重量轻、寿命长、安装方便、功耗小、频率高(可达1MHz)、耐震动、不怕灰尘、油污、水汽及烟雾等的污染或腐蚀。霍尔线性器件的精度高、线性度好;霍尔开关器件无触点、无磨损、输出波形清晰、无抖动、无回跳、位置重复精度高(可达μm级)。取用了各种补偿和保护措施的霍尔器件工作温度范围宽,可达-55℃~150℃。按照霍尔器件的功能可将它们分为:霍尔线性器件和霍尔开关器件,前者输出模拟量,后者输出数字量。 按被检测对象的性质可将它们的应用分为:直接应用和间接应用。前者是直接检测出受检测对象本身的磁场或磁特性,后者是检测受检对象上人为设置的磁场,用这个磁场来作被检测的信息的载体。通过它,将许多非电、非磁的物理量例如力、力矩、压力、应力、位置、位移、速度、加速度、角度、角速度、转数、转速以及工作状态发生变化的时间等,转变成电量来进行检测和控制。

17

4.3.3 霍尔传感器的测量原理

霍尔传感器是利用霍尔效应制成的一种磁敏传感器。在置于磁场中的导体或半导体通入电流I,若电流垂直磁场B,则在与磁场和电流都垂直的方向上会出现一个电势差Uh,这种现象称为霍尔效应。利用霍尔效应制成的元件称为霍尔元件。因为它具有结构简单、频率响应宽、灵敏度高、测量线性范围大、抗干扰能力强以及体积小、使用寿命长等一系列特点,因此被广泛应用于测量、自动控制及信息处理等领域。霍尔效应原理图如图3.1所示。

ZYXLBdIbUh 图4.4 霍尔效应原理图

18

第五章 输出部分设计

5.1显示电路的设计

LED就是发光二极管(许多电器的指示灯就是)。这是一种固体发光元件。亮度高、反应速度快、功耗小、寿命长。LCD是液晶显示器。它采用低电压扫描驱动,具有:耗电少、使用寿命长、成本低、亮度高、故障少、视角大、可视距离远等特点本身并不会发光。本设计考虑多种原因则采用LCD显示屏

5.1.1 1602字符型LCD简介

字符型液晶显示模块是一种专门用于显示字母、数字、符号等点阵式LCD,

目前常用16*1,16*2,20*2和40*2行等的模块。下面以长沙太阳人电子有限公司的1602字符型液晶显示器为例,介绍其用法。一般1602字符型液晶显示器实物如图5-1:

图5-1 1602字符型液晶显示器实物图

19

5.1.2 1602LCD的基本参数及引脚功能

1602LCD分为带背光和不带背光两种,基控制器大部分为HD44780,带背光

的比不带背光的厚,是否带背光在应用中并无差别,

1602LCD主要技术参数:

显示容量:16×2个字符

芯片工作电压:4.5—5.5V 工作电流:2.0mA(5.0V) 模块最佳工作电压:5.0V 字符尺寸:2.95×4.35(W×H)mm

引脚功能说明

1602LCD采用标准的14脚(无背光)或16脚(带背光)接口,各引脚接口

说明如表5-1所示:

编号 1 2 3 4 5 6 7 8 符号 VSS VDD VL RS R/W E D0 D1 引脚说明 电源地 电源正极 液晶显示偏压 数据/命令选择 读/写选择 使能信号 数据 数据 编号 9 10 11 12 13 14 15 16 符号 D2 D3 D4 D5 D6 D7 BLA BLK 引脚说明 数据 数据 数据 数据 数据 数据 背光源正极 背光源负极 表5-1:引脚接口说明表

第1脚:VSS为地电源。 第2脚:VDD接5V正电源。

第3脚:VL为液晶显示器对比度调整端,接正电源时对比度最弱,接地时对比度最高,对比度过高时会产生“鬼影”,使用时可以通过一个10K的电位器调整对比度。

20

第4脚:RS为寄存器选择,高电平时选择数据寄存器、低电平时选择指令寄存器。

第5脚:R/W为读写信号线,高电平时进行读操作,低电平时进行写操作。当RS和R/W共同为低电平时可以写入指令或者显示地址,当RS为低电平R/W为高电平时可以读忙信号,当RS为高电平R/W为低电平时可以写入数据。

第6脚:E端为使能端,当E端由高电平跳变成低电平时,液晶模块执行命令。

第7~14脚:D0~D7为8位双向数据线。 第15脚:背光源正极。 第16脚:背光源负极。

图5-2 LCD电路结构图

接正电源时对比度最弱,接地时对比度最高,对比度过高时会产生“鬼影”,使用时可以通过一个10K的电位器调整对比度。调节电位器随着电阻变化,根据电压的大小进行相应的偏转。偏转角度越大,透过的光强度就越大。当足够多的液晶槽组合在一起并通过控制IC有序的控制后就可以显示图像了。

21

5.2报警电路设计

声音的频谱范围约在几十到几千赫兹,若能利用程序来控制单片机某个口线的“高”电平或低电平,则在该口线上就能产生一定频率的矩形波,接上喇叭就能发出一定频率的声音,若再利用延时程序控制“高”“低”电平的持续时间,就能改变输出频率,从而改变音调,使喇叭发出不同的声音,蜂鸣器选择的型号为:GPC1407YB,参数为:电压:3~25Vp-p,灵敏度:min 75 dB这个蜂鸣器的工作电压可以在5V电源下工作,且P3口不需要上拉电阻。IO口输出后接一个1K电阻,到PNP三极管(S8550)的基极,PNP三极管的发射极接一个5V电源。三极管的集电极接蜂鸣器的正极,蜂鸣器负极接地,R=(5-0.6-3)/2mA=0.7K欧姆,则取1K欧姆。报警电路图如图5.6:

图5-6蜂鸣器发声电路结构图

当当前速度小于设置的报警速度时 ,蜂鸣器不报警,L1灯亮,当当前速度大于报警速度,蜂鸣器 滴滴报警,二极管则采用SL-H3023 ,正向电压:2.0-3v,峰值波长:620-650 nm ,发光强度:1000-6000 mcd,视角:30 R=(5-3)/2mA=1K欧姆

22

第六章 自行车里程表软件方案设计

硬件是基础,软件是灵魂。通过软件控制单片机的功能是单片机的主要特点和优点,程序的设计要考虑合理性和可读性。程序遵循模块化设计的原则,采用自顶向下的设计方法。即先考虑整体目标,明确整体任务,然后把整体任务分成一个个子任务,子任务再分成子子任务,这样逐层细分,同时分析层次间的关系与同一层次各任务间的关系,最后拟订出各任务的细节。模块化设计使程序的可读性好、修改及完善方便。

软件设计包括主程序、行车过程中里程和速度计算子程序、延时子程序、T0、T1中断服务子程序、显示子程序等等。

中断子程序是将传感器产生的信号接入计数器的T0口,然后计数器开始计数,当计数到一定数目后,计数器就产生溢出中断。

数据处理子程序是将进入单片机的脉冲信号与实际要显示值之间有一定的对应关系,经过软件编程显示所需要的值。

显示子程序是将数据处理的结果送显示器显示。 本系统软件总体流程图如图6.1所示。

开始 初始化 N P3.2检测到中断 Y 计算里程 计算速度 显示里程 显示速度

图6.1 软件总体流程图

23

第七章 硬件仿真

7.1调试系统简介

PROTEUS可以实现数字电路、模拟电路及微控制系统与外设的混合电路系统的电路仿真、系统协同仿真和PCB设计等全部功能。PROTEUS软件能够对各种处理器进行实时仿真、调试与测试的EDA工具,真正实现了在没有目标原形时就可以对系统进行调试与验证。

单片机系统的仿真是PROTEUS VSM的一大特色,同时,本仿真系统将源代码的编辑和编译整合到同一设计环境中,这样使得用户可以在设计中直接编辑代码,并且很容易地查看到用户对源程序修改后对仿真结果的影响。

7.2 利用proteus软件进行仿真

绘制自行车里程表软件仿真图步骤: (1)查找所需要的元器件; (2)根据电路图进行连线;

(3)加载所写的C程序生成的.HEX文件即可以仿真。 仿真图如图7.1所示

图7.1 proteus仿真图

24

超速时的仿真图

图7.2超速时的报警仿真图

里程清0仿真图

25

图7.3 里程清0仿真图

26

第八章实物的制作与调试

8.1电路板焊接

一般来说,造成硬件问题的首要问题就是焊接了,也就是说焊接的好与坏直接响产品的正常运行。造成焊接质量不高的常见原因是:

①焊锡用量过多,形成焊点的锡堆积;焊锡过少,不足以包裹焊点。 ②冷焊。焊接时烙铁温度过低或加热时间不足,焊锡未完全熔化、浸润、焊锡表面不光亮(不光滑),有细小裂纹(如同豆腐渣一样!)。

③夹松香焊接,焊锡与元器件或印刷板之间夹杂着一层松香,造成电连接不良。若夹杂加热不足的松香,则焊点下有一层黄褐色松香膜;若加热温度太高,则焊点下有一层碳化松香的黑色膜。对于有加热不足的松香膜的情况,可以用烙铁进行补焊。对形成的黑膜,要\吃\净焊锡,清洁被焊元器件或印刷板表面,重新进行焊接才行。

④焊锡连桥。指焊锡量过多,造成元器件的焊点之间短路。这在对超小元器件及细小印刷电路板进行焊接时要尤为注意。

⑤焊剂过量,焊点明围松香残渣很多。当少量松香残留时,可以用电烙铁再轻轻加热一下,让松香挥发掉,也可以用蘸有无水酒精的棉球,擦去多余的松香或焊剂。

⑥焊点表面的焊锡形成尖锐的突尖。这多是由于加热温度不足或焊剂过少,以及烙铁离开焊点时角度不当浩成的内。

8.2电路板调试

最小系统的电路不工作,首先应该确认电源电压是否正常。用电压表测量接地引脚跟电源引脚之间的电压,看是否符合电源电压,常用的是5V左右。接下来就是检测复位引脚的电压是否正常,EA引脚的电压要正常为5V左右。

如果补焊电源后最小系统还是不能工作,有可能是AT89C51单片机坏掉了,重新选择一个AT89C51单片机焊接。如果是工作但是不能按需要的功能执行,也可用更换AT89C51单片机方法调试,但在此之前可以选择检查对应的模块是否有焊接问题,若没有再进行更换。

27

结论

经过近两周的的努力,在范老师和同学的商讨和帮助下,我较好的完成了设计任务,通过此次课程设计,我重新认识到了自学的重要性,以及学以致用的道理。我在图书馆查阅了大量的资料,同时也认识到了图书馆的重要作用。该课题的主要任务是开发一个以AT89S52单片机为核心的自行车里程表。主要分为硬件部分和软件部分,硬件部分着重考虑硬件电路的简单性,故尽可能简化硬件电路,节省线路板的空间,达到硬件电路最优化设计。软件采用汇编语言编写,采用模块化设计思想,程序可读性强。通过联调,实验验证了系统的可行,能满足设计要求,当车轮转动,小磁片滑过霍尔元件时,霍尔元件输出一脉冲,可根据车轮周长计算里程,选择不同的车轮周长,里程数的变化有所不同;当按下开关,显示速度时,LCD会根据转速的不同显示不同的数字,当速度超过一定速度时,将启动报警系统。

通过实验证明本次设计符合设计的要求,能实现对里程、速度的显示,功能性较强,具有一定的实践意义,将会在许多场合应用。但也有一些不足存在,当显示速度时,若自行车转动太快,显示器会显示过快,应该将速度定时显示,使人们能够清楚地看出速度。

本次毕设使我们将大学四年所学的知识进行了汇总,在收集资料,确定方案的过程中,学到许多知识,也弄懂了许多以前不是很清楚的问题。在做毕业设计的过程中,是我们所学知识的一次升华,把理论知识运用到了实际当中。也使我们从中得到了锻炼。

28

附录

参考文献

[1] 楼然苗, 李光飞. 51系列单片机设计实例. 北京: 北京航空航天大学出版

社, 2006

[2] 松井邦彦, 梁瑞林. 传感器应用技术141例. 北京: 科学出版社, 2006 [3] 李朝青. 单片机原理及接口技术. 北京: 北京航空航天大学出版社, 1994 [4] 张洪润, 张亚凡. 传感器技术与应用教程. 北京: 清华大学出版社, 2005 [5] 陈雪丽. 单片机原理及接口技术. 西安: 化学工业出版社, 2005

[6] 李勋, 刘源, 李静东. 单片机实用教程. 北京: 北京航空航天大学出版社,

2006

[7] 刁文兴. 自行车电子里程表的初步设计. 南京工业职业技术学院学报,

2004, 6: 25-28

29

}

num++; else

Speed_dat=0; if(num1<100) num1++;

void ex_0() interrupt 0 //外部中断0 {

Speed_dat=(500/num);

num=0; }

#define uchar unsigned char

#define uint unsigned int sbit EN=P2^7; sbit RS=P2^5; sbit RW=P2^6; sbit BEEP=P2^0; sbit LED1=P1^2; sbit LED2=P1^3;

uchar LCD1602_Table[]=\//LCD1602显示标尺 //0123456789abcdef uchar code DIS_TAB1[]={\ uchar code DIS_TAB2[]={\ uint sum_dat=0; uchar Cur_Speed=0; extern uint Speed_dat; extern uint Total_Dis;

extern void delayms(uint xms);

35

void WRITE_LCD1602_DAT(uchar date) { }

void WRITE_LCD1602_COM(uchar date) { }

void init_1602() {

unsigned char i;

RW=0;

WRITE_LCD1602_COM(0x38); WRITE_LCD1602_COM(0x0c); WRITE_LCD1602_COM(0x06); WRITE_LCD1602_COM(0x01); WRITE_LCD1602_COM(0x80); for(i=0;i<16;i++)

WRITE_LCD1602_DAT(DIS_TAB1[i]);

36

EN=0; RS=1; P0=date; EN=0; delayms(5); EN=1;

EN=0; RS=0; P0=date; EN=0; delayms(5); EN=1;

}

WRITE_LCD1602_COM(0x80+0x40); for(i=0;i<16;i++)

WRITE_LCD1602_DAT(DIS_TAB2[i]);

void display() {

static uint dat=0; static uchar i=0; if(i<6) { } else { }

Cur_Speed=dat;

WRITE_LCD1602_COM(0x80+7); if(dat/100>0)

WRITE_LCD1602_DAT(LCD1602_Table[dat00/100]); else

WRITE_LCD1602_DAT(' '); if(dat/10>0)

WRITE_LCD1602_DAT(LCD1602_Table[dat0/10]); else

37

i++;

sum_dat+=Speed_dat;

i=0;

dat=sum_dat/10; sum_dat=0;

WRITE_LCD1602_DAT(' ');

WRITE_LCD1602_DAT(LCD1602_Table[dat]);

WRITE_LCD1602_COM(0x80+9+0x40); if(Beep_speed/100>0)

WRITE_LCD1602_DAT(LCD1602_Table[Beep_speed00/100]); else

WRITE_LCD1602_DAT(' '); if(Beep_speed/10>0)

WRITE_LCD1602_DAT(LCD1602_Table[Beep_speed0/10]); else

WRITE_LCD1602_DAT(' ');

WRITE_LCD1602_DAT(LCD1602_Table[Beep_speed]);

if(dat>Beep_speed) { } else { }

38

if(i<3) BEEP=0; else BEEP=1; LED1=0; LED2=1;

BEEP=1; LED1=1; LED2=0;

}

void dis_Mileage() { }

#include #define 操作

#define 操作

//#define AT24C02_MAX_ADDR 0xff //unsigned

// AT24C02最大地址

code

AT24C02_OP_WRITE 0xa0

// AT24C02器件地址以及写入

AT24C02_OP_READ 0xa1

// AT24C02器件地址以及读取

WRITE_LCD1602_COM(0x80+0x40+2); if(Total_Dis/1000>0)

WRITE_LCD1602_DAT(LCD1602_Table[Total_Dis000/1000]); else

WRITE_LCD1602_DAT(' '); if(Total_Dis/100>0)

WRITE_LCD1602_DAT(LCD1602_Table[Total_Dis00/100]); else

WRITE_LCD1602_DAT(' ');

WRITE_LCD1602_DAT(LCD1602_Table[Total_Dis0/10]); WRITE_LCD1602_DAT('.');

WRITE_LCD1602_DAT(LCD1602_Table[Total_Dis]);

char

dis_code[]={0x7e,0xbd,0xdb,0x7e,0xdb,0xbd,0x7e,0xff};// AT24C02的数据串

39

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

Top