电子工程训练课程实验报告无线蓝牙小车

合集下载

蓝牙小车课程设计报告

蓝牙小车课程设计报告

课程设计报告
葛元凯14 测控 1 班 2014330301072 159********
目录
一、整体方案设计
1.1 整体方案设计的思路
1.2 整体方案的流程图
二、小车系统概况
2.1 小车电路连接简介
2.2 电源和电机驱动系统简介
2.3 蓝牙遥控系统简介
2.4 直流电机简介
三、车体设计
四、软件的简单介绍
4.1keil 的简介
4.2stc-isp 的简介
五、程序清单
六、部分实验电路图
1.1 整体方案的设计思路
利用无线发射和无线接收模块控制单片机,让单片机翻译传输指令,从而实现相应的功能。

具体的过程如下:无线发射模块发出指令,无线接收模块接收信号后,传输给单片机,
单片机接收到信号后翻译并传输给电机驱动模块驱动电机旋转,从而实现小车的前进、左转、右转、后退、停止、加速和减速。

1.2 整体方案的流程图
2.1 小车电路连接简介
本实验采用stc89c52 单片机作为控制小车的主体,采用hc06 蓝牙模块为单片机收集信
号,采用以 L298n 芯片为核心的电机驱动模块(下文简称 L298n 模块)为单片机、蓝牙模块、电机供电,采用干电池组( 7.2v)为 L298n 模块供电间接为整个小车系统供电。

Stc89c52 使用了 11.0592M 的晶振,上图省略了晶振电路,但是实际存在。

Stc89c52 的vcc 接 L298n 模块 +5v 接口, gnd 接 L298ngnd 接口, P3^0 和 P3^1 接 hc06 蓝牙模块的
【下载本文档,可以自由复制内容或自由编辑修改内容,更
多精彩文章,期待你的好评和关注,我将一如既往为您服务】。

蓝牙小车实习报告

蓝牙小车实习报告

一、实习背景随着科技的发展,单片机技术逐渐成熟,各种智能设备层出不穷。

蓝牙作为一种无线通信技术,因其传输速度快、距离远、功耗低等优点,被广泛应用于各类智能设备中。

本实习报告以蓝牙技术为核心,设计并实现了一款蓝牙控制的多功能智能小车。

二、实习目的1. 熟悉单片机原理及编程方法;2. 掌握蓝牙通信技术;3. 学习传感器应用及小车控制算法;4. 提高动手实践能力,培养创新思维。

三、实习内容1. 蓝牙小车系统设计(1)硬件设计蓝牙小车硬件主要包括以下部分:1)单片机:选用STC89C52单片机作为核心控制器;2)蓝牙模块:选用HC-05蓝牙模块,实现手机与单片机的无线通信;3)驱动电路:采用L298N电机驱动器,驱动两个直流电机;4)传感器模块:包括红外传感器、超声波传感器、光电传感器等,用于检测小车周围环境;5)其他元件:如电源模块、按键、蜂鸣器等。

(2)软件设计蓝牙小车软件设计主要包括以下部分:1)主程序:初始化蓝牙模块、传感器模块、电机驱动器,实现小车的基本功能;2)蓝牙通信模块:实现手机与单片机的数据传输,控制小车前进、后退、左转、右转等功能;3)传感器数据处理模块:对传感器采集到的数据进行处理,实现避障、循迹等功能;4)电机控制模块:根据蓝牙接收到的指令和传感器数据处理结果,控制电机转速,实现小车运动。

2. 蓝牙小车功能实现(1)蓝牙控制通过蓝牙模块,用户可以使用手机发送指令,实现小车的前进、后退、左转、右转等功能。

具体操作如下:1)连接蓝牙:打开手机蓝牙功能,搜索并连接HC-05蓝牙模块;2)发送指令:在手机上输入相应的指令(如“前进”、“后退”等),蓝牙模块将指令发送给单片机;3)执行指令:单片机接收到指令后,控制电机驱动器,使小车按照指令进行运动。

(2)避障功能当小车遇到障碍物时,超声波传感器会检测到障碍物距离,并将距离信息发送给单片机。

单片机根据距离信息,控制小车进行避障。

具体实现如下:1)检测障碍物距离:超声波传感器发射超声波,当超声波遇到障碍物反射回来时,计算反射时间,得到障碍物距离;2)判断障碍物距离:根据预设的距离阈值,判断是否需要避障;3)控制小车运动:如果需要避障,单片机控制小车进行相应的转向,绕过障碍物。

单片机蓝牙小车实习报告

单片机蓝牙小车实习报告

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

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

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

二、实习目的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. 为今后的学习和工作打下了基础。

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

蓝牙控制小车实习报告

蓝牙控制小车实习报告

实习报告一、实习背景随着科技的不断发展,无线通信技术在人们的生活中扮演着越来越重要的角色。

蓝牙作为一种无线通信技术,已经广泛应用于各种设备之间的高速数据交换。

本次实习,我选择了蓝牙控制小车这一课题,旨在掌握蓝牙通信技术,并将其应用于实际项目中。

二、实习目的1. 学习蓝牙通信原理,了解蓝牙模块的工作原理及应用。

2. 掌握单片机编程技术,实现对小车的远程控制。

3. 培养动手实践能力和团队协作精神。

三、实习内容1. 蓝牙模块选型:根据项目需求,选择合适的蓝牙模块,本实习选用HC-05蓝牙模块。

2. 硬件设计:设计小车硬件电路,包括蓝牙模块、单片机、电机驱动模块等。

3. 软件设计:编写单片机程序,实现对小车的远程控制。

4. 系统调试:对整个系统进行调试,确保蓝牙通信稳定,小车运行正常。

四、实习过程1. 蓝牙模块选型:通过查阅资料,了解HC-05蓝牙模块的性能参数,确认其符合项目需求。

2. 硬件设计:(1)搭建小车骨架,选用四轮驱动结构。

(2)将蓝牙模块、单片机、电机驱动模块等元器件固定在小车上。

(3)连接电源模块,为蓝牙模块、单片机等提供电源。

(4)连接电机驱动模块,实现对小车的驱动。

3. 软件设计:(1)学习单片机编程原理,掌握Keil、Proteus等软件的使用。

(2)编写单片机程序,实现对小车的远程控制。

(3)通过HC-05蓝牙模块,实现手机与单片机的通信。

4. 系统调试:(1)对蓝牙模块进行配对,确保手机与单片机通信正常。

(2)通过手机APP发送控制指令,观察小车响应情况。

(3)调整电机驱动模块,使小车运行稳定。

五、实习成果通过本次实习,我成功实现了用蓝牙控制小车的研究目标,掌握了蓝牙通信技术,并将其应用于实际项目中。

在实习过程中,我学会了单片机编程技术,提高了动手实践能力和团队协作精神。

六、实习总结本次实习让我对蓝牙通信技术和单片机编程有了更深入的了解,锻炼了我的实践能力。

同时,我也认识到无线通信技术在未来的广泛应用,以及其在智能家居、智能交通等领域的重要性。

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

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

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

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

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

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

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

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

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

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

wifi智能小车实训报告

wifi智能小车实训报告

wifi智能小车实训报告一、实训内容概述为了更好地培养我们计算机科学与技术专业的学生的实际操作能力,我们学校开展了一次为期一个月的Wifi智能小车实训。

该实训旨在通过设计并组装Wifi智能小车来锻炼同学们的动手能力和技术能力,同时也为同学们提供了一个了解物联网相关技术的机会。

二、实训过程详述1、选购器材在实训之前,我们需要先选购实验所需的器材。

其中包括Wifi模块、HC-SR04距离传感器、小车底盘、直流电机、轮子等材料。

我们采购时不仅需要关注价格,同时也需要注意品质和适配程度,以保证实训顺利进行。

2、组装小车底盘我们首先要组装小车底组,这就需要将小车底盘、直流电机和轮子等器材放在一起进行组装。

