用24C04与1602LCD设计电子密码锁.doc

上传人:赵** 文档编号:50920006 上传时间:2022-10-16 格式:DOC 页数:31 大小:3.04MB
返回 下载 相关 举报
用24C04与1602LCD设计电子密码锁.doc_第1页
第1页 / 共31页
用24C04与1602LCD设计电子密码锁.doc_第2页
第2页 / 共31页
点击查看更多>>
资源描述

《用24C04与1602LCD设计电子密码锁.doc》由会员分享,可在线阅读,更多相关《用24C04与1602LCD设计电子密码锁.doc(31页珍藏版)》请在得力文库 - 分享文档赚钱的网站上搜索。

1、毕业设计(论文)学 生 姓 名:赵军成学 号:21专 业:应用电子技术系 部:电子工程学院设计(论文)题目:用24C04与1602LCD设计电子密码锁课程设计指 导 教 师:陈爱文 年 月 日目 录01引言22 设计任务和要求32.1系统总结构设计图32.2 单元电路设计与参数计算42.3各模块的功能42.3.2 矩阵键盘键值读取52.3.3 1602液晶显示模块52.4.延时模块62.4.2密码设置模块62.4.3 密码比较模块72.4.4改密处理.72.5单片机及其外围电路82.6时钟电路92.7矩阵键盘电路的设计102.8操作面板112.9液晶显示电路112.9.2 液晶显示子程序132

2、.10系统软件设计142.11系统主程序142.12初始化及按键识别152.13源程序如下所示:163 实现与检测283.1 原理图及元器件清单283.2 综合逻辑功能检测29参考文献30摘要:随着信息技术的不断发展,信息化时代也逐步进入普通家庭,人们对个人的信息安全以及隐私等私密信息的安全要求不断提高,传统的机械锁已经不能满足要求。针对此现状设计一款安全可靠廉价的电子密码锁有着十分重要的意义。本设计以AT89C51为主控芯片,带有一个密码输入键盘、外围时钟复位电路、存储单元24C04、显示单元1602LCD,通过LED灯的亮与灭表示电子锁的锁闭与打开。利用单片机灵活的编程设计和丰富的IO端口

3、,能实现密码锁的基本功能。用户可以任意设置密码增加了密码锁的保密性,同时如果增加指纹识别、光电识别能进一步增加密码锁的保密性。为了提高可读性采用了1602作为显示单元,使用户对密码锁的运行情况一目了然。关键词:单片机;电子密码锁;24C04;1602LCD; 汇编语言; 程序设计 1引言随着人们生活水平的提高,如何实现家庭防盗这一问题也变的尤其的突出,锁是置于可启闭的器物上,用以关住某个确定的空间范围或某种器具的,必须以钥匙或暗码打开扣件。传统的机械锁由于其构造的简单,被撬的事件屡见不鲜。锁具发展到现在已有若干年的历史了,人们对它的结构、机理也研究得很透彻,因此,不用钥匙就能打开的方法和工具也

4、层出不穷。盗贼还想方设法利用高科技手段撬门开锁,使广大居民防不胜防。传统锁具都存在致命的弱点:第一、锁芯采用常见的铜、铝、锌等材料,抵抗不了强力破坏;第二、锁具制作工艺,技术落后,无法阻止技术手段的开启。目前,市场上很多国内外的锁具,实际上都不具备真正的防盗功能。在惯偷面前,两根钢丝或几件简单的工具就可以把这些锁打开,主要是锁具的技术原理太过简单。随着科技的进步,锁已发展到了密码锁、磁性锁、电子锁、激光锁、声控锁等等。在传统钥匙的基础上,加了一组或多组密码,不同声音,不同磁场,不同声波,不同光束光波,不同图像。(如指纹、眼底视网膜等)来控制锁的开启。从而大大提高了锁的安全性,使不法之徒无从下手

5、,人们也就能对自身财产安全有了更多的保障。当今安全信息系统应用越来越广泛,特别在保护机密、维护隐私和财产保护方面起到重大作用,而基于电子密码锁的安全系统是其中的组成部分,因此研究它具有重大的现实意义。电子锁可以在日常生活和现代办公中,住宅与办公室的安全防范、单位的文件档案、财务报表以及一些个人资料的保存等多种场合使用,大大提高了主人物资的安全性。目前使用的密码锁种类繁多,各具特色。本文从经济实用的角度出发,采用AT89S51单机,研制了一款具有防盗自动报警功能的电子密码锁,同时通过LCD1602增强了可读性。该密码锁设计方法合理,简单易行,成本低,符合住宅、办公室用锁要求,具有一定的推广价值。

