ImageVerifierCode 换一换
格式:DOCX , 页数:19 ,大小:148.71KB ,
资源ID:4094854      下载积分:3 金币
快捷下载
登录下载
邮箱/手机:
温馨提示:
快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。 如填写123,账号就是123,密码也是123。
特别说明:
请自助下载,系统不会自动发送文件的哦; 如果您已付费,想二次下载,请登录后访问:我的下载记录
支付方式: 支付宝    微信支付   
验证码:   换一换

加入VIP,免费下载
 

温馨提示:由于个人手机设置不同,如果发现不能下载,请复制以下地址【https://www.bdocx.com/down/4094854.html】到电脑端继续下载(重复下载不扣费)。

已注册用户请登录:
账号:
密码:
验证码:   换一换
  忘记密码?
三方登录: 微信登录   QQ登录  

下载须知

1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。
2: 试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。
3: 文件的所有权益归上传用户所有。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 本站仅提供交流平台,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

版权提示 | 免责声明

本文(蓝牙小车作品展示.docx)为本站会员(b****3)主动上传,冰豆网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知冰豆网(发送邮件至service@bdocx.com或直接QQ联系客服),我们立即给予删除!

蓝牙小车作品展示.docx

1、蓝牙小车作品展示河南理工大学 电器开发部电子作品设计报告题目:手机控制的蓝牙小车姓 名: 学 号: 专业班级: 指导人员: 所在学院: 电气学院 2015 年 4 月24 日摘要 本设计是做成这样的一款蓝牙小车,灵感来自于无线电-一本偶然碰到的书,书中对车的制作勾起了我对童年的回忆。我曾经玩过四驱赛车,也玩过遥控车,但还没有玩过通过手机便可控制的蓝牙小车,所以头脑发热从京东上买了一辆小遥控车决定自己改装一下。当各种模块都做好之后,我先仔细研究了几天L298N电路原理,然后我下载了好几种手机蓝牙软件通过比较确定了一款好用的。然后我对51单片机最小系统进行了简化,只留下了晶振电路,这样不仅不影响整

2、体功能的实现,也减少了投入成本和工作量。 通过改装买来的遥控小车,将其遥控设备用手机蓝牙代替,将从360助手上下载的蓝牙小车软件作为上位机,将拥有hc06蓝牙模块的蓝牙小车作为下位机,将L298作为小车的电机驱动。可以实现小车的前进、后退、左拐、右拐、刹车、重力感应、加速、减速等功能。做完这件作品我的收获有很多,对单片机的一些知识有了更深一步的理解。同时给了我一种畅想,我畅想着未来我们将会用手机控制我们所有的家用电器,不再需要那么多的遥控器了,我们的生活将会更便捷。这也是我的梦想,用科技改变生活。1 概述.4 2 系统总体方案及硬件设计.5 2.1 L298N 电机驱动模块.5 2.2 HC0

3、6 蓝牙模块说明.5 2.3 最小系统板说明.5 3课程设计体会.6附1:源程序代码 .7附2:系统原理图 .231 概述 通过改装买来的遥控小车,将其遥控设备用手机蓝牙代替,将从360助手上下载的蓝牙小车软件作为上位机,将拥有hc06蓝牙模块的蓝牙小车作为下位机,将L298作为小车的电机驱动。可以实现小车的前进、后退、左拐、右拐、刹车、重力感应、加速、减速等功能。 在我眼里没有完美的东西,只有更完美的东西,而快乐就在追求完美的路上。小车能动后我发现从网上下载的程序有错误,导致小车的左拐右拐相反,并且前进后退都会拐弯,没有加速减速。这样的作品我怎么能拿的出手?刚好那时电开给我们培训中断,定时器

4、等内容,再加上寒假我学了点C语言,便对程序进行了大刀阔斧的改革。终于前进后退左拐右拐正常了,可加减速怎么办呢?之前通过学长我稍微了解了pwm,随后我对pwm的原理深入了解了一下,我先通过借用延时函数模拟pwm让led灯渐亮渐灭随后我应用到直流电机上,结果,成功了!当然对于目前的作品,我还是觉得不太完美,我准备再给他加上转向灯、喇叭甚至更多功能。 做完这件作品我的收获有很多,对单片机的一些知识有了更深一步的理解。同时给了我一种畅想,我畅想着未来我们将会用手机控制我们所有的家用电器,不再需要那么多的遥控器了,我们的生活将会更便捷。这也是我的梦想,用科技改变生活。2 系统总体方案及硬件设计2.1 L

