单片机蓝牙控制小车

合集下载

单片机蓝牙小车实习报告

单片机蓝牙小车实习报告

一、实习背景随着科技的发展,单片机技术得到了广泛应用。

为了提高自己的动手能力,拓宽知识面,我们选择了单片机蓝牙小车作为实习项目。

本项目旨在利用单片机技术,通过蓝牙通信实现小车的无线遥控,使其具备基本移动和避障功能。

二、实习目的1. 掌握单片机的基本原理和编程方法。

2. 熟悉蓝牙通信技术及其应用。

3. 培养团队合作精神和动手能力。

4. 提高解决实际问题的能力。

三、实习内容1. 硬件设计(1)主控芯片:选用STC89C52单片机作为小车的主控芯片,具有丰富的I/O口,便于扩展。

(2)蓝牙模块:选用HC-05蓝牙模块,实现手机与单片机的无线通信。

(3)电机驱动:采用L293D电机驱动芯片,为直流电机提供足够的驱动能力。

(4)传感器:选用红外传感器作为避障传感器,检测前方障碍物。

(5)电源:采用两节3.7V锂电池为小车提供电源。

2. 软件设计(1)主控程序:编写单片机主程序,实现蓝牙通信、电机控制、避障等功能。

(2)手机端程序:编写手机端蓝牙控制程序,实现小车的无线遥控。

3. 系统调试(1)硬件调试:检查电路连接,确保各模块正常工作。

(2)软件调试:通过串口调试助手,观察程序运行状态,发现问题并修改。

四、实习过程1. 硬件制作(1)根据电路图,焊接各元器件,包括单片机、蓝牙模块、电机驱动芯片、红外传感器等。

(2)组装小车底盘,将各模块安装到位。

2. 软件编程(1)编写单片机主程序,实现蓝牙通信、电机控制、避障等功能。

(2)编写手机端蓝牙控制程序,实现小车的无线遥控。

3. 系统调试(1)硬件调试:检查电路连接,确保各模块正常工作。

(2)软件调试:通过串口调试助手,观察程序运行状态,发现问题并修改。

五、实习成果1. 成功制作了一台单片机蓝牙小车,具备基本移动和避障功能。

2. 掌握了单片机编程、蓝牙通信、电机控制等技术。

3. 提高了动手能力和团队合作精神。

4. 为今后的学习和工作打下了基础。

六、实习总结通过本次单片机蓝牙小车实习,我们深刻体会到理论与实践相结合的重要性。

stm32小车蓝牙模块原理

stm32小车蓝牙模块原理

stm32小车蓝牙模块原理
本文将简要介绍STM32小车蓝牙模块的原理。

STM32小车蓝牙模块是利用STM32单片机控制小车运动方向和速度的一种外围装置,通过蓝牙模块与手机进行通讯控制小车运动。

其原理主要包括以下几个方面:
1. STM32单片机控制小车运动
STM32单片机作为小车的控制核心,通过GPIO口输出控制小车
电机的转动方向和速度,从而实现小车的运动。

通过编写相应的程序,可以实现小车的前进、后退、左转、右转等基本运动。

2. 蓝牙模块实现与手机的通讯
蓝牙模块作为小车与手机之间的通讯接口,主要负责接收手机发来的指令,并将指令传输给STM32单片机进行处理。

同时,蓝牙模块也可以将小车的状态信息反馈给手机,以便用户了解小车的运行状态。

3. 手机APP控制小车运动
用户通过手机APP向小车发送指令,控制小车的运动。

指令通过蓝牙模块传输给STM32单片机进行处理,从而实现小车的运动控制。

用户可以通过手机APP调整小车的运动速度和方向,以便适应不同的运动环境。

综上所述,STM32小车蓝牙模块实现了通过手机控制小车运动的功能,为用户提供了一种方便、灵活的控制方式。

未来,随着物联网技术的发展,STM32小车蓝牙模块有望成为物联网领域的重要应用之一。

基于单片机的一种多功能玩具小车的设计与实现

基于单片机的一种多功能玩具小车的设计与实现

随着科技的发展,单片机作为一种常用的微控制器,已经在各个领域得到了广泛应用。

在玩具领域,特别是玩具小车的设计中,单片机的运用也越来越普遍,可以实现各种有趣的功能。

本文将介绍一种基于单片机的多功能玩具小车的设计与实现。

二、设计目标1. 实现无线遥控功能,通过遥控器实现对小车的控制。

2. 设置超声波避障模块,让小车能够自动避开障碍物。

3. 小车可通过蓝牙模块与手机进行连接,实现手机APP控制。

4. 为小车设计多种灯光效果,增添趣味性。

5. 使用音乐模块,使小车产生丰富的声音效果。

三、硬件设计1. 主控芯片选择了常用的Arduino单片机。

2. 驱动模块选用了直流电机驱动模块,实现小车的前进、后退和转向。

3. 采用了超声波传感器模块,用于检测障碍物并实现避障功能。

4. 蓝牙模块选用了蓝牙串口模块,实现与手机的数据传输和控制。

5. 设计了多种灯光效果,包括LED灯和彩色灯带。

6. 音乐模块选用了声音传感器模块,可以发出不同的声音效果。

四、软件设计1. 编写了小车的控制程序,包括前进、后退、左转、右转等基本控制2. 通过编写遥控器程序,实现了对小车的无线遥控功能。

3. 编写了避障算法,使小车能够自动避开障碍物。

4. 开发了手机APP,通过蓝牙模块与小车进行连接和控制。

5. 设计了多种灯光效果的控制程序,可以实现闪烁、变色等效果。

6. 编写了音乐模块的程序,可以根据指令发出不同的声音效果。

五、实现效果1. 小车可以通过遥控器实现前进、后退、左转、右转的基本功能。

2. 超声波传感器可以准确检测到障碍物,并成功避开。

3. 通过手机APP可以实现对小车的遥控和控制各种功能。

4. 多种灯光效果可以有效增加小车的趣味性。

5. 音乐模块发出的声音效果丰富多彩,增加了小车的趣味性。

六、总结与展望本文介绍了一种基于单片机的多功能玩具小车的设计与实现,通过结合硬件设计和软件设计,实现了多种有趣的功能。

未来,可以进一步优化设计,增加更多的传感器模块和功能模块,使小车的功能更加丰富多样。

手机蓝牙控制小车_嵌入式实验报告

手机蓝牙控制小车_嵌入式实验报告

手机蓝牙控制小车
报告
*若需源码,请关注后,发私信
一、主要思路
利用Android手机的蓝牙功能,通过蓝牙模块与单片机进行串口通信,通过手机发送不同的指令使单片机控制电机的转动,进而使小车产生前进、后退、左转、右转的效果。

二、主要设备
Android手机一部、单片机最小系统一个,蓝牙模块一个、单片机一个、电机驱动模块一个、电动马达两个以及玩具车等。

三、实现细节
Android手机蓝牙与单片机蓝牙模块建立连接通信,发送a,b,c,d,e依次控制小车的前进、后退、左转、右转和停止。

单片机接收Android手机发送的指令,依次辨别,进而控制电机驱动模块,使马达具有不同的转向。

