wifi智能小车控制程序

合集下载

无线智能遥控小车--电子设计实验报告

无线智能遥控小车--电子设计实验报告

****************大学班级:****** 作者:******指导老师:****电 子设 计 之无线遥控智能小车1引言1.1编写目的本概要设计说明书是针对电子设计的课程要求而编写。

目的是对该项目进行总体设计,在明确系统需求的基础上划分系统的功能模块,进行系统开发的分工,明确各模块的接口,为进行后面的详细设计和实现做准备。

满足无线遥控爱好者对智能小车的设计要求,想通过这份概要设计给爱好者一个好的设计思路,设计方法进行参考。

本概要设计说明书的预期读者为本项目小组成员以及无线遥控爱好者。

1.2背景a.实践题目的名称:无线遥控智能小车b.项目的任务提出者:***,***,***c.项目的开发者:***,***,***d.面向用户:所有无线遥控爱好者,对智能小车感兴趣,想借此提高动手能力的用户。

鉴于电子设计课程要求,需要一份设计实品,加之小组成员对智能小车有着独特的爱好,所以这次设计选择了遥控智能小车作为电子设计的题目。

2总体设计2.1需求规定●所设计智能小车功能:主要功能:无线遥控,避障;附加功能:超声波测距、速度调节、液晶显示、音乐、流水灯和散热系统。

★通过无线串口对小车进行无线遥控,可以在遥控,避障这两个主要功能之间自由切换。

★遥控时,通过遥控器上的按钮可以方便灵活地控制小车前进,后退,左转和右转等。

★避障时,利用红外传感器探测障碍物,从而达到避障的目的。

●小车安装了超声波传感器,可以进行距离测量,如果距离过近,蜂鸣器发出警报,并将距离等数据实时传到液晶屏上显示。

★通过按钮同时控制一些其他功能,如音乐,风扇和流水灯等。

2.2运行环境最好是室内平地2.3基本设计概念和处理流程整体框图:2.4所需器件★小车模型(三轮,带电机)★ATMAGE16单片机最小系统(3个,小车上两个一个负责接受无线,控制电机,另外一个则是负责其他功能,最后一个遥控器上的)★直流电机驱动模块,采用两个LM298驱动模块分别控制两个电机★传感器模块,采用红外传感器2个,超声波传感器两个★无线串口模块★电源模块(5v,12v)★按键模块,用于无线遥控小车★LCD1602液晶一块★电机一个★蜂鸣器一个★锂电池一块★南孚电池若干节★发光二级管若干★键盘(8个按钮)3接口设计3.1用户接口小车主要有避障和遥控两种模式,通过控制小车上的一个模式选择开关,手动遥控时自动模式无效,同样小车处于自动状态时,手动遥控无效。

智能小车wifi模块原理

智能小车wifi模块原理

智能小车wifi模块原理
智能小车的WiFi模块是用于实现无线通信的设备。

它基于无
线局域网(WiFi)技术,可以连接到无线网络并与其他设备
进行数据传输。

WiFi模块的原理如下:
1. 硬件:WiFi模块通常由芯片、天线和其他相关电路组成。

芯片是实现WiFi功能的核心部件,它包括无线电频率收发器、调制解调器、处理器和存储器等。

天线用来发送和接收无线信号。

2. 驱动程序:WiFi模块需要一个驱动程序来控制其硬件功能。

驱动程序负责管理无线电频率、调制解调、数据传输、网络连接等操作。

3. 协议:WiFi模块支持多种网络协议,如TCP/IP。

这些协议
定义了设备之间的通信规则和数据格式,以确保数据的可靠传输和正确解读。

4. 无线网络连接:WiFi模块可以连接到无线路由器或其他
WiFi设备,以实现与局域网或互联网的连接。

它使用可用的WiFi频段与路由器进行通信,并通过路由器与其他设备进行
数据传输。

5. 数据传输:WiFi模块可以通过WiFi网络传输各种类型的数据,包括文本、图像、视频等。

它可以通过无线网络将数据发
送到其他设备,或接收其他设备发送的数据。

总之,智能小车的WiFi模块利用无线局域网技术,通过硬件、驱动程序和协议来实现无线通信功能,连接到无线网络,并与其他设备进行数据传输。

