基于单片机的智能蓝牙台灯_第1页
基于单片机的智能蓝牙台灯_第2页
基于单片机的智能蓝牙台灯_第3页
基于单片机的智能蓝牙台灯_第4页
基于单片机的智能蓝牙台灯_第5页
已阅读5页,还剩45页未读 继续免费阅读

付费下载

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

[5]。假如没有发现任何人类活动,那幺便立即停止使用灯光。而当处在手动模式时,需要对按钮2与按钮3进行逐个测试。假设控制按键2被按下,则减少台灯点亮度;假设控制按键3被按下,则增长台灯点亮度。最后,通过蓝牙模块与手机进行数据传输,实现手机蓝牙功能的控制,并将台灯的状态信息上传到手机进行显示。

开始开始定时器初始化定时器初始化串口初始化串口初始化是是按键1按下?按键1按下?否结束控制否结束控制是是自动模式自动模式否否是是最近半分钟检测到有人?是是最近半分钟检测到有人?按键2按下?按键2按下?否否检测环境亮度降低亮度否否检测环境亮度降低亮度是调节台灯亮度熄灭台灯按键3按下?是调节台灯亮度熄灭台灯按键3按下?否增加亮度否增加亮度传输蓝牙数据传输蓝牙数据结束结束图4-1主函数流程图

