低成本家居自动化控制系统(西安电子科技大学)_第1页
低成本家居自动化控制系统(西安电子科技大学)_第2页
低成本家居自动化控制系统(西安电子科技大学)_第3页
低成本家居自动化控制系统(西安电子科技大学)_第4页
低成本家居自动化控制系统(西安电子科技大学)_第5页
已阅读5页,还剩46页未读 继续免费阅读

下载本文档

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

文档简介

低成本家居自动化控制系统的设计(2)单片机AT89S52的最小原理图由于本次设计方案只要采用一个单片机,故本次设计中的单片机采用最小系统设计。系统最小系统的接线如图3-2所示。3-2单片机的最小控制系统3-2单片机的最小控制系统本设计AT89S52的振荡方式选择内部震荡方式,片内高增益反相放大器通过XTAL1,XTAL2外接作为反馈元件的晶体(呈感性)与电容组成的并联谐振回路过程的一个自激振荡向内部时钟提供振荡时钟。电容的值通常取30pF左右。如图3-2所示:AT89S52的XTAL1和XTAL2之间加了一个12MHz的晶振,两个电容器C1、C2起稳定振荡频率、快速起振的作用,电容值为10pF,实际电路中应该将电容器尽量靠近单片机。3-2单片机最小系统当AT89S52单片机的复位引脚RST出现2个机器周期以上的高电平时,单片机就执行复位操作。如果RST持续为高电平,单片机就处于循环复位状态。复位的基本功能是:系统上电时提供复位信号,直至系统电源稳定后,撤消复位信号。为可靠起见,电源稳定后还要经一定的延时才撤销复位信号,以防电源开关或电源插头分合过程中引起的抖动而影响复位。3-2单片机最小系统52系列单片机的复位是由RESET引脚来控制的,此引脚与高电平相接超过24个振荡周期后,52单片机即进入芯片内部复位状态,而且一直在此状态下等待,直到RESET引脚转为低电平后,才检查EA引脚是高电平或低电平,若为高电平则执行芯片内部的程序代码,若为低电平便会执行外部程序。由于本设计只采用内部存储器,不会执行外部程序,因此EA端一般为高电平。单片机的复位操作使单片机进入初始化状态,其中包括使程序计数器PC=0000H,这表明程序从0000H地址单元开始执行。单片机冷启动后,片内RAM为随机值,运行中的复位操作不改变片内RAM区中的内容,21个特殊功能寄存器复位后的状态为确定值。本次设计中AT89S52的复位端RST接一个开关实现上电复位。上电复位在单片机每次通电时执行。上电时利用电容C1的充电延迟特性,+5V的电压全部落在电阻R2上高电平输入RST脚,单片机复位操作,但电容C1充电接近结束时,电阻R2上电压趋于0,RST脚输入低电平,结束复位操作。手动复位开关在在单片机运行出错时用到,按下复位键K,高电平输入RST脚,强制单片机进行复位操作,系统化可以退出错误运行状态。电源端Vcc接5V电源,双功能控制端/Vpp端接高电平,单片机优先访问片内存储器,当访问范围大于某一范围时,再转去访问片外存储器。3.1.2键盘电路的设计本次设计遥控器共设置17个按键,其中包括一个学习/控制转换键和16个自定义控制键。16个控制按键中的每一个按键都可以学习一种红外信号实现一种功能,用户可以自己选择每一个键的功能,从而实现对电视机、空调、DVD等等家用电器的控制。为了尽量节省单片机引脚的使用,本次设计中的控制键盘选择使用矩阵键盘,由16个轻触按键按照4行4列排列。将行线所接的单片机的I/O口作为输出端,而列线所接的I/O口则作为输入。这样,当按键没有按下时,所有的输出端都是高电平,代表无键按下。行线输出是低电平,一旦有键按下,则输入线就会被拉低,这样,通过读入输入线的状态就可得知是否有键按下了。这种键盘外围元件少,扩充灵活,而且功耗低。键盘的硬件电路如图3-3所示。由图3-3可以看出,该键盘为4行4列(4×4)共16个键,使用8条I/O口作为控制线,其中P1.0、P1.1、P1.2、P1.3为扫描线,P1.4-P1.7作为列回复线。其工作原理是:首先使P1.4-P1.7为低电平,P1.0、P1.1、P1.2、P1.3为高电平,读取P1.4~P1.7的状态并存放在某个存储器的低4位中,此时高4位置零。然后使P1.4~P1.7为高电平,P1.0、P1.1、P1.2、P1.3为低电平,读取P1.0、P1.1、P1.2、P1.3的状态并存放在某个存储器的高4位,而低4位为低电平。最后,将这两个存储器存放的数值取逻辑后,再判断其结果产生按键的键值。这种键盘的优点是及其的省硬件,缺点是编程稍显复杂,运行键盘扫描程序时对单片机时间的占用相对比较多一点,不过这对单片机AT89S52来说影响不会很大,因为图3-3键盘硬件电路AT89S52有足够的RAM和图3-3键盘硬件电路存储空间去处理数据。3.1.3红外接收电路的设计本次设计中,在完全达到设计要求的情况下,尽量减小设计的难度,所以本次设计中的红外接收部分采用市场上常见的一体化红外接收芯片SM3381。而不是采用前置放大电路、解调电路、指令检出电路、记忆及驱动电路组成的红外接收电路;这种电路也能实现当红外接收器件收到遥控器发射二极管的红外光信号时,再将红外光信号变成电信号并放入前置放大器进行放大,再经解调后,由指令信号检出电路将指令信号检出,最后由记忆和驱动电路驱动执行电路。但是这种电路设计其它繁杂困难,接线多,元器件的参数匹配也相对比较复杂,并且最重要的一点是这种电路价格过高,甚至超过了一体化红外接收头的价格。所以本文不予采用。(1)红外一体接收头SM3811的概述本次设计中红外接收电路选用了市面上常见的一体化红外接收SM3381。SM3381集光电转换、解码和放大于一体,可以不接任何额外的外接原器件就可以输出需要的脉冲。SM3381平时输出为高电平,当有遥控信号输入时,其输出为高低电平脉冲,故接收时一个码由一个低电平后跟一个高电平构成。利用不同长短高低电平的组合,可构成不同的码。一体化红外接收器SM3381,该接收器是黑色环氧聚光透镜,能够滤除可见光干扰,集红外接收和放大于一体,内含红外线接收管、选频放大器和解调器,不需任何外接元件,就可以完成从红外遥控信号中分离出基带信号,输出与TTL电平兼容的所有工作。(电源引脚、地线和信号线)SM3381使用起来比较方便,电路结构简单。因为SM3381集光电转换、解码和放大于一体,可以不接任何外接元器件就可以解出需要的脉冲。此脉冲波可以直接被单片机捕捉并通过T0(P3.4)存储到单片机的数据存储器中,最后将学习结果存放到EEPROM中,还原时,AT89S52扫描按键,识别相应的键值,从EEPROM中取出对应键值的遥控基带信号,即二进制的高电平与低电平的维持时间,再把基带信号调制到由P3.3产生的38kHz的载波信号上。(2)红外接收电路原理图图3-4SM3381红外接收电路本次设计中采用SM3381一体化红外接收器,其电路原理图如图3-4所示。图3-4SM3381红外接收电路当一体化红外接收头检测到红外的信号时候,直接能将红外信号送给单片的P3.4引脚,单片机将经过一体化红外接收头转换的红外信号存储至自带的内存单元中待下次对应的控制按键被按的时候再原封不动的拿出来。3.1.4红外发射电路的设计本次设计中的红外发射电路中的载波信号直接由单片机模拟产生,经过三极管放大后,驱动红外发光二极管,在软件处理过程中应用延时程序模仿38kHz的红外载波信号,电路中放大三极管采用9013系列,红外发光二极管采用普通的遥控器中的器件。(1)9031系列三极管概述9013三极管是一种三端器件,内部有两个离的很近的背靠背排列的PN结(发射结和集电结)。两个PN结上加不同极性、不同大小的偏置电压时,半导体三极管呈现不同的特性和功能。在此的三极管实现放大的功能,是将微弱的电信号不失真的放大到需要的数值,为了增强电信号几乎每个电子系统中都要用到放大电路。9013技术指标:●集电极-发射极电压25V●集电极-基极电压45V●发射极-基极电压0.7V●集电极电流ICMax0.5A●耗散功率0.625W●工作温度-55℃~+150℃●特征频率150MHz三极管在实际的放大电路中使用时,还需要加合适的偏置电路。这有几个原因,首先是由于三极管BE结的非线性(相当于一个二极管),基极电流必须在输入电压大到一定程度后才能产生(对于硅管,常取0.7V)。当基极与发射极之间的电压小于0.7V时,基极电流就可以认为是0。但实际中要放大的信号往往远比0.7V要小,如果不加偏置的话,这么小的信号就不足以引起基极电流的改变(因为小于0.7V时,基极电流都是0)。在90××系列,包括低频小功率硅管9013(NPN)、9012(PNP)、低噪声管9014(NPN)、高频小功率管9018(NPN)等。它们的型号一般都标在塑壳上,而样子都一样,都是TO-92标准封装。在老式的电子产品中还能见到3DG6(低频小功率硅管)、3AX31(低频小功率锗管)等,它们型号都印在金属外壳上。我国生产的晶体管有一套命名规则:第一部分的3表示为三极管。第二部分表示器件的材料和结构,A:PNP型锗材料,B:NPN型锗材料,C:PNP型硅材料,D:NPN型硅材料。第三部分表示功能,U:光电管,K:开关管,X:低频小功率管,G:高频小功率管,另外,3DJ型为场效应管,BT打头的表示半导体特殊元件。常用小功率品种三极管参数(表3-2):参数型号极性PCM/MWICM/MAU(BR)CEO/VHFEICBO/UACOB/PF备注FT/MHZ9014NPN450100≧45600-1000≦0.05塑封150表3-2三极管的参数表3-2三极管的参数三极管有一个重要参数就是电流放大系数β。当三极管的基极上加一个微小的电流时,在集电极上可以得到一个是注入电流β倍的电流,即集电极电流。集电极电流随基极电流的变化而变化,并且基极电流很小的变化可以引起集电极电流很大的变化,这就是三极管的放大作用。三极管还可以作电子开关,配合其它元件还可以构成振荡器。首先:根据电路工作频率确定选用低频管或高频管。低频观特征频率FT≦2.5MHz高频管的fT达几千兆赫,甚至更高。其次:根据三极管实际工作的最大集电极电流Icm,管耗Pcm,以及电源电压Vcc选择合适的三极管,要选用的三极管的Pcm﹥Pcm,Icm﹥Icm,U(BD)CEO﹥Vcc。对于三极管β值的选择,β太大了容易引起自身的振荡,这样的三极管工作起来不稳定,一般选在β40-100之间。但是9014低噪声,高β值,β值达数百时温度性能很好,选用管子穿透电流ICEO越小越好,这样电路的稳定性好。三极管的主要参数反映了三极管各种性能的指标,是分析三极管电路和选用三极管的依据。电流放大系数,共发射极电流放大系数、共发射极直流电流放大系数、共发射极交流电流放大系数,共基极电流放大系数。Ic/mAIc/mAVce/VVce/V图3-5NPN型三极管共射极连接时的输出特性图3-5NPN型三极管共射极连接时的输出特性曲线集-基反向饱和电流ICBO:ICBO是指发射极开路,在集电极与基极之间加上一定的反向电压时,所对应的反向电流。它是少子的漂移电流。在一定温度下,ICBO是一个常量。随着温度的升高ICBO将增大,它是三极管工作不稳定的主要因素。穿透电流ICEO:ICEO是指基极开路,集电极与发射极之间加一定反向电压时的集电极电流。该电流好像从集电极直通发射极一样,故称为穿透电流。ICEO和ICBO一样,也是衡量三极管热稳定性的重要参数。频率参数是反映三极管电流放大能力与工作频率关系的参数,表征三极管的频率适用范围。共射极截止频率fβ,特征频率fT,三极管的β值是频率的函数,中频段β=βo几乎与频率无关,但是随着频率的增高,β值下降。当β值下降到中频段βO1/倍时,所对应的频率,称为共射极截止频率,用fβ表示,当三极管的β值下降到β=1时所对应的频率,称为特征频率。在fβ~fT的范围内,β值与f几乎成线性关系,f越高,β越小,当工作频率f>fT,时,三极管便失去了放大能力。如下图3-5所示为NPN型三极管共射极连接时的输出特性曲线。(2)红外发射电路原理图图3-69103系列红外发射硬件电路红外信号还原时,AT89S52扫描按键,识别相应的键值,从数据存储器中取出对应键值的遥控信号,即二进制的高电平与低电平的维持时间,再把信号调制到由I/O口产生的38kHz的载波信号上,通过红外发射单元电路将高低电平信号变成红外信号发射出去,从而实现学习和遥控的功能。系统的发射部分中的放大器采用9013系列三极管,红外发光二极管采用普通的遥控器中的器件。从单片机I/O口出来的高低电平信号经过三极管的放大后送给红外二极管发射出去,实现控制作用。发射电路的输入端接在单片机的P3.3口,原理图如图如图3-6所示。图3-69103系列红外发射硬件电路3.1.5语音提示电路的设计本次设计中的遥控器较以前的学习型遥控器的一个很大的优点就是设计了语音提示这一功能,语音提示功能能够直接指导使用者操作遥控器,省去了一边看说明书一边操作的麻烦,给了使用者极大的方便,该设计中语音提示功能采取语音芯片来实现。该设计中予以芯片采用采用一体化语音模块ISD1420。(1)语音芯片ISD1420的概述语音芯片ISD1420是语音处理集成电路,ISD1420芯片型号的最后2位数字表示语音录放时间的长度。录放音时间最长为20s。这种语音芯片内部有基准时钟源,以单一电源+5V供电。芯片的录放次数可达10万次,外围元件就可以构成一个录放音电路。在芯片内存储的语音信息可保存100年。配合相应的在录音和放音时可以通过按键控制,极其方便。ISD1420为美国ISD公司出品的优质单片语音录放电路,由振荡器、语音存储单元、前置放大器、自动增益控制电路、抗干扰滤波器、输出放大器组成。一个最小的录放系统仅由一个麦克风、一个喇叭、两个按钮、一个电源、少数电阻电容组成。录音内容存入永久存储单元,提供零功率信息存储,这个独一无二的方法是借助于美国ISD公司的专利--直接模拟存储技术(DASTTM)实现的。利用它,语音和音频信号被直接存储,以其原本的模拟形式进入EEPROM存储器.直接模拟存储允许使用一种单片固体电路方法完成其原本语音的再现.以语音质量优胜,而且断电语音保护。(2)语音提示电路原理图语音芯片的放音控制电平触发端即23、24管脚分别接在单片机P2.1、P2.0口,语音芯片的放音控制端引脚T0~T7分别接单片机的P0.0~P0.7。遥控器中需要的提示的内容已经录在语音芯片ISD1420想对应的存储EEPROM中,所以在本次设计中语音ISD1420的录音部分是不要用的,也就是说,语音芯片ISD1420的跟录音有关的引脚都不要用到。单片机通过P0口来选择将要播放的声音,通过P2.0、P2.1来控制播放的开始和结束。语音模块的电路原理图3-7如图所示。图3-7ISD1420语音模块硬件电路图3-7ISD1420语音模块硬件电路3.1.6LED显示电路的设计本次设计中的显示模块采用一个由7个发光二极管的组成的数码管来设计。这种数码管俗称七段数码管,制造时LED数码管的a、b、c、d、e、f、g做成条形成为段,按照8字形摆放。图3-8LED显示模块电路原理图本次设计中的数码管采用共阴极数码管设计,其公共端需加低电平,在需要点亮的段加高电平。本次设计中的数码管只要显示0和1,所以对这个数码管的引脚接线可以重新设计以节省I/O口,并且简化设计。我采用的方案是com端接低电平,数码管a、b、c、d引脚共同接在单片机P2.2引脚上,数码管e、f引脚共同接在单片机p2.3引脚上面,数码管g引脚接在地端。显示0的时候单片机I/O口P2.2和P2.3都送高电平,表示正在接收红外信号;显示1的时候单片机I/O口P2.2送低电平P2.3送高电平,表示遥控器正在发送红外信号。所以本次设计中经过简化的LED模块实现起来时比较简单的,它的接线电路图如图3-8所示。图3-8LED显示模块电路原理图3.1.7遥控器系统总体电路图的管脚说明P1.0~P1.7口接按键;P0.0~P0.7以及P2.0和P2.1口接语音芯片,控制着语音芯片的放音,以指导操作者遥控器的当前状态;P2.2和P2.3口接LED显示模块,用于指示遥控键的操作,遥控器发射红外信号时显示0,进入学习功能时接收红外信号时显示1;第9引脚(RST)为单片机的复位引脚,采用简单的RC上电复位电路,并且加入手动复位按钮,用来对单片机出错时进行复位;第12引脚为单片机中断输入口,用于工作方式的转换控制,当该引脚为低电平时,系统进入学习状态;第14引脚用于红外线接收解码器的输出信号输入;第15引脚为遥控码红外调制信号的输出口,输出38kHz的方波脉冲;第18、19引脚接12MHz晶振。P2.2和P2.3接七段LED数码管。3.2红外接收控制器系统的硬件电路设计本次设计中的红外接收控制部分具体是设计一个红外窗帘接收控制器,该设计也是基于单片机AT89S52设计,主要由AT89S52,一体化红外接收头,中间触点,边缘触点,继电器和马达组成。系统能够接收遥控器发射的红外信号实现,经过单片机的解码输出控制信号给马达实现控制窗帘的遥控开启和关闭。3.2.1二进制信号的编码说明红外遥控器发射的遥控编码脉冲由前导码、系统码、功能码和功能反码组成。前导码是一个遥控码的起始部分,由一个高电平和一个低电平组成,作为接收数据的准备脉冲,这些编码是经40kHz的载波脉宽调制发射出去。通过分析大量不同类型的红外遥控码波形,遥控码的数据帧间歇宽度均为10ms以上,前导码的高电平平均为5ms以上,通常为9ms左右。编码在10us和5ms之间,以简化设计,下图3-9为编码脉冲信号。图3-9图3-9编码脉冲信号图3-10二进制信号的编码当红外发射头端有38kHz方波脉冲时.红外接收头输出就会变低,而平时无红外信号输人时,红外接收头输出为高电平,故可采用不同的脉冲宽度来实现二进制信号的编码,并发送单片机来完成编码时,二进制信号中的低电平“0”,其特征是脉冲中低电平与高电平的宽度等于0.5ms,也就是说可以利用发送单片机在红外发射头上先保持0.5ms、不发38kHz方波脉冲.然后再发0.5ms的38kHz方波脉冲,这样,接收单片机的红外接收头输出端便会产生图3-10(a)所示的编码“0”的波形;而二进制信号中的高电平“1”的特征是脉冲中高电平的宽度等于0.5ms,而低电平的宽度是1ms也就是说利用发送单片机在红外发射头上先保持0.5ms不发38kHz方波脉冲,然后再发l.0ms,的38kHz方波脉冲,这样,接收单片机的红外接收头输出端便会产生图3-10(b)所示的编码“1”的波形。图3-10二进制信号的编码红外发射头的波形红外接收头的输出波形本系统中红外遥控器共发射3种命令编码,本设计中假设控制窗帘部分的编码分别为:打开窗帘编码0110B;关闭窗帘编码1000B;停止窗帘马达编码1001B。现以打开窗帘编码的解调为例,当遥控器部分检测到打开键按下时。便通过红外发射头发射命令编码0110B,此编码格式由起始位和数据位组成。发射编码的过程是首先在红外发射头上保持产生3ms的38kHz方波脉冲(也就是产生起位),然后发送数据位,如发射“0",则在红外发射头上先保持0.5ms不发38kHz:方波脉冲,然后再发0.5ms的38kHz方波脉冲;发射"1”时,在红外发射头上先保持0.5ms不发38kHz方波脉冲,然后再发1ms的38kHz方波脉冲。红外接收头将二进制信号接收并解调成高低电平便于单红外发射头的波形红外接收头的输出波形图3-11为二进制信号的解调原理示意图片机识别,图3-11为二进制信号的解图3-11为二进制信号的解调原理示意图调原理示意图。3.2.2红外接收控制系统的工作原理家庭里面一般的窗帘是从中间向两边打开,所以这里需要设计两个触点,一个在窗帘轨道的正中间,另外两个则在窗帘轨道的最左端或者最右端,用于检测窗帘所处的位置,并且把信息反馈给单片机,从而让单片机知道知道窗帘的开关情况以发出正确的指令。功能过程如下:控制接收器里面的单片机检测到有红外信号时(既红外接收头有低电平输入)通过P2.0读出红外接收头收到的编码,并将此编码分别与打开编码0110B、关闭键编码1000B、停止键编码1001B相比较。当接收到的是打开键编码时,我们设置动作标志寄存器actflag=1,并通过P0.5口检测边缘触点(即判断窗帘是否已完全打开),若P0.5口为高电平,则窗帘还未完全打开,此时可以置P2.2口为高电平,P2.2口为低电平从而控制马达正转打开窗帘;若P0.5口为低电平,则窗帘已完全打开,此时可以置P2.3口为低电平,P2.2口应为低电平,从而关闭马达并设置动作标志寄存器actflag=0。而当接收到的是关闭键编码时,则可设置动作标志寄存器actflag=2,通过P0.4口检测中间触点(即判断窗帘是否已完全关闭),若P0.4口为高电平,则表示窗帘还未完全关闭,此时可以置P2.3口为低电平,P2.2日为高电平从而控制马达反转关闭窗帘;若P0.4日为低电平则窗帘已完全关闭,此时可以置P2.3口为低电平,P2.2口也为低电平,从而关闭马达并设置动作标志寄存器actflag=0当接收到的是停止键编码时,可设置动作标志寄存器actflag=0,并置P2.3口为低电平,P2.2口也为低电平从而关闭马达。如果接收控制器部分的单片机未检测到红外线信号产生(即P2.0为高电平时),则可调用马达控制子程序(即根据动作标志寄存器actflag的值)进行马达控制。3.2.3接收端电路的总体电路管脚说明P2.0接一体化红外接收器;P2.2P2.3分别接反向驱动器MC1413第五管脚和第四管脚;P0.4P0.5分别接中间触点和边缘触点。第9引脚(RST)为单片机的复位引脚,采用简单的RC上电复位电路,并且加入手动复位按钮,用来对单片机出错时进行复位;第18、19引脚接12MHz晶振。

