用keil c语言编写蓝牙串口通信遥控小车

用keil c语言编写蓝牙串口通信遥控小车,第1张

#include <reg51.h>

#include <intrins.h>

#define uchar unsigned char

uchar data tab[10]//将要提取的数据装入这个数组,数组元局核素为10个,信腊租不够时自己改一下

main()

{

uchar i

SCON = 0x50

TMOD = 0x20

TH1 = 0x??//串口波特率设置,需要提供单片机的时钟频率。

TL1 = 0x??

TR1 = 1

while(1)

{

for(i = 0i<8i++)//等待串口发送的前8个字节数据并丢弃,这是最简单方法,当然也有复杂的

{

while(!RI)//等待接收串口数据

RI =0//清接收标志

}

for(i = 0i<10i++)

{

while(!RI)

tab[i] = SBUF//将提起的数据载入数组

RI = 0

if(!SBUF)brwak//如果接收的数据为00,结束提取,通过变量“i”可知道所提取滑兆数据的字节数

}

for(i = 0i<4i++ )//等待最后4个字节接收并丢弃数据

{

while(!RI)

RI = 0

}

}

}

/*-----------------------------------------------

名称:18B20温度传感器

函数名:18b20.h

编写:浪溢泽沉

日期:2009.5

修改:无

内容:18B20单线温度检测的应用样例程序

------------------------------------------------*/

#ifndef __DS18B20_H__

#define __DS18B20_H__

#include<reg52.h>//包含头文件,一般情况不需要改动,头文件包含特殊功能寄存器的定义源段旅

#include<intrins.h>

#define uchar unsigned char

#define uint unsigned int

/*------------------------------------------------

端口定义

------------------------------------------------*/

sbit DQ=P1^3//ds18b20 端口

/*------------------------------------------------

函数声明

------------------------------------------------*/

unsigned int ReadTemperature(void)

bit Init_DS18B20(void)

unsigned char ReadOneChar(void)

void WriteOneChar(unsigned char dat)

#endif

/*-----------------------------------------------

名称:18B20温度传感器

编写:浪溢泽沉

日期:2009.5

修改:无

内容:18B20单线温度检测的应用样例程燃陵序

------------------------------------------------*/

#include"delay.h"

#include"18b20.h"

/*------------------------------------------------

18b20初始化

------------------------------------------------*/

bit Init_DS18B20(void)

{

bit dat=0

DQ = 1 //DQ复位

DelayUs2x(5) //稍做延时

DQ = 0//单片雹凳机将DQ拉低

DelayUs2x(200)//精确延时 大于 480us 小于960us

DelayUs2x(200)

DQ = 1 //拉高总线

DelayUs2x(50)//15~60us 后 接收60-240us的存在脉冲

dat=DQ //如果x=0则初始化成功, x=1则初始化失败

DelayUs2x(25)//稍作延时返回

return dat

}

/*------------------------------------------------

读取一个字节

------------------------------------------------*/

unsigned char ReadOneChar(void)

{

unsigned char i=0

unsigned char dat = 0

for (i=8i>0i--)

{

DQ = 0// 给脉冲信号

dat>>=1

DQ = 1// 给脉冲信号

if(DQ)

dat|=0x80

DelayUs2x(25)

}

return(dat)

}

/*------------------------------------------------

写入一个字节

------------------------------------------------*/

void WriteOneChar(unsigned char dat)

{

unsigned char i=0

for (i=8i>0i--)

{

DQ = 0

DQ = dat&0x01

DelayUs2x(25)

DQ = 1

dat>>=1

}

DelayUs2x(25)

}

/*------------------------------------------------

读取温度

------------------------------------------------*/

unsigned int ReadTemperature(void)

{

unsigned char a=0

unsigned int b=0

unsigned int t=0

Init_DS18B20()

WriteOneChar(0xCC)// 跳过读序号列号的 *** 作

WriteOneChar(0x44)// 启动温度转换

DelayMs(10)

Init_DS18B20()

WriteOneChar(0xCC)//跳过读序号列号的 *** 作

WriteOneChar(0xBE)//读取温度寄存器等(共可读9个寄存器) 前两个就是温度

a=ReadOneChar() //低位

b=ReadOneChar() //高位

b<<=8

t=a+b

return(t)

}

上面是检测温度的程序,第一个是.h的文件,第二个是.c文件,自己调用就行了。

如果你还不会的话,问我吧……

希望能帮到你,以后互相交流!!!

1.通过解决相关实际问题,以巩固、加深对嵌入式的认识和相关知识的理解,提高综合运用课程知识的能力。

2.熟悉与计算机相关的嵌入式方面的电子元器件和电路特性,能正确反映设计和实验成果,提高自主创新能力。

3.培养严肃认真的工作作风和严谨科学态度。通过课程设计实践,获得初步的应用经验,为以后从事生产和科研工作打下的坚实的基础。

4.培养根据课题需要选学参考书籍、查阅手册图表和文献资料的自学能力。通过独立思考,深入钻研有关问题,学会自己分析解决问题。

5.了解与课程有关的电子电好锋路以及元器件技术规范,按课程设计任务书的要求编写设计说明书。提高自己的动手能力,培养严肃、认真的工作作风和科学态度。

6.为了完成一款自主设计、制作的嵌入式作品,以提升个人能力和队嵌入式的兴趣。