两个马达同时正转,小车表现前进
两个马达同时反转,小车表现后退
左边马达反转,右边马达正转,小车表现左转
右边马达反转,左边马达正转,小车表现右转
两个马达停止,小车表现停止
四、总结
本次实习项目遇到不少问题,其中最主要的有两点,一是对单片机串口通信掌握不好,主要是对单片机的不熟,每次
Android手机与蓝牙模块建立连接配对之后,却无法进行正常连接,导致从手机发送的指令,单片机无法收到。

二是单片机线路的连接花费了不少的时间,但最后终于解决了。

由于蓝牙通信建立的失败,本次实习项目只是一个半成品,希望以后有时间能解决蓝牙通信的问题。

通过这次实习,对嵌入式有了一个更好的理解,知道通过代码编写控制硬件,这或许就是嵌入式的一个主要作用。

基于51单片机的蓝牙遥控小车

基于51单片机的蓝牙遥控小车

基于51单片机的蓝牙遥控小车基于单片机的智能避障遥控小车目录第一章绪论 (1)1.1 研究背景和意义 (1)第二章系统框架及软硬件结构设计 (2)2.1 系统要求 (2)2.2 系统整体算法流程 (3)2.3 总体任务设计 (4)2.4 整体硬件结构设计 (5)2.5 整体软件结构设计 (6)第三章模块的详细设计 (7)3.1 L293D电机驱动模块 (7)3.1.1模块介绍 (7)3.1.2 PWM脉冲控制原理 (7)3.1.3 脉冲控制代码 (8)3.2 HC05蓝牙模块 (9)3.2.1 模块简介 (9)3.2.2 蓝牙串口程序说明 (10)3.2.3 模块引脚说明 (11)3.3 USB转TTL模块 (12)第四章系统功能设计与实现 (14)4.1 安卓手机蓝牙遥控的设计与实现 (14)4.1.1 设计基本思路 (14)4.1.2 遥控任务分配 (15)4.2.3 蓝牙遥控操作流程 (15)第五章软硬件调试 (18)5.1 硬件调试 (18)5.2 软件调试 (18)第一章绪论1.1 研究背景和意义智能化无处不在。

各种智能化设备在不同的领域中发挥着自己的特长,而在家用方面的智能有着相当重要的意义。

本次所设计的智能小车系统包含着对周围环境的检测、舵机控制以及短距离无线遥控等的功能,它需要实现微控制器、多传感器技术、蓝牙遥控、机械结构原理、数字逻辑、自动控制等各学科技术内容的渗透融合。

智能小车通过其上部搭载的89C52芯片作为核心控制器,通过多种传感器来获取周围环境信息并将采集到的信息输送给CPU,然后由CPU来给各个部分下达相对应的指令。

智能小车不仅价格低廉,而且甚至能够担任人类难以从事的任务,它在工业、农业以及社会生产生活等许多领域都起到了重要作用。

本次课题设计中所采用到的短距离无线遥控、单片机控制原理、多传感器技术、自动避障技术等等。

现在在工业制造、农业生产、国家安全、军事武器,医疗保健、太空探测等许多领域都日益发挥着其作用,在军事侦察、反恐、防暴、防核化等高危任务方面、环境污染检测方面和在恶劣环境中均有着非常好的发展前景,从这些方面可知本课题研究意义非凡。

单片机课程设计-蓝牙小车

单片机课程设计-蓝牙小车

单片机课程设计-蓝牙小车一、课程目标知识目标:1. 让学生理解单片机的基本原理,掌握其编程方法;2. 使学生了解蓝牙技术的原理及其在单片机控制中的应用;3. 帮助学生掌握蓝牙小车的设计原理,能分析其电路组成及功能。

技能目标:1. 培养学生动手实践能力,能独立完成单片机程序的编写和调试;2. 提高学生的问题解决能力,能够针对蓝牙小车出现的问题进行分析和修复;3. 培养学生的团队协作能力,通过小组合作完成蓝牙小车的组装和调试。

情感态度价值观目标:1. 培养学生对单片机及电子制作的兴趣,激发其创新意识;2. 培养学生积极的学习态度,使其具备自主学习、探究问题的精神;3. 增强学生的环保意识,使其关注可持续发展,并在设计过程中注重节能环保。

分析课程性质、学生特点和教学要求,本课程将目标分解为以下具体学习成果:1. 学生能够独立编写单片机程序,实现对蓝牙小车的控制;2. 学生能够分析并解决蓝牙小车在运行过程中出现的问题;3. 学生能够通过团队协作,完成蓝牙小车的组装、调试和优化;4. 学生能够关注单片机及蓝牙技术在生活中的应用,具备初步的创新设计能力。

二、教学内容本课程教学内容主要包括以下几部分:1. 单片机基础理论:介绍单片机的组成、工作原理及编程方法,涉及教材第1章至第3章内容。

2. 蓝牙技术原理:讲解蓝牙技术的原理、特点以及在单片机控制中的应用,涉及教材第4章内容。

3. 蓝牙小车设计原理:分析蓝牙小车的电路组成、功能及工作原理,涉及教材第5章内容。

4. 单片机编程与调试:教授如何编写和调试单片机程序,实现对蓝牙小车的控制,涉及教材第6章内容。

5. 蓝牙小车组装与调试:指导学生进行蓝牙小车的组装、调试及优化,涉及教材第7章内容。

6. 实践与创新:培养学生动手实践能力,激发创新意识,结合教材内容进行拓展实践。

教学进度安排如下:1. 第1-2周:学习单片机基础理论,完成教材第1章至第3章的学习;2. 第3周:学习蓝牙技术原理,完成教材第4章的学习;3. 第4周:学习蓝牙小车设计原理,完成教材第5章的学习;4. 第5-6周:进行单片机编程与调试,完成教材第6章的学习;5. 第7-8周:进行蓝牙小车组装与调试,完成教材第7章的学习;6. 第9-10周:进行实践与创新,结合所学内容进行拓展实践。

stm32蓝牙单片机小车

stm32蓝牙单片机小车
}
//将接收到字节发送给PC
*@param无
*@retval无
*/
void USART1INIT(void)
{
//相关结构体声明
GPIO_InitTypeDef GPIO_InitStructure;//端口
USART_InitTypeDef USART_InitStructure; //串口
NVIC_InitTypeDef NVIC_InitStructure; //NVIC
软件设计
1.
封装两个函数,如下:
void L298NINIT(void);//L298n电机初始化,时钟、端口配置
void L298Ctrl(uint8_t str);// L298n方向控制,参数0(停)1(前)2(后)3(左)4(右)
,附件源码。
2.
封装一个函数:void USART1INIT(void);//串口初始化,时钟、端口、波特率、中断优先级配置,附件源码。修改中断服务函数,进行接收数据判断,调用L298N的void L298Ctrl(uint8_t str);
GPIO_ResetBits( GPIOA, GPIO_Pin_5);
GPIO_ResetBits( GPIOA, GPIO_Pin_4);
GPIO_SetBits( GPIOB, GPIO_Pin_0);
GPIO_ResetBits( GPIOB, GPIO_Pin_1);
}
if(str==4)//右转
RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOA,ENABLE);
//端口配置
GPIO_InitStructure.GPIO_Pin=GPIO_Pin_0|GPIO_Pin_1;