手机WiFi智能小车

手机WiFi智能小车
手机WiFi智能小车
目录
项目介绍 硬件设计 软件设计 测试结果
手机WiFi智能小车
现在是一个智能化的时代,各种智能化设 备正在逐步替代人为的操作。随着汽车工 业的迅速发展,关于智能汽车的研究也就 越来越受人关注。而且,智能手机的普及 与发展,更使得WiFi一词深入人心。 在这里我们用最基本的51单片机为核心 来实现WiFi信号对智能系统
L298N电机驱动模块
软件设计
52单片机最小系统原 理图
L2987N驱动原理图
调试结果
系统联调
硬件调试
实现 功能
软件调试
硬件调试
在每个元件在没焊上去时,先用万用表检测,它们是不是都 正常的,像LED灯,有些可能是有损坏的。单片机最小系统 的焊接相对于驱动电路的焊接比较容易,以为在实训中多次 焊接过该电路,但我还是很细心的按电路设计流程,画原理 图、焊接电路、检测电路到通电测试。完成了该最小系统的 设计。该设计过程中,要注意谐振电容的选择,焊接前一定 要对该电容进行检测,确保谐振电容完好,否则将导致晶振 不起振,单片机无法正常工作,振荡器输入分别由引脚18和 引脚19来完成振荡部分。51单片机的一个机器周期含有6个 状态周期,而每个状态周期为2个振荡器周期,因此一个机器 周期共有12个振荡周期,12MHz的振荡频率,一个振荡器周 期为1/12微秒,一个机器周期为1微秒。
软件调试
软件调试是制作该课题一个难点,在 调试采用分模块调试,首先调试光电 避障模块位置以达到最佳效果,其次 开始调试驱动模块,该模块是该课题 的核心。
系统联调
将硬件调试和软件调试相结合,在电路原理 图上先检测电路有没有短接,断路现象,可 以用万用表检测电路中的电流、电压是否符 合。上电后,观察各个电源指示灯是否正常 ,用万用表检测各个主要测试点,看各个测 试点电压是否正常。正常后,将所编写的程 序烧入单片机最小系统中,进行系统联调将 ,看是否能够达到预期效果。

基于51单片机WiFi智能小车制作

基于51单片机WiFi智能小车制作

基于51单片机WiFi智能小车制作基于51单片机WiFi智能小车制作一、基本原理51单片机WiFi智能小车是利用PC或手机作为控制端,通过手机连接wifi模块(路由器)以获得wifi信号,同时车载也连接wifi模块以获得和手机相同的IP地址,实现手机和小车的连接,然后利用PC或手机上的控制软件以wifi网络信号为载体发送相关信号,wifi模块接收PC 或手机端发送来的相关信号并分析转换成TTL 电平信号,然后发送给单片机,单片机接收到的电平信号处理、分析、计算,转化成控制指令并发送给电机驱动模块以实现小车的前进、后退、左拐、右拐等功能。

二、购买所需材料了解51单片机WiFi智能小车基本原理后,需要购买所需材料进行制作。

下面列出所需制作材料:序号材料备注图例6 小车底盘7 摄像头 根据固件支持摄像头购买8 电源根据自己需要购买种类9 杜邦线及小配件制作所需工具:序号工具名备注图例称1 电烙铁一套 包括松香焊锡2 螺丝刀 平口、十字等3 微型电钻 可以自制4手工刀5 剪刀6 万用表7 热熔胶枪或快干胶8US B下载器三、开始制作1、制作流程开始制作前,我们首先需要看购买路由器的型号,笔者采用的是703n 路由器,所以需要引出ttl 线。

总体步骤为:路由器引TTL 线→路由器刷OpenWrt 固件→制作51单片机最小系统→下载下位机程序到51单片机→安装上位机程序至PC 或手机→测试上、下位机通信→组装→调试完成。

2、路由器引ttl线首先打开703n路由器,按照下图标示位置焊接ttl线。

