毕业论文-基于51单片机的汽车水温表设计.doc

上传人:rrsccc 文档编号:9368862 上传时间:2021-02-22 格式:DOC 页数:29 大小:587.50KB
返回 下载 相关 举报
毕业论文-基于51单片机的汽车水温表设计.doc_第1页
第1页 / 共29页
毕业论文-基于51单片机的汽车水温表设计.doc_第2页
第2页 / 共29页
毕业论文-基于51单片机的汽车水温表设计.doc_第3页
第3页 / 共29页
毕业论文-基于51单片机的汽车水温表设计.doc_第4页
第4页 / 共29页
毕业论文-基于51单片机的汽车水温表设计.doc_第5页
第5页 / 共29页
点击查看更多>>
资源描述

《毕业论文-基于51单片机的汽车水温表设计.doc》由会员分享,可在线阅读,更多相关《毕业论文-基于51单片机的汽车水温表设计.doc(29页珍藏版)》请在三一文库上搜索。

1、I基于51单片机的汽车水温表设计摘要随着汽车工业的迅速发展和人们生活水平及需要的不断提高,越来越多的汽车走入了大众的生活,而在汽车的发展过程中对汽车水温表的设计和实现技术要求又尤为重要本论文是主要介绍基于51单片机汽车水温表的设计思路、流程及应用;论文结合并参考各类有关汽车水温表书籍,主要阐述汽车水温表的总体原理设计、硬件设计与软件设计,以及水温表显示调试方法。关键词:单片机,汽车,DS18B20,水温表;目 录1 前言 . -0-2 汽车水温表简介 . -1- 2.1汽车水温表概述 . -2- 2.2常见汽车水温表的工作原理 . -2-3 水温表总体原理及设计 . -4-3.1硬件的总体设计

2、 . -4- 3.1.1硬件系统子模块 . -4-3.2软件的总体设计 . -4-4 水温表的硬件设计 . -5-4.1单片机最小系统电路 . -5- 4.2数码管显示电路. -5- 4.3 温度采集电路 . -6-5 水温表的软件设计 . -10- 5.1主流程图 . -11- 5.2 读取温度DS18B20模块的流程 . -11-6 水温表的调试 . -13- 6.1 硬件电路调试 . -13- 6.2 软件调试 . -13-7 总结 . -14-8 参考文献 . -15-附录一 水温表程序前 言从第一辆汽车诞生到现在已有一百多年的历史,随着社会和科学技术的发展,如今汽车已经走进了寻常百姓

3、家,成为人们必备的交通工具之一;而且我国经济发展水平与汽车产业发展水平有着密切的关系,汽车产业是衡量我国经济发展水平的重要指标,汽车工业在我国已经占着举足轻重的地位。随着汽车电子技术和计算机控制技术的发展,各类汽车公司厂商都运用大量的电子技术和计算机技术,从而改善汽车经济性、安全性和舒适性,并且提高了汽车技术性能。然而汽车水温表测量准确、显示正确,对汽车发动机来说尤为重要。2 汽车水温表简介2.1汽车水温表概述汽车水温表是用来指示汽车发动机冷却水的工作温度,并向司乘人员显示发动机工作水温是否工作正常。它由装在气缸盖上的温度传感器和转在仪表盘上的水温表组成。2.2常见汽车水温表的工作原理 常见的

4、汽车水温表有电热式、电磁式和蒸气压力是三类,它们与不同的感应器相配合,进行水温测定。2.2.1电热式水温表工作原理 当汽车发动机水温升高使双金属片向离开固定触点的方向弯曲,使触点彼此接触的压力减弱;通过压力的减弱增加打开的时间,使通过加热线圈的电流平均值减小,水温表指针指向高温。水温降低时,触电压力增大,平均电流增大,水温表的双金属片弯曲怎大,指针指向低温。如图2-1所示;图 21 电热式水温表2.2.2电磁式水温表工作原理电磁式水温表内有两个铁芯式线圈,在线圈交叉位置上,装有小磁片、配重和指针等组成的转子,传感器为温度系数热敏电阻。低温时,传感器热敏电阻阻值为1000,此时,线圈L2和大电阻

