自行车里程速度计的设计毕业设计说明书_第1页
自行车里程速度计的设计毕业设计说明书_第2页
自行车里程速度计的设计毕业设计说明书_第3页
自行车里程速度计的设计毕业设计说明书_第4页
自行车里程速度计的设计毕业设计说明书_第5页
已阅读5页,还剩55页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、毕业设计说明书毕业设计说明书 自行车里程速度计的设计自行车里程速度计的设计 目 录 序 言.1 第一章 系统方案.2 1.1 课题的主要任务及内容.2 1.2 任务分析与实现.2 1.3 单片机选择.3 1.4 显示模块的选择.4 1.5 传感器的选择.4 1.6 系统简介.5 第二章 硬件设计.7 2.1 单片机的介绍.7 2.1.1 单片机原理简介.7 2.1.2 单片机的引脚功能介绍.8 2.2 单片机外围电路的设计.10 2.2.1 时钟电路.10 2.2.2 复位电路的设计.10 2.2.3 报警电路的设计.11 2.3 传感器.11 2.4 显示电路的设计.15 2.4.1 显示器

2、 lcd1602 的介绍.15 2.4.2 显示电路的设计电路.19 第三章 软件设计.21 3.1 软件实现的功能.21 3.2 主程序.21 3.3 显示子程序的设计.23 第四章 系统调试与仿真.25 4.1 系统仿真调试.25 4.2 protel99 的介绍.25 4.3 硬件调试.26 4.3.1 常见的硬件故障.26 4.3.2 调试方法.27 4.3.3 调试步骤.27 结束语.28 参考文献.29 致 谢.30 附 录.31 附录一 元器件清单.31 附录二 电路图.32 附录三 实物照片.34 附录四 源程序.35 附录五 中英文文献.51 序 言 传感器,是一种检测装置,

3、能感受到被测的信息,并能将检测感受到的信息,按 一定规律变换成为电信号或其他所需形式的信息输出,以满足信息的传输、处理、存 储、显示、记录和控制等要求。它是实现自动检测和自动控制的首要环节1。 它的作用是将一种能量转换成另一种能量的形式。英文名字为 sensor 或 transducer,亦称变换器、换能器。在科学技术迅速发展的当今社会,传感器的应用 越来越广泛,如在日常生活、航空、航天,常规武器、交通运输,机械制造、生物医 学工程、化工、自动化检测工程及计量等各项领域2。 单片微型计算机是制作在一块集成电路芯片上的计算机,简称单片机,又称微控 制器。它包括中央处理器(central proc

4、essing unit,cpu) 、用 ram 构成的数据存储 器、用 rom 构成的程序存储器、定时器/计数器、各种输入/输出(i/o)接口和时钟电 路,可独立地进行工作。特别适用于控制领域。因此,单片机只要与适当的软件及外 部设备相结合,便可成为一个单片机控制系统3。 单片机由于其体积小、功能强,可靠性高,灵活方便等优点,所以被广泛的应用 于各个领域,并对各行各业的技术改造和产品的更新换代起到重要的推动作用4。 本设计介绍了一种基于单片机控制的简易自行车速度以及里程计算系统,包括自 行车里程表的硬件构成,软件逻辑以及程序代码。该里程测速系统以 stc89c52 作为系 统控制核心,采用传感

5、器来检测信号,通过一定时间间隔对信号的采集,结合自行车 本身车轮参数,经过单片机对采集信号进行分析计算,最终在液晶显示器 lcd 上显示 车辆行驶的里程和速度,具有超速报警 5。 此次的毕业设计过程中,有三个需要解决的关键问题: (1)5v 电源怎么实现。 (2)速度怎样采样。 (3)速度显示模块采用何种方式,液晶还是数码管。 第一章 系统方案 1.1 课题的主要任务及内容 本课题主要任务是利用霍尔元件、单片机等部件设计一个可用 1602 液晶显示的实 时显示里程和速度的自行车的速度里程表。本文主要介绍了自行车的速度里程表的设 计思想、电路原理、方案论证以及元件的选择等内容,整体上分为硬件部分

6、设计和软 件部分设计。 本文首先要对该课题的任务进行方案论证,包括硬件方案和软件方案的设计;继 而具体介绍了自行车的速度里程表的硬件设计,包括传感器的选择、单片机的选择、 显示电路的设计;然后阐述了该自行车的速度里程表的软件设计,包括数据处理子程 序的设计、显示子程序的设计;最后对本次设计进行了系统的总结。 具体的硬件电路包括 stc89c52 单片机的外围电路以及 lcd 液晶显示电路、霍尔检 测电路等。 软件设计包括:芯片的初始化程序、定时中断采样子程序、显示子程序等,软件 采用 c 语言编写,软件设计的思想主要是自顶向下,模块化设计,各个子模块逐一设 计。 1.2 任务分析与实现 本设计

7、的任务是:以 stc89c52 单片机为处理核心,用传感器将车轮的转数转换为 电脉冲,进行处理后送入单片机。里程及速度的测量,是经过 stc89c52 的定时/计数 器测出定时 1s 会计数几个脉冲,再经过单片机的计算得出,其结果通过 lcd 液晶显示 器显示出来。 测速,首先要解决是采样的问题。使用单片机进行测速,可以使用简单的脉冲计 数法。只要转轴每旋转一周,产生一个或固定的多个脉冲,将脉冲送入单片机中进行 计算,即可获得转速的信息。常用的测速元件有霍尔传感器、光电传感器和光电编码 器。里程测量传感器的选择也有以下几种方案:使用光敏电阻对里程进行测量、利用 编码器对车轮的圈数进行测量、利用