单片机蓝牙控制小车

单片机蓝牙控制小车

课题:基于单片机的蓝牙控制小车专业:班级:学号:姓名:指导教师:设计日期:成绩:重庆大学城市科技学院电气信息学院目录1.设计目的作用 (2)2.设计要求 (2)3.设计的具体实现 (2)3.1设计原理 (2)3.2系统设计 (12)3.3系统实现 (13)4.总结 (19)参考文献 (20)附录 (21)附录1 (21)附录2 (22)C51蓝牙控制小车设计报告1设计目的与意义目的与意义:提高学生动手能力,培养学生的思维,巩固理论知识,让我们能对单片机更加深入的了解,加深同学们对单片机的认识,通过自己动手让小车跑起来还能让同学们更加有积极性,参与感,成就感。

让学生们亲自体验这门课程的神奇性。

因为无线技术的广泛使用,使蓝牙技术的发展成为了趋势之一,蓝牙可以发送和接受语音和数据,满足了大多数人的需求,它也融合了其他相关产品的特点,也是这样技术变得更多样性。

实现了无线控制小车,摆脱了有线控制的不方便,更加智能。

2设计要求SPP蓝牙串口调试助手 ----》聊天窗口--》1、在Bluetooth_Car项目中添加超声波躲避障碍功能(在小车前进的过程中,实时检测障碍物,一旦检测的距离,接近设定的值,触发蜂鸣器,报警系统工作,小车停止前进);2、在Bluetooth_Car项目中的串口中断服务函数中,添加小车前进的8个方向,前后左右,左前,右前,左后,右后;3、利用外部中断,强制停止小车运行(无论小车现在处于什么状态),蜂鸣器报警1s后,可再运行;4、用手机的蓝牙串口调试助手来远程操作小车。

3.设计的具体实现3.1设计原理芯片常识: STM8、C52 、STM32 、ARMC52:主要做末端的控制 11.0592MHZSTM32:主要做工业控制领域——智能设备 168MARM:主要做消费市场——手机==============单片机小车==========了解原理图和数据手册一、软件建立工程建立工程时芯片选择--》Atmel-->AT89C52设置芯片频率,选择生成16进制可执行文件。

C51蓝牙小车课程设计

C51蓝牙小车课程设计

C51蓝牙小车课程设计一、课程目标知识目标:1. 掌握C51单片机的原理及应用,理解蓝牙通信技术的基本概念;2. 学习并掌握蓝牙模块的配置与使用,了解蓝牙小车的基本结构及功能;3. 了解电路原理图及编程方法,能运用所学知识分析并解决实际问题。

技能目标:1. 能够独立完成蓝牙小车的组装和调试,提高动手实践能力;2. 学会使用C语言编程,实现对蓝牙小车的控制,提高编程技能;3. 能够通过团队协作,共同完成蓝牙小车的制作,提高沟通与协作能力。

情感态度价值观目标:1. 培养学生对电子制作和编程的兴趣,激发创新精神;2. 培养学生面对问题积极思考、勇于探索的良好品质;3. 增强学生的团队合作意识,培养集体荣誉感。

分析课程性质、学生特点和教学要求,本课程旨在通过实践操作,使学生在掌握C51单片机和蓝牙通信技术的基础上,培养实际动手能力、编程技能和团队协作能力。

课程目标分解为具体学习成果,以便于后续教学设计和评估。

通过本课程的学习,学生将能够具备运用所学知识解决实际问题的能力,同时培养良好的情感态度价值观。

二、教学内容1. C51单片机原理及编程基础:介绍C51单片机的结构、工作原理,学习C语言编程基础,掌握中断、定时器等基本功能的使用。

相关教材章节:第1章 单片机概述,第2章 C语言基础,第3章 中断与定时器。

2. 蓝牙通信技术:学习蓝牙技术的基本概念、原理和应用,了解蓝牙模块的配置与使用方法。

相关教材章节:第4章 通信技术基础,第5章 蓝牙技术及其应用。

3. 蓝牙小车硬件结构与组装:分析蓝牙小车的硬件结构,学习各部分的连接方法和调试技巧。

相关教材章节:第6章 硬件系统设计,第7章 系统调试与优化。

4. 蓝牙小车程序设计:结合C51单片机编程,设计蓝牙小车的控制程序,实现对小车的运动控制。

相关教材章节:第8章 单片机程序设计,第9章 蓝牙小车控制程序设计。

5. 实践操作与团队协作:分组进行蓝牙小车的组装、调试和程序设计,培养实际动手能力,提高团队协作能力。

基于51单片机(stc89c52)手机蓝牙控制小车—程序

基于51单片机(stc89c52)手机蓝牙控制小车—程序

基于stc89c52手机蓝牙控制小车—程序先简单介绍下开发环境,芯片类型是stc89c52,集成开发环境用的是Keil4需要准备:L298N驱动电路板,两个直流电机,HC-05蓝牙模块,亚克力板,一个万向轮和两个普通小轮,stc89c52最小系统板,一个7.5伏电源,若干杜邦线。

连接方式:L298N驱动电路与单片机部分(注意:单片机要与HC-05蓝牙模块的共地)HC-05蓝牙模块与单片机部分HC-05蓝牙模块的RX接单片机的TX;HC-05蓝牙模块的TX接单片机的RX;HC-05蓝牙模块的GND接单片机的GND;HC-05蓝牙模块的VCC接单片机的VCC。

代码:#include <REGX52.H>void UART_Init()//******************{SCON=0x50;//工作模式PCON &=0x7F;//波特率不倍速//配置定时器,与波特率有关TMOD&=0x0F;//设定定时器模式TMOD|=0x20;//设定定时器模式TL1=0xFD;//设定定时器初始值TH1=0xFD;//设定定时器重装值ET1=0;//禁止定时器1中断TR1=1;//启动定时器1EA=1;//启动串口中断ES=1;//串口使能}void Timer0_Init()//10ms{//定时器部分TMOD&=0xF0;//将低四位清零,高四位不变TMOD|=0x01;//将最低的位置1,其余不变TR0=1;//T0定时器的运行控制TF0=0;//为一时跳入中断函数会自动清0和置1 TH0=0xDC;//高位TL0=0x00;//低位//中断器部分ET0=1;//IE总开关前的开关EA=1;//中断总开关PT0=0;//高级为1,低级为0}unsigned char control=0,compare1=7,compare2=7;unsigned int T0count=0;void main(){UART_Init();//初始化串口通信Timer0_Init();//初始化定时器while (1){}}void UART_Routine() interrupt 4//串口中断部分{if(RI==1){control=SBUF; //单片机接收值RI=0;//手动清除标志位}}void Timer0_Routine() interrupt 1//T0口中断程序{TH0=0xDC;//高位TL0=0x00;//低位//重新刷新if(control=='0') //停车{P2_0=0;P2_1=0;P2_2=0;}if(control=='1') //后退{T0count++;T0count%=10;//100msif(T0count<=compare1){P2_0=0;P2_1=1;}else{P2_0=0;P2_1=0;}if(T0count<=compare2){P2_2=0;P2_3=1;}else{P2_2=0;P2_3=0;}}else if(control=='2')//直行{T0count++;T0count%=10;//100msif(T0count<=compare1){P2_0=1;P2_1=0;}else{P2_0=0;P2_1=0;}if(T0count<=compare2){P2_2=1;}else{P2_2=0;P2_3=0;}}else if(control=='3')//右转{T0count++;T0count%=10;//100msif(T0count<=7){P2_0=1;P2_1=0;}else{P2_0=0;P2_1=0;}P2_2=0;P2_3=0;}else if(control=='4')//左转{T0count++;T0count%=10;//100msif(T0count<=7){P2_2=1;P2_3=0;}else{P2_2=0;P2_3=0;}P2_0=0;P2_1=0;}}。

