智能灌溉系统的研究与设计_第1页
智能灌溉系统的研究与设计_第2页
智能灌溉系统的研究与设计_第3页
智能灌溉系统的研究与设计_第4页
智能灌溉系统的研究与设计_第5页
已阅读5页,还剩32页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、物联网技术及应用综合训练题目: 智能灌溉系统的研究与设计 专业: 电子信息与技术 学院: 信息工程学院 学生姓名: 邢晨 学号: 2014520438 指导教师: 张军朝 2015年 6 月 5 日目录:一、系统需求分析11.1 滴灌施肥技术简介11.2 课题研究的背景及目的意义11.3 国外发展概况21.4 国内发展概况3二、系统架构4二、硬件62.1 机械部分62.2电路部分设计8A湿度传感器方案8B.运算放大器方案8C.电机方案9D显示部分设计:12E 、舵机控制方案13F.电源部分设计14G、对单片机的改进设计15三、程序清单17A、程序流程17B、部分模块驱动程序:18C、主程序:3

2、2一、系统需求分析1.1 滴灌施肥技术简介 滴灌施肥是一种先进的灌溉施肥方式,它将两个原本相互独立的技术灌溉和施肥,采用旁路式的结构结合在一起。滴灌施肥技术把肥料液、酸液和水通过一定比例混合在一起并将其准确地施加在作物根系附近,使得作物的根系能够充分直接吸收利用,满足作物不同阶段对养分的需求和土壤中的养分供给平衡。采用滴灌施肥技术可以方便地调节灌溉水中营养物质的浓度,满足作物生长的营养需求规律,大幅度提高肥料和水的利用效率、提高作物的产量和质量,同时还减少了田间管理作业的时间;滴灌施肥技术能够准确地控制满足植物生长最优的混合肥剂量以及渗入土壤的深度,而且施肥均匀、定位准确,使得灌溉施肥参数得到

3、精确有效地控制,减轻了土壤、地下水和环境的污染。 1.2 课题研究的背景及目的意义 我国水资源严重短缺,再加上农业灌溉用水方面普遍存在浪费严重和灌溉水利用效率低的问题,如何降低农业灌溉的用水量、提高灌溉用水的利用效率就成为急需解决的问题。从化肥的使用情况来看,我国的使用量居世界首位,但是肥料的利用效率却很低,渠灌和沟灌等传统的灌溉方式仍被广泛采用,它们的灌溉水利用效率只有 40%左右,结果使得大部分却被利用的水带走了施用的肥料,造成肥料的浪费。 滴灌施肥智能控制系统将灌溉和施肥结合起来,通过计算机对施肥量、灌溉时间、灌溉频率等参数的控制实现自动灌溉施肥的目的,一方面肥液直接到达作物的根系,肥料

4、的利用效率提高,肥料深层流失的现象也能够得到遏制,同时还保护地下水免受肥料及化学药剂的污染;另一方面系统利用灌水器将水以滴灌渗透的形式直接作用到作物的根系中,不仅降低了作物与作物之间水分的蒸发量而且还减少土壤深层水的渗漏量,最大限度减少了水分的损失,灌溉水的利用效率大大提高。经过多年的发展,节水灌溉技术和计算机控制技术相结合形成的新型灌溉技术日趋成熟,逐渐得到人们的重视,它不仅能够及时准确地控制施肥和灌溉而且还能对作物的生长规律、生长情况以及生长环境等有良好的适应性,大大提高了灌溉水和肥料的利用率,节省田间管理作业的时间,提高了劳动生产率,对提高农业投入的经济效益具有重要的意义。 1.3 国外

5、发展概况 现代高效农业成为农业生产领域中的一个大趋势,而滴灌施肥又是高效农业的重点,它的核心是以传感器技术和控制技术为基础的智能控制系统以及操作装置的研发,西方发达国家在这方面的优势比较明显。目前,设施农业比较先进的国家主要是美国、荷兰、以色列、日本以及澳大利亚等发达国家。农业生产由机械灌溉转变为自动灌溉,水肥利用效率和作物产量得到大幅度提高,田间管理也越来越人性化,并且还能够对灌溉施肥区域实施动态的监测管理,其控制性能也越来越高。 伴随着技术的不断发展以及对现实农业生产的需要,与因特网、ZigBee 以及远程控制等数据传输技术相结合的先进的控制器不断被开发出来,由以色列的Eldar Shan

