基于单片机的多功能电子秤的设计与实现(共67页)_第1页
基于单片机的多功能电子秤的设计与实现(共67页)_第2页
基于单片机的多功能电子秤的设计与实现(共67页)_第3页
基于单片机的多功能电子秤的设计与实现(共67页)_第4页
基于单片机的多功能电子秤的设计与实现(共67页)_第5页
已阅读5页,还剩62页未读 继续免费阅读

下载本文档

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

文档简介

1、精选优质文档-倾情为你奉上摘要 电子秤是一种我们日常生活中经常使用的称重工具,相较于传统的杆秤来说,同时也是一种集聚了多种现代高科技技术于一体的现代新型称重仪器。 电子秤主要以单片机作为控制中心,通过称重传感器采集数据,然后使用A/D转换器进行数据转换,辅以键盘,显示器,再配合相应的软件来实现的。电子称使用起来方便快捷,测量准确,精度高,稳定性强,更重要的是能够实现自动称重、重量实现数字化显示,极大地便利了人们的生活,满足了人们对于称重的需求,所以越来越受到人们的欢迎。 经过仔细研究,本系统设计最终决定选用新一代STC89C52RC单片机来制作完成课题所要求的电子秤,使其作为主控电路的核心,实

2、现电子秤的所有功能。在设计过程中,系统增加了时钟模块的功能,系统由单片机控制核心,数据采集,人机交互,系统电源和时钟五大部分组成。单片机主控电路部分由除了STC89C52R之外,还有报警器及其相关电路组成;电阻应变式压力传感器,信号放大电路和A/D转换器则构成了数据采集部分,其中信号放大电路和A/D转换器部分则选用内部自带放大器的专用型AD转换芯片HX711实现,它的特点是转换精度很高,应用起来简单方便;人机交互部分则选用矩阵键盘作为输入设备,LCD1602液晶显示器作为显示设备;系统电源采用电脑USB接口供电,这样电路简单且电压稳定;时钟部分选用DS1302时钟芯片,再结合相关电路组成时钟电

3、路。软件部分通过使用C语言编程实现了本课题要求的全部功能。该电子秤能够满足课题所要求的称重功能的同时,并对时钟功能进行了丰富,增加了闹钟功能,称重范围为05Kg;能够显示所称物体重量、单价、总价。关键词:电子秤;单片机;称重传感器;HX711。专心-专注-专业目 录第一章 绪论1.1 研究的背景和意义电子秤是一种与人民现实生产生活息息相关,被广泛应用于各个领域的电子衡器,诸如工业生产,商业贸易,交通运输,港口,机械制造,医疗保健,冶金,矿山和国防建设等各个方面。和传统的杆秤进行对比,电子秤具备诸多优点,例如:它的精度很高,结构简单,价格低,用途广泛,便于携带,使用方便等优点。电子称的工作原理也

4、不难理解,它通过压力传感器采集物体重量信息,将其转换为电信号,进行适当的信号放大处理,再通过A/D转换器将模拟电信号转换为数字信号,最后经过单片机的控制处理,送到液晶显示器显示出被测物体的重量信息。目前市场上使用的称量工具,各个公司的产品质量良莠不齐,有的质量较高但价格太高,有的价格不高但质量太差,容易损坏,精度不高,稳定性差,运行不可靠。所以目前商用的电子秤市场上,商用电子秤的总体质量不高,这种情况是由多种因素造成的,例如某些公司因为资金有限,造成科技人才储备不足,从而使其技术力量不够强,科技研发能力不足,造成产品质量不高。因此,开发出一种质量较高但成本不高,具有较高性价比且具有实际实用价值

5、的电子秤,克服电子秤在实际使用中的诸多缺点,具有一定的现实意义。1.2 研究现状国内有关电子秤技术的研究相比国外来说起步晚了很多,不过在国内科学家的努力下,近些年我们奋起直追,技术水平有了极大提升,取得了很多成果。从上世纪六十年代第一台电子秤的诞生,到如今的微机式产品,在某些技术领域甚至达到了国际领先水平。我们仅仅用了几十年的时间就达到了发达国家花费近一百年才能够达到的技术水平。但是总体来说,目前国内电子衡器的技术水平仍然不算太高,仅仅与发达国家上世纪九十年代的水平相当。与国外产品相比,我国商用产品在品种,功能,质量,核心部件的稳定性和可靠性方面还有不小的差距。经过一百多年的发展,发达国家已经