4.2.2模数转换程序设计在展开ADC0832控制芯片的数据信息收集以前,单片机要求朝向ADC控制芯片输送一个起始数字信号。因为ADC0832具备2个AD交换要道,所以还要求输送一个要道选用数字信号,以明确要展开交换的要道。之后展开数据信息收集,并且从ADC控制芯片获得2个储存字节的数据信息。第1个储存字节是正向自动输送的数据信息,第2个储存字节是反向自动输送的数据信息。展开两次自动输送是为了校对核验这2个储存字节的数据信息,以判定有没有自动输送问题错误。在结尾,将获取到的AD最终结果自动智能返回给主数学函数。图4-2模数转换流程图4.2.3PWM调光程序设计脉冲宽度调制(PWM)是一项用于调节光线的技术。其理论是设立一个固定的时间工作周期,本次研究设计中设立是10毫秒。为了规避台灯产生明暗闪烁,工作周期时间不能过长。之后在这一个工作周期内,经过明确不同的高低压工作电平比重来控制管理台灯的实际亮度。综上所述,亮和熄灭时间方面的比重是3:7.当亮的时间占据的总体比重愈大时,台灯就会变得更加明亮。图4-3PWM调光程序流程图4.2.4按键程序设计首先需进行按键检测,若未被按下,则需重新扫描和判断。当按键被触发时,应采取适当的延迟操作,以去除抖动问题实际现象,充分保障无影响。随后等候控制按键排放,并且参考依据不同控制按键完成各自功能,使用提前撰写的控制按键应用程序区域来执行相应操作。图4-4按键扫描流程图第5章设计和实现手机蓝牙应用系统5.1应用开发环境此次我们采用了一个名叫E4A(易安卓)的中文安卓程序设计工具来构建我们的手机蓝牙应用开发环境。该工具允许我们在其平台上方便地访问并控制手机中的传感器及蓝牙组件。E4A是一款完全以中文呈现的安卓程序设计的语言,它是在2013年06月01日首次发布的。这个工具的目标用户包括了各类的企业、网站管理员、开发人员、互联网服务商以及其他需要利用安卓系统创建APP的移动设备制造商等。这款编程语言的设计理念十分契合中国人的编程思路,这使中国人能快速掌握操作方法。预估E4A将会变成全世界第一个具备丰富功能并且容易运用的所有汉语AndroidAPP开发编辑语言。E4A,又称之为易安卓,是一个以谷歌Simple编辑语言为根本基础的操控应用软件研发应用平台,主要目标是让用户能简单地构建出android应用。它的基本语法和易语言的基本语法非常接近,因此对于熟悉易语言的人来说,学习并掌握E4A并不困难。E4A提供了一个视觉化的开发界面,同时还具有优秀的智能语法建议能力。它允许我们用纯粹的中文字符来编写代码,这使得操作更具亲近感,而且不会因记忆英语关键字而产生困扰。此外,E4A已内置了Android1.5SDK开发套件。(l)新建项目工程第一步,开启E4A操控应用软件,前进入主页面。在那里,你会发现1个全新建项目工程的控制面板。在这一个控制面板上,你要求自动输入一个英文包名和使用名字。当项目信息输入完毕时,该项工作会被立即保存至位于E4A软件设置路径的projects文件夹内。若您完成了项目的构建,所产生的APK文件也会和原始的项目数据存放在同一位置。此外,你可以使用鼠标的右键快捷方式迅速启动新E4A项目的设计过程。图5-1E4A新建工程界面(2)可视化界面设计E4A的设计接口具有独特的风格,它是通过以行为主、列为辅的方法布局部件。当构建界面的时候,系统将会自动使部件与网格保持一致。值得注意的是,在插入部件的过程中,同一线上的部件高度应保持一致,且不可出现堆叠现象,这可能引发解析出错的风险。图5-2正确的界面设计图5-3错误的界面设计(3)代码的输入E4A具备和易编辑语言类似的功能——人工智能表达语法自动输入意见,这代表了客户不需要因自动输入汉语存储字符而耗用额外附加的时间。只需键入关键字词的首个字母缩略形式,即可立刻获取相关语法信息。同时,若鼠标移至关键字或者指令之上,系统将会主动展示相关的语法说明区域。图5-4代码输入提示(4)调试运行通过编辑翻译自动形成APK资料文件之后,我们能够选用将其安装设置到安卓模拟仿真器设备展开测试,或安装设置到实际移动智能手机上展开测试。5.2手机蓝牙应用开发5.2.1设计应用概述本设计所使用的是E4A中文编程软件进行编辑和设计的蓝牙应用程序。在设计界面功能时,首先需要将所需的控制模块添加到相应的界面中。主要分为三个部分,包括:①与蓝牙连接相关的功能、②对台灯进行控制的功能、③获取台灯状态的功能。5.2.2蓝牙连接相关的功能在进行台灯的控制和状态读取之前,需要先建立蓝牙设备的连接。通过将手机APP和单片机蓝牙模块连接起来,我们可以进行相应的控制操控管理。蓝牙链接的具体过程包含搜查能够使用的蓝牙机器设备以及链接或者切断蓝牙机器设备。图5-5蓝牙搜索连接界面一旦用户点击搜索设备按钮,系统将自动检查周围所有能够连接的蓝牙设备,并把它们的设备地址标记在列表框里。如果发现目标设备,用户可以选择点击该设备名称来进行蓝牙连接,并且连接结果将会实时显示在状态标签上。图5-6蓝牙相关的程序5.2.3台灯控制相关的功能手机端蓝牙控制主要是对台灯的运行模式以及亮度进行控制。总共包括三个控制按键,分别是亮度减、亮度加、自动模式。当点击亮度减或亮度加时,台灯会切换到手动模式,当点击自动模式按键后,台灯又会回到自动模式运行。

