基于arm的智能垃圾桶设计(课程设计)论文本科学位论文.docx
-
资源ID:91491228
资源大小:1.47MB
全文页数:30页
- 资源格式: DOCX
下载积分:14.9金币
快捷下载
会员登录下载
微信登录下载
三方登录下载:
微信扫一扫登录
友情提示
2、PDF文件下载后,可能会被浏览器默认打开,此种情况可以点击浏览器菜单,保存网页到桌面,就可以正常下载了。
3、本站不支持迅雷下载,请使用电脑自带的IE浏览器,或者360浏览器、谷歌浏览器下载即可。
4、本站资源下载后的文档和图纸-无水印,预览文档经过压缩,下载后原文更清晰。
5、试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。
|
基于arm的智能垃圾桶设计(课程设计)论文本科学位论文.docx
西安科技大学电控学院课程设计 第 1页 电控学院课程设计(论文) 课程名称:ARM嵌入式系统基础 题 目:基于ARM的智能垃圾桶设计 摘 要垃圾桶作为人类生活中的必需品,伴随着人类走过了每一个时代。随着生活水平的提高,人们对生活品质更为关注,智能垃圾桶应运而生。本作品主要由ARM最小系统和ULN2003芯片控制中心模块和步进电机驱动控制为主。信号检测电路模块、驱动电路模块、控制电路模块和显示电路模块四部分组成,是集机光、湿度、电于一体的科技新产品。作品通过红外感应器信号检测电路模块检测到探测范围内有人进入或者其他检测信号时,经过芯片控制中心模块的分析处理后启动控制电路模块做出相开盖、关盖等应动作;垃圾进去垃圾桶时,通过温湿度传感器检测垃圾类别,显示电路模块也随之启动并显示投入垃圾的种类,同时也提醒人们要保护环境。本作品图文并茂,易识别,可自动打开桶盖和进行垃圾的固液体分类,减少卫生感染的隐患,能有效杜绝各种传染性疾病通过垃圾进行传播,为人们的健康提供了有力的保障。关键词:ARM最小系统 、热红外传感器、 温湿度传感器、步进电机目 录绪论-一课题设计要求-二课题设计目的-三课题设计原理及方案-3.1课设总原理-3.1.1 EasyARM2131最小系统-3.1.2步进电机原理-3.1.3热红外传感器原理-3.2系统总体方案-四课题设计硬件设计-4.1智能垃圾桶机的组成-4.2智能垃圾桶工作流程-4.3硬件设计电路图-五课题设计软件设计-5.1软件设计流程图-5.2软件设计程序-结果及总结-致谢-附录-附录一(心得体会)-附录二(硬件电路图)-附录三(软件程序)-附录四(作品实物图)-参考文献 -绪 论现在,许多发达国家如美国、英国都致力于研究新型智能型垃圾桶,使垃圾桶具有多项智能型功能。本文提出了一种实用型智能垃圾桶的方案,这种垃圾桶能够调节开盖的角度,控制垃圾桶走近消费者、从功能方面更侧重于在生活细节上为消费者带来便利,卫生、环保、健康。传统的垃圾桶都是采用不封口,手打开或脚踩的方式打开桶盖投递垃圾,不但操作麻烦,而且很对人身体健康影响,对空气环境也不利。例如:1、垃圾桶对垃圾的密封效果不好,导致垃圾桶附近异味较大,并且极易滋生细菌、寄生虫等,对人们的健康造成较大的危害。 2、现有的垃圾桶不能自动处理桶内垃圾,经常出现大量垃圾溢出垃圾桶的现象,影响环境卫生,造成污染,危害人们的健康。 3、现有的垃圾桶不能及时封装桶内垃圾,垃圾长时间裸露在外,环卫工人处理垃圾时与垃圾直接接触,增大环卫工人患病几率。4、许多人对于产生的垃圾没有合理分类,给环卫工人造成一定的工作负担。对于“智能垃圾桶”这个名词,相信大家已不陌生,现在市场上已出现一种技术成熟的智能垃圾桶产品。它能够在人的手或物体接近投物口一定距离时,垃圾桶自动开盖,等垃圾投入完毕,垃圾桶桶盖又自动关闭。虽然该产品已不需用手直接接触垃圾桶桶盖,但要真正使垃圾桶实现智能化,这还只能算是第一步。由于这种垃圾桶的功能还比较单一,并且直接开关盖这一功能机械耗损程度较高,所以还有许多需要改进的地方。 为解决上述问题,经过多方调查研究,我们设计了一款具有对垃圾自动分类感应识别以及自动开合盖等功能的垃圾桶。垃圾桶可通过及时关闭桶盖,可以有效地抑制异味的散发以及病菌的传播。该垃圾桶自动打开后,可进行自动分类,从而可使该垃圾桶分成两类垃圾,有效地避免了垃圾种类混乱,不好处理的现象。该垃圾桶将垃圾自动分类后,可分别进入A或B箱,环卫工人直接从此两中收取垃圾。从而使环卫工人在处理垃圾时,减少了工作量,体现了人性化设计垃圾桶作为人类生活中的必需品,伴随着人类走过了每一个时代。一、 课题设计要求1.用protel画出ARM最小系统及外围扩展电路。2.设计硬件部分,实现桶盖的自动打开,垃圾的自动分类。3.显示部分可用12864或者数码管,最好用上位机(VB或者Labvll仿真)。二、 课题设计目的通过红外感应器信号检测电路模块检测到探测范围内有人进入或者其他检测信号时,经过芯片控制中心模块的分析处理后启动控制电路模块,通过步进电机的转动做出开盖、关盖等应动作;垃圾进去垃圾桶时,通过温湿度传感器检测垃圾类别,步进电机正转是垃圾放入A箱,电机反转使得垃圾放入B箱,显示电路模块也随之启动并显示投入垃圾的种类,为人们带来便利 、卫生 、环保 、健康。三、 课题设计原理及方案3.1系统设计总原理本作品主要由ARM最小系统和ULN2003A芯片做驱动来实现。通过红外感应器信号检测电路模块检测到探测范围内有人靠进或者其他检测信号时,经过芯片控制中心模块的分析处理后启动控制电路模块,步进电机做出相应开盖、关盖等应动作;垃圾进去垃圾桶时,通过温湿度传感器检测垃圾类别,显示电路模块也随之启动并显示投入垃圾的种类。3.1.1 EasyARM2131最小系统EasyARM2131开发板是广州周立功公司设计的EasyARM系列开发套件之一,采用了PHILIPS公司基于ARM7TDMI-S 核、单电源供电、LQFP64封装的LPC2131,具有JTAG仿真调试、ISP编程等功能。可进行GPIO的控制实验,如LED闪烁控制、键盘输入、蜂鸣器控制、模拟SPI等; 可进行外部中断实验,学习向量中断控制器(VIC); 定时器控制实验,如定时控制LED、按键捕获输入、匹配比较输出等;使用RS232转换电路,完成UART通讯实验等。图1 EasyARM2131开发板功能框图3.1.2步进电机原理步进电机是机电控制中一种常用的执行机构,其原理是通过对它每相线圈中的电流和顺序切换来使电机作步进式旋转。驱动电路由脉冲信号来控制,所以调节脉冲信号的频率便可改变步进电机的转速。通俗地说:当步进驱动器接收到一个脉冲信号,它就驱动步进电机按设定的方向转动一个固定的角度(及步进角)。通过控制脉冲个数即可以控制角位移量,从而达到准确定位的目的。同时通过控制脉冲频率来控制电机转动的速度和加速度,从而达到调速的目的。现在比较常用的步进电机包括反应式步进电机(VR)、永磁式步进电机(PM),混合式步进电机(HB)和单相式步进电机等。3.1.3 热红外传感器原理这种传感器有三个引脚,其中标有“+”端是正电源,标有“”端是地,标有“OUT”端是输出引脚。当人靠近时,输出电压为3V,当无人靠近时输出电压为0V,电源工作电压为4.5-20V;感应角度为110°;静态电流小于40uA;感应距离为1-5米。 这种检测模块的优点是本身不发生任何类型的辐射,一般手机的电磁信号、照明等不会引起误动作。器件功耗小,价格低廉。缺点是只能测试运动的生物体,且容易受到较强热源、射频辐射干扰,当环境温度接近时,灵敏度会下降。实物如下图所示:图2-热红外传感器3.2系统总体方案本课题主要由ARM及其外围电路、红外检测电路、步进电机控制电路等组成。正常工作时,ARM循环检测红外检测电路输出信号,据此产生电动机控制信号,电动机带动桶盖运行,当系统检测到控制方式发生改变时,系统进入相应式。如垃圾桶在的控制方关闭盖子过程中遇到人或其他障碍物时盖子无条件朝相反方向打开。其原理方框图如所示。显示模块EasyARM2131最小系统 步进电机ARM外围电路电机驱动电路红外检测电路图3 原理方框图四、 课题设计硬件设计4.1智能垃圾桶机的组成:(1) 主控制器(ARM):它是智能垃圾桶的指挥中心,通过内部编有指令程序的大规模集成块,发出相应指令,指挥步进电机系统工作;同时人们通过主控器调节桶盖的开启速度、开启幅度等参数。(2) 热红外传感器:负责采集外部信号,如同人们的眼睛,当有移动的物体进入它的工作范围时,它就给主控制器一个脉冲信号。(3) 步进电机:提供开盖与关盖的主动力,控制盖子加速与减速运行。4.2智能垃圾桶工作流程:感应探测器探测到有人靠近时,将脉冲信号传给主控器,主控器判断后通知运行。步进电机得到一定运行电流后做正向运行,将动力传给同步带,步带转动一段时间后,电机反转,垃圾桶自动关闭。4.3硬件电路图如附录二所示五、 课题设计软件设计5.1软件设计流程图如下所示:5.2软件编写的程序如附录三所示结果及问题总结1程序实现了以下功能 :1)当红外传感器检测到垃圾桶周围人出现时,连接的小灯点亮,垃圾桶盖子自动打开;人离开,延时时间过后,盖子自动合上。 2)当温湿度感应模块检测到液体时,连接的小灯点亮,亮一段时间后,小灯灭并延时,在此期间,步进电机反转,垃圾掉入B箱。3)通过显示屏的模块,正确判断了垃圾是固态还是液态。2遇到的问题总结如下: 1)以前没有接触过ARM最小系统,所以开始做有点费力,时间、材料有限的情况下,就做出两个模块的功能。 2)红外感应模块所用的芯片 HC-SR501,上面有两个旋转按钮,一个控制延时时间,一个控制感应距离,开始的时候没发现它们的作用,就单靠程序的延时控制小灯的亮灭时间,发现实验现象和预想不符,仔细阅读了芯片引脚功能分析后,发现并解决了这个问题。3)网上对ARM的具体应用资料特别少,查找十分不便,对初期工作造成困扰。致 谢时间真的过的好快,转眼为期两周的ARM课程设计的完成也随之进入了尾声。在此我们真的要感谢我们的指导老师李红岩和杨学存老师。在本次课程设计过程中,两位老师对我们从题目的审核、构思、修改到最后定稿的过程中,自始至终都倾注时间、经历和心血。由于我们自身经验缺乏,所以一开始真的无法下手,设计进程也很缓慢,而此时老师不仅仅在设计方面给予引导,在选材方面也给予参考,特别是他们多次询问写作进程,并为我们指导,帮助我们开拓思路,这些付出和关心让我们坚定了能够完成这次设计的信心。而我们在老师的指导下,也不敢松懈,尽可能早的完成课程设计。两位老师以严谨的治学之道、宽厚仁慈的胸怀、积极乐观的生活态度,兢兢业业、孜孜以求的工作作风和大胆创新的进取精神为我们树立了一辈子学习的典范,他们的教诲与鞭策将激励我们在学习和生活的道路上开拓创新。他们渊博的知识、开阔的视野和敏锐的思维给了我们深深的启迪。真的发自内心的说一句:老师,谢谢您们。最后,我们要向百忙之中抽时间对本文进行审阅,评议和参与我们课题的老师真心地表示感谢,谢谢您们!附录附录一(心得体会)宋富鹏:突然发觉当你认真的做一件事情时,时间过得是异常飞快,往往最终的结果可能不是你所预期的,但在这个过程中你没有留下遗憾,留下的是弥足珍贵的记忆,当你回首时,便会发现自己收获了颇多,远远超过你所要的结果。当孙同学说加入我的组时,我们的ARM课设就已经开始了。虽常说理论再好都不如实践来的快,但是没有理论的支撑是万万不能的,在这次课设中,我对这点深有体悟。从开始的方案确定到最后的程序调试,每一步都不是随便瞎来的,都有严格的理论知识。确定方案那天,第一时间想到的是百度上有没有原版,可是当我费尽心机去求度娘时,我傻眼了,没有一个关于ARM控制的智能垃圾桶的模板,一时茫然,只好硬着头皮去图书馆找了几本ARM设计的实例教程,总算有点眉目。当方案定下来后,我们确定所需材料器件,这点多亏了李红岩老师的帮助,他给我们提供了可能用到的所有元器件,使得我们避免了不少麻烦。可能是先入为主的缘由吧,其实更多的是ARM课没学好,心里还是喜欢单片机,对ARM有一种排斥心理。一上手,碰到各种麻烦,ARM中程序怎么写是最令人头疼的,最终通过学习,学会了修改程序,通过将别人的电机驱动程序进行修改后得到了我们的智能垃圾桶程序,这点让我们非常兴奋。程序解决之后,硬件电路连接就相对简单多了,我们焊好了电路板,第一次通过在线调试,发现了许多问题,第一,只有一个电机可以转动,另一个电机毫无反应;第二,12864上没有任何显示;第三,红外传感器不起任何作用。最终,通过查找程序中的错误及硬件接线的问题,找到了突破口,实现了这些功能。这次课设是我做过的所有电子设计中最艰难的一次,但这次我却学会了独自解决问题,在没有任何模板的情况下完成了自己以前不可能完成的任务。这次我是真正的去自主学习,自己动手,从中收获了硬件及软件上的许多知识,也是学会了使用2003驱动芯片及红外传感器。在此,我要特别感谢李红岩老师的耐心指导以及李红岩老师及杨学存老师提供的实验室平台。相信这次课设定会给我以后工作打下坚实的基础,因为整个过程都是我和组员们动手完成,包括画原理图、硬件连接、程序调试等等,自己动手了定会掌握牢固。再次衷心的感谢两位老师及课设过程中帮助我们的小伙伴! 孙媚媚:为期两周的ARM课设实习很快过去了,虽然过程很痛苦,但果实是丰硕的。以前我们学习知识总是停留在知识层面,觉得书本上的只弄懂了就不错了。但通过这次实习我发现我以前的想法真是大错特错。要适应现在高速发展的社会的人才需求,我们不光要具备良好的学习习惯,还有有优秀的仔细能力、融会贯通能力。通过这次实习我发现,我在这方面真的十分欠缺。我们做的基于ARM的最小系统的智能垃圾桶的设计,听似简单,但设计之初,我们焦头烂额,首先,以前的课设都是以51或52单片机为主控制板来实现控制功能,没有应用过ARM最小系统控制板,那时才发现,作为自动化专业的学生,我们的知识面有多么狭隘。其次,对于智能垃圾桶要具备哪些功能,我们只有初步的了解,但对于具体的做法和程序的编写,我无从下手,我焦躁过,放弃过,但最终,都想着要最后提交实习报告,而重新振作。我们在网上利用并不丰富关于ARM的资料,查阅图书馆仅有的一种关于ARM的图书,团结一致,发挥我们的想象力。在真正设计期间,我们遇到很多困难,但是我们没有在气馁,坚持了两个星期。在这门课程设计中,我锻炼了自己动手能力,提高了解决问题的能力。我学习了ARM编程,了解红外传感器HC-SR501 芯片和温湿度传感器芯片,及红外、温湿度感应的原理。这次课设,我学到最多的还是,要独立学习,不要满足,不断学习和了解新的内容,电子业是个更新换代特别快的行业,我们不跟上它的脚步,只能被淘汰。胡建:两周的嵌入式系统设计结束了,我们组所做的基于arm的智能垃圾桶也取得了较好的成果,同时也使我对ARM有了更深刻的理解与认识。ARM微处理器的在较新的体系结构中支持两种指令集:ARM指令集和Thumb指令集。其中,ARM指令为32位的长度,Thumb指令为16位长度。Thumb指令集为ARM指令集的功能子集,但与等价的ARM代码相比较,可节省30%40%以上的存储空间,同时具备32位代码的所有优点。ARM处理器的三大特点是:耗电少功能强、16位/32位双指令集和合作伙伴众多。1、体积小、低功耗、低成本、高性能;2、支持Thumb(16位)/ARM(32位)双指令集,能很好的兼容8位/16位器件;3、大量使用寄存器,指令执行速度更快;4、大多数数据操作都在寄存器中完成;5、寻址方式灵活简单,执行效率高;6、指令长度固定。 在处理硬件部分时最大的感受是arm板比较脆弱精细,没有51好处理,实现各部分功能时也不容易,时好时坏。由于只能上机调试,给功能实现带来了很大麻烦。软件部分则由于学习不深,程序的编写与修改也是一大难题。最终我们通过一系列的调试与修改,实现了垃圾桶的红外感应自动开关垃圾桶盖,通过步进电机的正反转以及温湿度传感器还实现了对垃圾的固液体自动分类。此次课程设计我们使用了两个步进电机,还有12864液晶显示器以及2132芯片,最终实现了垃圾桶的智能化。 通过这次嵌入式课程设计,我认识到学好编程的重要性,真正理解了控制电机带来的好处。同时也学会了如何发挥团队合作精神,只有团结合作,才能更快更好学习应用知识。杨冬:在大四第一学期的末尾学校给我们专业安排了为期两周的ARM实习课程。因为在这学期自己作为一个大四学生也参加了各种各样的招聘会,深知实践对于自我的重要性,所以一开始就对这项课程有了浓厚的兴趣,因为字啊老师开始的介绍中我了解到,这项课程设计不同于我们以往的任何一实习课程,在这次课设当中我们先是自由分成了几个小组,然后根据老师所给的课题任意的去选择自己感兴趣的一项并去完成它。而更为重要的是我们要做出一个模型,实现所要求的各个功能基于ARM这门课程。而且老师还要求我们要有自己的创新,这在给我们压力的同时也让我们能够充分的发挥我们自己的创作能力。而且我们所做的智能垃圾桶也是非常的切合实际生活,让我们有更多的空间去发挥。并且将我们所学的ARM这门课程进一步巩固。开始做只能垃圾桶时候我们都有些不知所措,虽然在小组的讨论中有很多不同的想法,但苦于无法实现,不能很好地运用所学的知识。因此我们分别查阅了一些相关书籍,并且在网上借阅了一些和我们课题相似的设计题目,在多次的借阅参考之后就开始了我们自己的硬件接线。但只有在真正的做过之后才发现自己所想的东西有些和实际出入太大,比如我们焊接的第一个电机驱动电路,理论上可以实现的东西在连接到开发板并装载程序后却无法正常工作。最后在进过多次的实验和询问他人之后才知道是自己在软件中没有定义某个开关。之后基恩就是在不断地重复和整改之下慢慢的去完成的。相比较于硬件接线软件编程更是让人头疼的事情,应为我们有实现多个功能的只能垃圾桶,程序的冗杂是避免不了的,而基础程序的编写是有我们的组长来完成的。这也让我一时到了团队的重要之处,它可以把我们每个人的优势充分的发挥出来,而且能够更加优化的去完成任务。 为期两周的实习我们不仅收获了一个智能垃圾桶同时也学到了很多ARM相关知识,而且这些非常实用的东西让即将毕业的我们在以后的工作中能够充足的去发挥自我优势,使我们更好地去适应实际,让我们更早的明白如何在团队中充分的发挥自身的优势。 附录二(硬件电路图) 附录三(软件程序)源程序代码:#include "config.h"#define MOTOA 1<<10 / P0.10 #define MOTOB 1<<11 / P0.11 #define MOTOC 1<<12 / P0.12 #define MOTOD 1<<13 / P0.13#define MOTOA1 1<<28 / P0.28 #define MOTOB2 1<<29 / P0.29#define MOTOC3 1<<30 / P0.30 #define MOTOD4 1<<31 / P0.31 #define IR_LED 1<<27 / P0.27 #define key1 1<<16 / 电机2正转A-B-C-D(投放固体)#define key2 1<<17 /电机1正转打开垃圾盖#define key3 1<<18 /电机1反转关上垃圾盖#define key4 1<<19 /电机2反转(投放液体)#define key5 1<<20 /电机1,2停止#define KEYCON0x081f0000 / LED控制字#define MOTOCON0xf0003c00 / MOTO控制字#define GPIOSET(PIN) IO0SET = PIN / 方便修改置位端口#define GPIOCLR(PIN)IO0CLR = PIN / 方便修改清位端口#define RS 1<<9 /P0.9#define SID 1<<6 /P0.6#define E 1<<4 /P0.4#define PSB 1<<2 /P0.2并行或串行,选择低电平串行模式#define RST 1<<25 /P1.25,复位脚unsigned char IC_DAT164="友情提示: 垃圾投放完毕! "unsigned char IC_DAT264="请投放: 固体 "unsigned char IC_DAT364="请投放 液体 " unsigned char IC_DAT464="请使用智能垃圾桶 请分类投放 "unsigned char IC_DAT564=" 电机: 停 止 "unsigned char IC_DAT664="自动化1102 宋富鹏 杨冬 胡建 孙媚媚 "void TransferCom(unsigned char data0);void TransferData(unsigned char data1);void delay(unsigned int m);void delay_10ms(uint32 n);void lcd_mesg(unsigned char *adder1);void DelayNS(uint32 dly);void MOTO1(uint8 i); void MOTO10(uint8 i); void MOTO_Mode1(uint8 i); / A-B-C-Dvoid MOTO_Mode10(uint8 i);/* 名 称:main()* 功 能:根据表DISP_TAB来控制LED显示。*/int main(void) /* PINSEL2使用启动代码的默认配置,切勿任意配置PINSEL2,否则总线会受到干扰 */ PINSEL0=0x00000000; PINSEL1=0X00000000; PINSEL2&=(0x00000006); /设置所有I/O口为普通GPIO口 IO0DIR =MOTOCON; / 配置LED控制I/O方向 LCD12864_init(); initinal(); /液晶端口初始化 while(IO0PIN&key1)&&(IO0PIN&key2)&&(IO0PIN&key3)&&(IO0PIN&key4)&&(IO0PIN&key5)!=0) lcd_mesg(IC_DAT6); /显示界面6 while(1) if (IO0PIN&key1)=0) MOTO_Mode1(10); if (IO0PIN&key2)!=0) MOTO1(10); if (IO0PIN&key2)=0) MOTO10(10); / 电机2反转 if(IO0PIN&key4=0)|(IO0PIN&IR_LED)!=0) MOTO_Mode10(10); / A-B-C-D if(IO0PIN&key5)=0) / 停止 initinal(); lcd_mesg(IC_DAT5); /显示界面5 IO0CLR=MOTOCON; ; return(0);/* 名 称:DelayNS()* 功 能:长软件延时* 入口参数:dly延时参数,值越大,延时越久* 出口参数:无*/void DelayNS(uint32 dly) uint32 i; for(; dly>0; dly-) for(i=0; i<5000; i+); /* 名 称:MOTO_Mode1()* 功 能:单四拍程序* 入口参数:uint8 i延时参数,值越大,延时越久* 出口参数:无*/void MOTO1(uint8 i) / A-B-C-Dinitinal(); while(IO0PIN&key1)&&(IO0PIN&key3)&&(IO0PIN&key4)&&(IO0PIN&key5)!=0) lcd_mesg(IC_DAT2); /显示汉字界面2 /* A */ GPIOSET(MOTOA1); DelayNS(i); GPIOCLR(MOTOA1); /* B */ GPIOSET(MOTOB2); DelayNS(i); GPIOCLR(MOTOB2); /* C */ GPIOSET(MOTOC3); DelayNS(i); GPIOCLR(MOTOC3); /* D */ GPIOSET(MOTOD4); DelayNS(i); GPIOCLR(MOTOD4); void MOTO10(uint8 i) initinal(); while(IO0PIN&key1)&&(IO0PIN&key2)&&(IO0PIN&key4)&&(IO0PIN&key5)!=0) lcd_mesg(IC_DAT3); /显示汉字界面3 /* D */ GPIOSET(MOTOD4); DelayNS(i); GPIOCLR(MOTOD4); /* C */ GPIOSET(MOTOC3); DelayNS(i); GPIOCLR(MOTOC3); /* B */ GPIOSET(MOTOB2); DelayNS(i); GPIOCLR(MOTOB2); /* A */ GPIOSET(MOTOA1); DelayNS(i); GPIOCLR(MOTOA1); void MOTO_Mode1(uint8 i) initinal(); while(IO0PIN&key2)&&(IO0PIN&key3)&&(IO0PIN&key4)&&(IO0PIN&key5)!=0) lcd_mesg(IC_DAT1); /显示汉字界面1 /* A */ GPIOSET(MOTOA); DelayNS(i); GPIOCLR(MOTOA); /* B */ GPIOSET(MOTOB); DelayNS(i); GPIOCLR(MOTOB); /* C */ GPIOSET(MOTOC); DelayNS(i); GPIOCLR(MOTOC); /* D */ GPIOSET(MOTOD); DelayNS(i); GPIOCLR(MOTOD); void M