ImageVerifierCode 换一换
格式:DOCX , 页数:29 ,大小:896.73KB ,
资源ID:8965690      下载积分:3 金币
快捷下载
登录下载
邮箱/手机:
温馨提示:
快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。 如填写123,账号就是123,密码也是123。
特别说明:
请自助下载,系统不会自动发送文件的哦; 如果您已付费,想二次下载,请登录后访问:我的下载记录
支付方式: 支付宝    微信支付   
验证码:   换一换

加入VIP,免费下载
 

温馨提示:由于个人手机设置不同,如果发现不能下载,请复制以下地址【https://www.bingdoc.com/d-8965690.html】到电脑端继续下载(重复下载不扣费)。

已注册用户请登录:
账号:
密码:
验证码:   换一换
  忘记密码?
三方登录: 微信登录   QQ登录  

下载须知

1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。
2: 试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。
3: 文件的所有权益归上传用户所有。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 本站仅提供交流平台,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

版权提示 | 免责声明

本文(基于Arduino的机器人写字系统的设计与实现毕业论文.docx)为本站会员(聆听****声音)主动上传,冰点文库仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知冰点文库(发送邮件至service@bingdoc.com或直接QQ联系客服),我们立即给予删除!

基于Arduino的机器人写字系统的设计与实现毕业论文.docx

1、论文(设计)题目基于 Arduino 的机器人写字系统的设计与实现院 系 名 称计算机科学与技术系专业(班级)计算机科学与技术姓名(学号) 指导教师系负责人完成时间第一章 绪论11.1 课题的研究背景11.2 课题研究的目的和意义11.3 国内(外)研究现状11.4 论文的主要内容1第二章 系统分析32.1 需求分析32.2 可行性分析3第三章 系统设计与实现43.1 硬件设计与实现43.1.1 主控板模块53.1.2 舵机驱动模块63.1.3 霍尔传感器模块83.2 软件设计与实现93.2.1 系统软件模块划分93.2.3 起笔、落笔子程序功能实现113.2.4 电机驱动子程序功能实现113

2、.2.5 前进、停止子程序功能实现123.2.6 转弯子程序功能实现133.2.7 轮子行程计数子程序功能实现17第四章 软硬件调试214.1 硬件调试214.1.1 调试方法214.1.2 调试结果214.2 软件调试224.2.1 调试方法224.2.2 调试结果22第五章 系统测试245.1 测试方法245.2 测试与结果24结论26参考文献27致谢28附录29II基于 ARDUINO 的机器人写字系统的设计与实现本文以 DOODLE BOT 为基础,通过控制小车的运行轨迹,实现写字算法,掌握舵机、霍尔传感器的的原理和控制方法。硬件系统由控制板、舵机、霍尔传感器、电池组组成。各个模块协作

3、完成系统的功能。确定机器人落笔的位置,将要书写的字体的路线规划好,当机器人沿着这些路线行进,就会留下痕迹,从而完成书写功能。程序的书写在电脑上进行,检测无误后下载到板子上运行。计算机和控制板通过串口进行通信。通过设计、调试,系统最后能够实现所有英文字母、阿拉伯数字的书写。通过对字母的不同组合,可以完成单词的书写,进而实现对英文句子的书写。数字是 09,其余数字通过组合实现。也可以实现对指定汉子的书写。字体的精确度,不仅跟程序中的设计算法有关,在很大程度上取决于硬件器材的精确度。为了提高写字机器人的精确性,需要更精确的硬件器材做支撑。写字机器人可以用在科研、教学上。关键词:舵机;霍尔传感器;写字

4、算法;第一章 绪论1.1 课题的研究背景写字机器人的“始祖”,早在 240 年前就出现了。只是当时制造出的写字机器人,采用凸轮和发条实现,没有用到计算机、单片机等。通过凸轮间的运动实现写字动作,改变凸轮的组合,就会实现不同字体的书写1。这种书写方式可以看做是这个古老“写字机器人”的写字算法,只是这种算法,在改变字体的时候比较麻烦。2003 年 11 月,重庆大学申请了写字机器人的专利2 ,主要是通过采用复杂的Denav it- Hartenberg 方法对运动参数进行运算,实现写字算法3。其他典型的研究是关于自由度的研究,思想是确定始点和终点,采用插值算法,对机器人的轨迹进行规划4。1.2 课