5、串联,通过的电流,大部分流入L1,在综合电场是指针停在刻度32处。当温度升高时,传感器受温度的影响,热敏电阻阻值变小(约为150),L2所通过电流,L1相对减少,磁场的综合作用是指针向高温100刻度移动。如图2-2所示;图 22 电磁式水温表3.1.1蒸气压力式水温表工作原理当水温表的感温包受热时,充灌在其中的介质(氯乙烷或乙醚等)受热蒸发(乙醚液体在大气压力下的沸点是34),蒸气压力通过毛细管进入弹簧管,压力迫使弹簧向外扩张,弹簧管的自由端与连杆的一头销钉连接,连杆的另一端与扇形齿轮固定。传动机构中,扇形齿轮与中心齿轮啮合传动,并使装在中心齿轮轴上的指针在刻度盘上指出被测介质温度值。感温包内

6、液体体积受感温包与弹簧管相对位置影响。如图2-3所示;图 23 蒸气压力式水温表3水温表总体原理及设计3.1硬件总体设计设计并制作一个基于单片机的汽车水温表的电路,其结构框图如图2-1:单片机AT89S51数码管显示温度传感器DS18B20图 31 系统结构框图3.1.1硬件系统子模块(1) 单片机最小系统电路部分(2) 温度采集电路部分(3) 数码管温度显示电路部分3.2 软件总体设计良好的设计方案可以减少软件设计的工作量,提高软件的通用性,扩展性和可读性。本系统的设计方案和步骤如下:(1) 根据需求按照系统的功能要求,逐级划分模块。(2) 明确各模块之间的数据流传递关系,力求数据传递少,以

7、增强各模块的独立性,便于软件编制和调试。(3) 确定软件开发环境,选择设计语言,完成模块功能设计,并分别调试通过。(4) 按照开发式软件设计结构,将各模块有机的结合起来,即成一个较完善的系统。首先接通电源系统开始工作,系统开始工作后,通过温度传感器开始实时检测,调用显示子程序显示检测结果。4 水温表硬件设4.1单片机最小系统电路因为89S52单片机内部自带8K的ROM和256字节的RAM,因此不必构建单片机系统的扩展电路。如图31,单片机最小系统有复位电路和振荡器电路。值得注意的一点是单片机的31脚必须接高电平,否则系统将不能运行。因为该脚不接时为低电平,单片机将直接读取外部程序存储器,而系统

8、没有外部程序存储器,所以必须接VCC。在按键两端并联一个电解电容,滤除交流干扰,增加系统抗干扰能力。图41 单片机最小系统图4.2 数码管显示电路(1)数码管显示说明各个数码管的段码都是单片机的数据口输出,即各个数码管输入的段码都是一样的,为了使其分别显示不同的数字,可采用动态显示的方式,即先只让最低位显示0(含点),经过一段延时,再只让次低位显示1,如此类推。由视觉暂留,只要我们的延时时间足够短,就能够使得数码的显示看起来非常的稳定清楚,过程如表3-1。表4-1 数码管编码表段码位码显示器状态08H01H0abH02H112H04H222H08H3a1H10H424H20H504H40H6a

9、aH80H7本论文中使用了3个数码管,其中前两位使用动态扫描显示实测温度,在设置加热温度的时候,两个数码管是闪烁,以提示目前处在温度设置状态。第三位数码管静态显示符号“”。4.3 温度采集电路(1) DS18B20介绍Dallas最新单线数字温度传感器DS18B20简介新的“一线器件”体积更小、适用电压更宽、更经济。Dallas半导体公司的数字化温度传感器DS1820是世界上第一片支持“一线总线”接口的温度传感器。一线总线独特而且经济的特点,使用户可轻松地组建传感器网络,为测量系统的构建引入全新概念。DS18B20、DS1822“一线总线”数字化温度传感器同DS18B20一样,DS18B20也

