成 绩 评 定 表
学生姓名 专 业 评 语 组长签字: 班级学号 课程设计题目 蓝牙重力感应小车 成绩 日期
2015 年 1 月 9 日 课程设计任务书
1
学 院 学生姓名 课程设计题目 实践教学要求与任务: 专 业 班级学号 蓝牙重力感应小车 1、熟悉所确定的题目,从问题需求、程序结构、难点及关键技术等方面进行分析,形成系统的设计方案; 2、根据方案设计硬件电路; 3、软件编程并调试; 4、完成课程设计报告,打印程序,给出运行结果。 工作计划与进度安排: 第20周(1月6日-1月12日):布置设计任务,查资料,完成总体设计框架,完善设计内容,系统调试,验收答辩。 指导教师: 专业负责人: 学院教学副院长: 2015年1月5日 2015 年1月 5日 2015 年 1月5日 目 录
2
一. 前言篇 .....................................................................4 二. 原理篇 .....................................................................5 2.1 STC12芯片及最小系统板原理介绍 ............................................5 2.2 L298驱动器工作原理 ........................................................8 2.3 蓝牙模块工作原理 ...........................................................8 三.电路设计篇 ................................................................ 10 2.1芯片及最小系统简介 .................................................... 10 2.1.2 STC12C5A60S2最小系统板简介.......................................... 10 2.2 总体设计思路 ........................................................... 11 2.2.1系统板上硬件连线 ..................................................... 11 2.2.2设计实物图 ........................................................... 12 2.2.3单元电路设计: ....................................................... 12 四. 机械设计篇 .............................................................. 22 4.1 器件清单 ..................................................................22 4.2 小车组装步骤 ..............................................................23 五. 软件编写与调试篇 ......................................................... 25 5.1 软件程序设计 ..............................................................25 5.1.1 程序设计思路 ..........................................................25
5.1.2 程序流程图 ............................................................28
5.1.3 源程序 ................................................................29 5.2软件介绍 ...................................................................33 5.2.1 KEIL简介 .............................................................33
5.2.2 KEIL与Proteus联调与仿真实现 ........................................37
5.2.3 STC烧录软件 ..........................................................38 六.总结篇 ..................................................................... 39 七.参考文献 ................................................................... 41
一 前言篇
3
随着手机的普及,关于能用手机蓝牙控制的智能车的研究也就越来越受人关注。蓝牙小车起源于美国,由于政府对蓝牙控制小车研发的资助以及相关资助的推动作用,日本、美国、德国等工业大国在此技术上占据着明显优势。我国的蓝牙小车小车研究工作始于20世纪中后期,在国家的863、973等技术发展计划的重点支持下,国内已大范围地进行蓝牙车的研究。全国电子大赛和省内电子大赛几乎每次都有智能小车这方面的题目,全国各高校也都很重视该题目的研究,但是与国际先进还存在一定的差距。可见其研究意义很大。本设计就是在这样的背景下提出的。设计的智能蓝牙小车能够实现手机遥控,串口通讯,实时重力感应等功能。遥控实现方法包括蓝牙、红外、射频几种,其中蓝牙技术具有一定优势,目前在信息家电方面应用正在铺设。各种家电共用遥控,并可组网与公众互联网相接,共享有用信息。目前蓝牙技术实现无线遥控的短板在于传输距离短和芯片价格高方面。但随着科技发展,这些问题正在逐步得以解决。 蓝牙机器人有着广阔的应用前景。
根据题目的要求绘制电路原理图和机械图,制作程序流程图;在Keil C编译环境下编写控制程序并调试,确定如下方案:通过通过手机上位机让手机蓝牙与小车蓝牙模块进行配对,从而实现手机和小车通讯,进行控制的目的。选择蓝牙连接,可通过选择上位机不同方向按钮进行控制小车的前进,后退,左拐,右拐;选择重力感应,可通过改变手机的重心进行控制小车的前进,后退,左拐,右拐方向。
本次设计可以对电动车的运动状态进行实时监控,可满足对系统的各项要求。本设计采用STC系列中的STC12C5A60S2单片机。以单片机为控制核心,利用蓝牙传感器检测手机上位机上通过串口通信传来的各种控制信息,进行控制小车前进方向。
二.原理篇
4
2.1 STC12C5A60S2芯片及最小系统原理介绍
2.1.1 STC12C5A60S2系列单片机原理介绍
STC12C5A60S2/AD/PWM 系列单片机是宏晶科技生产的单时钟/机器周期(1T)的单片
机,是高速/低功耗/超强抗干扰的新一代8051单片机,指令代码完全兼容传统8051,但速度快8-12倍。内部集成MAX810专用复位电路,2路PWM,8路高速10位A/D转换(250K/S即25万次每秒),对电机控制,强干扰场合。
1. 增强型 8051 CPU,1T,单时钟/机器周期,指令代码完全兼容传统8051。 2. 工作电压:
STC12C5A60S2 系列工作电压: 5.5V - 3.5V(5V单片机) STC12LE5A60S2 系列工作电压: 3.6V - 2.2V(3V单片机)。 3. 工作频率范围:0~35MHz,相当于普通8051的 0~420MHz。
4. 用户应用程序空间 8K /16K / 20K / 32K / 40K / 48K / 52K / 60K / 62K 字节......。 5. 片上集成1280字节 RAM。
6. 通用I/O口(36/40/44个),复位后为:准双向口/弱上拉(普通8051传统I/O口)可设置成四种模式:准双向口/弱上拉,强推挽/强上拉,仅为输入/高阻,开每个I/O口驱动能力均可达到20mA,但整个芯片最大不要超过120mA。
7. ISP(在系统可编程)/ IAP(在应用可编程),无需专用编程器,无需专用仿真器可通过串口(P3.0/P3.1)直接下载用户程序,数秒即可完成一片。 8. 有EEPROM功能(STC12C5A62S2/AD/PWM无内部EEPROM)。 9. 看门狗。
10.内部集成MAX810专用复位电路(外部晶体12M以下时,复位脚可直接1K电阻到地)。 11. 外部掉电检测电路: 在P4.6口有一个低压门槛比较器,5V单片机为1.33V,误差为±5%,3.3V 单片机为1.31V,误差为±3%。
12. 时钟源:外部高精度晶体/时钟,内部R/C振荡器(温漂为±5% 到±10% 以内) 用户在下载用户程序时,可选择是使用内部R/C 振荡器还是外部晶体/ 时钟常温下内部R/C 振荡器频率为:5.0V ,单片机为: 11MHz ~ 17MHz。 3.3V 单片机为: 8MHz ~ 12MHz。精度要求不高时,可选择使用内部时钟,但因为有制造误差和温漂,以实际测
5
试为准。
13. 共4个16位定时器。两个与传统8051兼容的定时器/计数器,16位定时器T0和T1,没有定时器2,但有独立波特率发生器做串行通讯的波特率发生器,再加上2路PCA模块可再实现2个16位定时器。
14. 3个时钟输出口,可由T0的溢出在P3.4/T0输出时钟,可由T1的溢出在P3.5/T1输出时钟,独立波特率发生器可以在P1.0口输出时钟。
15. 外部中断I/O口7路,传统的下降沿中断或低电平触发中断,并新增支持上升沿中断的PCA模块,Power Down模式可由外部中断唤醒,INT0/P3.2,INT1/P3.3,T0/P3.4, T1/P3.5, RxD/P3.0,CCP0/P1.3(也可通过寄存器设置到P4.2), CCP1/P1.4(也可通过寄存器设置到P4.3)。
16. PWM(2路)/ PCA(可编程计数器阵列,2路) --- 也可用来当2路D/A使用 --- 也可用来再实现2个定时器
--- 也可用来再实现2个外部中断(上升沿中断/下降沿中断均可分别或同时支持)。 17. A/D转换, 10位精度ADC,共8路,转换速度可达250K/S(每秒钟25万次)。 18. 通用全双工异步串行口(UART),由于STC12系列是高速的8051,可再用定时器和PCA软件实现多串口。
19. STC12C5A60S2系列有双串口,后缀有S2标志的才有双串口,RxD2/P1.2(可通过寄存器设置到P4.2),TxD2/P1.3(可通过寄存器设置到P4.3)。 20. 工作温度范围:-40 ~ +85℃(工业级) / 0 ~ 75℃(商业级)。
21. 封装:LQFP-48, LQFP-44, PDIP-40, PLCC-44, QFN-40 I/O口不够时,可用2到3根普通I/O口线外接74HC164/165/595(均可级联)来扩展I/O口,还可用A/D做按键扫描来节省I/O口,或用双CPU,三线通信,还多了串口。
表1 STC12C5A60S2硬件结构表
6
类型 参数 工作电压(V) Flash程序存储器字节 RAM字节 定时器T0、T1 PCA定时器 UART 独立波特率发生器 DPTR EPPROM PCA(16位)PWM(8位) A/D8路25万次每秒 I/O 看门狗 内置复位 外部可调门槛电压 外部中断 STC12C5A60S2 5.5-3.5 60k 1280 有 2 1 有 2 有 2路 10位 44 有 有 有 4路 STC89C51 RC 5.5-3.4 4k 512 有 无 1 无 无 有 无 无 40 有 无 无 4路 由上表可见,STC12C5A60S2单片机的硬件结构具有功能部件种类全,功能强等特点。特别值得一提的是该单片机CPU中的位处理器,它实际上是一个完整的1位微计算机,这个一位微计算机有自己的CPU、位寄存器、I/O口和指令集,计算速度比普通的8051快8 ~12倍。
2.1.2 STC12C5A60S2最小系统板功能简介
7
本设计此处采用STC12C5A60S2芯片
图1 STC12C5A60S2最小系统板功能简介
2.2 L298驱动器工作原理
本设计采用L298芯片,L298是ST公司生产的一种高电压、小电流电机驱动芯片。该芯片采用16脚封装,内部是由双极性管组成的H桥电路。其输出电流为100mA,最高电流2A,最高工作电压36V,可以驱动感性负载,可以控制电机的正反转,且很容易被单片机控制。用单片机控制晶体管使之工作在占空比可调的开关状态,精确调整电机转速。这种电路由于工作在管子的饱和截止模式下,效率非常高;H桥电路保证了可以简单地实现转速和方向的控制;电子开关的速度很快,稳定性也很高,是一种广泛采用的调速技术。
2.3 蓝牙模块工作原理
蓝牙模块主要是为了实现上位机与下位机的数据传输,本设计是通过蓝牙转串口模块,实现上位机与下位机的无线通讯功能,所以本质上使用的是单片机串口通信。 串行通讯的特点是:数据按位顺序传送,最少仅需一根传输线即可完成,成本低但传送速度慢。串行通讯的距离可以从几米到几千米。 根据信息的传送方向,串行通讯可以进一步分为单工、半双工和全双工三种。信息只能单向传送为单工;信息能双向传
8
送但不能同时双向传送称为半双工;信息能够同时双向传送则称为全双工。 串行通讯又分为异步通讯和同步通讯两种方式。在单片机中,主要使用异步通讯方式。 蓝牙模块串口通讯特点:
1、核心模块使用HC-06 从模块,引出接口包括VCC,GND,TXD,RXD,预留LED 状态输出脚,单片机可通过该脚状态判断蓝牙是否已经连接,KEY 引脚对从机无效。
2、led 指示蓝牙连接状态,闪烁表示没有蓝牙连接,常亮表示蓝牙已连接并打开了端口
3、底板3.3V LDO,输入电压3.6~6V,未配对时电流约30mA,配对后约10mA,输入电压禁止超过7V!
4、接口电平3.3V,可以直接连接各种单片机(51,AVR,PIC,ARM,MSP430 等),5V 单片机也可直接连接,无需MAX232 也不能经过MAX232!
5、空旷地有效距离10 米,超过10 米也是可能的,但不对此距离的连接质量做保证 6、配对以后当全双工串口使用,无需了解任何蓝牙协议,但仅支持8 位数据位、1 位停止位、无奇偶校验的通信格式,这也是最常用的通信格式,不支持其他格式。 7、在未建立蓝牙连接时支持通过AT 指令设置波特率、名称、配对密码,设置的参数掉电保存。蓝牙连接以后自动切换到透传模式
8、体积小巧(3.57cm*1.52cm),工厂贴片生产,保证贴片质量。并套透明热缩管,防尘美观,且有一定的防静电能力。
9、该链接为从机,从机能与各种带蓝牙功能的电脑、蓝牙主机、大部分带蓝牙的手机、PDA、PSP 等智能终端配对,从机之间不能配对。
三.电路设计篇
9
2.1 STC12C5A60S2芯片及最小系统电路介绍
2.1.1 STC12C5A60S2系列单片机I/O口介绍
U41234567891011P1.4/ADC4P1.3/ADC3P1.2/ADC2P1.1/ADC1P1.0/ADC0P4.2/CCPOVCCP0.0P0.1P0.2P0.3
4443424140393837363534P3.6/WRP3.7/RDXTAL2XTAL1GNDP4.0/SSP2.0P2.1P2.2P2.3P2.4P1.5/MOSIP0.4P1.6/MISOP0.5P1.7/SCLKP0.6P4.7/RSTP0.7P3.0/RXDP4.6/RST2STC12C5A60S2P4.3/SCLKP4.1/MOSIP3.1/TXDP4.5/ALEP3.2/INTOP4.4/NAP3.3/INT1P2.7E:\\单片机\\STC12C5A60S2-english.pdfP3.4/T0P2.6P3.5/T1P2.53332313029282726252423 图2
2.1.2 STC12C5A60S2最小系统板电路组成元件简介
1213141516171819202122STC12C5A60S2
图3
10
本设计此处采用STC12C5A60S2芯片
图4 STC12C5A60S2最小系统板各端口简介
2.2 总体设计思路
(1)连接线路,使减速电机与L298驱动器的连接,并完成最小系统I/O口与驱动器,蓝牙模块的接线。
(2)编程实现,与最小系统相连的蓝牙模块与手机的通信。 (3)调试运行,打开手机上位机,实现手机对小车控制。
2.2.1系统板上硬件连线
1.让左右减速电机的红线分别接OUT1和OUT3,黑线分别接OUT2和OUT4。 2.将7.2V供电电池的正负极与L298驱动器VDD和GND相连。
3.将L298驱动器的+5V输出与最小系统板的+5V相连,GND与最小系统板的GND相连,进行供电。
4.将L298驱动器的控制管脚N1,N2,N3,N4分别于系统板的P1.0,P1.1,P1.2,P1.3
11
相连。
5.外接蓝牙模块,与最小系统板相连,其中TXD与P3.0口相连接,GND与最小系统GND相连接,VCC与最小系统的VCC相连接。
2.2.2设计实物图
图5 实物图
2.2.3单元电路设计:
分别为:L298模块、最小系统板模块、蓝牙模块、手机上位机。 (1) L298模块:
12
图6 L298驱动器模块图
图7 L298驱动模块控制管脚图
图8 L298驱动模块输入管脚图
电机驱动电路设计:
L293D_EN1GNDR11KJ2J3J4J51212121L293D_IN123456L293D_IN278VCC_MotorEN1IN1OUT1GNDGNDOUT2IN2VCC2L293DVCC5vIN4OUT4GNDGNDOUT3IN3EN21615L293D_IN41413121110L293D_IN39R31KL293D_EN212U3VCC
图9 电机驱动电路图
本设计采用L298芯片,L298是ST公司生产的一种高电压、小电流电机驱动芯片。该芯片采用16脚封装,内部是由双极性管组成的H桥电路。其输出电流为100mA,最高电流2A,最高工作电压36V,可以驱动感性负载,可以控制电机的正反转,且很容易被单片机控制。用单片机控制晶体管使之工作在占空比可调的开关状态,精确调整电机转
13
速。这种电路由于工作在管子的饱和截止模式下,效率非常高;H桥电路保证了可以简单地实现转速和方向的控制;电子开关的速度很快,稳定性也很高,是一种广泛采用的调速技术。
图10 L298内部结构图
1. 图示为L298的内部结构图,L2938内置了与门、非门、三级管组成的两组电路,因为其排列形状像‘H’子母,所以称其为H桥路。通过控制三极管的通断就可以是电机旋转起来,而通过控制不同三极管的导通,电流的流向就会发生改变,电机的转向也就会发生变化。在图4.3中,使ENA与ENB两个使能端始终为1,通过控制IN1 ~IN4输入端的状态来改变电机的转向。
表2 L298真值表
IN1 IN2 IN3 IN4 1 0 1 0 1 0 0 1 0 1 1 0 0 1 0 1 0 0 0 0 右电机 正 正 反 反 × 左电机 正 反 正 反 × 2.当IN1、IN2、IN3和IN4分别为1010时,T1、T4、T5和T8导通,左电机和右电机正转;
2.示例程序1:void Forward(unsigned char Speed_Right,unsigned char
14
Speed_Left)//前进 {
L293D_IN1=1; L293D_IN2=0; L293D_IN3=1; L293D_IN4=0;
PWM_Set(255-Speed_Right,255-Speed_Left); }
3.脉宽调制器本身是一个由运算放大器和几个输入信号组成的电压比较器。运算放大器工作在开换状态,稍微有一点输入信号就可使其输出电压达到饱和值,当输入电压极性改变时,输出电压就在正、负饱和值之间变化,这样就完成了把连续电压变成脉冲电压的转换作用。加在运算放大器反相输入端上的有三个输入信号。一个输入信号是锯齿波调制信号,另一个是控制电压,其极性大小可随时改变,与锯齿波调制信号相减,从而在运算放大器的输出端得到周期不变、脉宽可变的调制输出电压。只要改变控制电压的极性,也就改变了PWM变换器输出平均电压的极性,因而改变了电动机的转向.改变控制电压的大小,则调节了输出脉冲电压的宽度,从而调节电动机的转速.只要锯齿波的线性度足够好,输出脉冲的宽度是和控制电压的大小成正比的。 4.示例程序2为脉宽调制函数,其中PWM_Set为PWM调速函数。
本设计采用的是软件调速,Speed_Right、Speed_Left为用户给定的初值速度,速度值范围:0 ~255,数值越大,速度越快。在通常的程序中多是采用定时器为波特率发生器。而本次设计中采用的是MCU自带的PWM脉冲发生器,stc12c5a60s2有内置的一个计数器和比较寄存器CCAPnL和CL,CCAPnL用来存放一个0-255之间的一个数据,CL是一个计数器,当CL的值小于CCAPnL时,PWM引脚输出低电平脉冲,当CL的值大于CCAPnL时,PWM引脚输出高电平脉冲
void PWM_Set(unsigned char PWM0_DATA,unsigned char PWM1_DATA) { CCAP0L=PWM0_DATA;//装入比较初值 CCAP0H=PWM0_DATA;
CCAP1L=PWM1_DATA; //装入比较初值 CCAP1H=PWM1_DATA;
15
}
(2)最小系统板模块:
本设计此处采用STC12C5A60S2芯片
图11 STC12C5A60S2最小系统板管脚图
图12. STC12C5A60S2最小系统板与PL2303下载器
16
(3)蓝牙模块:
图13 蓝牙模块管脚图
蓝牙模块主要是为了实现上位机与下位机的数据传输,本设计是通过蓝牙转串口模块,实现上位机与下位机的无线通讯功能,所以本质上使用的是单片机串口通信。 串行通讯的特点是:数据按位顺序传送,最少仅需一根传输线即可完成,成本低但传送速度慢。串行通讯的距离可以从几米到几千米。 根据信息的传送方向,串行通讯可以进一步分为单工、半双工和全双工三种。信息只能单向传送为单工;信息能双向传送但不能同时双向传送称为半双工;信息能够同时双向传送则称为全双工。 串行通讯又分为异步通讯和同步通讯两种方式。在单片机中,主要使用异步通讯方式。
蓝牙模块RSTUSB to UART TTL转换板PCPCUSB to TTLRXDTXDUSB口5VGNDAT5VTXDRXDGNDST 图14 USB与蓝牙模块相连
17
在本设计中采用WE-40C(如图4.6)蓝牙模块,设置一个为主机,另一个为从机。通过发送AT指令来控制智能车的前进、后退和转弯。WE-40C使用方便,可支持一对多通讯,也可通过AT指令来切换模块的主从模式。当蓝牙模块上电后红色指示灯闪烁,与另一蓝牙模快时,蓝色指示灯常亮。该型号蓝牙模块特点: 1.使用方便,两模块通电后自动连接,非常方便。 2.具备5V和3.3V两种接口。
3.支持分时一对多通讯,可绑定模块地址指定通讯。 4.主从一体化,可通过简单的AT指令任意切换主从模式。 5.带有9个扩展IO口(两个预留),既可输入也可输出。 6.发射通讯距离远,开阔地40米。
7.模块采用双PCB复合式设计,采用加厚板材(1.6mm)。
WE-40C应用范围:
1.主要是用于代替串口线,包含TXD和RXD两组信号,可以直接接入单片机等带有串口的系统或设备,也可以通过MAX232芯片转换成RS232电平后使用。 2.单片机通过电脑蓝牙适配器和电脑连接,无线收发数据。
3.单片机和智能手机蓝牙连接,实现单片机和智能手机之间的无单片机的串口通讯是为了实现上位机与下位机的数据传输,单片机是通过管脚RXD和管脚TXD与外界通讯的,SUBF是串行口的缓冲寄存器,单片机与上位机的通信数据都是临时存放在SUBF寄存器中的,通过软件的读写操作就可以实现单片机与外设之间的数据通讯了。 串口通讯的初始化主要是对SCON、TCON、TMOD、IE几个寄存器的设置; 表3.SCON、TCON、TMOD、IE几个寄存器的设置 SCON 5.SM0 SM1 SM2 SM3 REN TB8 RB8 TI RI 6.串行口控制寄存器 8.定时器/计数器控制寄存器 10.定时器/计数器TMOD 9.GATE C/T M1 M0 GATE C/T M1 M0 工作方式设置寄存器
18
TCON 7.TF1 TR1 TF0 TR0 IE1 IT1 IE0 IT0 IE
11.EX0 ET0 EX1 ET1 ES ET2 -- EA 12.中断允许控制寄存器 示例程序1:
void Send_Char(unsigned char DATA) {
ES=0;//关闭串口中断
flag1=0;
SBUF=DATA; //将数据发送出去,可以在电脑串口工具的接收区观察 while(!TI);//数据发送完毕之后,T1会置1 TI=0;
ES=1;//重新允许串口中断 }
(4)手机上位机
图15 手机上位机操作界面
说明:重力感应时将“重力感应”选中
19
20
21
四. 机械设计篇
4.1 器件清单
表4 元器件清单 编号 元器件名称 元器件型号 1 螺丝(螺帽) Ø 3*8mm Ø 3*31mm Ø 3*13.5mm Ø 5*23mm Ø 5*23mm M3*10双通铜柱 M3*20双通铜柱 M3*(25+6)单通铜柱 无 无 无 无 无 130减速电机 STC12C5A60S2系统板 L298驱动器 元器件数量 若干 2 铜柱(单通,双通) 若干 3 4 5 6 7 8 9 10 11 12 13 14 15 16 电机固定块 电机支撑板 中桥连接板 舵机固定板 车头 减速电机 最小系统板 驱动器 蓝牙模块 供电电源 杜邦线 轮胎(后轮) 万向轮(前轮) 下载器 4个 2个 1个 1个 1个 2个 1个 1个 1个 1套 若干 2个 1个 1条 WE-40C 7.2V电池 无 有内胆轮胎 无 PL2303
22
4.2 小车组装步骤
1.先后用螺丝和铜柱连接,电机支撑板,中桥连接板,舵机固定板,车头, 从而固定小车底盘板。
2.用螺丝和铜柱在小车底盘板上固定电机固定块,完成电机安装。
图16
3.给小车的两个电机上,安装轮胎,并在小车头部安装万向轮。
图17 4.用铜柱把STC12系统板固定在小车地盘上。
5.安装驱动模块L298,并分别用电机的红,黑线和驱动器的输入端口相连接。
23
图18 6.分别用螺丝和铜柱,安装小车的各功能模块。 7.在小车底盘下,安装电池包。
图19
8.连接STC12最小系统板与各模块的控制端口的连接。
24
图20
9.把PL2303下载器连接,与系统板的下载端口相连接,完成小车组装。
五. 软件编写与调试篇
5.1 软件程序设计
5.1.1 程序设计思路
1、总体功能及原理
通过通过手机上位机让手机蓝牙与小车蓝牙模块进行配对,从而实现手机和小车通讯,进行控制的目的。选择蓝牙连接,可通过选择上位机不同方向按钮进行控制小车的前进,后退,左拐,右拐;选择重力感应,可通过改变手机的重心进行控制小车的前进,后退,左拐,右拐方向。
25
2、此次设计的蓝牙小车主要的功能为:
1)通过手机上位机的操作界面(前、后、左、右四个键)无线控制小车的前 进、后退、左转和右转。 2)利用安卓手机的重力感应功能 控制小车进行前进、后退、左转和右转。 3、蓝牙编程原理与编程要点 (1)编程原理
图21 手机蓝牙通过蓝牙模块与STC12通信原理图
在控制端界面上有四个用来控制小车运动的按钮——前进,后退,左转,右转。 按下前进键时,手机会通过蓝牙以ASCII码的形式发送一个字符“A”于P30口;松手后,“A”消失;
按下后退键时,手机会通过蓝牙以ASCII码的形式发送一个字符“B”于P30口;松手后,“B”消失;
按下左转键时,手机会通过蓝牙以ASCII码的形式发送一个字符“C”于P30口;松手后,“C”消失;
按下右转键时,手机会通过蓝牙以ASCII码的形式发送一个字符“D”于P30口;松手后,“D”消失;
当使用重力感应模式时,也是根据手机的平衡状态来发送这几个字符的。 (2)编程要点
利用单片机的串口(P30)来接收发送过来的ASCII码。打开串口中断,当在串口中断服务函数中接收到字符“a=SBUF后,用if()语句来判断接收到的字符,进而控制小车的运行.例如if(a==‘A’)表示接收到的字符是A,也就是按前进时发送过来的,这
26
时就可以在if后面的语句中写上小车前进的代码;
if(a==‘B’)表示接收到的字符是B,也就是按后退时发送过来的,这时就可以在if后面的语句中写小车后退的代码;if(a==‘C’)表示接收到的字符是C,也就是按右转时发送过来的,这时就可以在if后面的语句中写上小车右转的代码;if(a==‘D’)表示接收到的字符是D,也就是按左转时发送过来的,这时就可以在if后面的语句中写上小车左转的代码;当‘A’、‘B’、‘C’、‘D’都没有接收到,此时就让小车停止.
图22 手机上位机操作界面截图 上位机程序功能: 按按按按
时前进,松手后停止; 时后退,松手后停止; 时右转,松手后停止; 时左转,松手后停止;
将选中
说明:重力感应时请
27
5.1.2程序流程图
图23 程序流程图
28
5.1.3源程序
/*******************************************************************/ /* 程序名:蓝牙遥控小车 /* 实验平台:实验室两驱小车
/* CPU型号:STC12C5A60S2 晶振:11.0592MHZ
/*****************************************************************/ #include sbit a1=P1^0; //电机控制口 sbit a2=P1^1; sbit a3=P1^2; sbit a4=P1^3; uchar a;//接收蓝牙模块发送的数据 void delayxms(uint z)//调节电机转速 { } void qingj()//前进 { uint x,y; for(x=z;x>0;x--) for(y=110;y>0;y--); a1=1; a2=0; a3=1; a4=0; 29 } void hout()//后退 { a1=0; a2=1; a3=0; a4=1; } void youz()//右转 { a1=0; a2=0; a3=1; a4=0; delayxms(9); a1=0; a2=0; a3=0; a4=0; delayxms(1); } void zuoz()//左转 { a1=1; a2=0; a3=0; a4=0; 30 } delayxms(9); a1=0; a2=0; a3=0; a4=0; delayxms(1); void tingz()//停止 { } void main() { TMOD=0x20;//定时器1工作方式2,8位自动重装 TH1=0xFd; //11.0592M晶振,9600波特率 TL1=0xFd; SCON=0x50; / /串口方式1 SM0 SM1 01 允许接收 PCON=0x00; //SMOD=0 16分频 TR1=1;//打开定时器1 ES=1;//打开串口中断 EA=1;//开总中断 //以上跟串口通信初始化有关 while(1) { a1=0; a2=0; a3=0; a4=0; 31 if(a=='A') qingj();//前进 else if(a=='B') hout();//后退 else if(a=='C') zuoz();//左转 else if(a=='D') youz();//右转 else tingz(); //停止 } } void serial() interrupt 4//中断子函数 { RI=0; //清0 a=SBUF; } 32 5.2.软件介绍 5.2.1 keil 简介 Keil C51是美国Keil Software公司出品的51系列兼容单片机C语言软件开发系统,与汇编相比,C语言在功能上、结构性、可读性、可维护性上有明显的优势。因而易学易用。Keil提供了包括C编译器、宏汇编、连接器、库管理和一个功能强大的仿真调试等在内的完整开发方案,通过一个集成开发环境uVision将这些部分组合在一起。运行Keil软件需要WIN98、NT、WIN2000、WINXP等操作系统。 使用Keil编写程序的步骤: 1.双击快捷方式,打开keil 编程环境(如图17) 图24 2.单击菜单栏中的“Project”命令,新建一个空白工程(如图18) 图25 33 3.选择需要的芯片型号:(如图19) 图26 4.新建文件,以.c格式保存,并将文件导入工程中:(如图20) 图27 5.在文件中编程,编辑完毕单击保存即可(如图21) 34 图28 6.编译,链接,运行调试程序 (如图22) 图29 35 7.生成HEX文件(如图23) 图30 8.将生成的 HEX 文件,重新编译,链接,运行。(如图 24) 图31 36 5.2.2 keil与proteus联调与仿真实现 【注:本课设中虽未涉及Proteus仿真,但平时是通过它来进行学习STC12芯片,故课设中仍要提及该仿真软件】 双击图标进入keil uVision2编程环境,输入程序。返回桌面双击图标进入Proteus仿真环境。设置keil和proteus的工作环境。点击左上角选项P后根据设计的电路图调出所需元件画好硬件原理图,然后按照在Keil里面建立新的工程,编程实现预期效果的程序,编译链接运行后生成HEX文件,并将HEX文件导入仿真图中的单片机中,运行观察仿真结果,实现keil和proteus的联合调试。 图32 Proteus 仿真软件截图 37 5.2.3 STC-ISP 烧录软件 双击图标STC-ISP,打开烧录软件,将生成的HEX文件烧录到单片机最小系统板。 图33 STC-ISP软件截图 烧录步骤: 1.选择芯片型号; 2.打开生成的HEX文件; 3.选择正确的COM口; 4.设置合适的波特率; 5.采用冷启动,单击下载按钮进行下载。 38 六.总结篇 本次课程设计的题目是蓝牙重力感应小车。最开始的学习过程中,并没有对蓝牙及重力感应有多么深刻的了解,在课设的准备过程中,经过图书馆资料的翻阅以及上网了解的基本知识,加深了对单片机C语言,Proteus仿真软件,及STC-ISP 烧录软件的了解,并对此进行了简单设计。 为了做好这个课设,学生整整花费了两天的时间!但我觉得收获还是很丰厚的,通过这个课程设计学生掌握了控制电路的接线及检查方法;通过学习蓝牙模块的有关知识,我们了解了蓝牙控制电路的作用,并掌握了上位机控制最小系统的工作原理。 本次课设我最大的感触就是一定要细心、和冷静!虽然这次实训为期不长,但内容丰富,包含了多种能力和技术的训练,它将基本技能训练,基本工艺知识和创新启蒙有机结合,培养我们的实践能力和创新精神,元件识别能力、组装能力、以及万用表测量能力等等。给平日只学理论知识的我们以很好的实践机会,让我们在自己动手的过程中逐渐掌握一些相关的知识,于无形之中,提升自己的动手能力。通过这次电子工艺实习,我深刻的认识到了,理论知识和实践相结合是教学环节中相当重要的一个环节,只有这样才能提高自己的实际操作能力,并且从中培养自己的独立思考、勇于克服困难。实习是培养我们动手能力的一个好机会,为我们以后的工作打下了良好的基础。总之,在实习过成中,要时刻保持清醒的头脑,出现错误,一定要认真的冷静的去检查分析错误!通过这次电工实习,还学到了很多专业知识以外的东西。比如做事要有耐心,切不可急躁。其次每一环节都得认真仔细,一着不慎满盘皆输,一个小小的错误可能导致整个实验的失败。还有团队精神很重要,实习过程中,只有团队之间密切配合,方能快速正确的进行实验。这些东西,也许是这次课设的最大收获,相信以后对自己有很大帮助,希望自己以后做任何事情都得铭记! 在做课设的过程中,出现一些小的问题,经过多次调试及老师的指导,本次课设终于成功。课程设计是培养学生综合运用所学知识,发现实际为题、提出实际问题、分析和解决实际问题,锻炼实践能力的重要环节,是对学生实际学习能力、动手能力的具体训练和考察过程。 39 在此次设计过程中,在学习新知识的同时,把在课程中学到的理论知识运用到实际作品设计,操作中更进一步地熟悉了单片机STC12C5A60S2芯片的结构及掌握了其工作原理和具体的使用方法与相关元器件的参数计算方法、使用方法了解了电路的开发和制作及课程设计报告的编写。加深了对相关理论知识及专业知识的掌握度,增强自身的动手能力,锻炼及提高了理解问题、分析问题、解决问题的能力,更深刻体会到了理论联系实际的重要性。 通过此次课程设计不仅仅将我们这一学期内在传感器课程上所学的知识很好的应用到了实际设计中,更是将理论知识用到了实践中,这是我收获最大的地方。 这次的课设之后,让我不再惧怕课设,并且更加喜欢软件和硬件相结合,很想自己有一天可以设计出完美的作品。我会一直努力,为着这个远大的理想而奋斗! 致谢 历时3天的设计过程中,我首先边查资料,我感觉到即使是一个简单的模块,要想很轻松的控制,也不是很容易的事情。这使我深深感受到理论与实际间的差距。通过这样的设计,提高了我的动手能力,使我软件调试知识也提高了。 本设计采用的是STC12C5A60S2单片机,这主要是因为该单片机的稳定性比较好和执行指令的速度很快。还可以采用其它系列的单片机。经过自己不断的搜索努力以及刘老师的耐心指导和热情帮助,本设计已经基本完成。刘老师的态度和热忱的工作作风令我十分钦佩,他的指导使我受益非浅。在此对刘军老师表示深深的感谢。 通过这次课程设计,使我深刻地认识到学好专业知识的重要性,也理解了理论联系实际的含义,并且检验了大学三年上学期的学习成果。虽然在这次设计中对于知识的运用和衔接还不够熟练。但是我将在以后的工作和学习中继续努力、不断完善。这一个月的设计是对过去所学知识的系统提高和扩充的过程,为今后的发展打下了良好的基础。 由于学生自身水平有限,设计中一定存在很多不足之处,敬请老师批评指正。 40 七.参考文献 1. 姜志海,赵艳雷,陈松.单片机的C语言程序设计与应用——基于Proteus仿真(第2版).北京:电子工业出版社,2011.7 2. 肖婧.单片机系统设计与仿真——基于Proteus. 北京:北京航空航天大学出版社,2010.8 3. 何立民,单片机应用系统设计[M],,92京:航天航空大学出版社,44~57 4. 李广弟,单片机基础[M],北京:北京航空航天大学出版社,2001年 5. 何希才,新型实用电子电路400例[M],电子工业出版社,2000年 6.赵负图,传感器集成电路手册,第一版[M],化学工业出版社,2004年 7.张毅刚,彭喜元,新编MCS-51单片机应用设计,第一版[M],哈尔滨工业大学出版社,2003年,24~27,410~416 8.马长芳,资丽芳,通信原理[M],北京:科学出版社,2005年 9.陈万寿,通信电源系统[M],北京:人民邮电出版社,2008年11月 10.富军,单片机开关电源,北京:电子工业出版社,2007年7月 11.Michael Miller,蓝牙技术起跳,北京:电子工业出版社,2002年1月 12郭洁,蓝牙技术原理与协议,北京:北京交通大学出版社,清华大学出版社,2002年8月 13.李永龙,李祖枢,王牛.直流电机双闭环调速系统(DLM)的建模与辨识[J],控制理论与应用,2008,25(6):78-85 14王洪锋,夏明飞,王坚.单片机与微机的远距离串行通信[J],电力自动化设备,2002,22(5),59-67 15蔡自兴.智能控制及移动机器人研究进展[J],中南大学学报,2005,36(5),121-127 16.夏继强.单片机实验与实践教程.北京:北京航空航天大学出版社,2001 17. 蓝牙模块ZS-040电子手册 18. STC12C5A60S2系统板电子手册 41 因篇幅问题不能全部显示,请点此查看更多更全内容