5、298N电机驱动模块 298n是直流电机驱动集成电路,内部包含4通道逻辑驱动电路,可以方便地驱动两个直流电机,或一个两相步进电机。l298n可接受标准ttl逻辑电平信号vss,9脚vss可接4.57v的电压。4脚vs接电源电压,vs电压范围vih为2.546v2。1脚和15管脚下的发射极分别单独引出以便接入电流采样电阻,形成电流传感信号。l298可驱动2个电动机,此时out1,out2和out3,out4之间可分别接电动机。5、7、10、12脚接输入控制电平,控制电机正反转;ena,enb脚接控制使能端,控制电机的停转3。 l298n采取输入输出并联的连接方式,即in1与in4(5脚和12脚)

6、、in2与in3(7脚和10脚)、out1与out4(2脚和14脚)、out2与out3(3脚和13脚)分别连接在一起。(电路图见附录2)2.2 HC06蓝牙模块说明 本作品使用的是hc06从机,设置其波特率为96002.3 最小系统板说明 经过多次修改简化本作品只使用了晶振电路,这样不仅对作品的功能没有影响而且减少了成本与工作量。(电路图见附录2)3课程设计及体会 做成这样的一款蓝牙小车,灵感来自于无线电-一本偶然碰到的书,书中对车的制作勾起了我对童年的回忆。我曾经玩过四驱赛车,也玩过遥控车,但还没有玩过通过手机便可控制的蓝牙小车,所以头脑发热从京东上买了一辆小遥控车决定自己改装一下。买回来

7、的当天我就把它拆了(一副很败家的样子)。当时我对单片机知识还是零基础,对于串口、中断、定时器什么的都不懂,于是我就去问负责我的学长,我说:“我要做这么个车,但我对单片机还什么都不懂,你说我可以吗?”他说:“赶紧做吧,做好的话就可以进实验室了。”激情再一次被点燃,本来只想自己做个玩的,没想到做好还能进实验室,下定决心get it!从图书馆借了基本单片机入门的书,便疯狂的搞起。 做完这件作品之后我的收获有很多,首先我对单片机的一些知识有了更深一步的理解。同时给了我一种畅想,我畅想着未来我们将会用手机控制我们所有的家用电器,不再需要那么多的遥控器了,我们的生活将会更便捷。这也是我的梦想,用科技改变生

8、活。 成功的道路是被无数的失败铺就的。当各种模块都做好之后,我迫不及待的将它们连接起来,连接蓝牙之后却发现小车没像预想的那样动起来。我XX了蓝牙模块的连接方式后发现RXD与TXD应交叉连接,交换之后,还是不能动。我又仔细研究了几天L298N电路原理,发现原来自己的电路驱动连接有错误,改过之后小车还是没反应,再次陷入绝望。我又怀疑是不是手机软件的是我又换了好几个软件,都不行。持续一个星期没有任何进展。有一天我在单片机上的txd上加了一个上拉电阻,小车奇迹般的动了,我简直欣喜若狂,赶紧跑到实验室告诉丁柯学长,可到实验室怎么连蓝牙也连不上。沮丧地又回到宿舍研究了一下午用万用表测量到底哪的问题,可什么

9、也没发现。我又一次绝望。躺在床上想既然能动一次就一定能再动一次。我要从头再来!我把原来的最小系统板扔掉,重新再焊一个,这次我把复位电路甩掉,只留下晶振电路,重新连接,这一次没再让我失望蓝牙连接非常顺利。 在我眼里没有完美的东西,只有更完美的东西,而快乐就在追求完美的路上。小车能动后我发现从网上下载的程序有错误,导致小车的左拐右拐相反,并且前进后退都会拐弯,没有加速减速。这样的作品我怎么能拿的出手?刚好那时电开给我们培训中断,定时器等内容,再加上寒假我学了点C语言,便对程序进行了大刀阔斧的改革。终于前进后退左拐右拐正常了,可加减速怎么办呢?之前通过学长我稍微了解了pwm,随后我对pwm的原理深入