6、y 公司开发的带有可编程控制器和 EC/PH 检测单元的计算机专家控制系统,能够实时检测灌溉水的 EC 和 PH 值并且能高效准确地对作物的营养和水分实施供给,实现了水肥一体化。 美国的营养液供给控制系统中,不同的营养罐里装有不一样的化合物,按照满足植物生长需要的比例将不同的化合物混合溶解在水中,利用计算机对营养罐的阀门进行统一控制,最后再把营养液通过管道输送到作物培养槽中。荷兰的温室无土栽培也是采用类似的控制方式。法国、日本、澳大利亚等也都是滴灌施肥技术比较先进的国家,研发了各种先进的设施农业控制器,广泛应用于温室控制、幼苗育种以及温室花卉种植等。其中法国研发的 DOSTRON 混肥器和澳大

7、利亚生产的 MICRO-MASTER 系列产品处于国际领先地位。 近年来,随着信息技术的发展,越来越多的数据传输和互联网技术应用于滴灌施肥领域。美国、以色列等国已通过互联网将生产者和农技服务部门有效地连接起来,通过网络,农技部门能够为生产者提供施肥建议,解答生产者遇到的问题,最大限度地满足实际生产的需要。 1.4 国内发展概况 从 20 世纪 70 年代起,我国开始引进国外先进的滴灌技术,并且对先进灌溉技术和施肥装置不断地进行研究,初步研究开发出以 8031 单片机为核心的滴灌施肥控制器的一系列产品。进入到 90 年代,我国滴灌施肥技术的总体水平有所提高,比如李锐,袁军等人研制的灌溉及施肥智能

8、控制系统,将模糊控制原理应用到控制系统中;鲁亚云等人设计的恒量施肥控制装置实现了肥液高度与注肥管出口高度差保持不变,达到恒量施肥的目的等等。但从整体上来说,与国外同类产品仍有较大差距,主要表现在:灌溉水和肥料混合理论与应用研究成果较少,控制的精度不高;信息管理和决策系统不够成熟;先进灌溉设备的性能、产品质量以及使用的可靠性、稳定性不高等。近年来出现了一些滴灌与施肥相结合的滴灌施肥技术方面的研究报道,例如冯绍元等在棉花上进行了滴灌的水肥藕合效应试验,实验结果表明水的利用率较传统方式提高了 20%,并且在相同灌水量条件下还可促进肥料的利用效率。 伴随着我国农业现代化的发展以及农业结构调整等现实因素

9、,对农业滴灌施肥控制技术提出了更高的要求。根据我国的国情以及各地农业发展的需要,大力推广实用可行、操作简便、成本低廉的节水灌溉施肥控制措施和农业机械设备,这将是农业生产领域的一个重要措施,必然产生巨大的经济和社会效益。二、系统架构本系统系统通过选择合适的传感器将对土壤中含水量以及空气湿度等重要物理量进行采集,通过信号及采集部分将其转化为数字信号,交给单片机系统进行处理,通过智能控制部分,在需要时驱动相关外设,进行自动精确定位地灌溉。具体流程图如下:工作过程流程图利用单片机内定时器计数器,每隔10分钟(可调)定时向单片机发出中断信号单片机相应中断,驱动湿度传感器电路,使湿度传感器工作,采集数据(

10、四个)并将其传至单片机,由单片机驱动液晶显示器输出土地情况调用 土壤湿度分析子程序(即与标准湿度相比较),计算出土壤需要浇灌的部分,并计算出干湿度以决定浇灌用水量(由喷灌时间决定)根据分析结果,调用电机运转子程序,同时控制电机与舵机分别旋转、摆动,并打开节流阀,驱动水泵实现精确定位,完成浇灌单片机重置定时器计数后待机,使定时器30秒后发出中断信号30s后响应中断驱动湿度传感器电路,采集数据,看是否符合湿度要求,并输出此时湿度不符合要求符合湿度要求,重置定时器定时(10分钟),单片机待机单片机处于待机状态,等待中断信号关键字: 智能控制 精确定位 密封 湿度传感器 差动放大 顺序通电 液晶显示二

