单片机课程设计副本_第1页
单片机课程设计副本_第2页
单片机课程设计副本_第3页
单片机课程设计副本_第4页
单片机课程设计副本_第5页
已阅读5页,还剩31页未读 继续免费阅读

下载本文档

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

文档简介

1、本科生课程设计成绩评定表姓 名何颜君专业、班级测控1303课程设计题目:基于微处理器和数字光强度检测模块GY-30的智能窗帘设计 课程设计答辩或质疑记录:成绩评定依据:序号评 价 内 容分值得分1具有认真严谨的学习态度,能通过文献查阅及应用,提出正确合理、可行性强的设计方案,有创新点。202能综合运用相关理论知识和数学工具,完成设计方案的理论分析、设计、计算,过程详细,结论正确。303按标准和规范绘制设计图纸,并能运用工具软件,完成电路设计和程序设计,以及仿真调试,结果正确。304能正确、清晰表达和交流设计内容(设计说明书、答辩),且设计说明书撰写规范。20小 计100成绩评定补充说明:指导教

2、师签字: 年 月 日 基于微处理器和数字光强度检测模块GY-30的智能窗帘设计窗帘是人类自定居开始就存在的家居用具,用以保护人的隐私及改变屋内光线。随着时代的发展,传统的窗帘已不能满足人们需求,为此提出一个多功能智能窗帘控制器的研究。多功能智能窗帘控制器使用STC52系列单片机作为核心,通过利用光敏电阻在光照下变化的电阻经过分压电路及模数转换后,将转换数据送往单片机,单片机根据光照强度大小自动判断当前光照是否强烈,从而控制电机转动带动窗帘,实现自动调光功能;同时,运用红外遥控技术,实现无线遥控功能。电机电路由ULN2003电路提供驱动。所完成的控制器能实现开闭、自动、定时多模式的选择功能。文中

3、介绍了系统总体的设计方案,及系统工作原理,详细阐述系统硬件的设计和软件程序的设计流程,并作出相应分析,总结系统所实现的功能,分析不足,为此提出展望和总结。关键字:STC52单片机、红外遥控、自动调节、光敏电阻目 录第一章 绪论11.1课程设计背景11.2 选题的研究分析及其特点1第二章 方案选择12.1 总体方案设计12.1 具体设计思路2第三章 硬件部分系统设计23.1 电源部分硬件电路设计23.2 51最小系统介绍 23.3 显示部分硬件电路设计53.4 数据采集模块设计53.5 串口通讯硬件电路设计63.6 红外接收部分硬件电路设计73.7 步进电机驱动模块硬件电路设计93.8 步进电机

4、控制部分的设计10第四章 系统软件设计124.1 控制系统软件设计方案124.2 红外信号接收子程序设计134.4 定时模式子程序设计17第五章 系统调试17第六章 总结19主要参考材料19附录20II武汉理工大学测控系统微处理器原理及应用课程设计说明书第一章 绪论1.1课程设计背景测控专业对单片机及编程技术要求较高,因而在学完单片机这门课之后安排课程设计对大家进行实际运用提高,增加对知识的掌握程度和运用能力。在选做题目中,我选择了用单片机实现智能窗帘控制。单片机控制的自动启闭窗帘控制系统,既能解决每天手拉开和关上窗帘的不便,又显示出了生活的档次,同时还可以根据光线的明暗来自动控制窗帘的开关,

5、以调节室内的光线,更进一步地满足了人们的生活要求。1.2 选题的研究分析及其特点 现有的电动窗帘机的控制方式有固定式开关控制、遥控、光控、声控等,其中以前两种形式居多。该系统主要有如下几方面的特点:(1)根据光照的强度来自动调整窗帘的开闭状态。(2)还可以通过固定按键方式手动控制窗帘的打开和关闭。(3)红外遥控方式直接控制窗帘的开闭状态。(4)体积小、结构简单、灵敏度高、抗干扰性强、经济实用、工作可靠。 第二章 方案选择2.1 总体方案设计光控窗帘能够在完全脱离人的控制下随光照强度自动调节窗帘,并且人也能通过红外遥控对它进行自主调节。设计的主要目标:(1) 利用光敏电阻采集室内光照强度;(2)