8、霍尔传感器对里程进行测量、利用干簧管型传感 器测量里程。 要求达到的各项指标及实现方法如下: (1).上电后实时显示速度 (2).路程实时记录(掉电存储) (3).半径可设定(掉电存储) (4).超速报警 (5).掉电存储 实现:利用软件编程,对数据进行处理得到需要的数值。 最终实现目标:自行车的速度里程表具有里程、速度测试与显示功能,采用单片 机作控制,显示电路可显示里程及速度。 1.3 单片机选择 随着微电子技术和超大规模集成电路技术的发展,单片微型计算机以其体积小、性 价比高、功能强、可靠性高等独有的特点,在各个领域(如工业控制、家电产品、汽 车电子、智能仪器仪表)得到了广泛的应用。下面

9、就简要介绍具有代表性的几款单片 机6。 1. 8031 单片机是 intel 公司生产的 mcs-51 系列单片机中的一种,除无片内 rom 外,其余特性与 mcs-51 单片机基本一样,内部含有一个 8 位 cpu、128 个字节的 ram,21 个特殊功能寄存器。而单片机 8031 要进行存储器的扩展比较麻烦,外围器件 多,而且 8031 的功耗也大。 2. 单片机 8032/8052/8752 是增强型产品,而 8032、80c32 片内是没有 rom 的, 而 89c51 内部含有 4k 字节的 flash 的 rom。52 系列的单片机计数器为三个 16 位计数 器,中断源为 8 个

10、。 3.8051 是最早最典型的产品,是在 8031 的基础上片内又集成 4krom,作为程序存 储器。8051 单片机与 80c51 单片机从外形看是完全一样的,其指令系统、引脚信号、 总线等完全一致(完全兼容) ,也就是说在 8051 下开发的软件完全可以在 80c51 上应 用,反过来,在 80c51 下开发的软件也可以在 8051 上应用7。 4.stc89c52 是一种低功耗、高性能 cmos8 位微控制器,具有 8k 在系统可编程 flash 存储器。在单片机芯片上,拥有灵巧的 8 位 cpu 和在系统可编程 flash,使得 stc89c52 为众多嵌入式控制应用系统提供高灵活、

11、超有效的解决方案。具有以下标准 功能:8k 字节 flash,512 字节 ram, 32 位 i/o 口线,看门狗定时器,内置 4kb eeprom,max810 复位电路,三个 16 位定时器/计数器,一个 6 向量 2 级中断结构,全 双工串行口。另 cpu 停止工作,允许 ram、定时器/计数器、串口、中断继续工作。掉 电保护方式下,ram 内容被保存,振荡器被冻结,单片机一切工作停止,直到下一个中 断或硬件复位为止。最高运作频率 35mhz,6t/12t 可选8。 在本次设计中,经过分析与比较,选择了单片机 stc89c52,这是因为: 1.单片机 stc89c52 采用的是 chm

12、os 工艺:高速度、高密度、低功耗。也就是说 stc89c52 单片机是一种低功耗单片机。 2.可靠性高、便于扩展。 3.控制功能强。 4.单片机 89c51 片内存储容量较小,除此之外,单片机 stc89c52 还具有集成度高、 体积小、性价比高、应用广泛、易于产品化等特点。 1.4 显示模块的选择 动态扫描 led 数码管显示。里程表的显示内容以数字为主,利用 led 数码管可基 本满足使用要求,且成本较低。但是用动态扫描的方式驱动数码管,亮度太低,在阳 光下几乎看不见显示内容,失去使用价值。 串行静态 led 数码管显示。把单片机的串行口设置为方式 0(同步移位寄存器) , 输出显示信息

13、,可实现 led 数码管的静态显示,其亮度令人满意。但由于要使用 74hc164/74ls164 串并转换芯片驱动 led 数码管,因此会带来体积大、成本高、功耗高 等缺点。 lcd 液晶显示模块。液晶显示模块具有体积小、功耗低、显示内容丰富等特点,现 在字符型液晶显示模块已经是单片机应用设计中最常用的信息显示器件了9。 在本次设计中,经过分析与比较使用 lcd1602 作为显示模块。 1.5 传感器的选择 红外光电传感器。把红外对管分别安装在自行车车轮的两侧,当车轮转动时,辐 条会阻挡红外对管的光路,接收管输出低电平,单片机根据此信号可计算里程、速度 等。红外对管的优点是测量精度高,缺点是安

14、装比较复杂和容易受外来光线、灰尘等 的影响。 开关型霍尔传感器。霍尔传感器是利用霍尔效应把磁输入信号转换成电信号的器 件。把开关型霍尔传感器安装在自行车贴近车轮的支架上,磁钢安装在辐条上,当磁 钢靠近霍尔传感器的时候,传感器输出一个无抖动的低电平,单片机根据此信号可计 算里程、速度等。霍尔传感器的优点是稳定和安装简易,缺点是成本较高。 干簧管。干簧管是一种磁敏的有触点无源电子开关元件,应用在里程表上的原理 与开关型霍尔传感器类似,把干簧管安装在自行车贴近车轮的支架上,磁钢安装在辐 条上,当磁钢靠近霍尔传感器的时候,干簧管闭合,单片机根据此信号可计算里程、 速度等。干簧管的优点是成本低廉和安装简