注意:1、焊接的时候要小心焊接,焊好后微拉下查看松紧2、焊接最好采用软线焊接,防止意外整块拉掉焊点3、焊好后一定用胶固定,最好采用热熔胶下图为引好ttl线样子3 刷OpenWrt固件何为OpenWrt固件,OpenWrt可以被描述为一个嵌入式的Linux 发行版,(主流路由器固件有dd-wrt,tomato,openwrt三类)而不是试图建立一个单一的,静态的系统。

智能小车源代码

智能小车源代码

include<>include <>xe”软件上(de)数据设置/define leftdata 0x11define rightdata 0x22define forwarddata 0x33define backdata 0x44define stopdata 0x55define uchar unsigned chardefine uint unsigned intunsigned char receiveData,high_velosity,low_velosity; void UsartConfiguration();/电机端口定义/sbit IN1=P1^0; //为高电平时,左电机后转sbit IN2=P1^1; //为高电平时,左电机正转sbit IN3=P1^2; //为高电平时,右电机正转sbit IN4=P1^3; //为高电平时,右电机后转/无线遥控模块定义/sbit Key_A = P2^0; //B键信号端对应D0sbit Key_B = P2^1; //D键信号端对应D1 sbit Key_C = P2^2; //C键信号端对应D2sbit Key_D = P2^3; //C键信号端void delay0(int a);void delay15us(void);void delay1ms(int z);void di(); //蜂鸣器函数声明unsigned int time;//用于存放定时器时间值unsigned int S; //用于存放距离(de)值char flag =0; //量程溢出标志位char f1,f2,f3,f4,n0;int a;int n;//运行次数判断标志int s_left,s_right;void Delay10us(unsigned char i){unsigned char j;do{j = 10;do{_nop_();}while(--j);}while(--i);}///电机程序/ //void loop(){IN1=1; //左电机IN2=0;IN3=1; //右电机IN4=0;}void runfront(){IN1=1; //左电机IN2=0;IN3=0; //右电机IN4=1;}//小车后退函数void runback(){IN1=0; //左电机 IN2=1;IN3=1; //右电机 IN4=0;}//小车左转void runleft(){IN1=0; //左电机 IN2=0;IN3=0; //右电机 IN4=1;}//小车右转void runright(){IN1=1; //左电机 IN2=0;IN3=0; //右电机 IN4=0;}////小车左后转//void runbackleft() //{// IN1=0; //左电机// IN2=0;// IN3=0; //右电机// IN4=1;//}////小车右后转//void runbackright() //{// IN1=1; //左电机// IN2=0;// IN3=0; //右电机// IN4=0;//}//小车停止函数void stop(){IN1=0; //左电机IN2=0;IN3=0; //右电机IN4=0;}///蓝牙程序///void delay(unsigned int a){unsigned int b;for(;a>0;a--)for(b=3;b>0;b--);}//左电机转void left_motor_runfront(unsigned int a) {IN1=1; //左电机IN2=0;delay(a);IN1=0;IN2=0;delay(100-a);}void right_motor_runfront(unsigned int a){IN3=0; //右电机IN4=1;delay(a);IN3=0;IN4=0;delay(100-a);}void left_motor_back(unsigned int a) {IN1=0; //左电机IN2=1;delay(a);IN1=0;IN2=0;delay(100-a);}void right_motor_back(unsigned int a) {IN3=1; //右电机IN4=0;delay(a);IN3=0;IN4=0;delay(100-a);}void left_motor_stop(){IN1=0; //左电机IN2=0;}void right_motor_stop(){IN3=0; //左电机IN4=0;}//PWM调速void PWM_RUNFRONT(unsigned int a,unsigned int b) //a属于0~100{left_motor_runfront(a);right_motor_runfront(b);}void PWM_RUNBACK(unsigned int a,unsigned int b) //a属于0~100{left_motor_back(a);right_motor_back(b);}void PWM_RUNLEFT(unsigned int a) //a属于0~100{right_motor_runfront(a);left_motor_stop();}void PWM_RUNRIGHT(unsigned int a) //a属于0~100{right_motor_stop();left_motor_runfront(a);}void bluestop(){left_motor_stop() ;right_motor_stop() ;}void UsartConfiguration(){SCON=0X50; //设置为工作方式1TMOD=TMOD|0x21; //设置计数器工作方式2PCON=0X80; //波特率加倍TH1=0XFA; //计数器初始值设置,注意波特率是4800(de) TL1=0XFA;ES=1; //打开接收中断EA=1; //打开总中断TR1=1;TH0=0;TL0=0;ET0=1; //打开计数器}/函数名 :Delay(unsigned int i)函数功能 : 延时函数输入 : 无输出 : 无void Usart() interrupt 4{receiveData=SBUF;//出去接收到(de)数据RI = 0;//清除接收中断标志位if(receiveData==0x66){low_velosity=1;high_velosity=0;// write_com(0x80);}if(receiveData==0x77){low_velosity=0;high_velosity=1;}}///舵机程序/void delayx(int t){char j;for(;t>0;t--)for(j=19;j>0;j--);}void degree0(){int i;for(i=0;i<10;i++){PWM=1;delayx(10);//1msPWM=0;delayx(390);//19ms }}void degree90(){int i;for(i=0;i<10;i++)PWM=1;delayx(24);//50PWM=0;delayx(376);//}}void degree180(){int i;for(i=0;i<15;i++){PWM=1;delayx(40);//PWM=0;delayx(360);//}}///超声波程序/ ///A键被按下后,前进/void Count1(void){time=TH1256+TL1;TH1=0;TL1=0;S=(time/100;n++;if(S<=30&&n==1){led1=0;stop();degree0();di();}if(S>30&&n==1){led1=1;runfront();n=0;}if(n==2){s_left=S;degree180();di();}if(n==3){s_right=S;degree90();di();n=0; //标志位清零if(s_left>s_right){led2=1;delay1ms(50);led2=0;delay1ms(50);runright();delayx(1250);}else{led3=1;delay(800);led3=0;delay(500);runleft();delayx(1250);}}}/超声波高电平脉冲宽度计算程序/void Timer_Count(void){TR1=1; //开启计数while(RX); //当RX为1计数并等待TR1=0; //关闭计数//Count1(); //计算}//void StartModule() //启动模块{TX=1; //启动一次模块 Delay10us(2);TX=0;}///主程序///void main(void){UsartConfiguration();while(1){if(k1==0&&n0==0){delay1ms(20);if(k1==0){n0++;}}else if(k1==0&&n0==1){delay1ms(20);if(k1==0){n0--;}if(n0==0){if(Key_B==0&&Key_D==0&&Key_C==0&&Key_A==1) //A键被按下{f1=1;f2=0;f3=0;f4=0;di();}else if(Key_A==0&&Key_D==0&&Key_B==1&&Key_C==0) //B键被按下{f1=0;f2=1;f3=0;f4=0;di();}else if(Key_B==0&&Key_D==0&&Key_A==0&&Key_C==1) //C键被按下{f1=0;f2=0;f3=1;f4=0;di();}else if(Key_D==1&&Key_B==0&&Key_A==0&&Key_C==0) //D键被按下{f1=0;f2=0;f3=0;f4=1;di();if(f1){StartModule();for(a=951;a>0;a--){if(RX==1){Timer_Count();Count1();}}}if(f2){runback();}if(f3){loop();}if(f4){stop();}}if(n0==1){if(low_velosity){switch(receiveData){case leftdata: PWM_RUNLEFT(30); break;case rightdata: PWM_RUNRIGHT(30); break;case forwarddata: PWM_RUNFRONT(64,70); break;case backdata: PWM_RUNBACK(64,70); break;case stopdata: bluestop(); break;}}if(high_velosity){switch(receiveData){case leftdata: PWM_RUNLEFT(50); break;case rightdata: PWM_RUNRIGHT(50); break;case forwarddata: PWM_RUNFRONT(94,100); break;case backdata: PWM_RUNBACK(94,100); break;case stopdata: stop(); break;}}}}}/蜂鸣器/void di(){int i;for(i=0;i<150;i++){Beep= 1;delay0(20);}Beep=0;}void delay0(int a){char j;int i;for(i=a; i > 0; i--)for(j = 200; j > 0; j--); }void delay1ms(int z) //延时1ms {int x,y;for(x=z;x>0;x--)for(y=110;y>0;y--);}。