这一步需要大家仔细阅读说明书,并在老师的指导下逐步进行。

3、添加HC-SR04距离传感器为了使小车具备自主避障能力,我们需要为小车添加 HC-SR04距离传感器。

至于如何添加,就需要我们具备一定的编程开发知识,老师为我们介绍了 Arduino IDE 和 MicroPython 两种编程工具。

4、编写程序代码在添加完传感器之后,接下来就要编写程序了。

代码的编写包含了两个部分,一个是确定小车的移动方向和速度,并通过串口监视器将数据实时传输到电脑端;另外一个部分是实现HC-SR04距离传感器的功能,保证小车能够自主避障。

5、本地测试和远程调试经过以上步骤,我们可以在本地使用电脑的串口通信端口来测试小车的各项功能。

当测试通过后,我们就可以将代码迁移到ESP8266 Wifi 模块中进行远程调试。

这意味着我们可以通过手机等电子设备操作小车,并进行观察调试。

三、实训成效总结通过本次实训,我们不仅学会了组装小车、添加传感器和编写程序代码等技能,还了解了IoT物联网相关知识。

在实验过程中,我们遇到了一些组装困难、调试难度大等问题,经过不断尝试,最终成功解决了问题。

整个过程让我们切实感受到了科技带给我们的便利和乐趣,进一步增强了我们对于计算机技术的热爱。

电子工程训练报告

电子工程训练报告

大连理工大学本科实验报告题目:基于STC51单片机的蓝牙遥控小车课程名称:电子工程训练学院(系):信息与通信工程学院专业:电子信息工程班级:电子1303学号:*********实验序号:21学生姓名:**成绩:2016年11 月19 日成绩评定电子安装实验室安全守则1、每次实验前,认真预习准备,仔细阅读实验安全守则,严格按照安全规范进行实验,确保实验安全;2、桌面要保持整洁,不允许有杂物,禁止将水杯、瓶装水放在桌面;3、电烙铁在使用前,必须检查电源线有无烫损漏线情况,一经发现,立即找老师进行安全处理;4、电烙铁长时间不使用,应将电源线拔掉;电烙铁使用后,应放回烙铁架中,以免烫伤物品;5、实验结束后,必须拔掉电烙铁的电源线;已经加热的电烙铁,必须冷却后再放入抽屉中;6、焊锡中含铅,不要含在口中,实验结束后要洗手;7、稳压电源在使用前,应先调好要使用的电压,再进行线路连接,并确保连接的极性正确;8、抢救触电人员时,应首先切断电源或用绝缘物体挑开电源线,使触电者脱离电源,千万不要用手拖拉触电人员,以免连环触电;9、实验结束后,必须关闭桌面电源开关,将桌面收拾干净,工具物品整理好。

题目:基于STC51单片机的蓝牙遥控小车1 设计要求以STC51单片机为主控芯片,设计并完成一个利用蓝牙通信,可以通过手机蓝牙进行遥控控制的小车系统,并伴随音乐播放,具体包含以下几个基本功能模块:(1)电源电路(9V AC - 5V DC)(2)IAP15K4W58S4单片机主控模块(3)L298N双H桥驱动模块(4)LCD1602显示模块(5)蓝牙通信模块(6)ISD1820音乐播放模块2 设计分析及系统方案设计主控芯片为STC公司的IAP15K4W58S4型号51单片机,小车的轮子是利用两个直流电机作为驱动,可以通过给直流电机提供脉冲信号来驱动它,脉冲信号的占空比可以影响到直流电机的平均速度,因此可以通过调整占空比从而能实现调速的目的(PWM调速)。

蓝牙小车课程设计结论

蓝牙小车课程设计结论

蓝牙小车课程设计结论一、教学目标本课程旨在通过学习蓝牙小车的设计与制作,使学生掌握蓝牙技术的基本原理,培养学生的动手实践能力和创新能力。

具体的教学目标包括:知识目标:使学生了解蓝牙技术的工作原理、基本协议和应用场景;掌握蓝牙模块的选型和接入方法;了解电子电路的基本知识。

技能目标:培养学生使用编程语言进行蓝牙通讯编程的能力;培养学生进行电子电路设计与制作的能力;培养学生解决实际问题的能力。

情感态度价值观目标:培养学生对科技创新的热爱,提高学生的问题解决能力,培养学生的团队合作精神。

二、教学内容本课程的教学内容主要包括蓝牙技术的基本原理、蓝牙模块的接入与编程、电子电路设计与制作等。

具体的教学内容安排如下:第一章:蓝牙技术概述介绍蓝牙技术的发展历程、工作原理和应用场景。

第二章:蓝牙模块的接入与编程讲解如何选择合适的蓝牙模块,并通过编程实现蓝牙通讯。

第三章:电子电路设计与制作介绍电子电路的基本知识,并通过实例讲解如何设计并制作电子电路。

第四章:蓝牙小车的设计与制作综合运用前面所学的知识,设计并制作一个蓝牙小车。

三、教学方法为了提高教学效果,本课程将采用多种教学方法,包括:讲授法:用于讲解蓝牙技术的基本原理和电子电路的基本知识;实验法:用于培养学生的动手实践能力,通过实际操作来加深对知识的理解;小组讨论法:用于培养学生的团队合作精神,通过小组合作完成蓝牙小车的设计与制作。

四、教学资源为了支持教学,我们将提供以下教学资源:教材:《蓝牙技术手册》参考书:《蓝牙编程与应用》多媒体资料:相关的教学视频和PPT实验设备:蓝牙模块、电路元件、实验板等。

五、教学评估为了全面、客观地评估学生在蓝牙小车课程中的学习成果,我们将采取以下评估方式:1.平时表现:通过观察学生在课堂上的参与程度、提问回答情况以及团队合作表现来评估学生的学习态度和积极性。

2.作业:布置与课程内容相关的作业,评估学生对知识的理解和应用能力。

3.实验报告:通过评估学生在实验过程中的设计思路、实验结果和问题解决能力来衡量其动手实践能力。

无线遥控小车实训报告

无线遥控小车实训报告

一、实训背景随着科技的不断发展,自动化和智能化技术日益普及。

无线遥控小车作为自动化领域的一个典型应用,不仅可以锻炼学生的动手能力,还能提高对电子技术、单片机原理、无线通信等方面的理解。

本次实训旨在通过设计和制作无线遥控小车,使学生掌握相关电子技术和编程技能。

二、实训目的1. 熟悉无线通信技术在遥控系统中的应用。

2. 掌握单片机编程及外围电路设计。

3. 了解电机驱动电路的设计原理。

4. 培养团队合作精神和实践能力。

三、实训内容1. 硬件选型本次实训所选用的硬件包括:- 主控芯片:AT89C51单片机- 无线通信模块:nRF24L01- 电机驱动模块:L298N- 电机:直流电机- 电源模块:锂电池- 其他元件:电阻、电容、二极管等2. 系统设计无线遥控小车系统主要由以下几个部分组成:- 遥控器:负责发送控制信号- 接收模块:接收遥控器发送的控制信号- 主控模块:根据接收到的信号控制小车运动- 电机驱动模块:驱动电机实现小车运动3. 软件设计软件设计主要包括以下内容:- 遥控器程序:实现按键扫描和信号发送- 接收模块程序:实现信号接收和解码- 主控模块程序:根据接收到的信号控制小车运动4. 系统调试在完成硬件组装和软件编写后,进行系统调试,确保小车能够按照预期运行。

调试过程中,主要关注以下几个方面:- 无线通信是否稳定- 控制信号是否准确- 小车运动是否平稳四、实训过程1. 硬件组装根据系统设计,将各个模块连接起来,包括单片机、无线通信模块、电机驱动模块、电机等。

2. 软件编写使用C语言编写遥控器、接收模块和主控模块的程序。