【大学论文】单片机课程设计论文-蓝牙控制小车(WORD档)

【大学论文】单片机课程设计论文-蓝牙控制小车(WORD档)

单片机课程设计蓝牙控制小车设计人员:班级:完成日期:指导老师:摘要:利用蓝牙进行无线传输数据,并以STC89C52单片机为控制芯片控制电机旋转,从而实现通过蓝牙控制小车运动的目的。

其中电机驱动为L298N驱动电路,蓝牙模块与单片机的TXD和RXD相连,进行串口通信。

速度由单片机输出的PWM波控制。

1.实验目的:通过《单片机原理与应用》课程设计,使学生掌握单片机及其扩展系统设计的方法和设计原则及相应的硬件调试的方法。

进一步加深单片机及其扩展系统设计和应用的理解2.设计任务与要求通过设计双单片机控制系统,实现蓝牙控制小车的功能。

单片机1通过电机驱动模块来控制电机正反转,从而驱动小车运动。

单片机2通过串口TXD,RXD与蓝牙模块从机连接,进行串口通讯,而蓝牙模块主机与电脑相连,从而实现电脑与单片机二之间的通讯。

在电脑上通过使用串口调试助手软件向单片机发送控制命令,单片机二接受到电脑的控制命令后,将数据命令转换为I/O口高点电平控制命令,传送到单片机一,进而单片机一根据命令来控制电机而正反转,从而实现电脑控制小车前进、后退、转弯。

3. 电路设计3.1单片机控制电路:单片机是控制单元的核心。

起着控制小车所有运行状态的作用。

单片机控制模块使用的是STC89C52,使用该芯片很容易实现对其他模块的控制。

通过对单片机STC89C52写入程序,可以方便的用软件来控制整个过程.3.2单片机最小系统:包括单片机主机、复位电路、时钟电路。

3.3双单片机系统:有两个单片机最小系统组成,其中单片机1的P0.2-P0.7口通过拨码开关分别与单片机2的P3.2-P3.7口相连,利用拨码来控制I/O 端口的导通与断开。

3.4电机驱动系统直流电机和步进电机都可以用于小车驱动。

故有两种方案。

方案一:使用直流电机,加上适当减速比的减速器。

直流电机具有良好的调速性能,控制起来也比较简单。

直流电机只要通上直流电源就可连续不断的转动,调节电压的大小就可以改变电机的速度。

毕业设计(论文)-基于蓝牙遥控的智能小车设计

毕业设计(论文)-基于蓝牙遥控的智能小车设计

摘要无线遥控的小车,可以在危险的环境作业,人员搜索,可以在各类领域中发挥着它特殊的作用,本次设计是选择基于蓝牙遥控的多功能智能小车为对象。

控制系统以C51单片机为主控芯片,采用L298N为电机驱动芯片、HC-06蓝牙无线模块、12864液晶显示模块、四路循迹模块等构成外围扩展电路。

将自制的控制电路、控制程序和四轮小车机械相结合,制作多功能智能小车。

实验调试实现了智能小车的蓝牙无线遥控、自动避障、自动测距及各种灯光的功能。

关键词:51单片机;蓝牙遥控;智能小车目录摘要 (1)1. 绪论.................................. 错误!未定义书签。

1.1 研究背景与意义 (4)1.2课题目的 (5)1.3课题研究内容 (5)2 方案论证 (6)2.1 总体方案设计 (6)2.2设计系统的功能要求 (7)2.3 系统硬件方案 (7)3系统硬件设计 (9)3.1STC89C52芯片简介 (9)3.2 STC89C52最小系统 (10)3.3电机驱动设计 (11)3.4显示电路设计 (11)3.5 蓝牙模块设计 (12)3.6 PCB图设计 (13)3.7 智能车结构分析 (14)3.7.1 底板设计 (14)3.7.2电机与底板的连接支架设计 (15)3..7.3整体装配图 (15)3.7.4整车材料明细 (15)4.系统软件设计 (16)4.1系统的程序流程 (16)4.2蓝牙模块参数设置程序 (16)4.3蓝牙发送程序接收程序和中断程序 (17)4.4自动避障及灯光声音控制程序设计 (19)4.5液晶显示程序设计 (21)5 调试结果分析 (25)5.1蓝牙遥控调试及结果分析 (25)5.2避障功能调试及结果分析 (25)5.3无人驾驶模式调试及结果分析 (25)5.4液晶显示功能调试及结果分析 (25)5.4调试过程中遇到的困难及解决方法 (25)6.总结 (26)致谢 (27)参考文献 (28)附录:程序 (29)1.绪论1.1 研究背景与意义随着汽车工业的的迅速发展,关于汽车的研究也就越来越受人关注。

基于51单片机的蓝牙小车

基于51单片机的蓝牙小车

《专业综合设计与实验》课程设计报告书2019年11月课程设计报告书1.硬件电路设计1.1总体设计智能车主要现实远程来控制智能车的运动。

其主要模块为:单片机模块、无线通讯模块、电机驱动模块。

其主要结构框图如下图1所示。

图1主要结构框图总体仿真电路图:图2 总体仿真电路图单片机最小系统原理图:图3 复位电路与晶振电路图4 单片机最小系统原理图1.2 L298N驱动模块及原理介绍蓝牙小车采用直流电机的驱动采用L298N驱动模块,其原理图如图4所示:图5 L298N驱动模块原理图L298N驱动模块采用ST公司原装全新的L298N芯片,采用SMT工艺稳定性高,采用高质量铝点解电容,使电路温度工作。

可以直接驱动两路3-16V直流电机,并提供了5V输出接口(输入最低只要6V),可以给5V单片机电路供电(低纹波系数),支持3.3V MCUARM控制,可以方便的控制电流电机速度和方向,是智能小车必备利器。

表1 驱动状态编码表1.3蓝牙模块蓝牙模块支持短距离无线传输,可以通过手机与蓝牙模块的配对实现对小车的无线控制。

本小车采用的是HC-05蓝牙芯片,在HC-05芯片里已经将蓝牙协议封装好,只需要通过串口通信实现上位机(手机)与下位机(51单片机)的无线通信。

