1、统成都学悦CHENGDU UNIVERSITY本科毕业(设计)论文题 目 基于单片机的电子秤设计学 院 电子信息工程学院专 业_自动化_ _ 成都学院学士学位论文(设计)基于单片机的电子秤设计:摘要:在日常生活中,经常需要测量物体的质量,从而使测量的准确性显得很重要。称重技术的改 革影响着人民的生活,随着计量技术和电子技术的发展,以前常用的纯机械结构的杆秤、台秤等存 在不精确、速度慢、不能计价、易作弊等问题,已逐步被电子产品替代。本设计以STC89c52RC单片机为控制核心,实现电子秤的基本功能,即准确采集物体的质量,直 观显示重量、单价及总价,并可对不同物品的重量、单价进行调整,此外系统还具
2、有超量程报警功 能。显示部分采用的是128*64汉字液晶显示器,运用矩阵键盘实现重量、单价的调整和切换显示功 能。软件设计以C语言作为编程语言,采用模块化编程思想,在Keil u Visio n开发环境下编写应 用程序,结合硬件电路做整体调试,最终实现了所有功能。本次电子秤设计具有小型化、智能化、准确度高等特点整个系统结构简单、使用方便、功能齐全、精度高,具有一定的实用价值。关键词:电子秤;单片机;128*64液晶;矩阵键盘I成都学院学士学位论文(设计)Electronic scales design of Microcontroller-based :Abst ract:In d aily
3、life,we o ft en need t o measu re t he qu alit y o f t he o bject,so t hat t he accu racy o f measu rement is very impo rt ant.Weighing Techno lo gy refo rms affect ing peo ples lives,wit h t he d evelo pment o f measu rement t echno lo gy and elect ro nic t echno lo gy,previo u sly u sed pu rely me
4、chanical st ru ct u re st eelyard and scales et c,exist ence o f inaccu rat e,slo w,no t pricing,easy t o cheat ing and o t her issu es,so it having grad u ally been replaced by elect ro nic pro d u ct s.This d esign u sed STC89C52RC micro co nt ro ller as Co nt ro l co re,t o achieve t he basic fu
5、nct io ns o f elect ro nic scales,namely t he qu alit y o f accu rat e co llect io n o f o bject s,visu al d isplay weight,u nit price and t o t al price,it s also can ad ju st ment s t he weight and price o f t he d ifferent it ems,in ad d it io n t he syst em also has o ver-range alarm fu nct io n
6、.The sho w so me is u sed 128*64 charact er LCD d isplay,u seing mat rix keybo ard t o achieve weight,price ad ju st ment s and swit ch t he d isplay fu nct io n.So ft ware Design u sed C langu age as a pro gramming langu age,writ ing applicat io ns in Keil u Visio n d evelo pment enviro nment in mo
7、 d u lar pro gramming id eas,Co mbinat io ned o f hard ware t o d o t he who le circu it d ebu gging,and u lt imat ed all t he fu nct io ns.The d esign has a small elect ro nic scale,int elligence,accu racy,et c.so t he ent ire syst em is simple,easy t o u se,fu ll-feat u red,high precisio n,has so
8、me pract ical valu e.Key wo rd s:elect ro nic scale;SCM;128*64LCD;Mat rix keybo ardII成都学院学士学位论文(设计)目录绪论.11系统方案设计.41.1 电子秤的设计要求.41.2 系统工作原理.41.3 系统方案选择.51.4 功能模块的分析.61.5 称重传感器的选择.72硬件设计.92.1 AD转换芯片HX7U及其电路.92.2 单片机STC89C52及其电路.112.3 液晶屏电路.132.4 矩阵键盘电路.142.5 声光报警电路.152.6 电源电路.162.7 本章小结.163软件设计.173.1
9、编程语言及软件开发工具选择.173.1.1 编程语言的选择.173.1.2 开发环境的选择.183.2 主程序设计.183.2.1 函数声名.183.2.2 主程序设计思想.193.3 按键处理程序.193.3.1 按键介绍.193.3.2 按键去抖.203.3.3 按键设计.213.4 显示子程序设计.213.4.1 128*64汉字液晶简介.213.4.2 液晶显示子程序设计.223.5 报警子程序设计.223.6 本章小结.234程序调试.244.1 程序编译.244.2 调试过程.28III成都学院学士学位论文(设计)4.3 调试中出现的问题及解决方法.294.4 调试结果.304.5
10、 实物的使用.324.6 本章小结.335总结与心得体会.34附录一电路原理图(详见A3图纸).35附录二主程序.35附录二PCB图.48参考文献.49致谢.50IV成都学院学士学位论文(设计)绪论选题背景与意义电子秤是日常生活中常用的电子衡器,在超市、大中型商场、物流配送中心都得到 了广泛的应用。电子秤在原理和结构上取代了以杠杆平衡为原理的传统机械式称量工 具。电子秤与传统的机械式称量工具相比具有称量精度高、装机体积小、应用范围广、易于操作使用等优点,在工作原理、外形布局、结构和材料上都是全新的计量衡器。电 子秤的设计首先是通过压力感器将采集到的被测物体的重量转换成电压信号。输出的电 压信号
11、一般情况下都很小,需要使用精度较高增益较高的AD芯片HX71 1将其信号放大 并AD转换,转换为数字信号然后送入到主控电路的单片机中进行处理,最后让单片机 来控制显示器,最终将被测量物体的重量显示出来。但是,当前市场上的电子秤产品整体水平都不高,一些小型企业的产品质量差、设 备不全、技术力量薄弱,其产品的开发能力比较缺乏,产品质量一直处于低水平状态。因此,从技术上克服以上许多缺点,有目的性地开发出有实用价值的电子秤系统,改善 当前电子秤系统的不足之处,具有非常现实的意义。电子秤的研究现状及发展趋势近儿年,国内的电子称重系统从最初的机电结合型发展到现在的数字智能型和全电 子型。电子称重技术逐渐从
12、静态称重向动态称重、单参数测量向多参数测量、模拟测量 向数字测量的发展。电子称重系统制造技术及其应用得到了新的发展。国内电子称重技 术基本达到国际上20世纪90年代中期的水平,少数产品的技术已处于国际领先水平。做为重量测量仪器,智能电子秤在各行各业开始显现如下巨大优点:测量准确度高,测 量速度快,易于实时测量和监控,并开始逐渐成为测量领域的主流产品,并取代传统型 的机械杠杆测量称。在国际上,欧美等一些发达国家在电子称重方面有了较高的水平,主要表现在技术 水平、品种和规模等方面。在可靠性和准确度等方面也有了很大的提高。有些公司生产 的高精度电子秤可达到Img,比如梅特勒一托利多公司生产的BBK4
13、系列高精度电子秤。当前,称量速度方面是电子秤需要进一步的研究内容。国外产品的结构和品种任然在创 新,应用范围和技术功能任需不断扩大,主要表现在称重传感器方面。电子秤产品量大面广、种类繁多,其应用领域仍然在不断地扩大。主要表现在从通 成都学院学士学位论文(设计)用的各种电子秤到大型的电子称重系统,从单纯的称重量、计算价格到生产过程检测系 统的一个测量控制单元。从最新的发展情况看来,在电子衡器、电子称重方面以及市场 需求方面,电子衡器总的发展趋势为:小型化、模块化、智能化、集成化;其技术性能 逐渐趋向于高速率、高准确度、高稳定性、高可靠性;其应用性也逐渐趋向于综合性和 组合性4小型化:所谓小型化即
14、体积小、高度低、重量轻一一小薄轻。现在一些商家已经开 始采用方形闭合截面的薄壁型材和重量轻且刚度大的空心波纹铜板,其目的是使电子衡 器的承载器达到小、薄、轻。模块化:电子衡器产生新的规格和品种,其承载器有两种模式可供采用即模块式一 体组合、分体组合。这种模块化的组合有许多优点,如提高了产品的通用性及可靠性,提高了生产的效率,降低了成本。智能化:将电子衡器与计算机组合或则开发称重用的计算机,利用计算机的智能来 增加称重显示控制的功能,使它的原有功能保持不变并增加一些新的功能如:判断、自 诊断、自适应、自组织等。集成化:对于一些品种的电子衡器和某些结构的电子衡器,可以实现把承载器和称 重传感器集成
15、于一体或实现承载器、称重传感器和称重显示控制器集成于一体。综合性:电子衡器产品和电子称重技术已渗透到各种学科以及工业自动控制领域,而且其应用范围也在不断地扩大。而目前的一些商用电子计价秤仅仅只具备一些简单的 功能,如称重、计价、显示、打印等,这些功能远远不能满足人类的需要。现代商业系 统需要实现管理自动化,把称重和管理自动化非常紧密的结合在一起,使称重量、计算 价格、进库、销售和管理一体化。这就需要电子计价秤和电子计价秤通过网络联系在一 起,把称重系统与计算机系统组成一个完整的综合控制系统。组合性:即可以随意设定测量范围;也可以根据不确定的程序修改扩展硬件;输入数 据和输入数据与指令可以使用各
16、种不同的编程语言,并且还能与外部控制设备、数据处 理设备实现通信。本设计的主要工作本文的主要任务是以单片机为核心设计功能完善的电子秤,根据生活中电子秤的基 本功能及单片机系统的开发流程可知,本设计的主要工作为:(1)学习和掌握单片机工作原理、编程方法、系统开发流程;(2)分析电子秤的基本功能,提出总体设计方案;2成都学院学士学位论文(设计)(3)设计系统硬件电路,并对单片机及各模块方案进行分析和选择,用Protel软 件绘制电路原理图;(4)选择适合系统的开发工具,编写系统的应用程序,在开发环境中编译、连接;(5)将编译好的应用程序写入单片机,结合硬件进行总体调试,最终实现电子秤的 主要功能。
17、3成都学院学士学位论文(设计)1系统方案设计电子秤应用系统包括由硬件和软件两个部分。硬件包括单片机、输入设备、输出设 备等部分;软件是各种工作程序的总称。要使系统的性价比得到提高,必须使硬件和软 件协调一致、紧密结合。刚开始设计硬件的时候,就需要考虑相应软件的设计方法,软 件设计是根据硬件原理和系统的功能要求进行的。本章主要工作是确定电子秤系统的总 体结构、工作原理、本设计的要求以及部分器件的选择,硬件设计和软件设计将在后面 的章节分别介绍。1.1 电子秤的设计要求(1)电子秤称重范围:01 0Kg;测量精度5 g;(2)液晶显示:所称物体重量、输入物品单价、金额;(3)当物品重量超过电子秤量
18、程,即过载情况,具有超重报警功能。1.2 系统工作原理电子秤的工作原理如下:当物体放在秤盘上时,压力被施加给传感器,使该传感器 发生形变,从而引起阻抗的变化,进而引起激励电压发生变化,输出一个变化的模拟信 号;该模拟信号经放大电路放大后输出到模数转换器;转换成便于处理的数字信号并输 出至单片机;单片机进行处理、运算后将结果送至显示器进行显示。图1-1系统工作原理4成都学院学士学位论文(设计)1.3 系统方案选择在设计系统时,针对要实现的功能来设计电子秤的方案有以下儿种:方案一:在系统工作原理的基础上进行扩展,增加一键盘输入装置,增加外界对单 片机内部的数据设定,使电子秤实现称重计价的功能。此方
19、案设计的电子秤,可以实现称物计价功能,但是局限于数码管的功能,在显示 时只能显示单价、购物总额以及简单的货物代码等。在显示重量时,如果数码管没有足 够的位数,那么称量物体重量的精度必受到限制,所以此方案需要较多的数码管接入电 路中。这样在处理输入输出接口时需要另行扩展足够多的I/O接口供数码管使用,比较 麻烦。方案二:前端信号处理时,选用放大、A/D转换等措施,尤其在显示方面采用LCD 显示器。这种方案不仅加强了人机交换的能力,而且满足设计要求。可以显示所称量的 物体信息相关内容。运用LCD显示器则大大节省了 I/O 口的运用。鉴于本电子秤设计的功能要求,所以 在具体设计时采用了第二种设计方案
20、。目前单片机技术比较成熟,功能也比较强大,被测信号经放大变换后送入单片机,由单片机对测量的信号进行相应的处理然后根据相应的数据关系把被测物体的重量显 示出来。单片机控制比较适合于功能简单的控制系统,而且具有成本低、功耗低、体积 小、算术运算功能强、技术成熟等优点。但是它也具有一些缺点如外围电路比较复杂、编程复杂。使用这种方案会给系统的设计带来一定难度。图1-2系统实现方案原理图5成都学院学士学位论文(设计)1.4 功能模块的分析图1-3功能模块图称重传感器模块感应重力输出微弱的毫伏级电压信号;A/D转换模块实现将模拟信 号放大并转换成数字信号;单片机作为整个系统控制模块它可反复擦写程序,作为整
21、个 系统核心,处理数字信号;显示模块通过控制器的处理,显示出重量,单价,总价;报 警模块当重量超过量程时,就产生鸣笛声报警;而按键扫描模块是实现设置重量单价等 3 o单片机电子秤设计思路如图4所示。图1-4电子秤设计思路图称重传感器感应被测重力,输出微弱的毫伏级电压信号。该电压信号经过电子秤专 用模拟/数字(A/D)转换器芯片hx71 1对传感器信号进行调理转换。HX71 1采用了海芯 科技集成电路专利技术,是一款专为高精度电子秤而设计的24位A/D转换器芯片,内 6成都学院学士学位论文(设计)置增益控制,精度高,性能稳定。HX71 1芯片通过2线串行方式与单片机通信。单片机 读取被测数据,进
22、行计算转换,再液晶屏上显示出来。矩阵键盘主要用于计算金额。当被测物体重量得到后,用户可以通过矩阵键盘输入 单价,电子秤自动计算总金额并在液晶屏显示。电源系统给单片机、HX71 1电路及传感 器供电。1.5称重传感器的选择传感器是测量机构最重要的部件。称重传感器本身具有单调性,其主要参数指标是 总误差、温度漂移和灵敏度。(1)总误差总误差是输出误差和额定误差相比得到的值。一般电子秤的总误差指标大概不到 0.1%,这一个技术指标十分重要,因为它限制了理想信号调节电路所能达到的精确度的 使用,也决定了该选择哪种ADC的分辨率以及如何设计滤波器和的放大电路。(2)温度漂移称重传感器产生的漂移也与时间相
23、关。(3)灵敏度称重传感器的电灵敏度是满负荷输出电压与激励电压相比得到的值,其典型值是 2.OmV/Vo当传感器的灵敏度是2.OmV/V、激励电压是5.0V时,它的满量程输出电压是 1 0.0 mVo 一般情况下,为了使使用的称重范围位于称重传感器最好的一段线性度,应 该只使用满量程范围的2/3。因此,满量程输出电压大概为6.0 mV。当电子秤被用在工 业环境中时,在6.OmV满量程范围内测量信号的微小变化并非一件容易的事。当前比较常用的传感器有压电式传感器、电容压力传感器、电阻应变式传感器。选 用的时候需要按照稳定性、寿命、精度、安装环境的要求考虑,有以下几种主要特点:(1)压电式压力传感器
24、的稳定性比较好,精度高、灵敏度高、寿命长,但是大量程 的压力传感器还有待进一步地研究。(2)电容式压力传感器稳定性较差,精度较高、灵敏度较高、寿命较短,对环境要 求比较苛刻,不容易长距离地传输。(3)电阻应变式压力传感器稳定性好,精度高、灵敏度高、寿命长,对测量环境的要求也不太严格。7成都学院学士学位论文(设计)综上所述,用于电子秤称重传感器最合适的传感器是电阻应变式压力传感器。电阻 应变式压力传感器的组成材料包括电缆线、电阻应变片、弹性体等,惠更斯电桥作为其 内部线路,当弹性体承受载荷从而产生变形的时候,电阻应变片将受到拉伸或者压缩致 使应变片产生形变,这时它的阻值将发生变化(增大或减小),
25、电桥也因此失去平衡,产生相应的差动信号,供后续电路测量和处理。电阻应变式传感器测量原理如图1-5所 小O图1-5电阻应变式传感器测量原理当垂直正压力P作用于梁上时,梁产生形变,电阻应变片RI、R3受压弯拉伸,阻 值增加;R2、R4受压缩,阻值减小。电桥失去平衡,产生不平衡电压,不平衡电压与作 用在传感器上的载荷P成正比,从而将非电量转化成电量输出“oRI、R2、R3和R4组成惠更斯电桥,将2对电阻应变片的阻值变化转变成输出电压,其工作原理如图1-6所示。图1-6测量电桥原理8成都学院学士学位论文(设计)2硬件设计通过前面一章的介绍我们了解到了电子秤的总体结构,这一章我们主要介绍硬件的 设计。前
26、面我们已经提到硬件包括单片机、输入设备、输出设备等部分,这里我们将分 别对它们的原来及电路进行介绍。2.1 AD转换芯片HX71 1及其电路HX71 1采用了海芯科技集成电路专利技术,是一款专为高精度电子秤而设计的24 位A/D转换器芯片。与同类型其它芯片相比,该芯片集成了包括稳压电源、片内时钟振 荡器以及其它同类型芯片所需要的外围电路,具有以下几种优点:集成度高、响应速度 快、抗干扰性强等。使电子秤的整机成本降低了,性能和可靠性提高了。该芯片不需要对芯片内部的寄存器进行编程,由管脚驱动所有的控制信号,编程 与后端MCU芯片的接口和编程也比较简单。输入选择开关可以随意选择A通道和B 通道,并与
27、它内部低噪声的可编程放大器相连接。A通道的可编程增益是128或64,与其相对应的满额度差分输入信号幅值分别是2 0mV或40mV。B通道为固定的增 益,其值是32,被用作检测系统参数。外部的传感器以及芯片内A/D转换器的电源 可以直接由芯片内的稳压电源提供,不需要再系统板上增加新的模拟电源。芯片内的 时钟振荡器不需要任何外接器件。由于增加了上电自动复位功能,开机时初始化过程 得到了简化。其外部管脚如图2 T所示。S0P-16Lt j 装稳压电路电源VSUP匚1*ZJ DVDD数字电源稳压电路控制输出BASE二2ZJ RATE输出数据速率控制输入模拟电源AVDD匚3二 XI外部时钟或晶振输入稳压
28、电路控制输入TB二4n xo晶振输入模拟地AGND匚5ZJ DOUT串口数据输出参考电源输出VBG匚611二1 PD_SCK蚓电和串口时钟输入通道A负输入端INNA匚710n INPB通道B正输入端通道A正输入端INPA匚89ZJ INNB通道B负输入端图2-1 HX711外部管脚图9成都学院学士学位论文(设计)图2-2为HX71 1芯片应用于计价秤的一个考电路图参。该方案使用内部时钟振荡器(X0),1 0Hz的输出数据速率(RATER)。电源(2.75.5 V)直接取用与MCU芯片相同 的供电电源。通道A与传感器相连,通道B通过片外分压电阻与电池相连,用于检测电 池电压。本课题设计的HX71
29、 1电路如图2-3所示。I 磁珠L?-0.1mVDD10 IO充电电路图2-2 HX711计价秤应用参考电路图Q1S8530E ES-SGNDIU1VSUP BASE AVDDVFBAGNDR28.2kSENSORGNDIDVDD RATEXI XO dout1 61 4VBG PD_SCKINNA 1NPBINPA INNBHX71 1GNDCONNKV图2-3 HX711电路10成都学院学士学位论文(设计)2.2 单片机STC89c52及其电路(1)STC89C5 2单片机概述STC89C5 2系列单片机是由宏晶科技生产的单时钟/机器周期(1 T)的单片机,是新一 代高速率、低功耗、超强抗
30、干扰的8051单片机,它的令代码能完全兼容传统的8051.但速度却快8-1 2倍,内部集成MAX81 0专用的复位电路。(2)STC89C5 2单片机特点 增强型8051 CPU,IT,单时钟/机器周期,指令代码完全兼容传统8051;工作电压:5.5 V-3.5 V(5 V单片机);工作频率的范围:040MHz,相当于普通8051的080MHz;用户应用程序空间4K8K/1 6k/32 K/64K字节;片上集成1280字节RAM;通用I/O 口(32/36个),复位后为准双向口/弱上拉(普通8051传统I/O 口);ISP(在系统可编程)/IAP(在应用可编程),无需专用编程器/仿真器。每个I
31、/O 口驱动能力均可达到2 01 nA,但整个芯片最大不要超过1 2 0mA;可通过串口(P3.0/P3.1)直接下载用户的程序,数秒即可完成一片;有EEPR0M功能;看门狗;内部集成MAX81 0专用的复位电路(外部晶体1 2 M以下时,复位脚可直接1 K电 阻到地);时钟源:外部高精度晶体/时钟,内部R/C振荡器;用户在下载用户程序时,可选择使用内部R/C振荡器或外部晶体/时钟;内部R/C在常温下其振荡器频率为:5.0V单片机为:1 1 MHz1 7MHz;16位的定时器一共有4个,与传统8051相兼容的定时器/计数器有两个,定时 器2 一个也没有,有独立波特率发生器做串行通讯,再加上2路
32、PCA模块可以再 实现2个16位的定时器;外部中断I/O 口 4路,传统的下降沿中断或低电平触发中断,并新增支持上升沿 中断的PCA模块,Power Down模式可由外部中断唤醒;通用全双工异步串行口(UART);工作温度范围:-40+85(工业级)/075 c(商业级);11成都学院学士学位论文(设计)封装:PDIP-40,PLCC-44。(3)STC89C5 2单片机管脚及封装STC89c52单片机有多种封装形式,本设计中选用40DIP封装,其管脚定义如图2-4 所示。T2/P1.0T2 EX.Pl.1RXDTXD I::TO ImTO?1.2P1.3 P1.4 P1.5 P1.6 P1.
33、7RST/P3.0/P3.1P3.2/P3.3P3.4 三,7P3.6F:,:XTAL2 XTAL1 二二nn n mMH,n m l n 0 9 8 7 6 5 4 0 2 10 9 8 7 6 5 4 3 0-1 4 3 3 3 3 3 3 3 3 3 3 2 2 2 2 2 2 2 2 2)DIP4001234 56 78920 19-3456 8911111 1 1 1 1 1 ORBHBHBHSivccPO.0.ADO P0.L ADI?0.2/AD2 PO.3/AD3 PO.4/AD1 PO.5/AD5 PO.6/AD6?0.7/AD7 EA _ALE.PROGPSENP2.7/A
34、1 5 P2.6/A1 1P2.5/Al3 P2.4/Al2?2.3 All P2.2/A1 0P2.1/A9?2.0/A8门奥RD图2-4 STC89c52管脚图本课题设计的电子秤的单片机应用电路如图2-5所示。图中DOUT和PDSCK为单片 机与HX71 1的AD转换电路交换数据的通信线。beep为蜂鸣器报警信号线,alert为报 警灯信号线,RXD和TXD为串口通信线,也可以用于单片机程序的串行ISP下载1 2成都学院学士学位论文(设计)S9C5 1 C5 2UIbeep 1P1.0 vccPl.l(ADO)PO.OPl.2(ADl)PO.lPl.3(AD2)P0.2Pl.4(AD3)P
35、0.3Pl.5(AD4)P0.4Pl.6(AD5)P0.5Pl.7(AD6)P0.6RST(AD7)P0.7P3.0(RXD)EAVPPP3 KTXD)ALE PROGP3.2(INT0)PSENP3.3(INTT)(A1 5)P2.7P3.4(T0)(A1 4)P2.6P3.5(T1)(A1 3)P2.5P3.6(W R)(A1 2)P2.4P3.7(RD)(AU)P2.3XTAL2(A1 0)P2.2XTAL1(A9)P2.1GND(A8)P2.040 1 rralert 239 MeROW 4 338ROW 3 437DOUT 536PDSCK 635SO ZK 734SI ZK 833
36、932RXD 1 031TXD 1 130ROW 2 1 22 9ROW 1 1 32 8 LCD CSCOL1 1 42 7 LCD RESCOL2 1 52 6 LCD RSCOL3 1 62 5 LCD SDACOL4 1 72 4 LCD SCK1 82 3 LEDA1 92 2 CS ZK Il 2 02 1 SCK ZK2 0pF主控电路的设计图2-5 STC89c52单片机电路2.3液晶屏电路U3 JLX12864GN-lI工 9一 Inollwux Mos工ux S3IWN Stepover(F 1 0)Stop Running(esc)等调试命令对程序进行调试,。4.3 调试
37、中出现的问题及解决方法(1)刚开始用C语言编写代码时,出现很多小错误。比如变量还没定义就直接使 用了;书写不规范,不该用分号的地方用了,括号不配对等;没有注意大小写的区别。这些都是根据提示找到出错的语句直接改正就好了。(2)在程序写完一条语句时忘了加分号。Build target Target 1 assembling STARTUP.A5 1.coniling main.c.HX71 1.H(8):error C1 41:syntax error near sbit,expected;compiling piling hx71 1.c.HX71 1.H(8):error C1 41:synt
38、ax error near sbit1,expected 1;compiling keyboard.c.Target not created(3)函数在使用之前忘了先申明。Build target Target 1,assembling STARTUP.A51.coniling main.c.MAIN.C(90):warning C206:display_GB2312_string:missing function-prototypeMAIN.C(90):error C267:display_GB2312_string:requires ANSI-style prototype conilin
39、g led.c.coniling hx711.c.con)iling keyboard.c.Target not created当然还有其他一些错误出现在编程的过程当中,有些错误还具有重复性,只有不断 调试找出问题关键改正,再调试,最后才会达到自己想要的结果。29成都学院学士学位论文(设计)4.4调试结果4-9整体实物图当称重传感器上没有放任何重物时,电子秤的调试结果如图4-1 0所示:30成都学院学士学位论文(设计)图4-10无重物时结果显示当称重传感器上放有重物时调试结果如图4-11和4-12所示:图4-11有重物时结果显示31成都学院学士学位论文(设计)图4-12有重物时结果显示4.5
40、实物的使用1键盘操作说明4*4矩阵键盘定义如下78910(清 0)45611(删除)12312(未定义)14(未定义)01 5(.)13(确定价格)其中:键09为数字键,用于单价设定。键15为小数点,也用于单价设定。键10 为清零键,每次测量之前,请先按清。键,以使重量和价格回零。键11为删除键,逐 位删除敲错的单价。键13为单价确定键,按下该键则设定的单价有效,开始计算总价。2常用使用步骤:打开电源,屏幕显示电子秤初始化成功,此时重量和单价为0,金额为空;通过数字键和小数点键键入单价,完成后按下单价确定键。在支架上放上待称重物体,液晶屏显示重量(单位为kg),单价(单位为元)和 32成都学院
41、学士学位论文(设计)总金额(单位为元)。称重量程为0-1 0kg,单价设定范围为0.01元9999.99元,总金额显示范围为0 元9999.99元。超过量程声光报警。4.6 本章小结本章结合软硬件对整个系统进行了整体调试。首先将编写的应用程序在Keil Vision4进行编译,发现并改正了程序错误,将编译成功后生成的HEX文件写入单片 机,得出了完整的调试结果,结果表明设计方法正确,测量准确,实现了预期功能。33成都学院学士学位论文(设计)5总结与心得体会本设计的研究课题为电子秤的设计,要求在学习并掌握单片机的工作原理、编程方 法及系统设计的前提下分析电子秤的工作原理、基本功能,最后编写软件程
42、序连接硬件 电路来实现功能。电子秤基本功能包括显示和调节,需要单价、质量、总价的正确显示 和单价大小调整功能。系统以STC89c5 2 RC单片机为控制芯片,显示模块用1 2 8*64汉字 液晶显示器显示实现,调节单价模块采用4*4矩阵按键的方式。设计以结构性、可读性、功能性强的C语言作为编程语言,在Keil uVision开发环境下编写应用程序,采用模 块化编程思想,结合硬件电路作整体调试,最终实现电子秤的基本功能。作为单片机初学者,通过这次实践,了解了电子秤的用途及工作原理,熟悉了用KEIL 编程、PROTEL软件的使用等,不仅锻炼了工程设计实践能力,也培养了独立设计能力。巩固了所学知识,
43、掌握单片机工作原理,熟习硬件、软件系统设计的过程,锻炼动手能 力、查阅资料能力、综合运用知识的能力,以及培养团队合作的精神,为今后工作打下 了 一定的基础。但是此次毕业设计也暴露出自己专业基础的很多不足之处,比如缺乏综合应用专业 知识的能力,对材料的不了解,缺乏对与专业相关知识的了解,遇困难容易烦躁,没耐 心,实际动手能力差等。事实上,作为一个单片机初学者应该把数据传输、外部数据中 断、存储器扩展等基本操作熟练掌握等等。此次设计中主要精力集中在软件设计上,在 硬件电路原理图与印刷电路图的研究还不够熟练、透彻。因此今后应该多找儿个例题稍 作练习。34成都学院学士学位论文(设计)附录一 电路原理图
44、(详见A3图纸)附录二主程序#inclu d e#inclu d e#inclu d e inclu d e Icd.h#inclu d e hx711.h#inclu d e keybo ard.h定义量程系数#d efine RATIO 1572/1000/1574/1000/2114/1623定义标识vo lat ile bit FlagTest=0;定时测试标志,每0.5秒置位,测完清0vo lat ile bit FlagKeyPress=0;/有键按下标志,处理完毕清0vo lat ile bit FlagSet Price=0;/价格设置状态标志,设置好为1。管脚定义sbit L
45、ed A=P2A2;sbit beep=PlA0;sbit alert=P1A1;显示用变量int Co u nt er;u char id at a st rl6=000000;int i,iTemp;称重用变量u nsigned lo ng id at a Fu llScale;/满量程 AD 值/1000u nsigned lo ng Ad Vai;/AD 采样值u nsigned lo ng weight;重量值,单位 g35成都学院学士学位论文(设计)u nsigned lo ng id at a price;单价,长整型值,单位为分u nsigned lo ng id at a m
46、o ney;总价,长整型值,单位为分键盘处理变量u char keyco d e;u char Do t Po s;函数声明vo id int 2st r(int,char*);vo id Dat a_Init();vo id Po rt _Init();vo id TimerO_Init();vo id TimerOJSR();vo id INTl_Init();vo id KeyPress(u char);vo id To _Zero();vo id Display_Price();vo id Display_Weight();vo id Display_Mo ney();小数点标志及位置
47、整型转字符串的函数,转换范围0-65536vo id int 2st r(int x,char*st r)(int i=l;int t mp=10;while(x/t mp!=0)i+;t mp*=10;t mp=x;st ri=O;while(il)36成都学院学士学位论文(设计)st r-i=0+(t mp%10);t mp/=10;)st rO=t mp+O;重新找回零点,每次测量前调用vo id To _Zero()(Fu llScale=Read Co u nt()/l 000;price=0;)显示单价,单位为元,四位整数,两位小数vo id Display_Price()(u n
48、signed int i,j;d isplay_GB2312_st ring(5,44,);i=price/100;/得到整数部分j=price-i*100;得到小数部分int 2st r(i,st rl);/显示整数部分if(i=1000)(d isplay_GB2312_st ring(5,44,st rl);)else if(i=100)(d isplay_GB2312_st ring(5,52,st rl);else if(i=10)37成都学院学士学位论文(设计)d isplay_GB 2312_st ring(5,60,st rl);else(d isplay_GB2312_st
49、ring(5,68,st rl);显示小数点d isplay_GB2312_st ring(5,76,.);/显示小数部分int 2st r(j,st rl);if(j=10)(d isplay_GB2312_st ring(3,60,st rl);else(d isplay_GB2312_st ring(3,68,st rl);d isplay_GB2312_st ring(3,76,.);int 2st r(j,st rl);if(j10)(d isplay_GB2312_st ring(3,84,00);d isplay_GB2312_st ring(3,l 00,st r 1);)el
50、se if(j999999)超出显示量程(d isplay_GB2312_st ring(7,44,-);ret u rn;i=mo ney/100;得到整数部分j=mo ney-i*100;得到小数部分int 2st r(i,st rl);显示整数部分if(i=1000)(d isplay_GB2312_st ring(7,44,st rl);)else if(i=100)(d isplay_GB2312_st ring(7,52,st rl);)else if(i=10)(d isplay_GB2312_st ring(7,60,st rl);)else(d isplay_GB2312_s