资源描述
“发明杯发明杯”大学生创新大赛作品大学生创新大赛作品 题 目: 无线遥控玩具小车设计与制作 目目 录录摘要1引言31 方案设计与论证 41.1 直流调速系统 4 1.2 防碰撞系统5 1.3 显示系统52 硬件设计 5 2.1 小车系统框图5 2.2 单片机最小系统设计62.3 电机驱动电路设计72.4 遥控发射接收电路设计9 2.4.1 无线发送电路 10 2.4.2 无线接收电路 11 2.5 检测系统设计11 2.5.1 速度检测设计 11 2.5.2 防跌落系统设计 12 2.5.3 防碰撞系统设计 132.6 显示电路设计13 2.7 单片机 I/O 口的分配14 2.8 电源设计14 2.9 小车车体设计143 软件设计 15 3.1 主程序设计153.2 PWM 子程序设计17 3.3 遥控子程序 18 3.4 防跌落、碰撞子程序 20 3.5 显示子程序 21 4 结果分析及结论 22 5 谢辞 236 参考文献 23附件 1 程序清单 24附件 2 硬件电路图 33附件 3 电路 PCB 图 34无线遥控玩具小车设计与制作无线遥控玩具小车设计与制作 摘要摘要: : 80C51 单片机是一款八位单片机,他的易用性和多功能性受到了广大使用者的好评,该课题的基本思想是设计一台能够遥控行走并自动回退防止跌落的机器小车。遥控接收端以 80C51 单片机为控制核心,其中数据的发射和接收部分通过无线通讯模块完成。可通过发射端来控制小车的直流电机实现无极调速, 遥控小车进行转向, 并能在液晶上显示出小车的实时速度值。小车还能自动检测落差较大的落差,遇到楼梯等低处会自动回避,以防止小车由高处摔落。关键词关键词: :80C51 单片机、PWM 调速、遥控小车 引言引言在我国,单片机已不是一个陌生的名词,它的出现是近代计算机技术的里程碑事件,因为单片机的诞生标志着计算机正式形成了通用计算机系统和嵌入式计算机系统两大分支。在单片机诞生之前,为了满足工控对象的嵌入式应用要求,只能将计算机进行机械加固、电气加固后嵌入到对象体系中构成自动控制。但由于体积过大,无法嵌入到大多数对象体系,如家电、玩具、仪器仪表等。单片机则应嵌入式应运而生。单片机的微小体积和极低的成本,可广泛应用到如玩具、家电、仪器仪表、汽车电子系统、工业控制单元、办工自动化系统、金融电子系统、个人信息终端及通信产品中,成为现代化电子系统中最重要的智能化工具。本系统以 80C51 单片机为核心器件,由一块液晶显示小车的运动数据,采用L298N 来驱动控制电机的正反转,利用无线遥控装置对小车进行遥控,实现具有前进、后退、左移和右移四种运动方式。利用光电一体化红外线传感器,检测落差较大的地方,实现自己判定,并自己避免落到落差较大的地方。利用微动开关,实现小车碰撞到物体后能自动回避,从而达到遥控智能控制的目的。基于单片机控制的设计思想,选用廉价的遥控编码解码集成电路(PT2262/PT2272)采用 LM298N 芯片驱动直流电机,通过 PWM 实现调速,在小车的外围安置红外传感器。实现小车的无级调速控制 ,小车调试性能稳定。这种遥控方案能实现对电动小车的运动状态进行实时控制,控制灵活、可靠,精度高,可满足对系统的各项要求。1 1 设计方案与论证设计方案与论证根据设计的要求,确定如下方案:在现有玩具电动小车的基础上,加装光电检测器,无线模块,实现对电动小车的无线遥控,能对小车的速度、位置、运行状况的实时控制,并将测量数据传送至单片机进行处理,由单片机根据所检测的各种数据送液晶显示出来。1.11.1 直流调速系统直流调速系统方案一:静止可控整流器。方案二:脉宽调速系统。方案一:静止可控整流器。 V.M 系统是当今直流调速系统的主要形式。它可以是单相、三相或更多相数,半波、全波、半控、全控等类型,可实现平滑调速。V.M 系统的缺点是晶闸管的单向导电性,它不允许电流反向,给系统的可逆运行造成困难。它的另一个缺点是运行条件要求高,维护运行麻烦。最后,当系统处于低速运行时,系统的功率因数很低,并产生较大的谐波电流危害附近的用电设备。方案二:脉宽调速系统。 采用晶闸管的直流斩波器基本原理与整流电路不同的是,在这里晶闸管不受相位控制,而是工作在开关状态。当晶闸管被触发导通时,电源电压加到电动机上,当晶闸管关断时,直流电源与电动机断开,电动机经二极管续流,两端电压接近于零。脉冲宽度调制(Pulse Width Modulation) ,简称 PWM。脉冲周期不变,只改变晶闸管的导通时间,即通过改变脉冲宽度来进行直流调速。与 V.M 系统相比,PWM 调速系统有下列优点:(1)PWM 调速系统的开关频率较高,仅靠电枢电感的滤波作用就可以获得脉动很小的直流电流,电枢电流容易连续,系统的低速运行平稳,调速范围较宽。由于电流波形比 V.M 系统好,在相同的平均电流下,电动机的损耗和发热都比较小。(2)同样由于开关频率高,若与快速响应的电机相配合,系统可以获得很宽的频带,因此快速响应性能好,动态抗扰能力强。根据以上综合比较,以及本设计中受控电机的容量和直流电机调速的发展方向,本设计采用了 H 型单极型可逆 PWM 变换器进行调速。脉宽调速系统的主电路采用脉宽调制式变换器,简称 PWM 变换器。脉宽调速的驱动能力有限。为顺利实现电动小汽车的前行与倒车,本设计采用了可逆 PWM 变换器。可逆 PWM 变换器主电路的结构式有 H 型、T 型等类型。我们在设计中采用了常用的双极式 H 型变换器,它是由 4 个三极电力晶体管和 4 个续流二极管组成的桥式电路。1.21.2 防碰撞系统防碰撞系统障碍物的检测方案(1)利用超声波探测传感器可以在较远的距离就可以检测到前方的障碍物,但超声波探测传感器的价格昂贵,电路需要调试、验证,用于遥控小车上会大大增加小车的成本,并不合适。(2)利用红外一体化光电传感器电路简单,但受外界的条件的干扰比较大,还有对于黑色的障碍物体不能辨别,因为黑色会吸收红外光,造成检测不到黑色物体,对小车的运动会影响。(3)利用微动开关传感器利用微动开关传感器检测障碍,价格便宜,而且是硬件结构,结构简单,实用性强,当碰到障碍物时微动开关就马上动作,避开障碍物,不用外接电路,也不用电源,可以节约电能的使用。我们从经济实用的方面考虑,在此我们采用第三种方案。1.31.3 显示系统显示系统(1)采用数码管显示数码管显示具有高亮的特性,但数码管的驱动电流比较大,要外加驱动电路,会增加小车的成本,而且占用单片机的 I/O 口资源和单片机资源较多,并且此电路要用多位数码管显示,使电路变的更复杂。(2)采用液晶显示液晶显示器以其微功耗、体积小、显示内容丰富、超薄轻巧的诸多优点,在袖珍式仪表和低功耗应用系统中得到越来越广泛的应用,采用液晶能直观的将速度显示给用户,2 行 16 个字的 1602 液晶模块比较常用,而且液晶的显示都已经模块化,我们直接就可以用。所以我们采用第二中方案更实用方便,用液晶显示。2 2 硬件设计硬件设计2.12.1 小车系统框图小车系统框图小车主要由信号传感器,信号处理电路,无线发送模块,无线接收模块,单片机小系统,电机驱动电路,直流电机以及液晶显示电路等组成。小车的系统框图如图 2.1 所示。 图 2.1 小车系统框图小车控制采用 AT89C51 单片机,通过控制电机驱动电路来驱动电机的运行。无线接收模块接单片机,利用无线发送模块遥控器给接收模块发送无线信号,控制小车的运动,液晶上显示小车的实时速度。当避障传感器或防跌落传感器测得信号时候,单片机能自己控制电机左转或者右转,避免小车碰撞和跌落。2.22.2 单片机最小系统设计单片机最小系统设计80C51 是片内有 ROM/EPROM 的单片机,因此,这种芯片构成的最小系统简单、可靠。80C51 单片机最小系统是整个小车的控制核心,负责小车的各种信号的处理计算,控制小车的运行,就犹如小车的“大脑” 。 单片机最小系统电路组成如图 2.2 所示。Y 111 .05 92 MH zC 520 PC 620 P+ C 722 uR 210 KV CCS2P1.01P1.12P1.23P1.34P1.45P1.56P1.67P1.78R EST9R XD10T XD11IN T012IN T113T 014T 115W R16R D17X TA L218X TA L119G ND20P2.021P2.122P2.223P2.324P2.425P2.526P2.627P2.728PSEN29A LE /P30E A/V P31P0.732P0.633P0.534P0.435P0.336P0.237P0.138P0.039V CC40U 3A T8 9S5 1192837465R P110 K复位MCUV CCP15P16P17P33P36P10P11P12P13P14P30P31P32P34P35P37P00P01P02P03P04P05P06P07R ESTP26P27PWM 1PWM 2IN PU T 1IN PU T 2P24P25S1SW -SPS TD 5L EDR 11KC 9103C 8100uFV CC图 2.2 单片机最小系统电路 单片机最小系统组成:(1)时钟电路80C51 虽然有内部振荡电路,但要形成时钟,必须外部附加电路。80C51 单片机的时钟产生方法有两种。内部时钟方式和外部时钟方式。本设计采用内部时钟方式,利用芯片内部的振荡电路,在 XTAL1、XTAL2 引脚上外接定时元件,内部的振荡电路便产生自激振荡。本设计采用最常用的内部时钟方式,即用外接晶体和电容组成的并联谐振回路。振荡晶体可选用 12MHZ 的。电容值无严格要求,但电容取值对振荡频率输出的稳定性、大小、振荡电路起振速度有少许影响,CX1、CX2 可用 20pF 的此片电容。在设计印刷电路板时,晶体和电容应尽可能靠近单片机芯片安装,以减少寄生电容,更好的保证振荡器稳定和可靠地工作。(2)复位电路复位电路通常采用上电自动复位和按钮复位两种方式。最简单的上电自动复位电路中上电自动复位是通过外部复位电路的电容充电来实现的。只要 Vcc 的上升时间不超过 1ms,就可以实现自动上电复位。时钟频率用 12MHZ时 C 取 22uF,R 取 10K。除了上电复位外,有时还需要按键手动复位。按键手动复位有电平方式和脉冲方式两种。其中电平复位是通过 RST 端经电阻与电源 Vcc 接通而实现的。(3)单片机下载串口MAX232 芯片是美信公司专门为电脑的 RS-232 标准串口设计的接口电路,使用+5v单电源供电。MAX232 下载串口基本可分三个部分: R 1 IN13R 2 IN8T 1 IN11T 2 IN10GND15V+2V-6VCC16R 1 O UT12R 2 O UT9T 1 O UT14T 2 O UT7C 1+1C 1 -3C 2+4C 2 -5U 4232P31E 41U FE 3 IUFE 2 IUFE 1 1UFP30V CCV CC162738495J8D B9图 2.3 单片机下载口第一部分是电荷泵电路。由 1、2、3、4、5、6 脚和 4 只电容构成。功能是产生+12v 和-12v 两个电源,提供给 RS-232 串口电平的需要。第二部分是数据转换通道。由 7、8、9、10、11、12、13、14 脚构成两个数据通道。其中 13 脚(R1IN) 、12 脚(R1OUT) 、11 脚(T1IN) 、14 脚(T1OUT)为第一数据通道。8 脚(R2IN) 、9 脚(R2OUT) 、10 脚(T2IN) 、7 脚(T2OUT)为第二数据通道。TTL/CMOS 数据从 T1IN、T2IN 输入转换成 RS-232 数据从 T1OUT、T2OUT 送到电脑 DP9 插头;DP9 插头的 RS-232 数据从 R1IN、R2IN 输入转换成 TTL/CMOS 数据后从R1OUT、R2OUT 输出。第三部分是供电。15 脚 GND、16 脚 VCC(+5V) 2.32.3 电机驱动电路设计电机驱动电路设计由于单片机输出的电压信号不能直接驱动电机运行,所以单片机必须要通过电机驱动电路来控制电机的运行。直流电机采用 L298N 芯片来驱动控制电机正反转和低、高速度的运行。L298N 是SGS 公司的产品,内部包含 4 通道逻辑驱动电路。是一种二相和四相电机的专用驱动器,即内含二个 H 桥的高电压大电流双全桥式驱动器,接收标准 TTL 逻辑电平信号,故比较适合控制该小车类型的电机。L298N 内部结构如图 2.4 所示: 图 2.4 L298N 的内部电路电机驱动电路的设计如图 2.5 所示:12GND7VCC14U 1A74 AL S0 434U 1B74 AL S0 4V S4IN PU T 15IN PU T 27E NA BL E A6IN PU T 310IN PU T 412E NA BL E B11G ND8V SS9O UT PU T 12O UT PU T 23O UT PU T 313O UT PU T 414SE N SE A1SE N SE B15U 2L 298D 1D IO DED 2D IO DED 3D IO DED 4D IO DED 6D IO DED 7D IO DED 8D IO DED 9D IO DEC 210 0U FC 110 3V CC12 V12 VPWM 1PWM 212 V+6VC 310 0u FC 410 3IN PU T 2IN PU T 1动动动1动动动2动动动图 2.5 电机驱动电路单片机输出的控制信号 INPUT1,INPUT2 通过非门芯片 74LS04 后,接 L298N 的四个端口,电路如图 2.5 所示,通过变换 INPUT1,INPUT2 的高低电平就可以控制两个电机的正反转,这里非门的使用不但减少了单片机 I/O 口的使用,而且很容易的就能控制电机的正反转,使程序也简单很多。L298N 的芯片的供电电压为标准的 5V,电机驱动的供电电源为 12V。L298N 的输出最大电压为 46V,电流为 2.5A,驱动直流电机已经足够了。因为 L298N 内含二个 H 桥,所以可以同时控制两个直流电机,改变输入 6 脚和 11 脚的PWM 脉冲就可以分别调节输出电压,从而分别能控制两个直流电机的转速,互不影响,从而控制小车的速度,转向。2.42.4 遥控发射接收电路设计遥控发射接收电路设计通过遥控接收电路来手动遥控小车的运行,这就要求遥控接收电路要可靠的发送,接收,而且外界的干扰对接收电路要小。发射电路发射的无线信号频率要与空间其它的无线信号频率不一样,避免无线信号相互干扰。所以我们可以采用 PT2262/PT2272这一对无线发射和接受的芯片。PT2262/2272 是台湾普城公司生产的一种 CMOS 工艺制造的低功耗低价位通用编解码电路,PT2262/2272 最多可有 12 位(A0.A11)三态地址端管脚(悬空,接高电平,接低电平),任意组合可提供 531441 地址码,PT2262 最多可有 6 位(D0.D5)数据端管脚,设定的地址码和数据码从 17 脚串行输出,可用于无线遥控发射电路。编码芯片PT2262发出的编码信号由:地址码、数据码、同步码组成一个完整的码字,解码芯片PT2272接收到信号后,其地址码经过两次比较核对后,VT脚才输出高电平,与此同时相应的数据脚也输出高电平,如果发送端一直按住按键,编码芯片也会连续发射。当发射机没有按键按下时,PT2262不接通电源,其17脚为低电平,所以315MHz的高频发射电路不工作,当有按键按下时,PT2262得电工作,其第17脚输出经调制的串行数据信号,当17脚为高电平期间315MHz的高频发射电路起振并发射等幅高频信号,当17脚为低平期间315MHz的高频发射电路停止振荡,所以高频发射电路完全收控于PT2262的17脚输出的数字信号,从而对高频电路完成幅度键控(ASK调制)相当于调制度为100的调幅。PT2262 /PT2272 芯片引脚图 图 2.6 PT2262 引脚图 图2.7 PT2272引脚图2.4.12.4.1 无线发送电路无线发送电路无线遥控发射模块是由按键接收电路、遥控指令编码器、高频载波发生器、调制电路及发射电路等组成,如图 2.8 所示。在图 2.8 中,SB1SB4 为遥控指令操作键,PT2262 为遥控指令编码器,晶体管VT1 和声表面波谐振器 GD315 及外围元件一起构成了高频载波发生器与调制电路,L1既是发射天线,也是振荡电路的一部分。所使用的声表面波谐振器 GD315,具有频率一致性非常好,工作频率为 315MHz,且工作频率的稳定度极高。 图 2.8 无线电遥控发射模块电路无线遥控发射模块的工作过程是:当发射模块没有按键按下时,PT2262 不接通电源,其 17 脚输出低电平,使晶体管 VT1 截止,所以 315MHz 高频发射电路不工作。当SB1SB4 中有某个按键按下时,PT2262 得电工作,其 17 脚输出经过编码的串行数据(脉冲)信号,且当 17 脚为高电平期间,315MHz 高频发射电路起振并发射出等幅高频信号。编码器 PT2262 第 17 脚输出的编码信号是由地址码、数据码、同步码组成的一个完整码字。如果遥控器上的按键一直按下,则编码器 PT2262 也会不停地输出脉冲串。当 17 脚为低电平期间,315MHz 高频发射电路停止振荡。由此可知,高频发射电路完全受控于 PT2262 第 17 脚输出的数字信号,也就是说,高频电路对 PT2262 输出的编码信号完成幅度键控调制(ASK 调制) ,类似于调制度为 100的幅度调制。2.4.22.4.2 无线接收电路无线接收电路超外差式接收机具有温度适应性强,接收灵敏度高,工作稳定可靠,抗干扰能力强,产品一致性好,接收机的本振辐射低,性能指标好,容易通过 FCC 或者 CE 等标准的检测,但是价格较高,在广播电台、电视机等要求较高的场所使用。而超再生式接收机具有电路简单,成本低廉等优点,在无线电遥控系统中得到了广泛应用。本遥控系统接收模块采用了超再生接收方式。无线遥控接收模块是由选频放大接收电路、信号放大与波形转换电路、解码芯片PT2272 等组成,如图 2.9 所示: 图 2.9 无线接收模块电路 在图 2.9 中,由晶体管 VT1 和 VT2 组成了选频放大电路,用于接收遥控发射器发出的高频信号。由运算放大器 LM358 及外围元件组成了信号放大与波形转换电路,它把输入的正弦波信号转换为矩形脉冲后送到解码电路 PT2272 处理。解码电路 PT2272从输入的字符串中分离出地址码,并将其与从地址线输入的地址码进行两次比较核对后,其 VT 脚(17 脚)才输出高电平,与此同时和 PT2262 相对应的数据脚也输出高电平提供给单片机 I/O 口。2.2.5 5 检测系统设计检测系统设计2.5.12.5.1 速度检测设计速度检测设计 光电传感器灵敏度高、响应时间快,通过光电传感器来检测小车的运转而实现小车速度的检测。测速信号传感器安装在小车轮子边上,采用 LM324N 集成运放及外围电路组成红外检测电路作为测速信号传感器,实现对小车的速度信号的采集。速度检测原理如图所示,轮子转一周,输出四个脉冲,送单片机处理,然后由单片机计算出速度等值,送显示器显示出来。速度检测电路原理如图 2.10 所示。光码盘红外收发一体化信 号 处 理图 2.10 速度检测原理图P1.01.3 80C51 2.5.22.5.2 防跌落系统设计防跌落系统设计采用红外线光电一体化传感器用于检测路面的低洼处,将采集的高低电平信号经LM324N 电压比较器后,送出标准的高低电平送单片机处理。红外一体化光电传感器固定在小车底盘前沿,贴近地面。正常行驶时,发射管发射红外光照射地面,光线经地面反射后被接收管接收,输出高电平信号,小车遇到低洼处时,发射端发射的红外光线被吸收,接收端接收不到反射的红外光线,传感器输出低电平信号后送 80C51 单片机处理。本系统共设计两个光电一体化传感器,分别装置在小车车头的左、右两个位置,用来检测小车前方的状况,当左侧光电传感器不受到红外光照时,单片机控制小车向右转;当右侧光电传感器不受到红外光照时,单片机控小车向左转;当左、右两侧光电传感器都不受到红外光照时,单片机控制小车倒退。防跌落电路原理如图 2.11 所示:单 片 机图 2.11 防跌落电路原理图电路工作原理:如果是平的地面,红外光线会经过地面反射回来,反射到接收极,此时 U3U2,经运放比较后,输出高电平,送单片机处理。2.5.32.5.3 防碰撞系统设计防碰撞系统设计小车微动开关微动开关前图 2.12 微动开关的安装位置为防止小车碰撞障碍物时会碰坏,用两个微动开关装置装在小车的左前方和右前方,当障碍物碰到微动开关时候,小车会按单片机设计好的方案进行自动的避开障碍物体(左转、右转或者倒退) 。微动开关的设计位置如图 2.12 所示。2.2.6 6 显示电路设计显示电路设计显示的液晶采用了市面上较为普遍的 1602 液晶,显示容量为 16*2 个字符,该芯片的正常工作电压为 4.5V-5.5V,图 2.13 是单机片与液晶 1602 的接口电路。图 2.13 单机片与液晶的接口电路在使用 LCD 液晶的时候需要注意的是基本操作时序,LCD 液晶显示器基本的操作时表 2.2 液晶接口说明 序为:(1)读状态:输入:RS=L,RW=H,E=H,输出 D0D7=状态字。(2)写指令:输入:RS=L,RW=L,D0D7=指令码,E=高脉冲,输出无。(3)读数据:输入:RS=H,RW=H,E=H 输出 D0D7=数据。(4)写数据:输入:RS=H,RW=L,D0D7=数据,E=高脉冲,输出无。在读写操作的时候还需要注意的是对控制器每次进行读写操作之前,都必须进行读写检测。1602 液晶的接口说明如表 2.2 所示。2.72.7 单片机单片机 I/OI/O 口的分配口的分配P0 口 : P0.0PO.7 接液晶的 D0D7;P1 口: P1.0P1.3 接遥控发射的四个端口; P1.6,P1.7 接防跌落,碰撞电路; P2 口: P2.7,P2.6,P2.5 分别接液晶的 RS,RW,E; P2.1,P2.2,P2.3,P2.4 四个口控制电机驱动电路;P3 口: P3.1,P3.2 接下载串口电路; P3.2,P3.3 接速度检测电路;2.82.8 电源设计电源设计用 12V 的直流电压给直流电机的驱动电路模块单独供电,使电机驱动电路与单片机小系统之间不会通过电源而相互影响,而且可以保证电机的驱动电流足够大。用 6V电池给单片机系统以及检测电路供电,由于单片机的电源电压范围为 5V 左右,所以可以在单片机与 6V 电源之间串接一个 IN4007 二极管,利用二极管的正向压降,降低0.7V 的电源电压。2.92.9 小车车体设计小车车体设计可以采用左右两轮分别驱动,后万向轮转向的方案。即左右轮分别用两个转速和力矩基本完全相同的直流电机进行驱动,车体尾部装一个万向轮。这样,当两个直流电机转向相反,同时转速相同时就可以实现电动车的原地旋转,由此可以轻松的实现小车原地 90 度和 180 度的转弯。在安装时我们保证两个驱动电机同轴。当小车前进时,左右两驱动轮与后万向轮形成了三点结构。这种结构使得小车在前进时比较平稳,可以避免出现后轮过低而使左右两驱动轮驱动力不够的情况。为了防止小车重心的偏移,后万向轮起支撑作用。对于车架材料的选择,我们经过比较选择了有机玻璃。用有机玻璃做的车架比塑料车架更加牢固,比铁制小车更轻便,美观。 小车的结构图:如图 2.14 所示 万向轮电机电机左轮右轮图 2.14 小车的结构图3 3 软件设计软件设计 提高遥控小车智能控制的可靠性,仅靠硬件抗是不够的,需要借助于软件来实现。在单片机控制系统中,如能运用好的程序思路,将大大提高控制系统的可靠性,灵活性。而且可以减少硬件电路的设计,节约成本。在进行微机控制系统设计时,除了系统硬件设计外,大量的工作就是如何根据每个对象的实际需要设计应用程序。因此,软件设计在微机控制系统设计中占重要地位。对于本系统,软件也很重要。在单片机控制系统中,大体上可分为数据处理、过程控制两个基本类型。数据处理包括:数据的采集、数字滤波、标度变换等。过程控制程序主要是使单片机按一定的方法进行计算,然后再输出控制对象。为了完成上述任务,在进行软件设计时,通常把整个过程分成若干个部分,每一部分叫做一个模块。所谓“模块” ,实质上就是能完成一个单独的功能,相对独立的程序段,这种程序设计方法叫模块程序设计法。模块程序设计法的主要优点是:(1)单个模块比起一个完整的程序易编写及调试;(2)模块可以共存,一个模块可以被多个任务在不同条件下调用;(3)模块程序允许设计者分割任务和利用已有程序,为设计者提供方便;(4)利用模块化程序看上去比较清晰,便于读懂;本系统软件采用模块化结构,由主程序PWM 子程序、检测子程序避障子程序、显示子程序组成。3.13.1 主程序设计主程序设计主程序编写的时候,清楚各个子程序调用的顺序。 程序初始化遇到障碍,低洼处小车运行控制小车转弯,倒退,绕过障碍物NY脉冲计数图 3.1 小车程序流程图 PWMH1 DATA30H ;电机 1 高电平脉冲的个数 PWMH2 DATA31H ;电机 2 高电平脉冲的个数 PWM DATA 32H ;PWM 周期 COUNTER DATA 33H ;中断计数器 S1 BIT P2.3 ;电机 1 的输出 S2 BIT P2.2 ;电机 2 的输出 EN1 BIT P2.0 ;电机 1 的使能(左) EN2 BIT P2.1 ;电机 2 的使能(右) ORG 0000H AJMP MAIN ORG 000BH AJMP INTT0 ORG 001BH AJMP INT1 ORG 0030HMAIN: MOV R0,#00 MOV COUNTER, #00 MOV PWM, #150 MOV TMOD,#02H ;定时器 0 在模式 2 下工作 MOV TL0, #38H ;定时器每 200us 产生一次溢出 MOV TH0, #38H ;自动重装的值 SETBET0 ;使能定时器 0 中断 SETBEA ;使能总中断 SETBS2 ;电机 1 正转 CLRS1 ;电机 2 正转 SETBTR0 ;开始计时START: SJMP YAOKONG ;遥控子程序 SJMP BIZHANG ;避障子程序 SJMP XIANSHI ;显示子程序 SJMP START ;返回主程序 END3.23.2 PWMPWM 子程序设计子程序设计 脉冲 T 保持不变。改变 T0 的脉冲宽度就可以输出占空比可变的 PWM 脉冲。PWMT0T1T 图 3.2 PWM 示意图 COUNTER:MOV COUNTER,#00 MOVPWM, #150 MOVTMOD, #02H ;定时器 0 在模式 2 下工作 MOVTL0, #38H ;定时器每 200us 产生一次溢出 MOVTH0, #38H ;自动重装的值 SETB ET0 ;使能定时器 0 中断 SETB EA ;使能总中断 SETB S2 ;电机 1 正转 CLR S1 ;电机 2 正转 SETB TR0 ;开始计时INTT0: PUSH PSW ;现场保护 PUSH ACC INC COUNTER ;计数器加 1 MOV A ,COUNTER CJNE A, PWMH1, INTT00 ;如果等于高电平脉冲数 CLR EN1 ;P3.2 变为低电平INTT00:CJNE A,PWMH2, INTT01CLR EN2 ;P3.3 变为低电平INTT01:CJNE A,PWM,INTT02 ;如果等于周期数MOV COUNTER,#01H ;计数器复位SETBEN1 ;置 P3.0 为高电平SETBEN2INTT02:POP ACC ;出栈POP PSW RETI3.33.3 遥控子程序遥控子程序遥控器能遥控小车具有前进,后退,左转,右转的功能。遥控状态对应的单片机口的数值表如表 3.1 所示。 表 3.1 对应单片机口数值按键按键P1.0P1.0P1.1P1.1P1.2P1.2P1.3P1.3P1P1小车状态小车状态前100008H小车前进左010004H小车左转弯右001002H小车右转弯后000101H小车倒退不按000000H小车停YAOKONG:MOV A,P1 CJNE A,#00H,K1 ;没有按键按下时小车慢慢停止 STOP1: CLR P2.0 CLR P2.1 SJMP RETUN K1: CJNE A,#08H,K2 ;遥控小车前进 SETB S1 ;电机 1 正转 SETB S2 ;电机 2 正转 INC PWMH1 ;直行 JC LP1 INC PWMH2 ;加速 JC LP2 LCALL DELAY SJMP RETUN K2: CJNE A,#04H,K3 ;遥控小车左转 INC PWMH1 JC LP1 DEC PWMH2 JC LP4 LCALL DELAY SJMP RETUNK3: CJNE A,#02H,K4 ;遥控小车右转 INC PWMH2 JC LP2 DEC PWMH1 JC LP3 LCALL DELAY SJMP RETUN K4: CJNE A,#01H,RETUN ;遥控小车倒退 CLR S1 ;电机 1 反转 CLR S2 ;电机 2 反转 INC PWMH1 JC LP1 INC PWMH2 JC LP2 LCALL DELAY SJMP RETUNLP1: MOV PWMH1,#255 CLR C RET LP2: MOV PWMH2,#255 CLR C RET LP3: MOV PWMH1,#00H CLR C RET LP4: MOV PWMH2,#00H CLR C RET RETUN : RET 3.43.4 防跌落,碰撞子程序设计防跌落,碰撞子程序设计本设计的红外传感器有 2 个,分别安装在小车的前面。每个传感器所能检测的高度距离是 3cm。真值表中, “0”代表没有落差, “1”代表有低处落差,当小车检测到落差后,单片机会改变 PWM 值,控制小车做相应的动作,防止小车跌落。两个微动开关一样,也分别装在小车的左前方和右前方,真值表中, “0”代表没有检测到障碍物,“1”代表检测到障碍物,当小车检测到障碍物的时候,单片机会改变 PWM 值,用来驱动电机做相应的动作,避开障碍物。表 3.2 单片机执行的动作 左边左边(P1.6)(P1.6)右边右边(P1.7)(P1.7)小车小车0190 度左转1090 度右转11倒退00遥控 避障程序是否倒退小车倒退是否左转小车右转小车左转子程序返回NYN图 3.3 避障程序流程图3.53.5 速度显示程序速度显示程序设定定时的值计算速度值送液晶显示返回 图 3.4 速度显示流程图 XIANSHI: LCALL CALCULATE ;计算速度 LCALL DISPLAY ;显示 RET 结果分析及结论结果分析及结论在硬件的设计和焊接过程中,本着严谨、细心、逐块调试的原则。我采取了先逐个模块单独测试成功再集中焊接的原则。在硬件分块调试的过程中,我发现了如下几个问题:问题一:驱动电路焊接完成后直接给予信号输入端高低电平时,电机并无动作。起始时我还以为是焊点存在问题,用万用表逐点测试后发现并无异常,而且再次焊接检查后电机依旧没有动作。原因及解决办法:仔细研究了 L298N 的电路原理图,发现原以为不需要对电机运行参数进行测量,于是将相关的 SENA 与 SENB 悬空,而实际中,无论需要测量与否,这两个端口都需要直接或间接接地。我们将其接地后,电机即可按照给定信号完成预定动作。在所有的硬件检测完毕后,便开始了软件部分的调试与检测。在程序的检测中,程序基本的非逻辑性错误可以在用 MedWin 编译时由编译软件直接发现。问题二:程序在理论上是行的,并且利用 MedWin 的单步指令执行行时是对的,但是下载到单片机程序就乱了,或者有时候根本就没反应,检查程序并不能发现错误。原因及解决办法:编程的实际经验不足,有些时候并没考虑单片机的内部结构原理以及没很好的考虑实际的问题,理论与实际没结合好。这个问题需要我们多多编程,并把程序下载到单片机上试一下,一点点的改进不足,增长经验。附件附件 1 1 程序清单程序清单 PWMH1 DATA 30H ;电机 1 高电平脉冲的个数 PWMH2 DATA 31H ;电机 2 高电平脉冲的个数 PWM DATA 32H ;PWM 周期 COUNTER DATA 33H ;中断计数器 S1 BIT P2.3 ;电机 1 的输出 S2 BIT P2.2 ;电机 2 的输出 EN1 BIT P2.1 ;电机 1 的使能(左) EN2 BIT P2.0 ;电机 2 的使能(右) ORG 0000H AJMP MAIN0 ORG 000BH AJMP INTT0 ORG 0030HMAIN0: MOV R0, #0 MOV R6, #200 ;计数 1s MOV R7, #25MAIN: MOV P1, #00H MOV COUNTER, #00 MOV PWM, #250 MOV TMOD,#02H ;定时器 0 在模式 2 下工作 MOV TL0, #38H ;定时器每 200us 产生一次溢出 MOV TH0, #38H ;自动重装的值 SETB ET0 ;使能定时器 0 中断 SETB EA ;使能总中断 SETB TR0 ;开始计时 START: ACALL YAOKONG ;遥控子程序 ACALL BIZHANG ;避障子程序 ACALL XIANSHI ;显示子程序 SJMP START ;返回主程序 ;* YAOKONG: CJNE A,#00H,K1 ;没有按键按下时小车慢慢停止 STOP1: CLR P2.0 CLR P2.1 SJMP RETUN ;* K1: ANL A,#0FH CJNE A,#08H,K2 ;小车前进 SETB S1 ;电机 1 正转 SETB S2 ;电机 2 正转 INC PWMH1 ;直行 JC LP1 INC PWMH2 JC LP2 LCALL DELAY SJMP RETUN ;*K2: CJNE A,#04H,K3 ;小车左转 INC PWMH1 JC LP1 DEC PWMH2 JC LP4 LCALL DELAY SJMP RETUN;*K3: CJNE A,#02H,K4 ;小车右转 INC PWMH2 JC LP2 DEC PWMH1 JC LP3 LCALL DELAY SJMP RETUN ;* K4: CJNE A,#01H,RETUN ;小车倒退 CLR S1 ;电机 1 反转 CLR S2 ;电机 2 反转 INC PWMH1 JC LP1 INC PWMH2 JC LP2 LCALL DELAY SJMP RETUN;* 子程序 LP1: MOV PWMH1,#255 CLR C RET LP2: MOV PWMH2,#255 CLR C RET LP3: MOV PWMH1,#00H CLR C RET LP4: MOV PWMH2,#00H CLR C RET RETUN : RET ;*微动开关部分 BIZHANG: MOV A,P3 ANL A,#0F0H CJNE A,#30H,K6 ;小车倒退 CLR S1 ;电机 1 反转 CLR S2 ;电机 2 反转 MOV PWMH1,#50H MOV PWMH2,#50H LCALL DELAY SJMP RETUNK6: CJNE A,#10H,K7 ;小车左转 MOV PWMH1,#20H MOV PWMH2,#50H LCALL DELAY MOV PWMH1,#80H MOV PWMH2,#80H LCALL DELAY MOV PWMH1,#50H MOV PWMH2,#20H LCALL DELAY SJMP RETUN ;* K7: CJNE A,#20H,K8 ;小车右转 MOV PWMH1,#50H MOV PWMH2,#20H LCALL DELAY MOV PWMH1,#80H MOV PWMH2,#80H LCALL DELAY LCALL DELAY MOV PWMH1,#20H MOV PWMH2,#50H LCALL DELAYxp: SJMP RETUN XP1: SJMP STOP K9: CJNE A,#40H,K10 ;红外传感器,小车左转 MOV PWMH1,#20H MOV PWMH2,#50H LCALL DELAY MOV PWMH1,#50H MOV PWMH2,#50H LCALL DELAY LCALL DELAY MOV PWMH1,#50H MOV PWMH2,#20H LCALL DELAY SJMP xp;* K10: CJNE A,#80H,XP1 ;红外传感器,小车右转 MOV PWMH1,#50H MOV PWMH2,#20H LCALL DELAY MOV PWMH1,#50H MOV PWMH2,#50H LCALL DELAY LCALL DELAY MOV PWMH1,#20H MOV PWMH2,#50H LCALL DELAY SJMP xp ;显示XIANSHI: LCALL CALCULATE ;计数速度 LCALL L2 LCALL DISPLAY ;显示 SJMP LOOPINTT1: CLR TR0 MOV 51H,TH1 MOV 52H,TL0 MOV 50H,#0 MOV TH1,#15H ;定时 60ms MOV TL1,#0A0H SETB TR1 RETIINTT1: MOV TH1,#15H ;赋初值 MOV TL1,#0A0H DJNZ 50H,EXIT ;15 次完后 0.9 秒时间到 CLR TR0 ;关闭定时器 0 MOV 51H,TH0 MOV 52H,TL0 ;读计数值 MOV 50H,#15 MOV TH0,#0 ;重新赋为 0,又从 0 开始计数 MOV TL0,#0 SETB TR1 ;启动定时器 1 EXIT: RETI ;* ; 计算速度 ;* DISPLAY: LCALL CALCULATE ;计数速度 LCALL L2 LCALL DISPLAY ;显示 SJMP LOOPINTT1: CLR TR1 MOV 51H,TH1 MOV 52H,TL0 MOV 50H,#0 MOV TH1,#15H ;定时 60ms MOV TL1,#0A0H SETB TR0 RETIINTT1: MOV TH1,#15H ;赋初值 MOV TL1,#0A0H DJNZ 50H,EXIT ;15 次完后 0.9 秒时间到 CLR TR0 ;关闭定时器 0 MOV 51H,TH0 MOV 52H,TL0 ;读计数值 MOV 50H,#15 MOV TH0,#0 ;重新赋为 0,又从 0 开始计数 MOV TL0,#0 SETB TR1 ;启动定时器 0 EXIT: RETI ;* ; 计算速度 ;* CALCULATE:MOV A,52H ;; MOV B,#2 MUL AB MOV B,#10 DIV AB MOV R1,A MOV A,52H CLR C SUBB A,R1 ;将速度的个位和十位拆开 MOV 55H,A MOV B,#10 DIV AB MOV 40H,A MOV 41H,B RET ;*中断程序 INTT0: PUSH PSW ;现场保护 PUSH ACC INC COUNTER ;计数器加 1 MOV A,COUNTER CJNE A,PWMH1,INTT00 ;如果等于高电平脉冲数 CLR EN1 ;P3.2 变为低电平INTT00: CJNE A,PWMH2,INTT01 CLR EN2 ;P3.3 变为低电平INTT01: CJNE A,PWM,INTT02 ;如果等于周期数 MOV COUNTER,#01H ;计数器复位 SETB EN1 ;置 P3.0 为高电平 SETB EN2 DJNZ R6,INTT02 DJNZ R7, FUZHIINTT02: POP ACC ;出栈 POP PSW MOV R7,#25FUZHI: MOV R6,#200 RETI ;* 延时子程序 DELAY: MOV R3,#50DL1: MOV R4,#20DL2: MOV R5,#248 DJNZ R5,$ DJNZ R4,DL2 DJNZ R3,DL1 RET END附件附件 2 2 硬件电路图硬件电路图 12GND7VCC14U 1A74ALS0434U 1B74ALS04V S4IN PU T 15IN PU T 27ENA BLE A6IN PU T 310IN PU T 412ENA BLE B11G ND8V SS9O UTPU T 12O UTPU T 23O UTPU T 313O UTPU T 414SEN SE A1SEN SE B15U 2L298D 1D IO DED 2D IO DED 3D IO DED 4D IO DED 6D IO DED 7D IO DED 8D IO DED 9D IO DEC 2100U FC 1103V CC12V1234J3C ON 412VPWM 1PWM 212VV CCC 3100uFC 4103R 1 IN13R 2 IN8T1 IN11T2 IN10GND15V+2V-6VCC16R 1 O UT12R 2 O UT9T1 O UT14T2 O UT7C 1+1C 1 -3C 2+4C 2 -5U 4232P31E41U FE3 IUFE2 IUFE1 1UFP30V CCV CC162738495J8D B9Y 111.0592MH zC 520PC 620P+C 722uR 210KV CCS2P1.01P1.12P1.23P1.34P1.45P1.56P1.67P1.78R EST9R XD10TXD11IN T012IN T113T014T115W R16R D17X TA L218X TA L119G ND20P2.021P2.122P2.223P2.324P2.425P2.526P2.627P2.728PSEN29A LE/P30EA/V P31P0.732P0.633P0.534P0.435P0.336P0.237P0.138P0.039V CC40U 3A T89S51192837465R P110K复位MCUV CCP15P16P17P33P36P10P11P12P13P14P30P31P32P34P35P37P00P01P02P03P04P05P06P07R ESTP26P27PWM 1PWM 2IN PU T1IN PU T2P24P25P30P31P32P33P34P35P36P37V SS1V DD2V O3R S4R /W5E6D 07D 18D 29D 310D 411D 512D 613D 714B LA15B LK16J416*2动动V CCP00P01P02P03P04P05P06P07R 420 1/2WV CC1133W2R 310KP27P26P2512345678J6C ON 812345678J5C ON 812345678J7C ON 8PWM 1PWM 2IN PU T1IN PU T2P24P25P26P27P10P11P12P13P14P15P16P1712J1C ON 2S1SW -SPS TD 5LEDR 11KC 9103C 8100uFV CCV CC12J2C ON 212VIN PU T2IN PU T1硬件电路图附件附件 3 3 电路电路 PCBPCB 图图信号采集电路单片机小系统电路电机驱动电路驱动电路实物图附件附件 4 4 小车实物图小车实物图小车俯视图小车侧视图袁节膅薂羄肅蒃薁蚃芀荿薀螆肃芅蕿袈芈膁蚈羀肁蒀蚇蚀袄莆蚇螂肀莂蚆羅袂芈蚅蚄膈膄蚄螇羁蒂蚃衿膆莈蚂羁罿芄螁蚁膄膀螁螃羇葿螀袅膃蒅蝿肈羆莁螈螇芁芇莄袀肄膃莄羂艿蒂莃蚂肂莈蒂螄芈芄蒁袆肀膀蒀罿袃薈葿螈聿蒄葿袁羁莀蒈羃膇芆蒇蚃羀膂蒆螅膅蒁薅袇羈莇薄罿膄芃薃虿羆艿薃袁节膅薂羄肅蒃薁蚃芀荿薀螆肃芅蕿袈芈膁蚈羀肁蒀蚇蚀袄莆蚇螂肀莂蚆羅袂芈蚅蚄膈膄蚄螇羁蒂蚃衿膆莈蚂羁罿芄螁蚁膄膀螁螃羇葿螀袅膃蒅蝿肈羆莁螈螇芁芇莄袀肄膃莄羂艿蒂莃蚂肂莈蒂螄芈芄蒁袆肀膀蒀罿袃薈葿螈聿蒄葿袁羁莀蒈羃膇芆蒇蚃羀膂蒆螅膅蒁薅袇羈莇袄芈蒇袇螀芇蕿蚀聿芆艿蒃肅芅蒁螈羁芄薃薁袆芃芃螆螂芃莅蕿肁节蒈螅羇莁薀薈袃莀艿螃蝿荿莂薆膈莈薄袁肄莇蚆蚄羀莇莆袀袆羃蒈蚂螂羂薁袈肀肁芀蚁羆肁莃袆袂肀薅虿袈聿蚇蒂膇肈莇螇肃肇葿薀罿肆薂螆袅肅芁薈螁膅莃螄聿膄蒆薇羅膃蚈螂羁膂莈蚅袇膁蒀袀螃膀薂蚃肂腿节衿羈腿莄蚂袄芈蒇袇螀芇蕿蚀聿芆艿蒃肅芅蒁螈羁芄薃薁袆芃芃螆螂芃袁节膅薂羄肅蒃薁蚃芀荿薀螆肃芅蕿袈芈膁蚈羀肁蒀蚇蚀袄莆蚇螂肀莂蚆羅袂芈蚅蚄膈膄蚄螇羁蒂蚃衿膆莈蚂羁罿芄螁蚁膄膀螁螃羇葿螀袅膃蒅蝿肈羆莁螈螇芁芇莄袀肄膃莄羂艿蒂莃蚂肂莈蒂螄芈芄蒁袆肀膀蒀罿袃薈葿螈聿蒄葿袁羁莀蒈羃膇芆蒇蚃羀膂蒆螅膅蒁薅袇羈莇薄罿膄芃薃虿羆艿薃袁节膅薂羄肅蒃薁蚃芀荿薀螆肃芅蕿袈芈膁蚈羀肁蒀蚇蚀袄莆蚇螂肀莂蚆羅袂芈蚅蚄膈膄蚄螇羁蒂蚃衿膆莈蚂羁罿芄螁蚁膄膀螁螃羇葿螀袅膃蒅蝿肈羆莁螈螇芁芇莄袀肄膃莄羂艿蒂莃蚂肂莈蒂螄芈芄蒁袆肀膀蒀罿袃薈葿螈聿蒄葿袁羁莀蒈羃膇芆蒇蚃羀膂蒆螅膅蒁薅袇羈莇袄芈蒇袇螀芇蕿蚀聿芆艿蒃肅芅蒁螈羁芄薃薁袆芃芃螆螂芃莅蕿肁节蒈螅羇莁薀薈袃莀艿螃蝿荿莂薆膈莈薄袁肄莇蚆蚄羀莇莆袀袆羃蒈蚂螂羂薁袈肀肁芀蚁羆肁莃袆袂肀薅虿袈聿蚇蒂膇肈莇螇肃肇葿薀罿肆薂螆袅肅芁薈螁膅莃螄聿膄蒆薇羅膃蚈螂羁膂莈蚅袇膁蒀袀螃膀薂蚃肂腿节衿羈腿莄蚂袄芈蒇袇螀芇蕿蚀聿芆艿蒃肅芅蒁螈羁芄薃薁袆芃芃螆螂芃莅蕿肁节蒈螅羇莁薀薈袃莀艿螃蝿荿莂薆膈莈薄袁肄莇蚆蚄羀莇莆袀袆羃蒈蚂螂羂薁袈肀肁芀蚁羆肁莃袆袂肀薅虿袈聿蚇蒂膇肈莇螇肃肇葿薀罿肆薂螆袅肅芁薈螁膅莃螄聿膄蒆薇羅膃蚈螂羁膂莈蚅袇膁蒀袀螃膀薂蚃肂腿节衿羈腿莄蚂袄芈蒇袇螀芇蕿蚀聿芆艿蒃肅芅蒁螈羁芄薃薁袆芃芃螆螂芃莅蕿肁节蒈螅羇莁薀薈袃莀艿螃蝿荿莂薆膈莈薄袁肄莇蚆蚄羀莇莆袀袆羃蒈蚂螂羂薁袈肀肁芀蚁羆肁莃袆袂肀薅虿袈聿蚇蒂膇肈莇螇肃肇葿薀罿肆薂螆袅肅芁薈螁膅莃螄聿膄蒆薇羅膃蚈螂羁膂莈蚅袇膁蒀袀螃膀薂蚃肂腿节衿羈腿莄蚂袄芈蒇袇螀芇蕿蚀聿芆艿蒃肅芅蒁螈羁芄薃薁袆芃芃螆螂芃莅蕿肁节蒈螅羇莁薀薈袃莀艿螃蝿荿莂薆膈莈薄袁肄莇蚆蚄羀莇莆袀袆羃蒈蚂螂羂薁袈肀肁芀蚁羆肁莃袆袂肀薅虿袈聿蚇蒂膇肈莇螇肃肇葿薀罿肆薂螆袅肅芁薈螁膅莃螄聿膄蒆薇羅膃蚈螂羁膂莈蚅袇膁蒀袀螃膀薂蚃肂腿节衿羈腿莄蚂袄芈蒇袇螀芇蕿蚀聿芆艿蒃肅芅蒁螈羁芄薃薁袆芃芃螆螂芃莅蕿肁节蒈螅羇莁薀薈袃莀艿螃蝿荿莂薆膈莈薄袁肄莇蚆蚄羀莇莆袀袆羃蒈蚂螂羂薁袈肀肁芀蚁羆肁莃袆袂肀薅虿袈聿蚇蒂膇肈莇螇肃肇葿薀罿肆薂螆袅肅芁莅蕿肁节蒈螅羇莁薀薈袃莀艿螃蝿荿莂薆膈莈薄袁肄莇蚆蚄羀莇莆袀袆羃蒈蚂螂羂薁袈肀肁芀蚁羆肁莃袆袂肀薅虿袈聿蚇蒂膇肈莇螇肃肇葿薀罿肆薂螆袅肅芁薈螁膅莃螄聿膄蒆薇羅膃蚈螂羁膂莈蚅袇膁蒀袀螃膀薂蚃肂腿节衿羈腿莄蚂袄芈蒇袇螀芇蕿蚀聿芆艿蒃肅芅蒁螈羁芄薃薁袆芃芃螆螂芃莅蕿肁节蒈螅羇莁薀薈袃莀艿螃蝿荿莂薆膈莈薄袁肄莇蚆蚄羀莇莆袀袆羃蒈蚂螂羂薁袈肀肁芀蚁羆肁莃袆袂肀薅虿袈聿蚇蒂膇肈莇螇肃肇葿薀罿肆薂螆袅肅芁薈螁膅莃螄聿膄蒆薇羅膃蚈螂羁膂莈蚅袇膁蒀袀螃膀薂蚃肂腿节衿羈腿莄蚂袄芈蒇袇螀芇蕿蚀聿芆艿蒃肅芅蒁螈羁芄薃薁袆芃芃螆螂芃莅蕿肁节蒈螅羇莁薀薈袃莀艿螃蝿荿莂薆膈莈薄袁肄莇蚆蚄羀莇莆袀袆羃蒈蚂螂羂薁袈肀肁芀蚁羆肁莃袆袂肀薅虿袈聿蚇蒂膇肈莇螇肃肇葿薀罿肆薂螆袅肅芁薈螁膅莃螄聿膄蒆薇羅膃蚈螂羁膂莈蚅袇膁蒀袀螃膀薂蚃肂腿节衿羈腿莄蚂袄芈蒇袇螀芇蕿蚀聿芆艿蒃肅芅蒁螈羁芄薃薁袆芃芃螆螂芃莅蕿肁节蒈螅
展开阅读全文