5、题研究的目的和意义对于业余研究者来说,并不需要严密的写字算法实现简单的写字功能,只要能实现简单的写字算法,一定的误差都是可以允许的,至于写字算法,也就越简单越好。本次设计就是要寻找一种简单的写字算法,在设计和探索过程中,对掌握的知识进行总结, 提高自身的综合能力。这种简单的写字算法,不需要学习复杂的计算方法和公式,对写字机器人可以起到 一定的推广作用,可以让更多的机器人爱好者去研究写字机器人,算法的实现也增加了 写字机器人算法的多样性。对个人而言也是一次提升能力的机会。通过不断的学习,扩 展自己的知识面,同时将已存储的知识与新的知识点进行结合,实时更新自己的知识库。1.3 国内(外)研究现状我

6、国的写字机器人研究主要在矢量化算法和自由度算法,将字轨迹通过运算,转换成机器人要运动的路径。国外机器人的发展,目的性很强,主要用于军事和家务,对写字机器人的研究资料很少。1.4 论文的主要内容第一章:绪论。主讲课题的研究背景、目的和意义。 第二章:系统分析。包括分析系统的需求、是否可行。第三章:系统设计与实现。详细介绍整个系统的设计思路。第四章:软硬件调试。介绍编程前的硬件准备情况,如何进行软件调试,软硬件调试结果,以及调试过程出现的问题与解决方法。第五章:系统测试。介绍最终的测试情况,包括结果和分析。XXVIII第二章 系统分析2.1 需求分析本设计要求实现机器人的写字功能,由要求可知在写字

7、过程中需要实现以下功能: 提笔和落笔,前进,倒退,转弯。另外,还要能够实现计算机与主控板的通信。2.2 可行性分析基于上述对系统的需求分析,用 180 度旋转的舵机控制起笔和落笔,当舵机臂转到一定的角度后,实现支撑功能,笔尖会离开地面,这样就能实现提笔功能。落笔刚好相反,显然能够实现。用两个 360 度旋转的舵机控制车轮,给一个参数,通过PWM(Pulse-width modulation)转换、H 桥控制,就可以实现舵机的转动,即可以实现前进功能。因为 H 桥除的防反接电路,可以直接实现舵机的倒转,这样机器人的的倒退也就很容易实现了。转弯功能只需让一个轮子前进,另一个轮子倒退,就可以实现。综

8、上,本设计是完全可行的。第 3 章 系统设计与实现3.1 硬件设计与实现整个系统由舵机驱动,霍尔传感器感应,mini-drive 控制板,电池组四部分组成。图 3-1 开发板结构图控制板模块接收程序的命令,通过 H 桥对舵机模块进行控制,完成小车的行进动作。起笔和落笔的舵机模块是由主控板直接控制的,没有通过 H 桥。传感器模块是由霍尔传感器完成的,当小车运动的时候,霍尔元件就会在磁场中发生变化,从而记录小车的行程。电池组模块驱动舵机,为控制板提供电源。另外系统还有一些指示灯的模块。比如电池 组指示灯,串口指示灯等。图 3-2 基础系统结构图3.1.1 主控板模块(1) 电源电源采用稳压器 L4

9、941 LDO ,使得输入输出的电压差仅为 0.45V 。但是,如果输入的电压小于 5.4V ,就没有稳压效果。原则上输入的电压可以在 3.5V9V 之间。用四节1.5V 的电池就可以工作。电源端有防反接电路,这样,即使反接也不会烧坏电路。起到了安全保护的措施。(2) 串口图 3-3 电源原理图板子上的串口是必不可少的,最起码的功能就是要实现与电脑的通信,比如下载程序到处理器。还有些预留串口,可以外接串口设备,方便实现其他的功能,比如项目中有时会用到的蓝牙模块。在进行电脑与板子通信之前,要下载相应的驱动程序,在电脑上安装好后,便可以与板子进行通信。(3) 主控芯片板子的核心,也就是主控芯片是