7.对避障小车的避障原理有充分的理解,掌握其避障的方法,能够对实验过程中出现的问题进行解决,发现问题,解决问题。

1.2 背景

学习智能小车系统,有助于提高搭建系统的能力和对自动控制技术的理解。智能小车是一个较为完整的智能化系统,而智能化的研究已成为我国追赶世界科技水平的重要任务。智能小车有它特有的特点:成本低,涉及的知识面广,易于拓展[1]。整个智能小车系统作为一个完整的系统,从它的原理图的实现到实物的完成的过程,不仅需要深厚的电子方面的知识,还有对电路实现的良好掌握,对于培养学生的实践能力都有重要的意义。智能小车的竞赛在我国各大高校中都受到了重视,吸引了大批的高校学生的兴趣,而且取得了很多优异的成果,为我国推进智能化的进程做出了巨大的贡献,也为智能汽车的发展提供了理论依据[2-3]。

只有当把理论和模型应用到实践中,这样的创新才用意义,我们国家这几年在智能化方面的进步越来越快,也推动了我国在国际社会上在智能化方面的话语权。智能小车是智能化的一部分,它的系统里的避障、循迹、红外遥控的技术用到了智能化,将智能化应用到传统技术上是21世纪发展的趋势。

我国虽然从改革开放以来大力发展科技创新,但是在智能化的创新水平与国外较发达的国家相比还有巨大的差距,智能竞赛在高校越来越流行,也证明了我国教育在这方面很快会赶上世界上的发展水平。本次设计是以单片机为电路板,通过编程和一些外围电路的设计来实现红外遥控,避障,循迹等功能。最重要的是把模型上的研究应用到实际生活中,智能车辆便做到了这一点[4-6]。在实际应用中比如在倒车的过程中实现的红外警报系统是以智能小车为模型而研发出来的。对于电子知识的热爱与钻研有利于研发更多智能车辆,使我们的生活更加便利、智能化。

本次课程设计主要任务是实现基于51单片机智能小车红外避障和循迹的主要功能应用。以红外避障的功能解决小车在不同的环境避开行走的障碍物,直到终点,以红外循迹的功能去感应黑线找到走出迷宫的线索为目标。让机器人小车变得更加灵活。

2 需伏兄求分析

智能小车作为现代的新发明,是以后的发展方向,他可以按照预先设定的模式在一个环境里自动运作,不需要人为的管理,可应用于科学勘探等等用途;并且能实现显示时间、速度、里程,具有红外自动寻迹、避障等功能,可程控行驶速度、定位停车,远程传输图像、按键控启动K4让小车运行起来,利用红外传感器感应黑线进行寻迹友厅晌,利用红外反射感应进行红外避障功能。

图1 智能小车设计思维导图

如图1所示,我们使用STC89C52RC单片机电路板控制整个机器人小车的功能,通过接线建立好小车的电路图连接以及通过C51书写红外避障以及循迹功能程序。在设计好的场地,从出发点到终点,通过现有的功能顺利躲开障碍物的干扰以及通过智能机器人寻找黑线的功能一直走好直线且顺利到达终点,完成任务。在车的模型上分析,我们也补充到了红外感应原理,红外传播通过我们学习物理光学知识后,能解决为什么避障反应慢的问题,并解决了。

如图2所示,智能小车初步构想流程图,让整个项目实现的目标更加清晰明了。利用红外传感器,其优点是对近距离的障碍物反应速度灵敏,不同方位的传感器之间信号不会相互干扰,最终选择红外传感器作为小车的眼睛,进行避障。

由于本次实验小车轮子没有实现转弯功能,所以通过设定左右两组轮子的不同前进速度来实现转弯功能。当向右转时,左侧轮子的速度要比右侧轮子的前进速度快,反之实现左转功能,此设计需小心谨慎,防止出现轮子不同步,无法实现转弯功能。

图2 智能小车功能模块流程图

3.系统设计

3.1总体设计

3.1.1 设计思路

总体来说,这个程序设计还算比较简单,比较基础,目的就是要学会基本的应用,这个过程中利用红外线传感器发射和接收信号模块来控制单片机,让单片机翻译传输指令,从而实现相应的功能。具体的过程如下:四路红外传感器,每一路发射一个信号,检测接收到的信号,若出现高电平,则说明该方向前方有障碍物,则单片机控制电机正转和反转,从而实现绕开障碍物继续前行。同时还增加一个无线发射和无线接收模块控制单片机,让单片机翻译传输指令,从而实现相应的功能。无线发射模块发出指令,无线接收模块接收信号后,传递给单片机,单片机翻译接收到信号后,传输给驱动电路驱动电机旋转,从而实现让小车的前进、后退、左转和右转。

在主控制器模块上分析,采用STC89C52单片机作为整个系统的核心,用其控制行进中的小车,以实现其既定的性能指标。充分分析我们的系统,其关键在于实现小车的自动控制,而在这一点上,单片机就显现出来它的优势——控制简单、方便、快捷。这样一来,单片机就可以充分发挥其资源丰富、有较为强大的控制功能及可位寻址 *** 作功能、价格低廉等优点。51单片机具有功能强大的位 *** 作指令,I/O口均可按位寻址,程序空间多达8K,对于本设计也绰绰有余,更可贵的是51单片机价格非常低廉。


欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/yw/12524141.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-05-26
下一篇 2023-05-26

发表评论

登录后才能评论

评论列表(0条)

保存