10、支持“一线总线”接口,测量温度范围为 -55+125,在-10+85范围内,精度为0.5。DS1822的精度较差为2。现场温度直接以“一线总线”的数字方式传输,大大提高了系统的抗干扰性。其DS18B20的管脚配置和封装结构如图3-4所示。 图4-2 DS18B20封装引脚定义: DQ为数字信号输入/输出端; GND为电源地; VDD为外接供电电源输入端(在寄生电源接线方式时接地)。 (2)DS18B20的单线(1wire bus)系统单线总线结构是DS18B20的突出特点,也是理解和编程的难点。从两个角度来理解单线总线:第一,单线总线只定义了一个信号线,而且DS18B20智能程度较低(这点可以

11、与微控制器和SPI器件间的通信做一个比较),所以DS18B20和处理器之间的通信必然要通过严格的时序控制来完成。第二,DS18B20的输出口是漏级开路输出,这里给出一个微控制器和DS18B20连接原理图。这种设计使总线上的器件在合适的时间驱动它。显然,总线上的器件与(wired AND)关系。这就决定:(1)微控制器不能单方面控制总线状态。之所以提出这点,是因为相当多的文献资料上认为,微控制器在读取总线上数据之前的I/O口的置1操作是为了给DS18B20一个发送数据的信号。这是一个错误的观点。如果当前DS18b20发送0,即使微控制器I/O口置1,总线状态还是0;置1操作是为了是I/O口截止(

12、cut off),以确保微控制器正确读取数据。(2)除了DS18B20发送0的时间段,其他时间其输出口自动截止。自动截止是为确保:1时,在总线操作的间隙总线处于空闲状态,即高态。2时,确保微控制器在写1的时候DS18B20可以正确读入。由于DS18B20采用的是1Wire总线协议方式,即在一根数据线实现数据的双向传输,而对AT89S52单片机来说,硬件上并不支持单总线协议,因此,我们必须采用软件的方法来模拟单总线的协议时序来完成对DS18B20芯片的访问。 DS18B20的复位时序,如图3-5 图4-3 DS18B20的复位时序图 DS18B20的读时序对于DS18B20的读时序分为读0时序和

13、读1时序两个过程。对于DS18B20的读时隙是从主机把单总线拉低之后,在15秒之内就得释放单总线,以让DS18B20把数据传输到单总线上。DS18B20在完成一个读时序过程,至少需要60us才能完成。DS18B20的读时序图如图3-6所示。图4-4 DS18B20的读时序 DS18B20的写时序对于DS18B20的写时序仍然分为写0时序和写1时序两个过程。对于DS18B20写0时序和写1时序的要求不同,当要写0时序时,单总线要被拉低至少60us,保证DS18B20能够在15us到45us之间能够正确地采样IO总线上的“0”电平,当要写1时序时,单总线被拉低之后,在15us之内就得释放单总线。如

14、图3-7所示。图4-5 DS18B20的写时序图(3)DS18B20的供电方式在图3-8中示出了DS18B20的寄生电源电路。当DQ或VDD引脚为高电平时,这个电路便“取”的电源。寄生电路的优点是双重的,远程温度控制监测无需本地电源,缺少正常电源条件下也可以读ROM。为了使DS18B20能完成准确的温度变换,当温度变换发生时,DQ线上必须提供足够的功率。有两种方法确保 DS18B20 在其有效变换期内得到足够的电源电流。第一种方法是发生温度变换时,在 DQ 线上提供一强的上拉,这期间单总线上不能有其它的动作发生。如图3-8 所示,通过使用一个 MOSFET 把 DQ 线直接接到电源可实现这一点

15、,这时DS18B20 工作在寄生电源工作方式,在该方式下 VDD 引脚必须连接到地。 图4-6 DS18B20供电方式1另一种方法是 DS18B20 工作在外部电源工作方式,如图 3-9 所示。这种方法的优点是在 DQ 线上不要求强的上拉,总线上主机不需要连接其它的外围器件便在温度变换期间使总线保持高电平,这样也允许在变换期间其它数据在单总线上传送。此外,在单总线上可以并联多个 DS18B20,而且如果它们全部采用外部电源工作方式,那么通过发出相应的命令便可以同时完成温度变换。 图4-7 DS18B20供电方式2(4)DS18B20设计中应注意的几个问题DS18B20具有测温系统简单、测温精度