15、易,缺点是比较脆弱和不够稳定。 本里程表选用开关型霍尔传感器,稳定、安装简易。 1.6 系统简介 系统由霍尔传感器脉冲检测电路、lcd1602 液晶显示、数据存储模块、主控单片机 系统组成,霍尔传感器把车轮的每周期信号转换成脉冲传送给单片机,单片机通过判 断脉冲周期计算出转速及路程,通过数据稳定处理等程序,得出转速稳定近似值,通 过 lcd1602 液晶屏显示,并记录总路程于内部掉电存储,能保证掉电数据不丢失。系 统方框图如图 1-1 所示。 测量自行车的速度的原理有两种: 测量一定时间间隔 t,自此时间段自行车车轮转过的圈数 q。假设车轮周长为 c,则 速度 v=c*q/t;测量自行车车轮转

16、过一圈的时间 t,则速度 v=c/t。本里程表是根据前 一个原理计算速度的。 主控单片机霍尔传感器 车轮运动 内部掉电存储模块 输入控制 lcd1602 图 1-1 系统方框图 工作原理: 里程、速度等都是由霍尔元器件测量。通过频率计输出脉冲,代表车轮转动圈数, 已知自行车轮胎的半径为 50cm,轮子每转动一圈,安装在车轮辐条上的磁钢接近霍尔 传感器一次,传感器送一个脉冲信号给单片机的外部中断计数器 t0,产生一次中断, 圈数加一。圈数*2*0.5 即为车前进距离,而通过单片机 t0 定时器记录时间,间隔 1 秒,1 秒内的前进距离除以时间 1 秒,得到 1 秒内的当前速度。而总里程 l 除以

17、总时 间 t 得到平均速度10。 若速度大于所设定的值,则 p1.0 口输出低电平,led 警示灯亮,扬声器发出声音。 可以通过按键来改变半径和速度的上限值。 第二章 硬件设计 2.1 单片机的介绍 2.1.1 单片机原理简介 单片机是指集成在一个芯片上的微型计算机,也就是把组成微型计算机的各种功 能部件,包括 cpu(central processing unit)、随机存储器 ram(random access memory)、只读存储器 rom(read-only memory)、基本输入/输出(input/output)接口电 路。定时器/计数器等部件都制作在一块集成芯片上,构成一个完

18、整的微型计算机从而 实现微型计算机的基本功能。单片机内部结构示意图如图 2-1 所示11。 定时/计数器中断系统 cpu 存储器 并行 i/o 口 串口 i/o 口 txd rxd t int p0-p3 图 2-1 单片机内部结构示意图 1.中央处理器(cpu) 中央处理器是单片机最核心的部分,主要完成运算和控制功能。 2.内部存储器 内部存储器包括内部数据存储器(内部 ram)和内部程序存储器。存储器是由大量 的寄存器所组成,其中每一个寄存器就称为一个存储单元。 3.定时/计数器 单片机的定时器和计数器是同一结构,只是计数器记录的是单片机外部发生的事 件,由单片机的外部电路提供计数信号;而

19、定时器是由单片机内部提供一个非常稳定 的计数信号。 4.中断系统 中断系统在计算机中起着十分重要的作用,是现代计算机系统中广泛采用的一种 实时控制技术,能对突发事件进行及时处理,从而大大提高系统的实时性能。 5.串行 i/o 接口 串行 i/o 口的数据各位按顺序传输,其特点是需要一对传输线,成本低;但速度 慢,效率低,适合静态显示。 6.并行 i/o 接口 并行 i/o 接口的数据所有位同时传送。其特点是传输速度快,效率高;但传送多 少位就需要多少根传输线,因此传送成本高,适合动态显示。 2.1.2 单片机的引脚功能介绍 stc89c52 是一种带 8k 字节闪烁可编程可擦除只读存储器(fp

20、erom-flash programable and erasable read only memory )的低电压,高性能 comos8 的微处 理器,俗称单片机。该器件采用 atmel 高密度非易失存储器制造技术制造,与工业标 准的 mcs-51 指令集和输出管脚相兼容。引脚如图 2-2 所示: 图 2-2 stc89c52 引脚图 stc89c52 具体介绍如下: 主电源引脚(2 根) vcc(pin40):电源输入,接5v 电源 gnd(pin20):接地线 外接晶振引脚(2 根) xtal1(pin19):片内振荡电路的输入端 xtal2(pin18):片内振荡电路的输出端 控制引脚

21、(4 根) rst/vpp(pin9):复位引脚,引脚上出现 2 个机器周期的高电平将使单片机复位。 ale/prog(pin30):地址锁存允许信号 psen(pin29):外部存储器读选通信号 ea/vpp(pin31):程序存储器的内外部选通。接低电平,从外部程序存储器读指令, 如果接高电平则从内部程序存储器读指令。 可编程输入/输出引脚(32 根) stc89c52 单片机有 4 组 8 位的可编程 i/o 口,分别为 p0、p1、p2、p3 口,每个口有 8 位(8 根引脚),共 32 根。 po 口(pin39pin32):8 位双向 i/o 口线,名称为 p0.0p0.7 p1

22、口(pin1pin8):8 位准双向 i/o 口线,名称为 p1.0p1.7 p2 口(pin21pin28):8 位准双向 i/o 口线,名称为 p2.0p2.7 p3 口(pin10pin17):8 位准双向 i/o 口线,名称为 p3.0p3.7 2.2 单片机外围电路的设计 2.2.1 时钟电路 stc89c52 内部有一个用于构成振荡器的高增益反相放大器,引脚 xtal1 和 xtal2 分 别是此放大器的输入端和输出端。时钟可以由内部方式产生或外部方式产生。本文所 用的是内部方式的时钟电路,如图 2-3 所示,在 xtal1 和 xtal2 引脚上外接定时元件, 内部振荡器就产生自