在编写过程中,注意以下事项:- 代码结构清晰,便于阅读和维护- 代码注释完整,便于理解- 注意信号处理和电机控制算法3. 系统调试在完成硬件组装和软件编写后,进行系统调试。

首先,检查无线通信是否稳定,确保遥控器能够发送和接收信号。

然后,测试控制信号是否准确,观察小车运动是否平稳。

电子产品小车实训报告

电子产品小车实训报告

一、实训目的本次电子产品小车实训旨在通过实际操作,让学生了解电子产品小车的开发过程,掌握电子元器件的选用、电路设计与焊接、程序编写与调试等基本技能。

通过本次实训,培养学生动手能力、创新能力和团队协作精神,提高学生对电子技术的兴趣和实际应用能力。

二、实训内容1. 电子产品小车概述电子产品小车是一种集传感器、控制器、执行器于一体的智能小车,能够实现自主控制、避障、循迹等功能。

本次实训将设计一款具有循迹功能的电子产品小车。

2. 硬件设计(1)传感器选择传感器是电子产品小车的感知器官,用于获取小车周围环境信息。

本次实训选用以下传感器:①红外线传感器:用于检测小车行驶路径上的黑线,实现循迹功能。

②超声波传感器:用于检测小车前方障碍物距离,实现避障功能。

(2)控制器选择控制器是小车的大脑,负责处理传感器信息,控制小车行驶。

本次实训选用以下控制器:①单片机:作为小车的核心控制器,负责执行循迹、避障等任务。

②蓝牙模块:用于实现手机APP与小车之间的无线通信。

3. 软件设计(1)循迹算法循迹算法是小车实现循迹功能的关键。

本次实训采用以下循迹算法:①利用红外线传感器检测黑线,通过比较左右红外线传感器的输出信号,判断小车行驶方向。

②根据小车行驶方向,调整舵机角度,使小车保持直线行驶。

(2)避障算法避障算法是小车实现避障功能的关键。

本次实训采用以下避障算法:①利用超声波传感器检测前方障碍物距离,当距离小于一定值时,小车停止前进。

②根据超声波传感器检测到的障碍物距离,调整舵机角度,使小车绕过障碍物。

4. 电路设计与焊接(1)电路设计根据硬件设计要求,绘制电子产品小车电路原理图,包括单片机、传感器、执行器等模块。

(2)焊接根据电路原理图,进行焊接操作,将各个电子元器件焊接在一起,确保电路连接正确。

5. 程序编写与调试(1)程序编写使用C语言编写电子产品小车控制程序,实现循迹、避障等功能。

(2)调试将编写好的程序烧录到单片机中,通过调试,确保小车能够正常工作。

电子工艺实习+智能小车报告

电子工艺实习+智能小车报告

XXXX大学电子实习学生姓名:XX学号:XX专业:XX班级:XXXXX年X月目录一、实习时间 (3)二、实习地点 (3)三、实习指导老师 (3)四、实习目的 (3)五、实习仪器和元器件 (4)六、实习内容 (4)第一部分:电子元器件常识及其鉴别 (4)第二部分:焊接技术技巧 (7)第三部分:电子电路设计软件学习使用 (7)第四部分:万用表焊接、组装与调试 (11)第五部分:单片机应用系统开发 (13)七、实习结果 (15)八、实习感受和总结 (15)附录1:电路原理图和PCB图附录2:智能小车总结附录3:蓝牙小车策划书一、实习时间:XX二、实习地点:XX三、指导老师: XX四、实习目的:通过电子实习,使我掌握了手工锡焊、绘制PCB和原理图、利用51单片机编写智能小车和简单程序的本领。

同时实习使我获得了识别、焊接基本电子元器件的能力和绘制原理图和PCB图的本领,培养了我独立发现问题、分析问题、解决问题的能力,提高了我的耐性和对未知事物的探索、学习能力,增强了我的动手能力和团队合作意识。

.具体如下:1.了解了Altium_Designer_Winter_09电路设计软件,并能绘制简单电路原理图和PCB图。

2.熟悉了手工焊锡的常用工具(电烙铁,焊锡丝,吸枪)的使用及其维护与修理。

3基本掌握了手工电烙铁的焊接技术,能够独立地完成简单电子产品的安装与焊接(万用表)。

熟悉电子产品(对比51单片机)的安装工艺的生产流程。

4.熟悉了印制电路板设计(利用Altium_Designer_Winter_09软件画出原理图并导成PCB图)的步骤和方法,熟悉了手工制作印制电板的工艺流程,能够根据电路原理图,元器件实物设计并制作印制电路板。

5.能够正确识别常用电子器件的类别、型号、规格、性能及其使用范围(熟练地通过电阻的色环识别电阻阻值,二极管、蜂鸣器的正负标志),能查阅有关的电子器件图书(运用互联网和学校内网入口的资源【中国知网】),并且能够熟练使用普通万用表(电阻档,蜂鸣器档,直流档)和数字万用表(检测普通万用表的焊接时尤为重要)。

电子综合实训报告小车

电子综合实训报告小车

一、实训背景随着科技的飞速发展,电子技术在我国得到了广泛的应用。

为了提高学生的动手能力和实际操作技能,我校组织了一次电子综合实训,其中小车制作项目作为实训内容之一。

通过本次实训,我们不仅巩固了所学理论知识,还锻炼了动手实践能力,提高了团队协作精神。

二、实训目的1. 掌握电子元器件的基本原理和应用;2. 学会电子电路的设计与制作;3. 提高动手操作能力和团队协作精神;4. 了解小车的基本构造和工作原理。

三、实训内容本次实训主要分为以下几个部分:1. 电子元器件的认识与选用2. 电路设计与绘制3. 电路焊接与调试4. 小车组装与调试5. 实验总结与反思四、实训过程1. 电子元器件的认识与选用在实训开始前,我们对常用的电子元器件进行了学习和认识,包括电阻、电容、二极管、三极管、集成电路等。

根据小车的设计需求,我们选用了合适的元器件,并对其性能和参数进行了分析。

2. 电路设计与绘制在掌握了电子元器件的基础上,我们根据小车的工作原理,设计了相应的电路。

电路图采用电路设计软件绘制,确保了电路的准确性和可靠性。

3. 电路焊接与调试根据电路图,我们进行了电路焊接。

在焊接过程中,我们注意了焊接技巧,确保了焊接质量。

焊接完成后,我们对电路进行了调试,检查了电路的通断和功能。

4. 小车组装与调试在电路调试无误后,我们开始组装小车。

首先,我们将电路板固定在车架上,然后安装电机、电池、轮子等部件。

组装完成后,我们对小车进行了调试,确保其运行稳定、可靠。

5. 实验总结与反思通过本次实训,我们不仅掌握了电子元器件的基本原理和应用,还学会了电路设计与制作、小车组装与调试。

以下是我们在实训过程中的一些总结与反思:(1)在元器件选用上,我们要根据实际需求进行选择,避免选用性能过强或过弱的元器件,以免影响小车性能。

(2)在电路设计过程中,我们要充分考虑电路的稳定性和可靠性,确保小车在运行过程中不会出现故障。

(3)在组装过程中,我们要注意部件的安装顺序和方向,避免因安装不当导致小车无法正常工作。

课程设计手机蓝牙控制小车

课程设计手机蓝牙控制小车

课程设计手机蓝牙控制小车一、课程目标知识目标:1. 学生能理解蓝牙技术在生活中的应用及其基本原理;2. 学生能掌握利用手机蓝牙控制小车的基本步骤和编程方法;3. 学生能了解小车运动原理和简单的机械结构。

技能目标:1. 学生能运用所学的编程知识,完成手机蓝牙与小车的连接和指令发送;2. 学生能通过实际操作,解决在蓝牙控制小车过程中遇到的技术问题;3. 学生能进行小组合作,共同完成蓝牙控制小车的制作和调试。

