电子时钟实习报告.doc

上传人:laozhun 文档编号:3989216 上传时间:2023-03-30 格式:DOC 页数:33 大小:2.51MB
返回 下载 相关 举报
电子时钟实习报告.doc_第1页
第1页 / 共33页
电子时钟实习报告.doc_第2页
第2页 / 共33页
电子时钟实习报告.doc_第3页
第3页 / 共33页
电子时钟实习报告.doc_第4页
第4页 / 共33页
电子时钟实习报告.doc_第5页
第5页 / 共33页
点击查看更多>>
资源描述

《电子时钟实习报告.doc》由会员分享,可在线阅读,更多相关《电子时钟实习报告.doc(33页珍藏版)》请在三一办公上搜索。

1、 单片机原理课程设计题 目: 基于AT89S52的电子时钟设计 姓 名: 魏贤盼 谷雄飞 学 院: 工学院 专 业: 自动化 班 级: 自动化01,02班 学 号: 32210130 32210117 指导教师: 胡飞 吕成绪 2013 年 6月 15日南京农业大学教务处制目 录摘要2关键词2Abstract2Key words2引言21.设计要求与内容31.1设计要求31.2 设计内容32.系统的设计与实现32.1 电路设计框图32.2 系统概述32.3 主要单元电路32.3.1 AT89S52单片机主控制模块32.3.2 时钟电路模块52.3.3 LCD显示模块52.3.4 温度模块72.

2、3.5 键盘模块72.3.6 蜂鸣器模块83.系统的程序设计83.1程序流程框图83.2 部分程序设计94.实物展示95.实习心得体会10致谢10参考文献11附录11基于AT89S52的电子时钟设计自动化 魏贤盼 谷雄飞指导教师 胡飞 吕成绪 摘要:单片机在电子产品中的应用越来越广泛,其具有使用方便、价格低廉等优势,在市场上占有很大的份额。AT89S52就是51系列中的一个比较成熟的型号,它完全兼容51单片机的指令。本设计是基于AT89S52单片机的一个多功能实时时钟,包含DS1302时钟芯片、LCD12864液晶屏、DS18B20温度传感器等模块,能实现秒表、整点报时、闹铃、显示当前温度、调

3、整时间等功能,所有功能均可通过按键进行操作。本设计实现了日常生活所需的基本功能,给大家带来方便,具有整体性好、人性化强、可靠性高等优点。关键词:电子时钟 AT89S52 DS1302 LCD12864 DS18B20 Electronic clock system design based on AT89S52Students majoring in automation Wei Xianpan Gu XiongfeTutor Hu Fe LvChengXu Abstract: MCU in the application of electronic products becomes more

4、 widely, which is of its ease of use, low prices and other advantages, so it takes a large market share. AT89S52 is a more mature model in the 51-series, and it is fully compatible with the directive MCU 51.The design is a multi-function real time clock based on AT89S52, including the three main par

5、tsDS1302, LCD12864, DS18B20,and so on. It can realize the followed functions, including stopwatch, alarm at the whole point, alarm clock, a display of current temperature, adjust the time and so on. All the functions can be realized by the keys. The design meets the need of daily life, and brings co

6、nvenience to everyone. The good integrity, strong humanization and high reliability are the main merits of the electronic clock.Key words: Electronic clock AT89S52 DS1302 LCD12864 DS18B20 引言随着科技的快速发展,时间的流逝,从观太阳、摆钟到现在电子钟,人类不断研究,不断创新纪录。美国DALLAS公司推出的具有涓细电流充电功能的低功耗实时时钟芯片DS1302,它可以对年、月、日、周、时、分、秒进行计时,还具有闰

7、年补偿等多种功能,而且DS1302的使用寿命长,误差小。对于数字电子时钟采用直观的数字显示,可以同时显示年、月、日、周、时、分、秒和温度等信息,还具有时间校准、闹钟、秒表、阴阳历转换等功能。该设计以AT89S52单片机为核心,功耗小,能在3V的低压状态下工作,可选用3V5V的低电压进行供电。综上所述,此电子时钟具有读取方便、显示直观、功能多样、电路简洁、成本低廉等诸多优点,符合电子仪器仪表的发展趋势,具有广阔的市场前景。1.设计要求与内容1.1设计要求(1)启动时显示设计者的姓名学号等信息;(2)24小时计时功能(精确到秒),可通过按键设置时间信息;(3)整点报时功能;(4)秒表功能;(5)闹

