600字范文,内容丰富有趣,生活中的好帮手!
600字范文 > 基于STC89C52单片机的智能车控制系统设计

基于STC89C52单片机的智能车控制系统设计

时间:2020-05-17 19:54:55

相关推荐

基于STC89C52单片机的智能车控制系统设计

目 录

1系统概述 1

1.1设计目的和意义 1

1.2设计思路 2

1.3系统需求分析 2

1.3.1市场需求 2

1.3.2实现功能 2

1.4开发环境 3

1.5运行环境 3

2总体设计 4

2.1系统结构 4

2.1.1硬件电路设计 4

2.1.2软件程序设计 5

2.2模块功能设计 7

2.2.1驱动电源灯的电路设计 7

2.2.2蓝牙控制模块的电路设计 8

2.2.3人体传感器的电路设计 9

2.2.4数据传输模块的电路设计 10

2.2.5串口通信的电路设计 11

3运行设计 13

3.1 蓝牙无线通信程序设计 13

3.1.1蓝牙网络的建立 14

3.1.2网络设备组成与路由器程序 14

3.2核心传感器设计 16

3.3运行代码 18

4系统测试 22

4.1功能测试 22

4.1.1 蓝牙无线通信模块测试 22

4.1.2人体传感器的测试 22

4.1.3障碍电阻的测试 22

4.2稳定性测试 22

4.3安全性测试 23

参考文献 24

1.2 设计思路

基于STC89C52单片机控制的智能车控制系统设计,是一种以汽车电子为背景,涵盖智能控制、模式识别、传感技术、电子电气、计算机、机械等多学科的科技创意性设计,通过安装在小车内的各个传感器节点、红外感应、蓝牙控制模块等,能够实时的控制小车的智能控制、自动往返与避障等功能。设计主要功能:小车在各个传感器节点、红外感应等配合下,在通过蓝牙控制模块实行对小车的实时控制,可以对其指定行驶方向和快慢,达到人们的意愿行驶,同时保证安全有效。

1.3 系统需求分析

1.3.1市场需求

过去的智能车控制系统给予过现代家庭许多美好的想象,但它的市场始终不如人意,其中的原因是多方面的,功能华而不实且价格高昂,是它没有广泛市场的一个重要原因,其中交互性好的控制终端更是大大增加了成本,随着4G甚至5G网络在我国的迅速推广,使得随时随地的数据传输变成了一件方便快捷的事情,同时带动了智能终端的迅速普及,使得智能车控制系统的市场大大增加。智能策划控制系统由多重传感器、光敏电阻、模式识别、WiFi、控制设备、STC89C52单片机芯片、计算机控制系统软件、基于蓝牙控制模块的智能手机等组成。通过手动、自动等方式对智能车控制系统的自主、实施有效进行控制,调节智能车控制系统中的速度开关,自动往返,通过蓝牙控制模块技术实现对智能小车的控制。

1.3.2实现功能

(1)实时控制:对智能车进行任意时间和任意地点的控制,当人们无法操控小车而需要小车行进时,则可设置实时控制模式,起到实时控制的功能。

(2)感应控制:对狭窄空间、路面不平及交通拥堵等区域感应实时情况,实现借助传感器识别路面环境,由单片机控制行进,实现初步的无人控制。

(3)蓝牙控制:将具有智能控制功能的传感器组合在一起,根据不同时间、不同场景及应用者喜好轻松实现各种控制运行,并对智能车的速度和方向进行控制,既方便操作,又能随时达到想去的地方,满足智能车蓝牙控制需求。

(4)保护控制:当遇到特殊路段,或者特殊材料以及障碍物等等,小车控制系统能借助传感器识别路面环境,综合运用单片机技术、检测技术等,使小车避开或者停下等待。

1.4 开发环境