6、 利用51单片机分析AD转换后的采集信号,进而确定控制阈值,设定控制方案;(3) 通过单片机控制步进电机的转动角度和速度调节窗帘的启闭。设计模块:电源模块,数据采集模块及处理综合模块,红外遥控模块,单片机数据处理模块,步进电机驱动模块。光敏数据采集及处理模块 GY-30单片机数据处理控制模块步进电机驱动模块红外遥控控制图2.1 总体方案图2.2 具体设计思路由光敏模块GY-30将光信号转换成电压模拟信号,再转换成数字信号输出,送到单片机中,用来控制4个输出端的电平高低,这4个输出端分别与ULN2003的14输入端相连,用于驱动步进电机同时控制步进电机正反转,这样就实现了自动光控窗帘功能。手动按

7、键可选择其手动模式还是光控模式,并在手动模式下可通过另一个按键控制电机的正反转,进而实现窗帘的打开和关闭。第三章 硬件部分系统设计3.1 电源部分硬件电路设计通过USB为系统板提供电源,AMS1117内部集成过热保护和限流电路,确保芯片和电源系统的稳定性,是电池供电和便携式计算机的最佳选择。如图3.1所示。 图3.1 电源电路图3.2 51最小系统介绍STC89C52RC与MCS-51系列的单片机在指令系统和引脚上完全兼容;片内有4k字节在线可重复编程快擦写程序存储器;32位双向输入输出线;两个十六位定时器/计数器;五个中断源,两级中断优先级;一个全双工的异步串行口。3.2.1 STC89C5

8、2的主要引脚功能 P0口是三态双向口,通称数据总线口,因为只有该口能直接用于对外部存储器进行读/写操作。P0口也用以输出外部存储器的低8位地图1址。由于是分时输出, 应在外部加锁存器将此地址数据锁存,地址锁存,信号用ALE。 P1口是专门供用户使用的I/O口,是准双向口。P2口是从系统扩展时作高8位地址线用。不扩展外部存储器时,P2口也可以作为用I/O 口线使用,P2口也是准双向口。P3口是双功能口,该口的每一位均可独立地定义为第一I/O功能或第二I/O功能。作为第一功能使用时操作同P1口。P3口的第二功能如表2.1所示。表3.1 P3口第二功能端口脚各个功能3.0RXD(串行口输入端)P3.

9、1TXD(串行口输出端)P3.2(外部中断0请求输入端,低电平有效)P3.3(外部中断1请求输入端,低电平有效)P3.4T0(定时器/计数器0计数脉冲输入端)P3.5T1(定时器/计数器1计数脉冲输入端)P3.6(外部数据存储器写选通信号输入端,低电平有效)P3.7(外部数据存储器读选通信号输入端,低电平有效)3.2.2 STC89C52的时钟电路和复位电路(1)时钟产生电路本电路选用的电容为30pF,晶振频率为12MHz,振荡周期,机器周期,指令周期。XTAL1和XTAL2:片内振荡电路输入线,这两个端子用来外接石英晶体和微调电容。在石英晶体的两个管脚加交变电场时,它将会产生一定频率的机械变

10、形,而这种机械振动又会产生交变电场。石英晶振起振后要能在XTAL2线上输出一个3V左右的正弦波,以便使STC89C52RC片内的OSC电路按石英晶振相同频率自激振荡,如图2.1所示。图3.2 时钟电路(2)单片机复位电路图2.2为单片机复位电路。单片机在开机时都需要复位,以便中央处理CPU以及其他功能部件都处于一个确定的初始状态,并从这个状态开始工作。单片机的复位后是靠外部电路实现的,在时钟电路工作后,只要在单片机的RST引脚上出现24个时钟振荡脉冲(2个机器周期)以上的高电平,单片机便可实现初始化状态复位。STC89C52RC单片机的RST引脚是复位信号的输入端。 图3.3 复位电路3.3

11、显示部分硬件电路设计数码管的显示程序由定时计数器来设定,既大约200ms后定时计数器就会产生中断,在中断子程序里面,数码管会根据具体情况执行不同的显示子程序。LED灯作为当前窗处于打开状态或关闭的指示灯,当窗帘处于打开状态时,左边第一个led灯亮。否则第二个led灯亮。图3.4 显示电路3.4 数据采集模块设计根据现有材料,我们选择GY-30感光模块作为数据采集系统,其内部集成了A/D转换模块,其输出为数字信号。它具有以下特点:1)直接数字输出,省略复杂的计算,省略标定;2)光谱的范围是人眼相近;3)照度数字转换器;4)可对广泛的亮度进行1勒克斯的高精度测定(1-65535勒克斯);5)低电流