6、在电子秤有关的各个领域都达到了很高的水平,例如技术水平、产品种类等等,最重要的是他们产品的精确度,稳定性,可靠性都相当高。如他们商用秤的精度已经达到OIML规定,有的产品甚至远超此规定;另外它们的稳定性也极强,在一年内不允许有超差情况出现;同时这些产品的使用寿命通常被要求能够正常工作十几年,由此可见其可靠性也很高。简而言之,在电子秤技术领域,国内企业还有很长的路要走。现在电子秤技术的发展趋势总的来说是朝着智能化的方向发展;电子秤的功能会越来越丰富;电子秤的速率会越来越高,准确率和稳定性会越来越高,可靠性也会越来越强2;1.3 主要研究内容 本课题主要完成称重自动控制功能,本系统采用单片机STC

7、89C52RC来制作完成课题所要求的电子秤,使其作为主控电路的核心,实现电子秤的所有功能,经过设计,系统由单片机控制核心,数据采集,人机交互,系统电源和时钟五大部分组成。 由系统电源、压力传感器、A/D转换器、51单片机、键盘、LCD液晶显示器,时钟芯片等器件共同构成了系统硬件部分的五大模块。使用单片机编程软件运用C语言编程实现要求的功能,从而完成系统软件部分的设计。需要达到以下的技术指标:称量范围0-5kg;电子秤称重时能显示物品重量,还能进行单价设定,并能自动算出总价并显示出来,超重时还要能够发出警报。若不进行称量操作,则能够显示时间,且具有闹钟功能。1.4 本文的组织结构本文对

8、电子秤的设计和具体实现方法作了具体的描述,对整个系统的各个组成部分及涉及的相关技术进行了介绍,例如压力传感器,A/D转换器,51单片机,键盘输入,电源部分,报警电路,时钟芯片,显示器等等。总共划分了五章内容,如下所示。第一章:简要介绍了电子秤的概念,特点,技术现状和研究内容。第二章:论证了系统方案,介绍了相关的原理及相关器件,对比了各种方案的优缺点。第三章:对相关芯片以及相应模块的功能作了细致的分析,给出了单片机控制方案。第四章:介绍了系统的软件设计。第五章:对最终的成品设计作了相应的调试,分析,给出了最终的结论。第二章 系统方案的设计2.1 电子秤的设计要求2.1.1 基本要求 (1)电子秤

9、称重范围:05Kg;重量误差不超过+0.003Kg。      (2)LED显示所称物体重量、单价、总价。      (3)超量程报警功能。 (4)不称重时,可以显示时间。2.1.2 功能扩展 (1)液晶显示所称重物品的重量,同时还可以显示物品的单价,总价。 (2)能够实现去除皮重的功能。 (3)能够显示时间的同时,实现了闹钟功能。2.2 系统的设计思路及工作原理2.2.1 工作原理电子秤通过压力传感器采集物体重量信息,将其转换为电信号,进行适当的信号放大处理,再通过A/D转换器将模拟电信号转换

10、为数字信号,然后经过单片机的处理,最后送到液晶显示器显示出被测物体的重量信息4。2.2.2 基本设计思路 系统由单片机控制核心,数据采集,人机交互,系统电源和时钟五大部分组成。单片机主控电路部分由除了STC89C52R之外,还有报警器及其相关电路组成;电阻应变式压力传感器,信号放大电路和A/D转换器则构成了数据采集部分,其中信号放大电路和A/D转换器部分则选用内部自带放大器的专用型AD转换芯片HX711实现,它的特点是转换精度很高,应用起来简单方便;人机交互部分则选用矩阵键盘作为输入设备,LCD1602液晶显示器作为显示设备;系统电源采用电脑USB接口供电,这样电路简单且电压稳定;时钟部分选用

11、DS1302时钟芯片,再结合相关电路组成时钟电路。使用单片机编程软件运用C语言编程实现要求的功能,并对时钟功能进行丰富,增加了闹钟功能。2.3 系统总体设计方案比较与论证在设计本系统时,有以下几种电子秤设计方案:方案一: 数码管方案结构简图如图2-1所示。图2-1 数码管显示方案这种设计方案虽然能够满足课题的基本要求,能够完成物品称重的同时,显示重量、单价、总价等信息。可是这种方案也有其致命缺陷,如果数码管较少,则不能同时显示重量、单价、总价等信息,这是因为数码管本身的缺陷引起的。如果要同时显示多个信息,就必须在电路中安装大量数码管,但是这样会大幅增加硬件电路设计的难度。方案二:在模数转换之前