图5-7台灯控制相关的界面设计图5-8台灯控制相关的程序第6章硬件组装与调试6.1元器件的选择与测量本次综合设计运用的元器件设备包含:STC89C51单片机、分子晶振、额定工作电阻、额定作用电容、控制按键、控制开关、工作电源座、三极晶体管构件、发光二极晶体管设备、AD控制芯片、红外热释传感器设备以及蓝牙功能应用模块等。在开始对上述构件实行焊接加工前,我们必须深入研究相关文献以掌握每种部件的具体属性,从而确保正确的操作流程。这类设备的规格可以在电子零件市场中轻易寻得。在执行焊接任务时,需特别注意各部件的正负极性、电阻与电容量大小及芯片插孔排序等问题。一般而言,可通过颜色环或使用万用表精确测定电阻值;而电容和晶振等部分则会在其自身标注出尺寸;关于某些特殊部件的正负极性问题,可参考相应文档予以确认。6.2元件的焊接与组装电路的组装常常有两种模式,一类是焊接加工,另一类是运用插接面包板。不管应用哪一类模式,都要求关注以下多个角度。(1)为了充分保障运用的元器件设备皆是合格的,在组合安装设置前应该展开全面调试以论证其功能。(2)为了充分保障焊接加工和布线设计的准确展开,需要维持所有集中工作电路的组合安装设置分布方向一致。(3)在分立元件设备的时候,应该精确辨别元件设备的正反极性,同时把标识安置到容易观测的具体位置,方便未来的检测和测试运行工作。针对具备正阴极性的元件设备(譬如电解电容器设施、分子晶体二极晶体管设备等),在组合安装设置过程里特别需要特别关注极性,不然将会造成测试实验失败。(4)为了简单化全面处理焊接加工和检测工作电路,能够选用不同颜色的金属传导线来表示反映它们的不同的使用性能。一般情况条件里,我们习惯红色金属传导线代表阳极,蓝色金属传导线代表阴极,黑色金属传导线代表地线,黄色金属传导线代表数字信号线等。自然,也能够只运用一类颜色的金属传导线。(5)在真实焊接加工过程里,应该尽可能维持连接线布局计划简约并且方便。假设要求链接到集中工作电路控制芯片,需要从其四周展开连接线。与此同时,应该尽可能规避连接线互相交叉重合,并且规避从工作电路元器件设备的上方展开连接线。(6)为保证电子设备运行无误并顺利测试,所有的接地点应被连结成单一基准点。除了能保持线路整洁且易于操作外,合理的设计也能提升其稳定性和可信赖度,同时方便了检测、调整与问题解决。若预先绘制一张安装蓝图,则会大大提高效率,使得整个过程更加迅速而有效率。6.3电路的调试调试过程是针对系统的优化、改良及检测阶段。其主要目的是通过对已构建好的电路进行测验来评估其性能与运行状况。在此基础上,我们需要根据结果对其中的部分参数做出相应的修改,以便达到预设的设计目标。为了保证调试工作的顺利推进,我们在开始前需明确各项测试任务、操作流程、调试手段以及所需要的设备等,这样才能做到胸中有数,从而保障调试活动的成功实施。6.3.1调试方法两条主要的调整策略被采用。首先,我们采取一边组装一边测试的方法。我们将复杂的电子线路划分为各个部分并依次安装与检测,接着逐渐扩展测试区域直至全部完工。这通常用于新设计中的电路。其次,我们在所有元件连接完毕后再一次对整套设备进行全面检查。此方式适合于简单的且系统的电路调试。6.3.2调试步骤(1)通电前检查当焊接作业完毕之后,切勿立即开启电源,首先需要对线路连接情况做全面审查,这包含了有误的链接(如只在一侧正确的两段或一段是错的)、遗漏的线缆、过多的线缆以及潜在的短路问题(特别是在小间距下,例如引脚到焊点的距离)。另外,也要确保每一个元件使用的接口都符合图纸要求。在核查线路的过程中,建议利用指针式的万用表设置为Ω×1档位或是选择数字万用表的Ω档蜂鸣模式进行检测。并且尽可能地直接测试元器件的引脚,如此一来能够一同找出触碰不良的情况。(2)通电观察在插入电源前,需确认所有线路设置正确且没有遗漏(首先切断电源按钮,然后完成电源线的连结再开启电源按钮)。一旦启动了电源,不能立刻开始对设备的功能进行检测,相反,我们需要细心地检查整套系统中有没有任何异样情况发生,例如零部件过热、损坏,或者有漏电、短路或是断路等问题。若是在测试过程当中发现了系统的异常,必须马上停止供电并解决掉问题之后再次进行试验。另外,也得按照规定来测定每个零部件接口处的电流值,而不是只看整体的电源电流,以便保证各个零部件都能顺利运行。(3)单元电路调试当对单个元件组进行测试的时候,我们需要清楚地了解这一步骤具体的要求是什么。为使测试过程顺畅无阻,我们可以根据电路设计中的信号流动路径来安排测试的步骤。首先逐一测试每个部件,然后把其输出的信息作为下一个环节的输入数据,这样能有效保障整体设备的检测更为流畅且易于操作。单元测试分为静态调试和动态调试两种方式。对于无外界刺激下的电子设备各部分节点电压测量,尤其是对有源组件的静态操作点检测是静态调整的主要任务。此过程有助于尽早识别已受损或者接近故障的零部件。至于动态调节则依赖于上游输出的信息或是自身产生的数据以评估单个模块的各项性能是否满足预设标准,涵盖了如信号强度、波型形态、相对位置、增益与频率等因素。对于信号产生电路,一般只需要关注动态指标。通过对静态和动态测试结果与设计指标的对比分析,我们能够对电路和参数进行适当的调整。在调试阶段,应该详尽地记录相关信息。(4)整机联调当每个子系统都经过测试且无误时,我们无法确保其构成的大型系统的功能必定优良。所以,有必要执行全面的电路检测。此项任务的核心目标是评估和量测动态特性,并将所得数据与预设标准一一比较,发现问题并提供解决策略,接着调整整个电路及相关参数直至满足全部设计的性能需求。