情感态度价值观目标:1. 培养学生对科学技术的兴趣,激发他们探索未知领域的热情;2. 培养学生动手实践、勇于尝试的精神,增强他们克服困难的信心;3. 培养学生团队协作意识,让他们认识到团队合作的重要性;4. 引导学生关注科技创新在生活中的应用,培养他们将所学知识运用到实际生活中的能力。

二、教学内容本节课将依据课程目标,紧密结合教材中有关电子技术、编程控制及机械原理的相关章节,组织以下教学内容:1. 蓝牙技术原理:介绍蓝牙技术的基本概念、工作原理和应用场景,结合教材相关章节,让学生理解蓝牙技术在物联网中的应用。

2. 编程控制基础:回顾与手机蓝牙控制小车相关的编程知识,如变量、条件语句和循环语句等,结合教材中编程实例,让学生掌握控制小车的基本编程方法。

3. 小车运动原理:讲解小车的基本机械结构、运动原理,分析教材中有关简单机械的章节,让学生了解小车运动的力学原理。

4. 蓝牙控制小车制作:根据教材中的实践案例,指导学生进行蓝牙控制小车的组装、编程和调试,培养学生动手能力和解决问题的能力。

5. 教学大纲安排:a. 导入新课,激发兴趣(5分钟)b. 讲解蓝牙技术原理和编程控制基础(15分钟)c. 分析小车运动原理和机械结构(10分钟)d. 分组实践,组装、编程和调试蓝牙控制小车(20分钟)e. 小组展示、评价和总结(10分钟)教学内容与教材紧密关联,确保学生在掌握基础知识的同时,能够实际操作和运用所学知识。

电子蓝牙小车实训报告

电子蓝牙小车实训报告

一、实训背景随着科技的飞速发展,智能电子设备在日常生活中扮演着越来越重要的角色。

为了提高学生的实践能力和创新意识,我们开展了电子蓝牙小车实训项目。

通过本项目,学生们能够学习到电子技术、编程技术以及智能控制技术,并运用所学知识设计和制作一款具备蓝牙遥控功能的智能小车。

二、实训目的1. 掌握电子电路设计、组装和调试的基本技能。

2. 熟悉蓝牙通信技术,实现蓝牙遥控功能。

3. 理解单片机编程原理,提高编程能力。

4. 培养团队协作精神,提高创新能力。

三、实训内容1. 硬件选型与设计(1)主控芯片:选用STC89C52单片机作为核心控制器,负责处理蓝牙信号、控制电机运行等。

(2)驱动模块:采用TB6612电机驱动模块,实现对直流电机的驱动。

(3)传感器:选用红外避障传感器、循迹传感器和霍尔传感器,实现避障、循迹和测速功能。

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

(5)其他:电源模块、电池、连接线等。

2. 软件设计(1)单片机编程:使用C语言编写单片机程序,实现蓝牙接收、电机控制、传感器数据处理等功能。

(2)手机APP开发:使用Android Studio开发手机APP,实现蓝牙连接、遥控操作等功能。

3. 组装与调试(1)根据电路图焊接电路板,组装各模块。

(2)连接手机APP与蓝牙模块,进行调试。

(3)测试小车功能,包括蓝牙遥控、避障、循迹和测速等。

四、实训过程1. 前期准备(1)查阅相关资料,了解蓝牙通信技术、单片机编程、电机控制等知识。

(2)学习手机APP开发,掌握Android Studio使用方法。

2. 硬件设计与组装(1)根据需求设计电路图,选择合适的元器件。

(2)焊接电路板,组装各模块。

3. 软件设计与编程(1)编写单片机程序,实现蓝牙接收、电机控制、传感器数据处理等功能。

(2)开发手机APP,实现蓝牙连接、遥控操作等功能。

4. 调试与测试(1)连接手机APP与蓝牙模块,进行调试。

蓝牙控制小车实习报告

蓝牙控制小车实习报告

一、实习背景随着科技的不断发展,物联网、人工智能等领域逐渐成为研究热点。

在众多技术中,蓝牙通信因其低成本、高可靠性等优点,被广泛应用于智能设备中。

为了更好地了解蓝牙通信技术及其在智能设备中的应用,我们小组开展了蓝牙控制小车的实习项目。

二、实习目的1. 熟悉蓝牙通信技术的基本原理和实现方法;2. 掌握单片机编程和驱动模块的方法;3. 学会使用蓝牙模块与单片机进行通信;4. 实现蓝牙控制小车,提高动手能力和团队协作能力。

三、实习内容1. 蓝牙通信模块选型及原理分析在众多蓝牙通信模块中,我们选择了HC-05蓝牙模块。

该模块具有体积小、成本低、通信距离远等优点。

HC-05蓝牙模块采用2.4GHz频段,支持蓝牙2.0/2.1/3.0版本,可满足大部分应用需求。

2. 单片机编程及驱动模块本实习项目采用51单片机作为控制核心。

首先,我们需要编写单片机的初始化程序,包括设置时钟、配置I/O口等。

然后,编写驱动模块程序,包括电机驱动、LED控制、按键扫描等。

3. 蓝牙模块与单片机通信将HC-05蓝牙模块与单片机相连,通过串口进行通信。

在单片机程序中,编写串口中断服务程序,用于接收蓝牙模块发送的数据。

同时,编写发送程序,将控制指令发送给蓝牙模块。

4. 实现蓝牙控制小车将编写好的程序烧录到单片机中,连接电机驱动模块和蓝牙模块。

通过智能手机上的蓝牙应用发送控制指令,实现对小车的遥控。

四、实习过程1. 准备工作首先,准备好所需材料:51单片机、HC-05蓝牙模块、电机驱动模块、电池、连接线等。

然后,搭建电路,将各个模块连接起来。

2. 编写程序根据蓝牙通信协议和单片机编程经验,编写单片机程序。

程序主要包括以下部分:(1)初始化程序:设置时钟、配置I/O口等;(2)串口中断服务程序:接收蓝牙模块发送的数据;(3)驱动模块程序:控制电机驱动、LED控制、按键扫描等;(4)发送程序:将控制指令发送给蓝牙模块。

3. 调试与优化将编写好的程序烧录到单片机中,进行调试。

《电子技术实训说明书》小车实训报告

《电子技术实训说明书》小车实训报告

《电子技术实训说明书》小车实训报告摘要:本实验完成采用红外反射式传感器的自寻迹小车的设计与实现。

采用与白色地面色差很大的黑色路线引导小车按照既定路线前进。

LM393随时比较着两路光敏电阻的大小,当出现不平衡时(例如一侧压黑色跑道)立即控制一侧电机停转,另一侧电机加速旋转,从而使小车修正方向,恢复到正确的方向上,整个过程是一个闭环控制,因此能快速灵敏地控制。

关键词:红外反射式传感器;自寻迹小车;闭环控制引言随着素质教育的越来越被重视,很多学校都把制作智能小车作为首选课题,智能小车生动有趣还牵涉到机械结构、电子基础、传感器原理、自动控制甚至单片机编程等诸多学科知识,学生通过动手实践能大大提高解决实际问题的能力,而且智能小车还是一个很好的硬件平台,只要增加一些控制电路就能完成循迹小车、救火机器人、足球机器人、避障机器人、遥控汽车等课题。

我们制作的是一款由数字电路来控制的智能循迹小车,在组装过程中我们不但能熟悉机械原理还能逐步学习到:光电传感器、电压比较器、电机驱动电路等相关电子知识。

1. 设计目的通过小车的电路图,完成小车的组装和焊接,并且进行调试。

小车能够沿着固定的路线自动行走,能够自动的拐弯,全程不需要人进行任何的操作。

另外,将学到的电路知识,加以运用,可以做到理论与实践相结合起来。

1.1 设计要求完成电路的设计,并且完成软件对硬件检测,完成小车的组装和调试的工作。