12、,加上放大器,用于准确的线性放大输出电压信号。将数码管换为具有更强大显示能力的液晶显示器。这种不仅加强了人机交互功能,满足设计要求,而且可以同时显示物体重量,单价,总价等信息,电路更加简单,设计更加简便。结构简图如图2-2所示。图2-2 LCD液晶显示方案在整个硬件电路系统的设计过程中,综合分析了各种有利因素和不利因素以后,最终完成了的电子称设计方案。系统硬件设计框图如图2-3所示。数据采集AD转换器单片机LCD显示时钟显示报警电路键盘信号放大时钟芯片图2-3 系统设计硬件框图2.3 系统元器件选型及参数介绍2.3.1 单片机选型单片机作为系统主控电路的核心元件,是整个硬件电路系统的中枢所在,

13、也就是心脏部位。所以其选型非常重要。根据本课题的需求,需要处理速度快,易用性强,价格便宜的单片机,最终决定选用STC89C52单片机。STC89C52单片机是一种新型的51单片机,集众多优点于一身,例如:功耗很低,性能足够优秀,处理速度很快等等。STC89C52使用了传统的MCS-51内核,同时也做了许多改进,使得芯片相较于传统的51单片机功能更加丰富,性能也更加强劲 1,这让它得到了广泛的应用。stc89c52芯片具有以下特性5:指令集完全兼容传统的8051;内部集成有8KB的存储空间;时钟频率为033MHz;32个可编程输入/输出引脚;2个16位定时/计数器;6个中断源,2级优先级;全双工

14、串行通信接口;监视定时器;2个数据指针。STC89C52单片机引脚图如图2-4所示5。 图2-4 STC89C52单片机引脚图2.3.2 数据采集部分2.3.2.1 传感器的选型 方案一 电容式压力传感器 电容式压力传感器是一种比较常见的压力传感器,平常使用的很多测量仪器都是以它为基础制成的,它是一种利用电容变化巧妙地把对压力的测量转换为电信号测量的仪器。 它的应用非常广泛,有很多优点:例如分辨率很高;能够进行动态的检测;结构很简单,并不复杂;尤为重要的是它的稳定性很好,可以胜任各种环境下的测量工作;可以是非接触测量的,很方便。 方案二 压电式压力传感器这种传感器的实际工作原理是通过电气元件把

15、对压力的测量的转变为对电信号的测量。它也有不少优点,例如:重量轻、可靠性强、结构简单、稳定性高、信噪比足够高、灵敏度很高以及信频宽等等。显然它具有许多不完美之处,例如:内阻高、输出电流的相应较差、部分电压材料忌潮湿的环境。它的应用领域非常宽广,如在电声学、生物医学和工程力学中都有应用,尤其是在宇航和航空领域应用中占有特殊的地位。 方案三 电阻应变式传感器 电阻应变式传感器是通过金属电阻应变片受到压力的作用后,其电阻值也会随之变化的原理工作的。金属电阻应变片有许多种类,不同的电阻应变片有不同的优缺点,适合不同场合。这种传感器有很多优点,例如:它的灵敏度和精度都足够高,测量范围非常广,使用寿命很长

16、,结构很简单,频响特性也不错,最重要的是在许多恶劣的环境下,依然有很高的稳定性,能够正常工作。经过认真对比分析这三种方案的优缺点,我选择了第三种方案,这种方案更加符合本课题的要求。 2.3.2.2 放大器及模数转换器选择通常由于传感器输出的信号一般较弱,如果信号没有经过放大处理,就会因为信号输出的电压信号太低造成难以直接用来进行A/D转换。为此,测量电路中经常设置有信号放大处理电路模块,用来放大处理信号。这一模块由相应的放大器构成。  模数转换部分的设计在整个设计中占有非常重要的位置,所以模数转换器的选择就显得尤为重要。目前,世界上存在的模数转换器的种类多种多样,有传统的并

17、行、积分型模数转换器,也有专用型的模数转换器。不同的模数转换器有不同的优缺点,具有各自的性能。目前,可供选择的模数转换器有以下几种选择:(1)并行比较A/D转换器:如ADC0808、ADC0809等。并行比较ADC显著的特点是转换速度快,但是成本高,功耗较大,且其分辨率一般不高,因此并行比较式A/D适合于要求高速、低分辨率的仪器中。(2)积分型A/D转换器:如:ICL7135、ICL7109等。它的基本原理比较简单,优点是稳定性相当不错,转换精度高。缺点是转换速度慢。适合对精度的需求较高,而且对转换速度需求不高的仪器仪表中。(3)专用型A/D转换器:如HX711。它是专用型高精度的24位A/D

