1、- -商用电子秤的设计摘要在日常生活中,经常需要测量物体的质量,测量的准确性从而显得很重要。称重技术的改革影响着人民的生活,随着计量技术和电子技术的开展,以前常用的纯机械构造的杆秤、台秤等存在不准确、速度慢、不能计价易作弊等问题,已逐步被电子产品替代。本次电子秤设计将运用单片机来完成,具有小型化、智能化、准确度高等特点。本设计以51系列单片机AT89S52为控制核心,实现电子秤的根本功能,即准确采集物体的质量,直观显示重量、单价及总价,并可对不同物品的重量、单价进展调整,此外系统还具有超量程报警功能。显示局部采用的是1602液晶显示器,运用独立式键盘实现重量、单价的调整和切换显示功能。软件设计
2、以C语言作为编程语言,采用模块化编程思想,在 Keil uVision开发环境下编写应用程序,结合硬件电路做整体调试,最终实现了所设计功能。整个系统构造简单、使用方便、功能齐全、精度高,具有一定的实用价值。 关键词:电子秤;单片机;1602液晶;独立键盘- - word.zl- -The Design of mercialElectronic ScalesABSTRACTIn our daily life,we usually measure somethingswight.The accuracy of measurement seem to be very important.The re
3、form in weighting technology is affecting our life. With the development of measurement technology and electronics,the traditional mechanical steelyard which we used previously are sifted out step by step.Because the problem which including inaccuracy、slow、valuation or easy to cheating can be resolv
4、ed by electronic products.The design is based on programming of SCM,then it can transform products to be minitype、modularization and intelligentize,the technical function of products bee faster、more accurate and more reliable. The design for the control of 51 puters AT89S52 core, to achieve the basi
5、c control functions of electronic scales.measuring the weight exactly、displaying the weight and unit price exactly、displaying the total price exactly、displaying the unit price after adjusting the unit price、displaying the unit weight after adjusting the unit weight.the displaying way is base on 1602
6、 LCD display.Stand-alone keyboard unit price and the weight adjustment.independent button control the changing which between the status.I select C language to be programme language,and pile the program in the condition of Keil uVision. The design adopt the modularization programming and debug the pr
7、ogram bine to hardware circuit.I analyse the cause of error and resolving thought in designning process,and finish the basic functions of electronic scale. The system at weighing has also super-range alarm. The whole system is simple, easy to use, fully functional, high precision, with some Practica
8、l value.Key words:electronic scale; SCM; 1602LCD; single keyboard- - word.zl- -目录第1章绪论11.1 选题背景与意义11.2 电子秤的研究现状及开展趋势11.3 本设计的主要工作2第2章系统方案设计32.1电子秤的设计要求32.2 系统工作原理32.3 系统方案选择32.4 各功能模块的分析与选型42.4.1 单片机的选择42.4.2 按键的选择52.4.3 输出模块的选择62.4.4 报警模块的选择62.5 编程语言及开发工具选择62.5.1 编程语言的选择62.5.2 开发环境的选择72.6 本章小结7第3章系
9、统软件设计83.1 AT89S52的介绍83.2 主程序设计103.2.1 函数声名以及变量定义103.2.2 主程序设计思想113.3 按键处理程序123.3.1 按键介绍123.3.2 按键设计143.4 显示子程序设计153.4.1 1602液晶简介153.4.2 液晶显示子程序193.5 报警子程序设计213.6 本章小结22第4章程序调试234.1 程序编译234.2 调试过程264.3 调试中出现的问题及解决方法264.4 调试结果274.5 本章小结28第5章结论29致30参考文献31附录A 外文翻译-原文局部32附录B 外文翻译-译文局部35附录C 电子秤源程序38- - wo
10、rd.zl- -第1章 绪论1.1选题背景与意义电子秤是日常生活中常用的电子衡器,广泛应用于超市、大中型商场、物流配送中心。电子秤在构造和原理上取代了以杠杆平衡为原理的传统机械式称量工具。相比传统的机械式称量工具,电子秤具有称量精度高、装机体积小、应用围广、易于操作使用等优点,在外形布局、工作原理、构造和材料上都是全新的计量衡器。电子秤的设计首先是通过称重传感器采集到被测物体的重量并将其转换成电压信号。输出电压信号通常很小,需要通过高精度高增益AD芯片HX711的信号放大与AD转换,转换成数字量被送入到主控电路的单片机中处理,再经过单片机控制显示器,从而显示出被测物体的重量。 而目前市场上电子
11、秤产品的整体水平不高,局部小型企业产品质量差且技术力量薄弱,设备不全,缺乏产品的开发能力,产品质量在低水平徘徊。因此,有针对性地开发出一套有实用价值的电子秤系统,从技术上克制上述诸多缺点,改善电子秤系统在应用中的缺乏之处,具有现实意义。1.2 电子秤的研究现状及开展趋势近几年,国的电子称重系统从最初的机电结合型开展到现在的全电子型和数字智能型。电子称重技术逐渐从静态称重向动态称重开展,从模拟测量向数字测量开展,从单参数测量向多参数测量开展。电子称重系统制造技术及其应用得到了新开展。国电子称重技术根本到达国际上20世纪90年代中期的水平,少数产品的技术已处于国际领先水平。做为重量测量仪器,智能电
12、子秤在各行各业开场显现其测量准确,测量速度快,易于实时测量和监控的巨大优点,并开场逐渐取代传统型的机械杠杆测量称,成为测量领域的主流产品。在国际上,一些兴旺国家在电子称重力一面,从技术水平、品种和规模等方到了较高的水平。特别是在准确度和可靠性等方面有了很大的提高。其中梅特勒一托利多公司生产的BBK4系列高精度电子秤精度到达了 1mg,速度大约为1次/秒。目前,电子秤在称量速度方面需要进一步的研究。在称重传感器方面,国外产品的品种和构造又有创新,技术功能和应用围不断扩大。电子秤产品量大面广、种类繁多,从通用的各种规格的电子秤到大型的电子称重系统,从单纯的称重、计价到生产过程检测系统的一个测量控制
13、单元,其应用领域在不断地扩大。根据近年来电子称重技术和电子衡器的开展情况及电子衡器市场的需求,电子衡器总的开展动向为:小型化、模块化、智能化、集成化;其技术性能趋向于速率高、准确度高、稳定性高、可靠性高;其应用性趋向于综合性、组合性1。小型化:体积小、高度低、重量轻,即小薄轻。为使电子衡器的承载器到达小、薄、轻,开场采用重量轻且刚度大的空心波纹铜板和方形闭合截面的薄壁型材。 模块化:电子衡器的承载器采用模块式一体组合或分体组合,产生新的品种和规格。这种模块化组合不但提高了产品的通用性和可靠性,而且也大大提高了生产效率,降低了本钱。 智能化:与电子计算机组合或开发称重用计算机,利用计算机的智能来
14、增加称重显示控制的功能,使其在原有功能的根底上增加判断、自诊断、自适应、自组织等功能。 集成化:对于某些品种和构造的电子衡器,可以实现承载器与称重传感器一体化或承载器、称重传感器与称重显示控制器一体化。综合性:电子称重技术和电子衡器产品的应用围不断扩大,它已渗透到一些学科和工业自动控制领域。对某些商用电子计价秤而言,只具备称重、计价、显示、打印功能还远远不够,现代商业系统还要求它能提供各种销售信息,把称重与管理自动化严密结合,使称重、计价、进库、销售管理一体化,实现管理自动化。这就要求电子计价秤能与电子计算机联网,把称重系统与计算机系统组成一个完整的综合控制系统。组合性:在工业生产过程或工艺流
15、程中,不少称重系统还应具有可组合性,即:测量围可以任意设定;硬件能够依据不定的程序进展修改和扩展;输入输出数据与指令可使用不同的语言,并能与外部的控制和数据处理设备进展通信。1.3 本设计的主要工作本文的主要任务是以单片机为核心设计功能完善的电子秤,根据生活中电子秤的根本功能及单片机系统的开发流程可知,本设计的主要工作为:(1) 学习和掌握单片机工作原理、编程方法、系统开发流程;(2) 分析电子秤的根本功能,提出总体设计方案;(3) 设计系统硬件电路,并对单片机及各模块方案进展分析和选择,用Protel软件绘制电路原理图;(4) 选择适合系统的开发工具,编写系统的应用程序,在开发环境中编译、连
16、接; (5) 将编译好的应用程序写入单片机,结合硬件进展总体调试,最终实现电子秤的主要功能。第2章 系统方案设计电子秤的应用系统是由硬件和软件所组成。硬件指单片机、扩展的输入输出设备等局部;软件是各种工作程序的总称。硬件和软件只有严密配合、协调一致,才能提高系统的性能价格比。从一开场设计硬件时,就应考虑相应软件的设计方法,而软件设计是根据硬件原理和系统的功能要求进展的。本章主要工作是确定电子秤系统的总体构造,并对软、硬件功能进展划分、协调。2.1 电子秤的设计要求(1) 电子秤称重围:010Kg;重量误差不大于0.1Kg;(2) 液晶显示:所称物体重量、输入物品单价、金额;(3)当物品重量超过
17、电子秤量程,即过载情况,具有超重报警功能。2.2 系统工作原理电子秤的工作原理如下:当物体放在秤盘上时,压力施给传感器,该传感器发生形变,从而使阻抗发生变化,同时使用鼓励电压发生变化,输出一个变化的模拟信号;该信号经放大电路放大输出到模数转换器;转换成便于处理的数字信号输出至单片机;单片机进展处理、运算后将结果送至显示器进展显示。图2-1 系统工作原理2.3 系统方案选择在设计系统时,针对要实现的功能来设计电子秤的方案有以下几种:方案一:在系统工作原理的根底上进展扩展,增加一键盘输入装置,增加外界对单片机部的数据设定,使电子秤实现称重计价的功能。此方案设计的电子秤,可以实现称物计价功能,但是局
18、限于数码管的功能,在显示时只能显示单价、购物总额以及简单的货物代码等。在显示重量时,如果数码管没有足够的位数,那么称量物体重量的精度必受到限制,所以此方案需要较多的数码管接入电路中。这样在处理输入输出接口时需要另行扩展足够多的I/O接口供数码管使用,比拟麻烦。方案二:前端信号处理时,选用放大、A/D转换等措施,尤其在显示方面采用LCD显示器。这种方案不仅加强了人机交换的能力,而且满足设计要求。可以显示所称量的物体信息相关容。运用LCD显示器那么大大节省了I/O口的运用。鉴于本电子秤设计的功能要求,所以在具体设计时采用了第二种设计方案。目前单片机技术比拟成熟,功能也比拟强大,被测信号经放大变换后
19、送入单片机,由单片机对测量信号进展处理并根据相应的数据关系显示出被测物体的重量。单片机控制适合于功能比拟简单的控制系统,而且其具有本钱低,功耗低,体积小算术运算功能强,技术成熟等优点。但其缺点是外围电路比拟复杂,编程复杂。使用这种方案会给系统设计带来一定的难度。图2-2 系统实现方案原理图2.4 各功能模块的分析与选型图2-3 功能模块图A/D转换模块实现将采集放大的模拟信号转换成数字信号;单片机作为整个系统控制模块它可反复擦写程序,作为整个系统核心,处理数字信号;显示模块通过控制器的处理,显示出重量,单价,总价;报警模块当重量超过量程时,就产生鸣笛声报警;而按键扫描模块是实现设置重量单价等。
20、2.4.1 单片机的选择系统设计者只能在市场上能够提供的单片机中选择,特别是作为产品大批量生产的应用系统,所选的单片机型号必须有稳定、充足的货源。应根据系统的功能要求和各种单片机的性能,选择最容易实现系统技术指标的型号,而且能到达较高的性能价格比。单片机性能包括片硬件资源、运行速度、可靠性、指令系统功能、体积和封装形式等方面。影响性能价格比的因素除单片机的性能价格外,还包括硬件和软件设计的容易程度、相应的工作量大小,以及开发工具的性能价格比。AT89S52单片机是AT89S系列中的增强型高档机产品,它片存储器容量是AT89S51的一倍,即片8KB的Flash程序存储器和256B的RAM。另外,
21、它还增加了一个功能极强的、具有独特应用的16位定时计数器2等多种功能2。在工程应用中AT89S52有一显著的优势:不需要烧写器,只借助PC 机的并口输出和极为简单的下载电路,便可将程序通过串行方式写入单片机。并且下载电路可设计在系统中,可以随时修改单片机的软件而不对硬件做任何改动。由此,通过对目前主流型号的比拟,最终选择了AT89S52通用的普通单片机来实现系统设计。AT89S52是一种兼容MCS51微控制器,工作电压4.0V到5.5V,全静态时钟0 Hz 到33 MHz,三级程序加密,32个可编程I/O口,2/3个16位定时/计数器,6/8个中断源,全双工串行通讯口,低功耗支持Idle和Po
22、wer-down模式,Power down模式支持中断唤醒, 看门狗定时器,双数据指针,上电复位标志。AT89S52单片机具有功耗低、性能高、可在线编程等优点,而价格与51系列却差不多,资源却更多,性价比高。因此本设计选择AT89S52作为系统的微控制器,它足以满足本系统的设计。2.4.2 按键的选择键盘分为编码键盘和非编码键盘。键盘上闭合键的识别由专用的硬件编码器实现,并产生键编码号或键值的称为编码键盘,如计算机键盘。而靠软件编程来识别的称为非编码键盘。在单片机组成的各种系统,用的最多的是非编码键盘,非编码键盘又分为独立键盘和行列式矩阵式键盘3。独立键盘需由一个单片机I/O口控制一个按键,矩
23、阵键盘可由少量I/O口控制大量按键如7个I/O口控制34个按键。如前所述,本设计仅需4个按键就可实现所有功能的切换和控制,应选用独立键盘,再加一个键可实现附加功能清零。这样既可以减少单片机硬件资源的占用,也可以防止矩阵键盘繁琐的软件编程。图2-4 独立按键2.4.3 输出模块的选择方案一:全部采用数码管显示,数码能显示被测物体的重量等信息。此方案显示直观,而且编程简单,但假设要同时显示单价,金额等诸多信息那么需要要大量的数码管。由此增加了电路的复杂程度,也加大了编程的难度。方案二:采用可以设置显示重量,单价,金额等的LCD,它具有低功耗、可视面大、画面友好及抗干扰能力强等功能,其显示技术已得到
24、广泛应用。LCD 显示器的工作原理:液晶显示器的主要材料是液态晶体。它在特定的温度围,既具有液体的流动性,又具有晶体的某些光学特性,其透明度和颜色随电场、磁场、光照度等外界条件变化而变化液晶做成显示器件,就可以把上诉外界条件的变化反映出来从而形成现实的效果。图2-51602液晶2.4.4 报警模块的选择蜂鸣器模块负责闹铃提醒功能,本设计选用普通有源蜂鸣器,如图2-6,J8为短路冒,BEEP端与单片机P1.5口相连。但是蜂鸣器单纯的发声十分刺耳,因此需编写程序控制发声的时间使闹铃声更贴近实际。图2-6 蜂鸣器2.5 编程语言及开发工具选择2.5.1 编程语言的选择对于8051单片机,现有4种语言
25、支持,即汇编、PL/M、C和BASIC。常用的编程语言有汇编语言和C语言两种,每种语言都有各自的优缺点。汇编语言是一种用文字助记符来表示机器指令的符号语言,是最接近机器代码的一种语言。汇编语言可以直接有效地控制计算机各种操作,产生的目标文件运行速度快,执行效率高,程序相对高级语言小。 C语言是一种编译型程序设计语言,它兼顾了多种高级语言的特点。其本身不依赖于机器硬件系统,根本上不做修改就可将程序在不同单片机间进展移植。同时C语言提供了很多数学函数并支持浮点运算,开发效率较高,可缩短开发时间,增加程序可读性和可维护性4。在51系列单片机下,C语言C-51和汇编语言ASM-51相比,有如下优点:1
26、对单片机的指令系统不要求了解,仅需对51系列单片机的存储器构造有了解;2存放器分配、不同存储器的寻址及数据类型等细节可由编译器管理;3程序有规的构造,可分为不同的函数,这种方式可使程序构造化;4提供的库包含许多标准子程序,具有较强的数据处理能力;5由于具有方便的模块化编程技术,使已编好程序可容易地移植。综上所述,本设计选用开发效率高、程序可读性、可维护性高的C语言,并且采用模块化编程方式进展编程。2.5.2 开发环境的选择单片机的开发环境多种多样,很多公司都研发了单片机开发软件,如American Automationn、瑞典的IAR、Avocet和Keil等。开发环境的优劣直接影响单片机应用
27、产品的开发效率5。本设计基于51系列单片机AT89S52,而且选用C语言进展编程,因此选用来自德国的主流开发软件Keil进展编程。Keil在代码生成方面较其它几款软件在代码生成方面处于领先地位,可产生最少的代码。支持浮点和长整数、重入和递归。Keil Vision3集成开发环境是一个基于Windows的软件开发平台,有一个功能强大的编辑器、工程管理器和制作工具。Vision3支持8051的所有KEIL工具,包括C编译器、宏宏汇编器、器/定位器和目标文件至HEX格式的转换器。2.6 本章小结本章主要分析了电子秤的根本功能,根据根本功能提出实现思路最后得到总体方案,对于提到的各个单元进展选型,单片
28、机选择了MCS-51系列单片机中的AT89S52系列,调节按键选择独立按键,显示电路选择LCD1602液晶显示器,编程语言选择功能性、构造性、可维护性、可移植性强的C语言,开发工具选择适合51单片机的Keil uVision。第3章 系统软件设计经过前面详细调研、方案论证后,就进入了正式研制阶段。从总体上来看,设计任务可以分为硬件设计和软件设计,这两者互相结合,不可别离。由于本次设计是直接购置开发板,本章将在此根底上重点进展软件设计并最终实现其根本功能,在设计前应熟悉单片机的部资源。3.1 AT89S52的介绍AT89S52单片机是ATMEL公司新近推出的高档型AT89S系列单片机中的增强型产
29、品。ATMEL公司是美国20世纪80年代中期成立并开展起来的半导体公司。该公司的技术优势在于推出Flash存储器技术和高质量、高可靠性的生产技术,它率先将独特的Flash存储技术注入于单片机产品中。其推出的AT89系列单片机,在世界电子技术行业中引起了极大的反响,在国也受到广阔用户欢送6。AT89S52具有如下特点:40个引脚,8k Bytes Flash片程序存储器,256 bytes的随机存取数据存储器RAM,32个外部双向输入/输出I/O口,5个中断优先级2层中断嵌套中断,3个16位可编程定时计数器,2个全双工串行通信口,看门狗WDT电路,片时钟振荡器。表3-1 AT89S52功能兼容M
30、CS-51指令系统8k可反复擦写ISP Flash ROM32个双向I/O口4.5-5.5V工作电压3个16位可编程定时/计数器时钟频率0-33MHz全双工UART串行中断口线256x8bit部RAM2个外部中断源低功耗空闲和省电模式中断唤醒省电模式3级加密位看门狗WDT电路软件设置空闲和省电功能灵活的ISP字节和分页编程双数据存放器指针图3-1 AT89S52的引脚图引脚功能说明:VCC/GND:电源/接地引脚;Port 0:P0是一个8位漏极开路型双向I/O端口,端口置1(对端口写1)时作高阻抗输入端;P0还可以用作总线方式下的地址数据复用管脚,用来操作外部存储器。在这种工作模式下,P0口
31、具有部上拉作用。对部Flash程序存储器编程时,接收指令字节、校验程序、输出指令字节时,要求外接上拉电阻;Port 1:P1是一个带有部上拉电阻的8位双向I/0端口,输出时可驱动4个TTL。端口置1时,部上拉电阻将端口拉到高电平,作输入用; 另外,P1.0、P1.1可以分别被用作定时器/计数器2的外部计数输入(P1.0/T2)和触发输入(P1.1/T2EX);对部Flash程序存储器编程时,接收低8位地址信息;Port 2:P2是一个带有部上拉电阻的8位双向I/0端口;输出时可驱动4个TTL。端口置1时,部上拉电阻将端口拉到高电平,作输入用; P2口在存取外部存储器时,可作为高位地址输出;部F
32、lash程序存储器编程时,接收高8位地址和控制信息; Port 3: P3是一个带有部上拉电阻的8位双向I/0端口,输出时可驱动4个TTL。端口置1时,部上拉电阻将端口拉到高电平,作输入用。表3-2P3引脚功能复用P3.0 串行通讯输入(RXD)P3.1串行通讯输出(TXD)P3.2外部中断0( INT0)P3.3外部中断1(INT1)P3.4 定时器0输入(T0)P3.5定时器1输入(T1)P3.6 外部数据存储器写选通WR P3.7外部数据存储器写选通RDRST:在振荡器运行时,有两个机器周期(24个振荡周期)以上的高电平出现在此管脚时,将使单片机复位。只要这个管脚保持高电平,51芯片便循
33、环复位。复位后P0P3口均置1,管脚表现为高电平,程序计数器和特殊功能存放器SFR全部清零。当复位脚由高电平变为低电平时,芯片为ROM的00H处开场运行程序;XTAL1、XTAL2 :XTAL1是片振荡器的反相放大器输入端,XTAL2那么是输出端,使用外部振荡器时,外部振荡信号应直接加到XTAL1,而XTAL2悬空。部方式时,时钟发生器对振荡脉冲二分频,如晶振为12MHz,时钟频率就为6MHz。晶振的频率可以在1MHz至24MHz选择,电容取30PF左右。ALE/PROG:访问外部存储器时,ALE(地址锁存允许)的输出用于锁存地址的低位字节,即使不访问外部存储器,ALE端仍以不变的频率输出脉冲
34、信号(此频率是振荡器频率的1/6),在访问外部数据存储器时,出现一个ALE脉冲; PSEN:该引脚是外部程序存储器的选通信号输出端。当AT89S52由外部程序存储器取指令或常数时,每个机器周期输出2个脉冲,即两次有效。但访问外部数据存储器时,将不会有脉冲输出;EA/Vpp:外部访问允许端。当该引脚访问外部程序存储器时,应输入低电平。要使AT89S52只访问外部程序存储器(地址为0000H-FFFFH), 这时该引脚必须保持低电平; 3.2 主程序设计3.2.1 函数声名以及变量定义如前所述,本设计的主要功能是电子秤物品重量、单价、总价的显示及调整,显示器采用LCD1602液晶,采用5个独立按键
35、控制所有功能,采用蜂鸣器实现闹铃功能。因此,主函数执行之前需要完成以下工作:1对使用的单片机I/O口进展位声名:P2.0、P2.1、P2.2口分别控制LCD1602液晶的读写操作位、存放器和使能端;P1.4P1.7四个I/O口控制4个按钮;P3.5口连接清零键;P3.6口连接蜂鸣器。2定义各功能所需全局变量见表3-3:表3-3 全局变量定义功能变量类型变量意义单价unsigned chardjg、djs、d单价个位、十位、百位重量unsigned charzlg、zls、zlb重量个位、十位、百位价钱 intjq整形unsigned charjqg、jqs、jqb、jqq、jq1价钱个位,十位
36、.按键控制intak5按键按下的改变调整数值3声名子函数:本设计共需声名多个子函数,包括液晶驱动子函数、单价显示及其调整函数、重量显示及其调整函数、价钱显示函数、报警子程序等。详细子函数声名参见附录C。3.2.2 主程序设计思想电子秤的最根本功能为称重功能,程序设计的出发点必须是保证称重的准确性。但是由于没有用压力传感器无法测出物体实重,因此在本设计中设定了一个重量初始值,再通过按键调整它的大小,并设定了一个上限值当重量到达上限值时蜂鸣器就会发出响声。通过k5按键可以实现其加减0.11的功能,同样单价也是这样调整的。通过切换键k8可以使显示结果在单价、重量、总价钱之间切换,切换键的使用减少了按
37、键的使用,节省了资源。显示模块采用的是1602LCD液晶显示器,这种显示器自带字符发生器,因此可直接写要显示的字符如“dj、“zl、“jq,或者写它们的ASCII值都会有正确的显示,大大的简化了程序的编写。在编程时,只需把字符数据写进1602液晶,在指定的位置将结果显示出来即可,再通过按键实现调整切换等功能。图3-2 主程序流程图3.3 按键处理程序3.3.1 按键介绍在单片机系统中,键盘按连接形式可分为独立连接键盘、矩阵式键盘和薄膜开关。本设计中用的是独立连接式键盘。当键没有按下时,所有的数据输入线都为高电平;当有一按键被按下时,与之相连的数据输入线将变为低电平;通过相应指令,可以判断是否有
38、按键按下。按键要正确发挥作用必须消除抖动。所谓抖动,是一种由于按键是机械式的弹性开关,通常在按键按下和抬起的时候会出现屡次闭合或者断开的现象,如图3-3所示。通常抖动时间为5ms10ms,稳定闭合区的时间由按键动作决定,CPU往往会在闭合抖动时检测到屡次电平的变化。消除硬件抖动有硬件和软件两种方式。硬件消抖方法是在按键输入通道上添加去抖动电路,从根本上防止电压抖动的产生。软件消抖方法那么采用延迟510ms时间,待电压稳定后,再进展状态输入。在本设计中用延时的方法就足够了。 图3-3 按键时波形 图3-4 按键去抖流程当抖动的问题消除以后,还必须判断按键者是否将按键释放。通常按键的稳定闭合区的时
39、间最少也有上百毫秒,是抖动时间的数十倍,如果按键者持续按下按键不松手,那么按键一直处于闭合状态。这种状态会导致CPU误以为按键被按屡次,为了防止这种错误,程序需要判断按键被松开,这样才是一个完整的按键动作。用等待查询的方法就可以判断了。例如判断S1键松开与否,只需在在避开闭合抖动以后执行while(!s1),当按键一松开CPU检测到s1=1,等待查询就完毕,之后便可执行该按键相应的处理程序。3.3.2 按键设计图3-5 按键k8功能流程图本设计运用4个独立按键实现单价调节和状态切换功能。四个独立按键中,S6、S7是负责实现单价、重量的调整,S5是设置调整数值大小的。S8那么是功能切换键负责不同
40、显示结果的切换,另外一个k4键那么负责在重量超出围后清零功能。下面用流程图简要说明每个按键的作用。由于数字上调节大小和切换显示的时候位数不变,所以接着把需要显示的量的每个位通过取值表示出来,例如单价个位上的数值是单价的值乘以10去小数点之后再对10进展除法运算所得。图3-6 S5键功能图3-7 按键s6、s7实现单价调整子程序3.4 显示子程序设计3.4.1 1602液晶简介本设计的显示器选用LCD1602液晶,该液晶屏是以16个57点阵块组成的显示字符群,每行16个,共两行;每个点阵块为一个字符位,字符间距和行距都为一个点的宽度。下面,对该液晶的工作方式及显示子程序地设计进展详细介绍。116
41、02LCD主要技术参数及引脚功能1 显示容量:162个字符;2 芯片工作电压:4.55.5V;3 工作电流:2.0mA(5.0V);4 模块最正确工作电压:5.0V;5 字符尺寸:2.954.35(WH)mm。引脚功能说明:1602LCD采用标准的14脚无背光或16脚带背光接口表3-4 引脚接口说明表 编号 符号引脚说明编号符号引脚说明 1 VCC电源地9D2数据 2 VDD电源正10D3数据 3 VL液晶显示偏压11D4数据 4 RS数据/命令选择12D5数据 编号 符号引脚说明编号符号引脚说明 5 RW读/写选择13D6数据 6 E使能信号14D7数据 7 D0数据15BLA背光源正极 8
42、 D1数据16BLK背光源负极 编号 符号引脚说明编号符号引脚说明21602LCD的指令说明1602液晶模块部的控制器共有11条控制指令。表3-5 控制指令表序号指令RSR/WD7D6D5D4D3D2D1D01清显示00000000012光标返回000000001*3置输入模式00000001I/DS4显示开/关控制0000001DCB5光标或字符移位000001S/C R/L*6置功能00001DLNF*7置字符发生存贮器地址0001字符发生存贮器地址8置数据存贮器地址001显示数据存贮器地址9读忙标志或地址01BF计数器地址10写数到CGRAM或DDRAM10要写的数据容11从CGRAM或
43、DDRAM读数11读出的数据容1602液晶模块的读写操作、屏幕和光标的操作都是通过指令编程来实现的。说明:1为高电平、0为低电平 指令1:清显示,指令码01H,光标复位到地址00H位置。指令2:光标复位,光标返回到地址00H。指令3:光标和显示模式设置 I/D:光标移动方向,高电平右移,低电平左移 S:屏幕上所有文字是否左移或者右移。高电平表示有效,低电平那么无效。 指令4:显示开关控制。 D:控制整体显示的开与关,高电平表示开显示,低电平表示关显示 C:控制光标的开与关,高电平表示有光标,低电平表示无光标 B:控制光标是否闪烁,高电平闪烁,低电平不闪烁。 指令5:光标或显示移位 S/C:高电平时移动显示的文字,低电平时移动光标。 指令6:功能设置命令 DL:高电平时为4位总线,低电平时为8位总线 N:低电平时为单行显示,高电平时双行显示 F: 低电平时显示5x7的点阵字符,高电平时显示5x10的点阵字符。 指令7:字符发生器RAM地址设置。 指令8:DDRAM地址设置。 指令9:读忙信号和光标地址 BF:为忙标志位,高电平表示忙,此时模块不能接收命令或者数