基于单片机的红外遥控智能小车报告大学本科毕业论文 下载本文

基于单片机的红外遥控小车

每当访问外部数据存储器时将跳过一个ALE脉冲。对FLASH存储器编程期间,该引脚还用于输入编程脉冲(PROG)。

PSEN——程序储存允许(PSEN)输出是外部程序存储器的读选通信号,当AT89C52由外部程序存储器取指令(或数据)时,每个机器周期两次PSEN有效,即输出两个脉冲,在此期间当访问外部数据存储器,将跳过两次PSEN信号。

EA/VPP——外部访问允许,欲使CPU仅访问外部程序存储器(地址为0000H-FFFFH),EA端必须保持低电平(接地)。需注意的是:如果加密位LB1被编程,复位时内部会锁存EA端状态。如EA端为高电平(接Vcc端),CPU则执行内部程序存储器的指令。FLASH存储器编程时,该引脚加上+12V的编程允许电源Vpp,当然这必须是该器件是使用12V编程电压Vpp。

表2 AT89S52 P3口特殊功能

引脚号 P3.0 P3.1 P3.2 P3.3 P3.4 P3.5 P3.6 P3.7 第二功能 RXD(串行输入口) TXD(串行输出口) INTO(外中断0) INT1(外中断1) TO(定时/计数器0) T1(定时/计数器1) WR(外部数据存储器写选通) RD(外部数据存储器读选通) 2.1.2 定时器/计数器2

定时器/计数器2是一个16位定时器/计数器,是定时器或外部事件计数器。定时器2有三种操作方式:捕获方式、自动重装方式和波特速率发生器方式。工作方式由T2CON的控制位选择。 1 定时器/计数器2控制寄存器T2CON

T2CON可位寻址,地址为0C8H。其各位定义如表3所示。

表3 T2CON位定义

位 序 位标志 位地址 D7 TF2 CF D6 EXF2 CEH D5 RCLK CDH D4 TCLK CCH D3 EXEN2 CBH D2 TR2 CAH D1 C/T2 C9H D0 CP/RL2 C8H TF2: 定时器/计数器2溢出标志位。当定时器/计数器2溢出时,TF2置1,TF2置位后只能用软件清除。

当RCLK=1或TCLK=1时,TF2将不被置位。 EXF2: 在捕捉/重装模式下,T2的外部触发标志。

第4页

基于单片机的红外遥控小车

当EXEN2=1时,引脚T2EX/P1.1的负跳变,使EXF2=1,并产生T2中断。EXF2只能用软件清除。当DCEN=1时,T2处于向上/向下计数模式,EXF2部引起中断。

RCLK: 接收时钟允许。

当RCLK=1时,T2的溢出脉冲可作为串行口方式1和方式3的接收时钟; 当RCLK=0时,T1的溢出脉冲将作为串行接收时钟。 TCLK: 发送时钟允许。

当TCLK=1时,T2的溢出脉冲可作为串行口方式1和方式3的发送时钟; 当TCLK=0时,T1的溢出脉冲将作为串行发送时钟。 EXEN2:T2外部允许。

当EXEN2=1时,T2EX的负跳变引起T2捕捉或重装,此时T2不能用做串行口的串行时钟。

当EXEN2=0时,T2EX的负跳变将不起作用。 TR2:T2启动控制位。

当TR2=1时,启动T2;TR2=0时,停止T2。 C/T2: 定时器/计数器2工作方式选择位。

C/ T2=0,为定时工作方式;C/ T2=1,为计数工作方式。 CP/RL2:T2捕捉/重装功能选择位。

当CP/ RL2=1且EXEN2=1时,引脚T2EX/P1.1的负跳变引起捕捉操作。 当CP/ RL2=0且EXEN2=1时,引脚T2EX/P1.1的负跳变引起自动重装操作。 当CP/ RL2=0且EXEN2=1时,T2溢出将引起捕捉自动重装操作。 2 定时器/计数器2模式寄存器T2MOD

表4 T2MON位定义

位 序 位标志 D7 — D6 — D5 — D4 — D3 — D2 — D1 T2OE D0 DCEN T2MOD不可位寻址,地址为0C9H。其各位定义如表4所示。 T2OE:定时器2输出允许位。

当T2OE=1时,允许时钟输出至引脚T2/P1.0; 当T2OE=0时,禁止引脚T2/P1.0输出。

第5页

基于单片机的红外遥控小车

DCEN:计数器方向控制。 当DCEN=0时,T2自动向上计数;

当DCEN=1时,T2向上/向下计数方式,由引脚T2EX状态决定计数方向。 3 定时器/计数器2操作方式选择见表5

表5 定时器/计数器2操作模式