12、关机功能;6)接近于视觉灵敏度的分光特性;7)1.8V逻辑输入接口;8)模块内部包含通信电平转换,与5v单片机io直接连接;9)光源的依赖性不大,不区分环境光源;10)是有可能的选择2类型的IC slave-address。11)可调的光学窗口测量结果的影响(它可以探测分钟.使用本功能0.11勒克斯,最大.100000勒克斯)。12)小测变异(+/-20%)13)的红外线的影响很小。图3.5 GY-30光敏模块信号采集装置输入电压为35V,因而可以和单片机使用同一电源,电压为5.0V。单片机通过输出的数字电平范围控制步进电机的转动角度。我们采用的是分级调速,把这个区域分成4个区域,每个区域对应

13、转动角度分别为0°,30°,60°,90°。图3.6 数据采集模块电路图3.5 串口通讯硬件电路设计串口通信的传输格式:串行通信中,线路空闲时,线路的TTL电平总是高,经反向RS232的电平总是低。一个数据的开始RS232线路为高电平,结束时Rs232为低电平。数据总是从低位向高位一位一位的传输。串口通信的接收过程:(异步通信:接收器和发送器有各自的时钟;同步通信:发送器和接收器由同一个时钟源控制。RS232是异步通信) (1)开始通信时,信号线为空闲(逻辑1),当检测到由1到0的跳变时,开始对“接收时钟”计数; (2)当计到8个时钟时,对输入信号进行检

14、测,若仍为低电平,则确认这是“起始位”,而不是干扰信号; (3)接收端检测到起始位后,隔16个接收时钟,对输入信号检测一次,把对应的值作为D0位数据。若为逻辑1, 作为数据位1;若为逻辑0,作为数据位0; (4)再隔16个接收时钟,对输入信号检测一次,把对应的值作为D1位数据。.,直到全部数据位都输入; (5)检测校验位P(如果有的话); (6)接收到规定的数据位个数和校验位后,通信接口电路希望收到停止位S(逻辑1),若此时未收到逻辑1,说明出现了错误,在状态寄存器中置“帧错误”标志。若没有错误,对全部数据位进行奇偶校验,无校验错时,把数据位从移位寄存器中送数据输入寄存器。若校验错,在状态寄存

15、器中置奇偶错标志; (7)本幀信息全部接收完,把线路上出现的高电平作为空闲位; (8)当信号再次变为低时,开始进入下一帧的检测。图3.7 串口模块3.6 红外接收部分硬件电路设计3.6.1红外模块介绍HS0038系列是Temic公司推出的一体化红外线接收模块,集红外线接收、放大、解调于一体,不需要任何外接元件,就能完成从红外线接收到输出与TTL电平信号兼容的所有工作;而体积只有普通三极管大小一样,适合各种红外线遥控和红外线数据传输,其传输距离大于4米。红外线接收模块HS0038系列的管脚分布如图2.3所示,1、2分别为电源和地,3为信号输出端,其输出电平和TTL电平兼容。HS0038系列的特性

16、如下:多种接收频率可供选择:30KHz、33KHz、36KHz、36.7K Hz、38KHz、40KHz、56KHz;大范围工作电压:(3-6) V;遥控距离:大于4m。图3.8 HS0038引脚图HS0038系列红外线模块接收器的受光面一侧为黑色环氧聚焦滤波透镜,此透镜消除了可见光对它的干扰,对于提高可靠性及滤除光噪声至关重要。模块内含红外线 PIN接收管、前置放大器和解调器。当红外线发射器发出的信号经空间传送到HS0038系列模块时,模块内部 PIN红外线接收管将红外光转换为电信号,该信号经前置放大、解调后由 3脚输出与 TTL电平兼容的电信号,该信号能直接送入到微控器等要求 TTL电平信