第7章总结经过超过三个月的努力,我已经成功完成了本次毕业设计的任务——基于单片机的智能台灯。虽然这项任务并非独一无二,但在执行的过程中,我积累了许多关于系统构建和设计的宝贵经验,这对我的成长有着极大的益处。从构思到验证,再到制造电路板、编写代码直至最后的顺利测试,我都全程参与并完成了一整套系统的建设。对于这样的实践机遇,我是极为珍视的。实践与理论相结合,展现了大学生的实际操作能力。借助对资源的检索及收集相关的研究文件,我们的自学能力和操作技能得到了提升。由被动的接收信息转变成主动地寻找答案,这标志着我们在学习策略上的重大进步。传统的教学方式可能会让我们仅仅掌握大量课本内容,然而经过这次毕业设计的经历,我们懂得了怎样把所学的理论应用到实际行动中去,也明白了如何更有效地解决实操与理论结合的问题,找准关键点,战胜挑战,并能灵活利用已有的知识。在这个项目中,我能够有效地整合多学科如单片机原理、C语言编程、模拟电子学与数字电子学的关键知识点并将其运用至实践当中。经过深度研究及实施,我对于这些重要概念有更为深刻的认识。同时,我也熟练于自系统的需要开始,直至提出解决方案,分割出功能模块,完成原理图的设计与描绘,制造PCB版,编写软件代码,最后是软硬设备的测试等一系列步骤,这使我有丰富的工作经验。虽然这个项目的目标较为简易,但是其涵盖了许多关于单片机的基本内容,从而增强了我在这方面技能的发展。这次设计为我将理论能力转化为实践能力提供了绝佳机会,因为尽管单片机的功能日益强大,但其基本原理却保持相对稳定不变。