8、钟功能;(6)温度显示功能。1.2 设计内容 本系统采用单片机AT89S52作为核心元件,利用LCD12864液晶屏作为显示器件。接入LCD液晶显示器后,利用DS1302时钟芯片显示时、分、秒、年、月、日、周等基本时间信息,利用DS18B20温度传感器显示当前温度,单片机外围接有蜂鸣器作为定时发声及闹钟报时系统。电路由下列部分组成:时钟电路、复位电路、按键控制电路、LCD显示电路、蜂鸣器发声电路、温度及时钟接收电路等,芯片选用AT89S52单片机。本次课程设计,所设计的是一个电子时钟,能显示时-分-秒、年-月-日、温度等基本信息,能够通过按键修改当前时间、设定闹钟,并能实现秒表、整点报时等功能

9、。设计的部分主要为软件画图及程序设计,首先画出正确的电路图,编写好程序,在电路图上进行仿真,然后在单片机开发箱上实现上述功能。2.系统的设计与实现2.1 电路设计框图图一 电路设计框图 2.2 系统概述本系统是以AT89S52单片机为控制核心,具有在线编程功能,低功耗,能在3V超低压工作;时钟电路由DS1302提供,它是一种高性能、低功耗、带RAM的实时时钟电路,它可以对年、月、日、周、时、分、秒进行计时,具有闰年补偿功能,工作电压为2.5V5.5V。DS1302内部有一个用于临时性存放数据的RAM寄存器,可产生年、月、日、周、时、分、秒,具有使用寿命长、精度高和低功耗等特点,同时具有掉电自动

10、保存功能,显示部分由LCD1602液晶屏构成。2.3 主要单元电路2.3.1 AT89S52单片机主控制模块AT89S52是美国ATMEL公司生产的低功耗、高性能CMOS 8位单片机,片内含8K bytes的可系统编程的Flash只读程序存储器,器件采用ATMEL公司的高密度、非易失性存储技术生产,兼容标准8051指令系统及引脚。AT89S52提供以下标准功能:8K字节Flash闪速存储器,256字节内部RAM,32I/O口线,看门狗(WDT),两个数据指针,三个16位定时/计数器,一个5向量两级中断结构,一个全双工串行通信口,片内振荡器及时钟电路。如下图所示。图二 AT89S52单片机VCC

11、:供电电压。 GND:接地。 P0口:P0口为一个8位漏极开路双向I/O口,每脚可吸收8TTL门电流。当P1口的管脚第一次写1时,被定义为高阻输入。P0口可用于外部程序数据存储器,它可以被定义为数据/地址的低八位。在FIASH编程时,P0 口作为原码输入口,当FIASH进行校验时,P0口输出原码,此时P0口外部必须被拉高。P1口:P1口是一个内部提供上拉电阻的8位双向I/O口,P1口缓冲器能接收输出4TTL门电流。P1口管脚写入1后,被内部上拉为高,可用作输入,P1口被外部下拉为低电平时,将输出电流,这是由于内部上拉的缘故。在FLASH编程和校验时,P1口作为低八位地址接收。 P2口:P2口为

12、一个内部上拉电阻的8位双向I/O口,P2口缓冲器可接收,输出4个TTL门电流,当P2口被写1时,其管脚被内部上拉电阻拉高,可作为输入。作为输入时,P2口的管脚被外部拉低,将输出电流,这是由于内部上拉的缘故。当P2口用于外部程序存储器或16位地址外部数据存储器进行存取时,P2口输出地址的高八位。在给出地址“1”时,它利用内部上拉优势,当对外部八位地址数据存储器进行读写时,P2口输出其特殊功能寄存器的内容。P2口在FLASH编程和校验时接收高八位地址信号和控制信号。P3口:P3口管脚是8个带内部上拉电阻的双向I/O口,可接收输出4个TTL门电流。当P3口写入1后,它们被内部上拉为高电平,并用作输入