17、号输入的芯片中。静态时输出端输出高电平,当接收到红外信号后,按红外信号的数据波形输出负脉冲数据信号。红外信号输出到单片机的P3.2 ,该口对应的第二功能是外部中断0 (INT0),利用该口的第二功能,一旦红外线信号到来,P3.2被拉低,单片机中止当前的工作转移到接收、处理红外信号。开启中断功能的目的,既减轻了单片机的工作负担,又保证接收到的红外信号的完整性。3.6.2红外编码要使用红外线一体化接受头接受遥控器发射的红外线,再通过单片机解码,那就,必须先了解红外线发射器所发射的红外线码的组成。一般的彩电、VCD遥控器的编码采用的格式为1913、9012、1621格式;以1621为例,当按下遥控器

18、上的某个按键时,遥控器将发射出一帧数据,帧数据的编码格式由三部分组成:引导码(Lead code)、客户码(Custom code)和数据码(Data code),对于一个遥控器来说,每个按键所发射的帧数据的客户码总是一样的,有区别的只是数据码。其中9012和1913、1621格式的唯一区别就是引导码的高电平宽度不一样,9012格式为4.5ms,1913和1621格式为9ms。帧结构中的客户码和数据码各有两个字节,第一个字节和第二个字节互为按位取反,其中客户码的高4 位与低4位又互为按位取反。0码由0.56ms高电平和0.565ms低电平组合而成、1码由0.56ms高电平和1.69ms低电平组

19、合而成。码元的高电平信号采用38kHz矩形波(载波)调制发射,载波占空比(Duty)为1/3,低电平无信号发射。图3.9 红外接收硬件电路图3.7 步进电机驱动模块硬件电路设计电机驱动部分主要由达林顿驱动ULN2003芯片实现。ULN2003是高耐压、大电流达林顿阵列,由7个硅NPN达林顿管组成。该电路的特点如下:ULN2003的每一对达林顿管都串联一个2.7k的基极电阻,在5V的工作电压下它能与TTL和COMS电路直接连接。ULN2003是高压大电流达林顿晶体管阵列系列产品,具有电流增益高、工作电压高、温度范围宽、带负载能力强等特点,适用于各类要求高速大功率驱动的系统ULN2003经常在以下

20、电路中试用:(1) 显示驱动;(2) 继电器驱动;(3) 照明灯驱动;(4) 电磁阀驱动;(5) 伺服电动机、步进电机驱动等电路中。ULN2003的每一对达林顿管都串联一个2.7k的基极电阻,在5V的工作电压下它能与TTL和COMS电路直接相连,可以直接处理原先需要标准逻辑缓冲器来处理的数据。ULN2003工作电压高,工作电流大,灌电流可达500mA,并且能够在关态时承受50V的电压,输出还可以在高负载电流并行运行。 ULN2003所用的是单片机的P3.4P3.7接口,输出部分选用1316引脚,8引脚接地,9引脚所示为连接步进电机的电源,电机驱动电路连接图如图3.6所示。图3.10 电机控制部

21、分电路设计3.8 步进电机控制部分的设计此部分主要是对控制指令的执行。单片机根据读入的数据通过驱动器对电机进行驱动,调节电机转动的角度。下面介绍一下步进电机及其控制原理,了解步进电机使我们能更顺利的完成自动启闭光控窗帘的设计。3.8.1 步进电机简述步进电机是将电脉冲信号转变为角位移或线位移的开环控制元件。在非超载的情况下,电动机的转速、停止的位置只取决于脉冲信号的频率的脉冲数,而不受负载变化的影响,即给电动机加一个脉冲信号,电动机则转过一个步距角。这一线性关系的存在,使得在速度、位置等控制领域用步进电机来控制变得非常简单。步进电机实际上是一种单相或多相同步电动机。单相步进电机由单路电脉冲驱动

22、,输出功率一般很小,其用途为微小功率驱动。多相步进电机的多相方波脉冲驱动,在经功率放大后分别送入步进电机各相绕组。正常情况下,步进电机转过的总角度和输入的脉冲数成正比;连续输入一定脉冲时,电动机的转速与输入脉冲的频率保持严格的对应关系,不受电压波动和负载变化的影响。由于步进电机能直接接收数字量的输入,所以特别适合于微处理器控制。3.8.2 步进电机的选择步进电机有步距角(涉及相数)、静转矩及电流三大要素组成。我们选择28BYJ-48步进电机作为执行部件,其实物如下图所示。图3.11 28BYJ-48步进电机实物图步进电机28BYJ48型四相八拍电机,电压为DC5VDC12V。当对步进电机施加一

