基于蓝牙控制的灯光控制系统设计实验报告
- 格式:doc
- 大小:4.41 MB
- 文档页数:20
手机蓝牙控制led灯课程设计一、课程目标知识目标:1. 让学生理解蓝牙技术在物联网中的应用原理;2. 使学生掌握LED灯的基本控制方法;3. 帮助学生了解手机APP与蓝牙模块的通信方式。
技能目标:1. 培养学生动手搭建简单电路的能力;2. 提高学生编程控制硬件设备的能力;3. 培养学生利用现有技术解决问题的创新能力。
情感态度价值观目标:1. 培养学生对物联网技术的兴趣,激发学习热情;2. 培养学生合作探究、分享成果的良好习惯;3. 引导学生关注科技发展,认识创新对社会的重要性。
课程性质:本课程为实践性课程,结合理论知识,注重培养学生的动手能力和创新能力。
学生特点:六年级学生具备一定的物理知识和编程基础,对新鲜事物充满好奇,喜欢动手操作。
教学要求:教师需引导学生主动探究,鼓励学生提出问题、解决问题,关注每个学生的学习进度,确保课程目标的实现。
在教学过程中,将课程目标分解为具体的学习成果,以便于后续的教学设计和评估。
二、教学内容1. 理论知识:- 物联网基础概念;- 蓝牙技术原理及其在物联网中的应用;- LED灯的控制原理;- 手机APP与蓝牙模块的通信方法。
2. 实践操作:- 搭建LED灯电路;- 蓝牙模块的连接与调试;- 编写手机APP控制程序;- 实现手机蓝牙控制LED灯。
3. 教学大纲:- 第一阶段:理论知识学习,介绍物联网、蓝牙技术、LED灯控制原理等;- 第二阶段:实践操作指导,教授搭建电路、编程控制、调试设备等;- 第三阶段:创新实践,鼓励学生提出创新方案,实现手机蓝牙控制LED灯。
教学内容安排与进度:- 第一课时:物联网基础概念,蓝牙技术原理;- 第二课时:LED灯控制原理,手机APP与蓝牙模块通信方法;- 第三课时:搭建LED灯电路,连接蓝牙模块;- 第四课时:编写手机APP控制程序,实现LED灯控制;- 第五课时:创新实践,分享成果。
教材关联:教学内容与课本中关于物联网、蓝牙技术、编程控制等章节相关,注重理论与实践相结合,提高学生的实际操作能力。
基于C51的蓝牙灯是一个很有趣和有挑战性的课程设计项目。
以下是一个简单的设计方案:
1. 硬件设计:
- C51单片机:选择一款适用的C51单片机作为控制核心。
- 蓝牙模块:选择一个合适的蓝牙模块,例如HC-05或HC-06。
- 灯光控制电路:设计一个灯光控制电路,可以使用继电器或者晶体管来控制灯光的开关。
- 光敏传感器:可以添加一个光敏传感器,根据环境光强度自动调节灯光亮度。
2. 软件设计:
- 协议通信:在C51单片机上编写程序,通过蓝牙与手机或其他设备进行通信,可以使用UART通信协议。
- 蓝牙控制:接收通过蓝牙发送的控制指令,如开关灯命令、调节亮度命令等,并相应地控制灯光。
- 光敏传感器处理:若添加了光敏传感器,通过检测光线强度来调节灯光亮度。
- 状态显示:可以在单片机的LED指示灯或LCD屏幕上显示灯的状态,如开关、亮度等。
3. 系统测试和调试:
- 编写程序并下载到C51单片机上。
- 进行硬件电路连接,确保各个部分正常工作。
- 使用蓝牙终端设备(如手机) 连接到蓝牙模块,测试灯光的开关和亮度调节功能。
- 确保光敏传感器可以正确地感测环境光,并自动调节灯光亮度。
这只是一个简单的基于C51的蓝牙灯设计方案,您可以根据具体需求和项目要求进行定制和扩展。
在实际设计中,请注意硬件与软件的协作,以及合理的电路设计和程序编写。
在这个的基础上人工智能蓝牙操控系统应用技术的电灯光照亮操控系统摘要:随着21世纪信息时代的互联网应用技术和互相联系应用技术的不断进步,家用的人工机械不是手动操控的化已经成为未来发展的必然趋势,人工机械不是手动操控的电灯光照亮作为人工机械不是手动操控的家用的必不可少的子系统,开始影响并改变人们的电灯光照亮观念。
近几年,结合人工机械不是手动操控的用户端终端系统的电灯光照亮系统在互联网时代下得到了飞速发展。
最重要的工作和创新点如下:首先,设计开发了在这个的基础上安卓的人工智能蓝牙操控系统人工机械不是手动操控的电灯光照亮用户端软件。
利用安卓计算机语言和人工智能蓝牙操控系统4.0即时通讯应用技术,设计了具有调光调色、定时墙上手动的开关、定制生活场景等功能样式的人工机械不是手动操控的电灯光照亮用户端应用。
人们对日常生活中电灯光照亮周边所处环境的要求,除了可以根据自身习惯来调节电灯光照亮亮度,还期望有不同的电灯光照亮成果来成全不同的生活场景,与此同时保持高效节能。
该用户端通过友好的人机交换信息界面,实现了对灯光具的实时操控。
考虑到本文所设计的人工机械不是手动操控的电灯光照亮系统需要经常性地进行一对多的互相联系,在重庆市体会并感受到沃德科技有限公司创新项目《在这个的基础上物联网的灯光光操控系统》的背景下,本文研究并设计了在这个的基础上安卓的人工智能蓝牙操控系统人工机械不是手动操控的电灯光照亮系统,在软件端提出了一种在这个的基础上能量优先级的互相联系调度计算方法,从而增加了各个固定装置计算机技术协同工作时长。
该用户端软件操作简单、界面友好、稳定性高,因而该系统具有极其广泛的应用市场。
首先,根据特殊互联网联通的系统的实现原理,选取适当的数据参数,然后构建了特殊互联网联通的系统模型,将实验数据输入模型进行训练,最后在互联网仿真平台上,对本文所提出的亮度估计计算方法进行仿真验证。
仿真结果表明,估计亮度数据与用户期望数据相比在可接受误差范围之内,在一定程度上节省了消耗。
基于蓝牙的安卓平台智能灯控制系统设计与实现概述本项目基于安卓平台和蓝牙技术实现了一款智能灯控制系统。
通过设置安装在灯具上的蓝牙模块,在安卓手机上安装对应的应用程序,用户可以通过手机端的应用程序进行灯具的控制。
设计原理硬件设计通过硬件设计实现蓝牙模块与灯具的连接。
在灯具上安装蓝牙模块,通过蓝牙信号与安卓手机进行通信控制。
硬件器件•STM32F103C8T6单片机•蓝牙串口透传模块硬件连接1.串口通信连接将蓝牙串口透传模块的VCC、GND、TX、RX四个引脚分别接到STM32F103C8T6单片机的相应引脚上,实现蓝牙串口透传模块与单片机的通信连接。
2.控制输出连接利用单片机IO口的高低电平控制灯具的开关、亮度等状态。
软件设计通过软件设计实现安卓手机与蓝牙模块之间的通信,并实现对灯具的远程控制。
系统结构图系统结构图系统结构图实现过程1.蓝牙设备搜索与连接–定义BluetoothAdapter实例,获取蓝牙适配器。
BluetoothAdapter mBlueToothAdapter = BluetoothAdapter. getDefaultAdapter();–打开蓝牙,开始搜索周围的蓝牙设备信息。
mBlueToothAdapter.startDiscovery();–将蓝牙设备信息展示在ListView中。
```java ArrayList deviceNames = new ArrayList<>(); … public void onReceive(Context context, Intent intent){ String action =intent.getAction();if(BluetoothDevice.ACTION_FOUND.equals(action)){ BluetoothDevice device = intent.getParcelableExtra(BluetoothDevice.EXTRA_DEVICE);if(!isChecked.contains(device.getAddress())){ deviceNames.add(device.g etName()+。
《单片机原理与应用》实验报告姓名:学号:班级:电信二班实验名称:基于蓝牙的无线控制功能设计与实现一、实验工具、器材Proteus仿真软件,Keil程序编写软件,MAX232芯片,COMPIM端口,AT89C51单片机二、实验原理1、在实现蓝牙控制单片机而实现LED灯的亮和灭之前,我们需要完成双机通信而实现A机向B机发送控制命令,B机根据接收到的控制命令执行不同的控制操作。
也就是我们实验中的发送1,LED灯亮;发送0,LED灯灭。
所以我们需要两个程序一个发送,一个接收。
在发送的程序里面实现按键A、B分别发送1、0。
在接收程序中收到命令1、0分别实现LED灯的亮和灭。
2、在双机通信的程序调试正确无误后,将实现发送的单片机换成蓝牙与手机连接。
在手机上发送命令1、0。
在蓝牙的调试中我们需要先发送命令知道蓝牙的名字和发送命名时至密码在与手机连接。
之后将蓝牙模块与接收的单片机模块连接,就能实现在手机上发送命名1、0从而控制LED灯的亮与灭。
三、硬件电路说明在双机通信调试时,左边单片机发送命令,右边单片机接收命令。
闭合P1.0口按键,单片机发送命令1,右边单片机接收命令后使LED灯亮;闭合P1.1口按键,单片机发送命令0,右边单片机接收命令后使LED灯灭。
双机通信调试完成后,将蓝牙模块与接收的单片机连接,蓝牙与手机连接。
在手机上发送命令1,就相当于在双机通信时发送的单片机闭合P1.0口按键,接收的单片机接收到命令1使LED灯亮;在手机上发送命令0,就相当于在双机通信时发送的单片机闭合P1.1口按键,接收的单片机接收到命令0使LED灯灭;四、软件程序说明主函数:主函数中初始化串口,函数名:UsartConfiguration。
UsartConfiguration()函数:因为函数名为UsartConfiguration所以在此函数中设置工作方式为1、8为数据、可变波特率;设置计数器工作方式2;波特率不加倍;计数器初始值设置;计数器、串口开关的开关设置。
蓝牙控制LED灯开关的课程设计1. 引言蓝牙技术作为一种无线通信技术,被广泛应用于各个领域。
本文介绍了一个基于蓝牙控制的LED灯开关的课程设计,通过使用蓝牙模块和单片机等硬件组件,实现了远程控制LED灯的开关功能。
2. 设计方案2.1 硬件设计在本课程设计中,我们需要使用以下硬件组件: - Arduino开发板:作为控制中心,用于接收来自蓝牙模块的信号,并控制LED灯的开关。
- 蓝牙模块:作为信号的接收和发送器,与手机、电脑等设备进行通信。
- LED灯:作为输出终端,用于显示灯的开关状态。
2.2 软件设计在本课程设计中,我们需要编写以下软件模块: - Arduino代码:用于控制Arduino开发板和蓝牙模块的通信,以及控制LED灯的开关。
- 手机App代码:用于与蓝牙模块进行通信,向蓝牙模块发送控制信号,实现远程控制LED灯的开关。
3. 硬件连接按照以下步骤连接硬件: 1. 将Arduino开发板与电脑通过USB线连接。
2. 将蓝牙模块与Arduino开发板连接。
连接方法可以根据蓝牙模块的型号进行调整,一般需要连接到Arduino开发板的串口或软串口。
3. 将LED灯与Arduino开发板连接。
一个引脚连接到开发板的数字输出引脚,另一个引脚连接到开发板的地线。
4. 软件编程4.1 Arduino代码编写以下是Arduino代码的主要框架:void setup() {// 初始化蓝牙模块// 设置LED引脚为输出}void loop() {// 监听蓝牙模块接收到的指令// 根据指令控制LED灯的开关}4.2 手机App代码编写以下是手机App代码的主要框架:// 初始化蓝牙连接// 点击按钮时,向蓝牙模块发送控制指令5. 程序调试与测试将Arduino开发板上电并运行代码后,通过手机App连接蓝牙模块,并尝试通过按钮控制LED灯的开关,观察LED灯的状态是否与预期一致。
如果存在问题,可以通过串口调试工具查看Arduino开发板与蓝牙模块之间的通信是否正常,以及控制信号是否正确发送。
基于单片机的蓝牙电灯开关系统设计任务书开题报告武汉工商学院本科毕业论文(设计)任务书论文名称:基于单片机的蓝牙电灯控制器系统设计学院、专业:工学院电子信息工程专业学生姓名:指导教师:下发时间:2021年12月15日一、论文(设计)的选题意义当前广泛利用的普通控制器去掌控电灯控制器的方法存有两种形式:单控控制器形式和双联双往下压控制器形式。
前者只起著灯的单个地点掌控通断促进作用,后者可实现两个相同地方可以掌控电灯通断促进作用。
人们在日常生活中经常碰到以下情况,忙忙碌碌一天谁知之时,返回家里安顿回去家务事情,已经难受窝在床上或者沙发上了,但是还须要出来把关灯掉,这对于很多自私的客户来说,都就是一个非常厌倦的事情。
而且在闲暇时间躺在床上看电视得时候或玩游戏时课,我们可以把书随便放在枕头旁边家里的电视也可以用遥控器额滴或关,可是电灯怎么去远距离掌控呢?现有的常用控制器存有如下缺点:(一)不是安全,有时候大家图方便就进行私接电线但是这样做很不安全。
(二)不方便,不可能每个电灯都把开关放置在床头;(三)控制一个电灯的地方少,最多我们进行两地控制。
为了能够并使以上问题获得合理化解,在设计的过程中我们想起了生活中到处虚的无线技术,例如大家采用的无线鼠标、驾车时候的无线耳机、玩游戏无线路由器、无线遥控器、无线收音机等的,其实无线技术主要分成调频无线技术、红爱无线技术和蓝牙无穷技术三种类型。
蓝牙无线技术其实就是一种长的距离的无穷通信技术,说道得难一点,就是蓝牙技术并使的我们一些难随身携带的移动通信设备和电脑设备不必在相连接电缆就可以相连接网络,而且还能同时实现无线连接因特网,其实际的工作范围还可以延伸到各种家用电器、消费电子产品和汽车等家用电子电,组成一个宽广的无线通信网络。
二、论文(设计)的任务和基本建议设计任务:本设计就是以52单片机为核心,以最轻系统提蓝牙模块为下位机,用手机搞上位机通过手机蓝牙系统和单片机的蓝牙相连接,手机传送指令去掌控蓝牙模块同时实现掌控电灯控制器的掌控。
浅谈蓝牙多功能智能灯控制系统设计随着工业4.0的推进,现代化与科技化也逐渐在日常生活中凸显,智能家居理念也越来越受大众所推崇。
本文基于智能生活理念,设计了一款利用蓝牙技术的多功能智能灯,通过手机等无线终端,可以对智能灯进行定时开关、亮度调节、光色调节等控制。
本设计操作简便,智能环保,应用广泛。
随着科技的不断进步,人民生活水平不断提高,电器也在人们的日常生活中普及,传统的家居灯功能单一、操控性固化,已渐渐难以满足人们对家居环境的体验需求,同时传统灯不能根据周围环境而合理的调节而造成了巨大的能源浪费。
多功能智能灯将无线控制系统融入到日常生活,方便了人们的日常生活,增强了人们对科技的体验感。
在该设计系统中,通过手机等无线设备与智能灯进行连接,设定灯的开关时间、光的强弱、光色调节,智能灯也能根据环境变化而自我调节光强,降低了能源损耗,最大程度满足人们智能生活的需求。
1总体设计该智能灯控制系统以STM32F103芯片为核心控制芯片,控制系统的组成模块电路包括:电压转化电2系统组成电路设计 2.1STM32F103芯片路、STM32F103最小系统电路、蓝牙接收电路、光敏传感器电路。
系统控制程序采用C语言编程。
当智能灯与无线设备进行蓝牙连接后,无线设备向智能灯发送指令,蓝牙接收到指令后递交给核心处理器进行相应的功能操作。
2系统组成电路设计2.1STM32F103芯片。
STM32F103芯片属于Cortex—M3内核的32位ARM微控制器,Flash选用64k,其芯片集成定时器、ADC、UART等多种功能。
选用该款芯片能够直接提供所需的定时器、串口、IO等资源,利用PWM占空比进行光强调节,能够接收和处理蓝牙收到的数据,同时该款芯片还有功耗低的特点。
2.2电源模块。
对于整个控制系统而言电源模块是基础,其作用是给整个系统提供正常工作所需要的稳定、可靠的电压,要满足系统中不同模块对应的需求,使核心控制系统和外拓展模块正常稳定工作。
基于蓝牙控制的智能照明设计绪论众所周知,现在LED灯在我们的周围已经很普遍了,它散发出来的灯光无时无刻的伴随在我们的身边,它给我们生活带来了极大的方便,而现如今控制它的开关也在随着科技的发展也在慢慢的发生变化,而蓝牙作为一种短距离无线控制技术,它的特性能否应用到我们所熟悉的LED灯上呢?日常生活中我们的开关掌控着电灯,假如把这开关换为更为先进的无线控制,不是更能方便我们的生活,那LED灯的控制器怎样去设计与实现呢?因此,基于低功耗蓝牙技术控制的LED 灯设计就很有必要了,而这其中最关键的就是怎样在蓝牙模块与单片机模块、单片机模块与LED灯模块之间建立起通信,而在这种方案设计前我们必须要了解蓝牙的工作原理,单片机的工作原理,以及开关元器件的工作原理。
凭借着蓝牙短距离无线通信技术的特性,我们可以实现无线操控,所以在单片机与LED灯之间加入的元器件就很重要了,经过思考,我们用MOS管来控制LED灯,那么这个无线控制器的基本构成模块就很清楚了,本设计就是是利用手机蓝牙来实现无线电灯开关的工作。
1 蓝牙的发展1.1蓝牙我们所说的蓝牙一词是从英语单词"Bluetooth"中音译而来的,实际上它就是我们所谓的一种短距离无线通信技术,而且利用这种蓝牙技术它能使我们更加的方便有效,在笔记本电脑、移动电话手机、以及各种信息化设备和医疗设备之间大大增加了通信效率,进而使这些通信终端设备之间的联系在通过Internet 上的信息传递变得快捷有效,这为无线通信技术奠定了基础。
换而言之,那就是蓝牙技术让我们的移动通信设备能够无线上网,一些我们方便携带的的现代化设备在没有通过有线电缆连接时,我们可以在移动中上网。
其实际范围它还可以延伸到其它领域,如各种家电产品、汽车产业、个人消费电子设备和医疗设备等各种物联网的产物,这些通信设备在蓝牙技术的基础上形成一个庞大的无线通信网络。
蓝牙技术的最初设计目的是为了方便现代化的信息产品,使这些数字化的电子产品不用通过有线电缆的连接,想着更加现代化迈进,以低成本的运作、低功率的消耗代替原来的有线连接,从而构造成一种单向发散式的网络,让那些拥有移动通信设备的的人在网络领域里能够实现资源共享。
基于蓝牙控制得得灯光控制系统第一章功能描述1、本设计采用蓝牙作为上位机与下位机之间得通信方式,本设计使用手机APP作为上位机控制下位机(单片机)。
2、采用DS1302时钟芯片,通过开发板上得数码管显示时分秒,即使断开电源,DS1302芯片中得时间也会正常走,不需要重复写入时间。
3、手机连接蓝牙后,手机APP可以控制LED灯显示红绿蓝三种颜色,还可以向单片机发送LED灯亮得时间以及灯灭得时间。
4、当灯亮得时候,可以通过按键调节占空比调节灯光亮度也就就是PWM调光、在灯光开启之前以及灯灭之后PWM调光按键无效、第二章下位机软件设计思路以及原理本设计使用了STC12C5A60S2单片机、数码管、HC—05蓝牙模块、LED 彩灯、DS1302时钟模块、2.1 单片机程序设计单片机部分程序设计主要包括定时器0与定时器1以及串口部分程序设计2.1.1定时器以及PWM调光部分程序设计定时器主要用到了定时器0以及定时器1,在本设计中有一项功能就是PW M调光功能,由于单片机没有PWM模块,所以在本设计中我们采用定时器0来模拟实现PWM得功能,其中定时器0得初始化程序如下所示。
void Timer0Init(){TMOD = 0x02; //定时器0,工作模式2,8位定时模式ﻩTH0=210;//写入预置初值(取值1—255,数越大PWM频率越高) ﻩTL0=210;//写入预置值(取值1-255,数越大PWM频率越高) ﻩTR0=1;//启动定时器0PWM_T=0;}void timer0() interrupt1{t++; //每次定时器溢出加1if(t==250)//PWM周期100个单位{t=0; //使t=0,开始新得PWM周期ﻩP1=0x07&P1;//输出端口}if(PWM_T==t) //按照当前占空比切换输出为高电平ﻩ{P1=0xf8|P1; }}这一部分程序主要就是让单片机每个45微秒进入一次定时器0中断,其中t 每隔45微秒加一次,计数到250得时候重新置零,并让P1得高五位置零,也就就是亮度达到最大。
基于蓝牙控制的的灯光控制系统第一章功能描述1、本设计采用蓝牙作为上位机和下位机之间的通信方式,本设计使用手机APP 作为上位机控制下位机(单片机)。
2、采用DS1302时钟芯片,通过开发板上的数码管显示时分秒,即使断开电源,DS1302芯片中的时间也会正常走,不需要重复写入时间。
3、手机连接蓝牙后,手机APP可以控制LED灯显示红绿蓝三种颜色,还可以向单片机发送LED灯亮的时间以及灯灭的时间。
4、当灯亮的时候,可以通过按键调节占空比调节灯光亮度也就是PWM调光。
在灯光开启之前以及灯灭之后PWM调光按键无效。
第二章下位机软件设计思路以及原理本设计使用了STC12C5A60S2单片机、数码管、HC-05蓝牙模块、LED彩灯、DS1302时钟模块。
2.1 单片机程序设计单片机部分程序设计主要包括定时器0和定时器1以及串口部分程序设计2.1.1 定时器以及PWM调光部分程序设计定时器主要用到了定时器0以及定时器1,在本设计中有一项功能是PWM调光功能,由于单片机没有PWM模块,所以在本设计中我们采用定时器0来模拟实现PWM的功能,其中定时器0的初始化程序如下所示。
void Timer0Init(){TMOD = 0x02; //定时器0,工作模式2,8位定时模式TH0=210; //写入预置初值(取值1-255,数越大PWM频率越高)TL0=210; //写入预置值(取值1-255,数越大PWM频率越高)TR0=1; //启动定时器0PWM_T=0;}void timer0() interrupt 1{t++; //每次定时器溢出加1if(t==250) //PWM周期100个单位{ t=0; //使t=0,开始新的PWM周期P1=0x07&P1; //输出端口}if(PWM_T==t) //按照当前占空比切换输出为高电平{ P1=0xf8|P1; }}这一部分程序主要是让单片机每个45微秒进入一次定时器0中断,其中t 每隔45微秒加一次,计数到250的时候重新置零,并让P1的高五位置零,也就是亮度达到最大。
PWM_T是调节占空比的,初始值是0,是通过按键控制PWM_T数值的增加与减少的。
当PWM_T的数值与t相等的时候将P1的高五位置为高电平。
定时器1部分程序设计如下所示void Timer1Init(void) //timer1初始化程序{TMOD &= 0x0F; //设置定时器模式TMOD |= 0x10; //设置定时器模式TL1 = 0x00; //设置定时初值TH1 = 0xEE; //设置定时初值TF1 = 0; //清除TF1标志TR1 = 1; //定时器1开始计时}void timer1() interrupt 3{TL1 = 0x00; //设置定时初值TH1 = 0xEE; //设置定时初值keyscan();t1++;if(t1 == 100){write_1302(0x8e,0x00);hour=read_1302(0x85);minute=read_1302(0x83);second=read_1302(0x81);write_1302(0x8e,0x80);t1 = 0;}// if(t1 == 20) t = 0;}定时器1设置每5ms进入一次中断,进入中断之后先重装初值,然后进行按键扫描,本设计中只用到了独立按键,所以只需要扫描两个按键就行了。
没进入一次t1就加1,当t1等于100的时候也就是500ms的时候读取一次DS1302的时,分,秒。
因为DS1302的时,分,秒三个变量每隔一秒种才变化一次,所以每个500ms读取一次是比较节省资源的做法,而且可以保证数据读取无误。
2.1.2 串口部分程序设计void send_data(uchar byte) //串口发送函数{SBUF = byte;while(!TI);TI = 0;}void UartInit(void) //串口初始化baud = 9600;{PCON &= 0x7F; //波特率不倍速SCON = 0x50; //8位数据,可变波特率AUXR &= 0xFB; //独立波特率发生器时钟为Fosc/12,即12TBRT = 0xFD; //设定独立波特率发生器重装值AUXR |= 0x01; //串口1选择独立波特率发生器为波特率发生器AUXR |= 0x10; //启动独立波特率发生器}由于本设计中两个定时器都用到了,所以我们无法使用定时器作为波特率发生器,本设计中使用的是STC12C5A60S2单片机,内部含有独立波特率发生器BRT,所以本设计使用独立波特率发生器。
设置波特率9600。
本设计中串口发送程序是单片机测视的时候使用的,是为了直观的看到上位机与下位机之间通信的内容。
2.2 通信协议部分程序设计由于上位机与下位机之间每次通信的内容有很多字节,所以手机和单片机之间使用蓝牙通信必须按照一定的协议,这样才能成功的将数据打包,数据打包完成之后,我们才能够正确的区分数据类型,区分出该数据是切换LED颜色的还是LED的定时开关时间。
void uart() interrupt 4 // 串口中断{if(RI){RI = 0;rec_data = SBUF;if(k == 1){shuzu[i] = rec_data; i++; if(i == 6) i = 0,k = 0; }if(rec_data == 0xee)k = 1;}}void rsckongzhi() 串口数据处理{switch(shuzu[0]){case 1:if(shuzu[1] == 1) {P25 = 1;P24 = 0;P22 = 0;red = 1;}else if (shuzu[1] == 2) {P25 = 0;P24 = 1;P22 = 0;green = 1;}else if (shuzu[1] == 4) {P25 = 0;P24 = 0;P22 = 1;blue = 1;} case 3:onshi = shuzu[2]; onshi = ZhuanHuan(onshi);onfen = shuzu[3]; onfen = ZhuanHuan(onfen);offshi = shuzu[4]; offshi= ZhuanHuan(offshi);offfen = shuzu[5]; offfen= ZhuanHuan(offfen);}}串口中断里面的内容是把0Xee当作一包数据的识别码,当我们检测到0XEE的时候也就找到了一包数据的开头。
不过我们将0XEE后面的六个字节的内容放进数组里面。
我们使用rskongzhi函数对数组里面的内容进行处理,当检测到shuzu[0]是1的时候就说明他是灯管颜色切换信息,然后我们再对shuzu[1]进行判断,如果shuzu[1]是1,则是红灯亮;如果shuzu[1]是2,则是绿灯亮;shuzu[2]是4,则是蓝灯亮。
如果shuzu[0]是3,就代表该信息是LED定时开关信息。
此时我们分别将shuzu[2]到shuzu[5]分别赋值给onshi,onfen,offshi,offfen。
然后while循环中不断地对比实时时间和定时开关时间,当时实时时间与定时开时间相等的时候就将PWM_T值赋为250,也就是占空比为百分之百,同时开定时器中断。
当定时关时间与实时时间相等的时候将LED灯引脚电平拉高(LED灯是共阳的),关定时器中断。
2.3 DS1302时钟程序设计由于DS1302读写程序过多,所以我在这里就不显示读写程序了,只对其原理进行介绍其读取时序图如上所示对于数据写入:开始的8 个SCLK 周期,输入写命令字节,数据字节在后8 个SCLK 周期的上升沿输入。
数据输入位0 开始。
对于数据读取:开始的8 个SCLK 周期,输入一个读命令字节,数据字节在后8 个SCLK 周期的下降沿输出。
注意,第一个数据字节的第一个下降沿发生后,命令字的最后一位被写入命令字节的最后一位被写入。
当CE 仍为高时。
如果还有额外的SCLK 周期,DS1302 将重新发送数据字节,这使DS1302 具有连续突发读取能力。
第三章APP软件制作3.1开发软件介绍易安卓,Easy For Android,简称E4A,是国内首款中文可视化安卓应用开发工具。
E4A的核心编译器和支持库扩展自谷歌开源的Simple项目。
编程者使用的是中文编程语言,可以在没有java编程语言的基础上快速实现一个简单的安卓手机APP的开发。
本APP软件的设计,主要实现了手机连接HC-05蓝牙模块,通过三个按键分别控制三个不同颜色的灯的开关,通过窗口切换,定时控制灯的开启时间和关闭时间.在蓝牙连接成功后能够进入主窗口,在主窗口有三个控制灯光的按钮,小组成员的介绍标签,APP软件的标题.其中按钮定时设置,点击之后能够进入定时设置的界面,此界面可以输入灯光定时的开启时间和关闭时间,从而实现对灯光的定时控制. 3.2软件整体设计软件的整体设计主要包括设计的思路,整体的框架,内容的布局等等.软件设计思路从实现的功能出发,主要包括了蓝牙搜索的显示界面,主窗口和时钟窗口.其中主窗口主要用来显示APP功能标题,小组成员介绍标签,三个颜色灯光的控制按钮,窗口切换提示标签,定时设置切换窗口按钮等等.登陆的显示界面主要用于显示搜索到的蓝牙设备,点击蓝牙设备便可以实现连接设备.界面有两个按钮,分别是搜素设备和停止搜索,点击搜索设备,即可显示当前发现的蓝牙设备名称,点击蓝牙便可以实现连接,如果蓝牙连接成功,便可以进入主窗口界面,点击定时设置按钮,能够进入定时窗口界面.定时窗口界面主要有标签定时设置,输入开关开的定时时间,开关关闭的定时时间,以及保存并发送的按钮,如果点击了这个按钮,便可以将输入的时间设置按照规定的协议发送给单片机,从而实现单片机的定时控制.软件的操作流程图如下图3-1所示.图3-1 软件操作流程图3.3软件编程设计软件的编程采用的是中文的编程方法,通过模块化编程实现整个APP的功能调用.其中软件的模块主要分为主窗口,登陆设备窗口,定时窗口.3.3.1 登陆窗口编程设计在登陆设备窗口,主要是蓝牙的搜索显示和连接.其代码如下: 事件按钮_搜索设备.被单击()列表框1.清空项目()蓝牙1.搜索设备() '搜索设备弹出提示("正在搜索")结束事件事件按钮_停止搜索.被单击()蓝牙1.停止搜索()结束事件事件蓝牙1.发现设备(设备名称为文本型,设备地址为文本型,是否已配对为逻辑型)列表框1.添加项目(设备名称& " " & 设备地址& " " & 是否已配对) 结束事件上述代码分别为蓝牙的搜索,停止搜索以及蓝牙的正确连接.APP的登陆界面如下图3-2所示.3-2 登陆界面3.3.2 主窗口代码编程如果APP成功连接了蓝牙设备,便可以自动进入主窗口界面.主窗口主要有三个灯光控制按钮,一个定时设置窗口切换按钮,小组成员显示标签和APP主题标签.其中按钮的操作是窗口的重点,其代码如下:事件按钮_开关1.被单击()'开关控制的命令为:ef ee 01 开关控制00 00 00 00'开关控制为8个二进制各为1为相对应的开关蓝牙1.发送数据(十六进制到字节集("feee010*********")) '发送消息结束事件事件按钮_开关2.被单击()蓝牙1.发送数据(十六进制到字节集("feee010*********")) '发送消息结束事件事件按钮_开关3.被单击()蓝牙1.发送数据(十六进制到字节集("feee010*********")) '发送消息结束事件通过定义三个按钮的发送协议,当单片机通过串口接收到数据后,通过对数据的读取,便可以实现三个灯光的控制.协议的定义见如下编程代码:事件主窗口.切换完毕()'判断设置需重刷新窗口控件如果读取设置("传保存参数")="1" 则保存设置("传保存参数","0")结束如果'判断是否为定时设置保存,如是就发送串口命令如果读取设置("传保存参数")="2" 则'定时数据发送命令为EF EE 03 状态开时开分关时关分蓝牙1.发送数据(十六进制到字节集("feee03" & 读取设置("定时使能") & 读取设置("定时开时") & 读取设置("定时开分") & 读取设置("定时关时") & 读取设置("定时关分"))) '发送消息保存设置("传保存参数","0")结束如果结束事件主窗口的界面设计如下图3-3所示.图3-3 主窗口界面如果点击了定时设置的按钮,便可以进入开关定时设置按钮,窗口的切换代码如下所示.事件按钮_定时设置.被单击()变量临时文本为文本型临时文本=字节集到十六进制(串口数据组合)'由于没有全局参数,所以在这增加保存设置保存设置("定时使能",取文本中间(临时文本,14,2))保存设置("定时开时",取文本中间(临时文本,16,2))保存设置("定时开分",取文本中间(临时文本,18,2))保存设置("定时关时",取文本中间(临时文本,20,2))保存设置("定时关分",取文本中间(临时文本,22,2))如果读取窗口("窗口2")=空则保存窗口("窗口2",创建窗口2)结束如果切换窗口(读取窗口("窗口2"))结束事件如果点击定时按钮之后,便可以切换至开关定时设置窗口,窗口的设计如下图3-4所示:图3-4 定时开关设置界面如上图所示,当需要输入开启时间和关闭时间的时候,便会调用系统的数字输入,从而能够输入开关的开启时间和关闭时间.实现开关的定时操作.3.4软件测试软件的调试通过软件的编译,如果编译成功,便会生成APK文件,从而能够在手机端安装.通过连接蓝牙,用串口助手接收手机端发送的数据格式是否正确,便可以测试手机APP是否能够正常工作.本系统采用的串口助手是STC官方网站提供的ISP软件,软件的操作界面如下图3-5所示.图3-5 串口助手操作界面通过设置与蓝牙相同的波特率,便可以实现接收手机发送的数据,在发送的数据中,均采用16进制的数据发送.第四章系统软硬件测试4.1 系统硬件连接图4-1 灯光控制系统硬件连接图4.2 灯光颜色控制当手机APP通过蓝牙与单片机连接成功后,我们可以通过APP上相应的调色功能按键实现LED灯在红绿蓝三种颜色之间的切换,三种灯光颜色的显示效果如图4-2的(a)、(b)、(c)所示。