基于STC89C51单片机智能小车控制文档格式.docx

上传人:b****2 文档编号:14530379 上传时间:2022-10-23 格式:DOCX 页数:28 大小:390.20KB
下载 相关 举报
基于STC89C51单片机智能小车控制文档格式.docx_第1页
第1页 / 共28页
基于STC89C51单片机智能小车控制文档格式.docx_第2页
第2页 / 共28页
基于STC89C51单片机智能小车控制文档格式.docx_第3页
第3页 / 共28页
基于STC89C51单片机智能小车控制文档格式.docx_第4页
第4页 / 共28页
基于STC89C51单片机智能小车控制文档格式.docx_第5页
第5页 / 共28页
点击查看更多>>
下载资源
资源描述

基于STC89C51单片机智能小车控制文档格式.docx

《基于STC89C51单片机智能小车控制文档格式.docx》由会员分享,可在线阅读,更多相关《基于STC89C51单片机智能小车控制文档格式.docx(28页珍藏版)》请在冰豆网上搜索。

基于STC89C51单片机智能小车控制文档格式.docx

两个电机按同一个方向转动。

(2)小车的反转:

两个电机按同一个方向反向转动。

(3)小车的左转和右转:

一个电机快速转动而另一个电机缓慢的转动。

1.3.1框图设计

基于STC89C51单片机智能小车的控制系统由电源电路、单片机主控电路、复位电路、晶振电路、车轮转轴驱动电路、按键电路等组成,框图组成如图1-1所示。

1.3.2知识点

本项目需要通过学习和查阅资料,了解和掌握一下知识。

•+5v电源原理及设计。

•单片机复位电路工作原理及设计。

•单片机晶振电路工作原理及设计。

•按键电路的设计。

•数码管的特性及其使用。

•STC89C51单片机的引脚图及其功能使用。

•L293D驱动器管脚及其功能使用。

•红外接收装置的使用。

•单片机C语言的及其设计。

1.4硬件设计

1.4.1电路原理图

(1)数码管显示电路原理图如图1-2所示。

图1-2数码管显示电路原理图

(2)智能小车车轮驱动电路原理图如图1-3所示。

L293D采用16引脚DIP封装,其内部集成了双极型H-桥电路,所有的开量都做成n型。

这种双极型脉冲调宽方式具有很多优点,如电流连续;

电机可四角限运行;

电机停止时有微振电流,起到“动力润滑”作用,消除正反向时的静摩擦死区:

低速平稳性好等。

L293D通过内部逻辑生成使能信号。

H-桥电路的输入量可以用来设置马达转动方向,使能信号可以用于脉宽调整(PWM)。

图1-3智能小车车轮驱动电路原理图

(3)LED指示灯原理图如图1-4所示。

图1-4LED指示灯原理图

(4)红外传感器寻线的原理图如图1-5所示。

图1-5红外传感器寻线的原理图

(5)红外传感避障原理图如图1-6所示。

图1-6红外避障原理图

综上所述,可以设计出STC89C51单片机控制智能小车的最小系统原理图如图1-7所示。

图1-7STC89C51单片机控制智能小车的最小系统原理图

1.4.2原件清单

基于STC89C51单片机智能小车控制系统的原件清单如表1-1所示。

表1-1基于STC89C51单片机智能小车控制系统的原件清单

原件名称

型号

数量

用途

单片机

电容

电解电容

电源VCC

直流电机

三极管

集成块

STC89C51

100uF

30pF

10uF/10V

+5v/1A

L293D

1个

4个

2个

若干

控制核心

晶振电路

复位电路

提供电源

车轮驱动

脉宽调整

晶振

电阻

发光二极管

数码管

蜂鸣器

电位器

11.0592MHZ

1KΩ

0.7V

共阴极

300Ω

直流电机驱动

指示灯

显示数字

数码管限流

1.4.3L293D驱动单片机的原理简介

如图2-6L293D采用16引脚DIP封装,其内部集成了双极型H-桥电路,所有的开量都做成n型。

另外,L293D将2个H-桥电路集成到1片芯片上,这就意味着用1片芯片可以同时控制2个电机。

每1个电机需要3个控制信号EN12、IN1、IN2,其中EN12是使能信号,IN1、IN2为电机转动方向控制信号,IN1、IN2分别为1,0时,电机正转,反之,电机反转。

选用一路PWM连接EN12引脚,通过调整PWM的占空比可以调整电机的转速。

选择一路I/O口,经反向器74HC14分别接IN1和IN2引脚,控制电机的正反转

1.4.4STC89C51单片机管脚图及其功能

(1)STC89C51管脚图如图1-8所示。

图1-8STC89C51管脚图

(2)STC89C51的管脚图功能

如图2-7为STC89C51的引脚功能图,其各个引脚功能概述如下:

VCC:

供电电压。

GND:

接地。

P0口:

P0口为一个8位漏级开路双向I/O口,每脚可吸收8TTL门电流。

当P1口的管脚第一次写1时,被定义为高阻输入。

P0能够用于外部程序数据存储器,它可以被定义为数据/地址的第八位。