18、转换器芯片。它有很高的集成度,有很好的稳定性。最重要的是其内部集成有放大器,如果选用它来设计电子秤,就可无需额外选取放大器了。这样就使电路设计的复杂度减小了,同时减小了制作成本10。经过综合分析,最终决定选用专用型高精度的模数转换芯片HX711。芯片引脚图如图2-6所示。图2-6 HX711引脚图2.3.3 人机交互部分2.3.3.1 键盘输入键盘作为人机交互模块中非常重要的一环,它是使用者向系统进行信息输入的工具。键盘是由一个一个的独立按键和相应的电路构成。键盘的种类有很多,但我们经常使用到的只有几种,例如通用键盘。键盘的选型要根据课题的要求和设计的需要而定目前有两种方案可以选择。方案一:I

19、ntel8279是一种大家经常使用的可编程通用键盘/显示器接口芯片,它既有键盘输入功能,也有显示器输出功能。它有很多优点,但是同时也有致命的缺点,就是它的使用会占用系统过多的资源,这会让本就紧张的系统资源更加稀少。方案二:选用常用的矩阵键盘,它编程非常简单,设计可靠,同时配合单片机可以很轻松的实现按键输入。通过以上分析,最终选用矩阵键盘。2.3.3.2 显示电路显示电路作为人机交互的重要组成部分,其中显示器的选择尤为重要,它直接关乎着使用者进行人机交互的体验感受。有以下两种方案。方案一:使用数码管作为显示器。这种设计方案能够满足课题的基本要求,完成物品称重的同时,也能显示重量、单价、总价等信息

20、。其显著的优点是编程较为简单,但缺点则是不能同时显示多个不同的信息,若要同时显示不同的信息,如同时显示单价,总价等信息,则需要同时安装大量的数码管。这样则增加了电路的复杂度,使设计硬件电路时的难度大大增加。同时软件编写的难度也加大了许多,再则数码管能够显示的字符十分有限,对许多字符不能很好的显示。方案二:采用具有更强字符显示功能的LCD液晶显示器,可以设置显示单价,总价,时间日期等信息,它的功耗很低、能够显示的内容非常丰富,稳定性也很好。现在字符型液晶显示器应用也较为普遍,价格也不是很高。经过仔细分析,最终选择了方案二,使用液晶显示器作为显示电路的核心器件。2.3.4 电源部分因为本设计中选用

21、的单片机等器件的所需的电源电压均为5V,而USB接口刚好为5V,所以本设计采用电脑USB接口直接供电,这样设计电路也比较简单。同时,设计了相应的USB下载电路,单片机可以通过USB接口直接下载程序。其电路原理如图2-7所示。图2-7 供电及程序下载电路2.3.5 具体实施方案简介本系统设计最终决定选用新一代STC89C52RC单片机来制作完成课题所要求的电子秤,使其作为主控电路的核心,实现电子秤的所有功能。STC89C52单片机是一种具有低功耗,具有优异性能的微处理器,它具有许多传统51单片机不具备的功能,同时具备一定的存储空间,由于编程所需要的软件存储空间不是太大,此单片机内部存储空间能够满

22、足需求,这样就无须再外接外部存储器了,从而降低了系统设计的难度。硬件部分除了包括单片机控制核心模块之外,还包括数据采集,人机交互,系统电源和时钟电路等部分。数据采集部分由电阻式压力传感器和专用型24位模数转换器组成。在选择电阻式压力传感器时,要结合课题的要求,根据实际需求,选用有足够精确度和稳定性的传感器,还要把其的称重误差控制在合理范围内。另外还要考虑秤台自身的重量的影响,并且要防止物体超重时损坏称重传感器,所以最终选择的电阻式压力传感器的称重极限值,要大于课题所要求的最大值,准确性也要达到课题的要求。人机交互部分的键盘,最终选用了编程较为简单的矩阵键盘。液晶显示器选用了lcd1602.时钟

23、模块选用了时钟芯片DS1302作为核心器件。系统硬件的结构框图如下图2-8所示。图2-8 系统硬件结构框图第三章 系统的硬件设计本系统设计最终决定选用新一代STC89C52RC单片机来制作完成课题所要求的电子秤,使其作为主控电路的核心,实现电子秤的所有功能。硬件部分由单片机控制核心,数据采集,人机交互,系统电源和时钟五大部分组成。3.1基于STC89C52的主控电路(1) 单片机STC89C52简述STC89C52是一种性能十分出众,功耗很低的单片机,作为一款改进型单片机,它使用了传统的MCS-51内核,由于做了许多改进,使得芯片相较于传统的51单片机功能更加丰富,性能也更加强劲。另外由于沿用