6、(1)系统设置6位密码,密码通过键盘输入,若密码正确,则将锁打开。(2)密码由用户自己设定,在开锁状态下,用户可自行修改密码。(3)具有自动报警功能。一是密码输入错误3次,则报警;保证了系统的安全性。系统工作时,用户通过按键输入6位密码,单片机将输入密码与设定密码进行比较,若密码正确,则发出开锁信号,将门打开,系统不报警;若密码不正确,系统提示重新输入密码,重新输入密码的次数不能超过3次,若3次输入的密码都不正确,则发出报警信号。 本文注重实践和理论相结合,按照单片机初学者的学习过程,由浅入深逐步讲解了设计电子锁的整个设计过程及应用到的编程软件。整个设计报告工分为4个部分,各部分的安排如下第一

7、部分:是设计电子锁的背景及目的;第二部分:介绍了这个方案的设计任务要求;第三部分:介绍了电子锁的原理图及元器件清单;第四部分:介绍了电子锁的性能测试与分析;2 设计任务和要求 设计任务是利用开发板设计一个电子锁; 设计要求:自己在自己电脑上写好要连接的电子锁的程序,再在实验室里将已经调试成功的电子锁的程序下载到开发板上,观察并记录开发板上的等的运行情况;如果不是如预期那样运行,要找出原因并进行调试,最后对自己的实验设计进行验收。2.1系统总结构设计图本设计由主控芯片51单片机,24C04断电存储电路、单片机时钟电路,LCD1602显示电路、键盘和开锁电路组成。单片机负责控制整个系统的执行过程。

8、开锁控制电路 89S51单片机24C02掉电存储LCD1602显示电路矩阵键盘控制指示电路输入错误锁定键盘延时报警控制电路2.2 单元电路设计与参数计算图2.2-1电子锁的仿真图2.3各模块的功能1键盘输入模块:分为密码输入按键与几个功能按键,用于完成密码锁输入功能。2密码存储模块:用于完成掉电存储功能,使修改的密码断电后仍能保存。3蜂鸣器报警电路:用于完成输错密码时候的警报功能。4.晶振电路:用于单片机的起振。5复位电路:完成系统的复位。6显示模块:用于完成对系统状态显示及操作提示功能。7. LED显示模块:用于辅助报警与输入提示。8开锁电路:应用继电器及发光二极管模拟开锁,完成开锁及开锁提

9、示。2.3.2 矩阵键盘键值读取矩阵键盘接P1口,行接低4位,列接高4为。先让行为高,列为低,若有键按下,则所在行为低,得到按键的所在行数,之后令P1口,行为低,列为高,运用相似的方法得到所按键的所在列数,及确定按键位置,返回键值。由于机械键盘会出现信号抖动的情况,固在发现有按键后延时5毫秒再次确定,若让有按键,证明按键稳定,否则认为接收到的是抖动信号,不予处理。2.3.3 1602液晶显示模块1602具有三个工作状态控制端,调节他们的高低变化配合数据口的信息,可以显示216的字母或者数字,通过子函数可以实现检测初始化LCD、写指令到LCD、LCD状态、LCD清屏、输入一个字节数据到LCD、L

10、CD光标定位到x处、LCD光标归位、输入一个字符到LCD、输入一个字符串到LCD等功能。液晶显示子程序在每次更新显示内容时都会被调用,其流程如图所示。液晶显示子程序流程图每次更新显示内容前,需清显示清空LCD原先的显示内容,清屏指令的指令码为01H,即将P0口赋值01H,然后写入指令寄存器IR。LCD1602要显示的内容是根据其控制器内置的字符码表,事先列出要显示的ASCII字符串。每次送一个字符的ASCII码入P0口,然后写入数据寄存器DR,最后将字符地址加一,LCD1602会将写入的ASCII码对应的字符依次显示出来。由于显示字符串的长度不尽相同,约定每串字符以00H结尾;程序检测到字符码