10、了解了一下,我先通过借用延时函数模拟pwm让led灯渐亮渐灭随后我应用到直流电机上,结果,成功了!当然对于目前的作品,我还是觉得不太完美,我准备再给他加上转向灯、喇叭甚至更多功能。附1 源程序代码/*作品名称:蓝牙小车*作者:*功能:实现通过手机蓝牙控制小车*/#include #include #define uchar unsigned char #define uint unsigned intuchar Buffer 10 = 1; /从串口接收的数据uint i,j;sbit en1 = P24; /* L298的Enable A */ sbit en2 = P25; /* L298

11、的Enable B */ sbit s1 = P20; /* L298的Input 1 */ sbit s2 = P21; /* L298的Input 2 */ sbit s3 = P22; /* L298的Input 3 */ sbit s4 = P23; /* L298的Input 4 */uchar t = 0; /*中断计数器 */ uchar m1 = 0; /*电机1速度值 */ uchar m2 = 0; /*电机2速度值 */ uchar tmp1, tmp2; /*电机当前速度值 */ /* 函数功能: 微秒级精确延时* 参数范围: 1us65535us(0.001ms65.

12、535ms)* 运行环境: STC1232.000MHz* 最大误差: 0.00%* 作者日期: 电器开发部 - (2015-2-23)*/# pragma optimize(4, SPEED)void delay_us(unsigned int n) extern void _nop_(void); register unsigned char i = n, j = (n8); _nop_(); _nop_(); _nop_(); if (-i) | j) do _nop_(); _nop_(); _nop_(); _nop_(); _nop_(); _nop_(); _nop_(); _n