11、、硬件2.1 机械部分整体的机构形式如下所述:水由出水口接入,经过水泵增压后,经过导水软管,最后从管的另一端喷射出来。机械臂主要由导水软管,套筒,舵机,步进电机和与电机配合的传动装置组成。套筒下端固结有加工上锥齿的圆环,电机通过锥齿轮传动,带动套筒转动。舵机固定在套筒上,当套筒旋转时,舵机也随套筒旋转。导水软管穿过套筒与固定在套筒上端的舵机相固结,当舵机臂摆动时导水软管喷头处完成竖直方向的调整,以使喷出的水能够调整远近。而套筒转动则实现了喷水方向的调整。这样,通过水平旋转及竖直摆动,实现了喷灌的精确定位。考虑到水对电机、齿轮传动部分的腐蚀影响,电机及其与套筒的传动部分通过密封箱密封,导线引出,

12、连接到控制电路部分及电源部分,以实现对机械系统的电力输入及控制。机械臂通过套筒下端深埋入土壤进行固定。这种方案是我们经过多次调整最后确定出来的。下图为我们用机械仿真软件pro/engineer制作的图形(具体见附图)电机控制套筒水平转动套筒导水软管 我们的创新体现在我们的设计过程当中。在喷口的设计中,由于市场上所售的喷头多利用水压将水达到某个固定位置,因此不能实现喷灌位置的可调性要求。因此喷管管口需要重新设计。在喷头处,我们曾试验过多个方案。其中一个就是拟定用钢管作导水管,将水直接引到喷头,而喷头处设计成喷口可以转动的形式,通过增加一个电机并通过细杆与喷头处连实现竖直方向的转动,水平方向的转动

13、还是靠另一个电动机带动套筒来实现(具体见附proe仿真图)。但是这种设计有两个问题我们没能解决。第一个问题就是密封的问题,喷口转动时对其密封要求较高,且此处水压较高,更增加密封难度。第二个问题就是底部的电机如何使上部的喷头进行竖直方向的摆动。此处传动距离较长,增加材料势必增加水平转动电机的负载,且此电机好密封,极易漏水烧毁电机。于是我们直接采用了接导水软管的方法。导水软管是用一种软橡皮材料做成的,我们在进行试验时,一端接从水泵流过的水,一端穿过套筒固定在舵机上,有较好的弹性,使灌溉机械臂在转动时,水管不会产生较大的阻力矩,也不会发生塑性变形影响使用。这种形式的优点是结构简单,使用方便,一根管足

14、以解决喷头出的设计问题。缺点是电机带动套筒的转角不能持续朝一个方向转动,否则水管会打结使水流不通,且从水管浇灌到地面的水流呈柱状,对地面冲击较大。软管长期拉伸压缩会造成水管脱胶,碎裂等问题。在实际设计计算中,需进行软管的拉压的疲劳强度的校核,及齿轮传动的校核计算。通过查机械设计的手册可以计算出所需的材料及其他要求。在进行设计的过程中,我们查阅了上市的喷头的基本的工作原理,对其有了初步的了解。在进行结构设计得过程中,我们查阅了相关的机械原理、机械设计方面的书籍,增长了我们的机械方面的知识及解决机械设计问题的能力。2.2电路部分设计 A湿度传感器方案我们采用通DX-S2型土壤湿度传感器,

15、通过测出被测土壤的介电常数,并根据土壤容积含水率与土壤介电常数之间的非线性关系推导出土壤的容积含水率和重量含水率。本传感器对土壤水分变化有很高的灵敏度,因此温度、盐分、土壤性质变化因素的影响相对比较小,如果要求测量结果准确度高,应酌情对这些因素的影响进行修正。或采取其它措施减少这些因素的干扰。湿度传感器各项参数如下:测量参数 土壤容积/重量含水率 量 程 450%(绝对重量含水率) 精 度 误差不超过2% 响应时间 响应在1秒内进入稳定 工作环境 -30+55 工作电压 4.55.5VDC,典型值5.0VDC 工作电流 50mA 输出信号 02.5VB.运算放大器方案传感器输出的电压信号为毫伏