1.2 主要元件介绍1.21光敏电阻器件光敏电阻能检测光强度,阻值与光照强度成相反的比例关系。

光照越强,电阻值就越小;反之,光照越弱,电阻值就越大。

当红色LED灯亮时,光射到白色区域和黑线上,由于反光的能力不一样电阻值就会有很大的差别,有利于控制后续电路。

1.22 LM393比较器集成电路它对两个输入电压进行比较,然后以此改变输出电压的高低。

LM393运用集电极开路输出,需加上拉电阻,才能输出高电平。

1.23 带减速齿轮的直流电机小车必须要减速,如果不减速的话,小车会跑的很快,会导致无法控制,再者转矩太小,小车会跑不起来。

电子工程训练课程实验报告无线蓝牙小车

电子工程训练课程实验报告无线蓝牙小车

题目:基于STC15W4K32S4的蓝牙智能小车课程名称:学院(系):专业:班级:学号:实验序号:学生姓名:成绩:2016 年11月4日成绩评定电子安装实验室安全守则(请在下一页手抄一份安全守则)1、每次实验前,认真预习准备,仔细阅读实验安全守则,严格按照安全规范进行实验,确保实验安全;2、桌面要保持整洁,不允许有杂物,禁止将水杯、瓶装水放在桌面;3、电烙铁在使用前,必须检查电源线有无烫损漏线情况,一经发现,立即找老师进行安全处理;4、电烙铁长时间不使用,应将电源线拔掉;电烙铁使用后,应放回烙铁架中,以免烫伤物品;5、实验结束后,必须拔掉电烙铁的电源线;已经加热的电烙铁,必须冷却后再放入抽屉中;6、焊锡中含铅,不要含在口中,实验结束后要洗手;7、稳压电源在使用前,应先调好要使用的电压,再进行线路连接,并确保连接的极性正确;8、抢救触电人员时,应首先切断电源或用绝缘物体挑开电源线,使触电者脱离电源,千万不要用手拖拉触电人员,以免连环触电;9、实验结束后,必须关闭桌面电源开关,将桌面收拾干净,工具物品整理好。

题目:1 设计要求以STC15W4K32S4单片机为核心,设计焊接并且调试一个实际的单片机控制系统,通过蓝牙实现用手机控制小车的动作状态。

(一)焊接:在实现基本功能的前提下焊接好设计的系统,尽量使其稳定焊点稳定,焊接美观。

(二)最小系统与电源:利用7505稳压芯片实现输入电压转为五伏稳压电源输出。

(三)功能实现:实现用手机自制app或者蓝牙串口助手控制小车前进方向以及行驶速度。

2 设计分析及系统方案设计围绕STC15W4K32S4单片机,把系统的设计规划分为两部分硬件部分:(一)设计并且绘制原理图(二)按照原理图焊接电路板软件部分:(一)编写实验程序(二)系统调试将单片机的p0口用于驱动lcd1602,p4.5,p2.7,p2.3,p2.2用于输出pwm控制电机。

P3.0与p3.1用于与主机通信并且用于蓝牙串口通信。

蓝牙智能小车实习报告

蓝牙智能小车实习报告

实习报告:蓝牙智能小车设计与实现一、实习背景及目的随着科技的不断发展,无线通信技术在生活中的应用越来越广泛。

蓝牙作为一种无线通信技术,已经广泛应用于各种设备之间的高速数据传输。

本次实习旨在设计并实现一款基于蓝牙技术的智能小车,通过手机APP控制小车的前进、后退、左转、右转等基本功能,提高对单片机和蓝牙技术的理解和应用能力。

二、实习内容与过程1. 硬件设计本次实习的智能小车硬件部分主要包括STC15W408AS单片机、蓝牙模块、电机驱动模块、电源模块、车架和电机等。

其中,STC15W408AS单片机作为主控制器,负责处理蓝牙模块接收到的指令并控制电机驱动模块实现小车的运动;蓝牙模块负责与手机APP进行通信,接收用户指令;电机驱动模块负责驱动电机实现小车的运动;电源模块为整个系统提供稳定的电源;车架和电机则是构成小车的主体部分。

2. 软件设计在软件设计方面,主要采用C语言编写程序,实现对小车的控制。

首先,通过蓝牙模块与手机APP进行通信,接收用户指令;然后,根据接收到的指令,编写相应的控制程序,控制电机驱动模块实现小车的运动;最后,通过串口通信将小车的状态信息发送回手机APP,以便用户了解小车的实时状态。

3. 系统调试与优化在完成硬件和软件设计后,对整个系统进行调试。

在调试过程中,发现了一些问题,如电机转速过快导致控制系统失去响应等。

针对这些问题,进行了相应的优化,如调整电机驱动模块的参数,保证电机转速稳定;优化控制程序,提高系统的响应速度等。

三、实习成果与总结经过一段时间的实习,成功设计并实现了一款基于蓝牙技术的智能小车。

通过手机APP可以实现对小车的前进、后退、左转、右转等基本功能的控制。

在实习过程中,不仅提高了对单片机和蓝牙技术的理解和应用能力,还锻炼了动手实践能力。

通过本次实习,我对无线通信技术有了更深入的了解,特别是在蓝牙技术的应用方面。

同时,也认识到在实际项目中,硬件设计和软件设计是相辅相成的,任何一个环节出现问题都可能导致整个项目失败。

湖南大学工程训练项目报告-蓝牙小车

湖南大学工程训练项目报告-蓝牙小车

蓝牙小车报告小组成员:班级:联系方式:目录一、引言------------------------------1 二、总体方案------------------------------1 三、电路与程序设计------------------------------3 四、调试方案和调试结果------------------------------7 五、遇到的问题和解决方案------------------------------7 六、工程管理方案------------------------------8 七、总结和体会------------------------------8 八、实物图------------------------------9 九、源程序-----------------------------10一、引言蓝牙作为一种无线技术标准,可实现固定设备、移动设备和楼宇个人域网之间的短距离数据交换(使用2.4—2.485GHz的ISM波段的UHF无线电波)。

蓝牙自从被创制以来就得到了广泛的关注与应用,现代许多移动设备和固定设备上都安装了蓝牙,进行文件传输、无线控制等。

蓝牙传输范围大,可穿透不同物质以及在物质间扩散;采用跳频展频技术,抗干扰性强;功耗小,成本低等等。

蓝牙的这些优势使得它在控制技术领域备受青睐。

本小组的选题是蓝牙控制小车,意思就是以蓝牙作为无线控制的载体,通过手机上的蓝牙APP对蓝牙芯片发出控制命令,通过串口传输指令给小车的核心STC89C51单片机,51单片机再通过对蓝牙传送的信息进行处理,控制小车各元件,LED灯、静态数码管、蜂鸣器、电机,来指导小车完成指定动作。

二、总体方案本小组设计的蓝牙小车的控制机制是:以STC89C51单片机作为控制核心,通过手机上的蓝牙APP对小车发出控制命令,小车上的蓝牙芯片接收到APP发出的指令后通过串口传输给STC89C51单片机,单片机通过对指令的一系列处理,控制小车上相关元件,LED灯、静态数码管、蜂鸣器、电机,来指导小车完成指定动作。

蓝牙小车

蓝牙小车

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

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

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

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

三、设备选型1、STC89C54单片机1个2、L298N驱动模块1个3、HC06蓝牙模块1个4、18RP 稳压芯片1个5、104电容2个6、带自锁开关1个7、发光二极管(工作指示灯)1个8、尼龙柱4根9、车模1个10、排针、杜邦线若干11、四个装电池盒1个四、硬件电路设计1、最小系统本次小车实验采用的是STC89C54单片机模块,已自带时钟电路和复位电路,无需再接。

STC89系列芯片是51芯片的加强版。