23、激振荡。定时元件通常采用石英晶体和电容组成的并联谐振回路。 晶体振荡频率可以在 1.212mhz 之间选择,电容值在 530pf 之间选择,电容值的大 小可对频率起微调的作用。 y1 12mhz c2 22pf c3 22pf xtal1 xtal2 图 2-3 时钟电路 2.2.2 复位电路的设计 本系统的复位电路是采用按键复位的电路,如图 2-4 所示,是常用复位电路之一。 单片机复位通过按键产生高电平复位称手动复位。上电时,刚接通电源,电容 c 相当 于瞬间短路,+5v 立即加到 ret/vpd 端,该高电平使 89c52 全机自动复位,这就是上电 复位;若运行过程中需要程序从头执行,只

24、需按下按键即可。按下按键,可直接把+5v 加到了 ret/vpd 端从而复位称为手动复位。复位后,p0 到 p3 并行 i/o 口全为高电平, 其它寄存器全部清零,只有 sbuf 寄存器状态不确定。 工作原理:通电瞬间,rc 电路充电,rst 引脚出现高电平,只要 rst 端保持 10ms 以上高电平,就能使单片机有效地复位。 c1 4.7uf r1 10k vcc rst 主主 主主 1 1 2 2 3 3 4 4 r4 传传传传4 图 2-4 按键复位电路 2.2.3 报警电路的设计 本次报警电路采用蜂鸣器报警,当自行车行驶的速度超过本设计所设定的速度时, p1.0 口输出低电平,使三极管

25、导通,蜂鸣器发出报警信号。报警电路如 2-5 所示: b1 bell q 1 pn p v cc r6 1.5k bell 图 2-5 报警电路 2.3 传感器 霍尔传感器是一种磁传感器。用它可以检测磁场及其变化,可在各种与磁场有关 的场合中使用。霍尔传感器以霍尔效应为工作基础,是由霍尔元件和它的附属电路组 成的集成传感器。霍尔传感器在工业生产、交通运输和日常生活中有着非常广泛的应 用12。 1.霍尔效应霍尔元件-霍尔传感器 由于霍尔元件产生的电势差很小,故通常将霍尔元件与放大器电路、温度补偿电路 及稳压电源电路等集成在一个芯片上,称之为霍尔传感器. a44e 123 图 2-6 霍尔传感器

26、霍尔传感器也称为霍尔集成电路,其外形较小,如图 2-6 所示,是其中一种型号 的外形图。 2.霍尔传感器的分类 霍尔传感器分为线性型霍尔传感器和开关型霍尔传感器两种。 (1)线性型霍尔传感器由霍尔元件、线性放大器和射极跟随器组成,它输出模拟量。 (2)开关型霍尔传感器由稳压器、霍尔元件、差分放大器,斯密特触发器和输出级 组 成,它输出数字量。 3.霍尔传感器的特性 (1)线性型霍尔传感器的特性如图 2-7 所示: 图 2-7 线性霍尔传感器的特性 输出电压与外加磁场强度呈线性关系,如图 2-7 所示,可见,在b1b2的磁感应 强度范围内有较好的线性度,磁感应强度超出此范围时则呈现饱和状态。 (

27、2)开关型霍尔传感器的特性 如图 2-8 所示,其中bop为工作点“开”的磁感应强度,brp为释放点“关”的磁 感应强度。 图 2-8 开关型霍尔传感器特性 当外加的磁感应强度超过动作点bop时,传感器输出低电平,当磁感应强度降到动 作点bop以下时,传感器输出电平不变,一直要降到释放点brp时,传感器才由低电平 跃变为高电平。bop与brp之间的滞后使开关动作更为可靠。 另外还有一种“锁键型”(或称“锁存型”)开关型霍尔传感器,其特性如图 2-9 所示: 图 2-9 锁键型开关型霍尔传感器 当磁感应强度超过动作点bop时,传感器输出由高电平跃变为低电平,而在外磁场 撤消后,其输出状态保持不变

28、(即锁存状态),必须施加反向磁感应强度达到brp时, 才能使电平产生变化。 4.霍尔传感器的应用 按被检测对象的性质可将它们的应用分为:直接应用和间接应用。前者是直接检测 受检对象本身的磁场或磁特性,后者是检测受检对象上人为设置的磁场,这个磁场是 被检测的信息的载体,通过它,将许多非电、非磁性物理量,例如速度、加速度、角度、 转数、转速以及工作状态发生变化的时间等,转变成电学量来进行检测和控制11。 (1)线性型霍尔传感器主要用于一些物理量的测量。 电流传感器 位移测量 (2)开关型霍尔传感器主要用于测转数、转速、风速、流速、接近开关、关门告 知器、报警器、自动控制电路等。 如图 2-10 所

29、示,在非磁性材料的圆盘边上粘一块磁钢,霍尔传感器放在靠近圆 盘边缘处,圆盘旋转一周,霍尔传感器就输出一个脉冲,从而可测出转数(计数器), 若接入频率计,便可测出转速10。 图 2-10 模拟测速 如果把开关型霍尔传感器按预定位置有规律地布置在轨道上,当装在运动车辆上 的永磁体经过它时,可以从测量电路上测得脉冲信号。根据脉冲信号的分布可以测出 车辆的运动速度。 本设计采用的开关型霍尔传感器尺寸小、工作电压范围宽,工作可靠,价格便宜, 因此获得极为广泛的应用。电路如图 2-11 所示: 图 2-11 开关型霍尔传感器 传感器的工作原理如图 2-12 所示: 信号放大波形变化波形整形单片机 图 2-

