基于单片机的自行车里程表设计-内容摘要:

控制、延时、外部计数和检测等。 计数器:对引脚 T0( P )和 T1( .)输入的外部脉冲信号计数,当输入脉冲信号从 1 到 0 的负跳变时,计数器就自动加 1。 计数的最高频率一般为振荡频率的 1/24。 定时器 : 对系统晶振振荡脉冲的 12 分频 输出进行计数。 定时器 /计数器的结构组成: 16 位加法计数器、工作方式寄存器 TMOD 和控制寄存器 TCON。 T0: TL0(低 8 位)和 TH0(高 8 位) T1: TL1(低 8 位)和 TH1(高 8 位) 存储器的介绍 24C02 是一个 2K 位串行 CMOSE2PROM。 内部含有 256 个 8 位字节, CATALYST 公司的先进 CMOS 技术实质上减少了器件的功耗。 24C02 有一个 16 字节页写缓冲器,该器件通过 I2C 总线接口进行操作有一个专门的写保护功能。 24C02 支持 I2C 总线数据传送协议, I2C 总线协议规定: 任何将数据传送到总线的器件作为发送器,任何从总线接收数据的器件为接收器,数据传送是由产生串行时钟和所有起始停止信号的主器件控制的。 主器件和从器件都可以作为发送器或接收器,但由主器件控制传送数据(发送或接收)的模式,通过器件地址输入端 A0、 A1 和 A2 可以实现将最多 8 个 24WC02 器件连接到总线上。 管脚图如 所 17 示。 图 24C02 管脚图 SCL 串行时钟: 24C02 串行时钟输入管脚用于产生器件所有数据发送或接收的时钟,这是一个输入管脚。 SDA 串行数据 /地址: 24C02 双向串行数 据 /地址管脚用于器件所有数据的发送或接收。 SDA 是一个开漏输出管脚可与其它开漏输出或集电极开路输出进行线或( wireOR)。 A0、 A A2 器件地址输入端:这些输入脚用于多个器件级联时设置器件地址, 当这些脚悬空时默认值为 0。 当使用 24WC02 时最大可级联 8 个器件, 24WC02被总线寻址这三个地址输入脚。 A0、 A A2 可悬空或连接到 Vss。 WP 写保护:如果 WP 管脚连接到 Vcc 所有的内容都被写保护,只能读。 当WP 管脚连接到 Vss 或悬空,允许器件进行正常的读 /写操作。 起始信号:时钟线保持高电平期 间,数据线电平从高到低的跳变作为 I2C 总线的起始信号。 停止信号:时钟线保持高电平期间,数据线电平从低到高的跳变作为 I2C 总线的停止信号。 本题目中 24C02 起存储作用,将自行车里程存储在 24C02 中,当掉电时,存储的数据不会丢失,可以读取 24C02 中的里程数完成里程的累积。 18 单片机外围电路的设计 1. 时钟电路的设计 时钟是单片机的心脏,单片机各功能部件的运行都是以时钟频率为基准,有条不紊地一拍一拍地工作。 因此,时钟频率直接影响单片机的速度,时钟电路的质量也直接影响单片机系统的稳定性。 8051 片内由一个反相放大器构成振荡器,可以由它产生时钟。 常用的时钟电路有两种方式,一种是内部时钟方式,另一种为外部时钟方式。 本设计采用前者。 单片机内部有一个用于构成振荡器的高增益反相放大器,该高增益反相放大器的输入为芯片引脚 XTAL1,输出端为引脚 XTAL2。 这两个引脚跨接石英晶体振荡器和微调电容,就构成一个稳定的自激振荡器。 单片机内部时钟方式的振荡电路如图 所示。 19 图 单片机片内振荡电路 电路中的电容 C1 和 C2 常选择为 30pF 左右。 对外接电容的值虽然没有严格的要求,但电容的大小会影响振荡器的高低 、振荡器的稳定性、起振的快速性和温度的稳定性。 而外接晶体的振荡频率的大小,主要取决于单片机的工作频率范围,每一种单片机都有自己的最大工作频率,外接的晶体振荡频率不大于单片机的最大工作频率即可。 此外,如果单片机有串行通信,则应该选择振荡频率除以串行通信频率可以除尽的晶体。 本设计晶振采用 12MHz。 2. 复位电路的设计 AT89S52 的复位输入引脚 RET(即 RESET)为 AT89S52 提供了初始化的手段。 有了它可以使程序从指定处开始执行,即从程序存储器中的 0000H 地址单元开始执行程序。 在 AT89S52 的时钟 电路工作后,只要在 RET 引脚上出现两个机器周期以上的高电平时,单片机内部则初始复位。 只要 RET 保持高电平,则 AT89S52 循环复位。 只有当 RET 由高电平变成低电平以后, AT89S52 才从 0 地址开始执行程序。 本系统的复位电路是采用按键复位的电路,如图 所示,是常用复位电路之一。 当 AT89S52 的 ALE 及 PSEN 两引脚输出高电平, RET 引脚为高电平时,单片机复位。 通过按动按钮产生高电平复位称手动复位。 上电时,刚接通电源,电容 C 相当于瞬间短路, +5V 立即加到 RET/VPD端,该高电平使 AT89S52 全机自动复位,这就是上电复位;若运行过程中需要程序从头执行,只需按动按钮即可。 按下按钮,则直接把 +5V 加到了 RET/VPD 端从而复位称为手动复位。 复位后,P0 到 P3 并行 I/O 口全为高电平,其它寄存器全部清零,只有 SBUF 寄存器状态不确定。 20 图 按键复位电路 工作原理:上电瞬间, RC 电路充电, RST 引脚出现高电平,只要 RST 端保持 10ms 以上高电平,就能使单片机有效地复位。 3. 显示电路的设计 10. 8. 2 1602 字符型 LCD 简介 字符型液晶显示模块是 一种专门用于显示字母、数字、符号等点阵式 LCD,目前常用 16*1,16*2, 20*2 和 40*2 行等的模块。 下面以长沙太阳人电子有限公司的 1602 字符型液晶显示器为例,介绍其用法。 一般 1602 字符型液晶显示器实物如图 1053: 21 图 1053 1602 字符型液晶显示器实物图 10. 1602LCD 的基本参数及引脚功能 1602LCD 分为带背光和不带背光两种,基控制器大部分为 HD44780,带背光的比不带背光的厚,是否带背光在应用中并无差别,两者尺寸差别如下图 1054 所示: 图 1054 1602LCD 尺寸图 1602LCD 主要技术参数: 显示容量 :162 个字符 芯片工作电压 :— 工作电流 :() 模块最佳工作电压 : 字符尺寸 :(WH)mm 引脚功能说明 22 1602LCD 采用标准的 14 脚(无背光)或 16 脚(带背光)接口,各引脚接口说明如表1013 所示 : 表 1013:引脚接口说明表 第 1 脚: VSS 为地电源。 第 2 脚: VDD 接 5V 正电源。 第 3 脚: VL 为液晶显示器对比度调整端, 接正电源时对比度最弱,接地时对比度最高,对比度过高时会产生 “鬼影 ”,使用时可以通过一个 10K 的电位器调整对比度。 第 4 脚: RS 为寄存器选择,高电平时选择数据寄存器、低电平时选择指令寄存器。 第 5 脚: R/W 为读写信号线,高电平时进行读操作,低电平时进行写操作。 当 RS 和 R/W 共同为低电平时可以写入指令或者显示地址,当 RS 为低电平 R/W 为高电平时可以读忙信号,当 RS 为高电平 R/W 为低电平时可以写入数据。 第 6 脚: E 端为使能端,当 E 端由高电平跳变成低电平时,液晶模块执行命令。 第 7~ 14 脚: D0~ D7 为 8 位双向数据 线。 第 15 脚:背光源正极。 第 16 脚:背光源负极。 10. 8. 2. 3 1602LCD 的指令说明及时序 1602 液晶模块内部的控制器共有 11 条控制指令,如表 1014 所示: 编号 符号 引脚说明 编号 符号 引脚说明 1 VSS 电源地 9 D2 数据 2 VDD 电源正极 10 D3 数据 3 VL 液晶显示偏压 11 D4 数据 4 RS 数据 /命令选择 12 D5 数据 5 R/W 读 /写选择 13 D6 数据 6 E 使能信号 14 D7 数据 7 D0 数据 15 BLA 背光源正极 8 D1 数据 16 BLK 背光源负极 23 表 1014:控制命令表 1602 液晶模块的读写操作、屏幕和光标的操作都是通过指令编程来实 现的。 (说明: 1为高电平、 0 为低电平) 指令 1:清显示,指令码 01H,光标复位到地址 00H 位置。 指令 2:光标复位,光标返回到地址 00H。 指令 3:光标和显示模式设置 I/D:光标移动方向,高电平右移,低电平左移 S:屏幕上所有文字是否左移或者右移。 高电平表示有效,低电平则无效。 指令 4:显示开关控制。 D:控制整体显示的开与关,高电平表示开显示,低电平表示关显示 C:控制光标的开与关,高电平表示有光标,低电平表示无光标 B:控制光标是否闪烁,高电平闪烁,低电平不闪烁。 指令 5:光标或显示移位 S/C:高电 平时移动显示的文字,低电平时移动光标。 指令 6:功能设置命令 DL:高电平时为 4 位总线,低电平时为 8 位总线 N:低电平时为单行显示,高电平时双行显示 F: 低电平时显示 5x7 的点阵字符,高电平时显示 5x10 的点阵字符。 指令 7:字符发生器 RAM 地址设置。 指令 8: DDRAM 地址设置。 指令 9:读忙信号和光标地址 BF:为忙标志位,高电平表示忙,此时模块不能接收命令或者数据,如果为低电平表示不忙。 指令 10:写数据。 序号 指令 RS R/W D7 D6 D5 D4 D3 D2 D1 D0 1 清显示 0 0 0 0 0 0 0 0 0 1 2 光标返回 0 0 0 0 0 0 0 0 1 * 3 置输入模式 0 0 0 0 0 0 0 1 I/D S 4 显示开 /关控制 0 0 0 0 0 0 1 D C B 5 光标或字符移位 0 0 0 0 0 1 S/C R/L * * 6 置功能 0 0 0 0 1 DL N F * * 7 置字符发生存贮器地址 0 0 0 1 字符发生存贮器地址 8 置数据存贮器地址 0 0 1 显示数据存贮器地址 9 读忙标志或地址 0 1 BF 计数器地址 10 写数到 CGRAM或 DDRAM) 1 0 要写的数据内容 11 从 CGRAM或 DDRAM 读数 1 1 读出的数据内容 24 指令 11:读数据。 与 HD44780 相兼容的芯片时序表如下: 表 1015:基本操作时序表 读写操作时序如图 1055 和 1056 所示: 图 1055 读操作时序 图 1056 写操作时序 10. 8. 2. 4 1602LCD 的 RAM 地址映射及标准字库表 读状态 输入 RS=L, R/W=H, E=H 输出 D0—D7=状态字 写指令 输入 RS=L, R/W=L, D0—D7=指令码, E=高脉冲 输出 无 读数据 输入 RS=H, R/W=H, E=H 输出 D0—D7=数据 写数据 输入 RS=H, R/W=L, D0—D7=数据, E=高脉冲 输出 无 25 液晶显示模块是一个慢显示器件,所以在执行每条指令之前一定要确认模块的忙标志为低电平,表示不忙,否则此指令失效。 要显示字符 时要先输入显示字符地址,也就是告诉模块在哪里显示字符,图 1057 是 1602 的内部显示地址。 4. 单片机各口的作用和用途 自行车里程 表 采用 AT89S52 单片机作控制,速度及里程传感器采用霍尔元件,其电路原理图如附录Ⅰ所示。 P0 口和 、 、 口用于 LCD1602 的显示刷新 ,第 12 脚外中断 0 用于对轮子圈数的计数输入,轮子每转一圈,霍尔传感器输出 二 个低电平。 口和 口用于 E2PROM 存储器 24C02 的存取控制。 P14 口 输出用于 控制蜂鸣器的 报警, 报警电路图如图 所示。 26 当当前速度小于设置的报警速度时 ,蜂鸣器不报警 ,L1 灯亮,当当前速度大于报警速度,蜂鸣器 滴滴报警 图 报警电路图 27 第 4 章 自行车里程 表 软件程序设计 概述 在硬件设计完毕之后,接下来就是设计中最核心和最为主要的软件部分设计。 所谓软件设计就是把软件需求变换成软件的具体设计方案(即模块结构) 的过程。 模块化结构设计即是根据要求和硬件设计的结构,将整个系统的功能分成许多小的功能模块,再根据这些小的功能模块进行程序编写的过程。 这样的设计方法,使得系统的整个功能和各部分的功能趋于明朗化。 当系统出现问题,就可以根据功能设置找出问题的根源,从而更快地解决问题。 所以说,在整个设计过程中,软件设计必须与硬件设计紧密地结合在一起。 基于霍尔传感器自行。
阅读剩余 0%
本站所有文章资讯、展示的图片素材等内容均为注册用户上传(部分报媒/平媒内容转载自网络合作媒体),仅供学习参考。 用户通过本站上传、发布的任何内容的知识产权归属用户或原始著作权人所有。如有侵犯您的版权,请联系我们反馈本站将在三个工作日内改正。