10、Atmega8A 芯片。(4) 双电机驱动小车的两个轮子,各有一个独立的电机进行驱动。电机的驱动部分采用 MOSFET, 阻抗低,工作效率高,还能有效的减少发热。电机的控制部分采用的是 H 桥,三极管导通,驱动电机转动。3.1.2 舵机驱动模块1、舵机介绍(1)简介舵机也是电机的一种。当给它一个角度指令时,它就会转到指定的角度,好多机器人的关节部位用到的都是这种马达。比如有些大型机器人的手臂、膝盖等处会用到, 这种电机通过简单的操控就可以实现转动,对于机器人的控制相对来说比较简单5。图 3-4 舵机实物图(2) 内部结构在这个伺服马达的内部有一个小型的直流马达,为伺服马达提供动力。还有一个变速

11、的齿轮组,齿轮组来带动舵机臂的转动。舵机内部还有一个反馈电位器,“报告”转动情况。(3) 工作原理直流马达驱动齿轮组转动,电位器将检测结果反馈给控制系统,控制系统把反馈结果与参数进行比较,然后进行调整,直到转动到指定位置。这种反馈的机理可以大大提高舵机的精确度6。(4) 控制方法a、控制线:控制车轮的两个伺服马达有两条线,是电源线和地线。其中红色的是电源线,黑色的是地线。这两个电机的转动是通过 H 桥,并且在霍尔传感器的“配合”下完成的,因此不需要控制线。给控制线一定的脉冲波,舵机就会转到指定的位置。b、控制信号:输入一个周期性的正向脉冲信号,就可以驱动马达,脉冲的高电平时间一般是 12 毫秒

12、之间,低电平的时间是 520 毫秒之间。高电平维持的时间不同,转到的角度就会不同7。下表是脉冲与角度位置的关系:表 3-1舵机脉冲驱动输入的正脉冲私服马达的角度位置T=0.6ms-90T=0.89ms-45T=1.44ms0T=2.05ms+45T=2.32ms+902、舵机驱动算法脉冲宽度调制的基本思想就是:用数字脉冲来代替正弦波,或者是其他波形8。具体的来说,就好像是高等数学里的微积分学。比如将正弦波的半个周期的波形进行 M 等分,半周期的波形就变成了 M 个彼此相连的、宽度相等且幅值不等的脉冲,并且幅值不是平行于水平坐标轴的,而是倾斜的直线,如果加两条垂直于坐标轴的直线,就是直角梯形,而

13、不是矩形。把这些直角梯形近似的转换为矩形,得到的矩形是等宽的, 但是高度是不一样的。然后把每个矩形的高度转变成相等的,每个矩形的面积依旧和原来一样,即要改变它们各自的宽度。这样就会得到一序列等高不等宽的波形,称之为PWM 波形。通过转换以后,幅值不再遵循正弦规律,相对的波形的宽度却遵循了正弦规律。图 3-5PWM 的占空比3.1.3 霍尔传感器模块霍尔传感器采用的是一种磁电效应原理。原理如下图所示,在磁场中放置一个霍尔半导体片,磁场的方向垂直于导体面从上到下。有电流从 A 到 B 流通时,电流会偏向一侧,在 CD 方向上产生电位差 U,U 就是所谓的霍尔电压9。本次设计,霍尔传感器是用来记录小

14、车行驶的行程的。因为在写字的时候需要控制小车行驶的距离,这个距离就是靠霍尔传感器记录,然后反馈给处理器,处理器采取“多退少补”的原则,对小车进行控制。在两个车轮上分别有两个圆形的金属片,这两个金属片是有磁性的,而且是断断续续的,当车轮转动时,霍尔元件就会在这个变化的磁场中产生变化的电压,每变化一次就记录一次。图 3-6 霍尔效应原理图图 3-7 霍尔元件实物图3.2 软件设计与实现软件设计主要包括起笔和落笔,车轮的转动,霍尔传感器的反馈等。先书写相应的程序块,以函数的形式体现,然后在主程序中调用这些函数。程序部分主要有,起笔和落笔,书写时要驱动舵机旋转,将笔放下。书写结束时或者不进行书写时要将