16、级,需要通过运放将信号放大,对运算放大器要求很高。 基于此,我们考虑了可以采用以下几种方案: 方案 一 、利用普通低温漂运算放大器构成多级放大器。 普通低温漂运算放大器构成多级放大器会引入大量噪声。由于 A/D 转换器需要很高的精度,所以几毫伏的干扰信号就会直接影响最后的测量精度。在调试中误差较大,所以,此种方案不宜采用。 方案二、由高精度低漂移运算放大器构成差动放大器。 差动放大器具有高输入阻抗,增益高的特点,可以利用普通运放 ( 如LM324) 做成一个差动放大器。 U1-U3组成仪表放大器,U4构成电压跟随器,用于调零电路. 基于以上分析,我们采用此种放大方式,(四集成度,芯片型号LM3

17、24)C.电机方案 由于对浇灌机械臂的转速要求不高,且要实现精确定位,而且步进电机是将电脉冲信号转变为角位移或线位移的开环控制元件。在非超载的情况下,电机的转速、停止的位置只取决于脉冲信号的频率和脉冲数,而不受负载变化的影响,即给电机加一个脉冲信号,电机则转过一个步距角。这一线性关系的存在,加上步进电机只有周期性的误差而无累积误差等特点,使得在速度、位置等控制领域用步进电机来控制变的非常的简单。由此,电机采用四相六线混合式步进电机,以实现对喷灌机械臂的转动控制。在最初的电机驱动方案中,采用L298芯片+二极管吸收电路,用设计好的开关电源给L298以及步进电机供电。电路经keil+proteus

18、仿真后可以实现对电机的控制,仿真阶段未出现任何问题。电路图如下: 但此电路在实际调试中,由于从l298的2、3、13、14脚输出信号变化较快,二极管导通出现问题;电机正转调试c语言子程序如下:#include<reg51.h>void delay1s(void) unsigned char j,k; for(j=50;j>0;j-) for(k=100;k>0;k-); main() unsigned char a8=0x24,0x35,0x11,0x39,0x28,0x3a,0x12,0x36 ; unsigned char b; unsigned char i=0;

19、while(i<=50) for(b=0;b<8;b+) P1=ab; delay1s();i+; 1、电机的转速控制:上程序中,通过j、k的取值,可以控制延时程序延时的时间,进而控制步进电机的转动频率,进而实现对电机速度的控制。实际应用中,可将其设置为函数间接口的变量,以实现调速。2、电机的转动位置控制:在while循环中,没执行一次,电机转动一个齿距角。由于所用电机为50齿,所以每完成一次上述程序,电机转动一周。转动角度与i的取值关系为:=i50*2可以将i设置成函数间接口的变量,通过对其赋值实现精确定位。3、实现正反转反转程序只需将0x24,0x35,0x11,0x39,0x

20、28,0x3a,0x12,0x36的顺序倒过来,即依次为0x36,0x12,0x3a,0x28,0x39,0x11,0x35,0x24,依次循环。在运行时,电机的各项性能已经满足使用需要,但仍有需改进的地方:此电机在高频状态,转速较高时,易出现丢步、振动现象,需用细分方案来解决;另外,电机驱动电路的散热方法亦非尽善尽美,需要更好的解决方案。D显示部分设计:在每次湿度传感器采集到数据时,由单片机驱动液晶显示器显示土壤湿度。我们选用了成都市飞宇达实业有限公司出品的FYD12864-0402B型的液晶显示模块。此模块提供硬体光标及闪烁控制电路,由地址计数器的值来指定DDRAM中的光标或闪烁位置。该模

21、块具有2.75.5V的宽工作电压范围,且具有睡眠、正常及低功耗工作模式,可满足系统各种工作电压及便携式仪器低功耗的要求。液晶模块显示负电压,也由模块提供,从而简化了系统电源设计。模块同时还提供LED背光显示功能。除此之外,模块还提供了画面清除、游标显示/隐藏、游标归位、显示打开/关闭、显示字符闪烁、游标移位、显示移位、垂直画面旋转、反白显示、液晶睡眠/唤醒、关闭显示等操作指令。下图为液晶显示程序流程图: 下图为proteus仿真图:E 、舵机控制方案 舵机是一种位置伺服的驱动器,适用于那些需要角度不断变化并可以保持的控制系统。其工作原理是:控制信号由接收机的通道进入信号调制芯片,获得直流偏置电