16、高、连接方便、占用接口线少等优点,但在实际应用中也应注意以下几方面的问题:较小的硬件开销需要相对复杂的软件进行补偿,由于DS18B20 与微处理器间采用串行数据传送。因此, 在对DS18B20 进行读写编程时,必须严格的保证读写时序,否则将无法读取测温结果。在DS18B20 有关资料中均未提及1Wire上所挂DS18B20数量问题,容易使人误认为可以挂任意多个DS18B20,在实际应用中并非如此。当1Wire上所挂DS18B20超过8个时,就需要考虑微处理器的总线驱动问题,这一点在进行多点测温系统设计时要加以注意。连接DS18B20的总线电缆是有长度限制的。实际应用中,测温电缆线建议采用屏蔽4

17、芯双绞线,其中一对线接地线与信号线,另一组接VCC 和地线,屏蔽层在源端单点接地。本文以广泛应用的数字温度传感器DS18B20为例,说明了1Wire总线的操作过程和基本原理。事实上,基于1Wire总线的产品还有很多种,如1Wire总线的E2PROM、实时时钟、电子标签等。他们都具有节省I/O资源、结构简单、开发快捷、成本低廉、便于总线扩展等优点,因此有广阔的应用空间,具有较大的推广价值。本设计将温度传感器DS18B20与单片机TXD引脚相连,读取温度传感器的数值。DS18B20与单片机连接图如图所示4-8所示。图4-8 DS18B20与单片机连接图5 水温表的软件设计本系统采用的是循环查询方式

18、,来显示和控制温度的。主要包括四段程序的设计:DS18B20读温度程序,数码管的驱动程序,键盘扫描程序,以及抱经处理程序。5.1主程序流程图初始化开始读D18B20温度转换显示温度返回图 5-1 主程序流程图5.2读取温度DS18B20模块的流程图由于DS18B20采用的是一根数据线实现数据的双向传输,而对AT89S52单片机来说,硬件上并不支持单总线协议,因此,我们必须采用软件的方法来模拟单总线的协议时序来完成对DS18B20芯片的访问。DS18B20单线通信功能是分时完成的,它有严格的时隙概念。因此系统对DS18B20的各种操作必须按协议进行。操作协议为:初始化DS18B20(发复位脉冲)

19、发ROM功能命令发存储器操作命令处理数据DS18B20虽然具有测温系统简单、测温精度高、连接方便、占用口线少等优点, DS18B20必须首先调用启动温度转换函数,根据数据手册上对应转换时间来超作,如为12位转换,则应该是最大750mS,另外在对DS18B20超作时,时序要求非常严格,因此最好禁止系统中断。由于DS18B20是在一根I/O线上读写数据,因此,对读写的数据位有着严格的时序要求。DS18B20有严格的通信协议来保证各位数据传输的正确性和完整性。该协议定义了几种信号的时序:初始化时序、读时序、写时序。所有时序都是将主机作为主设备,而每一次命令和数据的传输都是从主机主动启动写时序开始,如

20、果要求单总线器件回送数据,在进行写命令后,主机需启动读时序完成数据接收。数据和命令的传输都是低位在先。DS18B20的读时序:(1)对于DS18B20的读时序分为读0时序和读1时序两个过程。 (2)对于DS18B20的读时隙是从主机把单总线拉低之后,在15秒之内就得释放单总线,以让DS18B20把数据传输到单总线上。DS18B20在完成一个读时序过程,至少需要60us才能完成。DS18B20的写时序:(1)对于DS18B20的写时序仍然分为写0时序和写1时序两个过程。 (2)对于DS18B20写0时序和写1时序的要求不同,当要写0时序时,单总线要被拉低至少60us,保证DS18B20能够在15

21、us到45us之间能够正确地采样IO总线上的“0”电平,当要写1时序时,单总线被拉低之后,在15us之内就得释放单总线。 系统程序设计主要包括三部分:读出温度子程序、温度转换命令子程序、显示温度子程序。图5-2读取温度DS18B20模块的流程图程序代码为:unsigned int ReadTemperature(void)unsigned char a=0;unsigned int b=0;unsigned int t=0;Init_DS18B20();WriteOneChar(0xCC); / 跳过读序号列号的操作WriteOneChar(0x44); / 启动温度转换DelayMs(10)