蓝牙模块中蓝牙芯片的TXD与RXD分别于单片机的RXD与TXD相接,VCC与单片机电源,GND与单片机GND相连。

HC-05使用R1114作为稳压芯片,将单片机提供的5V电压转换为3.3V的低电压,为蓝牙芯片供电。

图6 蓝牙连接原理图2.软件设计在本次设计中,主程序主要是在单片机的控制下,对蓝牙模块输入的信息进行存储分析,来控制电机驱动,以达到控制小车的前进、后退、左转、右转。

在这个过程中,单片机首先进行初始化,包括设置单片机各个端口的方向,各个变量的初始化,以及单片机振荡频率的校准等。

单片机定时对蓝牙模块串口读数据,如果串口的数据读出,则对读出的数据进行分析,读出的数据如果为g、b、l、r、s则分别对应小车的前进、后退、左转、右转、图8 实物连接图图9 APP遥控界面截图以上是蓝牙小车静止时的图片,当手机客户端按下前进按钮后,小车两个轮子都前进;当手机客户端按下后退按钮时,小车两个轮子都后退;当手机客户端按下左转按钮后,小车做轮后退右轮前进;当手机客户端按下右转按钮时,小车左轮前进右轮后退。

基于单片机和蓝牙控制的智能小车设计

基于单片机和蓝牙控制的智能小车设计

0 引言随着科技水平高速发展,各式各样的智能设备走进了人们的日常生活,各类智能家用电器在现代家庭的使用比例逐渐升高。

但这些智能家电的遥控器各式各样,并不能通用,给人们的使用带来了不便。

同时,在中国,智能手机的使用已非常普遍,因此用智能手机当作遥控器对各类家电进行控制越来越受到大家的关注[1-3]。

本文设计了一种基于单片机和安卓手机蓝牙控制的智能小车系统,实现了手机对小车的遥控设计,正确有效,且该系统只需将某些模块稍作改动即可控制其它家用电器,方便快捷。

1 总体方案设计该系统通过智能手机和小车上的蓝牙模进行通信,从而实现小车上的单片机来控制电机驱动实现小车的前进、后退、左转、右转和停止。

蓝牙接收模块与手机端的蓝牙连接配对,来接收手机发送过来的蓝牙无线信号,再将该信号传递给单片机,通过单片机来分析传递过来的信号来跳转不同的图1 系统总体框图2 硬件设计整个系统的硬件设计共有4部分组成:单片机控制模块、电源模块、电机驱动模块以及蓝牙模块。

其中电源模块为整个系统供电,包括单片机、电机驱动、蓝牙模块等,为简单操作,采用干电池供电模式,后期还可改装为太阳能与蓄电池配合供电方式。

2.1 单片机控制模块单片机控制系统实现对蓝牙模块输入数据采集、分析idea of a wireless remote control car is given. The system’s hardware and software were debugged. And they are debugged online. The debugging result is correct and effective. The result shows that the car can receive the signal sent by the mobile phone, and can flexibly execute the real-time control functions such as forward, backward, turn left, turn right, and stop.Keyword: smartphone; Bluetooth; SCM; smart car28图3 电机驱动模块图4 蓝牙模块表1 电机驱动模块原件清单位号名称规格数量电机输出A、B两位接线端子两位接线端子2电源接口两位接线端子两位接线端子1图5 主程序流程图本设计关键还在于蓝牙信号的通信,手机所发送的信号通过小车上的蓝牙模块接收,若两者不能匹配功能也不能实因此蓝牙模块的软件尤为重要,其流程图如图6所示。

蓝牙遥控小车

蓝牙遥控小车

蓝牙遥控小车
一、实验目的
通过设计进一步掌握51单片机的应用,特别是在嵌入式系统中的应用。

进一步学习51单片机在系统中的控制功能,能够合理设计单片机的外围电路,并使之与单片机构成整个系统。

二、设计方案
该智能车采用蓝牙模块对单片机进行控制,单片机根据采集到的信号的不同状态判断小车当前状态,通过电机驱动芯片L298N发出控制命令,控制电机的工作状态以实现对小车姿态的控制。

本次设计的蓝牙小车可实现5种状态:前进、后退、左转、右转、停止。

三、硬件电路设计
1、最小系统(AT89C52)
2、电源装置(LM7805)
3、电机驱动电路(L298N)
4、蓝牙模块(HC-06)
5、原理图(暂无)
四、软件系统
1、手机蓝牙控制软件(基于Android的蓝牙串口助手)
2、控制程序
五、笔记
六.总结
虽然一切都还没开始,但是我相信在兴趣和坚持的作用下我一定可以做出属于自己的蓝牙遥控小车,加油!。

基于51单片机的蓝牙小车设计

基于51单片机的蓝牙小车设计

内容仅为学习使用,多处摘录源于网络,请勿用于毕业论文基于蓝牙遥控的智能小车设计与制作摘要:关键词:单片机;蓝牙遥控;PWM调速目录第一章前言----------------------------------------------------------------------4 第二章方案比较与论证 ------------------------------------------------------5 2.1总体方案设计---------------------------------------------------------------------5 2.2蓝牙模块选择---------------------------------------------------------------------6 2.3 电机驱动模块选择--------------------------------------------------------------6 第三章智能小车底盘结构分析 --------------------------------------------7 3.1底板设计----------------------------------------------------------------------------7 3.2 电机与底板的连接支架设计--------------------------------------------------8 3.3整体装配图-------------------------------------------------------------------------9第四章控制系统电路设计 -------------------------------------------------10 4.1 单片机最小系统设计----------------------------------------------------------10 4.2 电机驱动电路设计-------------------------------------------------------------11 4.3 蓝牙模块设计-------------------------------------------------------------------13 4.4 电源电路设计--------------------------------------------------------------------15 4.5 电路板设计----------------------------------------------------------------------16 第五章设计的元器件清单--------------------------------------------------16 第六章调试结果分析 --------------------------------------------------------17 6.1 各模块功能调试----------------------------------------------------------------17 6.2设计的总结----------------------------------------------------------------------18 参考文献-------------------------------------------------------------------------19附录A----------------------------------------------------------------------------20 附录B----------------------------------------------------------------------------21 附录C----------------------------------------------------------------------------22第一章前言NC第二章方案比较与论证本次毕业设计主要是针对蓝牙智能小车进行分析、设计和制作。

基于51单片机的蓝牙循迹小车

基于51单片机的蓝牙循迹小车

基于51单⽚机的蓝⽛循迹⼩车51单⽚机课程设计做了辆蓝⽛⼩车,下⾯是对课程设计内容的⼀些总结基于51单⽚机的蓝⽛循迹⼩车硬件模块L298N具体如图所⽰:⼯作原理简介:可以直接驱动两路 3-16V 直流电机,并提供了 5V 输出接⼝(输⼊最低只要 6V),可以给 5V 单⽚机电路系统供电。

输⼊电压最好是7v以上,输⼊电压低了会导致⼀系列问题,在后⾯有具体实践总结具体应⽤:可以⽅便的控制直流电机速度和⽅向,也可以控制 2 相步进电机,5 线 4 相步进电机。