22、压。它内部有一个基准电路,产生周期为20ms,宽度为1.5ms的基准信号,将获得的直流偏置电压与电位器的电压比较,获得电压差输出。最后,电压差的正负输出到电机驱动芯片决定电机的正反转。当电机转速一定时,通过级联减速齿轮带动电位器旋转,使得电压差为0,电机停止转动。单片机系统实现对舵机输出转角的控制,必须首先完成两个任务:首先是产生基本的PWM周期信号,本设计是产生20ms的周期信号;其次是脉宽的调整,即单片机模拟PWM信号的输出,并且调整占空比。当系统中只需要实现一个舵机的控制,采用的控制方式是改变单片机的一个定时器中断的初值,将20ms分为两次中断执行,一次短定时中断和一次长定时中断。这样既

23、节省了硬件电路,也减少了软件开销,控制系统工作效率和控制精度都很高。 具体的设计过程:例如想让舵机转向左极限的角度,它的正脉冲为2ms,则负脉冲为20ms-2ms=18ms,所以开始时在控制口发送高电平,然后设置定时器在2ms后发生中断,中断发生后,在中断程序里将控制口改为低电平,并将中断时间改为18ms,再过18ms进入下一次定时中断,再将控制口改为高电平,并将定时器初值改为2ms,等待下次中断到来,如此往复实现PWM信号输出到舵机。用修改定时器中断初值的方法形成了脉冲信号,调整时间段的宽度便可使伺服机灵活运动。F.电源部分设计对于此系统的供电问题,由于需要对电机供电,因此需要大电流,传统的

24、线性电源,体积笨重,内阻大,效率低,大电流时驱动负载能力差,因此我们采用了开关电源,内阻小,适合强电流供电。其电路图如上,通过电路的连接,我们得到了12V (2A)5V(1A)3.5V(1A)三路电源,而且调试成功。对于此电路有一个亮点就是,电源系统中有两个开关控制电路,一个是对强电的开关控制,另外一个是对变压器副边整流后电压的开关控制以达到稳压目的,普通的稳压管,如果整流后的电压为16V而稳压管是12V则在负载电流为1A时,稳压管的功率是4W,此时稳压管发烫,而且电能浪费,而对于由UA741控制的初步稳压电路可以实现在负载电流为1A使稳压功耗不足1W. 电路原理图如下:G、对单片机的改进设计

25、在进行实验过程中,由于处理中断较多,我们感觉到51单片机的片内资源不够,增加芯片势必增加电路板的体积。所以我们最后学习并采用了MSP430的单片机来改进我们的系统。MSP430F247单片机具有超低功耗、集成高性能的模拟器件、16位RISC结构的CPU、在线编程、多时钟、集成开发环境简单等特点。片内资源丰富,有ADC,PWM,若干TIME,串行口,WATCHDOG,FLASH,比较器,模拟信号等。另外在本系统中我们需要应用多路A/D转换功能,本单片机刚好为我们提供了8路A/D转换接口。同时本单片机具有强大的处理功能,采用了精简指令集( RISC )结构,具有丰富的寻址方式( 7 种源操作数寻址

26、、 4 种目的操作数寻址)、简洁的 27 条内核指令以及大量的模拟指令;大量的寄存器以及片内数据存储器都可参加多种运算;还有高效的查表处理指令;有较高的处理速度,在 8MHz 晶体驱动下指令周期为 125 ns 。这些特点保证了可编制出高效率的源程序。低功耗是目前一项很令人关注的性能指标,MSP430 系列单片机的电源电压采用的是 1.83.6V 电压。因而可使其在 1MHz 的时钟条件下运行时, 芯片的电流会在 200400uA 左右,时钟关断模式的最低功耗只有 0.1uA 。其次是独特的时钟系统设计。基本时钟系统和锁频环( FLL 和 FLL+ )时钟系统或 DCO 数字振荡器时钟系统。由