STC89C54RD+单片机具有提高MCU的运行速度,运行稳定,价格便宜,良好的性价比等特点,其支持的最高时钟为80M,这样能最大限度地提高MCU的运行速度;具有双倍速功能,支持6时钟周期模式运行;具有ISP在线系统编程功能,大大缩短开发复杂度,同时可节省购买编程器的额外投入;STC89C54RD+单片机内部包括16KB的Flash程序存储器ROM、1KB 的数据存储器RAM,与普通的8051单片机完全兼容,而51单片机的开发环境也很成熟:如KeilC语言广泛地应用于新产品的开发,这对于缩短系统开发周期有着很重要的意义,管脚图如下所示。

2、电源装置小车通过蓝牙接收控制信号传递给单片机,由单片机给出指令控制其前进转向等动作,各部分都需要由电路支持,电源管理尤为重要。

在本设计中,采用4节干电池供电,额定电压为7.2V,考虑到L298N 驱动模块与单片机、蓝牙模块所需的电压不同,蓝牙与单片机直接通过电池供电,L298N驱动模块需通过稳压电路稳压后供电。

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

题目:基于STC15W4K32S4的蓝牙智能小车课程名称:学院(系):专业:班级:学号:实验序号:学生姓名:成绩:2016 年11月4日成绩评定电子安装实验室安全守则(请在下一页手抄一份安全守则)1、每次实验前,认真预习准备,仔细阅读实验安全守则,严格按照安全规范进行实验,确保实验安全;2、桌面要保持整洁,不允许有杂物,禁止将水杯、瓶装水放在桌面;3、电烙铁在使用前,必须检查电源线有无烫损漏线情况,一经发现,立即找老师进行安全处理;4、电烙铁长时间不使用,应将电源线拔掉;电烙铁使用后,应放回烙铁架中,以免烫伤物品;5、实验结束后,必须拔掉电烙铁的电源线;已经加热的电烙铁,必须冷却后再放入抽屉中;6、焊锡中含铅,不要含在口中,实验结束后要洗手;7、稳压电源在使用前,应先调好要使用的电压,再进行线路连接,并确保连接的极性正确;8、抢救触电人员时,应首先切断电源或用绝缘物体挑开电源线,使触电者脱离电源,千万不要用手拖拉触电人员,以免连环触电;9、实验结束后,必须关闭桌面电源开关,将桌面收拾干净,工具物品整理好。

题目:1 设计要求以STC15W4K32S4单片机为核心,设计焊接并且调试一个实际的单片机控制系统,通过蓝牙实现用手机控制小车的动作状态。

(一)焊接:在实现基本功能的前提下焊接好设计的系统,尽量使其稳定焊点稳定,焊接美观。

(二)最小系统与电源:利用7505稳压芯片实现输入电压转为五伏稳压电源输出。

(三)功能实现:实现用手机自制app或者蓝牙串口助手控制小车前进方向以及行驶速度。

2 设计分析及系统方案设计围绕STC15W4K32S4单片机,把系统的设计规划分为两部分硬件部分:(一)设计并且绘制原理图(二)按照原理图焊接电路板软件部分:(一)编写实验程序(二)系统调试将单片机的p0口用于驱动lcd1602,p4.5,p2.7,p2.3,p2.2用于输出pwm控制电机。

P3.0与p3.1用于与主机通信并且用于蓝牙串口通信。

3 各功能模块硬件电路设计(一)最小系统由于STC15W4K32S4的性能已经进行了优化,所以不同于以往所接触的单片机,它的晶振已经集成化,不用再搭建最小系统电路。

(二)电源电路将输入电压转为5v稳压电源输出(三)LCD液晶屏电路使用P1.0~P1.7与D0~D7相接,EN,RW,RS分别与P0.7,P0.6,P0.5相接(四)蓝牙与单片机连接这里直接用P3.0,P3.1与主机的串口通信和与蓝牙共用串口。