30、12 传感器工作原理 2.4 显示电路的设计 在日常生活中,我们对液晶显示器并不陌生。液晶显示模块已作为很多电子产品 的通用器件,如在计算器、万用表、电子表及很多家用电子产品中都可以看到,显示 的主要是数字、专用符号和图形。在单片机的人机交流界面中,一般的输出方式有以 下几种:发光管、led 数码管、液晶显示器。发光管和 led 数码管比较常用,软件都比 较简单,但硬件电路复杂。 在单片机系统中应用液晶显示器作为输出器件有以下几个优点: (1)显示质量高 由于液晶显示器每一个点在收到信号后就一直保持那种色彩和亮度,恒定发光, 而不像阴极射线管显示器(crt)那样需要不断刷新新亮点。因此,液晶显

31、示器画质高 且不会闪烁。 (2)数字式接口 液晶显示器都是数字式的,和单片机系统的接口更加简单可靠,操作更加方便。 (3)体积小、重量轻 液晶显示器通过显示屏上的电极控制液晶分子状态来达到显示的目的,在重量上 比相同显示面积的传统显示器要轻得多。 (4)功耗低 相对而言,液晶显示器的功耗主要消耗在其内部的电极和驱动 ic 上,因而耗电量 比其它显示器要少得多。 2.4.1 显示器 lcd1602 的介绍 1.液晶显示原理 液晶显示的原理是利用液晶的物理特性,通过电压对其显示区域进行控制,有电 就有显示,这样即可以显示出图形。液晶显示器具有厚度薄、适用于大规模集成电路 直接驱动、易于实现全彩色显

32、示的特点,目前已经被广泛应用在便携式电脑、数字摄 像机、pda 移动通信工具等众多领域。 2.液晶显示器的分类 液晶显示的分类方法有很多种,通常可按其显示方式分为段式、字符式、点阵式 等。除了黑白显示外,液晶显示器还有多灰度有彩色显示等。如果根据驱动方式来分, 可以分为静态驱动(static)、单纯矩阵驱动(simple matrix)和主动矩阵驱动 (active matrix)三种。 3.液晶显示器各种图形的显示原理: 线段的显示 点阵图形式液晶由 mn 个显示单元组成,假设 lcd 显示屏有 64 行,每行有 128 列,每 8 列对应 1 字节的 8 位,即每行有 16 字节,共 16

33、8=128 个点组成,屏上 6416 个显示单元与显示 ram 区 1024 字节相对应,每一字节的内容和显示屏上相应位 置的亮暗对应。例如屏的第一行的亮暗由 ram 区的 000h00fh 的 16 字节的内容决 定,当(000h)=ffh 时,则屏幕的左上角显示一条短亮线,长度为 8 个点;当 (3ffh)=ffh 时,则屏幕的右下角显示一条短亮线;当(000h)=ffh,(001h) =00h,(002h)=00h,(00eh)=00h,(00fh)=00h 时,则在屏幕的顶部显示一 条由 8 段亮线和 8 条暗线组成的虚线。这就是 lcd 显示的基本原理。 字符的显示 用 lcd 显示

34、一个字符时比较复杂,因为一个字符由 68 或 88 点阵组成,既要 找到和显示屏幕上某几个位置对应的显示 ram 区的 8 字节,还要使每字节的不同位为 “1”,其它的为“0”,为“1”的点亮,为“0”的不亮。这样一来就组成某个字符。 但由于内带字符发生器的控制器来说,显示字符就比较简单了,可以让控制器工作在 文本方式,根据在 lcd 上开始显示的行列号及每行的列数找出显示 ram 对应的地址, 设立光标,在此送上该字符对应的代码即可。 汉字的显示 汉字的显示一般采用图形的方式,事先从微机中提取要显示的汉字的点阵码(一 般用字模提取软件),每个汉字占 32b,分左右两半,各占 16b,左边为

35、1、3、5 右边为 2、4、6根据在 lcd 上开始显示的行列号及每行的列数可找出显示 ram 对应 的地址,设立光标,送上要显示的汉字的第一字节,光标位置加 1,送第二个字节,换 行按列对齐,送第三个字节直到 32b 显示完 lcd 就可以得到一个完整的汉字。 4.主要技术参数如表 2-1 所示: 表 2-1 lcd1602 主要技术参数 显示容量162 个字符 芯片工作电压4.55.5 工作电流2.0ma(5.0v) 模块最佳电压 5.0v 字符尺寸2.954.35(wxh)mm 5.引脚接口说明如表 2-2 所示13: 表 2-2 lcd1602 引脚接口 编号符号引脚说明编号符号引脚说

36、明 1vss 电源地 9d2 数据 2vdd 电源正极 10d3 数据 3vl 液晶显示偏压 11d4 数据 4rs 数据/命令选择 12d5 数据 5r/w 读/写选择 13d6 数据 6e 使能信号 14d7 数据 7d0 数据 15bla 背光源正极 8d1 数据 16blk 背光源负极 第 1 脚:vss 为地电源 第 2 脚:vdd 接 5v 电源 第 3 脚:vl 为液晶显示器对比度调整端,接正电源时对比度最弱,接地时对比度 最高,对比度过高时会产生“鬼影” ,使用时可以通过一个 10k 的电位器调整对比 度。 第 4 脚:rs 为寄存器选择,高电平时选择数据寄存器、低电平时选择指

