华南赛区惠州学院
阆苑魅影
华南
赛区
惠州
学院
阆苑
第十届“飞思卡尔”杯全国大学生智能汽车竞赛技 术 报 告技 术 报 告学校:惠州学院队伍名称:阆苑魅影参赛队员:丘瑞炜许志伟梁培灿带队教师:段延喜徐瑜第十届全国大学生智能汽车邀请赛技术报告II关于技术报告和研究论文使用授权的说明本人完全了解第十届“飞思卡尔”杯全国大学生智能汽车竞赛关保留、使用技术报告和研究论文的规定,即:参赛作品著作权归参赛者本人,比赛组委会和飞思卡尔半导体公司可以在相关主页上收录并公开参赛作品的设计方案、技术报告以及参赛模型车的视频、图像资料,并将相关内容编纂收录在组委会出版论文集中。参赛队员签名:带队教师签名:日期:第十届全国大学生智能汽车邀请赛技术报告III摘要本文设计的智能车系统以 MK60DN512ZVLL10 微控制器为核心控制单元,通过线性 CCD 检测赛道信息,提取黑色引导线,用于赛道识别;通过光电编码器检测模型车的实时速度。软件开发平台为 IAR 开发环境,车模采用大赛组委会统一提供的 E 型仿真车模。文中主要介绍了智能小车控制系统的机械结构、软硬件结构及设计开发过程。整个系统涉及车模机械结构调整、传感器电路设计及信号处理、控制算法和策略的优化等多个方面。实验结果表明,该系统设计方案切实可行。关键字:关键字:闭环控制;巡线算法;路况判断;陀螺仪;加速度计第十届全国大学生智能汽车邀请赛技术报告IV目录引言.1第一章 系统设计概述.21.1 系统设计原理.21.2 系统结构原理框图.2第二章 系统机械设计与分析.42.1 姿态传感器的安装.42.2 线性 CCD 及支架固定安装.42.3 电路板安装连接.52.4 电池固定与安装.52.5 编码器安装.62.6 系统整车参数.6第三章 系统硬件电路设计.73.1 电路设计方案.73.2 系统电路实现.73.2.1 K60 单片机最小系统.73.2.2 系统电源稳压电路.73.2.3 系统电机驱动电路.83.2.4 姿态传感器电路.93.2.5 按键及拨码电路.93.2.6 系统控制主板电路.10第四章 系统软件设计.114.1 程序流程框图.11如图 4.1 所示.114.2 底层初始化.114.3 CCD 传感器采集处理算法.124.4 CCD 数据预处理算法.134.5 寻线行驶算法实现.144.5.1 巡线算法.144.5.2 路况判断算法.154.5.3 速度闭环控制.16第五章 系统开发环境.175.1 开发工具.175.2 串口调试.17第六章 总结.19参考文献.20附录 A.21第十届全国大学生智能汽车邀请赛技术报告1引言为加强大学生实践、创新能力和团队精神的培养,促进高等教育教学改革,受教育部高等教育司委托(教高司函2005201 号文,附件 1),由教育部高等学校自动化专业教学指导分委员会(以下简称自动化分教指委)主办全国大学生智能汽车竞赛。该竞赛是以智能汽车为研究对象的创意性科技竞赛,是面向全国大学生的一种具有探索性工程实践活动,是教育部倡导的大学生科技竞赛之一。该竞赛以“立足培养,重在参与,鼓励探索,追求卓越”为指导思想,旨在促进高等学校素质教育,培养大学生的综合知识运用能力、基本工程实践能力和创新意识,激发大学生从事科学研究与探索的兴趣和潜能,倡导理论联系实际、求真务实的学风和团队协作的人文精神,为优秀人才的脱颖而出创造条件。结合国内外对两轮自平衡小车的研究成果,本设计采用 L3G4200D 和加速度传感器 MMA7361 作为角度测量传感器,结合卡尔曼滤波程序得到小车的倾角信息,然后通过控制两个电机正反向运动保持车模直立平衡状态;通过调节车模的倾角来实现车模速度控制。在此原理的基础上,我们根据两轮自平衡小车的特点,对车模结构进行的一定的调整。同时我们参考前几届队伍的经验选择了线性 CCD作为检测赛道元素的传感器,结合 PID 算法控制车的转向及行驶速度。第十届全国大学生智能汽车邀请赛技术报告2第一章 系统设计概述1.1 系统设计原理姿态传感器得到智能车的姿态数据传送到单片机,通过姿态控制算法使智能车稳定的站立;线性 CCD 采集赛道的信息,通过模数转换把数据传回单片机,通过寻迹控制算法使智能车准确识别赛道;编码器检测车的速度,把速度信息传输到单片机通过速度控制算法,使智能车根据赛道情况变化车的速度以及转向。1.2 系统结构原理框图如图 1.1 所示图 1.1 系统结构原理框图加速度计和陀螺仪是本系统的姿态传感器,能够测量角度、角速度和加速度,系统通过对这三个物理量的处理及控制使车保持处于平衡状态;蓝牙用于传输智能车的数据到其他设备,比如 PC 机;SD 卡可以储存智能车行驶数据;智能车行驶到特殊赛道路段时可以发出声音提示;独立按键可以用来调整控制参数;显示第十届全国大学生智能汽车邀请赛技术报告3屏可以显示一些参数,方便调节;红外接收器接收发射灯塔信息,控制智能车的启动与停车。第十届全国大学生智能汽车邀请赛技术报告4第二章 系统机械设计与分析2.1 姿态传感器的安装姿态传感器安装要水平,根据需要设定好车的平衡点,如图 2.1 所示图 2.12.2 线性 CCD 及支架固定安装CCD 固定在碳素杆上,杆垂直固定在两个电机轴向中央,并用小支架固定下方,减小杆的摇晃,如图 2.2 所示图 2.2第十届全国大学生智能汽车邀请赛技术报告52.3 电路板安装连接如图 2.3 所示图 2.32.4 电池固定与安装电池比较重,为了让车的中心尽量低,电池安装在车的低端,但注意于地面的距离,太低就无法过坡道,如图 2.4 所示图 2.4第十届全国大学生智能汽车邀请赛技术报告62.5 编码器安装如图 2.5 所示图 2.52.6 系统整车参数表 2.1 整车参数阆苑魅影队车模参数路径检测方法光电平衡组车模几何尺寸(长、宽、高)(毫米)550、250、280电路电容总容量(微法)1600传感器种类及个数线性 CCD 2、编码器2、陀螺仪1加速度计1、红外接收器1新增加伺服电机个数0车模重量(千克)1第十届全国大学生智能汽车邀请赛技术报告7第三章 系统硬件电路设计3.1 电路设计方案系统电路设计思路:稳定、高效率、简单。系统中有数字电路,也有模拟部分,数字电路有高低电平之分,所以电源电路必须稳定,纹波尽可能的小。因此,电路设计时,使用纹波小,线性好的稳压芯片,及考虑电路的滤波、屏蔽、模拟地数字地之间的隔离等。线性 CCD 每次采集一行数据,并进行 AD 转换,编码器及姿态传感器等的AD 转换,已经集成在模块中,因此使用 K60 自带的 AD 转换完全满足 CCD 的转换,同时,无需再外围加独立的 AD 转换电路,使电路更简化,有利于减轻整车重量,降低车体重心位置,缩小电路板面积,使电路板安装于车底盘上面。3.2 系统电路实现3.2.1 K60 单片机最小系统3.2.1 K60 单片机最小系统如图 3.1 所示图 3.1 K60 单片机最小系统3.2.2 系统电源稳压电路3.2.2 系统电源稳压电路系统中电源稳压电路有三路,有两路为+5V 稳压电路,一路为+3.3V 稳压电路。其中,一路+5V 稳压电路为线性 CCD 供电,一路+5V 稳压电路为部分芯片、测速编码器供电,一路+3.3V 稳压电路对最小系统板、姿态传感器、蓝牙串口与显示屏供电。如图 3.2 所示第十届全国大学生智能汽车邀请赛技术报告8图 3.2 电源稳压电路3.2.3 系统电机驱动电路3.2.3 系统电机驱动电路对于电机驱动电路,可有多种选择,像专用电机驱动芯片 MC33886、LM298、BTS7960、BTS7971 等,在运动过程中需要用 H 桥的全桥电路才能及时刹车,减速入弯。另外,今年 E 车模的电机功率较大,因此我们决定采用由 HIP4082 和 MOS 管构成 H 桥来驱动电机。电机驱动电路如图 3.3 所示图 3.3 电机驱动电路第十届全国大学生智能汽车邀请赛技术报告93.2.4 姿态传感器电路3.2.4 姿态传感器电路对于姿态传感器电路,最主要的元件是陀螺仪与加速度计。结合国内外对两轮自平衡小车的研究成果,我们决定采用L3G4200D和加速度传感器 MMA7361 作为角度测量传感器,结合卡尔曼滤波程序得到小车的倾角信息。同时,车模转向速度传感器也是采用L3G4200D。姿态传感器电路如图 3.4 所示图 3.4 姿态传感器电路3.2.5 按键及拨码电路3.2.5 按键及拨码电路由于不同赛道与车轮之间的摩擦力差别较大,因此需要根据实际情况调整参数。另外,不同速度下的参数也需要外部输入。因此我们专门设计了一个液晶调试模块,配合按键便可以对软件参数进行灵活修改。如图 3.5 所示。图 3.5 按键电路第十届全国大学生智能汽车邀请赛技术报告103.2.6 系统控制主板电路3.2.6 系统控制主板电路控制主板除了 K60 最小系统外,还包括 5V、3.3V 稳压电路,蜂鸣器电路,红外接收电路,独立按键和拨码开关电路,CCD,加速度计,陀螺仪,编码器蓝牙等与单片机连接电路。如图 3.6 所示。图 3.6 控制主板电路第十届全国大学生智能汽车邀请赛技术报告11第四章 系统软件设计4.1 程序流程框图如图 4.1 所示图 4.1 程序流程图4.2 底层初始化编写初始化函数 SystemInit(),初始化用到的模块,如下(子函数略):第十届全国大学生智能汽车邀请赛技术报告12void SystemInit(void)DisableInterrupts;/ADC 初始化adc_init();/IO 口初始化gpio_init();/初始化按键key_init();/编码器FTM_QUAD_Init(FTM1);FTM_QUAD_Init(FTM2);OLED_Init();CCD_init();uart_init(UART0,115200);/flash_init();/电机初始化FTM_PWM_init();Init_l3g4200d();TF_Init();/初始化 PIT0,定时时间为:1mspit_init_ms(PIT0,1);/设置 PIT0 的中断服务函数为 PIT0_IRQHandlerset_vector_handler(PIT0_VECTORn,PIT0_IRQHandler);enable_irq(PIT0_IRQn);EnableInterrupts;4.3 CCD 传感器采集处理算法编写采集函数 TSL1401_GetLine(),其功能为控制 CCD 采集信号 SI 和 CLK,实现CCD 采集的工作时序,通过 AD 采集某个通道(对应某个电感)的电压值,然后读出 128 个像素点的电压值。采集程序如下:void TSL1401_GetLine(uint8*pixel)int i;int j;/单次采集曝光处理TSL1401_SI(1);delay();TSL1401_CLK(1);/delay();TSL1401_SI(0);/发送第 1 个 CLK第十届全国大学生智能汽车邀请赛技术报告13delay();TSL1401_CLK(0);for(i=1;i129;i+)delay();TSL1401_CLK(1);delay();TSL1401_CLK(0);TSL1401_SI(1);delay();TSL1401_CLK(1);TSL1401_SI(0);/采集第 1 个点pixel0=hw_adc_once(1,14,8);TSL1401_CLK(0);/采集第 2128 个点for(i=1;i128;i+)delay();TSL1401_CLK(1);pixeli=hw_adc_once(1,14,8);TSL1401_CLK(0);delay();TSL1401_CLK(1);delay();TSL1401_CLK(0);delay();4.4 CCD 数据预处理算法第十届全国大学生智能汽车邀请赛技术报告14图 4.2 广角 CCD 采集到的图像根据线性 CCD 的感光特性,白色为光强较为明显的部分,对应的电压值高,黑色光强弱,对应电压值低,通过这一特性来实现赛道信息的提取。市面上各种型号 CCD 种类繁多,每一种 CCD 都有其响应的图像特性,选择好 CCD也能为后续的程序提供非常大的帮助。除了 CCD 的不同,还有不同的镜头可供选择,大体分广角和标准镜头,标准镜头视野范围为 56,广角头范围不唯一,基本在 80以上。镜头的选择会对图像产生非常大的影响,镜头视野越宽,过弯越不容易丢线,但是相应的图像畸变也就会更明显,同时视野过宽会产生过多的误判,以广角镜头 90为例,如果前瞻为 50cm,则其看到的赛道宽度为 36个像素点,即在视野内可以看到 3 条赛道的宽度!如果没有对于巡线进行很好的处理,则会产生非常多的问题。图 4.3 正常 CCD 采集到的图像本设计在循迹算法实现之前对 CCD 采集到的图像进行二值化预处理,在直方图的基础上采用双峰法确定阈值。二值化后的图像如图 4.4 所示。图 4.4 采用双峰法二值化后的图像4.5 寻线行驶算法实现4.5.1 巡线算法4.5.1 巡线算法第十届全国大学生智能汽车邀请赛技术报告15路径识别算法是我们使用的是由 CCD 左边向右边搜索提取跳变沿的算法,通过对提取到的所有跳变沿进行识别处理,最终得到正确的赛道边界,再对赛道两边界相加减去 128 来得到小车转向需要的转向值。具体算法介绍如下:(1)将 CCD 返回的像素值二值化后找到跳变沿,计算 MidLine;(2)当传感器检测到黑线时相应的传感器返回对应的中线值。如果找到中线则可以得到 leftBorder 和 rightBorder 的值,两者求和减去128 则可以得到中线值。实现效果图如图 4.5 所示。图 4.5 循迹算法实现图4.5.2 路况判断算法4.5.2 路况判断算法直道的判断比较简单,但是需要稳定判断相对比较困难,所以,这里选择两个 CCD 的图像信息来进行识别,通过两个 CCD 前瞻的配合,两个 CCD 的中线差值在一定范围内时,可以确定其为直道标志位,将这个直道信息存储到队列中,用队列中的信息进行判断,滤除无用的标志位,可以确定为直道否则即为弯道。十字判断较为繁琐,如果转向控制得当,在十字出弯时比较直,则无需对十字进行处理,但是由于使用了广角镜头的缘故,出弯较容易误判,所以需要对十字进行特殊处理,基本思路为:通过 CCD 图像出现大面积“全白”的情况识别入十字,出十字时通过较长前瞻的 CCD 对控制方向的 CCD 进行补线,可以基本解决这一问题。路障的判断也可以通过 CCD 的图像进行识别,并且其图像特征较为明显,在赛道一侧出现小面积黑色。第十届全国大学生智能汽车邀请赛技术报告164.5.3 速度闭环控制4.5.3 速度闭环控制图 4.6 PID 控制工作原理PID 控制策略其结构简单,稳定性好,可靠性高,并且易于实现。其缺点在于控制器的参数整定相当繁琐,需要很强的工程经验。相对于其他的控制方式,在成熟性和可操作性上都有着很大的优势。所以最后我们选择了 PID 的控制方式。在小车跑动中,因为不需要考虑小车之前走过的路线,所以,我们舍弃了 I控制,将小车舵机的 PID 控制简化成 PD 控制。本方案中通过双电机的差速控制采用位置式的 PD 控制,速度闭环控制采用了增量式 PID 控制。在本方案中,使用试凑法来确定控制器的比例、积分和微分参数。试凑法是通过闭环试验,观察系统响应曲线,根据各控制参数对系统响应的大致影响,反复试凑参数,以达到满意的响应,最后确定 PID 控制参数。试凑不是盲目的,而是在控制理论指导下进行的。在控制理论中已获得如下定性知识:比例调节(P)作用:是按比例反应系统的偏差,系统一旦出现了偏差,比例调节立即产生调节作用用以减少偏差。比例作用大,可以加快调节,减少误差,但是过大的比例,使系统的稳定性下降,甚至造成系统的不稳定。积分调节(I)作用:是使系统消除稳态误差,提高无差度。因为有误差,积分调节就进行,直至无差,积分调节停止,积分调节输出一常值。积分作用的强弱取决与积分时间常数 Ti,Ti 越小,积分作用就越强。反之 Ti 大则积分作用弱,加入积分调节可使系统稳定性下降,动态响应变慢。积分作用常与另两种调节规律结合,组成 PI 调节器或 PID 调节器。微分调节(D)作用:微分作用反映系统偏差信号的变化率,具有预见性,能预见偏差变化的趋势,因此能产生超前的控制作用,在偏差还没有形成之前,已被微分调节作用消除。因此,可以改善系统的动态性能。在微分时间选择合适情况下,可以减少超调,减少调节时间。微分作用对噪声干扰有放大作用,因此过强的加微分调节,对系统抗干扰不利。此外,微分反应的是变化率,而当输入没有变化时,微分作用输出为零。微分作用不能单独使用,需要与另外两种调节规律相结合,组成 PD 或 PID 控制器。第十届全国大学生智能汽车邀请赛技术报告17第五章 系统开发环境5.1 开发工具序开放在 IAR Embedded Workbench IDE 下进行,Embedded Workbench for ARM是 IAR Systems 公司为 ARM 微处理器开发的一个集成开发环境(下面简称 IAREWARM)。比较其他的 ARM 开发环境,IAR EWARM 具有入门容易、使用方便和代码紧凑等特点。EWARM 中包含一个全软件的模拟程序(simulator)。用户不需要任何硬件支持就可以模拟各种 ARM 内核、外部设备甚至中断的软件运行环境。从中可以了解和评估 IAR EWARM 的功能和使用方法。如图 5.1 所示。图 5.1 IAR 开发环境5.2 串口调试智能车的调试过程,实际上是一个分析实验数据、改进算法的过程,而这需要以大量的实验数据作为基础。图像方面,编写了基于 PC 机的 C#程序,用于显示实际用于单片机处理的图像;控制参数方面,在 C#环境下开发了可用于显示各控制参数,以及所提取黑线的实时变化的辅助调试软件。如图 5.2 和 5.3 所示。第十届全国大学生智能汽车邀请赛技术报告18图 5.2 上位机界面图 5.3 上位机界面第十届全国大学生智能汽车邀请赛技术报告19第六章 总结综上所述,本文主要介绍了我们在稳定、高效、简单的指导原则下智能车系统的设计思想和实现方案,包括机械、硬件电路方和软件算法三个方面。在机械方面,为了提高转向的灵敏性,竖直安装转向陀螺仪,尽量降低重心,加固底板;为了提高赛道信息的准确性,使用三根碳素杆固定 CCD。软件算法方面,采用动态阈值和跟踪算法提取黑线,保证黑线稳定性;简化控制策略,基本对路型不作判断,提高小车对赛道的适应性。硬件电路方面,采用单片机自带 AD;在保证稳定性前提下,尽量减小电路板面积。从报名参加智能车,到焊接电路、编写程序、调整机械,到让车子在赛场上驰骋,我们经历接近一年的重重考验。在这期间,我们花费了大量的时间和精力,我们也得到了学校、学院、老师们和学长们的支持,在此一并向他们表示感谢。不断认识到设计的错误更能有所突破,经验不一定是真理。这一年的调试过程让我们明白,永远在同一种思路游荡,是不可能突破的。分赛区赛场上的一幕幕精彩表现仍宛如停留在昨日,全国赛的脚步声却早已传入我们的耳朵。面对即将到来的全国赛,虽然我们的知识还不够丰富,虽然我们考虑问题也不够全面。但是,经历了华南赛考验的我们,相信这一年来的辛勤与付出,一定会让我们在比赛中收获最美好的记忆。第十届全国大学生智能汽车邀请赛技术报告20参考文献1卓晴,黄开胜,邵贝贝 学做智能车 北京-北京航空航天大学出版社20072阮晓钢,蔡建羡等 两轮自平衡机器人的研究与设计 北京-科学出版社.20123童诗白,华成英 模拟电子技术基础 北京-高等教育出版社.20064薛凡 两轮平衡车的建模与控制研究.20125阮晓钢,刘江,狄海江,李欣源 两轮自平衡机器人设计及 LQ 控制.20086阮晓钢 两轮机器人在坡面上的运动平衡控制.20147王晓宇 两轮自平衡机器人的研究 哈尔滨-哈尔滨工业大学.2009第十届全国大学生智能汽车邀请赛技术报告21附录 A源程序#include include.h#include ccd.h#includecommon.huint8 SendRaw128,sendflag=0;/*函数名称:CCD_init*功能说明:CCD 初始化*参数说明:*函数返回:无*修改时间:2012-10-20*备注:*/void CCD_init1(void)gpio_init(PTB16,GPO,HIGH);gpio_init(PTB10,GPO,HIGH);adc_init(ADC0_SE13);adc_init(ADC0_SE17);gpio_init(PTB9,GPO,HIGH);gpio_init(PTB17,GPO,HIGH);adc_init(ADC1_SE15);/*函数名称:StartIntegration*功能说明:CCD 启动程序*参数说明:*函数返回:无第十届全国大学生智能汽车邀请赛技术报告22*修改时间:2012-10-20*备注:*/void StartIntegration(void)unsigned char i;SI_SetVal();/*SI=1*/SamplingDelay();CLK_SetVal();/*CLK=1*/SamplingDelay();SI_ClrVal();/*SI=0*/SamplingDelay();CLK_ClrVal();/*CLK=0*/for(i=0;i 0)return a;elsereturn(int16)(-a);Constuint32CosData=1778,1745,1713,1682,1653,1625,1597,1571,1546,1521,1497,1475,1453,1432,1411,1392,1373,1354,1337,1320,1303,1288,1272,1258,1244,1230,1217,1205,1193,1181,1170,1159,1149,1139,1129,1120,1112,1103,1095,1088,1081,1074,1067,1061,1055,1050,1044,1040,1035,1031,1027,1023,1020,1016,1013,1011,1009,1007,1005,1003,1002,1001,1001,1000,1000,1001,1001,1002,1003,1005,1007,1009,1011,1013,1016,1019,1023,1027,1031,1035,1040,1044,1050,1055,1061,1067,1074,1081,1088,1095,1103,1112,1120,1129,1139,1149,1159,1170,1181,1193,1205,1217,1230,1244,1258,1272,1288,1303,1320,1337,1354,1373,1392,1411,1432,1453,1475,1497,1521,1546,1571,1597,1625,1653,1682,1713,1745,1778;uint8 SubCcdValue=20;/暗电流uint8 CCDDATA128=0;/处理后的 CCD 数据uint8 BinaryValue=0;/自动阈值uint8 FormerBinaryValue=0;/uint8 BinaryValue_0=0;/自动阈值uint8 FormerBinaryValue_0=0;/float LowFlterConstant=0.95;/uint8 CCDtest128;void ImageCapture(unsigned char*ImageData)/近的unsigned char i;extern uint8 AtemP;/uint8*test=CCDtest;SI_SetVal();/*SI=1*/SamplingDelay();第十届全国大学生智能汽车邀请赛技术报告24CLK_SetVal();/*CLK=1*/SamplingDelay();SI_ClrVal();/*SI=0*/SamplingDelay();/Delay 10us for sample the first pixel/*/for(i=0;i 250;i+)/更改 250,让 CCD 的图像看上去比较平滑,SamplingDelay();/200ns/把该值改大或者改小达到自己满意的结果。/Sampling Pixel 1CCDDATA0=adc_once(ADC0_SE13,ADC_8bit)-SubCcdValue;/CCDtest0=adc_once(ADC0_SE17,ADC_8bit)-23;/CCDDATA0=(uint8)(CCDDATA0*CosData0);/CcdHistCCDDATA0/8+=1;/ImageData+;CLK_ClrVal();/*CLK=0*/for(i=0;i100;i+)SamplingDelay();SamplingDelay();CLK_SetVal();/*CLK=1*/SamplingDelay();SamplingDelay();/Sampling Pixel 2128/CCDtesti+1=adc_once(ADC0_SE17,ADC_8bit)-23;CCDDATAi+1=adc_once(ADC0_SE13,ADC_8bit)-SubCcdValue;/CCDDATAi+1-=SubCcdValue;/CCDDATAi+1=(uint8)(CCDDATAi+1*CosDatai+1);/CcdHistCCDDATAi+1/8+=1;第十届全国大学生智能汽车邀请赛技术报告25/test+;/ImageData+;CLK_ClrVal();/*CLK=0*/voidmain(void)SystemInit();while(1)#if(SENDCCD=2|SENDCCD=3)if(sendflag=1)SendImageData(SendRaw);sendflag=0;#endif/DELAY_MS(300);LED_Set_Pos(0,0);for(i=0;i180&i!=(mid_search_b+64)LED_WrDat(0 x80);elseLED_WrDat(0 xfe);/实线LED_Set_Pos(0,2);for(i=0;i180&i!=(mid_search+64)LED_WrDat(0 x80);elseLED_WrDat(0 xfe);/实线