第四章低成本家居系统程序的设计单片机的程序设计有其自身的特点。在单片机系统中,硬件与软件紧密结合,由于硬件电路的设计不具有通用性,所以必须根据具体的硬件电路来设计对应的软件,硬件设计的优劣直接影响到软件设计的难易,软件设计的优劣又直接影响到硬件的发挥。在很多时候,软件可以替代硬件的功能,当然,需要付出额外占用CPU时间的代价。软件程序的设计是根据硬件电路图的连接和各个元器件的功能进行设计。在编写软件时,按各个程序的功能将软件细分为各个功能模块,再通过主程序的调用来实现整个软件系统。而一般编写的程序都是根据事前所用的流程图来编写的,而且,流程图中也包含了对设计所得结果的要求,因此,流程图的设计直接影响到源程序的设计。4.1主程序的设计图4-1系统主程序流程图主程序是软件设计的总体框架,因此主程序流程图设计的好坏就决定了整个系统化程序编写的好坏。一般来说主程序的功能主要是检查一下各环节的工作情况,最主要的是检查模拟量通道是否正常工作。所以系统的主程序应该是简单而且高效最好。本次设计中的主程序主要是完成单片机的开机自检,以及进行键盘刷新扫描,一旦检测到有键按下立刻进行按键判别,如果检测到是学习键被按下,则调用学习子程序,调用红外学习子程序进行信号的检测转换与存储,完成后又跳转到按键检测状态,等待下一次按键的产生。如果检测到时发射键被按下,图4-1系统主程序流程图则转入红外发射部分,系统调用红外发射子程序,将系统中已经存储的红外信号信息通过单片机的转换,再经过单片机I/O口通过三极管放大后输出给红外发射二极管,因此主程序在整个程序设计中起到了至关重要的作用。系统主程序流程图如图4-1所示,从图可以看出系统开机时先进行开机自检程序,主要是利用上电复位来实现,自检完成之后马上进如到键盘扫描程序,扫描键盘有无被按下,一旦确认键盘上某一个键被按下,系统马上转入识别按键,然后又紧接着进入该键处理程序,如果识别为学习/控制转换键则转入学习状态,如果是控制键则转入红外发送状态。在完成这些步骤的同时系统还会分别调用显示子程序和语音帮助子程序来完成显示和语音帮助功能。4.2键盘程序的设计4.2.1键盘子程序的设计图4-2为键盘子程序流程图在本次设计中判别键盘上有无键闭合,其方法是使首先置P1.4-P1.7为低电平,置P1.0、P1.1、P1.2、P1.3为高电平,读取P1.4~P1.7的状态并存放在某个存储器的低4位中,此时高4位置零。然后使P1.4~P1.7为高电平,P1.0、P1.1、P1.2、P1.3为低电平,读取P1.0、P1.1、P1.2、P1.3的状态并存放在某个存储器的高4位,而低4位为低电平。最后,将这两个存储器存放的数值取逻辑后,再判断其结果产生按键的键值,图4-2为键盘子程序流程图。图4-2为键盘子程序流程图假设系统中自定义键S1按键被按下。键盘子程序运行的时候先使P1.4-P1.7为低电平,置P1.0、P1.1、P1.2、P1.3为高电平,读取到P1.4~P1.7的状态为“0001”并存放在某个存储器的低4位中;然后使P1.4~P1.7为高电平,P1.0、P1.1、P1.2、P1.3为低电平,读取到P1.0、P1.1、P1.2、P1.3的状态“1000”并存放在某个存储器的高4位,此时低4位为低电平,以此类推系统的按键对应“键值”表如表4-1所示。这样按照上表中的数据通过对这两个数据取逻辑后,就可以很轻松的判断被按的键是哪一个键了。键号低四位高四位健号低四位高四位S110000001S910000100S201000001S1001000100S300100001S1100100100S400010001S1200010100S510000010S1310001000S601000010S1401001000S700100010S1500101000S800010010S1600011000表4-1键盘逻辑值对应表表4-1键盘逻辑值对应表4.2.2键盘连击现象及处理当我们按下某个键时,对应的功能便会通过键盘分析程序得以执行,如果在操作者释放之前,对应的功能多次执行,如同操作者在连续不断的操作该键一样,这种现象就称为连击。连击先可用图4-3所示流程图的软件方法来解决:当某个键按下时,首先进行软件去抖处理,确认键被按下后,便执行与该键相对应的功能,执行完后不是立即返回,而是等待键释放之后再返回,使每一次按键只被响应一次,从而达到避免连击的目的。如果把连击现象加以利用,有时会给操作者带来便利。例如在某些仪器中。因设计的按键很少,没有安排0~9数字键,只设置了一个调整键,这时需要采用加1(或者减1)的方法来调整有关参数,但当调整量较大时就需要多次按键,使操作者很不方便。如果允许存在连击现象,我们只要按住键不放,参数就会不停的加1(或者减1),会让操作比较方便、快捷。具体实现流程图如图4-4所示,其中加入的延时环节是为了控制连击的速度。4.3学习子程序的设计遥控码的学习处理程序主要是将遥控器发出的脉冲码宽一次存入内存单元,存放规则为偶数地址单元存放高电平脉宽数据,奇数地址存放低电平脉宽数据。定义文件中划了206个单元用于存放脉宽数据,符合常用遥控器的最大码长要求。图4-5遥控码读入处理程序流程图本次设计中当学习键被按后,系统马上会产生中断,转入学习子程序。在遥控器的学习过程中,有几个过程需要注意的。当中断开始后一定要对脉宽计数器进行初始化,否则将无法进行红外信号脉冲的计数。此外遥控器的控制信号编码格式前面已经提到过,包括前导码、系统码、功能码、功能反码,在遥控器学习过程中首先要检测红外信号的前导码,有前导码的信号才是一个真正的红外信号,所以若没有前导码则系统将继续搜索前导码,直到检测到真正的前导码或者结束学习。当系统检测到前导码后,保存前导码低电平计数器的值,后面信号的电平脉宽计数值也一并保存。这样一个完整的红外信号就被学习或者说复制下来了。遥控码读入处理程序流程图如图4-图4-5遥控码读入处理程序流程图4.4LED显示子程序的设计图4-6LED显示子程序设计本次设计中的LED显示比较简单,只要在发射的时候显示“0”,接收也就是学习的时候显示“1”就可以了,所以本次设计中的显示数码管的管脚是经过重新设计的,本次设计中是将数码管管脚a,b,c,d一起接在单片机P2.3上面,将e,f接在单片机P2.2上面,数码管的g管脚接地,这样接法不仅能够实现本次设计的要求:在P2.3、P2.2都送高电平的时候显示“0”,在P2.3送低电平P2.2送高电平的时候显示“0”。LED显示子程序流图4-6LED显示子程序设计程图如图4-6所示。4.5语音子程序的设计一般在用学习型遥控器的时候,一般都会在用遥控器学习功能的时候要一步一步按照说明书来操作,这样就比较复杂且难学,本次设计中就采用了语音芯片来播放语音提供语音帮助,从而提高学习的额成功率。本次设计中语音帮助主要集中在学习功能中,因为当遥控器不进行学习功能的时候如果还总是有语音提示这就不会提供到什么帮助,相反这种提示可能还会变成噪音困扰操作者,所以本次设计中的语音提示是在遥控器进入到学习功能时候才开始。语音提示包括:语音1:“进入学习状态请选择一个按键”,语音2:“请将将要被学习的遥控器与本遥控器相隔10cm左右在同一水平面对准,并按下被学习的按键”,语音3:“学习完成,请退出学习”语音4:“学习没有完成,请重试”。这几句话都预先录制好存放在语音芯片ISD1420的内存地址单元中,语音提示子程序的流程图如图4-7所示。图4-7语音提示子程序的流程图图4-7语音提示子程序的流程图

4.6红外接收控制器的程序设计图4-8红外接收控制器主程序流程图本次设计中的红外接收控制器是红外窗帘接收控制器,其主程序流程图如图4-8所示。系统的工作原理是当控制接收器检测到有红外信号,读出接收到的编码,并将此编码分别与打开编码0110B、关闭键编码1000B、停止键编码1001B相比较。当接收到的是打开键编码时,我们设置动作标志寄存器actflag=1,并通过P0.5口检测边缘触点(即判断窗帘是否已完全打开),若P0.5口为高电平,则窗帘还未完全打开,此时可以置P2.2口为高电平,P2.2口为低电平从而控制马达正转打开窗帘;若P0.5口为低电平,则窗帘已完全打开,此时可以置P2.3口为低电平,P2.2口应为低电平,从而关闭马达并设置动作标志寄存器actflag=0;而当接收到的是关闭键编码时,则可设置动作标志寄存器actflag=2,通过P0.4口检测中间触点(即判断窗帘是否已完全关闭),若P0.4口为高电平,则表示窗帘还未完全关闭,此时可以置P2.3口为低电平,P2.2日为高电平从而控制马达反转关闭窗帘;若P0.4日为低电平则窗帘已完全关闭,此时可以置P2.3口为低电平,P2.2口也为低电平,从而关闭马达并设置动作标志寄存器actflag=0。当接收到的是停止键编码时,可设置动作标志寄存器actflag=0,图4-8红外接收控制器主程序流程图并置P2.3口为低电平,P2.2口也为低电平从而关闭马达。如果接收控制器部分的单片机未检测到红外线信号产生(即P2.0为高电平时),则可调用马达控制子程序(即根据动作标志寄存器actflag,的值)进行马达控制。马达控制子程序的流程图如图4-9所示。图4-9马达子程序流程图 图4-9马达子程序流程图

结束语大学时间走的飞快,来不及感叹,大学生活已近尾声,四年多的努力与付出,随着本次论文的完成,也将要划下完美的句号。回想2013年3月,学校组织论文抽签选题,经过抽签排序选题之后我确定了我的论文题目:低成本自动化家居控制系统的设计,之后就开始了我的毕业论文工作,开始做开题报告,调研报告的时候,我便立刻着手资料的收集工作中,当时面对浩瀚的书海和网络资源真是有些茫然,不知如何下手,但是后来自己慢慢的去分析了之后,终于使我对自己现在的工作方向和方法有了基本的大致了解,知道了改往哪个方面去下手。有了思路和方法之后的工作就相对要简单一些,设计的进程也明显加快了。当然,本次毕业设计过程当中不乏有老师的指导,和同学的无私的帮助。时至今日,论文基本完成。从最初的茫然,到慢慢的进入状态,再到对思路逐渐的清晰,整个写作过程难以用语言来表达。历经了几个月的奋战,紧张而又充实的毕业设计终于落下了帷幕。这段日子的经历和感受,使我感慨万千,在这次毕业设计的过程中,在尝过了艰辛的同时,我也拥有了无数难忘的回忆和收获。通过本次课程设计较系统地掌握有关单片机控制的设计思想和设计方法,主要对AT89S52的结构、功能、内部资源和加以应用的知识得到学习。通过这次对学习型红外遥控器及窗帘红外接收控制端的设计,让我了解了关于学习型红外线遥控器及接收控制端的原理,也让我了解了设计电路的辛苦与乐趣。在此次的遥控器及接收控制端的设计过程中,使我更进一步地熟悉了各芯片的结构及各芯片的工作原理和其具体的使用方法,同时为今后的实践应用打下了基础。此外,通过本次毕业设计,让我对各种电路原理都有了大概的了解,也学会了常用原理图绘图软件Protel99SE的使用。所以说,对于这些电子,还是应该自己动手实际操作才会有深刻理解,才会有收获。参考文献[1]曾屹.单片机原理和应用[M].湖南:中南大学出版社,2009,15-20[2]韩志军,沈晋源,王振波.单片机应用系统设计——入门向导与设计实例[M].北京:机械工业出版社,2005,50-55[3]吕俊芳.传感器接口与检测仪器电路[M].北京:北京航空航天大学出版社,1994,10-50[4]魏志清.可编程控制器应用技术[M].北京:电子工业出版社,1995,30-40[5]洪志刚.单片机应用系统设计[M].北京:机械工业出版社,2011,1-25[6]张晓虎,刘洁.基于单片机的红外窗帘控制设计[J].陕西:中国学术期刊电子杂志社,2005(12):20-22[7]张福学.现代实用传感器电路[M].北京:中国计量出版社,1997,56-58[8]张延琪.常用电子电路280例[M].北京:中国电力出版社,2004,40-56[9]邱德润,陈日新,曾喆昭.信号系统与控制理论[M].北京:北京大学出版社,2009[9]康华光.电子技术基础[M].北京:高等教育出版社,2009,102-150[10]王兆安,刘进军编著.电力电子技术[M].北京:机械工业出版社,2009,24-26[11]胡寿松.自动控制原理[M].北京:科学出版社,2007,65-80[12]戴永.微机控制技术[M].湖南:湖南大学出版社,2008,50-55[13]于勇,戴佳.51单片机实例精讲[M].北京:电子工业出版社,2007,98-103[14]邱关源.电路[M].北京:高等教育出版社,2006,45-65

致谢本论文设计在张晓虎老师的悉心指导和严格要求下业已完成,从课题选择到具体的写作过程,论文初稿与定稿无不凝聚着张晓虎老师的心血和汗水,在我的毕业设计期间,张晓虎老师为我提供了种种专业知识上的指导和一些富于创造性的建议,张老师一丝不苟的作风,严谨求实的态度使我深受感动,没有这样的帮助和关怀和熏陶,我不会这么顺利的完成毕业设计。在此向张晓虎老师表示深深的感谢和崇高的敬意!在临近毕业之际,我还要借此机会向在这四年中给予我诸多教诲和帮助的各位老师表示由衷的谢意,感谢他们四年来的辛勤栽培。不积跬步何以至千里,各位任课老师认真负责,在他们的悉心帮助和支持下,我才能够很好的掌握和运用专业知识,并在设计中得以体现,顺利完成毕业论文。同时,在论文写作过程中,我还参考了有关的书籍和论文,在这里一并向有关的作者表示谢意,此外,我还要感谢同组的各位同学以及我的各位室友,在毕业设计的这段时间里,如果不是你们无私的腾出出宝贵的时间来帮助我,我也就根本你完成不了毕业设计,在毕业设计过程中你们还给了我很多的启发,提出了很多宝贵的意见,对于你们帮助和支持,在此我表示深深地感谢!最后我还要感谢我的父母,如果不是他们含辛茹苦的把握养大,有省吃俭用的供我上大学,我也根本没有机会迈进大学的门槛。他们对我无私奉献和无微不至的关怀不是语言能够表达出来的,我将会用我的今生去报答他们。