37、令寄存器。 第 5 脚:r/w 为寄存器选择,高电平时进行读写操作,低电平时进行写操作。当 rs 和 r/w 共同为低电平时可以写入指令或者显示地址,当 rs 为低电平 r/w 为高电 平时可以读信号,当 rs 为高电平 r/w 为低电平时可以写入数据。 第 6 脚:e 端为使能端,当 e 端由高电平跳变成低电平时,液晶模块执行命令。 第 714 脚:d0d7 为 8 位双向数据线。 第 15 脚:背光源正极。 第 16 脚:背光源负极。 lcd1602 分为带背光和不带背光两种,基本控制器大部分为 hd44780,带背光的比 不带背光的厚,是否带背光在应用中并无差别,两者尺寸差别如下图 2-

38、13 所示: 图 2-13 lcd1602 带背光与不带背光的外形尺寸差别 6.lcd 寄存器的选择如表 2-3 所示: 表 2-3 lcd 寄存器的选择 er/wrs 功能说明 100 写入命令寄存器 101 写入数据寄存器 110 读取忙碌标志及 ram 地址 111 读取 ram 数据 0x 不动作 7.1602lcd 的指令说明及时序 1602 液晶模块内部的控制器共有 11 条控制指令,控制指令如表 2-4 所示: 表 2-4 1602 控制指令 序号指令 rsr/wd7d6d5d4d3d2d1d0 1 清除显示 0000000001 2 光标返回 000000001* 3 置输入模

39、式 00000001i/ds 4 显示开/关控制 0000001dcb 5 光标或字符移位 000001s/c r/l* 6 置功能 00001dlnf* 7 置字符发生存贮器地址 0001 字符发生存贮器地址 8 置数据存贮器地址 001 显示数据存贮器地址 9 读忙标志或地址 01bf 计数器地址 10 写数到 cgram 或 ddram) 10 要写的数据内容 11 从 cgram 或 ddram 读数 11 读出的数据内容 1602 液晶模块的读写操作、屏幕和光标的操作都是通过指令编程来实现的。(说明: 1 为高电平、0 为低电平) 指令 1:清除显示,指令码 01h,光标复位到地址

40、00h 位置。 指令 2:光标复位,光标返回到地址 00h。 指令 3:光标和显示模式设置 i/d:光标移动方向,高电平右移,低电平左移 s:屏幕 上所有文字是否左移或者右移。高电平表示有效,低电平则无效。 指令 4:显示开关控制。 d:控制整体显示的开与关,高电平表示开显示,低电平表示 关显示 c:控制光标的开与关,高电平表示有光标,低电平表示无光标 b:控制光标 是否闪烁,高电平闪烁,低电平不闪烁。 指令 5:光标或显示移位 s/c:高电平时移动显示的文字,低电平时移动光标。 指令 6:功能设置命令 dl:高电平时为 4 位总线,低电平时为 8 位总线 n:低电平时 为单行显示,高电平时双

41、行显示 f: 低电平时显示 5x7 的点阵字符,高电平时显示 5x10 的点阵字符。 指令 7:字符发生器 ram 地址设置。 指令 8:ddram 地址设置。 指令 9:读忙信号和光标地址 bf:为忙标志位,高电平表示忙,此时模块不能接收命 令或者数据,如果为低电平表示不忙。 指令 10:写数据。 指令 11:读数据。 2.4.2 显示电路的设计电路 本设计中 lcd1602 的数据总线接 stc89c52 单片机的 p0 口,控制引脚 rs 接 p2.7 口, r/w 接 p2.6 口,e 接 p2.5 口。vl 是对比控制引脚,电压在 05v 之间,bla 和 blk 是 背光电源的正负

42、极,使用时需要连接限流电阻,电流大小可以控制背光亮度。液晶显 示电路如图 2-14 所示14: ea/vpp 31 x 1 19 x 2 18 reset 9 rd/p37 17 wr/p36 16 p32/int0 12 p33/int1 13 p34/t0 14 p35/t1 15 p10 1 p11 2 p12 3 p13 4 p14 5 p15 6 p16 7 p17 8 p00 39 p01 38 p02 37 p03 36 p04 35 p05 34 p06 33 p07 32 p20 21 p21 22 p22 23 p23 24 p24 25 p25 26 p26 27 p27

43、 28 psen 29 a le/prd g 30 p31/tx d 11 p30/rx d 10 u 2 stc89c52rc v cc v cc vss 1 vdd 2 vl 3 rs 4 r/w 5 e 6 d0 7 d1 8 d2 9 d3 10 d4 11 d5 12 d6 13 d7 14 bla 15 blk 16 u 1lcd 1602 v cc r2 51r v cc 主主 主主主 主 主主 主主主 c 1 2 2 3 3 4 4 5 5 6 6 7 7 8 8 9 9 r5 传传 图 2-14 液晶显示电路 第三章 软件设计 3.1 软件实现的功能 1. 利用霍尔传感器产生