11、为00H时,即停止写入,返回。LCD显示的内容在下次更新前会一直保持。2.4.延时模块一个程序会有许多地方需要进行延时操作,例如矩阵键盘的消抖延时。一般延时可以通过空循环与中断响应两种方法进行。由于本程序对于时间精度要求不高,故使用相对简单的空循环的方法进行延时。进过实验,单片机每空循环110次耗时1ms。故用两次循环,里面一次空循环110,外面的一次由输入决定循环次数,这样就会进行输入数值时长的延时。2.4.4密码读取模块首先预读入密码的字符数组清零,显示位置清空,然后读取键值。先判断此时是否是在第九个键值输入了数字键值,如果是不响应重新读入,这样可以防止读入字符串溢出,造成密码读取错误。然

12、后通过switch语句5处理键值(字母键值),并将读取位置、显示位置进行相关调整;如果输入的是数字有效键值,存入当前指向的字符数组空间,其后将键值变量清零准备读取下一个键值。进行循环读取,直到成功读取8位密码或者因为输入了确定键提前完成读取工作。2.4.2密码设置模块在系统进行初始化时,要求设置密码。整体思路是要求读取一组密码,保存在临时空间,然后再次读取密码,如果相同,证明设置成功,将新密码覆盖进标准密码数组里,如果两次的密码不同,显示错误信息,要求重新输入。第一次读入密码第二次读入密码保存密码,提示成功判断两次密码相同不相同图2.3.5密码设置模块2.4.3 密码比较模块该模块将输入密码字

13、符串与设定密码字符串比较。如果相同,执行开锁动作并将输入错误次数清零;如果不同,累计错误次数,如果是第三次输入错误,系统锁死并发出声光告警;如果小于三次,显示密码错误信息,返回密码输入环节。逻辑框图如图2.3.6模块启动验证密码判断错误次数显示错误信息并返回发出报警 系统锁死发出报警 系统锁死连续错误次数小于三次连续错误次数小于三次密码正确密码错误图2.3.6密码比较模块2.4.4改密处理.如图,可以看出,改密键的处理流程跟开锁键类似,都需检查密码是否正确,错误的话,提示重新输入,只有输入密码正确才可以进行改密。然后再按更改键,密码更改程序被调用,进而更改密码,此过程,LCD都会显示信息。改密

14、流程图2.5单片机及其外围电路复位电路2.6时钟电路时钟电路为单片机产生时序脉冲,单片机所有运算与控制过程都是在统一的时序脉冲的驱动下的进行的,如果单片机的时钟电路停止工作(晶振停振),那么单片机也就停止运行了。当采用内部时钟时,连接方法如下图所示,在晶振引脚XTAL1(19脚)和XTAL2(18脚)引脚之间接入一个12MHZ晶振,两个引脚对地分别再接入一个电容即可产生所需的时钟信号,电容的容量一般在几十皮法,2.7矩阵键盘电路的设计为了加强密码的保密性,采用一个44的矩阵式键盘可以任意设置用户密码(1-16位长度),从而提高了密码的保密性,同时也能减少与单片机接口时所占用的I/O口线的数目,

15、节省了单片机的宝贵资源,在按键比较多的时候,通常采用这种方法。每一行与每一列的交叉处不相同,而是通过一个按键来连通,利用这种行列式矩阵结构只需要N根行线与M根列线,即可组成具有N M 个按键的矩阵键盘。在这种行列式矩阵键盘编码的单片机系统中,键盘处理程序首先执行等待按键并确认有无按键按下的程序段。当确认有按键按下后,下一步就是要识别哪一个按键被按下。对键的识别方法通常有两种:一种是通用的组行扫描查询法;另一种是速度较快的线反转法。此系统中,我们采用线反转法。首先辨别键盘中有无按键被按下,在单片机I/O口向键盘送全扫描字,然后读入行线状态来判断。具体方法是:向行线输出全扫描字00H,把全部列线置