基于WIFI的智能屏障小车的设计与实现

基于WIFI的智能屏障小车的设计与实现

毕业设计(论文)设计(论文)题目:基于WIFI的智能屏障小车的硬件设计与实现学生姓名: 钱兴晖指导教师:吴刚副教授二级学院:计算机工程学院专业:计算机科学与技术班级:12计算机科学与技术2班学号: 1205104045 提交日期: 2016年4月20日答辩日期: 2016年5月8日目录摘要 (Ⅲ)Abstract (Ⅳ)1 绪论 (1)1.1 课题背景与意义 (1)1。

1.1 课题背景 (1)1。

1。

2 课题意义 (1)1。

2 研究现状 (1)1.3 论文的主要研究内容及论文结构 (2)2 智能小车硬件系统设计 (3)2.1 智能小车的车体结构选择 (3)2。

2 智能小车控制系统方案 (3)2.3 电源系统设计 (4)2。

4 微控制器模块 (5)2.4。

1微控制器选择 (5)2。

4.2主控制器的最小系统电路 (5)2.5 障碍物检测模块 (7)2。

5.1超声波传感器 (7)2。

5。

2红外线传感器 (9)2.6 电机驱动模块 (10)2。

6。

1驱动电机的选择 (10)2。

6.2转速控制方法 (10)2.6.3电机驱动模块设计 (11)2。