15、笔抬起来;记录车子的行程,在两个轮子旁边的传感器,会以产生中断的方式对行程进行计数;写字部分,这部分是重点,涉及到小车的前进、转弯等。将要书写的字进行分析,然后规划小车的轨迹,进行编程。3.2.1 系统软件模块划分根据上述思想,将程序划分如下。引脚的宏定义部分,起笔函数,落笔函数,前进、停止函数,转弯函数,电机驱动函数,空格函数,主函数,所有的字母函数规划好,放 在一个文件里,这样也可以在主函数中直接调用。这样如果想进行书写字体的更改,只 需改动相应的函数即可,无需改动其他不相关程序。也可以通过改变在主函数中的调用 次序,来改变书写字母的先后顺序,这样就可以拼写出不同的单词。也可以将单词所用

16、的字母函数封装起来,直接在主函数进行调用。写字的思想是将大写的英文字母放在一个的表格中,表格形式可以多样化,例如下面的 46 表格。通过 Go()函数和 Turn()函数的不同组合,来对字母进行书写。放在表格中,能够使所有的字母字形大小不致差别太大,另外,每个方格可以代表轮子“一步” 的距离,这样,根据格子数就可以知道车需要形式的距离,方便编写程序。3.2.2 主程序的设计实现图 3-8 字母规划表图 3-9 主程序流程图定义变量是定义的全局变量,这些变量包括左右轮子的速度、模拟量、传感器产生的中断中的计数变量等。在初始化设置中,设置中断引脚(中断函数将在下面进行介绍),设置串口的波特率,打开

17、串口,设置引脚为输出模式等。循环体模块,主要是调用子函数,完成想写的单词或者是句子。3.2.3 起笔、落笔子程序功能实现起笔和落笔是通过驱动舵机旋转实现的,根据舵机旋转的原理,给舵机一个参数值, 使它转到指定的位置。抬笔就是让舵机的臂作为支撑,设置为 90 度角,信号脉冲中的高电平的时间是 1.44 毫秒,落笔的时候,舵机臂不再有支撑作用,转到零度角。因为每个脉冲会使舵机转到一定的角度,所以要有多个脉冲才能达到指定的位置。一旦达到了指 定的位置,舵机就不会再继续转动了。落笔的程序 Down()和起笔很是相似,只是转动的角度不一样。即用到的信号脉冲中的高电平的时间是 2.0 毫秒。控制笔的子程序

18、流程图如下所示:图 3-10 控制笔的子程序流程图3.2.4 电机驱动子程序功能实现在主程序中定义的全局变量,即左右轮子的速度,在这里就要用到。给左右轮子的速度变量一个值,要在 0255 之间,硬件部分已介绍到,这里的驱动用到的是 PWM 算法, 因此值应该在 0255 之间。在赋值的时候,默认是正值代表正向旋转,负值代表反向旋转,可是在 H 桥中,方向和速度的定义是分开的,因此在写入模拟量的时候要取绝对值, 方向则另外根据值的正负来定。3.2.5 前进、停止子程序功能实现停止的子程序相对于前进而言非常简单,首先介绍一下停止的子程序。这个程序非常的简单,只是将速度设置为 0,然后调用了上面讲到

19、的电机驱动程序。下面介绍一下前进子程序。在这个子程序中,会有一个参数,这个参数是要前进的距离,在进行函数调用的时候,要加上参数值。行驶的过程中会有霍尔传感器进行计数, 计数的值如果达到了事先输入的参数值,小车就会停止运行,进行下一次循环。参数值 是要行驶的距离,这里只能是整数,使之能够与传感器的计数进行比较。这里的参数值可以是正也可以是负,正数是前进,负数是后退。同样左右速度的设置,要取绝对值。小车的两个轮子是由两个电机控制的,在行驶的时候要分别进行调制,为了保证两个轮子尽量同步,实时比较两个轮子形式的速度,快的那个就先停止一次,这样仔细的看时,两个车轮就像人的两条腿那样一前一后的在走。这里判