13、。作为输入时,由于外部下拉为低电平,P3口将输出电流(ILL),这是由于上拉的缘故。 RST:复位输入。当振荡器复位器件时,要保持RST脚两个机器周期的高电平时间。 ALE/PROG:当访问外部存储器时,地址锁存允许的输出电平用于锁存地址的低位字节。在FLASH编程期间,此引脚用于输入编程脉冲。在低电平时,ALE端以不变的频率周期输出正脉冲信号,此频率为振荡器频率的1/6。因此它可用作对外部输出的脉冲或用于定时目的。然而要注意的是:每当用作外部数据存储器时,将跳过一个ALE脉冲。如想禁止ALE的输出可在SFR8EH地址上置0。此时,ALE只有在执行MOVX、MOVC指令时,ALE才起作用。另外

14、,该引脚被略微拉高。如果微处理器在外部执行状态ALE禁止,置位无效。 PSEN:外部程序存储器的选通信号。在由外部程序存储器取指期间,每个机器周期两次PSEN低电平有效。但在访问外部数据存储器时,这两次有效的PSEN低电平信号将不出现。 EA/VPP:当EA保持低电平时,则在此期间外部程序存储器(0000H-FFFFH),不管是否有内部程序存储器。注意:加密方式为1时,EA将内部锁定为RESET;当EA端保持高电平时,此为内部程序存储器。在FLASH编程期间,此引脚也用于施加12V编程电源(VPP)。 XTAL1:反向振荡放大器的输入及内部时钟工作电路的输入。 XTAL2:来自反向振荡器的输出

15、。2.3.2 时钟电路模块图三 DS1302的引脚图图2所示为DS1302的引脚排列,其中Vcc1为后备电源,Vcc2为主电源。在主电源关闭的情况下,也能保持时钟的连续运行。DS1302由Vcc1或Vcc2两者中的较大者供电。当Vcc2大于Vcc1+0.2V时,Vcc2给DS1302供电。当Vcc2小于Vcc1时,DS1302由Vcc1供电。X1和X2是振荡源,外接32.768KHz晶振。RST是复位/片选线,通过把RST输入驱动置高电平来启动所有的数据传送。RST输入有两种功能:首先,RST接通控制逻辑,允许地址/命令序列送入移位寄存器;其次,RST提供终止单字节或多字节数据的传送手段。当R

16、ST为高电平时,所有的数据传送被初始化,允许对DS1302进行操作。如果在传送过程中RST置为低电平,则会终止此次数据传送,I/O引脚变为高阻态。在Vcc大于等于2.5V之前,RST必须保持低电平。在SCLK 为低电平时,才能将RST置为高电平,I/O为串行数据输入端(双向),SCLK始终是输入端。2.3.3 LCD显示模块在单片机的人机交流界面中,一般的输出方式有以下几种:发光管、LED数码管、LCD液晶显示器。本次实习主要用LCD液晶显示器,在单片机系统中应用液晶显示器作为输出器件有以下几个优点:(1)显示质量高:由于液晶显示器每一个点在收到信号后就一直保持那种色彩和亮度,恒定发光,而不像

17、阴极射线管显示器(CRT)那样需要不断刷新亮点。因此,液晶显示器画质好且不会闪烁。(2)数字式接口:液晶显示器都是数字式的,和单片机系统的接口更加简单可靠,操作更加方便。(3)体积小、重量轻:液晶显示器通过显示屏上的电极控制液晶分子状态来达到显示的目的,在重量上比相同显示面积的传统显示器要轻得多。(4)功耗低:相对而言,液晶显示器的功耗主要消耗在其内部的电极和驱动IC上,因而耗电量比其它显示器要少得多。图四 LCD显示模块1、液晶显示器字符显示的原理带中文字库的128X64是一种具有4位/8位并行、2线或3线串行多种接口方式,内部含有国标一级、二级简体中文字库的点阵图形液晶显示模块;其显示分辨