7 通信拓展模块 (13)2。

7。

1无线通信模块 (13)2。

8 硬件设计中注意的问题 (15)2。

9 本章总结 (15)3 红外避障功能的软件设计 (16)3。

1 软件开发平台介绍 (16)3。

2 障碍物检测算法 (16)3.3 自动避障算法 (17)4 智能小车系统仿真与调试 (19)4.1 仿真器的选择 (19)4。

2 调试过程 (20)4。

2。

1 WIFI控制功能调试 (20)4。

2.2 超声波屏障功能调试 (20)4。

2。

3 红外避障功能调试 (21)5 总结与展望 (22)5.1 设计总结 (22)5。

2 设计展望 (22)参考文献 (23)附录 (25)致谢 (37)基于WIFI的智能屏障小车的硬件设计与实现摘要智能机器人是一种不需要人为操控,能够自行根据系统集成的传感器反馈的信号作出自主行为判断的智能化移动平台。

树莓派wifi智能小车基本原理

树莓派wifi智能小车基本原理答 辩 PPT模 板
出厂首次测试 前言 智能小车设计原理 智能小车分模块设计
出厂首次测试
出厂首次测试
蓝牙控制小车
第一步:打开下载好的“亚博智能4WD”app软件,然后打开 我们手机的蓝牙,进入到蓝牙配对界面
第二步:配对成功之后自动进入小车操作界面,接下来, 我们就可以操作小车了。
智能小车设计原理
智能小车设计原理
树莓派wifi智能小车是利用PC或者手机作为控制端,通过手机 连接树莓派路由器以获取wifi信号,树莓派的底板通过排线与树 莓派主控板连接起来,树莓派的底板上就连接相应的外设。从 而实现手机和小车的无线连接。我们通过手机上的android软件
以wifi作为信息载体。通过socket套经接字济的性TCP协议进行通信,将 指来令的发指系送令统给,树并莓设派置路相由应器的G,P树IO莓口派,通以EC过实ON解现OMY析相. 相应关的的避手障机,发跟送随过,
树莓派智能小车原理框图
智能小车设计原理
模块简介
七彩灯模块 电机模块 超声波模块 红外避障寻光模块 四路寻迹模块
七彩灯模块
七彩灯模块
七彩探照灯模块
七彩灯模块
电机模块
电机模块
电机模块
超声波模块
超声波模块
超声波模块是利用超声波的
特性检测距离的传感器,其 带有两个超声波探头,分别 作为发射和接收超声波。其 测量的范围是0-500cm。
即可计算出实际的距离:距离=高电平时间*声速(340M/S)/2
红外避障寻光模块
红外避障寻光模块
目标管理 八大过程
企业经营战略为首,没有 战略就没有发展。目标管 理首要的是目标的制定, 而这个目标必须围绕战略 需要进行科学设定。从战 略到目标是一个从意图到 明确的过程,没有这个过 程,战略只能是一种意图 、只能是一种打算,在一 定程度上没有目标支撑的 战略也只能是设想。

