1、摘 要电风扇曾一度被认为是空调产品冲击下的淘汰品,其实并非如此,电风扇仍占据大量市场。其主要原因:一是风扇和空调的降温效果不同空调有强大的制冷功能,可以快速有效地降低环境温度,但电风扇的风更温和,更加适合老人儿童和体质较弱的人使用;二是电风扇有价格优势,价格低廉而且相对省电,体积轻巧,摆放方便,安装和使用都非常简单。但是随着科技的发展,人们对电风扇的要求也越来越高了,特别是人性化、智能化的观点提出之后,而现在市场上的大部分智能电风扇只是对自动开关、根据环境温度自动调节风速大小、自动照明等功能实现智能化,并没有考虑过台式风扇的智能旋转问题。因此对于台式风扇而言,它并不是完全的智能化。本设计主要就
2、是模拟实现台式电风扇的智能旋转问题。本设计以SN8P2501B为主控制芯片, BISS0001及其外围电路作为红外感应装置,PM35L-048步进电机及6个发光二极管组合实现其功能。红外感应模块通过步进电机的带动来检测范围内是否有人,将检测到的信号传递给SN8P2501B,当在一定时间内均检测到有人信号时,将开启步进电机旋转及LED模拟功能。在步进电机正转180范围内,LED循环显示(模拟风扇旋转),检测到有人时记录当前步进电机步数(即角度);检测到无人时记录当前步进电机步数(即角度),待到正转180结束后,LED按照记录的步进电机步数循环闪烁(模拟风扇旋转),步进电机反转180。当正转180
3、均未检测到人存在,则在反转180结束后关闭步进电机及LED模拟功能。关键词:电风扇,智能,SN8P2501B,红外感应,步进电机Design and development of intelligent fan controllerABSTRACTFan was once considered to be out of air conditioning products under the impact of goods, but, in fact, fans still occupy a lot of the market. The main reasons: First, the effe
4、ct is different between the fan and air-conditioning - there is a strong air-conditioning cooling function, you can quickly and effectively reduce the ambient temperature, but the wind send from the fan is more moderate, more suitable for children elderly people and less physical people; Second, fan
5、 have many advantage such as the price advantage, low cost and relatively energy-saving, lightweight, easy placed, easy to install and use. However, with the development of technology, peoples demand to fan is higher and higher, especially when the person point the view that the goods must to be int
6、elligent. But now on the market most of the smart fan only can achieve some functions such as automatically switches, according to the ambient temperature automatically adjust the size of wind speed, intelligent features such as automatic lighting, it is not relation to the intelligent desktop fan r
7、otation problem. So for desktop fan is concerned, so it is not a entirely intelligent fan. The key of the design is to simulate achieve the intelligent desktop fan rotation problem.The design is based on SN8P2501B control chip, use BISS0001 and its peripheral circuits as the infrared sensors, PM35L-
8、048 stepping motor and six LED combinations to achieve its function. Infrared sensor module, driven by stepper motors to detect whether someone within, then the detected signal is passed to the SN8P2501B. When a certain period of time the signal was detected having person,it will open the stepping m
9、otor key and LED analog functions, the motor will work in a moment. When the stepper motor is turn from 0-180 , LED display loop (analog fan rotation).MCU writer down the motor steps when the infrared sensors module is the first time to get the signal that there have persons (equal angle); MCU write
10、r down the motor steps when the infrared sensors module is the first time to get the signal that there has no person (equal angle). When the stepper motor is turned to 180 , LED will be according to the number of loop stepper motor step that MCU have written down to flash (analog fan rotation), step
11、 motor reverse 180 . When the stepper motor is turned 180 , the infrared sensors module hasnt got the signal that there has person existence, step motor will reverse 180 . It will close the stepper motor and LED analog functions after the end of 180 .KEYWORDS: Fan, Intelligent, SN8P2501B, Infrared s
12、ensor, Stepper motor目 录摘 要IABSTRACTII目 录III1 绪论11.1智能电风扇在当今社会中的研究意义11.2 研究内容及论文安排11.2.1 研究内容11.2.2 论文安排22 系统设计方案32.1 系统总体介绍32.2 系统功能介绍32.3 设计方案43 硬件设计73.1 微处理器73.1.1 SN8P2500系列介绍73.1.2 SN8P2501B单片机介绍73.1.3 单片机复位电路133.1.4 单片机晶振电路163.1.5 微处理器控制电路163.2 步进电机183.2.1 步进电机工作原理183.2.2 步进电机的静态指标术语213.2.3 步进电
13、机的动态指标术语223.2.4 PM35L-048步进电机介绍223.3 红外感应模块243.3.1 红外感应装置的工作原理243.3.2 BISS0001红外感应信号处理器243.3.4 红外感应装置输出电平转换294 软件设计314.1 主程序设计314.2 分时时间处理334.3 步进电机转动处理344.4 APP事件处理354.5 LED循环闪烁365 结论38致 谢39参 考 文 献40附录 系统原理图41附录 程序代码421 绪论1.1智能电风扇在当今社会中的研究意义电风扇曾一度被认为是空调产品冲击下的淘汰品,其实并非如此,市场人士称,家用电风扇并没有随着空调的普及而淡出市场,近两
14、年反而出现了市场销售复苏的态势。其主要原因:一是风扇和空调的降温效果不同空调有强大的制冷功能,可以快速有效地降低环境温度,但电风扇的风更温和,更加适合老人儿童和体质较弱的人使用;二是电风扇有价格优势,价格低廉而且相对省电,体积轻巧,摆放方便,安装和使用都非常简单。尽管电风扇有其市场优势,但传统电风扇还是有许多地方应当进行改良的,最突出的缺点是它不能根据温度的变化适时调节风力大小,对于夜间温差大的地区,人们在夏夜使用电风扇时可能遇到这样的问题:当凌晨降温的时候电风扇依然在工作,可是人们因为熟睡而无法察觉,既浪费电资源又容易引起感冒,传统的机械定时器虽然能够控制电风扇在工作一定后关闭,但定时范围有
15、限,且无法对温度变化灵活处理。有鉴于现今家里不可或缺的电器产品电风扇,我们希望可以借由步进电机组合做出利用红外感应接收模块接收到有人的讯号,来改变电风扇转动的方向,以取代传统电风扇只能以固定形式转动,希望能够让电风扇自动能感应到人所在的方向,未来让电器更能人性化、科技化,以达到方便性智利于未来科技产业的发展,我们希望能将科技运用在电器上,再于产业结合,已达到居家生活里的便利性。现今社会上,不可或缺的是将生活周遭事物简单化,而我们将运用单芯片在电风扇上,研究出符合未来人们的需求,研发低成本、多功能的全自动化电风扇让社会大众能够接受,取代传统式手动电风扇,让科技产业在电器上有重大的突破。于以上方面
16、的考虑,我们需要设计一种智能电风扇控制系统来解决这些问题。1.2 研究内容及论文安排1.2.1 研究内容本论文主要目标是使电风扇能够根据人的位置来自动选择送风角度。以SONIX公司研发的SN8P2501B为主控器,利用红外感应接收装置,接受人体辐射出的红外线,通过此讯号利用PM35L-048步进电机来改变红外感应接受装置,进而确定人体范围,再通过发光二极管指示锁定角度并模拟风扇循环闪烁。 由手动开关转变为红外线人体感应自动开关,是应用先进的红外线人体感应科技主动侦测人体的问题是否在探测范围内,在设定15秒时间内都可以探测到人,则开启电机开关,开启LED角度循环闪烁;若在15秒内开始存在有人信号
17、,后存在无人信号,则重新计时15秒检测;若一直存在无人信号则不操作动作。1.2.2 论文安排论文第1章为绪论,主要介绍了电风扇的现状,智能电风扇研究意义,本设计研究的内容及论文安排;第2章为系统设计方案的介绍,包括其具体可实现的功能及方案选择;第3章为硬件设计部分,这部分详细介绍了所选硬件的特性及其各部分对实现自己所需要功能的作用及其电路图;第4章为软件设计部分,给出了主程序和各子程序流程图,程序清单以附件的形式附在论文最后。第5章为结论部分。接下来为致谢和参考文献。最后附有原理图及程序清单。2 系统设计方案2.1 系统总体介绍本次设计选用SONIX SN8P2501B为主控制芯片,与外围电路
18、构成人体范围检测系统。MCU记录下侦讯到的人范围,并送给LED发光二极管,使其模拟风扇循环闪烁。系统框图如下图所示:图2-1 系统框图2.2 系统功能介绍本系统利用LED发光二极管的循环闪烁来模拟风扇的来回旋转送风动作。主要功能为:a) 自动启动及关闭开关我们由步进电机配合红外感应控制器经由红外线扫描来控制开关,检测到一定时间内有人时自动开启电机开关及LED闪烁;无人时关闭电机开关及LED闪烁。b) 自动搜索范围人数我们以SN8P2501B来控制步进电机的步数,使它去侦测人数范围有多大。c) 锁定人体位置我们利用红外感应控制器搜寻配合步进电机步数,有红外感应控制模块传回探测信号给MCU,再由M
19、CU来记忆人体位置,记录最大最小角度,锁定人体位置。d) 发光二极管指示锁定角度并模拟风扇循环闪烁用LED循环闪烁来模拟电风扇来回循环送风动作,每相邻两个LED之间间隔为30。例:当锁定人范围为30-90时,LED从LED1至LED3循环闪烁(LED从左到右依次为LED1、LED2、LED3、LED4、LED5、LED6,分别代表30、60、90、120、150、180)。2.3 设计方案本设计根据红外感应装置的不同处理共有两种设计方案a) 方案一将红外感应模块前的菲泥尔滤光透镜用不透红外的材质覆盖上,让红外感应模块只能检测到一个小范围内(小于10)的红外变化,步进电机正转180后即可反转18
20、0,如图2-2所示图2-2 设计后的红外感应模块探测范围利用这种方法,可以不用考虑红外检测范围内是否存在人这种情况,原因是LED模拟的角度是以30来递增的,相比而言,红外检测的角度远远小于模拟的角度,即使在红外检测范围内存在有人,在步进电机旋转一步后就可以检测出来,不会影响到检测的结果。例:当步进电机正转90后,红外探头检测到有人(探测角度87.592.5),此时记录下的电机步数为X大步(X=3,90);步进电机再次旋转7.5,此时检测不到人(探测范围95100),记录此时的电机步数为X+1大步(X=3,120),对检测没有什么影响。图2-3 检测到有人存在图2-4 下一状态检测不到人这种方法
21、的优点:思路比较简单,基本没有涉及到算法,在步进电机旋转速度比较慢的情况下能够很快获得人的位置,从而改变LED的闪烁;缺点:需要利用不透红外材料来封装,在开机情况下,需要人在此等待十几秒时间,确认一直有人存在开机后才能离开此位置。b) 方案二事先确定红外感应装置的探测角度,步进电机需要正转360。下面举例说明:假设红外感应装置的探测角度为150,人所在范围为30-120范围内,则在步进电机开始正转时就能够检测到有人存在(检测角度-7575),步进电机旋转至90(3大步)时仍能检测到人(检测范围30150),只有当步进电机旋转至195(6大步)时才检测不到人(检测范围120270),此时记录的角
22、度为210(6+1大步),需要减去红外感应装置探测角度的一半,此时才是真正开始没探测到人时人的位置,即结束角度,角度为120(6+1-(2+1)=4大步)(2+1为探测角度一半所占大步);步进电机继续正转,当步进电机正转至315(10大步)时,又一次检测到有人(检测范围为24030),此时记录的角度为315(10大步),仍然需要减去红外感应装置探测角度的一半,则起始角度为30(10+(2+1)-12=1大步)(2+1为探测角度一半所占大步,12为旋转360所需步数)。这样只记录两次值就得到了人的范围,不论人站的稀疏。图2-5 红外探头初始位置图2-6 检测到无人时的位置图2-7 检测到刚有人时
23、的位置这种方法的优点:不需要做什么其他操作,开机更加人性化,不需要让电机进行反转动作,在判断完人范围后即可判断是否需要关机操作;缺点:思路有点复杂,中间涉及到算法问题,事先必须知道此红外感应装置的探测角度,因为步进电机转速比较慢导致确定一个范围需要比较长的时间。注:方案一和方案二中涉及到得确定范围需要的时间是由所选红外感应装置决定的,在这里所选的BISS0001默认延时时间为10秒,因此需要的时间比较长,如果调为1秒,则步进电机旋转的速度扩大10倍,需要的时间也就相应缩短。两种方案硬件电路完全一样,只是对红外感应装置的处理不同,主要表现在红外感应装置的探测范围上,实现不同的方案由程序控制。本设
24、计选用方案一作为主要思路,原因有几点:思路简单,容易被他人理解;可以允许在未检测区域内随意改动位置,在当前正转结束后用LED模拟显示出;在实物演示中,正转后反转不会对引线产生影响;在较短时间内可以看到演示效果。3 硬件设计本系统主要由微处理器控制、红外感应模块、步进电机模块及LED模拟风扇旋转模块等组成。下面介绍各部分原理及电路图。3.1 微处理器3.1.1 SN8P2500系列介绍SN8P2500系列单片机是SONIX公司最新推出的高速低功耗8位单片机。它采用低功耗CMOS设计工艺及高性能的RISC架构,具有优异的抗干扰性能。突出的特点是:低成本、高抗干扰性、内置16Mhz RC振荡电路、高
25、速8位、59条精简指令集。3.1.2 SN8P2501B单片机介绍当前市场上的单片机有51系列,STC系列等单片机,考虑到设计只需实现自动开关机及锁定人范围LED闪烁的功能,但又要确保其抗干扰能力强的特点,在考虑功能需求及成本的基础上,选择了SONIX公司研发的SN8P2501B 8位单片机作为本系统的控制器,有14个引脚,如图3-1,它具有以下特性:a) OTP ROM空间:1K * 16位;b) RAM空间:48 字节;c) STKP堆栈: 4层;d) 多种振荡源选择:最大可达16MHz的外部晶振、10MHz的外部RC振荡、内部16MHz的高速时钟及16KHz的低速时钟;e) 高速的CPU
26、指令周期,可达1T,即每个指令周期为1个时钟周期;f) 满足低功耗的需求,可编程设定4种工作模式:正常模式、低速模式、睡眠模式和绿色模式;g) 内置高速PWM/Buzzer输出接口,可输出不同频率的信号;h) 内置RTC实时时钟(0.5s)、看门狗定时器(16KHz3V,32KHz5V)及3级低电压检测系统;i) 具有3个中断源,2个内部中断源:T0、TC0,1个外部中断源:INT0。1) I/O引脚配置I/0口引脚为:a) 输入输出双向端口:P0、P1、P2、P5;b) 单向输入引脚:P1.1;c) 可编程的漏极开路引脚:P1.0;d) 具有唤醒功能的端口:P0、P1 电平变化触发;e) 内
27、置上拉电阻端口:P0、P1、P2、P5;f) 外部中断引脚:P0.0,由寄存器PEDGE 控制,其触发方式为上升沿或下降沿。图3-1 SN8P2501B引脚2) 程序寄存器图3-2 程序存储器SN8P2501B的程序寄存器为OTP ROM(一次性可编程),存储器容量为1K*16位,可由10位程序计数器PC对程序寄存器进行寻址,或由系统寄存器(R,X,Y和Z)对ROM内的数据进行查表访问。其中:系统复位后从地址0000H开始执行;地址0008H是中断向量入口地址。3) 数据存储器图3-3 数据存储器SN8P2501B单片机的片内RAM共有256个存储单元,地址范围为000H-0FFH。片内寄存器
28、可分为通用数据存储区和系统存储器两大部分。通用数据存储区可作为用户自定义的变量,临时数据,中间数据存放地,而系统寄存器则用来控制片内外设或表示外设的状态。4) 定时/计数器SONIX SN8P2708A MCU定时/计数器大分致为两大类。一类为基本定时器T0,另一类为多功能定时器TC0。二进制定时器T0 溢出(从0FFH 到00H)时,T0 继续计数并给出一个溢出信号触发T0 中断请求。定时器T0 的主要用途如下:a) 8 位可编程定时器:根据选定的时钟频率定时产生中断请求;b) 定时器:根据选定的时钟信号产生中断请求,RTC 功能仅限于编译选项为High_Clk = IHRC_RTC;c)
29、绿色模式唤醒功能:T0ENB = 1 时,T0 溢出将系统从绿色模式中唤醒。定时/计数器TC0 具有双时钟源,可根据实际需要选择内部时钟或外部时钟作为计时标准。其中,内部时钟来自Fcpu,外部时钟INT0 由P0.0 引脚(下降沿触发)输入。寄存器TC0M 控制时钟源的选择。当TC0 从0FFH 溢出到00H 时,TC0 在继续计数的同时产生一个溢出信号,触发TC0 中断请求。TC0 的主要作用如下:a) 8 位可编程定时器:根据选定的时钟频率在特定时间产生中断信号;b) 外部事件计数:对外部事件计数;c) 蜂鸣器输出;d) PWM输出。下面以基本定时器T0为例,说明初始值的设定方法。T0C:
30、T0累加计数寄存器,上电初始值为00H,可以软件重置,每次溢出之后,初始值需要用户重置。初始值设定方法如下:T0C初始值 = 256 (T0溢出间隔时间 输入时钟)例如:用T0做一个10ms的定时,Fcpu=1M。T0rate选择010(Fcpu/64),那么T0C初始值 = 256 (T0溢出间隔时间 输入时钟) = 256 ( 10ms 1M/64 ) = 64HT0M中的Bit6:Bit4决定分频数的比率,T0的时钟源来自CPU,通过T0M中的Bit6,Bit5,Bit4来控制分频数的比率,T0ENB位控制计数器时钟,如果为1则时钟输入到T0计数器T0C中,T0开始计数,否则T0C的时钟
31、被切断,T0C停止计数。当T0C计数器从0FFH增加到000H时,系统会将标志位T0IRQ置为1。表3-1 T0M寄存器0D8HBit7Bit6Bit5Bit4Bit3Bit2Bit1Bit0T0MT0ENBT0rate2T0rate1T0rate0-T0TB复位后0000-0T0TB:RTC 时钟控制位。0 = 禁止RTC; 1 = RTC 模式。T0RATE2:0:T0 分频选择位。T0ENB:T0 启动控制位。0 = 禁止T0;1 = 开启T0。表3-2 分频比T0rate2T0rate0分频比000Fcpu/256001Fcpu/128010Fcpu/64011Fcpu/32100Fc
32、pu/16101Fcpu/8110Fcpu/4111Fcpu/2注:在RTC 模式下,T0RATE 的设置是无效的。5) 中断SONIX单片机是当今世界上很有影响力的精简指令集微控器,具有丰富的中断功能。不过它们也存在一定的局限性,例如中断矢量只有一个,并且各个中断源之间也没有优先级别之分,不具备中断屏蔽功能。不同的芯片具有不同的中断。SN8P2501B单片机具有3个中断源:2个内部中断源(定时器T0、定时/计数器TC0)、1个外部中断源(INT0/P00)。对于SONIX单片机来说,中断源的要求是否会得到响应,受允许中断寄存器INTIEN中各位的控制。在全局中断控制位GIE为1时,才能使能中
33、断请求,当中断源同时产生中断时,要靠内部的查询逻辑来确定响应的次序,不同的中断源其中断地址均为0008H。一次中断活动的全过程如图3-4所示。图3-4 中断处理流程图在图中,(1),(2),(3)和(9)是由硬件自动实现的,而其它的阶段是由用户软件完成的。有中断请求发生并被响应后,程序转至0008H 执行中断子程序。响应中断之前,必须保存ACC、PFLAG 的内容。芯片提供PUSH 和POP 指令进行入栈保存和出栈恢复,从而避免中断结束后可能的程序运行错误。PUSH/POP指令仅对ACC和PFLAG作中断保护,而不包括NT0和NPD。某些芯片PUSH/POP只能保护PFLAG寄存器内的值,AC
34、C内的值需要用户自己保存,此芯片中PUSH/POP可直接对ACC和PFLAG进行保护。PUSH/POP 缓存器是唯一的且仅有一层,因此只能出现在中断保护现场中。6) SN8P2501B单片机编译选项表利用SN8P2501B芯片作为微控制器,在编译过程中需要注意对应的选项表,见表3-3。表3-3 SN8P2501B单片机编译选项表编译选项配置项目功能说明Noise_FilterEnable开启杂讯滤波功能,Fcpu = Fosc/4Fosc/16Disable关闭杂讯滤波功能,Fcpu = Fosc/1Fosc/16FcpuFhosc/1指令周期 = 1个时钟周期,必须关闭杂讯滤波功能;IHRC
35、_16M 和IHRC_RTC 模式下,不支持Fosc/1Fhosc/2指令周期 = 2 个时钟周期,必须关闭杂讯滤波功能;IHRC_16M 和IHRC_RTC 模式下,不支持Fosc/2Fhosc/4指令周期 = 4 个时钟周期Fhosc/8指令周期 = 8 个时钟周期Fhosc/16指令周期 = 16 个时钟周期High_ClkIHRC_16M高速时钟采用内部16MHz RC 振荡电路,XIN/XOUT(P1.3/P1.2)作为普通的I/O 引脚;IHRC_16M 模式下,Fcpu 取值在Fosc/4Fosc/16 之间IHRC_RTC高速时钟采用内部16MHz RC 振荡电路,具有RTC
36、功能(0.5sec),XIN/XOUT(P1.3/P1.2)作为普通的I/O 引脚;IHRC_RTC 模式下,Fcpu 取值在Fosc/4Fosc/16 之间RC外部高速时钟振荡器采用廉价的RC 振荡电路,XOUT(P1.2)为普通的I/O 引脚32K Xtal外部高速时钟振荡器采用低频、省电晶体/陶瓷振荡器(如32.768KHz)12M Xtal外部高速时钟振荡器采用高频晶体/陶瓷振荡器(如10MHz12MHz)4M Xtal外部高速时钟振荡器采用标准晶体/陶瓷振荡器(如1M10MHz)Watch_DogAlways_On始终开启看门狗定时器,即使在睡眠模式和绿色模式下也处于开启状态Enab
37、le开启看门狗定时器,但在睡眠模式和绿色模式下关闭Disable关闭看门狗定时器Reset_PinReset使能外部复位引脚P11P1.1 为单向输入引脚,无上拉电阻LVDLVD_LVDD 低于2.0V 时,LVD 复位系统;LVD_MVDD 低于2.0V 时,LVD 复位系统;PFLAG 寄存器的LVD24 位作为2.4V 低电压监测器LVD_HVDD 低于2.4V 时,LVD 复位系统;PFLAG 寄存器的LVD36 位作为3.6V 低电压监测器SecurityEnableROM 代码加密DisableROM 代码不加密注:a) 在干扰严重的情况下,建议开启杂讯滤波功能,此时Fcpu =
38、Fosc/4 Fosc/16,并将Watch_Dog 设置为“Always_On”;b) 如果用户设置看门狗为“Always_On”,编译器将自动开启看门狗定时器;c) 编译选项Fcpu 仅针对高速时钟,在低速模式下Fcpu = FILRC/4;d) 在IHRC_16M 和IHRC_RTC 模式下,Fcpu = Fosc/4 Fosc/16。3.1.3 单片机复位电路SN8P2501B 有以下几种复位方式:a) 上电复位;b) 看门狗复位;c) 掉电复位;d) 外部复位(仅在外部复位引脚处于使能状态)。上述任一种复位发生时,所有的系统寄存器恢复默认状态,程序停止运行,同时程序计数器PC 清零。
39、复位结束后,系统从向量0000H 处重新开始运行。PFLAG 寄存器的NT0 和NPD 两个标志位能够给出系统复位状态的信息。用户可以编程控制NT0 和NPD,从而控制系统的运行路径。表3-4 PFLAG寄存器086HBit7Bit6Bit5Bit4Bit3Bit2Bit1Bit0PFLAGNT0NPDLVD36LVD24-CDCZ读/写R/WR/WRR-R/WR/WR/W复位后XX00-000NT0、NPD:复位状态标志表3-5 复位状态标志复位情况NT0NPD复位情况说明00看门狗复位看门狗溢出01保留-10上电及LVD复位电源电压低于LVD检测值11外部复位外部复位引脚检测到低电平任何一
40、种复位情况都需要一定的响应时间,系统提供完善的复位流程以保证复位动作的顺利进行。对于不同类型的振荡器,完成复位所需要的时间也不同。因此,VDD 的上升速度和不同晶振的起振时间都不固定。RC 振荡器的起振时间最短,晶体振荡器的起振时间则较长。在使用的过程中,应注意考虑主机对上电复位时间的要求。图3-5为各种复位方式的响应。图3-5 各种复位电路的响应在这里所用的复位为外部复位。外部复位功能由编译选项“Reset_Pin”控制。将该编译选项置为“Reset”,可使能外部复位功能。外部复位引脚为施密特触发结构,低电平有效。复位引脚处于高电平时,系统正常运行。当复位引脚输入低电平信号时,系统复位。外部
41、复位操作在上电和正常工作模式时有效。需要注意的是,在系统上电完成后,外部复位引脚必须输入高电平,否则系统将一直保持在复位状态。外部复位的时序如下:a) 外部复位(当且仅当外部复位引脚为使能状态):系统检测复位引脚的状态,如果复位引脚不为高电平,则系统会一直保持在复位状态,直到外部复位结束;b) 系统初始化:初始化所有的系统寄存器;c) 振荡器开始工作:振荡器开始提供系统时钟;d) 执行程序:上电结束,程序开始运行。外部复位可以在上电过程中使系统复位。良好的外部复位电路可以保护系统以免进入未知的工作状态。 外部复位电路有多种复位方式,如RC复位电路、二极管及RC复位电路等。1) RC复位电路如图
42、3-6 图3-6 RC复位电路图3-7为一个由电阻R1 和电容C1 组成的基本RC 复位电路,它在系统上电的过程中能够为复位引脚提供一个缓慢上升的复位信号。这个复位信号的上升速度低于VDD 的上电速度,为系统提供合理的复位时序,当复位引脚检测到高电平时,系统复位结束,进入正常工作状态。2) 二极管及RC复位电路如图3-7图3-7 二极管及RC复位电路R1和C1同样是为复位引脚提供输入信号。对于电源异常情况,二极管正向导通使C1 快速放电并与VDD保持一致,避免复位引脚持续高电平、系统无法正常复位。注:“基本RC 复位电路”和“二极管及RC 复位电路”中的电阻R2 都是必不可少的限流电阻,以避免
43、复位引脚ESD(Electrostatic Discharge)或EOS(Electrical Over-stress)击穿 。本设计电路比较简单,对复位响应时间没有太大的要求,考虑成本及电路规划的基础上采用RC复位电路作为此MCU的复位电路。3.1.4 单片机晶振电路对于本芯片来说,主要有两种晶振来源:外部石英/陶瓷振荡器和内部高速RC振荡器。1) 外部石英/陶瓷振荡器其电路图如图3-8图3-8 外部石英/陶瓷振荡器图3-9中,XIN/XOUT/VSS 引脚与石英/陶瓷振荡器以及电容C之间的距离越近越好。2) 内部高速RC振荡器编译选项“IHRC_16M”和“IHRC_RTC”控制单片机的内
44、置RC高速时钟(16MHz)。若选择“IHRC_16M”,则内置16MHz RC振荡器作为系统时钟源,XIN和XOUT引脚作为通用I/O 口。若选择“IHRC_RTC”,则系统时钟来自内置16MHz RC振荡器,同时XIN 和XOUT 引脚与实时时钟源(RTC)32768HZ石英晶体相连。IHRC:系统高速时钟来自内置16MHz RC振荡器,XIN/XOUT 引脚作为普通的I/O引脚。IHRC_RTC:内置16MHZ RC振荡器作为系统高速时钟,同时XIN 和XOUT 引脚与实时时钟源(RTC)32768Hz石英晶体相连。RTC的周期为0.5 s,RTC 的定时器为T0。本设计需要11个I/O
45、口(6个LED控制位,4个步进电机控制位,1个输入信号位),所选用的MCU资源刚刚满足需要,过程中不需要获取非常准确的时间,因此选用MCU内置的16MHz RC高速振荡器作为系统时钟源,XIN 和XOUT引脚作为通用I/O口。3.1.5 微处理器控制电路图3-9 控制电路MCU所需电压在2.4V-5.5V范围内,在此选取典型电压5.0V;步进电机正常工作电压在12V或24V,但考虑到步进电机在此处只带动红外感应模块,不需要比较大的动力,为了简化电路,采用7.5V电压。这样只需要将通过电源适配器获得的7.5V电压转化成5.0V即可,这里需要用到电压转换芯片7805。电路图如图3-10所示,其中C
46、1/C2/C3/C4增强电源抗干扰能力。图3-10 电源电路控制电路图如图3-9所示。图中,C5为0.1uF的电容,分别与MCU VDD 和VSS 相连,可以增强MCU 抗干扰能力。Q5为PNP型8550三极管,它在这里只是起升压作用,升0.6V左右电压,使之大于0.7VDD,满足MCU I/O口电平需求。U2为红外感应装置。红外感应模块随着步进电机的旋转而旋转,将探测到得信号通过2口输送出来。当红外感应模块检测到人时,2口输出高电平,通过Q5使MCU的P0.0口变为高电平;当红外感应模块未检测到人时,2口输出低电平,MCU的P0.0口变为低电平,这样MCU就可以只检测P0.0的状态就可以判断是否有人。Q1-Q4为NPN型8050三极管,它在这里起开关功能。D7-D10为二极管1N4148,因为MCU对应步进电机各口输出的电平一会儿是高电平,一会儿是低电平,相当于PWM信号,通过步进电机线圈后会产生感应磁场,进而产生反电动势,产生回路电流,通过续流二极管(D7-D10)而衰减掉,从而保护了Q1-Q4三极管。线圈两端分别为A、B、C、D,哪位被驱动,步进电机旋转对应的角度,具体情况由程序控制。当在设定时间内(防止因干扰而造成开机),红外感应模块输出的电平一直是