27、系统时钟系统产生 CPU 和各功能所需的时钟。并且这些时钟可以在指令的控制下,打开和关闭,从而实现对总体功耗的控制。当系统处于省电的备用状态时,用中断请求将它唤醒只用 6us 。并且该单片机内的片内可擦写FLASH为我们提供了一个很方便的存储器,即使在掉电的情况下也不会改变内部的数据。Msp430F247单片机的种种功能刚好满足了我们的需求,正是它的存在,是我们的系统更加完善。三、程序清单A、程序流程符合湿度要求,重置定时器定时(10分钟),单片机待机不符合要求30s后响应中断驱动湿度传感器电路,采集数据,看是否符合湿度要求,并输出此时湿度单片机重置定时器计数后待机,使定时器30秒后发出中断信

28、号根据分析结果,调用电机运转子程序,同时控制电机与舵机分别旋转、摆动,并打开节流阀,驱动水泵实现精确定位,完成浇灌调用土壤湿度分析子程序(即与标准湿度相比较),计算出土壤需要浇灌的部分,并计算出干湿度以决定浇灌用水量(由喷灌时间决定)利用单片机内定时器计数器,每隔10分钟(可调)定时向单片机发出中断信号单片机处于低功耗状态,等待中断信号单片机相应中断,驱动湿度传感器电路,使湿度传感器工作,采集数据并将其传至单片机,由单片机驱动液晶显示器输出土地情况B、部分模块驱动程序: 1、液晶驱动: /*初始化液晶*/void initLCD(void) Delayms(50); WR_COM(0x30);

29、 Delay10us(20); WR_COM(0x30); Delay10us(5); WR_COM(0x0c); Delay10us(20); WR_COM(0x01); Delayms(20); WR_COM(0x06); WR_COM(0x0c); CLR(); /*清屏*/void CLR(void)Busy(); RS_0; RW_0; E_1; _NOP(); P4OUT=0x01; E_0;/*写控制字函数*/void WR_COM(unsigned char ins) Busy();RS_0;RW_0;E_1; P4OUT=ins;E_0;/*写数据函数*void WR_DAT

30、(unsigned char dat) Busy();RS_1;RW_0;E_1;P4OUT=dat;E_0;/*初始化I/O*void LCD_port_init(void) P5SEL =0X00; P4SEL =0X00; P5DIR|=BIT0; P5DIR|=BIT1; P5DIR|=BIT2; P4DIR =0XFF; P4OUT=0X00; initLCD();2、 步进电机驱动:void delay1s(void) unsigned char j,k; for(j=50;j>0;j-) for(k=100;k>0;k-); main() unsigned char

31、a8=0x24,0x35,0x11,0x39,0x28,0x3a,0x12,0x36 ; unsigned char b; unsigned char i=0;while(i<=50) for(b=0;b<8;b+) P1=ab; delay1s();i+; void power(float t/*速度值,保留一位小数*/,unsigned char m) unsigned char gaodu=0; uchar b,c,d,e,f,g; f=m; while(f) for(c=0;c<5;c+) for(b=8;b>0;b-) g=b-1; P3OUT=ag; pow

32、er_delay(t); f-; gaodu=m-f; d=gaodu/10; e=gaodu%10; now_hight9=d+0x30; now_hight10=e+0x30; write_char(now_hight,0,1); void anti_power(float t/*速度值,保留一位小数*/,unsigned char m) unsigned char gaodu=0; uchar b,c,d,e,f; f=0; while(m) for(c=0;c<5;c+) for(b=0;b<8;b+) P3OUT=ab; power_delay(t); f+; m-; g

33、aodu=70-f; d=gaodu/10; e=gaodu%10; now_hight9=d+0x30; now_hight10=e+0x30; write_char(now_hight,0,1); void anti_power_d(float t/*速度值,保留一位小数*/,unsigned char m) unsigned char gaodu=0; uchar b,c,d,e,f; f=0; while(m) for(c=0;c<5;c+) for(b=0;b<8;b+) P3OUT=ab; power_delay(t); f+; m-; gaodu=ii-f; d=ga