24、了传统内核,所以它的指令集也完全兼容传统8051。 (2)单片机核心控制电路的中心为STC89C52单片机,其次是晶振电路。为了能够实现清零功能,还设计了复位电路,此电路是整个系统中最重要的部分,是实现所有功能的关键所在。本课题设计的单片机主控电路如图3-1所示。图3-1 主控电路图图中DT和SCK外接模数转换电路,负责单片机与模数转换电路之间的信息交换。P1.6外接蜂鸣器,用来传输报警信号。晶振是晶片使用某些特殊材料封装起来以后,又将IC添加在其封装内部组成振荡电路的晶体元件。晶振在单片机中所起的作用非常巨大,它能够为其提供需要的时钟频率,而且单片机的指令都必须在这个基础之上执行。

25、设计复位电路一方面为实现清零功能,另一方面是为了保证系统中的电路能够稳定可靠的工作,本设计复位电路采用两种复位方式,按键复位和上电复位。构成复位电路有两种方案,一种是借助STC89C52内部的反相放大器构成振荡器,但是要形成时钟脉冲,需要在外部额外增加电路,这样会增加电路的复杂度。所以最终选用另外一种方案,即利用内部自带时钟,使用芯片内部的振荡器,完成复位电路设计。3.2 数据采集及A/D转换电路3.2.1 数据采集电路 (1)数据采集采用HL-8型称重传感器,其安装方式如图3-2所示。图3-2 HL-8型称重传感器安装图(2)HL-8型称重传感器的内部原理图如3-3所示。图3-3 HL-8型

26、称重传感器内部原理图(3)HL-8型称重传感器的主要技术参数如表3-1所示。表3-1 HL-8型称重传感器主要技术参数3.2.2 A/D转换电路采用高增益的24位HX711转换器HX711是一款专用型高精度的24位模数转换芯片。HX711管脚说明如表3-2所示。表3-2 HX711管脚说明(1)模拟输入(2)供电电源(3)时钟选择本课题设计的HX711电路如图3-4所示。图3-4 HX711电路3.3 显示电路使用具有显示内容丰富的16*2行的LCD1602显示器,它性能优异,能够同时显示多种字符和数字,基控制器采用HD44780,非常符合本设计的要求。它功耗很小,体积小,显示内容丰富,编程较

27、为简单8。其与单片机的连接电路如图3-5所示。图3-5 系统状态显示电路图 1脚为接地引脚;2脚为电源引脚;3脚为液晶1602的背光调节引脚,通过2K电位器接地;4脚是控制模块内部寄存器选择的引脚;5脚是控制读/写模块操作的引脚;6脚为使能端;4、5、6引脚分别与单片机的P1.0、P1.1、P1.2端口相连;7-14脚与单片机的P0口相连,他们是8根数据通信线。通它们,单片机可以和液晶屏进行信息交换;15脚连接电源、16脚接地8。3.4 时钟电路DS1302是一种实时时钟芯片,它的性能十分出众,功耗很低,并且自带RAM,使用它可以轻松编程实现电子日历功能。工作电压宽达2.55.5V。因为有诸多

28、优点,所以它在很多测量系统中被普遍使用9。DS1302管脚图如图3-6所示。 图3-6 DS1302管脚定义DS1302各引脚的功能为:VCC1:备用电源;VCC2:主电源。当VCC2>VCC1+0.2V时,由VCC2向DS1302供电,当VCC2< VCC1时,由VCC1向DS1302供电。SCLK:串行时钟,输入;  I/O:三线接口时的双向数据线;CE:输入信号,在读、写数据期间,必须为高。时钟电路如图3-7所示。图3-7 时钟电路3.5 报警电路本设计中的报警电路原理简单,易于理解。当物品重量超过最大量程时,蜂鸣器发出报警声,进行报警。报警电路由三极管,电阻和蜂鸣

29、器构成。蜂鸣器通过三极管来驱动,单片机的引脚P1.6与三极管的基极相连,三极管通过单片机相应接口输出的高低电平来控制其导通与否。报警电路如图3-8所示。图3-8 报警电路3.6 键盘输入键盘输入电路作为人机交互部分中重要的组成部分,在电子称工作的过程中,所有信息的输入都由它来完成,例如单价值的输入,时间的调整。经过缜密思考,键盘最终选用了矩阵键盘,这是因为其结构简单,编程方便,便于进行相应的软件设计。其电路如图3-9所示。图3-9 矩阵键盘作为电子秤时,其按键功能分配如下表所示。789删除456去皮123清零10011显示时间此电子秤每次开机自动进入称重页面,所有数据初始化清零。进行物品称重前