23、系列连续不断的控制脉冲时,它可以连续不断地转动。每一个脉冲信号对应步进电机的某一相或两相绕组的通电状态改变一次,也就对应转子转过一定的角度(一个步距角)。当通电状态的改变完成一个循环时,转子转过一个齿距。四相步进电机可以在不同的通电方式下运行,常见的通电方式有单(单相绕组通电)四拍(A-B-C-D-A),双(双相绕组通电)四拍(AB-BC-CD-DA-AB),八拍(A-AB-B-BC-C-CD-D-DA-A)。我们选择八拍转动方式。所以可以定义旋转相序为:unsigned char code clockWise=0x08,0x0c,0x04,0x06,0x02,0x03,0x01,0x09;

24、/正转unsigned char code clockWise1=0x09,0x01,0x03,0x02,0x06,0x04,0x0c,0x08; /反转 3.9整体硬件电路 图3.11 整体硬件电路图第四章 系统软件设计4.1 控制系统软件设计方案自动启闭光控窗帘系统,在光照强度超过某一定值时要求关闭窗帘,同时第一个led灯显示灭,第二个灯亮;光照强度低于这一定值时打开窗帘的同时第一个led灯亮,第二个灯灭。这就需要控制电机的转角和转速:转动到某一角度(窗帘恰好拉开完毕或恰好关闭完毕)停止转动,同时转速不能太快以免产生噪音和把窗帘拉坏。设计流程如图4.1所示。图4.1 软件流程图程序在系统初

25、始化后,进行采集光敏电阻所提供的电压并等待红外信号的接收中断。在接收到红外信号时,进入中断服务程序进行解码,解码完成后返回主程序。其中,解析编码为40H是打开窗帘指令;解析编码为44H是关闭窗帘指令;解析编码为09H是自动调节窗帘指令;解析编码为46H是定时管理窗帘指令;如若解析编码与上述不符,继续等待。4.2 红外信号接收子程序设计如若要编写接收的子程序,首先要明白发射端的编码设计方式。根据NEC标准,所使用红外信号的调制方式为PPM(脉冲时间调制方式)。NEC标准:遥控载波的频率为38KHz(占空比为1:3);当某个按键按下时,系统首先发射一个完整的全码,然后经延时再发射一系列简码,直到按

26、键松开即停止发射。简码重复延时108ms,每两个引导脉冲上升沿之间的间隔都是108ms。 其中,引导码高电平9ms,低电平4.5ms;地址码16位,数据码16位,共32位;数据“0”用“高电平0.56ms低电平0.565ms”表示,数据“1”用“高电平0.56ms低电平1.6875ms”表示,一个简码引导码地址码位0的反码结束位(0.5625ms)高电平。各部分码的作用:引导码用来通知接收器其后为遥控数据。地址码用来区分是哪一机型的数据,接收端依此来判断后续的数据是否为须执行的指令。数据码用来区分是哪一个键被按下,接收端根据数据码做出应该执行什么动作的判断。简码是在持续按键时发送的码。它告知接

27、收端,某键是在被连续地按着。遥控数据传输系统的关键是数据传输的可靠性。为了提高编码的可靠性,NEC标准规定地址码、数据码后分别接着传送一个同样的码或者反码,供误码校验用。4.2.1 载波波形:信号被调制在37.91KHZ,占空比是1/3。图4.2 载波波形 4.2.2 数据格式:数据格式包括引导码、用户码、数据码和数据反码,编码总占32位。数据反码是数据码反相后的编码,编码时可用于对数据的纠错。注意:第二个用户码也可以在遥控应用电路中被设置成第一个用户码的反码。图4.3 编码格式如图3.5所示各段代码所占用的时间。图4.4 编码对应时间4.2.3 位定义:用户码和数据码中的每一个位可以是位“1

28、”,也可以是位“0”。区分0、1是利用脉冲的时间间隔来区分,这种编码方式称为脉冲位置调制方式(ppm)。图4.5 “1”和“0”所对应的时间图4.6 红外信号接收程序流程图 如上图3.6所示,使用中断方式进行接收红外信号。在收到中断信号时,进入中断服务程序。首先关闭外部中断1的中断,以防不会因为后来的下降沿对程序的干扰,进而判断信号送来的引导时序,当引导时序正确后对所发过来的32位“地址码+数据码”进行解析。当解析完成后,对16位的数据码分为高低8位,若互为反码,说明数据正确并保存高位的正码数据,否则视为数据传输错误返回主函数。4.3 步进电机控制方案28BYJ48型步进电机是四相八拍电机,电