(五)LN298模块4 系统软件设计#include "reg51.h"#include "intrins.h"#include "stdio.h"#include "stdlib.h"#define MAIN_Fosc 11059200L //定义主时钟/************* 变量声明**************/typedef unsigned char u8;typedef unsigned int u16;typedef unsigned long u32;typedef unsigned char BYTE;typedef unsigned int WORD;#define uchar unsigned char#define uint unsigned int#define elif else if#define PWMC (*(unsigned int volatile xdata *)0xfff0) #define PWMCH (*(unsigned char volatile xdata *)0xfff0) #define PWMCL (*(unsigned char volatile xdata *)0xfff1) #define PWMCKS (*(unsigned char volatile xdata *)0xfff2) #define PWM2T1 (*(unsigned int volatile xdata *)0xff00) #define PWM2T1H (*(unsigned char volatile xdata *)0xff00) #define PWM2T1L (*(unsigned char volatile xdata *)0xff01) #define PWM2T2 (*(unsigned int volatile xdata *)0xff02) #define PWM2T2H (*(unsigned char volatile xdata *)0xff02) #define PWM2T2L (*(unsigned char volatile xdata *)0xff03) #define PWM2CR (*(unsigned char volatile xdata *)0xff04) #define PWM3T1 (*(unsigned int volatile xdata *)0xff10) #define PWM3T1H (*(unsigned char volatile xdata *)0xff10) #define PWM3T1L (*(unsigned char volatile xdata *)0xff11) #define PWM3T2 (*(unsigned int volatile xdata *)0xff12) #define PWM3T2H (*(unsigned char volatile xdata *)0xff12)#define PWM3T2L (*(unsigned char volatile xdata *)0xff13) #define PWM3CR (*(unsigned char volatile xdata *)0xff14) #define PWM4T1 (*(unsigned int volatile xdata *)0xff20) #define PWM4T1H (*(unsigned char volatile xdata *)0xff20) #define PWM4T1L (*(unsigned char volatile xdata *)0xff21) #define PWM4T2 (*(unsigned int volatile xdata *)0xff22) #define PWM4T2H (*(unsigned char volatile xdata *)0xff22) #define PWM4T2L (*(unsigned char volatile xdata *)0xff23) #define PWM4CR (*(unsigned char volatile xdata *)0xff24) #define PWM5T1 (*(unsigned int volatile xdata *)0xff30) #define PWM5T1H (*(unsigned char volatile xdata *)0xff30) #define PWM5T1L (*(unsigned char volatile xdata *)0xff31) #define PWM5T2 (*(unsigned int volatile xdata *)0xff32) #define PWM5T2H (*(unsigned char volatile xdata *)0xff32) #define PWM5T2L (*(unsigned char volatile xdata *)0xff33) #define PWM5CR (*(unsigned char volatile xdata *)0xff34) #define PWM6T1 (*(unsigned int volatile xdata *)0xff40) #define PWM6T1H (*(unsigned char volatile xdata *)0xff40) #define PWM6T1L (*(unsigned char volatile xdata *)0xff41) #define PWM6T2 (*(unsigned int volatile xdata *)0xff42) #define PWM6T2H (*(unsigned char volatile xdata *)0xff42) #define PWM6T2L (*(unsigned char volatile xdata *)0xff43) #define PWM6CR (*(unsigned char volatile xdata *)0xff44) #define PWM7T1 (*(unsigned int volatile xdata *)0xff50) #define PWM7T1H (*(unsigned char volatile xdata *)0xff50) #define PWM7T1L (*(unsigned char volatile xdata *)0xff51) #define PWM7T2 (*(unsigned int volatile xdata *)0xff52) #define PWM7T2H (*(unsigned char volatile xdata *)0xff52) #define PWM7T2L (*(unsigned char volatile xdata *)0xff53) #define PWM7CR (*(unsigned char volatile xdata *)0xff54) sfr PWMCFG = 0xf1;sfr PWMCR = 0xf5;sfr PWMIF = 0xf6;sfr PWMFDCR = 0xf7;sfr TH2 = 0xD6;sfr TL2 = 0xD7;sfr IE2 = 0xAF;sfr INT_CLKO = 0x8F;sfr AUXR = 0x8E;sfr AUXR1 = 0xA2;sfr P_SW1 = 0xA2;sfr P_SW2 = 0xBA;sfr PIN_SW2 =0xBA;sfr S2CON = 0x9A;sfr S2BUF = 0x9B;sfr P4 = 0xC0;sfr P5 = 0xC8;sfr P6 = 0xE8;sfr P7 = 0xF8;sfr P1M1 = 0x91; //PxM1.n,PxM0.n =00--->Standard, 01--->push-pull sfr P1M0 = 0x92; // =10--->pure input, 11--->open drain sfr P0M1 = 0x93;sfr P0M0 = 0x94;sfr P2M1 = 0x95;sfr P2M0 = 0x96;sfr P3M1 = 0xB1;sfr P3M0 = 0xB2;sfr P4M1 = 0xB3;sfr P4M0 = 0xB4;sfr P5M1 = 0xC9;sfr P5M0 = 0xCA;sfr P6M1 = 0xCB;sfr P6M0 = 0xCC;sfr P7M1 = 0xE1;sfr P7M0 = 0xE2;sbit P00 = P0^0;sbit P01 = P0^1;sbit P02 = P0^2;sbit P03 = P0^3;sbit P04 = P0^4;sbit P05 = P0^5;sbit P06 = P0^6;sbit P07 = P0^7;sbit P10 = P1^0;sbit P11 = P1^1;sbit P12 = P1^2;sbit P13 = P1^3;sbit P14 = P1^4;sbit P15 = P1^5;sbit P16 = P1^6;sbit P17 = P1^7;sbit P20 = P2^0;sbit P21 = P2^1;sbit P22 = P2^2;sbit P23 = P2^3;sbit P24 = P2^4;sbit P25 = P2^5;sbit P26 = P2^6;sbit P27 = P2^7;sbit P30 = P3^0;sbit P31 = P3^1;sbit P32 = P3^2;sbit P33 = P3^3;sbit P34 = P3^4;sbit P35 = P3^5;sbit P36 = P3^6;sbit P37 = P3^7;sbit P40 = P4^0;sbit P41 = P4^1;sbit P42 = P4^2;sbit P43 = P4^3;sbit P44 = P4^4;sbit P45 = P4^5;sbit P46 = P4^6;sbit P47 = P4^7;sbit P50 = P5^0;sbit P51 = P5^1;sbit P52 = P5^2;sbit P53 = P5^3;sbit P54 = P5^4;sbit P55 = P5^5;sbit P56 = P5^6;sbit P57 = P5^7;/************* 收发定义**************/#define Baudrate1 9600L //波特率#define UART1_BUF_LENGTH 32u8 TX1_Cnt; //发送计数u8 RX1_Cnt; //接收计数bit B_TX1_Busy; //发送忙标志void UART1_config(u8 brt); // 选择波特率, 2: 使用Timer2做波特率, 其它值: 使用Timer1做波特率.void PrintString1(u8 *puts);u8 idata RX1_Buffer[UART1_BUF_LENGTH]; //接收缓冲/************* IO口定义**************/sbit P_HC595_SER = P4^0; //pin 14 SER data inputsbit P_HC595_RCLK = P5^4; //pin 12 RCLk store (latch) clock sbit P_HC595_SRCLK = P4^3; //pin 11 SRCLK Shift data clock/************* 本地变量声明**************/void delay_ms(u8 ms);void DisableHC595(void);void Initialize_LCD(void);void Write_AC(u8 hang,u8 lie);void Write_DIS_Data(u8 DIS_Data);void ClearLine(u8 row);u8 BIN_ASCII(u8 tmp);void PutString(u8 row, u8 column, u8 *puts);void WriteChar(u8 row, u8 column, u8 dat);/************* 变量声明**************/#define CYCLE 0x1000L //定义PWM周期(最大值为32767)u8 DirLeft[15]={"Dir Left"};u8 DirRight[15]={"Dir Right"};u8 DirUp[15]={"Dir Up"};u8 DirDown[15]={"Dir Down"};u8 HSpeed[15]={"Speed Normal"};u8 NSpeed[15]={"Speed Hight"};int flag = 0;sbit Pdir1 =P2^1;sbit Pdir2 =P2^2;sbit Pfir1 =P2^3;sbit Pfir2 =P2^7;void IoInit(void);void SendMegBack(void);void ENpwm(WORD DUTY1,WORD DUTY2,WORD outch,WORD outen);void closepwm();WORD Speed1=75L;WORD Speed2=80L;WORD Fspeed1=75l;WORD Fspeed2=80L;bit Dir=0;//===========================================void main(void){IoInit(); //初始化端口Initialize_LCD();//初始化端口lcdUART1_config(1); // 选择波特率, 2: 使用Timer2做波特率, 其它值: 使用Timer1做波特率.EA = 1; //允许总中断while(1){flag=SBUF;SendMegBack();switch(flag){case '0': ClearLine(1);PutString(1,0,DirLeft);Fspeed1=Speed1;Fspeed2=18*Speed2/32;break;case '1': ClearLine(1);PutString(1,0,DirRight);Fspeed1=19*Speed1/32;Fspeed2=Speed2;break;case '2': ClearLine(1);PutString(1,0,DirUp);Fspeed1=Speed1;Fspeed2=Speed2;Dir=0;break;case '3': ClearLine(1);PutString(1,0,DirDown);Fspeed1=Speed1;Fspeed2=Speed2;Dir=1;break;case '4': ClearLine(0);PutString(0,0,NSpeed);Speed1=95L;Speed2=100L;Fspeed1=Speed1;Fspeed2=Speed2;break;case '5': ClearLine(0);PutString(0,0,HSpeed);Speed1=75L;Speed2=80L;Fspeed1=Speed1;Fspeed2=Speed2;break;case '6': ClearLine(0);PutString(0,0,NSpeed);Speed1=Speed1-2l;Speed2=Speed2-2l;Fspeed1=Speed1;Fspeed2=Speed2;break;case '7': ClearLine(0);PutString(0,0,NSpeed);Speed1=Speed1+2l;Speed2=Speed2+2l;Fspeed1=Speed1;Fspeed2=Speed2;break;default: ClearLine(0);PutString(0,0,HSpeed);Speed1=75L;Speed2=80L;Fspeed1=Speed1;Fspeed2=Speed2;break;}if(Dir==0){ENpwm(Fspeed1,Fspeed2,0x00,0x0a);Pdir2=0;Pfir2=0;}else{ENpwm(Fspeed1,Fspeed2,0x00,0x05);Pdir1=0;Pfir1=0;}delay_ms(20);}}/**********************************************/void IoInit(void){P0M1 = 0; P0M0 = 0; //设置为准双向口P1M1 = 0; P1M0 = 0; //设置为准双向口P2M1 = 0; P2M0 = 0; //设置为准双向口P3M1 = 0; P3M0 = 0; //设置为准双向口P4M1 = 0; P4M0 = 0; //设置为准双向口P5M1 = 0; P5M0 = 0; //设置为准双向口P6M1 = 0; P6M0 = 0; //设置为准双向口P7M1 = 0; P7M0 = 0; //设置为准双向口}void SendMegBack(void){if((TX1_Cnt != RX1_Cnt) && (!B_TX1_Busy)) //收到数据, 发送空闲SBUF = RX1_Buffer[TX1_Cnt]; //把收到的数据远样返回B_TX1_Busy = 1;if(++TX1_Cnt >= UART1_BUF_LENGTH) TX1_Cnt = 0;}void ENpwm(WORD DUTY1,WORD DUTY2,WORD outch,WORD outen){PIN_SW2 |= 0x80; //使能访问XSFRPWMCFG = 0x00; //配置PWM的输出初始电平为低电平PWMCKS = 0x00; //选择PWM的时钟为Fosc/(0+1)PWMC = CYCLE; //设置PWM周期PWM3T1 = CYCLE * DUTY1/ 100; //设置PWM2第1次反转的PWM计数PWM4T1 = CYCLE * DUTY1/ 100; //设置PWM2第2次反转的PWM计数PWM5T1 = CYCLE * DUTY2 / 100; //设置PWM3第1次反转的PWM计数PWM2T2 =CYCLE * DUTY1/ 100 ; //设置PWM3第2次反转的PWM计数PWM2CR = 0x08; //选择PWM2输出引脚,不使能PWM2中断PWM3CR = 0x00;PWM4CR = 0x00;PWM5CR = 0x00;PWMCR = outen; //使能PWM信号输出PWMCR |= 0x80; //使能PWM模块PIN_SW2 &= ~0x80; //占空比为(PWM2T2-PWM2T1)/PWMC }void closepwm(){PIN_SW2 |= 0x80; //使能访问XSFRPWMCR = 0x00; //使能PWM信号输出PWMCR |= 0x80; //使能PWM模块PIN_SW2 &= ~0x80;Pfir1=0;Pfir2=0;Pdir1=0;Pdir2=0;}void delay_ms(u8 ms){unsigned int i;do{i = MAIN_Fosc / 13000;while(--i) ; //14T per loop}while(--ms);}void DisableHC595(void){u8 i;P_HC595_SER = 1;for(i=0; i<20; i++){P_HC595_SRCLK = 1;P_HC595_SRCLK = 0;}P_HC595_RCLK = 1;P_HC595_RCLK = 0; //锁存输出数据P_HC595_RCLK = 1;P_HC595_RCLK = 0; //锁存输出数据}// 函数: void RTC(void)// 描述: RTC演示函数// 参数: none.// 返回: none.// 版本: VER1.0// 日期: 2013-4-1// 备注://============================================================ ============/************* LCD1602相关程序*****************************************************///8位数据访问方式LCD1602 标准程序梁工编写2014-2-21#define LineLength 16 //16x2/************* Pin define *****************************************************/sfr LCD_BUS = 0x90; //P0--0x80, P1--0x90, P2--0xA0, P3--0xB0sbit LCD_B7 = LCD_BUS^7; //D7 -- Pin 14 LED- -- Pin 16sbit LCD_B6 = LCD_BUS^6; //D6 -- Pin 13 LED+ -- Pin 15sbit LCD_B5 = LCD_BUS^5; //D5 -- Pin 12 V o -- Pin 3sbit LCD_B4 = LCD_BUS^4; //D4 -- Pin 11 VDD -- Pin 2sbit LCD_B3 = LCD_BUS^3; //D3 -- Pin 10 VSS -- Pin 1sbit LCD_B2 = LCD_BUS^2; //D2 -- Pin 9sbit LCD_B1 = LCD_BUS^1; //D1 -- Pin 8sbit LCD_B0 = LCD_BUS^0; //D0 -- Pin 7sbit LCD_ENA = P0^7; //Pin 6sbit LCD_RW = P0^6; //Pin 5 //LCD_RS R/W DB7--DB0 FOUNCTIONsbit LCD_RS = P0^5; //Pin 4 // 0 0 INPUT write the command to LCD model// 0 1 OUTPUT read BF and AC pointer from LCD model// 1 0 INPUT write the data to LCD model// 1 1 OUTPUT read the data from LCD model/*total 2 lines, 16x2= 32first line address: 0~15second line address: 64~79*/#define C_CLEAR 0x01 //clear LCD#define C_HOME 0x02 //cursor go home#define C_CUR_L 0x04 //cursor shift left after input#define C_RIGHT 0x05 //picture shift right after input#define C_CUR_R 0x06 //cursor shift right after input#define C_LEFT 0x07 //picture shift left after input#define C_OFF 0x08 //turn off LCD#define C_ON 0x0C //turn on LCD#define C_FLASH 0x0D //turn on LCD, flash#define C_CURSOR 0x0E //turn on LCD and cursor#define C_FLASH_ALL 0x0F //turn on LCD and cursor, flash#define C_CURSOR_LEFT 0x10 //single cursor shift left#define C_CURSOR_RIGHT 0x10 //single cursor shift right#define C_PICTURE_LEFT 0x10 //single picture shift left#define C_PICTURE_RIGHT 0x10 //single picture shift right#define C_BIT8 0x30 //set the data is 8 bits#define C_BIT4 0x20 //set the data is 4 bits#define C_L1DOT7 0x30 //8 bits,one line 5*7 dots#define C_L1DOT10 0x34 //8 bits,one line 5*10 dots#define C_L2DOT7 0x38 //8 bits,tow lines 5*7 dots#define C_4bitL2DOT7 0x28 //4 bits,tow lines 5*7 dots#define C_CGADDRESS0 0x40 //CGRAM address0 (addr=40H+x)#define C_DDADDRESS0 0x80 //DDRAM address0 (addr=80H+x)#define LCD_DelayNop() _nop_();\_nop_();\_nop_();\_nop_();\_nop_();\_nop_();\_nop_();\_nop_();\_nop_();\_nop_();\_nop_();\_nop_();\_nop_();\_nop_();\_nop_();#define LCD_BusData(dat) LCD_BUS = dat//============================================================ void CheckBusy(void){u16 i;for(i=0; i<5000; i++) {if(!LCD_B7) break;} //check the LCD busy or not. With time out// while(LCD_B7); //check the LCD busy or not. Without time out}void IniSendCMD(u8 cmd){LCD_RW = 0;LCD_BusData(cmd);LCD_DelayNop();LCD_ENA = 1;LCD_DelayNop();LCD_ENA = 0;LCD_BusData(0xff);}void Write_CMD(u8 cmd){LCD_RS = 0;LCD_RW = 1;LCD_BusData(0xff);LCD_DelayNop();LCD_ENA = 1;CheckBusy(); //check the LCD busy or not.LCD_ENA = 0;LCD_RW = 0;LCD_BusData(cmd);LCD_DelayNop();LCD_ENA = 1;LCD_DelayNop();LCD_ENA = 0;LCD_BusData(0xff);}void Write_DIS_Data(u8 dat){LCD_RS = 0;LCD_RW = 1;LCD_BusData(0xff);LCD_DelayNop();LCD_ENA = 1;CheckBusy(); //check the LCD busy or not.LCD_ENA = 0;LCD_RW = 0;LCD_RS = 1;LCD_BusData(dat);LCD_DelayNop();LCD_ENA = 1;LCD_DelayNop();LCD_ENA = 0;LCD_BusData(0xff);}void Initialize_LCD(void){LCD_ENA = 0;LCD_RS = 0;LCD_RW = 0;delay_ms(100);IniSendCMD(C_BIT8); //set the data is 8 bitsdelay_ms(10);Write_CMD(C_L2DOT7); //tow lines 5*7 dots delay_ms(6);Write_CMD(C_CLEAR); //clear LCD RAMWrite_CMD(C_CUR_R); //Curror Shift RightWrite_CMD(C_ON); //turn on LCD}void ClearLine(u8 row){u8 i;Write_CMD(((row & 1) << 6) | 0x80);for(i=0; i<LineLength; i++) Write_DIS_Data(' ');}void WriteChar(u8 row, u8 column, u8 dat){Write_CMD((((row & 1) << 6) + column) | 0x80);Write_DIS_Data(dat);}void PutString(u8 row, u8 column, u8 *puts){Write_CMD((((row & 1) << 6) + column) | 0x80);for ( ; *puts != 0; puts++) //遇到停止符0结束{Write_DIS_Data(*puts);if(++column >= LineLength) break;}}//******************** LCD20 Module END *************************** //******************** 串口部分***************************//============================================================ ============// 函数: void PrintString1(u8 *puts)// 描述: 串口1发送字符串函数。

相关文档
最新文档