1、基于单片机的自动往返小车 I 基于单片机的自动往返小车 摘要 : 本设计以一片单片机 STC89C52 作为核心来控制自动往返小车, 其中 控制芯片 L298N和单片机联合控制小车的前进与后退。路面的黑带检测使用反射式红外传感器, 并 通过 STC89C52 对输入的 信号进行处理; 行驶距离使用霍尔元件进行检测。 最后 以动态显示的形式通过一个 LCD 液晶 显示即时 黑带个数,运行时间,实时路程等 。 关键词 : 微控制器 L298N电机控制 霍尔检测 液晶 显示 The Automatic round-trip car based on SCM Abstract: This design
2、 use a microcontroller STC89C52 as the core to control the automatic round-trip car, the control chip L298N and single chip microcomputer to control the car forward and backward together. The reflective infrared sensor detection the black belt on the road surface, then deal with input signal process
3、ing through the STC89C52. Using the hall element to test the distance. At last displaying instant black belt, running time, real-time distance, etc through a number of LCD liquid crystal in the form of dynamic display Keywords: MCU L298N Motor control Hall detection LED display 基于单片机的 自动 往返小车 1 目录 摘
4、要 . I 关键字 . I Abstract . I Keywords . I 0绪论 . 2 1.1 设计任务 . 3 1.2方案介绍 . 4 2.1 系统元器件的选择与介绍 . 5 2.1.1 STC89C52R芯片 . 5 2.1.2 L298N 芯片 . 11 2.1.3霍耳传感器( HD3020) . 14 2.1.4液晶 LCD. 15 2.2电路模块的设计 . 18 2.2.1检测系统 . 18 2.2.2距离计算系统 . 19 2.2.3显示系统 . 20 2.2.4电机驱动以及正反转控制模块 . 20 3.1主程序 . 21 3.2中断程序 . 22 3.2.1外部中断 0.
5、 22 3.2.2外部中断 1. 23 3.2.3定时器中断 0. 24 3.2.4定时器中断 1. 24 4总结 . 21 致谢 . 21 参考文献 . 21 附录 . 21 基于单片机的 自动 往返小车 2 0 绪论 当今社会,随着科技发展的日新月异,特别是计算机技术突飞猛进的发展,计算机技术带来了科研和生产的许多重大飞跃,同时计算机也越来越广泛的被应用到人们的生活、工作领域的各个方面。单片微型计算机以其其体 积小、功能强、速度快、价格低等优点,在数据处理和实时控制等应用中有着无以伦比的优越性,可广泛地嵌入到如玩具、家用电器、机器人、仪器仪表、汽车电子系统、工业控制单元、办公自动化设备、金
6、融电子系统、舰船、个人信息终端及通讯产品中。随着微控制技术(以软件代硬件的高性能控制技术)的日益完善和发展,单片机的应用必将导致传统控制技术发生巨大的变化。单片微型计算机的应用广度和深度,已经成为一个国家科技水平的一项重要标志。 此论文的题目是自动往返小汽车。要求设计一个能自动往返于起跑线与终点线间的小汽车。车辆从起跑线出发到达 终点线后停留 10 秒,然后自动返回起跑线。在要求的跑道范围内完成快行、慢行、停车等功能。停车后自动显示一次往返的时间和路程。基于上述要求将设计分为以下几个模块: STC89C52RC、电机驱动、电机调速、里程检测、跑道标志检测、 液晶 显示模块。控制系统采用STC8
7、9C52RC 单片机;显示系统采用 液晶 显示里程数 和 时间;电机正反转采用桥式驱动控制, 2档电压调速;里程记录采用霍尔传感器;跑道标志线采用光敏管检测;单片机、电机采用独立稳压电源供电。 本论文将详细介绍硬件设计和软件设计的思路及方法。由于本人在单片机的设计方 面还存在一些不足,在论文的写作和论证上尚存在一些不足之处,敬请各位老师批评指正。 基于单片机的 自动 往返小车 3 1 设计任务及方案介绍 1.1 设计任务 设计并制作一个能自动往返于起跑线与终点线间的小汽车。 跑道宽度 0.5m,表面贴有白纸, 和黑带 。在跑道的 B、 C、 D、 E、 F、 G各点处画有 2cm 宽的黑线,各
8、段的长度如图 1-1所示。 车辆从起跑线出发到达终点线后停留 10 秒,然后自动返回起跑线。 D E间为限速区,车辆往返均要求以低速通过,通过时间不得少于 8秒,但不允许在限速区内停车。 跑道顶视图如图 1.1。 图 1.1 跑道顶视图 (一 )基本要求 (a)车辆从起跑线出发(出发前,车体不得超出起跑线),到达终点线后停留 10秒,然后自动返回起跑线(允许倒车返回)。往返一次的时间应力求最短(从合上汽车电源开关开始计时)。 (b)到达终点线和返回起跑线时,停车位置离起跑线和终点线偏差应最小(以车辆中心点与终点线或起跑线中心线之间距离作为偏差的测量值)。 (c)D E间为限速区,车辆往返均要求
9、以低速通过,通过时间不得少于 8秒, 但不允许在限速区内停车。 基于单片机的 自动 往返小车 4 1.2 方案 介绍 设计 采用单片机 STC89C52RC作为系统的控制中心。电机电路采用两对互补三极管控制电机的驱动 ;检测电路采用光敏管来控制小车的快行 ,慢行 ,停止 ;用液晶 实现对指定行程和所用时间的显示。 方案方框图 如 1.2所示。 图 1.2方案 方框图 里程检测 STC89C52RC 液晶显示 电机驱动 电机调速 跑道标志检测 基于单片机的 自动 往返小车 5 2. 系统的硬件设计与实现 2.1 系统元器件的选择与介绍 下面介绍 STC89C52RC芯片、 L298N芯片、霍尔传
10、感器、液晶等器件。 2.1.1 STC89C52R 芯片 STC89C52 是一种带 8K 字节闪烁可编程可檫 除只读存储器( FPEROM-Flash Programable and Erasable Read Only Memory )的低电压,高性能 COMOS8 的微处理器,俗称单片机。该器件采用 ATMEL 搞密度非易失存储器制造技术制造,与工业标准的 MCS-51指令集和输出管脚相兼容。 单片机总控制电路如下图 2.1: 图 2.1单片机总控制电路 基于单片机的 自动 往返小车 6 1.时钟电路 STC89C52内部有一个用于构成振荡器的高增益反相放大器,引脚 RXD和 TXD分别
11、是此放大器的输入端和输出端。时钟可以由内部方式产生或外部方式产生。内部方 式的时钟电路如图 2.2 (a) 所示,在 RXD 和 TXD 引脚上外接定时元件,内部振荡器就产生自激振荡。定时元件通常采用石英晶体和电容组成的并联谐振回路。晶体振荡频率可以在 1.2 12MHz之间选择,电容值在 5 30pF 之间选择,电容值的大小可对频率起微调的作用。 外部方式的时钟电路如图 2.2( b) 所示, RXD 接地, TXD接外部振荡器。对外部振荡信号无特殊要求,只要求保证脉冲宽度,一般采用频率低于 12MHz的方波信号。片内时钟发生器把振荡频率两分频,产生一个两相时钟 P1 和 P2,供单片机使用
12、。 示, RXD 接地, TXD 接外部振荡器。对外部振荡信号无特殊要求,只要求保证脉冲宽度,一般采用频率低于 12MHz的方波信号。片内时钟发生器把振荡频率两分频,产生一个两相时钟 P1和 P2,供单片机使用。 RXD 接地, TXD 接外部振荡器。对外部振荡信号无特殊要求,只要求保证脉冲宽度,一般采用频率低于 12MHz的方波信号。片内时钟发生器把振荡频率两分频,产生一个两相时钟 P1和 P2,供单片机使用。 ( a)内部方式时钟电路 ( b)外部方式时钟电路 图 2.2时钟电路 基于单片机的 自动 往返小车 7 2.复位及复位电路 ( 1)复位操作 复位是单片机的初始化操作。其主要功能是
13、把 PC 初始化为 0000H,使单片机从 0000H单元开始执行程序。除了进入系统的正常初始化之外,当由于程序运行出错或操作错误使系统处于死锁状态时,为摆脱困境,也需按复位键重新启动。 除 PC之外,复位操作还对其他一些寄存器有影响,它们的复位状态如表 2.1所示。 表 2.1 一些寄存器的复位状态 寄存器 复位状态 寄存器 复位状态 PC 0000H TCON 00H ACC 00H TL0 00H PSW 00H TH0 00H SP 07H TL1 00H DPTR 0000H TH1 00H P0-P3 FFH SCON 00H IP XX000000B SBUF 不定 IE 0X0
14、00000B PCON 0XXX0000B TMOD 00H ( 2)复位信号及其产生 RST引脚是复位信号的输入端。复位信号是高电平有效,其有效时间应持续24个 振荡周期 (即二个机器周期 )以上。若使用颇率为 6MHz的晶振,则复位信号持续时间应超过 4us 才能完成复位操作。 基于单片机的 自动 往返小车 8 产生复位信号的电路逻辑如图 2.3所示: 图 2.3复位信号的电路逻辑图 整个复位电路包括芯片内、外两部分。外部电路产生的复位信号 (RST)送至施密特触发器,再由片内复位电路在每个机器周期的 S5P2 时刻对施密特触发器的输出进行采样,然后才得到内部复位操作所需要的信号。 复位操
15、作有上电自动复位相按键手动复位两种方式。 上电自动复位是通过外部复位电路的电容充电来实现的,其电路如图 2.4( a) 所示。这 佯,只要电源 Vcc 的上升时间不超过 1ms,就可以实现自动上电复位,即接通电源就成了系统的复位初始化。 按键手动复位有电平方式和脉冲方式两种。其中,按键电平复位是通过使复位端经电阻与 Vcc 电源接通而实现的,其电路如图 2.4( b) 所示;而按键脉冲复位则是利用 RC微分电路产生的正脉冲来实现的, 其电路如图 2.4( c)所示: 基于单片机的 自动 往返小车 9 ( a)上电复位 ( b)按键电平复位 ( c)按键脉冲复位 图 2.4复位电路 上述电路图中
16、的电阻、电容参数适用于 6MHz 晶振,能保证复位信号高电平持续时间大于 2个机器周 期。 本系统的复位电路采用图 2.4( b) 上电复位方式。 STC89C52具体介绍如下: 主电源引脚( 2 根) VCC(Pin40):电源输入,接 5V电源 GND(Pin20):接地线 外接晶振引脚( 2 根) XTAL1(Pin19):片内振荡电路的输入端 XTAL2(Pin20):片内振荡电路的输出端 控制引脚( 4根) RST/VPP(Pin9):复位引脚,引脚上出现 2 个机器周期的高电平将使单片机复位。 ALE/PROG(Pin30):地址锁存允许信号 PSEN(Pin29):外部存储器读选通信号 EA/VPP(Pin31):程序存储器的内外部选通,接低电平从外部程序存储器读指