18、率为12864, 内置8192个16*16点汉字,和128个16*8点ASCII字符集.利用该模块灵活的接口方式和简单、方便的操作指令,可构成全中文人机交互图形界面。可以显示84行1616点阵的汉字. 也可完成图形显示.低电压低功耗是其又一显著特点。由该模块构成的液晶显示方案与同类型的图形点阵液晶显示模块相比,不论硬件电路结构或显示程序都要简洁得多,且该模块的价格也略低于相同点阵的图形液晶模块。在导入程序后液晶显示屏上显示制作人姓名、学号和问候语,而后跳到当前日期和时间,并显示当前温度,通过按键控制进入秒表、闹钟等功能的显示。2、引脚功能说明本系统使用的LCD12864采用标准的20脚(带背光

19、)接口,各引脚说明如表1所示。 表一 LCD12864各引脚接口说明管脚号管脚名称电平管脚功能描述1VSS0V电源地2VCC3.0+5V电源正3V0-对比度(亮度)调整4RS(CS)H/LRS=“H”,表示DB7DB0为显示数据RS=“L”,表示DB7DB0为显示指令数据5R/W(SID)H/LR/W=“H”,E=“H”,数据被读到DB7DB0R/W=“L”,E=“HL”, DB7DB0的数据被写到IR或DR6E(SCLK)H/L使能信号7DB0H/L三态数据线8DB1H/L三态数据线9DB2H/L三态数据线10DB3H/L三态数据线11DB4H/L三态数据线12DB5H/L三态数据线13DB

20、6H/L三态数据线14DB7H/L三态数据线15PSBH/LH:8位或4位并口方式,L:串口方式(见注释1)16NC-空脚17/RESETH/L复位端,低电平有效(见注释2)18VOUT-LCD驱动电压输出端19AVDD背光源正端(+5V)(见注释3)20KVSS背光源负端(见注释3)*注释1:如在实际应用中仅使用并口通讯模式,可将PSB接固定高电平,也可以将模块上的J8和“VCC”用焊锡短接。*注释2:模块内部接有上电复位电路,因此在不需要经常复位的场合可将该端悬空。*注释3:如背光和模块共用一个电源,可以将模块上的JA、JK用焊锡短接。四.模块主要硬件构成说明2.3.4 温度模块图五 DS

21、18B20温度显示图DS18B20是Dallas公司生产的单总线(0ne-wire)数字化温度传感器,它采用单根信号线传输数据,而且数据传输是双向的。它能直接读出被测温度,因此可以通过简单的编程实现温度显示与温度控制。2.3.5 键盘模块图六 矩阵键盘模块 如图S1、S5、S9分别对应于时钟年月日的设置,S2、S6、S10分别对应于时钟时分秒的设置,S3每按下一次使对应的设置参数+1,S7每按下一次使对应的设置参数-1,S4按键用于对星期的设置。按下S8键可以启动闹钟设置功能,这时的S2、S6、S10以及S3、S7可以复用,实现对闹钟的调节,按下S12键后,系统退出对时间和闹钟的调整,进入日期

22、、时间、星期以及温度显示界面。对矩阵键盘的处理,我们使用的是按键扫描法来获得键值。图七 独立键盘模块这里的独立按键,我们只用到了K1,主要用于实现秒表功能,采用定时器1来对秒表进行精确的定时,我们的秒表可以精确到0.01秒。当按下K1键时,相应的按键标志位自增一次,当标志位flag11=4时对其清零处理。通过对标志位数值的判断来完成对秒表的控制。flag11=1是启动秒表,开始计时;flag11=2是暂停秒表,停止计时;flag11=3是清零秒表;flag11=0是转入时间、日期、星期和温度显示界面。2.3.6 蜂鸣器模块图八 声音输出模块蜂鸣器是一种一体化结构的电子讯响器,广泛用于电子产品中

23、作发声报警。蜂鸣器有两类:一类是压电式,一类是电磁式。本系统使用的是电磁式蜂鸣器。电磁式蜂鸣器有两种类型:有源蜂鸣器和无源蜂鸣器。有源蜂鸣器内部带振荡源,无源蜂鸣器内部不带振荡源。有源蜂鸣器和无源蜂鸣器的主要差别是对输入信号的要求不一样,有源蜂鸣器工作的理想信号是直流电,无源蜂鸣器工作的理想信号是方波。无源蜂鸣器接直流电是不会工作的。闹铃时间到,蜂鸣器开始播放音乐-世上只有妈妈好。整点时,蜂鸣器响,并且会根据整点时间响相应次数。3.系统的程序设计3.1程序流程框图图九 矩阵键盘程序模块 图十 独立键盘程序模块 3.2 部分程序的设计 见附录。4.实物展示图一:开机初始化显示图二:当前温度时间日

