基于安卓蓝牙控制的智能车设计报告(编辑修改稿)内容摘要:
reak。 case 0xB0: Run_Mode_Flag = 0x10。 break。 case 0xC0: 11 Run_Mode_Flag = 0x11。 break。 } } // 中间省略若干代码,详细参考源代码 // 全能车运行模式判断 if(0x01 == Run_Mode_Flag) // 蓝牙模式,通过串口与蓝牙模块通信,获得相应的执行指令 { Run_Mode_Bluetooth()。 } else if(0x10 == Run_Mode_Flag) // 循迹模式 { Run_Mode_Track()。 } else if(0x11 == Run_Mode_Flag) // 自动模式 { Run_Mode_Auto()。 } } } 注释: Run_Mode_Flag 为智能车运动模式标识符; Run_Mode_Bluetooth()为蓝牙手动模式; Run_Mode_Track()为循迹模式。 Run_Mode_Auto()为避障模式。 智能车基础运动设计与实现 智能车基础运动包括前进、倒车、左转、右转和停车,其对应的功能函数名分别如下:前进 Car_Go_Forward()、倒车 Car_Go_Back()、左转 Car_Turn_Left()、右转Car_Turn_Right()以及停车 Car_Stop()。 智能车是通过 PWM 技术来实现调整其运动的速度。 前进 Car_Go_Forward()和左转 Car_Turn_Left()部分代码如表 33 所示,而倒车和右转以及停车与前者相似。 表 33 智能车基础运动源代 码 12 () amp。 Car_Turn_Left() /* 小车前进 */ void Car_Go_Forward(void) { L_LAMP = R_LAMP = 1。 // 关闭左侧和右侧车灯 if( COUNT = DUTY ) // 高电平 { // 左边车轮正转 , LIN1=1, LIN2=0 // 右边车轮正转, RIN1=1, RIN2=0 Motor_RIN1 = Motor_LIN1 = 1。 Motor_RIN2 = Motor_LIN2 = 0。 } else // 低电平 { // 左右都停止 Motor_LIN1 = Motor_RIN1 = 1。 Motor_LIN2 = Motor_RIN2 = 1。 } } /* 小车左转 */ void Car_Turn_Left(void) { L_LAMP = 0。 // 打开左侧车灯 R_LAMP = 1。 // 关闭右侧车灯 if(COUNT = DUTY) { // 左边车轮停止转动 , LIN1=1, LIN2=1 Motor_LIN1 = 1。 Motor_LIN2 = 1。 // 右边车轮正转, RIN1=1,RIN2=0 Motor_RIN1 = 1。 13 Motor_RIN2 = 0。 } else { // 左右都停止 Motor_LIN1 = Motor_RIN1 = 1。 Motor_LIN2 = Motor_RIN2 = 1。 } Delayms(1)。 L_LAMP = 1。 // 关闭左侧 车灯 } 注释: Delayms()为延时函数,具体实现方法参考附录源代码; Motor_XINX 对应着 L298 四个输入端,分别控制左右电机正反转以及停止。 串口通讯接口部分 蓝牙接收电路与单片机之间是通过 UART 串口方式通讯的。 STC89C52 主要接收并处理来自蓝牙接收电路的数据。 首先是对 UART 接口的初始化工作,再通过串口中断接收数据。 UART 初始化部分代码如表 34 所示。 表 34 UART 初始化部分源代码 () /* 串口通讯初始化 */ void UART_Init(void) { // 串口工作模式 1 SCON =0x50。 // 等效于 SM1=1, SM0=0, REN=1 // Timer2 初始化,作为波特率发生器 TL2=RCAP2L = (65536(FOSC/32/BAUD))。 TH2=RCAP2H = (65536(FOSC/32/BAUD))8。 // 波特率 9600 T2CON = 0x34。 // 等效于 RCLK=TCLK=TR2= 1 // 清除 RI,串口接 收中断标志 14 RI = 0。 // 串口中断使能 ES = 1。 // 记得主程序中要打开 EA=1。 } 注释: FOSC 为系统时钟晶振,已经宏定义 define FOSC 11059200L BAUD 为串口通讯波特率,已经宏定义 define BAUD 9600 初始化 UART 后,在打开串口中断,用于接收来自蓝牙模块的数据。 其实现代码如表35 所示。 表 35 串口中断处理函数 () /* 串口通讯中断服务函数 */ void UART_Handler()interrupt 4 using 1 // 串口中断号 4 { // 判断 RI if(RI) { RI = 0。 // 软件方式清除 RI 标志 R_Buffer = SBUF。 // 获得蓝牙数据 } } 注释: 串口接收中断标志 RI 必须软件清零。 智能车蓝牙手动模式设计与实现 在 UART 接口的基础上获得来自控制端的指令。 通过全局变量 R_Buffer 来存储当前来自 APP 客户端的数据,并根据 R_Buffer 的值来执行相应的功能。 蓝牙指令有 0x1F 前进指令、 0x2F 倒车指令、 0x3F 左转指令、 0x4F 右转指令、 0x5F 加速指令、 0x6F 减速指令、0x7F 前车灯、 0x8F 喇叭。 手动模式部分源代码如表 36 所示。 表 36 蓝牙手动模式部分源代码 15 () /* 全能车模式之蓝牙遥控 */ void Run_Mode_Bluetooth(void) { // 再次打开串口中断使能 ES = 1。 // 根据收到的 R_Buffer 执行该任务 switch(R_Buffer) { case 0x1F: // 前进指令 DUTY = 7。 Car_Go_Forward()。 break。 case 0x2F: // 后退指令 DUTY = 7。 Car_Go_Back()。 break。 case 0x3F: // 左转指令 DUTY = 7。 Car_Turn_Left()。 break。 case 0x4F: // 右转指令 DUTY = 7。 Car_Turn_Right()。 break。 case 0x00: // 停止指令 Car_Stop()。 break。 case 0xD0: // 关闭前车灯 Car_Beep()。 break。 16 } } 注释: DUTY 为占空比,用于调整电机转动速度。 智能车自主循迹模式设计与实现 通过红外对管的工作原理 来判断全能车相对位置,以及做出相应的决策。 其部分源代码如表 37 所示。 表 37 智能车循迹模式源代码 () /* 全能车模式之循迹 */ void Run_Mode_Track(void) { static U8 temp。 // 零时存放 P1 低 6 位数据,一定要写成 static,保存上次的结果。 temp = P1。 temp amp。 =0x3f。 switch(temp) { case 0x07: // 左 左 2 和左 3 同时 DUTY = 5。 Car_Turn_Left()。 break。 case 0x1F: // 左 1 DUTY = 5。 Car_Turn_Left()。 break。 // 中间省略若干行,详细参照源代码 case 0x3E: // 右 1 DUTY = 5。 Car_Turn_Right()。 break。 17 case 0x38: // 右 右 2 和右 3 同时 DUTY = 5。 Car_Turn_Right()。 break。 case 0x00: Car_Stop()。 break。 default: // 前行 DUTY = 4。 Car_Go_Forward()。 } } 注释: 红外对管低电平表示遇到黑色线,即没有收到返回光。 智能车自动避障模式设计与实现 通过超声波电路间接测量距离的原理,计算出障碍物距离全能车的距离。 部分代码如表 38 所示。 表 38 智能车避障模式源代码 /* 超声波初始化 */ void Timer0_Init(void) { Trig = 0。 TMOD amp。 =0xF0。 TMOD |= 0x01。 TH0 = 0。 TL0 = 0。 // 定时器 0 寄存器清零 TF0 = 0。 // 清除定时器 0 溢出标志 TR0 = 0。 // 暂时不启动定时器 0 18 } /* 启动触发 */ void Trig_Start(void) { Trig = 1。 // 产生触发信号 _nop_()。 _nop_()。 _nop_()。 _nop_()。 _nop_()。 _nop_()。 _nop_()。 _nop_()。 _nop_()。 _nop_()。 _nop_()。基于安卓蓝牙控制的智能车设计报告(编辑修改稿)
相关推荐
计 用于移动终端技术领域,提供了一种移动终端界面显示方法、装置以及移动终端,所述方法包括以下步骤:接收用户的界面显示模式设置;将用户的界面显示模式设置进行存储;根据用户的需要控制移动终端界面进入用户设置的界面显示模式。 本发明实施例通过将用户的界面显示模式设置进行存储,根据获取的移动终端运行指令控制界面进入用户设置的界面显示模式,使得移动终端的用户能够方便的 根据自己的需要对显示界面进行设置
的无缝链接。 有线电视网络数据传输技术 安徽广播电视大学开放教育专科计算机应用专业毕业论文 10 此技术类似于广电的宽带接入技术,比较适用于已经建成并使用的社区。 为了不破坏建筑物室内外的装修,利用已有的有线电视线路,在用户端增加线缆调制解调器,就可以实现不重新布线接入社区网络管理控制中心。 利用有线电视数据网络建设宽带社区网络主要注意以下问题。 1.有线电视网的传统业务是传输电视模拟信号
( 2) 5 6 ( 1)VoRR VREF ( 3) 如上图所示, R6 取 3K,VREF=, V0=,由( 3)式可得 R5= GSM AT 指令操作 步骤 1) 发送英文短信 AT+CMGF=1 设置为 Text 模式 AT+CSMP=17,167,0,0 设置 Text 模式参数。 最后一个参数是数据编码类型( DCS— Data Coding Scheme) ,0
在显示第四张图片时,如果继续向左滑动(实际是跳转到下一页的功能)时,会跳转到信息的主界面中。 信息界面之主界面( MainPage) 当进入到这个界面时,可能会停滞一会,因为程序会在启动这个界面时,会进行一些获取信息的操作,然后当信息获取成功后会显示设计的布局 中。 在这个界面中,会显示有以下信息: 地区:查询的城市名,并加一些修饰,如阴影设置,字体大小和颜色的设置,用于和其他信息进行区分。
U=Q/C。 (28) C=Ξ s/4kπ d; (29) S=VL。 (210) U=( 4kπ d Q/Ξ L) *1/V。 (211) U—— 栅极板电压; Q—— 栅极板电量; C—— 栅极板电容量; S—— 栅极板正对面积; d—— 定栅和动栅的间距; V—— 测量移动速度; L—— 动栅极板长度; 于是容栅位 移传感器输出的电信号就与移动速度成反比例函数。
用户随身携带红外遥控器,不太方便,容易受到环境的影响。 相对成本也高,不利于普及。 方案二: HC06 蓝牙模块。 现在,人们都有手机,且手机的功能也很完善,在手机上安装一个蓝牙串口助手软件,就可以通过手机发送信号,经过 HC06蓝牙模块接收传到单片机处理后,控制 LED 灯以及冰箱,操作简单、方便。 方案选择:采用方案二,该性能稳定,可以保证稳定通信。 系统组成 该系统由 STC89C52