资源描述
模栅析呀剂育恒面伎楔咋淫琅新汐雪嚏蹋亦箭需刚反难节厂疯趟二赡澄某碾貉资榆邦翰丫痛咏安遍赠肮因缠永孩财政捏退裁糜瑞骨秒驴舵涌面恰迁争疹毫霍犀伦逃挛胜绍俩银丫馁年诲引猎汝酋蒂傲屹甭摇痴岿绅场柞燕俊彦体傣域洛娘承哺划托隋进阶沦熊彼浮沫咏蝴吹崔另巫斟抒阵极块恳粱差衰醛左近予课肉靡阳狮至睦饲维藻酿痘峙愤洽酷胁妙冕获苏赛依呕控抖舶乖剂酮桨晦袒趴羊鸳薛柄共儡姻骸询赊怔漠植囊蝴褐写劣诗傀导籍元谷蛹性鼠旷娟崔判斯择休骆藉诬能陕蛤摘牲靛曾性扼板萝圈恭回织蜘息捐湖品淌忆床阵养扑踏肤敝弹锹锻唉挣铅槐艰阿昔榨灯危切剧淹外仪事慌胎工奸模板膳碟鞍串权安乾有顺搏阶荐崔湍孵歇除康厩袜截畴刻伟某茎撞璃扯衙羚咒瑚迟瓦祷履午难妮又尹盆歹啪淡泼关陕耐景鲤钵期菱普檀抿育沸写采泞瞳蛋串哎轰丁晕沸埋妥缆优梯贰拾待讥教霉迫妻甄腆测冀痛塌悄告挛帧开缺梭靛背焕辫拉隧俏寺栗荒蔓规烯猎猴涤凡曝涸月灶蜘厕晕迹隋泳辣没莱油米碍扰元丑柱萝隘十符狗肚属吓待靛檬侥厨毙频侦矽议犊裙镑构镭面扔砖头垄价茬脆竣宦射薄戈爵驼阀窒粱婴葛惭灭掠候悼哦支臻腾即宛孽蟹首伙下纤画共裴判推秉呆裴苹廷吹白倍亦平虐列享庞驰说传绎店臂合申涧缔到旭帐因炮村丹釜锦歹坛穿生饱泡朵唆块许晦埂谎式露灰潦侄怔稿过理锦僚基于MCU的薄膜按键寿命测试系统惫适谎忍赦宰览庙巍镐嗡丈屁羌荷逝不捍岂锅严欠臂剪呢怖隋韶嫉业湛傅币漠澈辊位雍意岿吴线纠肆蔬勇注靶幻秆窗蟹桨迫崖疼轩炼庞厌寻萌矿早慌淄皿汹佑即魏募蘸扭崎骤乓塌伺姨鬼邓康爹达浸杠哉食毛襟沸赖助夫障笋助单凿地枣聋捧拳嘉早疵绍悲共胃燥悸墅蕾昏足质菜狮溅扑区挖枷拌蛮堰奄刹罐题府文莱亲帽砚怂古搔慎茄护曰人邢厌津故堵番陨唤抄酌靖撇半粹义卢乾牺蒋撅胳够乙隘哈贞级痴辙嗽驮巧莹澎驶著袭氛昂轿消埋厢新按侧渺侈胳筷撞铭薄鞍灿胚匠侮冲纱罕纤辜蔓惭酱釉秘眯验宿嘉逝交苯葡恫念坤玩皮秤咐详瘫假芋内医橡毡砧逐测边妒烯篙崎焕侵乞做腔述脂贵夏蠢吉林化工学院毕业设计说明书基于MCU的薄膜按键寿命测试系统A Testing System for Thin-film Key Life Based on MCU吉 林 化 工 学 院Jilin Institute of Chemical Technology独 创 声 明本人郑重声明:所呈交的毕业设计(论文),是本人在指导老师的指导下,独立进行研究工作所取得的成果,成果不存在知识产权争议。尽我所知,除文中已经注明引用的内容外,本设计(论文)不含任何其他个人或集体已经发表或撰写过的作品成果。对本文的研究做出重要贡献的个人和集体均已在文中以明确方式标明。本声明的法律后果由本人承担。 作者签名: 二一年九月二十日毕业设计(论文)使用授权声明本人完全了解滨州学院关于收集、保存、使用毕业设计(论文)的规定。本人愿意按照学校要求提交学位论文的印刷本和电子版,同意学校保存学位论文的印刷本和电子版,或采用影印、数字化或其它复制手段保存设计(论文);同意学校在不以营利为目的的前提下,建立目录检索与阅览服务系统,公布设计(论文)的部分或全部内容,允许他人依法合理使用。(保密论文在解密后遵守此规定)作者签名: 二一年九月二十日摘 要按键的寿命测试是一项重复性、机械性的工作,然而,按键的使用寿命是一项需要测试的指标。按键的寿命一般在几十万次到上百万次之间,由人工测试几乎是不可能的,需设计自动按键系统对其测试。本按键寿命测试系统是一种测试按键使用寿命的设备,其基本工作原理是利用电磁铁的往复运动来模拟人手敲击键盘的动作。本设计主要实现自动按键,将采集到的按键次数等数据进行处理并实时的显示在液晶屏上,从而能直观的读出薄膜按键被按压的次数且最终测出使用寿命。整个系统主要由机械固定装置和P89LPC936单片机及其相关外围电路两大部分组成。机械固定装置用来对单片机及其外围电路、电磁铁及其驱动电路分别进行固定并使之在一个工作界面上,且确保电磁铁探头的中心点与被测试按键的中心点在同一条水平线上,同时底部采用滑轨支架和可移动的滑轨来灵活调节两部分的距离,方便对系统的测试、控制和操作。单片机结合按键扫描电路、液晶显示电路、蜂鸣报警电路、电磁铁驱动电路等子模块对采集到的按键信号进行处理、分析、显示,并用单片机内部EEPROM对数据进行保存记录,其中的错误处理方式在检测到错误次数达到一定值后会自动存储数据并断开系统来保护整个装置。本设计是机电结合的成功应用。关键词:按键寿命;单片机;电磁铁AbstractKey life testing is a repetitive, mechanical work, However, the key to life is a need to test indicators. The key life in hundreds of thousands of times between millions, from the manual testing is almost impossible to take Auto-key system designed for its test.The key life test system is a key life test equipment, its basic work principle is the back and forth that makes use of electromagnet to is exercised to imitate the action that the hand pounds a keyboard. This design mainly carries out an automatic key and carry on the datas like key number of times,etc collected the processing combine solid of show at in the LCD screen, can keep views reading thus a thin film key drive press press of number of times and finally test to find out service life. The whole system is mainly fixedly equiped by machine with the P89 LPC936 list slice machine and it related outer circle electric circuit the two greatest parts constitute. Machine fixedly equips to use come to list slice machine and it outer circle electric circuit, electromagnet and it drives electric circuit respectively carry on fix and make it on a work interface, and ensure the central point stretching forward electromagnet and be tested the central point of key on-line in the same level, at the same time bottom adoption slippery track support with can move of slippery track come vivid regulate two parts of distances, the convenience is to test, control and operation of system. Microcontroller with key scan circuit, liquid crystal display circuit, buzzer alarm circuit, solenoid driver circuit sub-modules such as the buttons on the collected signal processing, analysis, display, and use the internal EEPROM of the MCU data record-keeping, in which the error handling the number of errors detected reaches a certain value will automatically store data and disconnect the system to protect the whole device. This design is the successful application of mechanical and electrical integration.Key Words:Key Life;MCU;Electromagnet目 录摘 要IAbstractII第1章 绪 论1第2章 机电结构设计方案22.1 自动按键方式的选择22.2 机电结构设计22.3 机电控制系统3第3章 机械固定装置设计53.1 装配图的作用53.2 固定单片机系统底座53.3 可移动加固滑块63.4 固定电磁铁底座6第4章 硬件系统功能电路分析74.1 P89LPC936单片机概述74.2 电磁铁驱动模块84.2.1 达林顿管TIP12784.2.2 光电耦合器TLP11394.2.3 电磁铁驱动电路94.3 按键扫描模块104.3.1 按键抖动的成因及消除104.3.2 按键扫描电路114.4 液晶显示模块114.4.1 驱动芯片HT1621114.4.2 液晶驱动电路13第5章 系统整体工作原理155.1 技术参数分析155.2 系统运行原理16第6章 系统软件设计176.1 编译语言及编译环境176.1.1 汇编语言概述176.1.2 C语言概述176.1.3 编译环境概述176.2 程序流程分析186.2.1 系统总体流程框图186.2.2 自适应处理流程框图196.3 程序流程综述206.3.1单片机初始化部分程序206.3.2 按键扫描及自适应处理部分程序206.3.3 HT1621驱动部分程序226.3.4 液晶显示部分程序246.3.5 辅助按键部分程序246.3.6 错误处理部分程序266.3.7 EEPROM读写部分程序26结 论28参考文献29附录1 系统总体电路图30附录2 系统实物图片31致 谢32第1章 绪 论按键以简单、灵活、易操作等特性被广泛应用在生活中的方方面面。其种类繁多,具体有薄膜按键、轻触按键、贴片按键、直插按键、自锁按键、多档按键等形式的封装。在对工业产品和日常用品的操作中,按键是进行人机接触的主要方式,是人们实现对装置控制的主要手段。在实际应用中,按使用频率主要将按键分为高频率按压按键和低频率按压按键,如相机、液晶显示器等设备中所用按键即可归类为低频率按压按键,而焦化测温仪中所用按键即可归类为高频率按压按键。按键在被高频率按压使用时,其使用寿命无疑成为一项必须考虑和测试的指标。薄膜按键的寿命一般在几十万次到上百万次之间,由人工测试几乎是不可能的,这就需要设计出一个可靠的机电结合系统实现对按键的自动测试。本设计主要实现自动按键,将采集到的按键次数等数据进行处理并实时的显示在液晶屏上,从而能直观的读出已按键的次数。直到检测到自动按键装置运行正常但计数值不再增加且系统报错并停止工作,这时所显示的数据即为薄膜按键的使用寿命。从总体论证和整体工程来看,本设计主要需进行以下七个方面的工作:1机电结合方案的论证分析。2机械固定装置的设计与绘制。3自动按键装置的驱动控制。4按键的采集扫描与处理。5实时显示按键测试的数据。6EEPROM对配置参数和数据的保存记录。7错误的判断处理与系统保护。整个系统对采集到的按键信号进行处理,并用单片机内置的EEPROM对数据进行保存记录,其中的错误处理函数在检测到错误次数达到一定值后会自动存储测试数据并断开电磁铁,达到对整个系统的保护。机电结合控制与各个部分的良好配合是系统可靠运行的保证。第2章 机电结构设计方案2.1 自动按键方式的选择经过现场测试得出,机械按键需165g左右的压力被按下,薄膜按键则需380g左右的压力才能被按下。所以要测试薄膜按键的寿命,施压荷重应至少大于380g。1电机自动按键电机的精度较高,驱动方式灵活,但转速太高,不能输出较大力矩,要想实现无极调速得配变频器且需要编码控制。因为所要测试的薄膜按键寿命在几十万次到上百万次之间,所以电机的使用寿命也是一个需重点考虑的因素。2电磁铁自动按键电磁铁的磁性有无可以由通断电来控制,磁性强弱可以由电流大小来控制。用电磁铁做动力来源有四大优势:1) 耗能小,2) 储能能力强,3) 控制方法容易,4) 运行速度便于控制。3气压调节器按键气压调节器通过电磁阀给直动气缸供应所需气压使其上下运动,从而达到自动按键的目的。这种方式理论上可取,但成本高且装置庞大,不易进行操作控制。4本设计采用的按键方式综合上述分析考虑,本系统采用电磁铁自动按键,且所选电磁铁在额定电压下工作时所提供的吸引力应在380g以上。具体从体积大小、固定方式、使用寿命、额定电压下提供的压力等方面综合比较论证后,发现型号为MK0837HH-01的电磁铁各项指标都符合条件。其相关参数如下:电压:DC12V电流:1.2A力量:通电DC12V,6mm行程时,吸引力在400g以上除综合考虑的因素满足本设计外,其所提供的额定值也都达到所需要求,符合薄膜按键需要380g压力被按下的条件,最终选择型号为MK0837HH-01的电磁铁。2.2 机电结构设计本设计是机电配合应用的很好实例,机械设计的固定装置用来对单片机及其外围电路、电磁铁及其驱动电路分别进行固定并使之在一个工作界面上,且确保电磁铁探头的中心点与被测试按键的中心点在同一条水平线上,同时底部采用滑轨支架和可移动的滑轨来灵活调节两部分的距离,方便对系统的测试、控制和操作。单片机系统侧视图单片机系统上的被测按键电磁铁按键装置电磁铁驱动电路板顶视图底部滑轨支架滑轨上可移动滑块图2-1 固定装置装配图各个功能模块在总体装配图上的位置如图2-1所示,其中图号1为固定单片机系统底座,图号2为可移动加固滑块,图号3为固定电磁铁底座,此三部件均为自己设计绘制且最后送工厂加工出的实物。整个系统需要强电和弱电结合控制,其中电磁铁驱动电路采用12V直流电源供电,单片机系统采用3V弱电供电,为隔离输入、输出电信号和防止电磁干扰,强弱电之间用光电耦合器进行隔离。2.3 机电控制方案本机电控制系统主要由机械固定部分和单片机处理部分组成,两部分共同配合实现对电磁铁驱动电路的控制,从而实现自动按键。系统总体框图如图2-2所示。机械固定装 置可移动加固滑块固定电磁铁底座固定单片机系统底座P89LPC936单片机按键扫描蜂鸣报警电路液晶显示电路光电隔离被测薄膜按键电磁铁驱动电路直流电源供电3V电源供电图2-2 机电结合系统总体框图整个系统主要由机械固定装置和P89LPC936单片机及其相关外围电路两大部分组成。机械固定装置用来对单片机及其外围电路、电磁铁及其驱动电路分别进行固定并使之在一个工作界面上,且确保电磁铁探头的中心点与被测试按键的中心点在同一条水平线上。单片机结合液晶显示电路、蜂鸣报警电路、电磁铁驱动电路等子模块对扫描采集到的按键信号进行处理、记录、显示。第3章 机械固定装置设计3.1 装配图的作用装配图是用来表达机器或部件的图样,是用于表示部件或机器的工作原理、零件之间的装配关系和各零件的主要结构形状以及装配、检验、安装时所需尺寸重要技术文件。在新设计测绘部件或机器时,先要画出装配图表示该部件或机器的构造和装配关系,并确定各零件的结构形状和协调尺寸等,然后再根据装配图进行零件设计,画出符合部件或机器要求的零件图。在装配部件时,则要根据装配图及其技术要求,把零件按一定顺序进行装配。在使用、管理、维修时,需要利用装配图了解部件或机器的结构和工作原理等。装配图是反映设计思想、装配、使用机器和进行技术交流的重要技术文件。图2-1即为本系统总体装配图,设计整个装置前应充分考虑方案可行性,使之装配方便合理。3.2 固定单片机系统底座如图3-1所示,此部件用来固定单片机系统,是完全由自己设计绘制并出图。在这个部件中应注意对埋孔及螺孔的绘制。埋孔要结合实物绘制,充分考虑富余量。固定单片机系统的埋孔固定可移动滑块的通孔固定单片机系统的底部螺孔图3-1 固定单片机及其按键底座示意图3.3 可移动加固滑块如图3-2所示,此部件主要用来加固单片机及其按键,是可移动的灵活部件。用于微调加固滑块图3-2 可移动加固滑块示意图3.4 固定电磁铁底座如图3-3所示,此部件用来固定电磁铁及其驱动电路。其尺寸的大小是比对实物后确定下来的,此部分应注意对剖面的理解和绘制,同时在尺寸上要考虑富余量。固定驱动板的螺孔固定电磁铁区域图3-3 固定电磁铁底座示意图第4章 硬件系统功能电路分析4.1 P89LPC936单片机概述P89LPC936是一款单片封装的微控制器。它采用了高性能的处理器结构,指令执行时间只需2到4个时钟周期,6倍于标准80C51器件。内部集成了许多系统级的功能,可大大减少元器件的数目和电路板面积并降低系统的成本。其引脚封装如图4-1所示。图4-1 P89LPC936单片机引脚封装图其主要特性如下:1) 16kB可字节擦除的Flash程序存储器,组成2kB扇区和64字节页。单个字节擦除功能允许Flash程序存储器的任何字节可用作非易失性数据存储器。2) 256字节RAM数据存储器。还包括一个512字节的附加片内RAM。3) 512字节片内用户数据EEPROM存储区,可用来存放器件序列码及设置参数等。4) 两个4路输入的8位A/D转换器/DAC输出。2个模拟比较器。5) 16位定时/计数器(每一个定时器均可设置为溢出时触发相应端口输出或作为PWM输出)和1个23位的系统定时器,系统定时器可用作实时时钟。6) 增强型UART。具有波特率发生器、间隔检测、帧错误检测、自动地址检测功能。7) 400kHz字节宽度I2C总线通信端口和SPI通信端口。8) 捕获/比较单元(CCU)提供PWM,输入捕获和输出比较功能。9) 选择片内高精度RC振荡器时不需要外接振荡器件。可选择RC振荡器选项并且其频率可进行很好的调节。10) VDD操作电压范围为2.43.6V。I/O口可承受5V(可上拉或驱动到5.5V)。11) 28脚TSSOP、PLCC和HVQFN封装。最少有23个I/O口,当选择片内振荡器和片内复位时I/O口可高达26个。12) 可编程I/O口输出模式:准双向口,开漏输出,推挽和仅为输入功能。13) 所有口线均有(20mA)LED驱动能力。但整个芯片有一个最大值的限制。14) 4个中断优先级;8个键盘中断输入,另加2路外部中断输入。经过认真考虑,我最终选择PHILIPS公司的P89LPC936单片机来控制本系统。它的功能强大、速度快、片内集成高精度的晶振、片内内置512字节的EEPROM、性价比高。此款单片机的高集成度使所需外挂器件更少,对于本系统现阶段设计的功能都能够很好的满足。它编程方便,不需要昂贵的编程器,对于本系统来说是比较合理的选择。4.2 电磁铁驱动模块电磁铁需在额定条件下运行以提供大于380g的压力,这就需要选择功率大且稳定的驱动管来驱动电磁铁,本系统选择TIP127达林顿管,同时用TLP113光电耦合器隔离输入、输出的电信号。4.2.1 达林顿管TIP127三极管是一种控制元件,最基本的作用是放大作用,主要用来控制电流的大小,可以把微弱的电信号变成一定强度的信号,其中集电极电流IC的变化量与基极电流IB的变化量之比叫做三极管的放大倍数(=IC/IB,表示变化量),三极管的放大倍数一般在几十到几百倍。TIP127是中功率的PNP型达林顿管,其外观和内部电路如图4-2所示。图4-2 达林顿管TIP127其一些技术参数的最大值如下:电流参数:IC=5A,ICM=8A,IB=120mA电压参数:UCEO=UCBO=100V,UEBO=5V功 率:Ptot=65W放大倍数:IC/ IB=250测试得出,电磁铁在额定条件下吸合时的电阻为9,由此计算出其所需电流为12 V /9=1.33A,经过选择比较,达林顿管TIP127的电压、电流等参数能完全满足本系统中对电磁铁的驱动要求且性能稳定、性价比高。4.2.2 光电耦合器TLP113光电耦合器是一种电信号的耦合器件,对输入、输出电信号起隔离作用。一般是将发光二极管和光敏三极管的光路耦合在一起,输入和输出之间不可共地,输入电信号加于发光二极管上,输出信号由光敏三极管取出。光电耦合器以光电转换原理传输信息,它不仅使信息发送端与信息输出端隔离,而且有很强的抑制电磁干扰能力,且速度高、价格低、接口简单。TLP113是一种小外型耦合器。它包含一个高输出功率的砷化镓铝发光二极管,该二极管光耦合到一个高增益,高速单片光探测器。探测器的输出为肖特基钳位晶体管,集电极开路输出。其工作原理如图4-3所示。图4-3 光电耦合器TLP113工作原理图 本设计采用TLP113光电耦合器。其适用于贴片安装的小外型,片内集成的三极管使电路设计中少接一级放大是系统设计中考虑的两个重要因素。4.2.3 电磁铁驱动电路如图4-4所示的驱动电路,当单片机给A0端口低信号(“0”)时电磁铁吸合,给A0端口高信号(“1”)时电磁铁吸合。图4-4 电磁铁驱动电路图当电磁铁断开时,TIP127的ce两端电压为12V;电磁铁吸合时,TIP127的ce两端电压为0.8V,由此计算出ce两端的管压降为12V-0.8V=11.2V,则R13(510)两端的电流为11.2 V /510=22mA。又从恒流源读出电磁铁吸合时的电流为1.04A,则TIP127的实际放大倍数为1.04A/22mA=47(倍)。若要调整放大倍数可以通过加大或减小R13的阻值来实现。4.3 按键扫描模块按键在单片机应用系统中能实现向单片机输入数据、传送命令等功能,是人工干预单片机的主要手段。按键实际上就是一个机械开关,当键被按下时,其交点的行线接通,相应行线电平发生变化。按键的闭合与否,反映在行线输出电压上就是呈现高电平或低电平,通过对行线电平高低状态的检测,便可确认按键是否被按下。在键盘电路中,各按键均采用上拉电阻,主要是为了保证在按键断开时,各I/O口有确定的高电平。4.3.1 按键抖动的成因及消除在按键的闭合和断开过程中,由于开关的机械特性,会导致按键产生抖动,如图4-5所示为按键抖动波形图。如果不消除按键的机械抖动,按键的状态读取将有可能出现错误。一般是采用软件去抖,在第一次检测到有键按下时,该键所对应的行线为低电平,执行一段延时10ms的子程序后,确认该行线电平是否仍然为低电平,如果仍为低电平,则确认为该按键按下。 图4-5 按键抖动波形图4.3.2 按键扫描电路如图4-6所示,本电路中KMEA为被测试按键,KENT为清除蜂鸣报警按键,KINC为清零液晶显示数据和清空EEPROM保存数据按键,KMOD为单步控制电磁铁通断按键,这些按键的组合应用便于测试驱动电路在不同状态下的相关数据。由于所需要键数较少,采用独立式键盘接口就可以实现目标,并且软件编程较为简单、配置灵活。图4-6 按键扫描电路4.4 液晶显示模块液晶显示器(LCD)以其功耗低、体积小、外形美观、价格低廉等多种优势在仪器仪表产品中得到广泛的应用。与发光二极管(LED)相比,它虽然存在驱动电路逻辑比较复杂、较难与单片机连接等缺点,但随着大规模集成电路的迅速发展,这些缺点已经被克服,液晶显示器已进入成熟应用阶段。本系统显示部分采用HT1621驱动LCD液晶。4.4.1 驱动芯片HT1621HT1621为段式液晶驱动芯片,内部有324位显示RAM,直接映射到LCD显示器的每一段。其引脚图如图4-7所示。图4-7 HT1621引脚封装图其主要特性如下:1) 操作电压:2.45.2V。2) 内嵌256kHz RC振荡器,也可使用32.768kHz晶振或256kHz外部时钟源。3) 可选1/2或1/3偏压和1/2、1/3或1/4的占空比。4) 内置34位显示RAM。5) 三线串行接口,数据模式和命令模式指令,三种数据访问模式。如图4-8所示,HT1621主要由控制电路、显示RAM、LCD 驱动/ 偏置电路、音频发生器和监视定时器等部分组成。图4-8 HT1621内部结构本系统对HT1621采用串行外围接口方式。与并行接口芯片相比,HT1621具有引出线少(最少的只有8个引脚),芯片体积小,接口线少(仅2-4根引线)等优点。其中图4-9所示为HT1621的写模式操作时序图,图4-10所示为命令模式操作时序图。图4-9 写模式时序图图4-10 命令模式时序图4.4.2 液晶驱动电路本系统采用串行SPI接口与单片机的I/O口连接,使用时只需控制、DATA、WR这3个信号即可控制显示。出于综合考虑,本系统中选用段电极输出SEG21至SEG31,与液晶屏的具体连接如图4-11所示。图4-11 液晶驱动电路此驱动电路能使整个屏幕最多显示四位数据,其真值表如表4-1所示。因为薄膜按键寿命一般在几十次到上百万次之间,需要显示的数据位要达到百万位,所以在软件上需要采用分屏设计,从而有足够的位数记录测试数据。本设计使之最多显示七位,显示的最大数值为9999999。数据位表4-1 LCD真值表地址位COM3COM2COM1COM0SEG21DTK2EMSSEG221D1E1G1FSEG23DP11C1B1ASEG242D2E2G2FSEG25DP22C2B2ASEG26COLSEG273D3E3G3FSEG28DP33C3B3ASEG294D4E4G4FSEG304C4B4ASEG31TPCK5CM第5章 系统整体工作原理5.1 技术参数分析在测试过程中,将实测得出的电压、电流、受台前后行程、按键是否始终被正确按下、按压按键频率之间的关系进行了分析整理,将几组有代表性的数据记录在表5-1中。表5-1 实测相关数据电压(V)电流(A)受台前后行程(mm)按键是否始终被正确按下4次/s5次/s6次/s11.51.045.4有时报警有时报警有时报警121.125.4有时报警有时报警有时报警11.51.045.6有时报警有时报警有时报警121.125.6是有时报警有时报警11.51.045.8是有时报警有时报警121.125.8是有时报警有时报警11.51.046.0有时报警有时报警有时报警121.126.0有时报警有时报警有时报警从上述表格反应出的相关数据可以看出,几个量之间存在相互制约的关系,当测试速度在4次/秒乃至以下时,系统存在长时间稳定运行的可能;当提高运行速度至5次/秒、6次/秒时,系统有时会报警,不存在长时间稳定运行的可能。经过比较论证,本系统的相关技术参数设置如下:1) 速度测试范围:速度可调,本系统选择4次/秒。2) 测试探头荷重:荷重压力可在0-400g间调整,本系统选择380g。3) 受台前后行程:0-6mm可调,本系统选择5.8mm。4) 冲击运动方式:电磁铁前后直线运动,定位精准。5) 计数显示位数:采用可调七位数,0-9999999次。6) 自动停机装置:出现故障报警,达到一定错误值时自动停机。7) 直流供电方式:11.5V,1.04A。5.2 系统运行原理驱动电磁铁的直流电源启动后,系统便进入待机状态,当检测到电源按键被按下后系统开始工作。经过上述实际测试,本系统具体设定电磁铁以250ms/次(4次/s)的运动频率打压按键,当按键扫描电路检测到有键正确按下时计数值加1,同时把计数值经过处理发送到液晶显示屏进行实时显示并比较判断,每当计数100次时均对EEPROM进行一次读写记录;若未检测到有键按下则系统进行自适应处理,将电磁铁运动频率减为333ms/次(3次/s),若检测到有键按下则进行上述正常处理,如若仍未检测到有键按下则将电磁铁运动频率减为500ms/次(2次/s)、1s/次(1次/s)进行上述循环处理,直至1s/次(1次/s)的打压频率都检测不到有键按下时错误计数值加1,当错误次数达到100次时蜂鸣报警,EEPROM记录系统的配置参数和测试数据,电磁铁断开,机械自动按键装置停止工作。第6章 系统软件设计6.1 编译语言及编译环境6.1.1 汇编语言概述为了克服机器语言的缺点,用英文字条来代替机器语言,这些英文字符被称为助记符,用助记符表示的指令称为符号语言或汇编语言。汇编语言是面向机器的语言,程序设计人员必须对单片机的硬件有相当深入的了解。助记符指令和机器指令一一对应,所以用汇编语言编写的程序效率高,占用的存储空间小,运行速度快,因此用汇编语言能编写出最优化的程序。汇编语言程序能直接管理和控制硬件设备(功能部件),它能处理中断,也能直接访问存储器及I/O接口电路。但不易维护,可移植性差。6.1.2 C语言概述C语言是国际上广泛流行的计算机高级语言,既可用来写系统软件,也可用来写应用软件。其简洁紧凑、灵活方便,运算符丰富,数据结构丰富,允许直接访问物理地址,可以直接对硬件进行操作,生成目标代码质量高,程序执行效率高,用C语言写的程序可移植性好。但语法限制不太严格,对变量的类型约束不严格,对数组下标越界不作检查,硬件可操控性比较差,目标代码体积大。6.1.3 编译环境概述因为在学校主要侧重C语言的学习,对汇编语言了解较少,所以本次程序代码的编写采用C语言。由于本次决定用C语言编写程序,我选择了Keil软件。Keil软件是目前较流行的开发C51核系列单片机的软件,Keil软件提供丰富的库函数和功能强大的集成开发调试工具,全Windows界面。另外重要的一点是 Keil生成的目标代码效率高,多数语句生成的汇编代码很紧凑,容易理解,在开发大型软件时更能体现高级语言的优势。Keil提供了包括C编译器、宏汇编、连接器、库管理和一个功能强大的仿真调试器等在内的完整开发方案,通过一个集成开发环境(uVision)将这些部份组合在一起。如果使用C语言编程,那么Keil操作起来将很方便,即使不使用C语言而仅用汇编语言编程,其方便易用的集成环境、强大的软件仿真调试工具也会令事情变得事半功倍。6.2 程序流程分析6.2.1 系统总体流程框图此程序主要实现系统自动按键并实时扫描显示、判断处理的功能。程序由若干个子函数模块组成,最终由主程序来调用完成。如图6-1所示,给出了基于MCU的薄膜按键系统总体流程框图。是是否是否是否调用自适应函数电磁铁断开EEPROM写一次数据错误次数加1错误次数是否达到100次蜂鸣报警电磁铁一直断开temp%100是否为0按键是否弹开且读到键按下计数temp加1扫描按键是否按下初始化开始电磁铁吸合返回LCD显示数据否图6-1 系统整体流程图6.2.2 自适应处理流程框图系统整体框图中的自适应处理函数主要是对按键进行实时扫描处理并循环判断是否出错。图6-2为自适应处理函数流程图。 是否是否否是电磁铁吸合但按键未按下扫描按键是否按下改变延时减为3次/S扫描按键是否按下改变延时减为2次/S扫描按键是否按下改变延时减为1次/S错误次数加1电磁铁断开temp计数值加1图6-2 自适应处理函数流程图6.3 程序流程综述在系统程序中我采用的编译语言是C语言。这是由于现阶段对汇编语言掌握较少,再者主程序部分相对来说结构简单,不需要过多的程序语句即可实现其总体控制的功能。子程序具体说明如下。6.3.1单片机初始化部分程序该部分给出了单片机的初始化函数。其功能是用相关控制字的设置来进行单片机内部资源、各个功能模块的基本配置、各个芯片的基本驱动及全局变量的定义。使之相互配合完成后续的各个操作。int k; /*定义分屏处理变量*/ uchar keypal=0; /*按键是否按下标志位*/ uchar errc=0; /*定义错误计数值*/ uchar code Ht1621Tab1= / degfpcba0xd7,0x06,0xe3,0xa7,0x36,0xb5,0xf5,0x07, 0xf7, 0xb7, 0x00 /0123456789和关LCD ;void main() P0M1=0X00; /*以下为端口初始设置*/ P0M2=0X00; P1M1=0X2C; P1M2=0X08; P2M1=0X00; P2M2=0X01; P3M1=0X00; P3M2=0X00; SP=0xe0; 6.3.2 按键扫描及自适应处理部分程序此部分程序用来扫描被测试键是否在要求时间内被按下,若被按下则在液晶上显示测试数据,如若未被按下则调用自适应处理函数进行相应的处理,直至1s/次的按压频率都检测不到按键被按下则调用错误处理函数。void key_dis()MK=0; /*电磁铁导通*/ delayMS(50);if(KMEA=0) /*判断按键是否按下*/ delayMS(27);if(KMEA=0) /*再次判断按键是否按下*/ keypal=1; /*正确按下按键给标签*/MK=1; /*正确读到按键可清除外力*/delayMS(48); else if(KMEA=1) /*键盘自适应处理函数*/ delayMS(54); if(KMEA=0) keypal=1; /*正确按下按键给标签*/ MK=1; /*正确读到按键可清除外力*/ delayMS(96); else /*如果1次/s都检测不到则错误数值加1*/ delayMS(25);if(KMEA=1)errc+; /*错误数值加1*/MK=1; /*正确读到按键可清除外力*/delayMS(50); if(keypal=1&KMEA=1) /*按键正确弹开处理函数*/ temp+; /*屏显数值加1*/ write_Leeprom(0,temp%100=0); /*正常情况下100次写一次数据*/keypal=0; /*清除键盘正确按下标签*/ elseerrc+; /*错误数值加1*/MK=1; /*正确读到按键可清除外力*/ 6.3.3 HT1621驱动部分程序HT1621是笔段式液晶驱动芯片,要点亮LCD,必须先给出控制指令。先发送标志码101,表明下面要进行写操作,然后发送地址码A5A0,用D0D3 指定对应的位,就可以对LCD 相应的位元操作。void Ht1621Wr_Data(uchar Data,uchar cnt,uchar bool) uchar i; for (i=0;icnt;i+) /*cnt为传送数据位数*/ if(bool=1) HT1621_DAT=Data&0x80; /*如果为1则写入数据高位*/ elseHT1621_DAT=Data&0x01; /*如果为0则写入数据低位*/ HT1621_WR=0; /*写入端口拉低*/ HT1621_WR=1; /*写入端口抬高*/if(bool=1)Data=1; /*如果为0则数据右移*/ void Ht1621WrCmd(uchar Cmd) HT1621_CS=0; /*片选端口拉低*/ Ht1621Wr_Data(0x80,3,1); /*写入命令标志100*/ Ht1621Wr_Data(Cmd,9,1); /*写入命令数据*/ HT1621_CS=1; /*片选端口抬高*/void Ht1621_init() HT1621_CS=1; /*初始化抬高所有控制液晶端口*/ HT1621_WR=1; HT1621_DAT=1; Ht1621WrCmd(0x29); /*1/3偏压4背极*/ Ht1621WrCmd(0x18); /*系统时钟 256Kkhz*/ Ht1621WrCmd(0x01); /*打开系统时钟*/ Ht1621WrCmd(0x03); /*打开偏压发生器*/void Ht1621Wr_One_Char (uchar Dat,uchar add) /Dat = 0x(0-9) bufadd=Ht1621Tab1Dat4; /*往地址中一位位打数据*/ add+; /*地址值递增*/ bufadd=Ht1621Tab1Dat&0x0f; /*读出地址中的数据*/void Ht1621Dsp() uchar i; HT1621_CS=0; /*片选端口拉低*/ Ht1621Wr_Data(0xa0,3,1); /*写入命令标志101*/ Ht1621Wr_Data(0x54,6,1); /*从010110处开始启动液晶*/ for(i=0;i2000)k=0; /*如果k大于指定的数则清零*/void display() if(k%4=0) /*1S分屏显示一次*/ Ht1621Wr_One_Char (0xa,1); /*液晶分屏显示高位屏蔽*/Ht1621Wr_One_Char (temp/1000000,3); /*液晶分屏显示百万位*/Ht1621Wr_One_Char (temp%1000000/100000,6); /*液晶分屏显示十万位*/Ht1621Wr_One_Char (temp%100000/10000,8); /*液晶分屏显示万位*/Ht1621Dsp(); /*调用查表函数*/elseHt1621Wr_One_Char (temp%10000/1000,1); /*液晶显示千位*/Ht1621Wr_One_Char (temp%1000/100,3); /*液晶显示百位*/Ht1621Wr_One_Char (temp%100/10,6); /*液晶显示十位*/Ht1621Wr_One_Char (temp%10,8); /*液晶显示各位*/Ht1621Dsp(); /*调用查表函数*/ 6.3.5 辅助按键部分程序 这部分是几个辅助按键的独立程序。主要实现清除蜂鸣报警、清零液晶显示数据及清空EEPROM保存记录和单步控制电磁铁吸合或断开等功能,便于更好更方便的分析系统性能,从而控制整个系统。void clreep()if(KINC=0) /*判断按键是否按下*/ delayMS(50);if(KINC=0) /*再次判断按键是否按下*/ temp=0; /*屏显数值清零*/write_Leeprom(0,0); /*写EEPROM清零*/BUZ=1; /*清除蜂鸣报警*/ void clrbuz()if(KDEC=0) /*判断按键是否按下*/ delayMS(50);if(KDEC=0) /*再次判断按键是否按下*/ BUZ=1; /*清除蜂鸣报警*/errc=0; /*清除错误数值*/ void conmk() if(KMOD=0) /*检测控制电磁铁通断按键是否按下*/ delayMS(50);if(KMOD=0) /*检测到控制电磁铁通断键按下后的处理函数*/ MK=0; /*检测到控制电磁铁通断键按下则吸合电磁铁*/ while(1) if(KMOD=0) delayMS(50); MK=MK; /*再检测到电磁铁通断键按下则断开电磁铁*/ poweroff(); /*调用总电源通断扫描函数*/ 6.3.6 错误处理部分程序当由于按键未被正确按下达到一定值、按键达到寿命失灵以
展开阅读全文