24、期显示图三:整点报时时间到图四:闹钟时间到图五:秒表功能图六:秒表清零图七:闹钟设置图八:时间调整5.实习心得体会这次实习对我们来说是一次很好的锻炼,尤其对于我们自动化专业。单片机是自动化的核心专业课,学好单片机对于我们找工作是很重要的。通过这次单片机实习,我们能够将所学的知识运用到实践中。一开始我们面临很多的困难,特别是在调试程序的时候,需要有特别大的耐心和定力,有的出错问题都看不懂,需要到网上搜索才知道原因是什么。虽然遇到很多困难,但是修改之后都能得到预期的结果,还是有点成就感的。比如为了一个按键扫描的模块程序,就费了我们不少功夫,调整时间时会跳到某一个随机数值,而不是从当前时间开始,而且

25、有时会超出时间范围,当时真的比较崩溃,后来和同学讨论时,才明白需要先将当前的时间保存下来,再对当前的时间进行加减,以达到调整时间的目的。通过此问题,我们发现做项目的时候必须对所用的元器件的原理非常的清楚,不然编程时就会出现各种小问题,而导致修改时都无从下手。 其次,通过向同学请教及自己的摸索,我们学会了发现问题、找出错误点、解决问题的方法。找出错原因时就要从主程序开始分析,调用子程序时再转到子程序里查看,还要特别注意循环。诸如此类的问题很多,每发现一个问题就要修改程序,每改一次就要调试一次,要是改动多处再调试就更难发现问题出在哪里,所以每次都要细心。实习过程中一直在网上及书上寻找着对自己有价值

26、的东西,我们的收获很多,学到的东西也很多,同时明白了一个道理:学习能力不是指自己学习书本知识并会做各种难题的能力,而是发现问题并能独立解决问题的能力。这次实习为期两个周,说实话挺累的,因为前前后后确实遇到了太多的难题,但庆幸的是我们从没有想过放弃,并且最后也实现了项目所需要的各种功能,而且还增加了些许创新,心里还是挺欣慰的。实习两周很快就过去了,学到了很多,很充实,也很有成就感。我们实习要用到的很多芯片,不可能样样都在课本上学习到,学过的毕竟是少数,这需要我们自己去学习各种课外的知识。在以后的学习实践和工作中,更要学会自学,要有耐心和毅力,知识更新一日千里,要活到老、学到老,在大学课堂上学的只

27、是方法,至于其中深层次的内容,还要靠自己去挖掘,所谓“师傅领进门,修行在个人”就是这个道理,这才是成年人的学习生活。今后我们的道路还很长,我们要学的东西也很多。通过本次实习,我们深刻地认识到自学的重要性,我们要以一种良好的态度去迎接每一次挫折和挑战。致谢首先,感谢我们的指导老师。本次课程设计是在老师的指导和同学们的帮助下修改完成的。在此,我们要向他们的细心帮助和指导表示由衷的感谢。在这段时间里,我们从他们身上不仅学到了许多的专业知识,更感受到他们工作中的兢兢业业,生活中的平易近人。此外,他们严谨的治学态度和忘我的工作精神值得我们去学习。非常感谢大家在我们的课程设计中,给予我们极大的帮助,使我们

28、对整个课程设计的思路有了总体的把握,并耐心的帮我们解决了许多实际问题,使我们有了很大的收获。同时,他们在整个开发过程中提出了许多建设性意见,并给我们解决了一些专业性问题。 感谢多年来传授我们知识的老师们,更要感谢那些对我们学习上支持和鼓励的人。同时感谢所有关心帮助过我们的同学、老师和学校。总之,在以后的学习生活中我们将以加倍的努力,给帮助过我们的学校、老师及同学们以回报。参考文献1余发山.单片机原理及应用技术.江苏:中国矿业大学出版社,2003.2王建校.51系列单片机及C51程序设计.北京:科学出版社,2002.3谭浩强.C程序设计.北京:清华大学出版社,2005.4何立民.单片机高级教程.

29、北京:北京航空航天大学出版社,2001.5王福瑞.单片微机测控系统设计大全.北京:北京航空航天大学出版社,2003.附录 (一)主程序#include#include#includedefine.h#includedelay.h#includeDS1302.h#include12864.h#includekeyscan.h#includebeep.h#include18B20.hvoid wendu1() /温度处理temp2=ReadTemperature();temp3=temp2/10;if(temp3100)wendu7=temp3/100+0; /温度百位 else wendu7=