管脚应⽤可以参考如图所⽰:①板载5V输出使能:如果跳线帽接上,则5v端⼦可以输出电压,若跳线帽没有街上,则12v输⼊端⼦没有作⽤,只能5v输⼊⼝输⼊(如果不接上直接废了,5v 输⼊基本不能使电机模块正常⼯作)②AB通道使能:端⼦接在上⾯表⽰AB通道⼀直保持⾼电平,处于使能状态,并且电压和5v输⼊端⼝电压相同;若处于没有使能状态,直接影响到输⼊端,让其⽆法⼯作!③单⽚机IO控制输⼊ + 马达AB输出 :顾名思义,四个IO输⼊端⼝和单⽚机四个IO⼝相连,然后通过电机驱动模块(双H桥电路)马达AB输出,以获得更⼤的驱动直流减速电机的能⼒,带动电机转动!B站直接搜L298N电机驱动模块,有视频详情介绍问题以及解决⽅案下⾯是⼀些使⽤L298N驱动电机的⼀些问题以及解决⽅法总结问题:1.直流减速电机不能正常转动,⼀个轮⼦只能单⽅向转动2.使能端⼝帽摘下来后,pwm信号输⼊问题3.供电问题解决:1.起初⽤4节南孚电池供电,⽤万⽤表测电压⼩于4.8v(电池快没啥电了),更换四节电池后⽤万⽤表测得4.9v+,上⾯出现的问题解决了2.输⼊端电压⼩于7v(⽤得四节南孚电池6v不到供电),使能电压和5v输⼊端⼦的电压相同,经测量5v端⼝电压只有3.8v左右,故使能电压就只有3.8v左右了,对PWM输出使能有⼀定影响3.L298N电机驱动中有稳压降压模块,如果供电⾜够⼤(⼤于7v),那么稳压降压模块会发挥作⽤,使得5v输⼊端⼦、使能端⼦、马达电机都能有稳定的5v⾼电平输出。

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

课题:基于单片机得蓝牙控制小车专业:班级:学号:姓名:指导教师:设计日期:成绩:重庆大学城市科技学院电气信息学院目录1、设计目得作用 (2)2、设计要求.............................................. 23、设计得具体实现ﻩ23、1设计原理 (2)3、2系统设计12ﻩ3、3系统实现13ﻩ4、总结19ﻩ参考文献................................................ 20附录 ................................................... 21附录121ﻩ附录22ﻩ2C51蓝牙控制小车设计报告1设计目得与意义目得与意义:提高学生动手能力,培养学生得思维,巩固理论知识,让我们能对单片机更加深入得了解,加深同学们对单片机得认识,通过自己动手让小车跑起来还能让同学们更加有积极性,参与感,成就感.让学生们亲自体验这门课程得神奇性。

因为无线技术得广泛使用,使蓝牙技术得发展成为了趋势之一,蓝牙可以发送与接受语音与数据,满足了大多数人得需求,它也融合了其她相关产品得特点,也就是这样技术变得更多样性。

实现了无线控制小车,摆脱了有线控制得不方便,更加智能。

2设计要求SPP蓝牙串口调试助手---—》聊天窗口-—》1、在Bluetooth_Car项目中添加超声波躲避障碍功能(在小车前进得过程中,实时检测障碍物,一旦检测得距离,接近设定得值,触发蜂鸣器,报警系统工作,小车停止前进);2、在Bluetooth_Car项目中得串口中断服务函数中,添加小车前进得8个方向 ,前后左右,左前,右前,左后,右后;3、利用外部中断,强制停止小车运行(无论小车现在处于什么状态),蜂鸣器报警1s后,可再运行;4、用手机得蓝牙串口调试助手来远程操作小车。

3、设计得具体实现3、1设计原理芯片常识: STM8、C52 、STM32 、ARMC52:主要做末端得控制11、0592MHZSTM32:主要做工业控制领域--智能设备168MARM:主要做消费市场——手机==============单片机小车==========了解原理图与数据手册一、软件建立工程ﻩ建立工程时芯片选择—-》Atmel-—>AT89C52ﻩ设置芯片频率,选择生成16进制可执行文件.=============中断========单片机获取外部数据得方式:1、程序控制方式a、无条件发送方式单片机认为外部设备一直都就是准备好得,直接就拿数据使用。

b、条件判断方式在满足一定条件才获取数据.2、中断方式由外部控制得,当有中断请求产生得时候,就可以在中断里面去实现获取数据。

3、DMA直接存储控制器当需要从外界获取数据得时候,DMA可以向CPU申请获取数据,由DMA直接获取数据。

使用DMA可以绕过CPU处理数据,降低CPU得使用率。

中断:当CPU正常运行得时候,突然收到一个中断请求(任务),完成中断任务之后立即返回原来得程序继续执行.中断源:中断来源,发送中断得源头中断请求:中断发出得请求,申请执行任务中断响应:CPU响应中断请求,暂停正在执行得任务,转而执行中断任务8个中断源:ﻩINT0ﻩ外部中断0ﻩINT1 外部中断1ﻩINT2 外部中断2ﻩINT3外部中断3T0ﻩ定时器0T1 定时器1ﻩT2ﻩ定时器2Uart 串口中断中断有优先级:分为4级,从0~3,数字越大优先级越高,高优先级得中断可以打断低优先级得中断。

中断得查询次序:在中断优先级相同得情况下,并且两个中断同时产生得时候,会优先执行查询次序级别高得中断、查询次序不能打断中断、中断服务函数:void INT1_func(void) interrupt 2{ﻩif()}小车两轮驱动:单片机得IO口不能直接驱动电机运行,必须使用驱动模块才可以。

电机转动原理:电机得两条线一根接电源正极,一根接负极就可以转动,当电极得方向改变,转动得方向也会改变。

BIB = 0;控制右轮电机,如果想让轮子转动,只需要设置以上两个引脚,一个为1,一个为0、P0、0 左轮 1P0、1左轮 0P0、2 右轮 1P0、3右轮0如果轮子想要动起来,需要接电源线。

思考:封装函数:前进、后退、停止、左前转、右前转、左后转、右后转=============定时器==============定时器就就是定时,定时产生中断或者就是计数.工作方式:定时器:主要产生定时中断计数器:计时计数工作模式:模式0:12位寄存器模式1:16位寄存器模式2:8位自动重装载寄存器模式3:两个8位寄存器,T1无效时钟周期:就就是频率得倒数假设晶振12M,时钟周期就是1/12us,实际上大多使用得就是:1/11、0592状态周期:状态周期就是时钟周期得两倍:1/12*212个时钟周期定为1个机器周期,如果晶振就是12M,那么一个机器周期就刚好就是1us。

寄存器:TCON 控制寄存器 TMOD模式寄存器定时器0作模式1: TMOD、1 = 0TMOD、0 = 1设置寄存器计数得初值:TL0与TH050ms = (65536-初值)* (1/11、0592*12)50000us = (65536-初值ﻩ)* 1、0850746080 =65536—初值初值= 19456 ==》0x4C00TH0= 0x4C;TL0 = 0x00;=============串口==============一、计算机内部通讯得方式:UART(串口)、I2C、SPI、1-Write(单总线)二、数据通讯方式并行通讯:多个任务同时进行,增加速度。

串行通讯:数据只通过一根数据线传输,一位一位得传输数据。

三、串行通讯同步通讯:发送一位数据必须要接收一位数据,通过时钟线确定数据收发:I2C、SPI异步通讯:可以独立收发数据,不需要发送数据得时候接收数据。

:串口UART、1w总线单工:只能一方发送数据,一方接收数据(收音机)半双工:同一时刻只能一方发送数据,一方接收数据,但就是方向可以转换.(对讲机)全双工:数据在同一时刻可以收也可以发.(电话)四、电平特性TTL与RS232TTL:0V~5V 0V表示数据0 3、3V/5V表示数据1RS232:—15V~+15V 3V~15V表示数据0 -15V~-3V表示数据1 单片机直接使用得就是TTL电平:VCC正极;GND负极; TXD数据发送; RXD数据接收五、串行通讯得协议六、单片机串口寄存器SCON控制寄存器串口选择方式1,8位UART,波特率可变。

设置SCON寄存器:SCON = // 0101 0000 ==》 0x50PCON电源管理寄存器,设置SMOD得值SMOD默认值就就是0,也可以主动设置为0、设置好之后需要开启总中断:EA = 1;ﻩES = 1;串口波特率计算:波特率 = (2^SMOD /32)* (定时器溢出率)9600 = (1/32)* (11059200/12/(256—TH1)) 9600 = (1/32)*(921600/(256-TH1))921600/(256-TH1)= 307200(256-TH1) = 3TH1 = 253 ==〉0xFD串口发送数据SUBF = 'h’; // 发送数据,还要判断就是否发送3、2系统设计项目框图:3、3系统实现程序代码如下:#include 〈reg52、h>ﻩ//器件配置文件#include<intrins、h>#defineuintunsigned int#define uchar unsignedchar#define LCM_DataP2#defineBusy 0x80//用于检测LCM状态字中得Busy标识sbit RX = P1^1;sbit TX=P1^2 ;sbit LCM_RW=P0^3; //定义LCD引脚sbit LCM_RS= P0^4;sbit LCM_E = P0^2;sbitFM=P0^7;//定义蜂鸣器sbit AIA= P2^3;//定义电机sbit AIB = P2^2;sbit BIB = P2^1;sbitBIA =P2^0;void LCMInit(void);void DisplayOneChar(unsigned char X, unsignedchar Y,unsigned char DData);voidDisplayListChar(unsigned charX,unsigned char Y,unsigned char code*DData);void Delay5Ms(void);void Delay400Ms(void);void Decode(unsignedcharScanCode);void WriteDataLCM(unsigned char WDLCM);void WritemandLCM(unsigned charWCLCM,BuysC);void SendOneByte(unsigned char c);unsignedcharReadDataLCM(void);unsigned char ReadStatusLCM(void);unsigned charcodemcustudio[]={"YueQian"};unsignedchar code email[]={" "};unsigned char code Cls[]= {" ”};unsignedchar code ASCII[15] = {'0’,'1','2',’3’,’4','5’,'6',’7’,'8','9','、',’-','M'};static unsigned char DisNum=0; //显示用指针ﻩﻩﻩunsigned int time=0;unsignedlong S=0;bit flag =0;unsigned chardisbuff[4]={0,0,0,0,};void Init_Int1(void){ﻩ IT1= 1; //下降沿触发ﻩEX1= 1;//开启外部中断1ﻩ EA=1;//开启总中断}void delay_ms(uintx)//延时函数ﻩuinti;while(x--){ﻩfor(i=0;i〈133;i++);ﻩ}}void car_go() //控制小车得函数前进{ﻩAIA = 1;//运用电机得电位差来控制小车得前进方向ﻩAIB = 0;ﻩBIA=1;BIB =0;}void car_back()//后退{AIA= 0;ﻩ AIB =1;BIA=0;ﻩBIB= 1;}voidright()//右转{AIA=1;ﻩAIB =0;BIA= 1;BIB = 1;}void left()//左转{ﻩAIA=1;ﻩAIB = 1;ﻩBIA = 1;ﻩBIB = 0;void go_right() //右转前进{AIA= 1;ﻩAIB =0;ﻩBIA= 1;ﻩBIB = 1;ﻩdelay_ms(500);AIA=1;ﻩAIB = 0;BIA =1;BIB = 0;}void go_left() //左转前进{ ﻩﻩAIA= 1;AIB= 1;BIA =1;BIB =0;ﻩdelay_ms(500);ﻩAIA= 1;ﻩAIB= 0;ﻩBIA = 1;BIB=0;}void back_right()//右转后退{AIA = 1;ﻩAIB =1;BIA =1;BIB= 0;delay_ms(500);ﻩAIA= 0;AIB= 1;ﻩBIA = 0;BIB= 1;}voidback_left()//左转后退{AIA =1;AIB =0;ﻩBIA = 1;BIB =1;delay_ms(500);AIA = 0;ﻩAIB = 1;BIA =0;BIB = 1;}void WriteDataLCM(unsigned charWDLCM)//写数据{ReadStatusLCM();//检测忙ﻩLCM_Data=WDLCM;LCM_RS = 1;ﻩLCM_RW=0;ﻩLCM_E = 0; //若晶振速度太高可以在这后加小得延时LCM_E =0; //延时ﻩLCM_E= 1;}voidWritemandLCM(unsignedcharWCLCM,BuysC)//写指令BuysC为0时忽略忙检测{if(BuysC)ReadStatusLCM(); //根据需要检测忙ﻩLCM_Data =WCLCM;ﻩLCM_RS =0;LCM_RW=0;LCM_E = 0;ﻩLCM_E= 0;ﻩLCM_E= 1;}unsigned char ReadDataLCM(void)//读数据{LCM_RS=1;LCM_RW=1;LCM_E = 0;ﻩLCM_E = 0;ﻩLCM_E = 1;ﻩreturn(LCM_Data);}unsigned charReadStatusLCM(void)//读状态{LCM_Data =0xFF;ﻩLCM_RS=0;LCM_RW =1;ﻩLCM_E= 0;ﻩLCM_E =0;LCM_E = 1;while (LCM_Data & Busy); //检测忙信号return(LCM_Data);}voidLCMInit(void) //LCM初始化{ﻩLCM_Data =0;ﻩWritemandLCM(0x38,0); //三次显示模式设置,不检测忙信号Delay5Ms();WritemandLCM(0x38,0);Delay5Ms();WritemandLCM(0x38,0);Delay5Ms();ﻩWritemandLCM(0x38,1);//显示模式设置,开始要求每次检测忙信号WritemandLCM(0x08,1);//关闭显示ﻩWritemandLCM(0x01,1);//显示清屏WritemandLCM(0x06,1);//显示光标移动设置ﻩWritemandLCM(0x0F,1);// 显示开及光标设置}//按指定位置显示一个字符voidDisplayOneChar(unsigned char X,unsigned charY,unsigned charDData){ﻩY&=0x1;X &= 0xF;//限制X不能大于15,Y不能大于1ﻩif (Y)X|= 0x40;//当要显示第二行时地址码+0x40;X |=0x80; //算出指令码WritemandLCM(X,1);//发命令字WriteDataLCM(DData);//发数据}//按指定位置显示一串字符void DisplayListChar(unsignedcharX, unsigned char Y,unsigned char code*DData){unsigned charListLength;ListLength =0;Y &=0x1;X&=0xF; //限制X不能大于15,Y不能大于1while(DData[ListLength]>0x19)//若到达字串尾则退出ﻩﻩ{ﻩﻩﻩif(X〈= 0xF)//X坐标应小于0xFﻩﻩ{ﻩDisplayOneChar(X, Y, DData[ListLength]); /显示单个字符ﻩﻩﻩListLength++;ﻩﻩX++;ﻩﻩ}}}void Delay5Ms(void) //5ms延时{unsigned intTempCyc = 5552;while(TempCyc—-);}voidDelay400Ms(void)//400ms延时{ﻩunsigned char TempCycA=5;unsigned intTempCycB;while(TempCycA--)ﻩﻩ{TempCycB=7269;while(TempCycB--);ﻩﻩ};}/**************超声波测距函数*************************/ voidConut(void){time=TH0*256+TL0;TH0=0;TL0=0;S=(time*1、87)/100;//算出来就是CM/*晶振为11、0592MHz时|t(us)= 计数* (12/11、0592)*(1/58)| = 计数* 0、0187|= (计数*1、87)/100*/if((S>=700)||flag==1)//超出测量范围显示“-”{ﻩflag=0;DisplayOneChar(0, 1,ASCII[11]);DisplayOneChar(1, 1, ASCII[10]);//显示点DisplayOneChar(2, 1, ASCII[11]);DisplayOneChar(3,1, ASCII[11]);DisplayOneChar(4,1,ASCII[12]); //显示M}else{disbuff[0]=S%1000/100;disbuff[1]=S%1000%100/10;disbuff[2]=S%1000%10 %10;DisplayOneChar(0,1,ASCII[disbuff[0]]);DisplayOneChar(1,1,ASCII[10]);ﻩ//显示点DisplayOneChar(2, 1, ASCII[disbuff[1]]);DisplayOneChar(3,1,ASCII[disbuff[2]]);DisplayOneChar(4,1,ASCII[12]);//显示M}}/********************************************************//***********定时器T0中断服务函数***********/void Timer0IRQ()interrupt1 //T0中断用来计数器溢出,超过测距范围{flag=1;}/********************触发超声波模块************************************/ //超声波模块Trig控制端给大于10us得高电平触发模块测距voidStartModule()ﻩ//启动模块{ﻩTX=1;ﻩ//启动一次模块ﻩ_nop_();ﻩ_nop_();_nop_();_nop_();ﻩ_nop_();_nop_();_nop_();_nop_();_nop_();_nop_();ﻩ_nop_();_nop_();ﻩ_nop_();_nop_();ﻩ_nop_();ﻩ_nop_();_nop_();_nop_();ﻩ_nop_();ﻩ_nop_();_nop_();TX=0;}/********************************************************/void delayms(unsigned int ms){unsigned chari=100,j;for(;ms;ms—-){ﻩwhile(--i){ﻩﻩj=10;ﻩﻩwhile(——j);ﻩﻩ}ﻩ}}/******************************/void SendOneByte(unsigned char c)//发送单个字符{SBUF= c;while(!TI);TI =0;}/*********************************************************/ voidmain(void){ﻩunsignedchar TempCyc;ﻩDelay400Ms();//启动等待,等LCM讲入工作状态LCMInit();//LCM初始化Delay5Ms(); //延时片刻(可不要)DisplayListChar(0,0,mcustudio);DisplayListChar(0,1, email);ﻩReadDataLCM();//测试用句无意义for (TempCyc=0;TempCyc<10; TempCyc++)Delay400Ms();//延时ﻩDisplayListChar(0, 1,Cls);ﻩFM=1;ﻩ// TMOD=0x01;ﻩ//设T0为方式1;// TH0=0;//ﻩ TL0=0;//ﻩET0=1; //允许T0中断// EA=1;ﻩ//开启总中断ﻩTMOD=0x21;ﻩﻩ//设T0为方式1,定时器1方式2; // 0010 0001 SCON=0x50;ﻩTH1=0xFD;TL1=0xFD;TH0=0;TL0=0;TR0=1;ﻩET0=1;//允许T0中断ﻩTR1=1; ﻩ//开启定时器ﻩTI=1;ﻩES= 1;ﻩEA=1;ﻩ//开启总中断Init_Int1();while(1){StartModule();//DisplayOneChar(0, 1,ASCII[0]);ﻩwhile(!RX);//当RX为零时等待TR0=1; ﻩ//开启计数ﻩwhile(RX);//当RX为1计数并等待TR0=0;ﻩﻩ//关闭计数Conut();ﻩﻩ//计算ﻩﻩ FM =1;ﻩAIA= 1;AIB=1;ﻩ BIA = 1;BIB= 1;//超声波测距检测ﻩ if(S<20)ﻩﻩ{ﻩﻩFM=0;ﻩﻩ AIA = 1;ﻩﻩAIB=1;BIA=1;ﻩﻩBIB= 1;ﻩ}elseﻩﻩFM =1;//80MSdelayms(80);ﻩﻩ}}void UARTInterrupt(void)interrupt4{ﻩunsigned charbuf;if(RI){RI = 0;//add your code here!ﻩﻩbuf = SBUF; ﻩﻩ//作回显没有任何作用ﻩﻩSendOneByte(buf);ﻩif(buf== ’1')ﻩﻩ{ﻩﻩcar_go();ﻩﻩdelay_ms(1000);ﻩ}elseif(buf=='2’){ﻩcar_back();ﻩﻩﻩdelay_ms(1000);}ﻩelse if(buf==’3’)ﻩ{ﻩﻩ right();ﻩdelay_ms(1000);ﻩﻩ}else if(buf== ’4')ﻩ{ﻩleft();ﻩdelay_ms(1000);ﻩ}else if(buf== '5'){ﻩﻩgo_right();ﻩdelay_ms(1000);ﻩﻩ }ﻩﻩelse if(buf == '6')ﻩﻩ{ﻩﻩgo_left();ﻩﻩdelay_ms(1000);ﻩﻩ}elseif(buf == '7')ﻩﻩ{ﻩﻩback_right();ﻩdelay_ms(1000);ﻩ}ﻩelseif(buf== '8’)ﻩ{back_left();ﻩﻩdelay_ms(1000);ﻩﻩ }}elseTI=0;}voidInt1_Routine(void) interrupt2{ﻩEX1 = 0;ﻩAIA=1;AIB=1;BIA=1;ﻩBIB =1;ﻩFM = 0;delay_ms(500);ﻩﻩFM = 1;EX1 = 1;}总结学习单片机要有一定得c语言基础,单片机得基础知识我还就是多多少少知道一些,可就是让我直接来做这一个项目,我却无从下手。

相关文档
最新文档