16、成低电平,然后将列线的电平状态读入累加器A中。如果有按键被按下,总会有一根行线电瓶被拉至低电平从而使行线不全为1。判断键盘中哪一个按键被按下通常是通过将列线逐列至低电平后,检查行输入状态来实现的。方法是:依次给列线送低电平,然后检查所有行线状态,如果全为1,则所按下的按键不在此列;如果不全为1,则所按下的按键必在此列,而且是在与零电平行线相交的交点上的那个按键。2.8操作面板10个数字键用来输入密码,另外6个功能键分别是:更正、改密、锁定。其中更正键的功能是当输入密码错误的时候,清除前面已经输入的数据,重新输入。在输入密码状态下,0-9数字键为有效键,有时间和次数限制功能:只有三次输入密码机会

17、,每次限制在10秒内完成,输入密码有误或每次输入密码超时,则被认为是密码输入错误。当3次输入都错误时,程序将返回起始状态。密码输入正确后,继电器吸合,表示锁被打开。在密码输入正确的情况下,程序进入查看密码和修改密码状态,。按“改密”键进入重新设置密码状态,在输入密码时,如发现输入有误,可按“更正”键删除后,重新输入,按“锁定”确认后,程序退出修改密码状态。2.9液晶显示电路本系统设计的显示电路是为了给使用者以提示而设置的为了达到界面友好的目的,显示部分由液晶显示器LCD1602取代普通的数码管完成。开锁时,按下键盘上的开锁按键后,利用键盘上的数字键09输入密码,每按下一个数字键后在显示器上显示

18、一个*,输入多少位就显示多少个*。当密码输入完成时,如果输入的密码正确的话, LCD显示“OK”,绿灯亮起,单片机其中P3.0引脚会输出低电平,使三极管T2导通,电磁铁吸合,继电器开关跳转,电子密码锁被打开,如果密码不正确,LCD显示屏会显示“ERROR”,P3.0输出的是高电平,电子密码锁不能打开,同时红灯亮起。通过LCD显示屏,可以清楚地判断出密码锁所处的状态。 图3.7 显示器电路显示器主要用于显示以下几个字符,指示如图所示。ASWORDPS图3.8(a) 开机状态D 等待输入状态KO密码输入正确状态RORER 密码输入错误及输入密码超时的提示2.9.2 液晶显示子程序液晶显示子程序在每

19、次更新显示内容时都会被调用,其流程如图所示。液晶显示子程序流程图每次更新显示内容前,需清显示清空LCD原先的显示内容,清屏指令的指令码为01H,即将P0口赋值01H,然后写入指令寄存器IR。LCD1602要显示的内容是根据其控制器内置的字符码表,事先列出要显示的ASCII字符串。每次送一个字符的ASCII码入P0口,然后写入数据寄存器DR,最后将字符地址加一,LCD1602会将写入的ASCII码对应的字符依次显示出来。由于显示字符串的长度不尽相同,约定每串字符以00H结尾;程序检测到字符码为00H时,即停止写入,返回。LCD显示的内容在下次更新前会一直保持。2.10系统软件设计系统的软件设计采

20、用汇编语言编码。设计方法是先用文本编辑器编写源码,然后用软件Keil C51编译,如果没有错误,可连接生成.HEX格式的文件(需事先在Keil C51中设置)。如果有错误则无法连接,但可在生成的.OBJ文件中找到代码错误的地方,便于修改。当然也可以直接在Keil中编码。生成的HEX文件是记录文本行的ASCII文本文件,在HEX文件中,每一行是一个HEX记录,由十六进制数组成的机器码或者数据常量。HEX文件经常被用于将程序或数据传输存储到ROM、EPROM,大多数编程器和模拟器使用HEX文件。2.11系统主程序系统的主程序如图4-1所示。由于用户在使用系统的过程中,可能在任何时刻按下任何按键,而

21、程序都必须对此作出正确响应。主程序流程图2.12初始化及按键识别 如图4.2,系统的初始化包括堆栈起始地址的设定,两个定时/计数器的设定,液晶显示模式的设定,密码缓冲区的初始化,一些自定义数据空间的初始化,蜂鸣器初始化发声等操作。 系统初始化并读取密码完成后,液晶显示PASSWORD CONTROL,提示用户可以输入密码。此时程序即不断测试按键,检查是否有按键被按下。如果有,则进行按键识别;如果没有按键按下,或者按下的按键没有被识别,R3赋值0FFH,并跳转至按键测试。实际程序运行时,绝大部分时间都在测试按键,等待用户输入。初始化及按键识别流程图2.13源程序如下所示:#include del