30、; wendu8=temp3%100/10+0; /温度十位 wendu9=temp3%10+0;/温度个位 wendu10=0x2E;/小数点 wendu11=temp2%10+0;/温度小数点后第一位DelayMs(100);/*时间获取函数*/void LCD_time() /时间、日期、星期和闹钟的处理wendu1();time12=year/10+0;time13=year%10+0;time16=month/10+0;time17=month%10+0;time110=date/10+0;time111=date%10+0;time20=hour/10+0;time21=hour%

31、10+0;time24=minute/10+0;time25=minute%10+0;time28=second/10+0;time29=second%10+0;/week4=day%10+0;/week5= ;nz0=nz_hour/10+0;nz1=nz_hour%10+0;nz4=nz_minute/10+0;nz5=nz_minute%10+0;nz8=nz_second/10+0;nz9=nz_second%10+0;if(nz0=time20&nz1=time21&nz4=time24&nz5=time25&nz8=time28&nz9=time29)flag6=1;if(time

32、24=0&time25=0&time28=0&time29=0)flag7=1;void init_interrupt() /中断初始化TMOD|=0x01; /置定时器0工作方式1EA=1; /打开全局中断ET0=1; /打开定时0中断 TMOD |= 0x10; TH1 = 0x0DC; TL1 = 0x00; EA = 1; ET1 = 1;void main()LCD_init(); /液晶初始化LCD_clear(); /液晶清屏DS_init(); /DS1302初始化DS_set_type(1);/有错display(); /初始化显示姓名和学号time_init(); /初始化

33、设置时间init_interrupt();/中断初始化设置while(1)keyscan_manage(); /按键扫描获得键值DS_gettime(); /获得DS1302时间、日期、星期信息LCD_time(); /处理DS1302信息LCD_clear();switch(flag4)case 0: /显示当前时间LCD_clear();LCD_display_time();break;case 1: /闹钟时间到,显示闹钟时间LCD_clear();LCD_display_nz_time();break;default: break;if(flag6=1) /闹钟到,播放音乐世上只有妈妈

34、好 unsigned char k,i=0;flag6=0;TR0=1;display_nz(); while(i100) /音乐数组长度 ,唱完从头再来 k=MUSICi+7*MUSICi+1-1;/去音符振荡频率所需数据 Timer0_H=FREQHk; Timer0_L=FREQLk; Time=MUSICi+2; /节拍时长 i=i+3; Song(); TR0=0;if(flag7=1) /整点报时时间到uint i=hour,j;flag7=0;if(i=0)j=48;else j=2*i;if(hour 0;i-); /*函数名称:Delay_Nms功 能:延时N个1ms的时间参

35、 数:n-延时长度返回值 :无*/void Delay_Nms(uint n) uint i; for(i = n;i 0;i-) Delay_1ms();/*选屏*/void LCD_choose(uchar cs)switch(cs)case 0:cs1=0;cs2=1;break;case 1:cs1=1;cs2=0;break;case 2:cs1=0;cs2=0;break;default: break;/*忙检查*/void LCD_check_busy()uchar state;rs=0;rw=1;doP0=0x00;en=1;state=P0&0x80;en=0;while(s

36、tate=0x80);/*写命令*/void LCD_write_cmd(uchar cmd)LCD_check_busy();rs=0;rw=0;en=1;P0=cmd;delay(2);en=0;/*写数据*/void LCD_write_data(uchar dat)LCD_check_busy();rs=1;rw=0;en=1;P0=dat;delay(2);en=0;void LCD_clear()uchar i,j;LCD_choose(2); LCD_write_cmd(0xb8);LCD_write_cmd(0x40);for(i=0;i8;i+)LCD_write_cmd(i+0xb8);for(j=0;j64;j+)LCD_write_cmd(0x40+j);LCD_write_data(0x00);/*函数名称:Disp_HZ功 能:控制液晶显示汉字参 数:addr-显示位置的首地址 pt-指向显示数据的指针 num-显示字符个数返回值 :无*/void Disp_HZ(uchar addr,const uchar * pt,uchar num)

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 办公文档 > 其他范文


备案号:宁ICP备20000045号-2

经营许可证:宁B2-20210002

宁公网安备 64010402000987号