44、里程数的脉冲信号 2. 利用单片机自带的计数器 t0 对霍尔传感器脉冲信号进行计数 3. 对数据进行处理,要求用 lcd 显示里程总数和即时速度 4. 自行车超速,系统发出报警信号。 3.2 主程序 1.初始化程序 主要工作:将 t0 设为外部控制定时器方式;外中断 0 及外中断 1 设为边沿触发方 式;将部分内存单元清零;设置轮子周长;开中断及定时器;将 eeprom 中的数据调入 内存等。 2.轮圈大小的设计 p1.5 和 p1.6 两个引脚分别接两个开关,通过调节这两个开关,可以改变轮圈的半 径。 3.主要程序流程图 通过对按键和定时器的监测,进行按键和显示独立执行,当有按键按下根据按键

45、 的类型作相应的处理,定时 500ms 进行一次显示更新。程序流程图如图 3-1 所示: 500 ms是否到 是否按键按下 y n 开始 初始化数据及端口 按键处理并保存数据 时间计数及数据显示 y 图 3-1 软件总体流程图 4.算法流程 a44e 输出端 out 连到单片机外部中断 t0 上,用磁铁靠近 a44e,输出端产生一个低 电平信号,使 cpu 产生一次中断计一次数。假定轮圈的周长为 l,在轮圈上安装 m 个永 久磁铁,则测得的里程值最大误差为 l/m。本设计中取 m=1。当轮子每转一圈,通过霍 尔元件传感器采集到一个脉冲信号,并从引脚 p3.2 中断 0 端输入,可以采用两种定时

46、 器,一个定时器定位 1s,一个是计数器。计数器是用来计数 1s 钟轮子的圈数。从而可 以计算出它的里程与速度。 里程s=周长l*圈数n 速度 v=周长 l/t 通过计数外部中断的脉冲数,每经过 1s 进行一次监测,从而得出速度,并计算出 路程,再通过液晶 1602 显示。程序流程图如图 3-2 所示: 定时器1s是否到位 是否有脉冲 n n y 开始 外部中断计数 计算转速及路程 y 数据存储及液晶显示 图 3-2 算法流程 3.3 显示子程序的设计 本设计采用 lcd 液晶显示器接口电路,数据总线接 stc89c52 单片机的 p0 口,控 制引脚 rs 接 p2.7 口,r/w 接 p2

47、.6 口。e 接 p2.5 口。通过编辑软件,先把所要显示的 数据放入存储单元,然后把数据送入对应的地址,完成显示。液晶屏每 0.5s 更新一次 显示。若发生报警,显示屏上的值将会停留在最近一次的显示值,直至复位按钮按下 或按钮按下。显示子程序的流程图如图 3-3 所示: y 开始 显示屏初始化 读取显示数据v和s 显示v和s 延时0.5s? 更新显示v和s p1.0=0? 保持显示v和s y n n 图 3-3 显示程序框图 第四章 系统调试与仿真 系统调试包括硬件调试和软件调试。硬件调试的任务是排除系统的硬件系统的硬 件电路故障包括设计性错误和工艺故障。软件调试是利用开发工具进行在线仿真调

48、试, 除发现和解决程序错误外,也可以发现硬件故障校时电路。本次设计中需要的调试如下: 4.1 系统仿真调试 本次实验采用的是 uvision2件进行调试。它是 keil software 公司推出的一款可 用于多种8051mcu 的集成开发环境(ide) ,该 ide 同时也是 pk51及其它开发套件的一 个重要组件。除增加了源代码、功能导航器、模板编辑以及改进的搜索功能外, uvision2提供了一个配置向导功能,加速了启动代码和配置文件的生成。此外其内置 的仿真器可模拟目标 mcu,包括指令集、片上外围设备及外部信号等。uvision2提供逻 辑分析器,可监控基于 mcui/o 引脚和外设

49、状态变化下的程序变量15。 程序调试界面如图 4-1 所示。 4.2 protel99 的介绍 早期的 protel 主要作为印制板自动布线 工具使用,运行在 dos 环境,对硬件的 要求很低,在无硬盘 286 机的 1m 内存下就能运行,但它的功能也较少,只有电路 原理图绘制与印制板设计功能,其印制板自动布线的布通率也低,而现今的 protel 已发展到 dxp 2004,是个庞大的 eda 软件,完全安装有 200 多 m,它工作 在 windows95 环境下,是个完整的板级全方位电子设计系统,它包含了电路原理图 绘制、模拟电路与数字电路 混合信号仿真、多层 印制电路板 设计(包含印制电

50、路 板自动布线) 、可编程逻辑器件 设计、图表生成、 电子表格生成、支持宏操作等功 能,并具有 client/server(客户/服务器)体系结构,同时还兼容一些其它设计 软件的文件格式,如 orcad,pspice,excel 等,其多层印制线路板的自动布线可 实现高密度 pcb 的 100%布通率。在国内 protel 软件较易买到,有关 protel 软件 和使用说明的书也有很多,这为它的普及提供了基础。 因此本设计的原理图用的软件是 protel99。图见附录 2 所示。 图 4-1 程序调试界面 4.3 硬件调试 4.3.1 常见的硬件故障 (1)逻辑错误: 样机硬件的逻辑错误是由于

51、设计错误或加工过程中的工艺性错误而造成的,包括 错线,开路和短路等等,其中短路是最常见的故障。 (2)元器件失效: 元器件失效的原因有两个方面,一是器件本身已经损坏或性能不符合要求;二是由 于组装错误造成的元器件失效,如电解电容,二极管的极性错误或集成块安装方向错误 等。 (3)性差: 若样机中存在电源故障,则加电后将造成器件损坏。电源故障包括电压值不符合设 计要求,电源引出线和插座不对应,电源功率不足和负载能力差等。 4.3.2 调试方法 脱机调试是在样机加点之前,先用万用表等工具,根据硬件电气原理图和装配图,仔 细检查样机线路的正确性,并核对元器件型号,规格和安装是否合要求。特别注意电源