基于单片机的无线遥控小车设计

摘要该无线遥控小车采用玩具小车车架,以AT89S52单片机为控制核心,通过433MHz 无线发射和接收器接收遥控器的控制信号,并对信号快速处理,转换成PWM信号来产生不同的直流电压控制直流电机;通过液晶,无线数据通信及温度检测电路,将小车所处环境的温度经无线数据通信显示在遥控器的液晶显示屏上,从而实现实时的无线数据采集。

该无线遥控小车的功能如下:在有障碍物的情况下实现20米内的无线遥控;实现前进、后退、加速、减速、左转、右转以及对速度档的选择;对小车所处环境的温度进行数据采集;实现车载移动系统和无线遥控系统的数据通信;液晶显示器显示小车当前的运行状况和车载移动系统采集到的数据。

关键词:无线遥控;单片机;PWM;无线数据采集AbstractThe wireless remote control toy car used car frame to the core for the control of single-chip AT89S52,through the launch and 433MHz wireless receiver to receive commands,instructions and fast processing,converted into PWM signals to produce a different DC voltage control of DC motor; through LCD,wireless data communication and the temperature and humidity detection circuit,the car's temperature and humidity environment of wireless data communications by the remote control displayed on the LCD screen in order to achieve wireless data collection.The functions of the wireless remote control car is as follows:there are obstacles in the realization of the case within 20 meters of the wireless remote control; the realization of forward and backward,speed up,slow down,turn left,turn right and the choice of speed profile; on car temperature environment humidity data collection; the realization of mobile systems and wireless vehicle remote control system data access; liquid crystal display shows the current vehicle operating conditions and vehicle mobile data collection system.Key Words:Wireless remote control; single-chip microcomputer; PWM; Wireless Data Acquisition.目录摘要 (I)Abstract (I)第1章绪论 (1)1.1课题背景和意义 (1)1.2国内外研究现状 (1)第2章设计说明 (3)2.1设计任务 (3)2.2原理描述 (3)2.2.1 总体方案设计 (3)2.2.2 系统原理 (3)2.3方案设计与论证 (4)2.3.1 车体的设计 (4)2.3.2 控制器模块 (4)2.3.3 遥控模块 (5)2.3.4 电机驱动模块 (5)2.3.5 显示模块 (5)2.3.6 温度检测模块 (6)2.3.7 无线通信模块 (6)2.3.8 电源模块 (6)第3章车载模块设计 (7)3.1电机驱动与控制电路设计 (7)3.1.1 主控芯片AT89S52 (7)3.1.2 电机驱动芯片L298N (11)3.2无线遥控接收电路设计 (12)3.2.1 RF无线接收模块J04V (13)3.2.2解码芯片PT2272 (14)3.3无线数据采集电路设计 (18)3.3.1 温度传感器DS18B20 (18)3.3.2 NRF905单片无线收发器 (19)3.3.3 无线数据采集电路 (21)第4章遥控器模块设计 (22)4.1无线遥控发送电路设计 (22)4.1.1 无线发射头F05V (22)4.1.2 PT2262 编码解码芯片 (23)4.1.3 无线遥控发射电路 (26)4.2数据显示模块设计 (27)4.2.1 液晶显示器MS12864R (27)4.2.2 液晶显示模块电路 (29)第5章软件设计 (31)5.1主程序设计 (31)5.2键盘组合键的子程序设计 (31)5.3电机控制子程序设计 (33)4.3液晶显示子程序设计 (34)第6章系统仿真及硬件调试 (37)6.1应用ISIS软件仿真电路 (37)6.2应用KILE软件进行程序调试 (37)6.3实物调试 (39)结论 (41)致谢 (42)参考文献 (43)附录1 (44)附录2 (45)第1章绪论1.1 课题背景和意义随着电子技术的飞速发展,无线遥控已被广泛的应用到日常生活及工业中,如电视机、电冰箱、视屏监控系统、电视会议系统、多媒体教学系统、工业智能控制系统等多种领域都有应用。

基于单片机控制的wifi智能小车毕业设计