经过此次毕业项目的体验,我深感理解专业技能的重要性和体会到了理论与实际操作之间的紧密联系。同时,我也对自己四年的学业做了全面的评估。虽然在这个项目里,我在应用和连接知识方面还存在一些不足之处,但我会继续在我的职业生涯和学习过程中持续奋斗,不断地自我改进。这个为期三个月的项目是对于我之前所学知识的一次系统的提高和扩展,将来我会更深入地加强理论根基,增强实操技巧,以便能在工作中及学习上获得更多的突破。在设计过程中,由于时间紧迫,不免就会存在很多问题的地方。从新再次审查这个设计,我能够逐渐拓展其功能,譬如增添接近桌面提示安全保护功能、自动显示实际温湿度等,以提升设计的智能化水平。参考文献李晓帅,郝润生,杨海祺,等.基于单片机控制的智能螺旋丸设计[J].数字技术与应用,2020,38(07):10-12.张利.近视眼的眼健康管理[J].中国眼镜科技杂志,2019,(03):108-109.王烈进,王游司,陈洪燕,等.基于51单片机的智能手环蓝牙模块设计[J].电脑知识与技术,2018,14(23):260-261.梁书博,尹丽红,何佳宝.基于单片机的农业鱼池中水的温度和pH值检测系统[J].农民致富之友,2018,(15):144.邓宇.基于单片机的智能台灯设计[J].电子制作,2018,(12):9-10+18.王凌波.基于光敏电阻特性的光控灯实验平台设计[J].兰州石化职业技术学院学报,2015,15(04):23-25.秦凤梅.基于蓝牙技术的手机数据查询系统研究与设计[J].数字技术与应用,2015,(07):152.夏洋,龚毅,周强,等.道路障碍非接触式动态测试与车辆通行能力判断方法研究[J].北京汽车,2015,(01):31-33.王方.光学雷达用大功率LED脉冲准直光源设计[D].西安理工大学,2014.季晨雪,郑小倩.基于单片机的安全报警器设计[J].山西电子技术,2014,(01):41-42+47.车微.分析DSP的发展及其在通信工程中的应用[J].才智,2013,(23):250.陆建敏.光敏传感器的应用——声光控开关电路[J].企业科技与发展,2012,(18):36-39.黄珍,方瑞华,葛如海.电子防眩目后视镜原理[J].重庆交通大学学报(自然科学版),2012,31(02):318-320+334.吕璠.热释电红外报警器的设计[D].河北工业大学,2011.杨镇宇.基于机器视觉和SVM的花椒外观品质检测技术研究[D].西南大学,2010.罗海滨.白光LED用Ba_2Si_3O_8:Eu~(2+)绿色荧光粉制备及其表征[D].浙江大学,2010.徐文燕.上海市中小学生近视眼危险因素评估及干预对策探讨[D].复旦大学,2009.崔玉珩.蓝牙技术在汽车电子半实物仿真系统中的应用[D].大连理工大学,2008.张豪.基于单片机的模糊控制在节水灌溉控制系统中的实现[D].江南大学,2007.胡湘韩.关于黑龙江省发展可再生能源农业的建议[J].决策咨询通讯,2004,(06):77-78.纪明宇.通用蓝牙模块的研究与开发[D].哈尔滨工程大学,2004.徐志国.电力节能降耗技术的研究[D].东南大学,2007.