在FIASH编程时,P0口作为原码输入口,当FIASH进行校验时,P0输出原码,此时P0外部必须被拉高。

P1口:

P1口是一个内部提供上拉电阻的8位双向I/O口,P1口缓冲器能接收输出4TTL门电流。

P1口管脚写入1后,被内部上拉为高,可用作输入,P1口被外部下拉为低电平时,将输出电流,这是由于内部上拉的缘故。

在FLASH编程和校验时,P1口作为第八位地址接收。

P2口:

P2口为一个内部上拉电阻的8位双向I/O口,P2口缓冲器可接收,输出4个TTL门电流,当P2口被写“1”时,其管脚被内部上拉电阻拉高,且作为输入。

并因此作为输入时,P2口的管脚被外部拉低,将输出电流。

这是由于内部上拉的缘故。

P2口当用于外部程序存储器或16位地址外部数据存储器进行存取时,P2口输出地址的高八位。

在给出地址“1”时,它利用内部上拉优势,当对外部八位地址数据存储器进行读写时,P2口输出其特殊功能寄存器的内容。

P2口在FLASH编程和校验时接收高八位地址信号和控制信号。

P3口:

P3口管脚是8个带内部上拉电阻的双向I/O口,可接收输出4个TTL门电流。

当P3口写入“1”后,它们被内部上拉为高电平,并用作输入。

作为输入,由于外部下拉为低电平,P3口将输出电流(ILL)这是由于上拉的缘故。

P3口也可作为AT89C51的一些特殊功能口,如下表所示:

口管脚备选功能

P3.0RXD(串行输入口)

P3.1TXD(串行输出口)

P3.2/INT0(外部中断0)

P3.3/INT1(外部中断1)

P3.4T0(记时器0外部输入)

P3.5T1(记时器1外部输入)

P3.6/WR(外部数据存储器写选通)

P3.7/RD(外部数据存储器读选通)

P3口同时为闪烁编程和编程校验接收一些控制信号。

RST:

复位输入。

当振荡器复位器件时,要保持RST脚两个机器周期的高电平时间。

ALE/PROG:

当访问外部存储器时,地址锁存允许的输出电平用于锁存地址的地位字节。

在FLASH编程期间,此引脚用于输入编程脉冲。

在平时,ALE端以不变的频率周期输出正脉冲信号,此频率为振荡器频率的1/6。

因此它可用作对外部输出的脉冲或用于定时目的。

然而要注意的是:

每当用作外部数据存储器时,将跳过一个ALE脉冲。

如想禁止ALE的输出可在SFR8EH地址上置0。

此时,ALE只有在执行MOVX,MOVC指令是ALE才起作用。

另外,该引脚被略微拉高。

如果微处理器在外部执行状态ALE禁止,置位无效。

/PSEN:

外部程序存储器的选通信号。

在由外部程序存储器取指期间,每个机器周期两次/PSEN有效。

但在访问外部数据存储器时,这两次有效的/PSEN信号出现。

/EA/VPP:

当/EA保持低电平时,则在此期间外部程序存储器(0000H-FFFFH),不管是否有内部程序存储器。

注意加密方式1时,/EA将内部锁定为RESET;

当/EA端保持高电平时,此间内部程序存储器。

在FLASH编程期间,此引脚也用于施加12V编程电源(VPP)。

XTAL1:

反向振荡放大器的输入及内部时钟工作电路的输入。

XTAL2:

来自反向振荡器的输出。

1.5软件设计

1.5.1程序流程图

智能小车控制流程图如图1-9所示。

1.5.2L293D驱动器管脚赋值表

L293D驱动器小车电机转动的管脚图赋值表如表1-2所示。

表1-2L293D驱动器小车电机转动的管脚图赋值表

状态

引脚

停止(K4)

左转(K0)

右转(K1)

前进(K2)

后退(K3)

Out1(P2.0)

1

Out2(P2.1)

Out3(P2.2)

Out4(P2.3)

1.5.3程序清单

相关软件程序清单如下:

(1)智能小车自动寻线软件清单如下:

#include<

reg52.h>

#defineucharunsignedchar

#defineuintunsignedint

sbitK1=P1^0;

sbitK2=P1^1;

sbitK3=P1^2;

sbitK4=P1^3;

sbitK5=P1^4;

sbitKIN1=P1^5;

sbitKIN2=P1^6;

sbitout1=P2^0;

sbitout2=P2^1;

sbitout3=P2^2;

sbitout4=P2^3;

voiddelay(uintt)//延时程序1

{

ucharj;

while(t--)

{for(j=5;

j>

0;

j--);

}

}

//左转

voidcomeleft()

{uchari;

out1=0;

out2=0;

out3=1;

out4=0;

for(i=0;

i<

10;

i++)

{

out1=!

out1;

delay

(1);

}

//左微转

voidsleft()

5;

//右微转

voidsright()

{uchari;

out1=1;

out3=0;

out3=!

out3;

//右转

voidcomeright()

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 医药卫生 > 基础医学

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1