C/ T2 X X X X X RCLK+TCLK 0 0 1 1 X CP/ RL2 0 1 X X X T2OE 0 0 X 1 X TR2 1 1 1 1 0 模 式 16位自动重装模式 16位捕捉模式 波特率发生器模式 时钟输出模式 T2停止 2.1.3 单片机最小系统

单片机最小系统包括振荡电路和复位电路,见图2-2所示。晶振采用12M晶振,指令周期为1us,复位电路采用上电复位和手动按键复位。

图2-2 单片机最小系统

2.2 液晶显示

液晶显示在电子产品设计中使用率相当高,普通的七段数码管显示器只能显示数字,若遇到要显示英文字符时,则一定会选择使用液晶显示器我们所用的LCD模块,其背面含有控制电路,其上面有专门的IC来完成LCD的动作控制,在自行设计的接口中,只要送入适当的命令码和欲显示的数据,LCD便会将字符显示出来,控制方法非常简单。

第6页

基于单片机的红外遥控小车

其基本特性如下:

A.容易和4Bit/8Bit MPU相连; B.可选择5×7或5×10点阵字符; C.显示数据RAM容量:80×8Bit (80字符);

D.字符发生器ROM能提供用户所需字符库或标准库; 字库容量:192个字符(5×7点字型); 32个字符(5×10点字型); E.DDRAM和CGRAM都能从MCU读取数据; 2.2.1 1602LCD接口引脚说明

一般市售的LCD都有统一的引脚,共有16个引脚,其外观如图2-3所示,其中有8个是数据引脚、3个控制引脚、5个接地和电源脚。各引脚号及其功能如表6所示。

表6 1602LCD引脚说明

引脚号 1 2 3 4 5 6 7 8 符号 Vss Vdd V0 RS R/W E DB0 DB1 引脚说明 电源地 电源正极 液晶驱动电源 数据/命令选择端 读/写操作选择端 使能信号 数据总线(LSB) 数据总线 引脚号 9 10 11 12 13 14 15 16 符号 DB2 DB3 DB4 DB5 DB6 DB7 LEDA LEDK 引脚说明 数据总线 数据总线 数据总线 数据总线 数据总线 数据总线(MSB) 背光+5V 背光地

图2-3 1602LCD外观

2.2.2 LCD的控制方法

通过单片机来控制LCD模块,方法十分简单,LCD模块其内部可以看成有两组寄存器,一个为指令寄存器,一个为数据寄存器,由RS引脚来控制。所有对指令寄存器或数据寄存器的存取均需检查LCD内部的忙碌标志(busy flag),此

第7页

基于单片机的红外遥控小车

标志用来告知LCD内部正在工作,当此位为0时,才可以写入指令或数据。

1602模块的设定,读写,与光标控制都是通过指令来完成,共有11条指令,如表7所示。

表7 1602LCD指令码

RS R/W 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 1 0 1 1 D7 D6 D5 D4 D3 D2 D1 D0 功 能 0 0 0 0 0 0 0 1 清屏 0 0 0 0 0 0 1 * 复位 0 0 0 0 0 1 I/D S 内部方式设置 0 0 0 0 1 D C B 显示开关控制 0 0 0 1 S/C R/L * * 位移控制 0 0 1 DL N F * * 系统方式设置 0 1 A5 A4 A3 A2 A1 A0 CGRAM 地址设置 1 A6 A5 A4 A3 A2 A1 A0 显示地址设置 BF AC6 AC5 AC4 AC3 AC2 AC1 AC0 忙状态检测 数 据(写) MCU-LCDRAM 数 据(读) LCDRAM-MCU 具体描述如下:

指令1:清显示,光标复位到地址00H位置。 指令2:光标复位,光标返回到地址00H。

指令3:光标和显示模式设置 I/D:光标移动方向,高电平右移,低电平左移,S:屏幕上所有文字是否左移或者右移。高电平表示有效,低电平则无效。

指令4:显示开关控制。 D:控制整体显示的开与关,高电平表示开显示,低电平表示关显示 C:控制光标的开与关,高电平表示有光标,低电平表示无光标 B:控制光标是否闪烁,高电平闪烁,低电平不闪烁。

指令5:光标或显示移位 S/C:高电平时移动显示的文字,低电平时移动光标。R/L,高向左,低向右。

指令6:功能设置命令 DL:高电平时为4位总线,低电平时为8位总线 N:低电平时为单行显示,高电

平时双行显示 F: 低电平时显示5x7的点阵字符,高电平时显示5x10的点阵字符(有些模块是 DL:高电平时为8位总线,低电平时为4位总线)。

指令7:字符发生器RAM地址设置,地址:字符地址*8+字符行数 (将一个字符分成5*8点阵,一次写入一行,8行就组成一个字符) 。

指令8:置显示地址,第一行为:00H——0FH,第二行为:40H——4FH。

第8页