20、断谁运行的快是通过在相同的时间里比较他们行驶的路程实现的,上面已经介绍,记录行驶的行程是靠霍尔传感器实现的。为了保证两个轮子“公平竞争”,程序开始,要将记录行程的两个变量清零。程序流程如下:图 3-11 前进子程序流程图3.2.6 转弯子程序功能实现在转弯时两个轮子都转动,只是一个轮子向前转,另一个轮子向后转。小车在转动的时候两个轮子和笔的位置都是变化的,为了确认下次落笔的位置,必须找到一个不变的量,在转的过程中唯一一个不变的量就是连接两个轮子直径的中点。下面把小车简化,进行分析。黑色的字体“A”是要进行书写的字,红色的部分是简化的小车形状,图中“O”是小车转弯时的不动点,可以称它为小车的中心

21、,L 是笔尖到中心的长度。如下图所示,小车从字母的左下角开始书写,当写到字母的 1 处时,需要转弯,这时,笔尖的位置在 1 处,如果直接转个 45 度角,笔尖并不能落到指定的线路上。首先把笔抬起来,继续走 L 个长度,这时,小车的中心点就会落在 1 处,然后旋转45 度。但是,这时候的笔尖并不在 1 处,不能接着上次起笔的地方书写。从图中可以清楚的看到只需在这个基础上倒退 L 的长度即可。3-12 小车转弯示意图一图 3-13 小车转弯示意图二如上图 3-13,小车若要转动 45 度角,轮子所走的路程如图虚线部分。两个轮子间的距离是已知的,虚线的长度是整个圆周的八分之一,通过计算可以算出其长度

22、。直径大约为 7.7 厘米, 再者小车每一“步”的距离是 1.57 厘米,算出整个圆周需要约 15.6 步, 转 45 度角需要八分之一的总的步数,因此需要 1.95 步,即为 2 步。在程序的初始部分, 设置每个角度所对应的“步数”,这个步数,可以与霍尔传感器的计数直接进行比较,判 断是否达到参数要求。小车转过 45 度角所要行驶的步数计算过程如下:n=3.147.7(45360)1.57 (3.1)如下图,转动的角度和需要转动的步数之间的关系10。图 3-14 转动角度和步数关系示意图程序流程如下:图 3-15 转弯子程序流程图3.2.7 轮子行程计数子程序功能实现上面多次提到霍尔传感器的

23、计数部分,这里详细的进行介绍。霍尔传感器的计数, 是通过中断实现的,将左、右两个传感器分别接在 2、3 引脚上,中断的方式设置为CHANGE 型。在轮子上的圆形金属片,里面的磁场是不连续的,这样就会产生电流引起中断,每次中断都计数一次。轮子行驶一周的时候,传感器的状态会改变八次,即为四次高电平和四次低电平。第四章 软硬件调试4.1 硬件调试4.1.1 调试方法对于写字功能而言,所要测试的就是,看看电路连接是否正确,能否正常通电,串 口能否正常进行工作。所以,调试方法就是,组装好后,打开电源,看看指示灯是否亮; 通过 USB 线与电脑进行连接,查看串口指示灯,并查看电脑的驱动模块。输入简单的运动

24、程序后,小车能够正常的行驶。4.1.2 调试结果通过调试,看到小车能够正常的工作,并能够通过串口与电脑进行信息交流。输入 简单的运动模块程序后,小车能够行驶一段距离,说明霍尔传感器部分工作都是正常的, 同时,电路连接是没有问题的。调试初期,下载程序到小车的处理器后,小车是倒着走的,这就说明了电源的正负极反了,这里有 H 桥,反向的电压不会损害线路,只是改变轮子的转动方向。左右轮子的电源线、地线反接并不会出现故障,只是轮子的转向会改变。两个轮子的电源线交换时,会引起一个轮子转,而另一个不转的情况。出现这种结果并不奇怪, 当电源线交换时,左轮的速度参数就会输给右边的轮子。前进的子程序设计,是“时间

25、上同步,时刻上异步”的,右边轮子的计数会多于左轮,右边轮子的速度被设置为零, 但这时速度却输给了左边的轮子,这样就会造成“恶性循环”,就会出现原地转圈的现象。交换两个霍尔传感器,也会出现同样的情况。交换后,左边轮子的计数会反馈给右边的轮子,如果左边的计数多于右边的计数,那么左边轮子的速度应该为零,但是速度却反馈给了右边的轮子,右边的轮子计数依旧小于左边轮子计数,同样会转圈。4.2 软件调试4.2.1 调试方法程序分为了多个子程序,调试起来比较方便,只需在主程序中调用需要调试的子函数即可。程序的运行分为两个步骤,第一步就是要在电脑进行编译,这时候能够查出程序中的语法错误;第二步就是将程序下载到板