30、,要先按下去皮键,除去托盘重量,将其重量清零,实现去皮功能。在输入了单价的过程中,可以使用删除键或者清零键修改单价。单价设定完完成后,总价会自动生成,并被显示出来。作为时钟和闹钟的时候,键盘面板如下所示。选择+-闹铃停止模式选择对应矩阵键盘按键:1514131112由于此电子秤开机后默认进入称重界面,所以进入时间显示界面或者闹钟显示界面需要通过模式选择按键进行界面切换。进入时间显示界面或者闹钟显示界面以后,对各个时间参数的调节需要通过选择按键来进行切换,使用加减键来调节其大小。3.7 系统硬件电路的绘制和PCB制作3.7.1Protel99SE软件介绍在进行电路的设计时,我将此软件和Altiu

31、m Designe软件进行了比较,经过综合考虑之后,我最终决定采用此软件进行原理图,PCB的绘制,该软件一经问世就备受欢迎,后经过版本的更迭发展成为如今的版本Protel99SE。Protel99SE软件是一款非常流行的EDA设计软件,它除了能进行原理图,PCB板的设计两种常用的功能之外,还可以完成可编程器件设计和电路仿真。它由多种功能模块组成,包括有原理图设计系统、印刷电路板设计系统、自动布线系统、电路仿真系统、可编程器件设计系统、PCB信号完整性分析系统等等。因为它具有很强大的数据交换能力和开放性及3D模拟能力,所以该软件自问世以来,一直以来都受到电子工程师和高校师生的极力追捧,备受推崇,

32、因此它成为一款非常流行的设计软件。3.7.2系统原理图和PCB的绘制3.7.2.1采用Protel99SE软件绘制原理图的步骤如下:(1)建立系统所需要的元件库,如果所需的元器件,软件自带的元件库中没有,则需自己制作没有的原理图符号;(2)把自己建立的元件库都添加进入相应的工程项目中;(3)进行元件整体布局将元器件放置于图中合理的位置,这是最关键的一步;(4)对原理图内的元器件进行电气连接;(5)放置注释,这是为了增加电路图的可读性;3.7.2.2采用Protel99SE软件绘制PCB的步骤如下:(1)绘制出正确的原理图后生成网络表;(2)在工程中建立PCB文件,导入生成的网络表。在网络表导入

33、之前,要注意相关环境参数的设置和电路板的规划;(3)进行PCB的绘制时,PCB的布线要尽可能美观,完成绘制后,还要进行最终的设计规则检测。 第四章 软件设计本课题设计的电子秤系统由硬件电路部分和软件部分组成,硬件电路部分的完成只是整个系统的基础,它是为软件的运行做准备的,软件部分才是整个系统的灵魂,两者相辅相成,才能确保整个系统的成功运行。软件部分必须能够满足课题对功能的所有要求,如自动称重、价格计算、显示功能、时钟功能、闹钟功能、报警功能等等。软件系统的主程序包括电子秤函数和时钟函数,此外还有一些重要的子函数,如DS1302初始化程序、显示函数、蜂鸣器报警函数等等。4.1 主程序流程图 本本

34、程序主要有两个功能函数组成,一个为电子秤函数,一个为时钟函数,这两个函数是整个程序中最重要的组成部分。4.1.1时钟模块程序时钟函数流程图如图4-1所示。图4-1 时钟函数流程图系统启动后,首先调用时钟芯片DS1302的初始化程序将其初始化,然后再调用液晶显示器LCD1602的初始化程序将其初始化。系统初始化完毕后,系统默认自动进入物品称重界面,这时如果按下模式选择键,系统就会进入时钟界面,这时显示函数运行,液晶屏开始显示时间,与此同时按键扫描程序开始运行,循环检测键盘中是否有按键按下,是否在进行各个时间参数的调节或者界面的切换。紧接着与预先设定的闹钟时间进行比较,检测是否与闹钟时间相一致,如

35、果相同,则定时器T0开始运行,蜂鸣器发出蜂鸣声,提示闹钟时间到了。如果在闹钟发出闹铃声的过程中关闭闹钟,可以按下闹铃解除按键,使闹钟停止。4.1.2称重模块程序电子秤函数流程图如图4-2所示。图4-2 电子秤函数流程图在电子秤称重界面工作时,系统启动后会首先调用LCD1602初始化程序将液晶屏初始化,启动A/D转换函数,对采集到的数据进行处理,与此同时运行单价函数,按键扫描函数也会同时运行,检测按键值的输入,再通过设置函数进行单价的输入和修改。自动计算出总价后,调用显示函数将重量、单价、总价等信息显示在液晶屏上。如果想要清除所有信息重新称重,则只需按下清零键即可,系统会重新初始化,所有数据归零