29、压为DC5VDC12V。当对步进电机按一定顺序施加一系列连续不断的控制脉冲时,它可以连续不断的转动。每一个脉冲信号使得步进电机的某一相或两相绕组的通电状态改变一次,对应着转子转过一定角度。当通电状态改变完成一个循环时,转子转过一个齿距。电机的驱动分为正转和反转,这个电机驱动子程序就是用来控制电机的正反转的。通过设置I/O口的电平不同,可达到不同的控制,工作状态可参考下表。表4.1 电机状态控制表控制状态控制端IN1控制端IN2控制端IN3控制端IN4使能段ENA正转高低/高反转低高/高停止低低/高停止/低图4.7 电机驱动子程流程图当主程序中对发送来的红外判定为打开窗帘或关闭窗帘的命令代码时,

30、主程序则跳转到该子程序中。左图为是电机调整为正转状态的流程图,通过根据上表3.1来相应管脚的输出电平调整;同理,右图为电机调整为反转状态的流程图。4.4 定时模式子程序设计DS1302 是美国DALLAS公司推出的一种高性能、低功耗、带RAM的实时时钟电路,它可以对年、月、日、周日、时、分、秒进行计时,具有闰年补偿功能,工作电压为2.5V5.5V。定时模式的设计有助于我们人类更方便安排生活作息。定时模式可实现在这之后设定时间的窗帘的开闭。通过检测红外控制信号,进行该模式。系统可根据控制信号的变化来加减所需的定时时间。如图3.11为定时模式子程序流程图。图4.8 定时模式子程序流程图 在接收到进

31、入该模式的红外信号后,设定所需要的定时时间,在定时时间设定好之后,可设定定时结束时需要窗帘进行打开或关闭。在确定按键按下后,会清除屏幕上显示的设定选项并出现已设定定时模式的标志。同时将TR0置“1”启动定时器0进行定时,当定时结束时,电机根据设定打开或关闭窗帘。第五章 系统调试在系统调试之前,需对各电路进行电气连接性检查,检查电路的通断,使用检查仪器为数字万用表。通过测试,电路连接正常。这电路的调试提供很大的保证,当电路运行不正常时,有首先排除电路断路、短路的问题。系统的各个电路调试主要包括单片机最小系统的调试,数码管显示调试,红外信号发射接收调试,电机驱动电路的调试等。该章节首先对各个电路在

32、调试过程中出现的问题及解决方法进行说明,进而对整个系统的运行进行调整。5.1 单片机最小系统的调试单片机最小系统包含时钟振荡电路、复位电路等。最小系统的运行正常尤为关键,直接决定系统的功能能否实现。在经过上面电气连接检查后,在不插上微控制器芯片的情况下,上电测试。通电后,背部贴片的蓝光LED光亮正常,通电一段时间后,无异常产生,可接插单片机芯片。芯片接上后,接上电,蓝光LED放光正常,用数字万用表测试51单片机的40管脚(VCC)和地之间的电压,电压显示4.88V,单片机供电正常。再测试其他的管脚,电压都在允许值内,说明单片机工作正常。调试程序写入单片机最小系统的方法:用keil 4 编写一段

33、小程序(如控制发光二极管的亮灭),在小程序编译完成生成.HEX文件后,使用下载器通过USB下载线将程序烧入单片机内。第一次烧入程序时,注意要先把下载器的驱动程序安装进电脑方可实现烧录程序的功能。完成后,USB在电脑的设备管理器一栏中显示为COM3,因此在打开电脑的烧录应用程序时,应选择的串口号则为COM3。PCB上带有自锁开关,很方便下载程序时所需的上下电要求。单片机在下载完程序后,上电后LED亮灭正常。单片机可完整的工作,最小系统调试结束。5.2 数码管显示的调试在基础部分已完成数码管显示的程序设计。根据相关命令字编写一段简单的显示软件并将其烧入单片机。 5.3 红外信号发射接收的调试红外遥