基于单片机控制的wifi智能小车毕业设计
篇一:基于51单片机WiFi智能小车制作
基于51单片机WiFi智能小车制作
一、基本原理
51单片机WiFi智能小车是利用PC或手机作为控制端,通过手机连接wifi模块(路由器)以获得wifi信号,同时车载也连接wifi模块以获得和手机相同的IP地址,实现手机和小车的连接,然后利用PC或手机上的控制软件以wifi网络信号为载体发送相关信号,wifi模块接收PC或手机端发送来的相关信号并分析转换成TTL电平信号,然后发送给单片机,单片机接收到的电平信号处理、分析、计算,转化成控制指令并发送给电机驱动模块以实现小车的前进、后退、左拐、右拐等功能。
第1章
1.1
1.2
第2章
2.1
2.2
2.3 绪论 ................................................................................. 错误!未定义书签。 智能小车的意义和作用 ........................ 错误!未定义书签。 智能小车的现状 ............................................... 1方案设计与论证 ............................................................................................... 2 主控系统 ..................................................... 2 电源模块 ..................................................... 2 电机驱动模块 ................................................. 3

电子设计大赛智能小车完整版程序

if(key==1&&key2==1)qusu2();
}
sudu(40,40);
while(!inf);
qusu2();
//
//delay(350);
//sudu(40,40);
//send=0;
//while(!inf)
//{
//if(!key)sudu(0,30);
//if(!key2)sudu源自40,30) ;TMOD=0x01;
ET0=1;
TH0=(65535-1000)/256;
TL0=(65535-1000)%256;
TR0=1;
EA=1;
en11=0;en00=0;
send=0;
while(1)
{
if(xuanze==0)
{
send=0;
if(key==0)sudu(0,30);
if(key2==0)sudu(20,0) ;
sbit inf=P1^1;
sbit send=P1^2;
sbit xuanze=P1^3;
unsigned int t=0,tt,tt2;
unsigned char num=7,count=0;
bit flag=1;
bit flag2=1;
bit flag3=1;
void delay(unsigned int t)
}
void sudu(unsigned char left,unsigned char right)
{tt=left;tt2=right;}
void left()
{
sudu(8,0);
}
void left2()
{EA=0;en0=0;en1=1;delay(130);en1=0;EA=1;}
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

#include<reg52.h>#include<math.h>#include<intrins.h>#define uchar unsigned char#define uint unsigned intuchar Buffer =0; //从串口接收的数据uint URTAReceivedCount=0,n=1;uchar data Tempdatatable[5],CommandDatatable[5];//数据包uchar serVal[2];uint pwm[]={1120,1190,1382,1382,1382,1382,1382,1382}; //初始90度,(实际是1382.4,取整得1382)uchar pwm_flag=0;uint code ms0_5Con=461; //0.5ms计数(实际是460.8,取整得461)uint code ms2_5Con=2304; //2.5ms计数bit key_stime_ok;sbit StatusLight=P2^0; //状态灯sbit MainLight=P2^1; //主大灯sbit servo0=P0^0; //舵机控制sbit servo1=P0^1;sbit servo2=P0^2;sbit servo3=P0^3;sbit servo4=P0^4;sbit servo5=P0^5;sbit servo6=P0^6;sbit servo7=P0^7;//定义智能小车驱动模块输入IOsbit IN1 = P1^0; // 高电平1 后退(反转)sbit IN2 = P1^1; // 高电平1 前进(正转)sbit IN3 = P1^2; // 高电平1 前进(正转)sbit IN4 = P1^3; // 高电平1 后退(反转)sbit EN1 = P1^4; // 高电平使能sbit EN2 = P1^5; // 高电平使能/********************************************************************* 名称: Delay_1ms()* 功能: 延时子程序,延时时间为1ms * x* 输入: x (延时一毫秒的个数)* 输出: 无***********************************************************************/void Delay_1ms(uint i)//1ms延时{uchar x,j;for(j=0;j<i;j++)for(x=0;x<=148;x++);}void TurnOnStatusLight(){StatusLight=0;}/********************************************************************* 名称: Send_Data()* 功能: 向上位机传送字符* 输入: 无* 输出: 无***********************************************************************/void Send_Data(uchar type,uchar cmd,uchar dat){uchar data Buffer[5];//构建数据包uchar *p;uint Send_Count=0;p = Buffer;Buffer[0]=0XFF;Buffer[1]=type;Buffer[2]=cmd;Buffer[3]=dat;Buffer[4]=0XFF;while(1){if(*p==0XFF){Send_Count++; //0XFF标志统计位}SBUF = *p; //发送while(!TI) //如果发送完毕,硬件会置位TI,等待发送完毕{_nop_();}p++;TI = 0;if(Send_Count == 2) //当统计到两次出现0XFF,则认为一个数据包发送完毕,跳出循环{TI = 0;break;}}}/********************************************************************协议规定:包头类型位数据位数据位结束位0XFF 0X** OX** 0X** 0XFF各命令说明:类型位数据位数据位功能0X00 0X02 0X00 前进0X00 0X01 0X00 后退0X00 0X03 0X00 左转0X00 0X04 0X00 右转0X00 0X00 0X00 停止0X01 0X01 角度舵机10X01 0X02 . 舵机20X01 0X01 . 舵机30X01 0X02 . 舵机40X01 0X01 . 舵机50X01 0X02 . 舵机60X01 0X01 . 舵机70X01 0X02 数据舵机80X02 0X01 车灯亮0X02 0X02 车灯灭0X03 雷达数据发送雷达数据***********************************************************************/ /********************************************************************* 名称: Com_Int()* 功能: 串口中断子函数***********************************************************************/ void Com_Int(void) interrupt 4{uchar temp;ES=0; //关串口中断RI=0; //软件清除接收中断temp=SBUF;if(temp==0XFF && URTAReceivedCount<3){Tempdatatable[0]==0XFF; //包头URTAReceivedCount++;}else{Tempdatatable[n]=temp;n++;if(URTAReceivedCount==0&&n==2)n=1;}if(URTAReceivedCount==2)//包尾{Tempdatatable[0]=0XFF;Tempdatatable[4]=0XFF;n=1;URTAReceivedCount=0; //组包完毕temp="";// Send_Data(Tempdatatable[1],Tempdatatable[2],Tempdatatable[3]); //发送组成的数据包回去}CommandDatatable[0]=Tempdatatable[0];CommandDatatable[1]=Tempdatatable[1];CommandDatatable[2]=Tempdatatable[2];CommandDatatable[3]=Tempdatatable[3];CommandDatatable[4]=Tempdatatable[4];ES=1;//开串口中断}/********************************************************************* 名称: Com_Init()* 功能: 串口初始化,晶振11.0592,波特率9600,使能了串口中断***********************************************************************/void Com_Init(void){TMOD = 0x21;PCON = 0x00;SCON = 0x50;TH1 = 0xFd; //设置波特率9600TL1 = 0xFd;TR1 = 1; //启动定时器1ES = 1; //开串口中断EA = 1; //开总中断IT0=0;EX0=1;}/********************************************************************* 名称:Moto_Forward()* 功能: 电机1、2启动,都是前进,整车表现为前进。

***********************************************************************/ void Moto_Forward(){IN1=0; //左电机IN2=1;IN3=1; //右电机IN4=0;EN1=1;EN2=1;Delay_1ms(100);}/********************************************************************* 名称:Moto_Backward()* 功能: 电机1、2启动,都是后退,整车表现为后退。

***********************************************************************/ void Moto_Backward(){IN1=1; //左电机IN2=0;IN3=0; //右电机IN4=1;EN1=1;EN2=1;Delay_1ms(100);}/********************************************************************* 名称:Moto_TurnLeft()* 功能: 电机1后退,电机2前进,整车表现为左转。

***********************************************************************/ void Moto_TurnLeft(){IN1=0; //左电机IN2=0;IN3=1; //右电机IN4=0;EN1=1;EN2=1;Delay_1ms(100);}/********************************************************************* 名称:Moto_TurnRight()* 功能: 电机1前进,电机2后退,整车表现为右转。

***********************************************************************/void Moto_TurnRight(){IN1=0; //左电机IN2=1;IN3=0; //右电机IN4=0;EN1=1;EN2=1;Delay_1ms(100);}/********************************************************************* 名称:Moto_Stop()* 功能: 电机1停止,电机2停止,整车表现为停止。

相关文档
最新文档