13、op_(); if (0xFF = (i-) j-; else _nop_(); _nop_(); _nop_(); _nop_(); _nop_(); _nop_(); while (i | j); /* 毫秒延时函数 */void delay_ms(unsigned int n) while (n-) delay_us(1000);/* 名称 : Init() /系统初始化* 功能 : 初始化,晶振11.0592,波特率9600,使串口中断,同时定时器0控制PWM ?* 输入 : 无* 输出 : 无 */void Init() TMOD = 0x22; /T/c方式寄存器 PCON = 0

14、x00; /电源控制寄存器 SCON = 0x50; /UART串口控制寄存器,此处为10位异步收发 TH0 = 0x9b; /高八位 TL0 = 0x9b; /低八位 TH1 = 0xFd; /设置波特率 9600 TL1 = 0xFd; /T/c1计数寄存器低八位 TR1 = 1; /*启动定时器1 ET0 = 1; /* ET0时定时计数器0溢出中断允许控制位 ET1时定时计数器1溢出中断允许控制位*/ TR0 = 1; ES = 1; /开串口中断 EA = 1; /开总中断 void motorL( char speed) m1 = abs(speed); / 取速度的绝对值 (返回

15、数字的绝对值) if(speed 0) s1 = 0; s2 = 1; else if(speed = 0) s1 = 1; s2 = 1; else s1 = 1; s2 = 0; void motorR( char speed) m2 = abs(speed); /* 电机2的速度控制 */ if(speed 0) s3 = 0; s4 = 1; else if(speed = 0) s3 = 1; s4 = 1; else s3 = 1; s4 = 0; void GO(void) motorL(50); motorR(0); void BACK() motorL(-20); motor

16、R(0); void TR(void) motorL(20); motorR(-20); void TL(void) motorL(-20); motorR(20); void STOP(void) s1 = 1; s2 = 1; s3 = 1; s4 = 1; void SPEED1(void) /通过不同的速度,实现加减速 s2 = 1; s3 = 1; s4 = 1; s1 = 0; delay_us(1); s1 = 1; delay_us(10000); void SPEED2(void) s2 = 1; s3 = 1; s4 = 1; s1 = 0; delay_us(100);

17、s1 = 1; delay_us(1000); void SPEED3(void) s2 = 1; s3 = 1; s4 = 1; s1 = 0; delay_us(200); s1 = 1; delay_us(1000); void SPEED4(void) s2 = 1; s3 = 1; s4 = 1; s1 = 0; delay_us(300); s1 = 1; delay_us(100); void SPEED5(void) s2 = 1; s3 = 1; s4 = 1; s1 = 0; delay_us(400); s1 = 1; delay_us(100); void SPEED6

18、(void) s2 = 1; s3 = 1; s4 = 1; s1 = 0; delay_us(500); s1 = 1; delay_us(100); void SPEED7(void) s2 = 1; s3 = 1; s4 = 1; s1 = 0; delay_us(600); s1 = 1; delay_us(100); void SPEED8(void) s2 = 1; s3 = 1; s4 = 1; s1 = 0; delay_us(700); s1 = 1; delay_us(100); void SPEED9(void) s2 = 1; s3 = 1; s4 = 1; s1 =

19、0; delay_us(800); s1 = 1; delay_us(100); void SPEED10(void) s2 = 1; s3 = 1; s4 = 1; s1 = 0; delay_us(900); s1 = 1; delay_us(100); void SPEED11(void) s2 = 1; s3 = 1; s4 = 1; s1 = 0; delay_us(1000); s1 = 1; delay_us(100); void SPEED12(void) s2 = 1; s3 = 1; s4 = 1; s1 = 0; delay_us(1100); s1 = 1; delay

20、_us(100); void SPEED13(void) s2 = 1; s3 = 1; s4 = 1; s1 = 0; delay_us(1200); s1 = 1; delay_us(100); void SPEED14(void) s2 = 1; s3 = 1; s4 = 1; s1 = 0; delay_us(1300); s1 = 1; delay_us(100);void SPEED15(void) s2 = 1; s3 = 1; s4 = 1; s1 = 0; delay_us(1400); s1 = 1; delay_us(100); void SPEED16(void) s2

21、 = 1; s3 = 1; s4 = 1; s1 = 0; delay_us(1500); s1 = 1; delay_us(100); void SPEED17(void) s2 = 1; s3 = 1; s4 = 1; s1 = 0; delay_us(1600); s1 = 1; delay_us(100); void SPEED18(void) s2 = 1; s3 = 1; s4 = 1; s1 = 0; delay_us(1700); s1 = 1; delay_us(100); void SPEED19(void) s2 = 1; s3 = 1; s4 = 1; s1 = 0;

22、delay_us(1900); s1 = 1; delay_us(100); void SPEED20(void) s2 = 1; s3 = 1; s4 = 1; s1 = 0; delay_us(2000); s1 = 1; delay_us(100); void SPEED21(void) s2 = 1; s3 = 1; s4 = 1; s1 = 0; delay_us(2100); s1 = 1; delay_us(100); void SPEED22(void) s2 = 1; s3 = 1; s4 = 1; s1 = 0; delay_us(2200); s1 = 1; delay_

23、us(100); void SPEED23(void) s2 = 1; s3 = 1; s4 = 1; s1 = 0; delay_us(2300); s1 = 1; delay_us(100); void SPEED24(void) s2 = 1; s3 = 1; s4 = 1; s1 = 0; delay_us(2400); s1 = 1; delay_us(100); void SPEED25(void) s2 = 1; s3 = 1; s4 = 1; s1 = 0; delay_us(2500); s1 = 1; delay_us(100); void SPEED26(void) s2

24、 = 1; s3 = 1; s4 = 1; s1 = 0; delay_us(2600); s1 = 1; delay_us(100); void SPEED27(void) s2 = 1; s3 = 1; s4 = 1; s1 = 0; delay_us(2700); s1 = 1; delay_us(100); void main(void) delay_ms(100); Init(); /初始化 while(1) switch(Buffer0) case 1: STOP(); break; case 4: GO(); break; case 5: TL(); break; case 7:

25、 BACK(); break; case 6: TR(); break; case 0x7D:SPEED1(); break; case 0x82:SPEED2(); break; case 0x87:SPEED3(); break; case 0x8C:SPEED4(); break; case 0x91:SPEED5(); break; case 0x96:SPEED6(); break; case 0x9B:SPEED7(); break; case 0xA0:SPEED8(); break; case 0xA5:SPEED9(); break; case 0xAA:SPEED10();

26、break; case 0xAF:SPEED11();break; case 0xB4:SPEED12();break; case 0xB9:SPEED13();break; case 0xBE:SPEED14();break; case 0xC3:SPEED15();break; case 0xC8:SPEED16();break; case 0xCD:SPEED17();break; case 0xD2:SPEED18();break; case 0xD7:SPEED19();break; case 0xDC:SPEED20();break; case 0xE1:SPEED21();break; case 0xE6:SPEED22();break; case 0xEB:SPEED23();break;

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

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