34、控的功能在整个系统中是非常重要的,首先检查信号发射是否正常。由于红外线在我们人类视网膜感光范围之外,所以我们是看不见红外二极管是否发光正常。在浏览资料时发现,COMS的传感器对红外线具有敏感性,因此我们可用其作为一个媒介。手机的摄像头就是该类器件,所以可以用手机摄像功能来测试红外二极管的工作状态。在遥控器端按下一个键,在手机端可看见红外二极管在发淡红光闪烁,说明红外二极管发光正常。第二测试接收编码,可在万用板上用接收头(VS 1838b)焊接一个简单的接受电路。接收头输出端接数字示波器显示。测试发现,编码正常。5.4 电机驱动的调试电机驱动电路的调试比较简单,写入简单的代码,测试是否能够正常转

35、动。或在输入引脚处可用数字万用表做输出电流的测试。首先设置驱动电路的输出状态(比如IN1设置“0”,IN2设置“1”),然后启动输出(ENA设置“1”),将万用表档位转动为测量电流档,用红色表笔接触OUT1,黑色表笔接触OUT2。最后读数,完成测试。结果反映的是,电机驱动电路工作正常。5.5 系统整机的调试通过以上各个模块电路的调试后,最后将各个电路整合于一个完整的系统,对整个系统功能进行调试。在系统整机调试中,实现了光控窗帘的开闭,在设定值下的自动调整功能以及定时控制窗帘的开闭。系统基本实现了多功能智能窗帘控制器的目的。 第六章 总结 在整个设计、调试与安装的过程中基本实现了所要求的功能与任

36、务,可通过外接光照强度来控制整个系统的运作。自动调光模式,可以通过控制窗帘的开度实现自动调光效果;选中定时模式,可通过设定所需的时间和开闭,来控制到预定时间的窗帘状态。虽然如此,但该系统还存在一些不足,比如定时时间不够灵活,不够人性化在这两周里,自资料的查阅、揣摩思考到设计方案,直至整个系统的调试,在这整个过程中,我不断成长,不断磨练,从中发现当出现问题时,我的反应与应对是很重要的也就是分析问题,解决问题能力。这才是我在大学所真正需要锻炼的能力。通过这侧设计,我掌握了测量光强传感器的使用方法,进一步熟练已掌握的C语言编程方法。在实践中,不仅提升的动手能力积累了大量实践经验,而且巩固了已学习的知

37、识,使得自己在电路设计方面增强了信心。主要参考材料:1康华光.电子技术基础数字部分(第五版)M.北京:高等教育出版社,2006(1):4444562康华光.电子技术基础模拟部分(第五版)M.北京:高等教育出版社,2006.(1):4484543李宏,王崇武.现代电力电子技术基础M.北京:机械工业出版社,20008.(12):24364谭浩强.C程序设计(第三版)M.北京:清华大学出版社,2005:961045刘锦波.张承慧.电机与拖动M.北京:清华大学出版社,2006:55676郭天祥.新概念51单片机C语言编程M.北京:电子工业出版社,2009.(1):1031107石珍.家庭装饰设计与预算

38、图集M.上海:上海科学技术出版社,2008.(2):54608王瑞杰.光控自动窗帘机P.中国专利,95218893.7,1997(12):6159陈桂友,柴元斌.单片机应用技术M.北京:机械工业出版社,2008(9):314310吴次男,刘为民.手控或光控自动窗帘装置P.1995(5)19#include <reg52.h> #include <math.h> /Keil library #include <stdio.h> /Keil library#include <INTRINS.H>#define uchar unsigned char#

39、define uint unsigned int#define SlaveAddress 0x46 /定义器件在IIC总线中的从地址,根据ALT ADDRESS地址引脚不同修改 /ALT ADDRESS引脚接地时地址为0x46,接电源时地址为0xB8sbit SCL=P10; /IIC时钟引脚定义sbit SDA=P11; /IIC数据引脚定义typedef unsigned char BYTE;typedef unsigned short WORD;float temp;sbit key=P34; /按键控制步进电机的方向sbit s2=P35; /手动自动方式选择unsigned char

