1、 基于51单片机超声波测距仪设计摘要: 本方案以stc89c52为核心,通过编程(C语言)来实现该单片机对外围电路适时控制,并提供应外围电路各种所需信号和接受超声波反射回来微小信号,涉及频率振荡信号,时钟信号,数据解决信号和显示信号等等。其核心功能是对距离检测并实时进行距离显示,在检测距离方面通过发射端与接受端时间差来计算,理论上所测距离与其时间差成线性关系,因此可以通过线性回归记录办法求出实际距离与所求距离关系。该电路简化了某些外围电路,任能做到较为精准测量工作,由于是采用程控操作,因此其移植性和可扩展性还是较好。在设计时分,分模块进行设计来实现各某些功能,简化了在设计过程中调试难度。核心词
2、: 超声波测距、单片机控制、液晶显示、距离报警、线性回归Abstract:This program stc89c52 programming (C language) to achieve the timely control of the single-chip peripheral circuits,and made available to the peripheral circuits of the desired signal and receiving the ultrasonic reflected the small signal,including frequency osc
3、illation signal,the clock signal,data signal processing and display signals,and so on. The its core function is to to the detection of pairs the distance and real-time of the carried out the distance the display of goes as follows. In the to calculate the,in the the detection distance aspects of thr
4、ough the launch of the-side with the the time of the the receiving end is poor,in theory,the measured distance with its time difference into a linear the relationship between,,so can through the the linear regression statistical methods calculate the actual distance of the seek distance relationship
5、. The circuit simplifies the peripheral circuit,any more accurate measurements can be done,because it is programmed operation,its portability and scalability better. Hours of the design,the sub-module design to achieve the function of each,and simplifies the debugging difficulty in the design proces
6、s.Keywords:Ultrasonic Ranging,MCU control,LCD,alarm of distance ,linear regression 目录1前言31.1 课题研究背景和意义31.2 课题国内外研究现状32 总体方案设计42.1超声波测距原理42.2超声波传感器工作原理及构造图43单元模块设计53.1各单元模块功能简介及电路设计53.2 AT89S52型单片机简介63.3各单元模块联接84 软件设计154.1软件设计分析154.2软件设计思路154.2.1主程序154.2.2 超声波测距子程序164.2.3 超声波延时子程序175系统调试185.1硬件调试185.
7、2硬软件联调195.3测试成果分析205.3.1测试波形205.3.2测试中仪器仪表215.3.3 数据分析215.4超声波测距误差分析225.4.1温度误差225.4.2串扰问题226 结论236.1总结与体会236.2 对设计进一步完善提出意见或建议23附录一、有关设计程序26附录二、设计图和35附录三、实物图36 1前言1.1 课题研究背景和意义超声波是指频率高于20KHz声波,属于机械波范畴,遵循普通机械波在弹性介质中传播规律,如在介质分界面处发生反射和折射现象,在进入介质后被介质吸取而发生衰减等,正是由于有这些性质,使得超声波可以用于距离测量,随着经济发展,科技水平不断提高,电子测量
8、技术应用越来越广泛,超声波测量精度高,成本低,性能稳定则备受青睐,超声波测距技术被广泛应用于人们生活和工作中。由于超声波测距是一种非接触检测技术,不受光线、被测对象颜色影响,比其她仪器更卫生,具备不污染、高可靠、长寿命等特点,被广泛应用于纸业、矿业、电厂、化工业、污水解决厂、食品、水文、等行业中,可在不同环境中进行距离精确度在线标定,可直接用于水酒精、糖等液位控制,能达到工业实用指标规定。还可以用于移动机器人视觉系统中,这样可使机器人自动躲避障碍物行走,及时获得障碍物位置信息,同步超声波测距系统具备以上这些特点,在汽车倒车雷达研制方面也得到了广泛应用1。1.2 课题国内外研究现状当前国际国内,
9、在超声波测距方面研究方向和水平不同,重要体当前对测距原理、超声波信号解决办法和超声波测距解决器选用上。常用超声波测距原理分为渡越时间法和相位差法两种。信号解决办法大体分为阈值检查法、互有关延时预计法、伪随机码扩频测距法和最小均办法四种。在解决器方面大多以单片机为主,其中以51系列应用最为广泛,采用运算速度更快,效率更高dsp芯片作为解决器,也正成为一种非常活跃研究方向。当前已研制超声波测距仪中,量程普通为3-12m,美国AIRMAR公司生产airducer AR30超声波传感器作用距离可达30m,但价格昂贵,精确度方面已控制在测量误差0.4%左右,与真值差距在厘米级范畴内,若采用互有关或伪随机
10、法,最高可控制在0.05m内,在提高精准度方面,超声波测距尚有很大发展潜力和上升空间2。2 总体方案设计2.1超声波测距原理 谐振频率高于20 kHz 声波称为超声波。超声波为直线传播方式,频率越高,反射能力越强,而绕射能力越弱。运用超声波这种特性,常惯用渡越时间检测法进行距离测量。其工作原理是:换能器向介质发射超声波,声波遇到目的后必然有反射回波作用在换能器上。若已知介质中声速为c,回波到达时刻与发射波时刻时间差为t,就可以计算出发射点与反射点距离s:s= c.t/2 (1)2.2超声波传感器工作原理及构造图为了研究和运用超声波,人们已经设计和制成了许多超声波发生器。总体上讲,超声波发生器可
11、以分为两大类:即用电气方式和机械方式产生超声波。前者涉及压电型、磁致伸缩型和电动型等;后者有加尔统笛、液哨和气流旋笛等。它们所产生超声波频率、功率和声波特性各不相似,因而用途也各不相似,当前较为惯用是压电式超声波发生器,压电式超声波换能器是运用压电晶体谐振来工作。内部构造如图1所示,它有两个压电晶片和一种共振板。当它两极外加脉冲信号,其频率等于压电晶片固有振荡频率时,压电晶片将会发生共振,并带动共振板振动产生超声波,这时它就是超声波发生器;如没加电压,当共振板接受到超声波时,将压迫压电振荡器作振动,将机械能转换为电信号,这时它就成为超声波接受转换器。超声波发射转换器与接受转换器其构造稍有不同4
12、。共 振 板电极压电晶片图 1 超声波传感器构造 如下为型号T/R40-10超声波传感器特性参数(T-发射,R-接受,40-中心频率单位kHZ,10-外壳直径单位mm)3单元模块设计3.1各单元模块功能简介及电路设计整体电路控制核心为单片机AT89S52,超声波发射和接受电路都对相应信号进行整形及放大,以保证测量成果尽量精准。超声波模块传感器实现超声波发射和接受。整体电路如图6:涉及超声波发射电路,超声波接受电路,显示电路等模块构成8。键盘键入估测范畴 发射电路 AT89C51 接受电路 LED显示电路 图2.1工作原理超声波测距器工作原理:打开电源,整个电路通电,单片机执行程序,对系统环境初
13、始化,设立定期器T0工作模式,启动T0, 调用超声波发生子程序,等待反射超声波,计算距离,显示距离;重复。工作过程中,有关子程序和中断程序被执行,相应硬件配合行动,显示测量成果。3.2 AT89S52型单片机简介AT89S52 是一种低功耗、高性能CMOS8位微控制器,具备 8K 在系统可编程 Flash 存储器。使用Atmel公司高密度非易失性存储器技术制造,与工业80C51 产品指令和引脚完全兼容。片上Flash容许程序存储器在系统可编程,亦适于常规编程器。在单芯片上,拥有机灵8 位CPU 和在系统 可编程Flash,使得AT89S52为众多嵌入式控制应用系统提 供高灵活、超有效解决方案。
14、 AT89S52具备如下原则功能: 8k字节Flash,256字节RAM,32 位I/O 口线,看门狗定期器,2 个数据指针,三个16 位 定期器/计数器,一种6向量2级中断构造,全双工串行口, 片内晶振及时钟电路。此外,AT89S52 可降至0Hz 静态逻辑操作,支持2种软件可选取节电模式。空闲模式下,CPU 停止工作,容许RAM、定期器/计数器、串口、中断继续工 作。掉电保护方式下,RAM内容被保存,振荡器被冻结, 单片机一切工作停止,直到下一种中断或硬件复位为止5。其引脚图如图3所示:P0 口:P0口是一种8位漏极开路双向I/O口。作为输出口,每位能驱动8个TTL逻 辑电平。对P0端口写
15、“1”时,引脚用作高阻抗输入。 当访问外部程序和数据存储器时,P0口也被作为低8位地址/数据复用。在这种模式下, P0不具备内部上拉电阻。 在flash编程时,P0口也用来接受指令字节;在程序校验时,输出指令字节。程序校验 时,需要外部上拉电阻。P1 口:P1 口是一种具备内部上拉电阻8 位双向I/O 口,p1 输出缓冲器能驱动4 个 TTL 逻辑电平。对P1 端口写“1”时,内部上拉电阻把端口拉高,此时可以作为输入 口使用。作为输入使用时,被外部拉低引脚由于内部电阻因素,将输出电流(IIL)。P2 口:P2 口是一种具备内部上拉电阻8 位双向I/O 口,P2 输出缓冲器能驱动 4 个 TTL
16、 逻辑电平。对P2 端口写“1”时,内部上拉电阻把端口拉高,此时可以作为输入 口使用。作为输入使用时,被外部拉低引脚由于内部电阻因素,将输出电流(IIL)。 在访问外部程序存储器或用16位地址读取外部数据存储器(例如执行MOVX DPTR) 时,P2 口送出高八位地址。在这种应用中,P2 口使用很强内部上拉发送1。在使用 8位地址(如MOVX RI)访问外部数据存储器时,P2口输出P2锁存器内容。 在flash编程和校验时,P2口也接受高8位地址字节和某些控制信号。P3 口:P3 口是一种具备内部上拉电阻8 位双向I/O 口,p3 输出缓冲器能驱动4 个 TTL 逻辑电平。对P3 端口写“1”
17、时,内部上拉电阻把端口拉高,此时可以作为输入 口使用。作为输入使用时,被外部拉低引脚由于内部电阻因素,将输出电流(IIL)。 P3口亦作为AT89S52特殊功能(第二功能)使用。 第二功能: P3.0 RXD(串行输入口) P3.1 TXD(串行输出口) P3.2 INTO(外中断0) P3.3 INT1(外中断1) P3.4 TO(定期/计数器0) P3.5 T1(定期/计数器1) P3.6 WR(外部数据存储器写选通) P3.7 RD(外部数据存储器读选通) 图3.13.3各单元模块联接3.3.1 系统设计 该系统是以STC89C52型单片机为主体而搭建,连接了外部矩阵键盘,1602型液晶
18、,稳压电源系统。1、单片机单片机型号是STC89C52,其重要外部I/O连接如下: 表3.1P0.0-P0.71602显示端口P2.0-P2.21602读写控制P3.0-P3.1程序烧写P3.4口发波端P3.2接受端 图3.23.3.2、矩阵键盘键盘为44矩阵键盘,每个按键功能和与单片机连接端口如下: 图3.33.3.3、液晶 图3.4使用1602型液晶,在不同状态下显示不同内容: 初始化: 预设距离: 测量中: 测量失败: 图3.53.3.4、闪烁灯 图3.63.3.5、程序烧写模块 图3.73.3.6、蜂鸣器模块 图3.83.3.7、稳压电源采用7805稳压芯片,增长了电源稳定性,减少功耗
19、 图3.93.3.8、测距模块(1) 工作原理 图3.10a. 采用IO口TRIG触发测距,给至少10us高电平信号;b. 模块自动发送8个40KHZ方波,自动检测与否有信号返回;c. 有信号返回时,通过IO口ECHO输出一种高电平,高电平持续时间就是超声波从发射到返回时间。测试距离=(高电平时间*声速)/2。(2) 引脚定义VCC供5V电源,TRIG触发控制,信号输入,ECHO回响信号输出,OUT开关量输出(当报警模块使用),GND为地线。(3) 工作时序图 图3.11以上时序图表白,只要提供一种10us以上脉冲触发信号,该模块内部将发出8个40KHZ周期电平并检测回波。一旦检测到回波,信号
20、则输出回响信号。回响信号脉冲宽度与所测量距离成正比。由此通过发射信号到收到回响信号时间间隔可以计算得到距离。4 软件设计4.1软件设计分析 完毕了系统硬件设计之后,接下来就是系统软件设计,此设计所需要完毕重要是针对系统功能实现及数据解决和应用。由以上所述系统硬件设计和各个电路功能,系统软件需要实现如下功能:1、信号控制。在系统硬件中,已经完毕了发射电路、回拨检测接受电路设计。在系统软件设计中只需完毕发射脉冲信号及输出显示。2、数据存储。测距系统中需要得到发射信号与接受回波时间差,需要读出计时器计数值,然后存储在RAM中,并且每次发射周期开始,需要对计数器清零,以备后续解决。3、信号解决。RAM
21、中存储计数值并不能作为距离值直接显示出来,有这个时间后,可以通过程序来计算出来。4、距离显示。通过软件解决得到距离值需要十进制数码管方式。4.2软件设计思路 超声波软件测距软件设计重要由主程序,发射子程序,外部中断接受子程序及显示子程序12。程序可以由汇编和C来编写,汇编语言虽然有很高效率和精准度,但使用起来比较难以掌握,本文重要采用C语言程序来完毕各个功能。4.2.1主程序主程序流程图如图14所示。主程序一方面对系统环境初始化,设立T0工作模式为16位定期器模式,及计数初值,然后使超声波发射出一串40kHZ方波。由于采用12MHZ晶振,机器周期为1us,当主程序检测到接受成功标志位后,将计数
22、器T0数(即超声波来回所用时间)按公式计算可测得被测物体与测距仪之间距离,测出距离后成果在液晶屏显示,然后再循环进行下一次距离测量。当所测距离超过设立最大距离后报警器会报警。开始系统初始化调用测距子程序计算测量成果调用显示子程序结束 图4.14.2.2 超声波测距子程序超声波发射子程序在P3.7口产生40kHZ方波脉冲宽度约12us,作为超声波发射器输出信号。一旦接受到超声波返回信号后(INT0引脚浮现低电平),就及时进入中断程序。进入中断程序后就及时关闭定期器,T0停止计时,并将接受到标志位为1,,然后在主函数里调用计算距离公式,在显示出来。流程图如图15:开始发射超声波 启动时钟开始计时N
23、外部0与否有中断 Y时钟停止计时计算检测成果返回 图4.24.2.3 超声波延时子程序 在传感器以脉冲发射方式工作下,电压很高发射电脉冲在勉励传感器同步也进入接受某些,此时,在短时间内放大器放大倍数会减少,甚至没有放大作用,这种现象成为阻塞。不同检测仪阻塞成都不同样。依照阻塞区内缺陷回波高度对缺陷进行定量会使成果偏低,甚至不能发现障碍物,这是需要注意。由于发射脉冲自身有一定宽度,加上放大器有阻塞问题,在接近发射脉冲一段时间范畴内,所规定发现缺陷往往不能被发现,这段时间成为盲区。延时子程序作用就是在超声波发射同步延迟某些时间,在打开中断,为了就是防止在超声波发射时接受器就收到发射波,这样就会产生
24、错误,产生比较严重误差,因此要延迟一定期间。5系统调试5.1硬件调试超声波测距仪硬件安装时应保持两换能器中心轴线平行两者之间距离在3-5cm之内,别的元件没有特殊规定。若能将超声波电路用金属壳屏蔽起来,可以提高抗干扰能力。依照测量范畴规定不同,可恰当调节与接受换能器并接滤波电容大小,以获得适当接受敏捷度和抗干扰能力。 硬件调试中,一方面是线路检查。焊接完实验后检查与否有错焊、漏焊、虚焊,电解电容与否接反,走线与否对的。检查无误后,再次就是上电检查,在正式上电前,用万用表测量一下电源与地与否短路,短路话,要耐心检查、排除故障。然后进行显示电路,用同样办法对显示某些进行调试后,给单片机与1602液
25、晶之间进行调试。最后是对发射和接受电路,用函数发生器吧40kHZ方波直接加到发射电路输入端后,用示波器检测超声波发射换能器,检差是不是有方波信号,再用函数发生器对超声波接受换能器直接加40kHZ方波信号,用示波器对接受电路输出端进行检测。通过这些过程,硬件某些调试就基本完毕了,剩余就只有软件和硬件联调了。5.2硬软件联调硬件测试好后,便可将程序编译下载到单片机试运营。依照实际状况可以修改超声波发生子程序每次发送脉冲宽度和两次测量间隔时间,以适应不同距离测量需要。依照所设计电路参数和程序,测距仪能测范畴为0.042.10m,测距仪最大误差不超过1cm。系统调试完后应对测量误差和重复一致性进行多次
26、实验分析,不断优化系统使其达到实际使用测量规定。图17为在keil_uVision3里编译状况: 图5.15.3测试成果分析5.3.1测试波形图18、19中波形为示波器抓拍发射和接受电路中所得波形图,上方波形为发射电路中所得波形图,下方波形为接受电路中在cx61引脚处测得波形。图5.2图 5.3由上图可见,接受回路中测得超声波信号共有两个波束,第一种波束为余波信号,即超声波接受头在发射头发射信号(一组40KHz脉冲)后,立即就接受到了超声波信号,并持续一段时间。另一种波束为有效信号,即通过被测物表面反射回波信号。超声波测距时,需要测是开始发射到接受到信号时间差,由上图中就可看出,需要检测有效信
27、号为反射物反射回波信号,故要尽量避免检测到余波信号,这也是超声波检测中存在最小测量盲区重要因素。 5.3.2测试中仪器仪表所用仪器仪表如 表5.1表序号名称型号品牌数量备注1直尺/1精度:0.1cm2万用表/13数字示波器GDS-206215.3.3 数据分析基于上面设计硬件电路和软件,焊接好电路后,通过调试,对系统进行测试,测试距离数据如表2。测量单位:cm。 表 5.2 单位:cm实际距离5102021253035405060测量距离592020253134384960误 差0101011210实际距离708994105115120140180195200测量距离7190911091181
28、18140183194200误 差11343203105.4超声波测距误差分析超声波测距在实际应用也有局限性,其中对超声波测距精度规定挺高。一是超声波在空气中衰减极大,由于测量距离不同,导致回波信号起伏,使回波到达时间测量产生了较大误差;二是超声波脉冲回波在接受过程中展宽,影响了测距辨别率,特别是对近距离导致较大影响,尚有某些因素,诸如环境温度、风速等也会对测量导致一定地影响,这些因素都限制了超声波测距在某些对测距精度规定较高场合应用,如何解决这些问题,提高超声波测距精度,具备较大现实意义13。本系统最大测距误差在3cm左右,测距盲区为5cm。5.4.1温度误差由于超声波也是一种声波,其声速c
29、与温度关于,不同温度下超声波在空气中传播速度随温度变化关系: 式中:T为绝对温度(),为331.4m/s。表3列出了不同温度下超声波声速。在使用时,若果温度变化不大,则可以以为声速是基本不变,如果测距精度规定很高,则应通过温度补偿办法加以校正14。 表 5.3 5.4.2串扰问题设计中发射极和接受极距离较近,这样当发射极发射超声波后,有某些超声波通过障碍物反射就直接绕射到接受极上,这某些信号时无用,会引起系统误差,并且这种误差是不可避免。设计中采用延时来解决这个问题,通过多次程序校正本设计盲区为5cm13。6 结论6.1总结与体会在设计之前,参照了许多有关资料。在设计中又参照了网上有关超声波测
30、距仪资料,有了基本思路。但着手设计时,又浮现了许多未预料到问题,例如元件选取:在选取方案时最初选取了用分立元件搭建,但是在调试过程中遇到了问题,发射端和接受端都正常工作,但是在解决接受端信号时由于CX1206芯片太为敏感,始终不能给出中断低电平,后改方案为所有用分立元件搭建,其中涉及到前级放大,带通滤波,后级放大比较,调试也没能完毕,因而暂时放弃了此方案。选取了用超声波模块传感器,在调试过程中就显得容易了许多。在显示问题上,由于要显示字母和数字,因而选取了用1602液晶显示屏。为使单片机正常工作,电源选取了用7805稳压芯片,使用9V干电池供电,达到了便携效果。在某些设计原理上也遇到了许多问题
31、。如在中断程序和时钟编写上。尚有就是在PCB制图和焊接上浮现某些错误,经同窗以及教师指证,发现导通因素,并及时改正。总之,这次实验过程中我受益匪浅,培养了我设计思维,增长了动手操作能力。更让我体会到实现电路功能喜悦。 6.2 对设计进一步完善提出意见或建议本次设计还是有许多局限性之处,例如说本次设计测距仪测距范畴还不是特别大,只有0-5.4m,测量精度还不是很高,在两米以内为2厘米误差,而之后误差会随着测量距离增长而增长,例如在五米时误差达到10厘米。在设计上咱们还可以做成更小更便携,例如在器件选取可以改用贴片,解决器可以用430类似低功耗单片机,达到节能目,还可以加上无线通信功能,只需给设备
32、发条短信,就可以懂得测量数据。只是由于时间以及个人能力问题咱们暂时还难以设计出这样电路,者就有待于此后咱们在学习中认真领悟、参透。7道谢在这里,我对咱们带课教师卜云教师表达衷心感谢。卜教师在这次课程设计过程中对咱们全方位指引,是咱们这次课程设计获得成功主线保证。卜教师对这次课程设计抱着认真负责态度,她极力做好安排、指引、答辩等各个环节,只为咱们能通过这两周课程设计学到更多知识,更快地提高咱们能力。在卜教师指引下,我学到了诸多平时没有学到东西,特别是学到了诸多依托咱们专业知识在实际生活中广泛应用东西。此外,我还要感谢学校能安排这次课程设计,为咱们熟悉咱们专业有关提供了平台。固然,这次课程设计能获
33、得成功,还少不了咱们组几种同窗通力合伙,人们在设计中献言献策,不积极发挥着个人聪颖与才智。8参照文献1孟立凡等.传感器原理及技术M,北京,国防工艺出版社,.2杨永瑞,刘振起.电子测量技术基本M,西安:西安电子科技大学出版社,.3栾桂东等.传感器及其应用M,西安,西安电子科技大学出版社,1996.4王子芳.传感器应用技术M,西安,西北工业大学出版社,1996.5张国勋,孙海. 单片机原理及应用(第二版)M,北京:中华人民共和国电力出版社,.6朱爱红,朱宁文.基于AT89C2051超声波测距系统J,信息技术与信息化,,No.5.7翁黎朗.超声波换能器驱动和接受电路研究J,集美大学学报,白然科学版,
34、1998,No.4:60-64.8赵广涛 ,程荫杭.基于超声波传感器测距系统设计J,微计算机信息, ,No.1:129-131.9卜英勇,何永强.一种高精度超声波测距仪测量精度研究J,郑州大学学报(工学版),,No.1.10张谦琳.超声波检测原理和办法M,北京:中华人民共和国科技大学出版社,1993.11翟国富,刘茂恺.一种实时高精度机器人用超声波测距解决办法J,应用声学,1996,No.1.12谭浩强.程序设计(第二版)M,北京:清华大学出版社,1999.13张红莲.基于单片机超声波测距系统设计J. Plc&TA.(09):89-91.14Shirley PA. An introductio
35、n to ultrasonic sensingJ.sensors.1989(11):15-21.15H.Elmer,H.Schweinzer,G.Magerl. High resolution Supersonic distances measurement for long distancesJ.Technisches Messen .,70(04):18-22. 附录一、有关设计程序/* *基于stc89c52超声波测距仪* *编写日期:4月05日* *改写日期:5月30日* */#include#define uint unsigned int#define uchar unsigned
36、 charsbit RS=P20; /寄存器选取位,将RS位定义为P1.0引脚sbit RW=P21; /读写选取位,将RW位定义为P1.1引脚sbit E=P22; /使能信号位,将E位定义为P1.2引脚sbit send=P34; /发波位sbit LED1=P35;sbit LED2=P23;sbit beep=P36;uchar flag=0,counter=0,mov=0;uchar code num=;uchar code table1=distance:;uchar code table2=SET:;uchar code table3=cm;uchar code table4=T
37、est Fail !;uchar code table5=Welcom to you!;/*函数功能:延时若干微秒*/void delay(uint z) uint x,y;for(x=z;x0;x-) for(y=600;y0;y-); void delaynus(uint z) uint x,y;for(y=5;y0;y-)for(x=z;x0;x-);void delay_key()uint x,y;for(x=100;x0;x-)for(y=180;y0;y-);/*函数功能:写指令*/void write_com(uchar com)RS=0;RW=0;E=0;P0=com;dela
38、y(1);E=1;delay(1);E=0;/*函数功能:写数据*/void write_data(uchar da)RS=1;RW=0;E=0;P0=da;delay(1);E=1;delay(1);E=0;/从1跳变到0,液晶开始执行命令/*函数功能: 4*4 键盘扫描程序。进行键盘扫描,P1口*/uchar keyscan(void) uchar temp,i,key_val;while(1) P1=0x0f;if(P1!=0x0f)delay_key();if(P1!=0x0f)P1=0xef; /要检测列输入状态,低四位置1for(i=0;i4;i+) temp=P1&0x0f;switch(temp)case 0x0e:key_val=0;break;case 0x0d:key_val=1;break; case 0x0b:key_val=2;break;case 0x07:key_val=3;break; if(temp!=0x0f) return (i*4+key_val); P1=P11|0x01;/*函数功能:初始化LCD*/void initLCD()write_com(0x38);write_com(0x0c);write_com(0x06);write_com(0x01);/清屏write_com(0x80); /归位/*函数功能: