《红外遥控电控锁课程设计.doc》由会员分享,可在线阅读,更多相关《红外遥控电控锁课程设计.doc(28页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。
1、 应用科学学院电子系统设计课程设计实训报告姓 名:学 号:专业班级:指导教师:设计题目:红外遥控密码锁完成时间:功能(25%)实训(55%)设计报告(20%)总 评简易难度(15%)控制方式(10%)原理图(10%)装配图(10%)器件焊接(5%)软件控制(10%)功能实现(10%)质量评估(10%)格 式(5%)内 容(15%)指导教师签名: 摘 要 本文主要阐述一种基于51单片机和红外接收管的红外解码的单片机控制系统。文章详细介绍了红外遥控密码锁的硬件电路和软件设计。硬件部分利用红外接收头的输出接在AT89C52单片机INT1中断口,通过跳变沿触发的方式来触发单片机INT1中断,从而可以对
2、编码脉冲进行接收、存储和解码,然后和用户所设置的密码进行比较,来校对密码的正确与否,如果密码正确,伺服电机(步进电机)正反转进行开锁和关锁,同时,还有三个LED来对系统的复位、红外接收、电机转动状态进行指示。此外,为了防止密码泄露,该系统还支持用户重设密码,上电复位的起始密码为0123,正确输入密码后,用户可以更改密码。最后,为了防止遥控器失窃,非法人员多次试探尝试打开遥控锁,该系统还增加了错误报警功能,三次输入密码错误后,蜂蜜器持续鸣叫30秒进行报警。软件部分用C语言进行编程,采用模块化设计思想。该系统硬件电路简单,造价低廉,操作方便,完全符合设计要求,也具有很高的应用价值。例如可以作为汽车
3、车门锁(较常规的遥控锁更安全),也可以作为仓库和家用门锁等。关键词:单片机、红外、遥控、密码锁目 录1 绪言11.1 课题背景、发展及意义11.2 课程的具体要求及任务11.2.1 设计任务11.2.2 基本要求11.2.3 发挥部分12 红外遥控锁总体设计方案22.1 任务分析与实现22.2红外遥控锁硬件方案设计32.3 红外遥控锁软件方案设计43 红外遥控锁硬件电路设计方法及原理53.1红外遥控系统53.1.1 调制53.1.2发射系统63.1.3红外接收头原理图63.2 单片机的原理及应用73.2.1 单片机原理简介73.2.2 单片机最小系统的介绍73.2.3 单片机定时/计数功能的介
4、绍83.3 步进电机工作原理83.3.1 步进电机原理83.3.2 步进电机驱动电路93.4 LED指示电路93.5 蜂鸣器电路103.6 系统原理图及印刷板图103.6.1系统总原理图103.6.2 印刷版图114软件设计流程124.1全部软件135 系统的调试与分析135.1 硬件调试135.2 软件调试136 结论与展望146.1 结论146.2 展望14致谢15参考文献15附录115附录2161 绪言1.1 课题背景、发展及意义由于红外线遥控不具有像无线电遥控那样穿过障碍物去控制被控对象的能力,所以,在设计家用电器的红外线遥控器时,不必要像无线电遥控器那样,每套(发射器和接器)要有不同
5、的遥控频率或编码(否则,就会隔墙控制或干扰邻居的家用电器),所以同类产品的红外线遥控器,可以有相同的遥控频率或编码,而不会出现遥控信号“串门”的情况。这对于大批量生产以及在家用电器上普及红外线遥控提供了极大的方便。由于红外线为不可见光,因此对环境影响很小,再由红外光波动波长远小于无线电波的波长,所以红外线遥控不会影响其他家用电器,也不会影响临近的无线电设备。随着科技的进步,人们对物质生活的水平的要求也越来越高,以指代步,是人们对科技的要求。红外技术的发展和红外线的诸多特性,决定了它在短距里遥控上的应用。出于方便性和安全性和方便性的设计要求,我设计了红外遥控密码锁。1.2 课程的具体要求及任务1
6、.2.1 设计任务 利用单片机、红外遥控器、红外接收头、LED、蜂鸣器等设计一个红外遥控密码锁。 1.2.2 基本要求 1根据方案设计原理电路 2供电电压5V稳压电源,遥控最大操作距离8m。 3利用EDA仿真软件对设计电路进行仿真 1.2.3 发挥部分 连续输入密码输入N(N可以软件设定)次,实现可调报警功能。2 红外遥控锁总体设计方案 2.1 任务分析与实现 本设计的任务是:以AT89C52单片机为处理核心,用红外接收管接收来自遥控器的红外波形,经过接收管解调后转化成的脉冲送入单片机进行处理。红外波的解码是通过AT89C52单片机对红外接收头产生的信号的脉宽进行检测,从而判断接收到多少个0和
7、1,最后合成为4个字节的8位代码。通过软件编码,给该遥控器编写相应的初始化密码(启动系统是可以修改成任意的四位密码),然后通过解码来识别密码,以进行进一步的操作。 本系统总体思路如下:根据遥控器的按键编码值对遥控锁进行编程,从而设置开锁的初始化密码。当系统启动时,系统进入设置密码状态,LED1连续闪烁四次来指示该状态。在该状态下用户可以选择对初始化密码进行更改,也可以直接退出密码更改状态,即采用初始化密码。系统退出设置密码状态后即进入正常工作状态,此时,如果用户更改了初始密码,用户输入新的密码,步进电机正转90度开锁。为了使用方便,专门设置了一个按键关锁(电机反转)。采用初始密码的操作同上。如
8、果连续三次输入的密码均为错误,蜂鸣器会长鸣30秒报警(报警时间可以通过软件设定)。 要求达到的各项指标及实现方法如下:1. 利用红外接收头接收来自红外遥控器的编码波形,经红外接收头解调放大后的脉冲送入单片机进行处理。2. 对脉冲信号的高低电平的时间长短进行存储和计数。实现:通过软件编程,用单片机的定时和计数器对脉冲的高低电平进行计时和计数。3. 对数据进行处理,根据红外的编码方式以脉宽为0.565ms、间隔0.56ms、周期为1.125ms 的组合表示二制的“0”;以脉宽为0.565ms、间隔1.685ms、周期为2.25ms 的组合表示二进制的“1”。解码出的32位二进制码前16为位用户识别
9、码,能识别不同的电器设备,后16位为8 位操作码(功能码)及其反码。实现:利用软件编程,对数据进行处理得到相应按键对应的编码值。最终实现目标:对遥控器的按键值进行识别、存储和计数,然后和设定的密码组进行比较以识别密码和控制步进电机开关锁。总系统框图如图2.1.1所示。图2. 1.1 红外遥控锁系统框图 2.2红外遥控锁硬件方案设计 红外遥控锁,首先要解决是编码和解码的问题。编码部分采用编码芯片为HT6221的遥控器面板,当发射器按键按下后,即有遥控码发出,所按的键不同遥控编码也不同。这种遥控码具有以下特征:采用脉宽调制的串行码,以脉宽为0.565ms、间隔0.56ms、周期为1.125ms 的
10、组合表示二制的“0”;以脉宽为0.565ms、间隔1.685ms、周期为2.25ms 的组合表示二进制的“1”。上述“0”和“1”组成的32 位二进制码经38kHz 的载频进行二次调制以提高发射效率,达到降低电源功耗的目的,然后再通过红外发射二极管产生红外线向空间发射。HT6221 产生的遥控编码是连续的32 位二进制码组,其中前16 位为用户识别码,能区别不同的电器设备,防止不同机种遥控码互相干扰。该芯片的用户识别码固定为十六进制01H;后16位为8 位操作码(功能码)及其反码。UPD6121G 最多额128 种不同组合的编码。在解码的时候,可以通过单片机对红外接收头产生的信号的脉宽进行检测
11、,从而判断接收到多少个0和1,最后合成为4个字节的8位代码。接收部分,采用红外接收头和单片机系统。红外接收头把接收到的红外波形转化成红外脉冲,输入单片机,经过单片机接收和处理,读取按键值。 本设计用到的红外接收头来接收、放大和解调接收到的红外波,只要把该接收头的输出引脚连接单片机的外部中断口,就可以搭建简单的红外接收电路。通过对红外接收头输出的正负脉冲进行计时和计数,通过计算就可以得到按键编码对应的二进制数组。通过通过该数组获得按键值。利用红外接收头来接收红外编码信号,电路简单,很容易操作实现,硬件开销小。 红外信号收发系统的典型电路如图所示,红外接收电路通常被厂家集成在一个元件中,成为一体化
12、红外接收头。 内部电路包括红外监测二极管,放大器,限副器,带通滤波器,积分电路,比较器等。红外监测二极管监测到红外信号,然后把信号送到放大器和限幅器,限幅器把脉冲幅度控制在一定的水平,而不论红外发射器和接收器的距离远近。交流信号进入带通滤波器,带通滤波器可以通过30khz到60khz的载波,通过解调电路和积分电路进入比较器,比较器输出 高低电平,还原出发射端的信号波形。注意输出的高低电平和发射端是反相的,这样的目的是为了提高接收的灵敏度。 红外接收头的种类很多,引脚定义也不相同,一般都有三个引脚,包括供电脚,接地和信号输出脚。根据发射端调制 载波的不同应选用相应解调频率的接收头。 大体积红外接
13、收头P3388引脚说明 红外接收头内部放大器的增益很大,很容易引起干扰,因此在接收头的供电脚上须加上滤波电容,一般在22uf以上。 有的厂家建议在供电脚和电源之间接入330欧电阻,进一步降低电源干扰。 红外发射器可从遥控器厂家定制,也可以自己用单片机的PWM产生,家庭遥控推荐使用红外发射管(L5IR4-45)的可产生37.91KHz的PWM, PWM占空比设置为1/3, 通过简单的定时中断开关PWM, 即可产生发射波形。 2.3 红外遥控锁软件方案设计 通过软件控制单片机的功能是单片机的主要特点和优点,程序的设计要考虑合理性和可读性,遵循模块化设计的原则,采用自顶向下的设计方法。模块化设计使程
14、序的可读性好、修改及完善方便。 软件设计包括主程序,密码校验子程序,步进电机正反转子程序,定时器0和外部中断1初始化子程序,延时子程序,红外解码子程序,蜂鸣器子程序等等。 密码校验子程序用来将解码得到的密码数组和设定的密码数组进行比较,从而判断密码正误。 步进电机正反转子程序用来控制步进电机正反转,从而实现开关锁。 定时器0和外部中断一用来对定时器0和外部中断1进行初始化。红外解码程序用来将接收到的红外脉冲的时间数据转换成二进制表示的数据,然后进一步解码为按键编码值。3 红外遥控锁硬件电路设计方法及原理 3.1红外遥控系统 红外遥控的概述: 红外线的光谱位于红色光之外, 波长是0.761.5m
15、,比红光的波长还长。红外遥控是利用红外线进行传递信息的一种控制方式,红外遥控具有抗干扰,电路简单,容易编码和解码,功耗小,成本低的优点。红外遥控几乎适用所有家电的控制。 红外遥控系统的主要部分为调制、发射和接收,如图 所示: 图1 红外遥控系统3.1.1 调制红外遥控是以调制的方式发射数据,就是把数据和一定频率的载波进行“与”操作,这样既可以提高发射效率又可以降低电源功耗。 调制载波频率一般在30khz到60khz之间,大多数使用的是38kHz,占空比1/3的方波,如图2所示,这是由发射端所使用的 455kHz晶振决定的。在发射端要对晶振进行整数分频,分频系数一般取12,所以455kHz123
16、7.9 kHz38kHz。图2 载波波形 3.1.2发射系统 目前有很多种芯片可以实现红外发射,可以根据选择发出不同种类的编码。由于发射系统一般用电池供电,这就要求芯片 的功耗要很低,芯片大多都设计成可以处于休眠状态,当有按键按下时才工作,这样可以降低功耗芯片所用的晶振应该有 足够的耐物理撞击能力,不能选用普通的石英晶体,一般是选用陶瓷共鸣器,陶瓷共鸣器准确性没有石英晶体高,但通常 一点误差可以忽略不计。 红外线通过红外发光二极管(LED)发射出去,红外发光二极管(红外发射管)内部构造与普通的发光二极管基本相同,材料和普通发光二极管不同,在红外发射管两端施加一定电压时,它发出的是红外线而不是可
17、见光。 图3.1.2.1 射击输出驱动电路 图3.1.2.2 简单驱动电路如图3.1.2.1和图3.1.2.2是LED的驱动电路,图3a是最简单电路, 选用元件时要注意三极管的开关速度要快,还要考虑到LED的正向 电流和反向漏电流,一般流过LED的最大正向电流为100mA,电流越大,其发射的波形强度越大。 图3a电路有一点缺陷,当电池电压下降时,流过LED的电流会降低,发射波形强度降低,遥控距离就会变小。图3b所示的 射极输出电路可以解决这个问题,两个二极管把三级管基极电压钳位在1.2V左右,因此三级管发射极电压固定在0.6V左右, 发射极电流IE基本不变,根据IEIC,所以流过LED的电流也
18、基本不变,这样保证了当电池电压降低时还可以保证一定的遥 控距离。 3.1.3红外接收头原理图 红外接收头电路原理图如图3.1.3所示。图 3.1.3红外接收头电路原理图 3.2 单片机的原理及应用 3.2.1 单片机原理简介单片机是指集成在一个芯片上的微型计算机,也就是把组成微型计算机的各种功能部件,包括CPU、随机存储器RAM、只读存储器ROM、基本输入/输出接口电路。定时器/计数器等部件都制作在一块芯片上,构成一个完整的微型计算机从而实现微型计算机的基本功能。单片机内部结构示意图如图3.2.1所示。 图 3.2.1单片机内部结构示意图 3.2.2 单片机最小系统的介绍 AT89C52提供以
19、下标准功能:8K字节Flash闪速存储器,256字节内部RAM,32个I/O口线,3个16位定时/计数器,5个中断源,一个全双工串行通信口,片内具有振荡器及时钟电路。单片机最小系统如图3.4所示。图 3.2.2单片机最小系统 3.2.3 单片机定时/计数功能的介绍 AT89C52单片机定时/计数器的工作有两个特殊功能寄存器控制。TMOD用于设置其工作方式:TCON用于控制其启动和中断请求。 3.3 步进电机工作原理 3.3.1 步进电机原理步进电机是一种感应电机,它的工作原理是利用电子电路,将直流电变成分时供电的,多相时序控制电流,用这种电流为步进电机供电,步进电机才能正常工作,驱动器就是为步
20、进电机分时供电的,多相时序控制器。 虽然步进电机已被广泛地应用,但步进电机并不能象普通的直流电机,交流电机在常规下使用。它必须由双环形脉冲信号、功率驱动电路等组成控制系统方可使用。因此用好步进电机却非易事,它涉及到机械、电机、电子及计算机等许多专业知识。 步进电机作为执行元件,是机电一体化的关键产品之一, 广泛应用在各种自动化控制系统中。随着微电子和计算机技术的发展,步进电机的需求量与日俱增,在各个国民经济领域都有应用。 3.3.2 步进电机驱动电路 步进电机驱动电路原理图如图3.2.2所示。 图3.3.2 步进电机驱动电路原理3.4 LED指示电路LDE指示电路原理图如图3.4.1。图3.4
21、.1LED指示电路原理图3.5 蜂鸣器电路 蜂鸣器电路原理图如图3.5.1所示。图3.5.1 蜂鸣器电路原理图3.6 系统原理图及印刷板图3.6.1系统总原理图 系统总原理图如图3.6.1所示。 图3.6.1 系统总原理图图3.6.2 印刷版图 系统印刷板图如图3.6.2 图3.6.2 系统印刷板图4软件设计流程系统复位密码修改状态是否修改密码?是修改密码输入密码再次输入密码保存密码两次密码相?等?是否门禁状态否密码正确?开锁是否次数大三?否蜂蜜器报警是4.1全部软件相关代码见附录5 系统的调试与分析 5.1 硬件调试首先,找到所有所需的元器件并归类放好。然后将做好的PCB板放到电脑面前,对应
22、画好的PCB图纸,将原件一一对应的插入到板子上,并并稍稍固定以防止焊接过程中原件的掉落。原件放好后便可以拿到后面去一一焊接。焊接完毕后按要求调试。调试故障及原因分析如下。1.接收不到红外信号原因:红外接收头插反。调试过程:红外遥控对接收头按键,蜂鸣器不叫,说明红外接收管没有接收到红外信号,或者是程序没有正确处理红外信号。结论:红外接收管种类很多,但常用的只有两三种,这两三种输出引脚不同,使用的时候要正确识别。2.蜂鸣器叫声小原因:跟蜂鸣器串联的电阻过大调试:更换与蜂鸣器串联的电阻,换成阻值较小的电阻。结论:正确识别和读取色环电阻。 5.2 软件调试具体的说这个应该属于是软硬件联合调试,在硬件调
23、试好的情况下,调试软件应该还是比较容易的。调试故障及原因分析如下。1.只是灯没有正常工作 原因分析:三个LED指示灯有一个没有正常工作,经检查是坏的 结论:在焊接元件前要进行元件检测,确保元件是好的。2步进电机不工作 原因分析:在开发箱上别写的程序在移植到系统板上的时候没有修改所用的引脚。 结论:在开发箱上的程序,移植到自己的功能电路中时要认真检查所用的引脚,把该修改的地方要正确修改,确保移植无误。6 结论与展望 6.1 结论该课程的主要任务是开发一个以AT89C52单片机为核心的红外遥控密码锁。本设计主要分硬件部分和软件部分,硬件部分着重考虑硬件电路的简单性,故尽可能简单硬件电路,节省线路板
24、的空间,达到硬件电路最优化设计。软件采用C语言编写,采用模块化设计思想,程序可读性强,能满足设计要求,达到设计指标,实现了遥控开锁、关锁启动系统修改密码,多次输入错误报警等功能。速度本设计符合设计要求,操作简单,方便易用,功能性较强,具有一定的实践意义和使用价值,但也有一些不足,如没有设计忘记密码的应急措施和掉电保护功能,功能有待完善。 6.2 展望 本操作简单,易于实现。硬件部分采用的器件应用比较广泛,且价格低廉,如AT89C52单片机、红外遥控器、红外接收管、uln2003驱动芯片、步进电机、发光二极管等。这意味着所用的器件功能比较强大、稳定,尤其是本次设计的核心元件的核心元件AT89C5
25、2单片机,软件技术成熟。这类微处理器既可用作控制器有适合于做数据处理,而且成本低廉。软件采用模块化设计,可读性强,方便二次开发。 这个红外要空密码锁系统,具有较低的成本和稳定的可靠性,具有较好的开发前景。致谢 在本次设计过程中我获益匪浅,在当中我遇到了许多问题。比如在画图过程中,封装不会画,没有根据实物画,在PCB图连线时,线的粗细,焊盘的大小都没有设定,在同学的帮助下,最后成功画出了PCB与,并制作出了PCB板。调试过程中,在老师的帮助下,发现了不少问题,并都解决了。 在这我非常感谢他们,是他们帮助我顺利完成了我的设计。参考文献【1】 李朝青.单片机原理与接口技术.北京航空大学出版社,199
26、4【2】 刘灿军.使用传感器.国防工业出版社.2004【3】 何希才.传感器及其应用. 国防工业出版社.2004【4】 童诗白华成英主编. 模拟电子技术基础. 高等教育出版社。2006【5】 李金平 沈明山 姜余祥编著. 电子系统设计. 电子工业出版社2009附录1红外遥控锁元件清单附录2/*红外遥控锁全部程序*/#include #define uchar unsigned char#define uint unsigned intuchar code table1=0x08,0x10,0x20,0x40;/正转uchar code table2=0x40,0x20,0x10,0x08;/反
27、转sbit hw_cs=P33;/定义红外线接收器的输出引脚,INT1口sbit beep=P20; /蜂鸣器使能端sbit led0=P00; sbit led1=P01;sbit led2=P02;uchar hw_data33=0;uchar hw_code4=0;uchar hw_temp4=0;uchar mima5=0; /定义密码接收数组uchar mima_check15=1,1,1,1,1; /存放修改的密码uchar mima_check25=0,0,0,0,0; /存放修改的密码uchar mima_check=0x46,0x16,0x0c,0x18,0x5e;uchar
28、 p;uchar startflag; uchar hw_jsok; uchar hw_time;uchar mode_flag; /定义模式标志位,复位uchar direction_key; /旋转标志位uchar mima_st; /接收密码状态uchar check; /密码校验结果标志uchar _check; uchar direction; /电机旋转方向标志位uchar worning; /告警计数标识位uchar tms; /密码修改数组控制标志位uchar mc_flag=1; /密码修改标志位void init(); /定时器0和外部中断1初始化void delay(uc
29、har xms); /void beep_fun(); /蜂鸣器void hw_data_pro();void mima_fun();/密码接收函数void mima_check_fun(); /密码校验函数void mima_check_fun2();void motor(); /电机转动90度,正反方向(标志位来决定方向) main()uchar m,che,wor_time1,wor_time2;init(); beep_fun();/开机自检,蜂鸣器响,led0亮led0=0;che=10; /led0闪烁5次,等待修改密码while(che-)delay(5000);delay(50
30、00);delay(5000);led1=led1;delay(5000);delay(5000);delay(5000);led0=0;doif(hw_jsok=1)hw_data_pro();hw_jsok=0;if(hw_temp1=0xff)&(hw_temp0=0x00)for(m=0;m4;m+)hw_codem=hw_tempm; beep_fun();if(hw_code2=0x45) /电源键,接收状态清零uchar con=6; /led1闪烁3次,指示模式键有效tms=0; /数组状态计数mc_flag=1; while(con-)delay(5000);delay(50
31、00);delay(5000);led1=led1;delay(5000);delay(5000);delay(5000);led1=1;if(mc_flag=1)if(tms5)mima_check1tms+=hw_code2;led0=1; /输入一个密码led0闪烁一次delay(5000);delay(5000);led0=0; else tms=1;mc_flag=0;beep_fun(); /提示第1次输入密码完成beep_fun();beep_fun();beep_fun(); if(mc_flag=0) if(tms5) mima_check2tms+=hw_code2;led
32、0=1; /输入一个密码led0闪烁一次delay(5000);delay(5000);led0=0; else beep_fun(); /提示第2次输入密码完成 beep_fun(); beep_fun(); beep_fun(); mima_check_fun2(); /比较第1和第2次的输入结果 if(_check=4) /如果n=4,密码相同则进入确认 uchar i,com=6;_check=0; /清除密码校验结果mima_check10=0x46; /修正数组中的第一个数据for(i=0;i5;i+)mima_checki=mima_check1i;while(com-) /le
33、d1闪烁,指示修改密码成功delay(5000);delay(5000);delay(5000);led1=led1;delay(5000);delay(5000);delay(5000);led1=0; while(hw_code2!=0x07); /确认键退出密码修改,对应面板上的静音键che=10; /led0闪烁5次,退出修改密码while(che-)delay(5000);delay(5000);delay(5000);led2=led2;delay(5000);delay(5000);delay(5000);led2=1; while(1)if(hw_jsok=1)hw_data_
34、pro();hw_jsok=0;if(hw_temp1=0xff)&(hw_temp0=0x00)for(m=0;m4;m+)hw_codem=hw_tempm; beep_fun();if(hw_code2=0x45) /电机反转关门(按电源键)if(direction_key=0)direction_key=1; /将标志位设置为正转direction=0; /电机的方向改变,开门led2=0;/电机启动指示motor();/步进电机led2=1;/电机停止指示if(hw_code2=0x46)/mode键,负责密码数组复位,模式标志置位int i;for(i=0;i5;i+) /密码数组
35、清零mimai=0;mima_st=0; /密码接收状态清零mode_flag=1; /模式标志位置位i=6; /led1闪烁3次,指示模式键有效while(i-)delay(5000);delay(5000);delay(5000);led1=led1;delay(5000);delay(5000);delay(5000);led1=1; if(mode_flag)if(mima_st0;wor_time1-) for(wor_time2=50;wor_time20;wor_time2-)beep_fun(); /*密码校验函数*/void mima_check_fun()int i;che
36、ck=0;for(i=0;i5;i+)if(mimai=mima_checki)check+; /*密码校验函数2*/void mima_check_fun2()int i;_check=0;for(i=1;i5;i+)if(mima_check1i=mima_check2i)_check+;/*电机正反方向旋转函数*/void motor()uchar i,j=128;while(j-) for(i=0;i4;i+) if(direction)P2=table1i; delay(300);elseP2=table2i;delay(300); /*定时器0和外部中断1初始化 */void init() TMOD=0x02; /定时器0中断TH0=0x00;TL0=0x00; ET0=1;TR0=1;EX1=1; /外部中断1IT1=1; /下降沿触发EA=1; /开总中断