22、ay.h/*- uS延时函数,含有输入参数 unsigned char t,无返回值 unsigned char 是定义无符号字符变量,其值的范围是 0255 这里使用晶振12M,精确延时请使用汇编,大致延时 长度如下 T=tx2+5 uS -*/void DelayUs2x(unsigned char t) while(-t);/*- mS延时函数,含有输入参数 unsigned char t,无返回值 unsigned char 是定义无符号字符变量,其值的范围是 0255 这里使用晶振12M,精确延时请使用汇编-*/void DelayMs(unsigned char t) while(

23、t-) /大致延时1mS DelayUs2x(245); DelayUs2x(245); #include eeprom.h#include delay.hvoid Start(void) /I2开始SDA=1;SCL=1;NOP4();SDA=0;NOP4();SCL=0;void Stop(void) /I2C停止SDA=0;SCL=0;NOP4();SCL=1;NOP4();SDA=1;void RACK(void)/读取应答SDA=1;NOP4();SCL=1;NOP4();SCL=0;void NO_ACK(void) /发送非应答信号SDA=1;SCL=1;NOP4();SCL=0

24、;SDA=0;void Write_A_Byte(uchar b)/写一个字节数据uchar i;for(i=0;i8;i+)b=1;SDA=CY; /CY进位程序状态字寄存器_nop_();SCL=1;NOP4();SCL=0;RACK();void Write_IIC(uchar addr,uchar dat)/向指写地地址写数据Start();Write_A_Byte(0xa0);Write_A_Byte(addr);Write_A_Byte(dat);Stop();DelayMs(10);uchar Read_A_Byte(void) /读取一个字节uchar i,b;for(i=0;

25、i8;i+)SCL=1;b40x0f;switch(temp) /横行case 1:keyno+=0 /*A*/;break;/第一行横行case 2:keyno+=4 /*B*/;break;/第一行横行case 4:keyno+=8 /*C*/;break;/第一行横行case 8:keyno+=12 /*D*/;break;/第一行横行P1=0x0f;return keyno;#includeLCD.Hvoid write_com(unsigned char com) /写命令RS_CLR;RW_CLR;P0=com;DelayMs(5);EN_SET;DelayMs(5);EN_CLR

26、;void write_data(unsigned char date) /写一个字符RS_SET;RW_CLR;P0=date;DelayMs(5);EN_SET;DelayMs(5);EN_CLR;void init()/初始化write_com(0x38);write_com(0x0c);write_com(0x06);write_com(0x01);/*- 写入字符串函数-*/ void LCD_Write_String(unsigned char x,unsigned char y,unsigned char *s) if (y = 0) write_com(0x80 + x); e

27、lse write_com(0xC0 + x); while (*s) write_data( *s); s +; /*- 写入字符函数-*/ void LCD_Write_Char(unsigned char x,unsigned char y,unsigned char Data) if (y = 0) write_com(0x80 + x); else write_com(0xC0 + x); write_data(Data); #include #include #include lcd.h#include key.h#include delay.h#include eeprom.hv

28、oid int0(void);unsigned char password6/*=0x01,0x01,0x01,0x01,0x01,0x01*/;unsigned char password16;unsigned char code aa=Password ;unsigned char code gg=New;unsigned char code bb=ERROR ;unsigned char code cc=OK ;unsigned char code dd= ;unsigned char code ee=Next ;unsigned char code ff=success ;unsign

29、ed char keydata;main()unsigned char i,j,k,l,m,n,o,a1;/*for(i=0;i6;i+)Write_IIC(i,passwordi);*/ init();/LCD初始化int0();P3_6=0;P3_7=0;P1=0x0f;LCD_Write_String(0,0,aa);LCD_Write_String(1,1,dd);write_com(0xc0+1);while(1)start:LCD_Write_String(0,0,aa);LCD_Write_String(1,1,dd);write_com(0xc0+1); while(1)if(

30、0keydata)|(4keydata)|(8keydata)|keydata=14)/在0-9之间的数字通过passwordi=keydata;/键盘值进行保存keydata=0;/把键盘值置其它值,不被其它利用,以一样i+;write_data(*);/在LCD上显示*这字符代表输入了一个密码if(i=6)/这里限制了六位密码i=0;goto panduan; if(keydata=33) /确定进入密码比较keydata=0;panduan:i=0;for(j=0;j6;j+)l+=passwordj;k+=Random_Read(j);if(l!=k)/密码不同进行处理l=0;k=0;