22、;Init_DS18B20();WriteOneChar(0xCC); /跳过读序号列号的操作 WriteOneChar(0xBE); /读取温度寄存器等a=ReadOneChar(); /低位b=ReadOneChar(); /高位b=8;t=a+b;return(t); 6 水温表的系统调试6.1 硬件电路调试仔细检查所接电路,按照硬件原理图接线,理论上是能实现的,如果数码管不显示,则应该检查线路是否正确,或是因为单片机没有工作,还有集电极和发射极是否接对。如果只显示两个八,则可能是DS18B20没有接正确,检查上拉电路是否接好。如果能注意这些问题,电路基本不会出错。6.2 软件调试如果硬

23、件电路检查后,没有问题却实现不了设计要求,则可能是软件编程的问题,首先应检查初始化程序,然后是读温度程序,显示程序,对这些分段程序,要注意逻辑顺序,调用关系,除此之外,还要熟悉各语句的用法,以免出错。还有一个容易忽略的问题就是,源程序生成的代码是否烧入到单片机中,如果这一过程出错,那不能实现设计要求也是情理之中的事。硬件与软件调试相结合,仔细检查各个模块的设计,旧能顺利完成任务,实现设计要求,在调试过程中必须认真耐心,不能有一点马虎,否则遗漏一个小的问题就会导致整个设计的失败。总 结 通过本次的设计,使我们不仅对单片机这门课程有了更深刻的认识,懂得了如何运用课本知识结合实际来完成定时器的显示和

24、编程方法以及数码显示电路的驱动方法,使我们能够很快的适应现代控制技术发展的需求,同时也提高了我们的思维能力和实际操作能力,为以后更好的走上工作岗位奠定了坚实的基础。 另外,这次的设计还让我更进一步的认识了关于AT89S51等芯片的引脚功能以及使用方法,使我学会了应用不同的芯片来配合完成整个设计的操作。 在做硬件电路的这段时间里,从思考设计到对电路的调试经过了一些困难。同样在对软件进行设计时,也可为一路坎坷。但是通过对软硬件不断撞墙,不断思考解决问题的过程中,我学会了很多东西,同时对单片机也有了更深的认识。在做设计的时候,很需要耐心和对事物的细心,很多时候一个简单问题的一个简单的疏忽就会导致整个

25、电路的不工作,只有不断的检查不断的调试,才能真正完成一个设计的制作。只有不断的发现问题解决问题,才能从问题中改变自己,提升自己对单片机的能力。 此设计虽然能够完成温度的显示,但功能和精度有待于进一步提高。以后可以通过加入一些算法优化控制功能,并通过液晶显示屏实时显示温度,增加、拓展一些功能。 参考文献l 乐建波 编著温度控制系统化学工业出版社2 谢自美 编著 电子线路设计实验测试(第二版) 华中科技大学出版社 20003 陈东光 编著单片微型计算机原理及C语言程序设计华中科技大学出版社 2004.44 武庆生 仇梅 编著 单片机原理与应用 电子科技大学出版社 1998.25 谭浩强 编著C程序

26、设计.北京:清华大学出版社1999年6 华中理工大学电子学教研室编 电子技术基础模拟部分(第四版)高等教育出版社 1999.67 华中理工大学电子学教研室编 电子技术基础数字部分(第四版)高等教育出版社 2000.68 王彬 任艳颖 编著Digital IC System Design 西安电子科技大学出版社 2005.99 赵丽娟 邵欣编著基于单片机的温度监控系统的设计与实现 机械制造10 赵仁杰 编著 汽车电器设备 人民交通出版社 1998.10附录一:系统源程序#include /包含头文件,一般情况不需要改动,头文件包含特殊功能寄存器的定义#define DataPort P0 /定义

27、数据端口 程序中遇到DataPort 则用P0 替换sbit LATCH1=P22;/定义锁存使能端口 段锁存sbit LATCH2=P23;/ 位锁存sbit DQ=P13;bit ReadTempFlag;/定义读时间标志unsigned char code dofly_DuanMa10=0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f;/ 显示段码值09unsigned char code dofly_WeiMa=0xfe,0xfd,0xfb,0xf7,0xef,0xdf,0xbf,0x7f;/分别对应相应的数码管点亮,即位码unsign