36、。4.1.3重要的子程序4.1.3.1 DS1302模块的子程序void write_1302(uchar add,uchar dat)rst = 1; /把复位线拿高for(i=0;i<8;i+) /低位在前clk = 0; /时钟线拿低开始写数据io = add & 0x01; add >>= 1; /把地址右移一位clk = 1; /时钟线拿高for(i=0;i<8;i+)clk = 0; /时钟线拿低开始写数据io = dat & 0x01;dat >>= 1; /把数据右移一位clk = 1; /时钟线拿高rst = 0; /复位线

37、合低clk = 0;io = 0;此子程序的功能是往时钟芯片DS1302中写入一个数据。写数据的过程就是先写入寄存器地址,再写入数据。这些数据就是年月日时分秒这些时间参数。写完数据以后,将RST置零。uchar read_1302(uchar add)uchar value,i;rst = 1; /把复位线拿高for(i=0;i<8;i+) /低位在前clk = 0; /时钟线拿低开始写数据io = add & 0x01; add >>= 1; /把地址右移一位clk = 1; /时钟线拿高for(i=0;i<8;i+)clk = 0; /时钟线拿低开始读数据v

38、alue >>= 1;if(io = 1)value |= 0x80;clk = 1; /时钟线拿高rst = 0; /复位线合低clk = 0;io = 0;return value; /返回读出来的数据此子程序的功能是读取DS1302中的数据即读取时间,读取年月日时分秒这些时间参数。读取数据的过程和写数据的过程很相似,也是先写入寄存器地址,再读取数据。4.1.3.2 LCD1602液晶显示器子程序void write_com(uchar com)e=0; /为了让本次操作有效rs=0; /表示写指令寄存器rw=0; /表示对寄存器写操作P0=com; /把要写入液晶模块的数据准

39、备好delay_uint(3); e=1; /让液晶模块使能,以便让我们对它的操作有效delay_uint(25);e=0; /为了让本次操作有效此子程序的功能是向CD1602指令寄存器中写入命令。void write_data(uchar dat)e=0; /为了让本次操作有效rs=1; /表示写数据寄存器rw=0; /表示对寄存器写操作P0=dat; /把要写入液晶模块的数据准备好delay_uint(3);e=1; /让液晶模块使能,以便让我们对它的操作有效delay_uint(25);e=0; /为了让本次操作有效此子程序的功能是向LCD1602数据寄存器中写入数据信息,void wr

40、ite_string(uchar hang,uchar add,uchar *p)if(hang=1) write_com(0x80+add);/在第一行指定位置显示elsewrite_com(0x80+0x40+add);/在第二行指定位置显示while(1) if(*p = '0') break;/判断字符串是否结束write_data(*p); /将当前的字符内容发送到液晶屏上p+; /指向下一个字符此子程序的功能是在液晶显示器的指定位置上显示字符串。void init_1602() /lcd1602初始化设置write_com(0x38);/显示模式设置,8位数据口wr

41、ite_com(0x0c); /开启显示,光标不显示write_com(0x06); /设置光标移动方向为向右,显示字符时字符不移动delay_uint(1000);/延时,保证显示更加稳定此子程序的功能是初始化LCD1602液晶显示器。4.2 主要中断程序流程图定时器T0中断程序流程图如图4-3所示。图4-3 定时器T0中断程序流程图进入TO中断程序后,系统会先将TO计数器初始化,然后判断所称物品重量是否超过电子秤最大量程5kg,如果超重,就会启动蜂鸣器报警程序,蜂鸣器就会报警提示超重。否则继续与闹钟标志比较,判断是否到达闹钟时间,如果到达,同样会启动蜂鸣器报警程序,使蜂鸣器报警。4.3 核

42、心代码 下面介绍主程序编写,其他程序见附录7。 (1)头文件和一些宏定义#include <reg52.h> /调用单片机头文件#define uchar unsigned char /无符号字符型 宏定义变量范围0255#define uint unsigned int /无符号整型 宏定义变量范围065535#define ulong unsigned long#include "ds1302.h"#include<intrins.h> (2)管脚,常量,变量定义uchar code table_num="abcdefg"sb