40、 speed=8; /步进电机的转速sbit LED1=P02;/开窗指示 sbit LED2=P03;/关窗指示 sbit zi=P00; sbit shou=P01; bit ZD; BYTE BUF8; /接收数据缓存区 uchar ge,shi,bai,qian,wan; /显示变量int dis_data; /变量uchar irdate33;uchar irbyte4; uchar disp8;uchar irtime,irflag,bitnum,irdateok;uint num,flag,disnum,count,a,guang; /*八拍方式驱动,顺序为A AB B BC C

41、 CD D DA*/ unsigned char code clockWise=0x08,0x0c,0x04,0x06,0x02,0x03,0x01,0x09; /正转unsigned char code clockWise1=0x09,0x01,0x03,0x02,0x06,0x04,0x0c,0x08; /反转uchar code table=0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90,0x88,0x83,0xc6,0xa1,0x86,0x8e,0x89,0xa3,0x8c,0xc8,0xff ;void delay(unsigned

42、 int k);void delay_nms(unsigned int k);void Init_BH1750(void);void conversion(uint temp_data);void Single_Write_BH1750(uchar REG_Address); /单个写入数据uchar Single_Read_BH1750(uchar REG_Address); /单个读取内部寄存器数据void Multiple_Read_BH1750(); /连续的读取内部寄存器数据void Delay5us();void Delay5ms();void BH1750_Start(); /起

43、始信号void BH1750_Stop(); /停止信号void BH1750_SendACK(bit ack); /应答ACKbit BH1750_RecvACK(); /读ackvoid BH1750_SendByte(BYTE dat); /IIC单个字节写BYTE BH1750_RecvByte(); /IIC单个字节读void conversion(uint temp_data) / 数据转换出 个,十,百,千,万 wan=temp_data/10000+0x30 ; temp_data=temp_data%10000; /取余运算qian=temp_data/1000+0x30 ;

44、 temp_data=temp_data%1000; /取余运算 bai=temp_data/100+0x30 ; temp_data=temp_data%100; /取余运算 shi=temp_data/10+0x30 ; temp_data=temp_data%10; /取余运算 ge=temp_data+0x30; /毫秒延时*void delay_nms(unsigned int k)unsigned int i,j;for(i=0;i<k;i+)for(j=0;j<110;j+);/*延时5毫秒(STC90C52RC12M)不同的工作环境,需要调整此函数当改用1T的MCU

45、时,请调整此延时函数*/void Delay5ms() WORD n = 560; while (n-);/*延时5微秒(STC90C52RC12M)不同的工作环境,需要调整此函数,注意时钟过快时需要修改当改用1T的MCU时,请调整此延时函数*/void Delay5us() _nop_();_nop_();_nop_();_nop_(); _nop_();_nop_();_nop_();_nop_();_nop_();_nop_();_nop_();_nop_();_nop_();_nop_();_nop_();_nop_();/*起始信号*/void BH1750_Start() SDA

46、= 1; /拉高数据线 SCL = 1; /拉高时钟线 Delay5us(); /延时 SDA = 0; /产生下降沿 Delay5us(); /延时 SCL = 0; /拉低时钟线/*停止信号*/void BH1750_Stop() SDA = 0; /拉低数据线 SCL = 1; /拉高时钟线 Delay5us(); /延时 SDA = 1; /产生上升沿 Delay5us(); /延时/*发送应答信号入口参数:ack (0:ACK 1:NAK)*/void BH1750_SendACK(bit ack) SDA = ack; /写应答信号 SCL = 1; /拉高时钟线 Delay5us

47、(); /延时 SCL = 0; /拉低时钟线 Delay5us(); /延时/*接收应答信号*/bit BH1750_RecvACK() SCL = 1; /拉高时钟线 Delay5us(); /延时 CY = SDA; /读应答信号 SCL = 0; /拉低时钟线 Delay5us(); /延时 return CY;/*向IIC总线发送一个字节数据*/void BH1750_SendByte(BYTE dat) BYTE i; for (i=0; i<8; i+) /8位计数器 dat <<= 1; /移出数据的最高位 SDA = CY; /送数据口 SCL = 1; /

48、拉高时钟线 Delay5us(); /延时 SCL = 0; /拉低时钟线 Delay5us(); /延时 BH1750_RecvACK();/*从IIC总线接收一个字节数据*/BYTE BH1750_RecvByte() BYTE i; BYTE dat = 0; SDA = 1; /使能内部上拉,准备读取数据, for (i=0; i<8; i+) /8位计数器 dat <<= 1; SCL = 1; /拉高时钟线 Delay5us(); /延时 dat |= SDA; /读数据 SCL = 0; /拉低时钟线 Delay5us(); /延时 return dat;void Single_Write_BH1750(uchar REG_Address) BH1750_Start(); /

温馨提示

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

评论

0/150

提交评论