附录A遥控器及红外接收控制器总体原理图附录B源程序RXINBITP2.0TXZAIBITP2.2TXOUTBITP2.1KEY_SIGNBIT20H;为0按键错误,为1按键正确RXTX_SIGNBIT21H;为0是为发射状态,为1是为接收状态ISP_DATADATA0E2H;ISP功能寄存器定义ISP_ADDRHDATA0E3HISP_ADDRLDATA0E4HISP_CMDDATA0E5HISP_TRIGDATA0E6HISP_CONTRDATA0E7HISP_CMD_NOEQU0;操作数ISP_CMD_READEQU1ISP_CMD_PROGRAMEQU2ISP_CMD_ERASEEQU3WAIT_TIMEEQU1;等待时间ZHILEQU30HZHIHEQU31HGESHUEQU32HJISHUEQU33HKEY_WORDEQU34HKEY_VALUEEQU35HADDRHEQU36HADDRLEQU37HTX_GESHUEQU38HORG0000HLJMPSTARTORG000BHLJMPT0INORG001BHLJMPT1INORG0100HSTART:MOVSP,#10HCLRRXTX_SIGNLJMPKEY_MAINKEY_MAIN:LCALLSCAN_KEY;检测有没有单个按键按下MOVA,KEY_WORD CJNEA,#00H,NEXT1 LJMPKEY_MAINNEXT1:JNBKEY_SIGN,KEY_MAINMOVKEY_VALUE,A LCALLRE_DELAY;消抖时间20ms LCALLSCAN_KEY;是否依然是按下的 MOVA,KEY_WORD CJNEA,#00H,NEXT2 LJMPKEY_MAINNEXT2:JNBKEY_SIGN,KEY_MAINCJNEA,KEY_VALUE,KEY_MAINRELEASE:LCALLSCAN_KEY;查看是否放开按键了 MOVA,KEY_WORD CJNEA,#00H,RELEASEMOVDPTR,#TAB;执行相应的程式 CLRC MOVA,KEY_VALUE ADDA,KEY_VALUE JMP@A+DPTRTAB:AJMPKEY_0AJMPKEY_1AJMPKEY_2 AJMPKEY_3 AJMPKEY_4 AJMPKEY_5 AJMPKEY_6 AJMPKEY_7 AJMPKEY_8 AJMPKEY_9 AJMPKEY_10 AJMPKEY_11 AJMPKEY_12 AJMPKEY_13 AJMPKEY_14 AJMPKEY_15 AJMPKEY_16KEY_0:LJMPKEY_MAIN;无效的按健值KEY_1:JNBRXTX_SIGN,T1RX;接收发送键设定键,P1灯亮为接收存储状态,灯灭是为发射状态T1TX:CLRRXTX_SIGNMOVP1,#0FFHLJMPKEY_MAINT1RX:SETBRXTX_SIGNMOVP1,#00HLJMPKEY_MAINKEY_2:MOVADDRH,#20HMOVADDRL,#00HJBRXTX_SIGN,KEY2_RXKEY2_TX:LJMPTX_STARTKEY2_RX:LJMPRX_STARTKEY_3:MOVADDRH,#22HMOVADDRL,#00H JBRXTX_SIGN,KEY3_RXKEY3_TX:LJMPTX_STARTKEY3_RX:LJMPRX_STARTKEY_4:MOVADDRH,#24HMOVADDRL,#00H JBRXTX_SIGN,KEY4_RXKEY4_TX:LJMPTX_STARTKEY4_RX:LJMPRX_STARTKEY_5MOVADDRH,#26HMOVADDRL,#00H JBRXTX_SIGN,KEY5_RXKEY5_TX:LJMPTX_STARTKEY5_RX:LJMPRX_STARTKEY_6:MOVADDRH,#28HMOVADDRL,#00H JBRXTX_SIGN,KEY6_RXKEY6_TX:LJMPTX_STARTKEY6_RX:LJMPRX_STARTKEY_7:MOVADDRH,#2AHMOVADDRL,#00H JBRXTX_SIGN,KEY7_RXKEY7_TX:LJMPTX_STARTKEY7_RX:LJMPRX_STARTKEY_8:MOVADDRH,#2CHMOVADDRL,#00H JBRXTX_SIGN,KEY8_RXKEY8_TX:LJMPTX_STARTKEY8_RX:LJMPRX_STARTKEY_9:MOVADDRH,#2EHMOVADDRL,#00H JBRXTX_SIGN,KEY9_RXKEY9_TX:LJMPTX_STARTKEY9_RX:LJMPRX_STARTKEY_10:MOVADDRH,#2EHMOVADDRL,#00H JBRXTX_SIGN,KEY10_RXKEY10_TX:LJMPTX_STARTKEY10_RX:LJMPRX_STARTKEY_11:MOVADDRH,#2EHMOVADDRL,#00H JBRXTX_SIGN,KEY11_RXKEY11_TX:LJMPTX_STARTKEY11_RX:LJMPRX_STARTKEY_12:MOVADDRH,#2EHMOVADDRL,#00H JBRXTX_SIGN,KEY12_RXKEY12_TX:LJMPTX_STARTKEY12_RX:LJMPRX_STARTKEY_13:MOVADDRH,#2EHMOVADDRL,#00H JBRXTX_SIGN,KEY13_RXKEY13_TX:LJMPTX_STARTKEY13_RX:LJMPRX_STARTKEY_14:MOVADDRH,#2EHMOVADDRL,#00H JBRXTX_SIGN,KEY14_RXKEY14_TX:LJMPTX_STARTKEY14_RX:LJMPRX_STARTKEY_15:MOVADDRH,#2EHMOVADDRL,#00H JBRXTX_SIGN,KEY15_RXKEY15_TX:LJMPTX_STARTKEY15_RX:LJMPRX_STARTKEY_16:MOVADDRH,#2EHMOVADDRL,#00H JBRXTX_SIGN,KEY16_RXKEY16_TX:LJMPTX_STARTKEY16_RX:LJMPRX_STARTSCAN_KEY:CLRKEY_SIGNMOVKEY_WORD,#00HKEY1:MOVP3,#11111110B;第一行JBP3.4,KEY2JBKEY_SIGN,KEYWRONG1MOVKEY_WORD,#1 SETBKEY_SIGNKEY2: JBP3.5,KEY3 JBKEY_SIGN,KEYWRONG1 MOVKEY_WORD,#2 SETBKEY_SIGNKEY3:JBP3.6,KEY4JBKEY_SIGN,KEYWRONG1 MOVKEY_WORD,#3 SETBKEY_SIGNKEY4:JBP3.7,KEY5JBKEY_SIGN,KEYWRONG1 MOVKEY_WORD,#4 SETBKEY_SIGN LJMPKEY5KEYWRONG1:LJMPKEYWRONGKEY5:MOVP3,#11111101B;第二行JBP3.4,KEY6 JBKEY_SIGN,KEYWRONG2 MOVKEY_WORD,#5 SETBKEY_SIGNKEY6:JBP3.5,KEY7JBKEY_SIGN,KEYWRONG2 MOVKEY_WORD,#6 SETBKEY_SIGNKEY7:JBP3.6,KEY8JBKEY_SIGN,KEYWRONG2 MOVKEY_WORD,#7 SETBKEY_SIGNKEY8:JBP3.7,KEY9JBKEY_SIGN,KEYWRONG2 MOVKEY_WORD,#8 SETBKEY_SIGN LJMPKEY9KEYWRONG2:LJMPKEYWRONGKEY9:MOVP3,#11111011B;第三行JBP3.4,KEY10 JBKEY_SIGN,KEYWRONG3 MOVKEY_WORD,#9 SETBKEY_SIGNKEY10:JBP3.5,KEY11JBKEY_SIGN,KEYWRONG3 MOVKEY_WORD,#10 SETBKEY_SIGNKEY11:JBP3.6,KEY12JBKEY_SIGN,KEYWRONG3 MOVKEY_WORD,#11 SETBKEY_SIGNKEY12:JBP3.7,KEY13JBKEY_SIGN,KEYWRONG3 MOVKEY_WORD,#12 SETBKEY_SIGN LJMPKEY13KEYWRONG3:LJMPKEYWRONGKEY13:MOVP3,#11110111B;第四行JBP3.4,KEY14 JBKEY_SIGN,KEYWRONG4 MOVKEY_WORD,#13 SETBKEY_SIGNKEY14:JBP3.5,KEY15JBKEY_SIGN,KEYWRONG4 MOVKEY_WORD,#14 SETBKEY_SIGNKEY15:JBP3.6,KEY16JBKEY_SIGN,KEYWRONG4 MOVKEY_WORD,#15 SETBKEY_SIGNKEY16:JBP3.7,SCAN_ENDJBKEY_SIGN,KEYWRONG4MOVKEY_WORD,#16 SETBKEY_SIGN LJMPSCAN_ENDKEYWRONG4:LJMPKEYWRONGKEYWRONG:CLRKEY_SIGNSCAN_END:RETRE_DELAY:MOVR7,#5DE2:MOVR6,#10 DE1:MOVR5,#200 DJNZR5,$ DJNZR6,DE1 DJNZR7,DE2 RETRX_START:CLRP2.4;接收红外信号,存入外部扩展寄存器0~256CLRP2.6CLRP2.7CLRP2.2 CLRTXOUT MOVR1,#00HMOVR0,#00HMOVTMOD,#00010001B MOVTH0,#00H MOVTL0,#00H MOVTH1,#00H MOVTL1,#00HCLRET0 CLRET1 CLREA CLRTR0 CLRTR1LJMPRX_MAINRX_MAIN:MOVR0,#00HJBRXIN,$SETBTR0JUDGE1:JBTF0,RXENDJNBRXIN,JUDGE1 CLRTR0 SETBTR1 MOVA,TL0 MOVX@R0,AINCR0 MOVA,TH0 MOVX@R0,A INCR0 MOVTL0,#00H MOVTH0,#00H INCR1JUDGE2:JBTF1,RXEND JBRXIN,JUDGE2 CLRTR1 SETBTR0 MOVA,TL1 MOVX@R0,AINCR0 MOVA,TH1 MOVX@R0,A INCR0 MOVTL1,#00H MOVTH1,#00H INCR1 AJMPJUDGE1RXEND:CLRTR0CLRTR1 CLRTF0 CLRTF1MOVTL0,#00H MOVTH0,#00H MOVTL1,#00H MOVTH1,#00H MOVGESHU,R1 MOVR1,GESHU;取反转换重新存入外部扩展寄存器 MOVR0,#00HLOOP_CPL:MOVXA,@R0CPLA MOVX@R0,A INCR0MOVXA,@R0CPLA MOVX@R0,A INCR0 DJNZR1,LOOP_CPLLJMPISP_STORE ISP_STORE:LCALLISP_ERASEMOVISP_DATA,GESHU;将个数输入到ISP_EEPROM的第一位 MOVISP_ADDRH,ADDRH MOVISP_ADDRL,ADDRL CLREA MOVISP_CONTR,#WAIT_TIME ORLISP_CONTR,#10000000B MOVISP_CMD,#ISP_CMD_PROGRAM MOVISP_TRIG,#46H MOVISP_TRIG,#0B9H NOPMOVR1,GESHU MOVR0,#00HLOOP_WRITE:LCALLBYTE_WRITE;将扩展寄存器中的计时值依次放入ISP_EEPROM第二位开始的存储器中INCR0LCALLBYTE_WRITEINCR0DJNZR1,LOOP_WRITEMOVISP_CMD,#00H;ISP指令清零,防止误触发MOVISP_TRIG,#00HMOVISP_ADDRH,#00HMOVISP_ADDRL,#00Hmovp1,geshuLJMPKEY_MAINBYTE_WRITE:MOVXA,@R0MOVISP_DATA,AMOVISP_ADDRH,ADDRH INCR0 MOVISP_ADDRL,R0 DECR0 CLREA MOVISP_CONTR,#WAIT_TIME ORLISP_CONTR,#10000000B MOVISP_CMD,#ISP_CMD_PROGRAM MOVISP_TRIG,#46H

温馨提示

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

评论

0/150

提交评论