43、it rs=P10; /寄存器选择信号 H:数据寄存器 L:指令寄存器sbit rw=P11; /寄存器选择信号 H:数据寄存器 L:指令寄存器sbit e =P12; /片选信号 下降沿触发sbit hx711_dout=P21; sbit hx711_sck=P20; sbit ACC0=ACC0;sbit ACC7=ACC7;sbit clk = P13; /ds1302时钟线定义sbit io = P14; /数据线sbit rst = P15; /复位线uchar miao,fen,shi,ri,yue,week,nian,lshi,lfen;uchar i;uchar open1;

44、sbit beep = P16; /蜂鸣器uchar menu_1,menu_2;long weight;unsigned long HX711_Buffer = 0;unsigned long Weight_Maopi = 0;unsigned char flag = 0;bit Flag_ERROR = 0;uint temp,qi_weight;bit chaozhong_flag;bit leiji_flag;uchar flag_200ms ;ulong price,z_price; /单价 总价uchar flag_p;(3)各个子程序/*初始化ds1302时间*/void ini

45、t_1302()uchar i;rst = 0;/第一次读写数据时要把IO品拿低clk = 0;io = 0;i = read_ds1302ram(30); if(i != 8)i=8;write_ds1302ram(30,i); /4050 4100 3080write_1302(0x8e,0x00);/打开写保护write_1302(0x90,0xaa);/ 定义充电write_1302(0x80,0x53);/秒 write_1302(0x84,0x13);/分 write_1302(0x82,0x43);/时write_1302(0x8c,0x12);/年write_1302(0x88

46、,0x06);/月write_1302(0x86,0x03);/日write_1302(0x8a,0x06);/星期write_1302(0x8e,0x80);/把最高位值0 允许ds1302工作write_1302(0x8e,0x80);/关写保护read_time(); /读时间if(miao >= 0x60)write_1302(0x8e,0x00); /打开写保护write_1302(0x80,0x53);/把最高位值0 允许ds1302工作write_1302(0x8e,0x80);/关写保护/* 名称 : write_sfm4_price(uchar hang,uchar a

47、dd,uchar date)* 功能 : 显示价格* 输入 : 行,列,需要输入1602的数据* 输出 : 无*/void write_sfm4_price(uchar hang,uchar add,uint date)if(hang=1) write_com(0x80+add);elsewrite_com(0x80+0x40+add);write_data(0x30+date/1000%10);write_data(0x30+date/100%10);write_data('.');write_data(0x30+date/10%10);write_data(0x30+dat

48、e%10);void write_sfm4_price1(uchar hang,uchar add,uint date)if(hang=1) write_com(0x80+add);elsewrite_com(0x80+0x40+add);if(date >= 9999)write_data(0x30+date/10000%10);write_data(0x30+date/1000%10);write_data(0x30+date/100%10);write_data('.');write_data(0x30+date/10%10);else write_data(0x3

49、0+date/1000%10);write_data(0x30+date/100%10);write_data('.');write_data(0x30+date/10%10);write_data(0x30+date%10);/*开机液晶显示函数 初始化液晶的内容*/void init_1602_dis_csf() /初始化液晶 write_string(1,0," W:0.000kg ");write_string(2,0,"P:00.00 Z:00.00");write_zifu(2,7,0x5c);/¥/write_zifu(2,

50、15,0x5c);/¥void init_1602_dis_sj() /初始化液晶 write_string(1,0," : : W: ");write_string(2,0," 20 - - ");void init_1602_dis_nz() /初始化闹钟界面 write_string(1,0," set clock "); write_string(2,0," : ");/*压力显示程序*/void write_1602_yl(uchar hang,uchar add,uint date)if(hang=1)

51、 write_com(0x80+add);elsewrite_com(0x80+0x40+add);if(date < 2)date = 0;/write_data(0x30+date/10000%10);write_data(0x30+date/1000%10);write_data('.');write_data(0x30+date/100%10);write_data(0x30+date/10%10);write_data(0x30+date%10);void Delay_hx711_us(void)_nop_();_nop_();unsigned long HX7

52、11_Read(void)/增益128unsigned long count; unsigned char i; hx711_dout=1; Delay_hx711_us(); hx711_sck=0; count=0;/EA = 1; while(hx711_dout); /EA = 0; for(i=0;i<24;i+) hx711_sck=1; count=count<<1; hx711_sck=0; if(hx711_dout)count+; hx711_sck=1; count=count0x;/第25个脉冲下降沿来时,转换数据Delay_hx711_us();hx711_sck=0; ret

温馨提示

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

评论

0/150

提交评论