52、的走线,防止电源之间的短路和极性错误,重点检查系统的总线或其他信号线之间是否 存在相互的短路。样机所用的电源,事先必须单独调试后才能加到系统中,在不插芯片 的情况下,加电检测各底座上引脚的电位,仔细测量各点电位是否正常,尤其应注意单片 机底座上的各点电位是否正常。 4.3.3调试步骤 接通 5v 电源,液晶显示器会显示速度为 0,当磁铁靠近霍尔元器件时,就会显示 速度的值,不停的靠近霍尔传感器,速度的值就会越来越大。可以通过切换开关来查 看此时的路程和半径。可以通过改变半径改变路程与速度。图为附录所示。 结束语 本设计是以 stc89c52 单片机为主要控制电路,通过霍尔传感器传送给单片机,利

53、 用单片机内部的计时和中断,计算里程速度并通过液晶显示器显示。在此次设计中本 人也遇到了很多困难,开始拿到课题时还觉得很简单,可通过动手做之后,才发现自 己的不足,对单片机知识掌握的不牢,所有知识都只局限于课本上老师讲过的,课外 知识积累的太少。通过此次设计,本人学到了很多老师课上没教的知识,如霍尔元件, 液晶显示器等的管脚及其功能,了解了它们的用法、原理、接口电路及其应用程序, 进一步加强了本人的专业基础知识和相关专业课程知识,提高了本人的动手能力,能 将所学知识运用在实际生活中;培养独立自主、综合分析的思维与创新能力。在以后 的学习中,本人要多阅读课外书籍,不能只局限于书本,扩展本人的思路

54、,积累更多 的知识,并将它应用到实际生活中去。 在本次的毕业设计过程中,三个需要解决的关键问题都得到了解决: 第一、电源可以通过网上购买 usb 充电器 5v 电源适配器,更方便进行测试。 第二、速度可以通过霍尔元器件进行模拟,再送进单片机进行计算。从而可以得出速 度与里程。 第三、显示电路可以用液晶显示器,可以减少电路的复杂程度,使得电路更加美观。 在此过程中也遇到了问题,液晶显示器的显示屏显示的字很模糊,因此在液晶显 示器的 3 脚与地接了一个 2k5k 的电阻。 参考文献 1郁有文,常健,程继红.传感器原理及工程应用m.西安:电子科技大学出版社,2008. 2何希才. 传感器技术及应用m

55、. 北京:航空航天大学出版社,2001. 3袁新燕.关于“单片机原理与应用”教学的讨论j.电脑开发与应用,1997,10(4): 56-59. 4唐炜.单片机原理与应用课程教学改革探讨j.电气电子教学学报,2002,24(3): 21-23. 5楼然苗, 李光飞. 51 系列单片机设计实例m. 北京:航空航天大学出版社,2003. 6张友德,赵志英,涂时亮.单片微型机原理、应用与实验m. 上海:复旦大学出版社, 2006. 7曾一江. 单片机原理与接口技术m.北京:科学出版社, 2006. 8qu jin-yu.measure of engine speed based on c8052f c

56、hipj.tractor/模式定义 uchar b_radius = 50;/半径存储变量 cm uint total_dis = 0;/总路程 total distance,单位 100m uint b_speed = 0;/自行车速度 uchar up_speed = 22;/超速设置 sbit bell = p10;/蜂鸣器报警 extern unsigned long distance; /总路程 /地址定义 #define h_add0x20/高位地址 #define s_add0x00/起始位地址 #define dis_add0x08/路程存储地址 #define radius_

57、add0x0c/半径存储地址 #define up_spd_add0x10/上限速度存储地址 /保存数据 void savedata(void) sectorerase(h_add,s_add); byte_write(total_dis/256, h_add,dis_add);/保存距离 byte_write(total_dis%256, h_add,dis_add+1); byte_write(b_radius/256, h_add,radius_add); /保存半径 byte_write(b_radius%256, h_add,radius_add+1); byte_write(up_

58、speed, h_add,up_spd_add); /保存上限速度 /读数据 void readdata(void) total_dis = byte_read(h_add,dis_add)*256; total_dis += byte_read(h_add,dis_add+1); distance = total_dis*100; b_radius = byte_read(h_add,radius_add)*256; b_radius += byte_read(h_add,radius_add+1); up_speed = byte_read(h_add,up_spd_add); /- /显

59、示总路程 void showtoldis(uchar x,uchar y) wrlcds(x,y,route: km); wrfloatnum(x,y+6,total_dis/10.0); /显示速度 void showspeed(uchar x,uchar y) wrlcds(x,y,spd: km/h); if(b_speed 10000) wrfloatnum(x,y+4,b_speed/10.0); else /超速 wrlcds(x,y,spd:*km/h); /写半径数值 void wrradiusnum(uchar x,uchar y,uint num) /补零使得显示位数相等

60、if(num = 0) wrnum(x,y+,0); if(num max_num) *var = ini_num; /减法函数 void subvar(uchar *var,uchar min_num,uchar ini_num) if(*var) min_num) (*var) -; /设置温度减 else (*var) = ini_num; /- 按键处理函数 - void ex_mode(void) plusvar( /模式变换 void ex_add(void) if(mode = m_radius) plusvar(/半径减 if(mode = m_up_spd) plusvar(

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论