附录主程序代码:#include<reg52.h>#include<intrins.h>#defineucharunsignedchar //以后unsignedchar就可以用uchar代替#defineuintunsignedint //以后unsignedint就可以用uint代替sbitLED=P1^0; //模式指示灯,亮是自动模式,灭是手动模式sbitLamp=P1^4; //台灯控制引脚sbitKey1=P1^1; //按键1,模式切换按键sbitKey2=P1^2; //按键2,亮度减少按键sbitKey3=P1^3; //按键3,亮度增加按键sbitADC_CS=P2^3; //ADC0832的CS引脚sbitADC_CLK=P2^0; //ADC0832的CLK引脚sbitADC_DAT=P2^1; //ADC0832的DI/DO引脚sbitModule=P2^2; //人体红外检测模块uchargCount=0; //全局计数变量uchargIndex; //亮度变量,0是最暗,9是最亮,一共10档uintgTime=0; //计时变量,用于计时多久没检测到有人/*********************************************************///毫秒级的延时函数,time是要延时的毫秒数/*********************************************************/voidDelayMs(uinttime){ uinti,j; for(i=0;i<time;i++) for(j=0;j<112;j++);}/*********************************************************///ADC0832的时钟脉冲/*********************************************************/voidWavePlus(){ _nop_(); ADC_CLK=1; _nop_(); ADC_CLK=0;}/*********************************************************///获取指定通道的A/D转换结果/*********************************************************/ucharGet_ADC0832(){ uchari; uchardat1=0; uchardat2=0; ADC_CLK=0; //电平初始化 ADC_DAT=1; _nop_(); ADC_CS=0; WavePlus(); //起始信号 ADC_DAT=1; WavePlus(); //通道选择的第一位 ADC_DAT=0; WavePlus(); //通道选择的第二位 ADC_DAT=1; for(i=0;i<8;i++) //第一次读取 { dat1<<=1; WavePlus(); if(ADC_DAT) dat1=dat1|0x01; else dat1=dat1|0x00; } for(i=0;i<8;i++) //第二次读取 { dat2>>=1; if(ADC_DAT) dat2=dat2|0x80; else dat2=dat2|0x00; WavePlus(); } _nop_(); //结束此次传输 ADC_DAT=1; ADC_CLK=1; ADC_CS=1; if(dat1==dat2) //返回采集结果 returndat1; else return0;}/*********************************************************///定时器初始化/*********************************************************/voidTimerInit(){ TMOD=0x21; //使用定时器 SCON=0x50; //配置串口寄存器 TH0=252; //给定时器0的TH0装初值 TL0=24; //给定时器0的TL0装初值 TH1=0xfd; //计算波特率的值为9600 TL1=0xfd; //计算波特率的值为9600 ET0=1; //打开定时器0中断 ES=1; //打开串口中断 EA=1; //打开总中断 TR0 =1; //启动定时器0 TR1=1; //启动定时器1}/*********************************************************///串口发送数据函数/*********************************************************/voidUartSendData(uchardat){ SBUF=dat; while(!TI); TI=0;} /*********************************************************///发送数据到蓝牙模块/*********************************************************/voidSendBlueTooth(){ UartSendData(gIndex+48); //发送当前亮度 UartSendData('/'); if(LED==0) //发送控制模式 UartSendData('0'); else UartSendData('1');}/*********************************************************///手动控制/*********************************************************/voidManualControl(){ //亮度减少 if(Key2==0) //如果按键2被按下去 { if(gIndex>0) //只要当前亮度不为最低才能减少亮度 { gIndex--; //亮度降低一档 DelayMs(300); //延时0.3秒 } } //亮度增加 if(Key3==0) //如果按键3被按下去 { if(gIndex<9) //只要当前亮度不为最高才能增加亮度 { gIndex++; //亮度增加一档 DelayMs(300); //延时0.3秒 } }}/*********************************************************///自动控制/*********************************************************/voidAutoControl(ucharnum){ if(num<59) //最亮 gIndex=9; elseif((num>65)&&(num<81)) //第二亮 gIndex=8; elseif((num>87)&&(num<103)) //第三亮 gIndex=7; elseif((num>109)&&(num<125)) gIndex=6; elseif((num>131)&&(num<147)) gIndex=5; elseif((num>153)&&(num<169)) gIndex=4; elseif((num>175)&&(num<191)) gIndex=3; elseif((num>197)&&(num<213)) gIndex=2; elseif((num>219)&&(num<235)) gIndex=1; elseif(num>241) //最暗 gIndex=0;}/*********************************************************///主函数/*********************************************************/voidmain(){ uchari; ucharret; TimerInit(); //定时器初始化 LED=0; //指示灯点亮(自动模式指示灯) ret=Get_ADC0832(); //获取AD采集结果(环境光照强度) AutoControl(ret); //上电先进行一次自动亮度控制 AutoControl(ret+7); while(1) { /*模式切换控制*/ if(Key1==0) //如果按键1被按下去 { LED=~LED; //切换LED灯状态 if(LED==0) //如果切换后是自动模式的话 { ret=Get_ADC0832(); //获取AD采集结果(环境光照强度) AutoControl(ret); //进行一次自动亮度调整 AutoControl(ret+7); } DelayMs(10); //延时消除按键按下的抖动 while(!Key1); //等待按键释放 DelayMs(10); //延时消除按键松开的抖动 } /*亮度控制*/ if(LED==1) //如果LED是灭的 { for(i=0;i<20;i++) { ManualControl(); //则进行手动控制 DelayMs(10); } } else //如果LED是亮的 { if(gTime<30000) //如果最近30秒内检测到有人 { ret=Get_ADC0832(); //获取AD采集结果(环境光照强度)

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论