34、odu/10; e=gaodu%10; now_hight9=d+0x30; now_hight10=e+0x30; write_char(now_hight,0,1); 3、 舵机驱动: BCSCTL1=0x0; BCSCTL2=0x88; do IFG1&=OFIFG; for(i=0xff;i>0;i-); while (IFG1&OFIFG)!=0); P1DIR=0XFF; P1SEL=0XFF; TACTL=0x2d2; CCTL1=OUTMOD_7; CCR0=20000; while(1) CCR1=2000; delay(); CCR1=1000; de

35、lay();4、 键盘驱动:/初始化P1中断void KEY_1_init(void) P1DIR=0; P1SEL=0; P1DIR|=BIT3; P1DIR|=BIT5; P1DIR|=BIT6; P1DIR|=BIT7; P1OUT=0X00; P1IE=0; P1IES=0; P1IFG=0; P1IE|=BIT0; P1IES|=BIT0; P1IE|=BIT1; P1IES|=BIT1; P1IE|=BIT2; P1IES|=BIT2; P1IE|=BIT4; P1IES|=BIT4;/初始化P2中断+P3void KEY_2_init(void) P2DIR=0; P2SEL=0

36、; P2IE=0; /禁止P2口中断 P2IES=0XFF; /现在是下降沿触发 P2IFG=0; /标志寄存器清零,无中断请求。 P2IE|=BIT0; P2IES&=BIT0; P2IE|=BIT1; P2IES&=BIT1; P2IE|=BIT2; P2IES&=BIT2; P2IE|=BIT3; P2IES&=BIT3; P2IE|=BIT4; P2IES|=BIT4; P2DIR|=BIT5; P2DIR|=BIT6; P2DIR|=BIT7; P2_7_H;/高阻 P3SEL=0; P3DIR=0XFF; P6SEL=0; P6DIR|=BIT3;

37、/_EINT();int keyprocess(void) int np10,np11,np12,np13; int nres=0; /P1.5输出低电平 P1OUT=0xd0; np10=P1IN&BIT0; if(np10=0) nres=7; np11=(P1IN&BIT1)>>1; if(np11=0) nres=1; np12=(P1IN&BIT2)>>2; if(np12=0) nres=4; np13=(P1IN&BIT4)>>4; if(np13=0) nres=11;/取消键 /P1.6输出低电平 P1OUT

38、=0xb0; np10=P1IN&BIT0; if(np10=0) nres=8; np11=(P1IN&BIT1)>>1; if(np11=0) nres=2; np12=(P1IN&BIT2)>>2; if(np12=0) nres=5; np13=(P1IN&BIT4)>>4; if(np13=0) nres=0; /P1.7输出低电平 P1OUT=0x70; np10=P1IN&BIT0; if(np10=0) nres=9; np11=(P1IN&BIT1)>>1; if(np11=0)

39、nres=3; np12=(P1IN&BIT2)>>2; if(np12=0) nres=6; np13=(P1IN&BIT4)>>4; if(np13=0) nres=12;/确定键 P1OUT=0x00; /恢复以前值 for(;) /读各个管脚的状态 np10=P1IN&BIT0; np11=(P1IN&BIT1)>>1; np12=(P1IN&BIT2)>>2; np13=(P1IN&BIT4)>>4; if(np10=1&&np11=1&&np1

40、2=1&&np13=1) /等待松开按键 break; return nres;int keyscan(void) int np10,np11,np12,np13; int nres=0; for(;) /读取各个管脚的状态 np10=P1IN&BIT0; np11=(P1IN&BIT1)>>1; np12=(P1IN&BIT2)>>2; np13=(P1IN&BIT4)>>4; /是否有键被按下 if(np10=0|np11=0|np12=0|np13=0) /有键被按下 _NOP(); break; Delay(50); /读各个管脚的状态 np10=P1IN&BIT0; np11=(P1IN&BIT1)>>1; np12=(P1IN&BIT2)>>2; np13=(P1IN&BIT4)>>4; /是否有键被按下 if(np10=0|np11=0|np12=0|np13=0) /有键被按下,进行按键分析 nres=keyprocess(); else return 10;/非有效键

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论