31、LCD_Write_String(0,0,bb);DelayMs(1000);a1+=1;if(a1=2)while(1)P3_7=1;P3_6=0;/两次错误发出报警goto start; /第二次输入密码if(l=k) /密码对了,进入运行状态,这里绿灯代表该状态 l=0; k=0; a1=0; P3_6=1; P3_7=0; LCD_Write_String(0,0,cc); LCD_Write_String(1,1,dd); if(o=1) o=0; LCD_Write_String(0,0,gg); LCD_Write_String(4,0,aa); LCD_Write_String

32、(1,1,dd); write_com(0xc0+1); goto text2; goto yingxing; /跳到下面函数中,yingxing里yingxing:while(1)if(keydata=4)/锁定功能P3_6=0;goto start;if(keydata=15) /修改密码o+;if(o=1) goto start;text2:keydata=0;while(1)if(0keydata)|(4keydata)|(8keydata)|keydata=14)/上面表达式0-9之间的数字通过passwordm=keydata; /读取键盘值keydata=0;m+;write_d

33、ata(*);if(m=6) /到密码输入到六位的时候进行判断是否再输入,或者判断前后两次密码是否一致m=0;n+;if(n=2) goto panduan1;/输入第二次的时候进行前后两次密码进判断for(i=0;i6;i+) /储存前一次密码password1i=passwordi;LCD_Write_String(1,1,dd);LCD_Write_String(0,0,ee);DelayMs(1000);LCD_Write_String(0,0,aa);write_com(0xc0+1); if(keydata=13) /重新输入改密 text: m=0;n=0;LCD_Write_S

34、tring(1,1,dd);write_com(0xc0+1); if(keydata=33) /退出不改密码out:m=0;n=0;o=0;LCD_Write_String(0,0,cc);LCD_Write_String(1,1,dd);goto yingxing;if(keydata=33)keydata=0;panduan1:for(j=0;j6;j+)/第一次与第二次密码比较l+=passwordj;k+=password1j;if(l!=k) /第一次与第二次密码输入错误l=0;k=0;LCD_Write_String(0,0,bb);DelayMs(1000);LCD_Write

35、_String(0,0,aa);goto text; elsefor(i=0;i6;i+)Write_IIC(i,passwordi); LCD_Write_String(0,0,ff); DelayMs(1000); goto out; void int0(void)EA=1;EX0=1;IT0=1;void ISR_INT0(void) interrupt 0 keydata=key_scan();3 实现与检测3.1 原理图及元器件清单 图3.1-2原理运行图按照单片机系统扩展与系统配置状况,单片机应用系统可分为最小系统、最小功耗系统及典型系统等。AT89C51单片机是美国ATMEL公司生产的低电压、高性能CMOS 8位单片机,具有丰富的内部资源:4kB闪存、128BRAM、32根I/O口线、2个16位定时/计数器、5个向量两级中断结构、2个全双工的串行口,具有4.255.50V的电压工作范围和024MHz工作频率,使用AT89C51单片机时无须外扩存储器。因此,本电子锁实际上就是一个带有八个发光二极管的单片机最小应用系统,即为由发光二极管、晶振、复位、开关、电源等电路和必要的软件组成的单个单片机。其具体硬件组成如图3所示。3.2 综合逻辑功能检测将程序代码烧录进硬件系统中进行总体综合测试。相关流程如下:序

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 教育专区 > 高考资料

本站为文档C TO C交易模式,本站只提供存储空间、用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。本站仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知得利文库网,我们立即给予删除!客服QQ:136780468 微信:18945177775 电话:18904686070

工信部备案号:黑ICP备15003705号-8 |  经营许可证:黑B2-20190332号 |   黑公网安备:91230400333293403D

© 2020-2023 www.deliwenku.com 得利文库. All Rights Reserved 黑龙江转换宝科技有限公司 

黑龙江省互联网违法和不良信息举报
举报电话:0468-3380021 邮箱:hgswwxb@163.com