28、ed char TempData8; /存储显示值的全局变量/*- 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 Delay

29、Ms(unsigned char t) while(t-) /大致延时1mS DelayUs2x(245); DelayUs2x(245); /*- 18b20初始化-*/bit Init_DS18B20(void) bit dat=0; DQ = 1; /DQ复位 DelayUs2x(5); /稍做延时 DQ = 0; /单片机将DQ拉低 DelayUs2x(200); /精确延时 大于 480us 小于960us DelayUs2x(200); DQ = 1; /拉高总线 DelayUs2x(50); /1560us 后 接收60-240us的存在脉冲 dat=DQ; /如果x=0则初始化

30、成功, x=1则初始化失败 DelayUs2x(25); /稍作延时返回 return dat;/*- 读取一个字节-*/unsigned char ReadOneChar(void)unsigned char i=0;unsigned char dat = 0;for (i=8;i0;i-) DQ = 0; / 给脉冲信号 dat=1; DQ = 1; / 给脉冲信号 if(DQ) dat|=0x80; DelayUs2x(25); return(dat);/*- 写入一个字节-*/void WriteOneChar(unsigned char dat) unsigned char i=0;

31、 for (i=8; i0; i-) DQ = 0; DQ = dat&0x01; DelayUs2x(25); DQ = 1; dat=1; DelayUs2x(25);/*- 读取温度-*/unsigned int ReadTemperature(void)unsigned char a=0;unsigned int b=0;unsigned int t=0;Init_DS18B20();WriteOneChar(0xCC); / 跳过读序号列号的操作WriteOneChar(0x44); / 启动温度转换DelayMs(10);Init_DS18B20();WriteOneChar(0x

32、CC); /跳过读序号列号的操作 WriteOneChar(0xBE); /读取温度寄存器等(共可读9个寄存器) 前两个就是温度a=ReadOneChar(); /低位b=ReadOneChar(); /高位b4; TempL=temp&0x0F; TempL=TempL*6/10;/小数近似处理 TempData1=dofly_DuanMa(TempH%1000)/100; /十位温度 if(TempH/1000=0)&(TempH%1000)/100=0)/消隐 TempData1=0; TempData2=dofly_DuanMa(TempH%100)/10; /十位温度 TempDat

33、a3=dofly_DuanMa(TempH%100)%10|0x80; /个位温度,带小数点 TempData4=dofly_DuanMaTempL; TempData6=0x39; /显示C符号 /*- 显示函数,用于动态扫描数码管 输入参数 FirstBit 表示需要显示的第一位,如赋值2表示从第三个数码管开始显示 如输入0表示从第一个显示。 Num表示需要显示的位数,如需要显示99两位数值则该值输入2-*/void Display(unsigned char FirstBit,unsigned char Num) static unsigned char i=0; DataPort=0;

34、 /清空数据,防止有交替重影 LATCH1=1; /段锁存 LATCH1=0; DataPort=dofly_WeiMai+FirstBit; /取位码 LATCH2=1; /位锁存 LATCH2=0; DataPort=TempDatai; /取显示数据,段码 LATCH1=1; /段锁存 LATCH1=0; i+; if(i=Num) i=0;/*- 定时器初始化子程序-*/void Init_Timer0(void) TMOD |= 0x01; /使用模式1,16位定时器,使用|符号可以在使用多个定时器时不受影响 /TH0=0x00; /给定初值 /TL0=0x00; EA=1; /总中

35、断打开 ET0=1; /定时器中断打开 TR0=1; /定时器开关打开/*- 定时器中断子程序-*/void Timer0_isr(void) interrupt 1 static unsigned int num; TH0=(65536-2000)/256; /重新赋值 2ms TL0=(65536-2000)%256; Display(0,8); / 调用数码管扫描 num+; if(num=300) / num=0; ReadTempFlag=1; /读标志位置1A boxer that only has front legs refuses to let his disability

36、hold him back as he charges across a beach with his four-legged pals.一条只有两条前肢的拳师犬不愿让残疾成为前进的障碍,他同其他四条腿的伙伴们一同在海滩上尽情狂奔。In an adorable video showing his first trip to the beach, Duncan Lou Who can been seen excitedly galloping along the sand and paddling in the water.这段可爱的视频展现了名叫Duncan Lou Who的狗第一次来到海边的场景,他兴奋地在沙滩上飞奔、或是趟水嬉戏

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

当前位置:首页 > 社会民生


经营许可证编号:宁ICP备18001539号-1