26、子上进行运行,通过小车的动作,来判断逻辑性错误,纠正思路、方法。比如起笔和落笔,将程序下载好后,打开小车的电源,看控制笔的舵机的选装情况, 也可以把笔放上去,看看笔的动作。4.2.2 调试结果控制笔的舵机会根据参数转到指定的位置,每个角度对应的位置都是固定的。抬起和落下只是将舵机臂进行旋转,Down()是将笔放下,这里设置的是舵机转向零度位置,UP()就是将笔抬起,这里将其转向 90 度位置。舵机的控制要有一定时间周期的数字信号, 每个周期的脉冲信号,会使舵机转动一定的角度。对于旋转的情况,有两种。两个轮子都转的时候,45 度的对应值是 34,一个倒转, 一个正转,负数是顺时针旋转;正数是逆时

27、针方向旋转。通过运行一段的距离,可以发现两个轮子并不是同步的,这里有点像操作系统中讲到的“时间是同步的,时刻是异步的”。特别是在书写平面不平的时候,画出来的直线简直就是波浪线,而且是大波浪的。设置的速度对于小车写出的字的规整性特别重要,速度不适合,写出的字出现的误差就会越大,通过多次尝试,选择比较合适的速度。如图 4-1 所示,左边的不是理想的速度,可以看出存在很多的误差,右边的是经过调试后的理想速度,误差就比较小了。图 4-1 测试结果比较示意图程序设计时,因为两个轮子不是同步的,所以会将两个轮子的计数进行比较,如果 不进行比较,就会出现较大的误差,如下图 4-2所示,虽然在转弯的时候还是进

28、行两个轮子的计数比较,但是可以看出误差依然很明显,如果在转弯的时候也没有比较的过程, 字就不成形了。图 4-2 测试结果比较示意图第五章 系统测试5.1 测试方法系统的测试方法就如同上面所讲的软件测试方法。根据表格中字母的笔画顺序及所占的格子数书写字母,组成一个字母库,方便以后写成单词,甚至句子。在主程序中直接调用字母函数,写到开发板。准备书写用的纸,打开电源,让小车的头朝向右手边, 小车就会自动进行书写。细心观察小车的运动情况,通过写出的字体对程序进行修改、完善。采用不同的笔画顺序,查看字的精确度,确认最佳书写路径。5.2 测试与结果在不断的调试中,我发现前进比倒退精确,逆时针比顺时针精确,

29、所以在我对程序完善的时候尽量的采用前进方式去书写,转弯的时候也尽量采取逆时针。小车写出来的字体并不是完全的精确,有的字母甚至看起来有点不像。设计的字体如果越小,就是每个字所在的表格数越少,字体的精确度就越低。图 5-1 英文字母调试结果示意图结论通过这次设计,我学到了不少新的知识。未知的东西并不可怕,关键是要去学习。不能看到不会的东西就放任不管。在设计的中期,因为初期看的资料和后来小车所用的硬件资料有些不同,一下子就很茫然,没有一点头绪,思路也很乱,就把工作进程放在一边了。中期的检查,又逼着自己重新把那些所谓陌生的知识捡起来,一点一点的硬着头皮看,到处去查资料,询问老师、同学。功夫不负有心人,只要肯学还是能学会的。虽然与其他同学相比,落后了很多,可是,掌握了关键的知识点,其他的就迎刃而解了,落下的东西,也会补回来。因为需要学习的东西很多,因此下了好多的资料。总想着把所有的资料都看了,觉得这样就会掌握的比较好一点,可以了解更多的知识。看了一些才发现有好多资料都是重的,还有的都是一个意思,就是换了一些说法。通过后来的设计才知道,有些知识并不是很重要,知道就行了,而有些重要的知识,却没有及时的去看。陆游有句诗“射人先射马,擒贼先擒王”,

copyright@ 2008-2023 冰点文库 网站版权所有

经营许可证编号:鄂ICP备19020893号-2