本系统采用STC89C52单片机进行软硬件总体设计。采用Keil C软件进行计算机对小车的主要编程。Keil C提供了包括编译器、宏汇编、连接器、库管理和一个功能强大的仿真调试器等在内的完整开发方案,通过一个集成开发环境将这些部份组合在一起。 Keil C工具包分别是C51 for Windows和for IOS的集成开发环境,可以完成编辑、编译、连接、调试、仿真等整个开发流程。进入Keil C软件共分为三部分,上方的菜单栏和工具栏,中间的代码编辑器,以及下方的调试信息栏和状态栏。本文转载自http://www.biyezuopin.vip/onews.asp?id=14689菜单栏包含了Keil C的全部功能选项。File菜单用于文件操作,如新建Sketch或打开实例;Edit菜单包含文本编辑和查找等功能;Sketch菜单包括编译和导入函数库选项;Tools菜单用于对目标板类型、编程器和串口进行选择和操作。

1.5 运行环境

硬件环境

硬件:STC89C52单片机,各类传感器,蓝牙控制模块,WiFi模块,手机

处理器:Intel Pentium4 1.7GHZ

2)软件环境

内存: 128M

硬盘空间:40G

操作系统:Windows 10,Android

网络协议:WiFi,TCP/IP

软件:Keil C,STC-ISP

3.3 运行代码人体传感器核心代码如下:int psensor=A5;//指定P模拟端口A5int LED=4;//指定LED端口4int val=0;//存储获取到的P数值void setup() {// put your setup code here, to run once:pinMode(psensor,INPUT);//设置p模拟端口为输入模式pinMode(LED,OUTPUT);//设置端口4为输出模式Serial.begin(9600);}void loop() {// put your main code here, to run repeatedly:val=analogRead(psensor);//读取A5的电压值并赋值到valSerial.println(val);//串口发送val值if(val>150)//判断P数值是否大于150{digitalWrite(LED,HIGH);}else{digitalWrite(LED,LOW);}}障碍传感器核心代码如下:int potpin=0;//定义模拟接口0 连接障碍电阻int ledpin=3;//定义数字接口3 输出PWM调节驱动灯亮度int vall=0;//定义变量valvoid setup(){pinMode(ledpin,OUTPUT);//定义数字接口3为输出Serial.begin(9600);//设置波特率为9600}void loop(){vall=analogRead(potpin);//读取传感器的模拟值并赋值给valSerial.println(vall);//显示val 变量数值analogWrite(ledpin,vall);// 打开驱动灯并设置电流(PWM 输出最大值255)delay(10);//延时0.01 秒}蓝牙模块通信核心代码如下:String comdata = ""; // 字符串缓冲区#include <SoftwareSerial.h>SoftwareSerial Serial1(7, 8);unsigned long lastDebounceTime = 0;int led = 2;void setup() {// put your setup code here, to run once:Serial.begin(115200);Serial1.begin(9600);pinMode(led, OUTPUT);}void loop() {// put your main code here, to run repeatedly:Serial1.println(F("AT"));if (Serial1.find("OK")) //healthy response{Serial.println("AT is OK");// return true;}else{Serial.println("AT is failed");//return false;}// Serial1.println(F("AT+UART=9600,8,1,0,0"));// if (Serial1.find("OK")) //healthy response// {// Serial.println("AT+UART=9600,8,1,0,0 is OK");// // return true;// }// else// {// Serial.println("AT+UART=9600,8,1,0,0 is failed");// //return false;// }//Serial1.begin(9600);delay(100);Serial1.print("AT+CWSAP=\"dofly_wifi\",\"\",1,0,4,0\r\n");delay(1000);if (Serial1.find("OK")) //healthy response{Serial.println("name config is OK");//return true;}else{Serial.println("name config is failed");// return false; }Serial1.println(F("AT+CIPMUX=1"));if (Serial1.find("OK")) //healthy response{Serial.println("AT+CIPMUX=1 is OK");//return true; }else{Serial.println("AT+CIPMUX=1 is failed");// return false; }Serial1.println(F("AT+CIPSERVER=1,8086"));delay(2);if (Serial1.find("OK")) //healthy response{Serial.println("AT+CIPSERVER=1,8086 is OK");//return true;}else{Serial.println("AT+CIPSERVER=1,8086 is failed");// return false;}while (1){if (Serial1.available()){while (Serial1.available() > 0){comdata += char(Serial1.read());delay(2);}Serial.println(comdata);if (comdata.startsWith("power_on", 11)){Serial.println("ON");digitalWrite(led, HIGH);}else if (comdata.startsWith("power_off", 11)){Serial.println("OFF");digitalWrite(led, LOW);}comdata = "";}}}

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。