基于单片机的语音报价电子称的设计.doc
西北民族大学本科毕业设计(论文)西北民族大学2011级毕业设计(论文)基于单片机的语音报价电子称的设计年 级: 2011级 学 号: 姓 名: 专 业: 电气工程及其自动化 指导老师: 二零一五年六月第IV页 共44页西北民族大学本科毕业设计(论文)摘 要本文设计的内容是一款基于单片机的语音报价电子秤,语音报价是本设计的一个特色,语音报价能够实现播报总价和总量的功能,本设计的总体功能是实现物体重量的测量,在显示屏上显示并进行语音播报,它是用压力传感器采集压力这种物理量并把采集到的数据转换成电压信号,再采用专门的用在称重领域的24位AD转换器HX711把电压信号经过滤波、放大、采样转换成数字信号的称重计量装置,当秤台上不放置任何物体时可以按下清零键来清零,即初始化。除了这些功能之外还可以通过矩阵键盘来设置单价,用单价乘以总量便可以计算得出货物的总价,并将总重量和总价的数据发送给液晶屏LCD1602上进行显示,该系统除了上述功能之外还可以对当前的总重量和总价格进行语音播报。关键词:单片机; 语音播报; 模数转换模块HX711; 压力传感器AbstractThis paper introduced a design of a voice electronic scale based on the micro controller.voice offer is a feature of this paper that can broadcast the total weight and total price.The basic function of this paper is to achieve weight and displayed on the LCD screen ,in addition to broadcast total price and total weight .which converted the weight into a voltage signal by a pressure sensor, and then converted the voltage signal into digital signal by 24 bit AD converter HX711.When there is no object on the weighing platform,press the clear button to reset the current weight.In addition,users can also set up the price of per kilogram through button.After putting on the object,the weight can be measured, and total price could be converted automatically in a way of the weight is multiplied by the unit price and displayed on the LCD1602 screen, the system can also broadcast the current total weight and total price.Key Words:Single chip microcomputer ; Voice broadcast ; AD analog-to-digital converter HX711; Pressure sensor目 录摘 要IIAbstractIII第一章 绪论11.1 目的和意义11.2 研究概况及发展趋势21.3 本设计主要内容31.6 本章小结3第二章 总体方案选型与设计42.1 主控模块的选型42.2 显示模块的选型42.3 模数转换模块的选型52.4 语音播报模块的选型52.5 系统整体设计概述52.6 本章小结6第三章 系统硬件电路设计73.1 主控模块73.1.1 单片机STC89C52主要特性73.1.2 单片机STC89C52的中断系统93.1.3 单片机最小系统设计93.2 液晶显示器LCD简介103.2.1 液晶原理介绍103.2.2 液晶模块简介113.2.3 液晶显示部分与STC89C52的接口113.3 矩阵键盘模块设计123.4 称重模块的设计133.5 信号采集模块设计143.5.1 模数转换模块HX711芯片介绍143.5.2 模数转换模块HX711电路的设计153.6 语音模块设计153.7 本章小结16第四章 系统软件设计174.1 系统软件总体设计174.2 程序设计原理184.3 本章小结19第五章 系统调试及结果分析205.1 硬件调试205.2 软件调试205.3 结果分析215.4 本章小结21结 论22致 谢23附 录 1 系统原理图25附 录 2 元件清单26附 录 3 程序清单27西北民族大学本科毕业设计(论文)第一章 绪论本章将阐述本设计的研究目的意义及研究概况和发展趋势,提出研究方法,同时也将介绍本设计要求实现的功能以及本设计着重实现的部分,简明的介绍了本设计的实现原理。1.1 目的和意义电子称是现代社会生活中人们用来称重计量并进行显示的计量仪器,电子称的应用极其的广泛,可以说现代人们的生活根本离不开它。它可以被用在工农业生产、科学研究计量、国防科技建设、交通管制、国内外销售贸易等各个领域,与人民的生活息息相关,是各个领域中不可缺少的计量工具1。因此,一款精密的计量工具电子秤就应用而生了。衡器制造技术发展水平的好坏,关乎着人民现代化生活水平的高低和社会经济效益的好坏。一款现代化的高精度的电子秤能有效的推进工业生产过程的高度自动化和管理的现代化与智能化,从而节省大量的劳动力、缩短工作时间、提高工作效率、优化操作条件、降低能源消耗、节省原材料。在大多数应用的现代企业中已经取得了显著的经济效益。电子秤是称重技术中的新生宠儿,是一种高精度的称重仪器,能适用各种各样用到计量的场合,适用各种人群2。现代电子秤与传统的机械秤相比较有很多优势。例如现代电子称它的结构不再像传统的机械式那样复杂,体积也比机械式小,重量也较机械式大大的减轻了。不仅如此,现代的电子称实用价值很强,而且售价普遍低廉,维护也比以前变得简单多了,适合在野外等多种环境下工作,如果测量地点离工作地点比较远,还可以实现重量信号的远距离传输,很容易的就解决了工作条件艰苦的问题。从世界水平看,在衡器被发明以来它的一些技术已经经历了四个阶段,从那些最早被发明的整个零部件都完完全全是机械式的杆秤为主到后来的一部分组件被现代的电子器件所代替的半机械式半电子式的机电结合秤,再从广泛采用IC式的电子秤到目前被大范围应用的由单片机为主要零部件构成的电子计价秤。我国衡器的发展一般来讲大概经历了三个变革时期,从最初原始的杆秤型发展到中期的机电结合型,再发展到如今的数字智能化型和高度集成电子型。称重的技术从最初的静态称重一步步过渡到现在的动态称重;计量的方法也从最初的模拟量的测量渐渐过渡到如今的数字量的测量;测量特点从最简单的单参数测量发展到现在的能够实现多参数的测量。许许多多的传统的机械式测量仪器仪表和工业当中用来控制的控制装置以一种很快的速度正在被更先进的多功能智能化的仪器所取代,使得传统的机械测量仪器在远距离数据传输作业、产品功能的实用性多样性、称量的准确性可靠性及称量自动化等方面发生了翻天覆地的变化。各种各样的用在控制系统的智能仪器也随着这门技术的不断成熟相继出现了。电子称重功能的实现首先用压力传感器采集被测物体的重量,将重量这种物理量转换为电压信号3。压力传感器输出的电压信号通常情况下都比较小,并且所采集到的信号当中干扰信号也比较复杂,因此这就需要用前端的信号处理电路来进行精确的线性放大,滤波等一系列的预备工作。在经过放大滤波处理后的信号还是连续的模拟量,需要经过模数转换电路按照采样定律进行采样转换成一系列不连续的数字量,并送给由单片机STC89C52控制的主控电路进行运算储存等一系列迅速而又复杂的处理,在这里单片机的响应速度就凸显了出来,变的尤为重要。单片机处理完成的最终数据就送给液晶显示模块LCD1602显示总价和总量。这样物体的重量就被“显示”出来了,总价就被“播报”出来了。从实现本设计的功能来看,系统可以被分为三大主要模块,数据处理模块、控制器模块、人机交互液晶显示界面模块。详细分可以分为8大模块,数据采集模块、信号处理模块,模数转换模块、液晶显示模块、扬声器模块、单片机控制模块、语音模块和矩阵键盘模块。其中数据处理模块是本设计的前端部分占有很重要的位置,这部分由进行重力“感应”的压力传感器、对信号进行预处理和A/D转换的HX711模块组成。在前面HX711完成模拟量和数字量的转换后大量的不连续的数字信号就送给单片机去处理了,单片机控制系统的控制器驱动液晶显示模块完成人机间的信息交换。此部分软件的设计是一个大难题,是整个系统功能实现的基石。系统的大部分功能实现都需要用软件来支撑。在扩展功能上,本设计增加了一个语音报价功能,采用了NY3P035语音芯片。1.2 研究概况及发展趋势从衡器技术被发明以来,我国的称重系统从最初原始的杆秤型发展到中期的机电结合型,再发展到如今的数字智能化型和高度集成的电子型。称重的技术从最初的静态称重一步步过渡到现在的动态称重,计量的方法也从最初的模拟量的测量渐渐过渡到如今的数字量的测量,测量特点从最简单的单参数测量发展到现在的能够实现多参数的测量4。这些年来我国的衡器技术已经得到了充分快速的发展。一部分技术已接近国际领先水平。国际电子秤领域中,一些发达国家不论是在技术水平、品种还是制造规模等方面都达到了一个较高的水准。特别是在称量的准确度和产品可靠性等方面做的很出色。在研究方法上,本设计采用了具有较高精度的STC89C52单片机为核心硬件,结合所设计的软件进行数据的运算处理。当被测的重物放在秤台上时,电阻应变计的构件在感应到压力后表面会产生微小的形变,使得应变计的敏感栅也随着构件的形变而变形,这样应变计的电阻就会发生变化,其变化率和安装应变计处构件的应变系数成比例,测出电阻的变化,通过惠普斯通电桥公式进行计算,就可以算出电压的变化,再经过对信号一系列放大处理,送给HX711进行A/D转换,然后从矩阵键盘输入单价,交给CPU进行运算处理,通过LCD1602显示最终的金额和数量,然后语音模块调取相应的数据进行播报。其中压力传感器在本设计中采用电阻应变片式压力传感器,由于这种类型的应变片本身的体积比较小、价格低廉,并且市场上有多种不同的规格可供选择,因此可以针对弹性敏感元件形式的不同与种类的多样性,进行灵活的设计来满足不同应用场合下的需求,正是由于这些特点使得应变片式压力传感器被广泛的应用到了各个领域当中。不过电阻应变片式压力传感器也有一个固有缺陷,就是应变片的灵敏度随应变片本身电阻温度的变化而变化。应变片的输出信号很小、输出零点漂移很明显。并且线性度也不好,而且动态响应的能力也较差,这些缺点有待进一步解决。1.3 本设计主要内容本设计的主要内容是设计一款基于单片机的能够进行语音报价的电子称。用来实现以下几种功能:(1)矩阵键盘扫描,通过单片机与软件算法的结合来检测来哪个键被按下了,然后执行相应键位的功能。(2)设计一个重量测量电路,通过压力传感器把重量值转换成电压值,再通过AD转换器转换成数字信号。(3)通过特定的按键来设置价格。(4)本设计的特色是在称量出结果后语音播报出当前的总重量和总价格。1.6 本章小结本章介绍了本设计的研究意义、研究目的、背景和本系统主要实现的功能等几个部分。通过研究背景了解语音报价电子秤的现状以及进行本设计的研究目的。通过了解研究概况及发展趋势准确掌握语音电子秤以后的发展方向。本设计的主要内容部分介绍了设计所实现的功能。第二章 总体方案选型与设计根据本设计所要实现的功能来划分,系统总共由下面几大模块组成:主控模块、显示模块、AD采样模块、语音报价模块,下面本设计针对芯片的选型来进行具体方案的论证。2.1 主控模块的选型方案一:选用MSP430单片机,该单片机是一种16位超低功耗、精简RSC(精简指令集)混合信号处理型的单片机,这种单片机的内部集成了许多数字电路、模拟电路以及微处理器,具有很强大的功能5。但是该芯片的价格一直较高,因此不适合一般的设计开发,不适合用来练习。方案二:选用51系列的单片机,这种类型的单片机具有可靠性高,售价低廉,性能高等优点,并且它的数据都进行了加密,破解基本不可能6。是一款具有32个IO口8位单片机,STC系列的还可以进行在线编程,很方便初学者一边编程一边练习。经过以上方案的仔细对比,结合此次设计的实际情况最终确定选用方案二。2.2 显示模块的选型方案一:选用点阵式数码管做显示模块,数码管是种可以发光的半导体器件,其基本组成单元为发光二极管,八排八列的发光二极管方阵就组成了点阵式数码管,点阵式数码管可以很方便的显示文字,但是如果用来显示数字就变成了一种浪费,并且这种数码管价格相对较高,有一个很大的不足是恒流驱动与非恒流驱动对数码管均有影响,综合上述缺点不宜采用此种方案7。方案二:选用LED数码管动态扫描,LED数码管显示数字较合适,但是这种数码管需要借助74LS164移位寄存器进行移位,这样会使本设计变得比较麻烦,所以也放弃了这个方案。方案三:选用LCD液晶显示屏,LCD显示功能强悍,能显示较多文字,图形也可以显示,并且显示类型多样,清晰度高,价格便宜,适合初学者练习使用。所以权衡以上几个方案中不同方案的优缺点,最终决定选用方案三中的LCD1602液显示屏作为本设计的显示模块。2.3 模数转换模块的选型方案一:ADC0809作为一种传统的8分辨率CMOS工艺的模数转换器其内部一个8位的多路开关是它的特点8。本设计用不到多路开关,AD转换精度也不符合本设计要求,因此不选用。方案二:选用HX711进行AD转换,HX711具有很高的转换精度。较快的响应速度和高抗干扰性有利于电子称的整体性能和工作可靠性9。集成度较高从而降低了焊接难度,节省空间。上述方案各有利弊,但是结合本设计的实际情况从整体出发,确定选用方案二。2.4 语音播报模块的选型方案一:语音芯片ISD1760是ISD公司研究开发的一款最新的高质量语音录制播放的芯片,录放次数多,可达十万次,具有两种控制录音方式,同时也具有两种放音输出方式10。能处理的信息段也较多,但是其价格较高,本设计要在能完成基本功能的前提下,尽量降低设计成本,所以不选用此种方案。方案二:这里选用了集成的语音芯片NY3P035,本款芯片共有3个IO口,其工作电压范围为2.25.5V,功耗低,工作可靠稳定,可配置816欧姆范围内的任意喇叭,发出清晰的声音。适用范围宽广,该芯片内部含有一个ROM指令表,储存了0-9和一些常用的字符等32段语音片段,可以任意调用和组合。当需要播放价格时,只需要向语音芯片发送相应语音片段的脉冲信号,该芯片根据单片机发出的序列脉冲信号来查找相对应ROM的地址,调取储存的语音片段来播报价格。2.5 系统整体设计概述本设计的系统结构框图如下,系统结构图表明了构成一个设计的主要组成部分之间数据的流向及相互之间的协调关系。图2-1系统结构框图从上图可知本系统由单片机模块、液晶显示模块、AD转换模块、信号放大模块、压力传感器模块、矩阵键盘模块、语音模块和扬声器所组成11。本设计用来实现以下功能。本设计通过差分电桥,将放在秤台上的被测物体的重量转换成差分电压,再利用HX711通过采样定律把差分电压转换成不连续的数字信号再传输到做为中央控制系统的单片机,单片机经过处理储存运算。通过矩阵键盘来设置单价,用单价乘以总量便可以计算得出货物的总价,并将总重量和总价的数据发送给液晶屏LCD1602上进行显示,该系统除了上述功能之外还可以对所显示的数据进行语音播报,数据可以是显示屏上显示的任意数据,只要不超出称重范围,均可以进行称量报价。2.6 本章小结本章主要进行了总体方案的选型,通过比较不同类型的产品,根据具体需要最终确定了各模块所采用的芯片。系统整体概述部分给出了本设计的系统结构框图,系统结构框图是本设计的主线,指导本设计各个环节的进行。第三章 系统硬件电路设计本部分是硬件电路设计部分,主要包括了单片机主控电路部分、液晶显示部分、矩阵键盘部分、数模转换部分和本设计的特色语音模块部分。下面将详细介绍各个芯片的参数和它的一些特性。3.1 主控模块主控模块是本设计的重中之重,在整个系统中起着统筹协调各个模块之间的工作的作用,需要检测键盘,液晶显示也靠它来驱动。在本设计中经过一番论证比较之后最终决定选用STC89C52单片机来做主控芯片。最初由Intel公司开发设计了51系列单片机,后来Intel公司把这门技术卖给了几家比较大的电子生产厂商,所以现在市面上的大多数单片机虽然各有不同,但都是以51系列为内核的。因此这些公司生产的单片机互相之间都能够兼容51指令,除内核外的其它一些功能各个生产厂家略有不同。但总体来讲51系列的兼容性很强。STC89C52单片机的基本结构构成图如下图3-1所示。图3-1 STC89C52单片机结构构成图 3.1.1 单片机STC89C52主要特性单片机是一个设计的核心,是主控模块,起着协调各模块之间工作的作用,下面是本设计所采用的单片机STC89C52的一些参数介绍。(1)一个8位的微处理器(CPU)。(2)片内数据寄存器RAM(128B),即SFR,是一个用来存放计算过程中产生的各种可以读写数据的容器。(3)四个可以双向使用即既可以做输入口也可以做输出口的8位并行I/O接口P0-P3。(4)两个定时器/计数器,每个定时器/计数器既可以在对外部事件进行统计计数时设置成计数模式,也可以在被用来定时的时候设置成定时模式,在需要时还可以根据以上结果实现对计算机的控制12。(5)五个中断源的中断控制系统。如今有的单片机已经发展到九个中断源了。芯片引脚图如下图3-2所示图3-2 STC89C52单片机引脚图部分引脚说明:(1)时钟电路引脚XTAL1 和XTAL2:XTAL1(19脚):19脚被接在微调电容和外部晶体的一端;值得注意的是在外部时钟模式下XTAL1必须可靠的与大地相连接。XTAL2(18脚):被接在微调电容和外部晶体的另一端;振荡电路有一个固有的振荡频率,实际上就是晶体的固有振荡频率。该引脚输入脉冲为外部时钟脉冲时一般用来接外部时钟电路。一般情况下需要检查振荡电路是否是在正常工作模式下,办法是用示波器查看XTAL2端是否有脉冲信号输出。(2)控制信号引脚RSTRST/VPP(9脚):RST是高电平有效的复位信号的输入端。根据这个特点可以做输入端保持备用电源的输入端。一旦主电源VCC不能正常工作电平比规定值低,若想回归正常时,在此引脚上触发两个机器周期的高电平就可以了。(3) 输入/输出端口P0、P1、P2口各文献均有详细的描述,在这里就不再累述。下面着重介绍P3口,P3口的特点是它的每个口都有第二功能,详细介绍如下。P3.0:(RXD)串行数据接收。P3.1:(RXD)串行数据发送。P3.2:(INT0#)外部中断0输入。P3.3:(INT1#)外部中断1输入。P3.4:(T0)定时/计数器0的外部计数输入。P3.5:(T1)定时/计数器1的外部计数输入。P3.6:(WR#)外部数据存储器写选通。P3.7:(RD#)外部数据存储器读选通。3.1.2 单片机STC89C52的中断系统STC89C52有两个优先级。CPU是否做出响应中断请求的决定是由片内SFR中的中断允许寄存器IE控制的;由中断优先级寄存器IP安排各中断源的优先级;当处在同一个优先级上的多个不同的中断源挤在同一时间内发出中断请求的情况下,中断请求的响应顺序就是一个问题,但这对于STC89C52来说是比较容易处理的,就交给其内部的查询逻辑来决定哪个中断请求先来处理。在包含有单片机的系统中,常常对时间的控制会有一些特殊的要求。比如要求单片机在某一段时间内去输出,有些情况下还需要按一定时间去检测一些数据,按一定的时间去扫描等。也常常用来对外部事件进行统计计数。T0和T1就是实现上述具体功能的。3.1.3 单片机最小系统设计图3-3为单片机最小系统电路图。本设计的时间基于12MHZ的时钟电路提供的的晶振时钟,通常执行完一条基本指令所需要的时间被称之为一个机器周期。在本设计中的复位电路中,按下复位按键之后便可以使单片机回到刚上电的起始状态,即初始化。图中P0口还需要外接1个10K的上拉电阻,这是因为P0口的结构比较特殊是漏极开路的只有加上拉电阻才能正常工作。图3-3 单片机最小系统电路图3.2 液晶显示器LCD简介在本设计中,由于考虑了设计的本身需求以及设计成本,因此选用了LCD1602做显示屏幕。3.2.1 液晶原理介绍Liquid Crystal Display就是通常所说的液晶显示器(LCD)的英文全称,其基本原理是通过控制液晶材料的透光性来实现对色彩的控制13。在正常情况下色彩不会发生改变,也就意味着液晶同样保持不变,这样刷新率带来的麻烦就被无形的解决了。LCD显示器和CRT显示器相比有很多优点,比如LCD的辐射值近乎为零,控制过程功耗很低,因此发热也很小,还有一个就是在解码之后图像还原很逼真。字符的显示也显得很锐利。屏幕上的每一个显示单元和显示区的每一个显示RAM的1024个字节相对应,每一个字节中所保存的数据对应着屏幕上相应位置的亮和暗,通过内带字符发生器的控制器来找到所需要点亮的字符在屏幕上的位置,将需要点亮的位置置为“1”,将不需要点亮的位置置为“0”,这样通过很多个这样的“1”和“0”,某个字符就会被点亮了。3.2.2 液晶模块简介LCD1602液晶模块采用了独特的HD44780内部字符发生器控制器,hd44780内部具有功能丰富且易懂的指令集,可以让字符以闪烁的方式显示,也可以让字符用移动的方式显示。LCD1602与单片机接口的通讯方式为并行传输,有4位并行传输和8位并行传输两种。液晶模块LCD1602的引脚图如下图3-4所示。图3-4 LCD1602引脚图液晶寄存器选择控制如表3-1。表3-1寄存器选择控制RSR/W操作说明00将数据写入指令寄存器(清除屏等)01读busy flag(DB7),以及读取位址计数器(DB0DB6)值10写入数据寄存器(显示各字型等)11从数据寄存器读取数据3.2.3 液晶显示部分与STC89C52的接口如图3-5所示。用STC89C52的P0口作为数据线,用P1.2、P1.1、P1.0分别作为LCD的R/W、EN、RS。本模块设计需要注意的几个方面是:显示模块LCD1602的初始化;在显示之前,所要做的准备工作就是清屏,也就是将重量的初始值设为零。接着再将接口数据位设置为8位,显示行数需要两行,因此将行数设置为2。每一个字由5×7的点阵组成,再将所要显示的字符设置成整体显示,取消光标和字体闪烁,最后设置为正向增量方式且不移位。向LCD的显示缓冲区中送字符,程序中采用2个字符数组,首先取一个要显示的字符或数据送到LCD1602的显示缓冲区中,在程序延时2.5ms之后判断缓存中的数据是否达到了显示器的要求个数,若达不到所要求的个数就把地址再加一取下一个要显示的字符或数据。直到达到所要求的个数为止。图3-5 LCD1602与STC89C52的接口电路图3.3 矩阵键盘模块设计在键盘中按键数量较多时,为了充分利用有限的资源减少对I/O口的占用,通常将按键排布置成矩阵形式。在矩阵式键盘中,每条水平线的线和垂直的线不是直接进行联通的,而是在交线处加一个按钮,当按下按钮时,两条线就被连接起来了。这样做不仅使得所要用到的按键的个数大大减少了,而且还节省了空间美观大方。由于矩阵键盘布线的特殊性,结构也较直线布线法复杂,因此这里将行线所接的单片机的I/O口作为输出端。如果矩阵键盘中有键被按下,则输入线的电平就变为低电平了,这样一个个检测下来,通过读取输入线电平状态的高低就可以知道否有键被按下了。键盘模块电路图如图3-6所示。图3-6键盘模块与STC89C52接口电路图3.4 称重模块的设计称重模块是本设计的前端部分,在本设中采用了应变效应较好恢复能力较强精度比较高的电阻应变片压变式传感器,它是一种利用电阻应变片的压变效应将被测物体所受地球的重力这种力学量转换为电信号的结构型传感器。可以单独作为传感器使用,还可以和具有弹性的弹性元件相结合构成力学量的传感器14。应变片在受到被测物体的重力挤压以后产生人眼观察不到的微小形变,但这种微小的形变可以改变压变片的电阻,这种量通常是很微小的需要经过进一步的转换处理,这种技术就叫压变效应。这个过程中的量一般都比较小不宜拿来直接处理,还需要把它用经过转化电路即测量电桥转化成电流或电压。图3-7为一直流供电的平衡电阻电桥,接直流电源E。图3-7传感器内部连接图上图被称为电桥,输出端为无穷大时,只有电压输出当忽略电源的内阻时,由分压原理有: (2.1)当满足条件时,即电桥平衡。若电桥各臂均有相应的电阻增量,和,则由式(2.1)得 (2.2)而在实际中往往采用等臂电桥,也就是说,此时公式(2.2)可改写为 (2.3)当时,略去上式中的高阶微分量 (2.4)且,所以式(2.4)可以化简为 (2.5) 其中表示电桥电阻在受到应力之后相对应的变化量。3.5 信号采集模块设计3.5.1 模数转换模块HX711芯片介绍模数转换模块HX711是制作一款高精度的电子称首选的模数转换芯片之一。所以和其它同类型的芯片相比较该芯片的特点是具有很高的集成度,响应速度较同类型一般芯片快的多,它的抗干扰性能也比其它同类型的芯片好。正是由于具有了以上其它芯片所不具有的特点,使得在本设计的方案论证中选用了本芯片,这样可以降低制造成本并提高整机的综合性能和工作可靠性。芯片管脚图如图3-8所示。图3-8 HX711引脚图3.5.2 模数转换模块HX711电路的设计因为在本设计中采集单通道的重量值就可以了,所以统一把信号接到A通道端,由于采集进来的差分信号电压值还很小,因此HX711工作在增益为128倍的放大倍数,HX711在本设计中的应用电路如图3-9所示。图3-9 HX711与STC89C52的接口电路图3.6 语音模块设计本设计采用KY3P035作为语音模块的芯片,NY3P035芯片是一款标准的PWM输出OTP语音芯片,共有3个IO口,其工作电压范围为2.25.5V,功耗低,工作可靠稳定,可配置816欧姆范围内的任意喇叭,发出清晰的声音。适用范围广,该芯片内部含有一个ROM指令表,储存了0-9和一些常用的字符等32段语音片段,可以任意组合和调用。当需要播报价格时,只需要向语音芯片发送相应片段的语音脉冲信号,该芯片根据单片机发出的序列脉冲信号来查找相应的ROM的地址,调取相应的语音片段来播报价格15。模拟串行工作时各IO的作用:BUSY:能表示芯片是否处于工作状态下,低电平的情况下,就表示芯片正处于工作状态,高电平的情况下就表示不工作。DATA:此引脚被用来检测接收语音信号是否播放的控制脉冲,一旦发来控制脉冲,此引脚通过收到的脉冲数迅速辨别是哪个地址的脉冲,然后就调用相应的语音片段播报。语音芯片与单片机的连接电路如下图3-10所示。图3-10 NY3P035与STC89C52的接口电路图3.7 本章小结本章介绍了系统硬件电路设计部分以及各模块的工作原理,着重介绍了各模块所用到的一些芯片的主要参数,通过图片的形式给出了各模块与主控单片机之间的连接。第四章 系统软件设计这一部分将说明系统的软件设计环节,画出主流程图并分析程序设计原理,系统软件的设计环节是一个很重要的部分,此部分工作的进行需要认真仔细,要有清晰的思路与严密的逻辑,分清主次关系,理清前后顺序。4.1 系统软件总体设计下面是本设计的主流程图,主流程图是完成一个设计的指导,总领整个设计。图4-1主程序流程图本设计的主程序流程图如图4-1所示,单片机在上电之后紧接着就需要进行初始化,单片机在工作之前,先要对是否按下清零键进行一次检测,如果检测到清零键已经被按下了,就将重量的初始值置为零。接下来判断价格设置键是否被按下了,如果检测到价格设置键被按下了就进入下面的AD转换子程序,接下来的工作就是把上面所得到的数据交给数据处理程序进行处理,处理完成之后就进行显示和语音播报。图4-2 LCD1602初始化子函数流程图初始化子函数流程图如图4-2所示,首先完成对液晶自定义字库的调用设置DDRAM的地址后在第一行显示,根据显示数据的首地址来决定循环量的大小,在循环过程中不断的取字符代码直到终止,第二行的显示原理及过程和第一行一样,当两行都显示完毕之后就结束子程序。4.2 程序设计原理在硬件电路搭建起来以后,程序的设计就成了重中之重,一个设计能否顺利的实现预期的功能,不仅仅取决于硬件电路的搭建,程序出一点点问题也是不行的。程序是这个设计的“血液”,有了程序这个“血液”设计也就“活了”。在写程序之前先要对整体做一个设想,从程序实现的功能以及程序的构成等方面,这是写出一个能用程序所不可缺少的步骤16。首先画出了程序流程图,在检查程序流程图没有错误之后,按照流程图开始构思写程序,在开始前首先要对系统做一次初始化,即将重量的初始值赋零,紧接着判断清零键S3是否被按下,如果是调用清零,如果不是判断价格设置键S6是否被按下,若价格设置键被按下,则调用价格设置程序开始设置价格,然后启动模数转换程序开始数据的转换,完成以后调用语音数据开始播报总重量和总价。若果价格设置键没有被按下,则按照正常的程序进行下去,只是在播报价格的时候把总价播报为零元,总重量还是照常播报。4.3 本章小结本章介绍了系统软件设计部分,列出了主程序流程图以及液晶模块初始化子函数流程图,说明了程序设计原理。程序流程图是设计程序的主线,是完成一个完整的程序所必不可少的部分。第五章 系统调试及结果分析本部分主要包括系统调试及结果分析两部分,这一部分是整个设计很关键的环节,需要认真进行调试并及时发现设计中存在的问题,找到解决方案。结果分析环节将说明具体每个键位的功能。5.1 硬件调试本设计所涉及的电路较大,模块比较多,因此焊接时需要特别的小心,这么复杂的电路系统中只要出现一处的错误,则调试检查的时候就犹如大海捞针一样,而且本设计中电路的交线较多,在焊接时要注意使电烙铁头尽量不接近导线,以防止高温烙铁头将导线的绝缘烧毁造成短路,锋利的针脚容易划伤手,这里也需要注意。在制作硬件电路之前,我们要有充分的准备一旦焊接过程中出现疏漏,将会给后续工作的开展带来不必要的麻烦,因此在开展硬件电路的焊接之前先根据本设计预期要实现的功能划分硬件模块,并先在Protel里面画出其硬件原理图,检查无误确保能够实现预期功能之后再把硬件部分焊接到万用板上。在本次设计过程的进行中遇到了很多的问题如下:遇到的问题:刚开始接上的时候喇叭不发声音。解决方法:重新检查了线路,发现在导线穿过万用板时与其他的裸露导线短路了,重新换上新的导线之后问题就被解决了。通过解决这些问题,感觉又成长了不少,又掌握了不少的知识。5.2 软件调试语音报价电子称系统的设计对现在的我们来说是一个很复杂很难的系统,不但硬件电路的焊接较为复杂,而且程序的设计也相当难,一点东西想不到就有可能调试不出来,功能就不能实现了。在整个程序的编写和调试过程中出现了很多很多的问题,主要所遇到的问题如下:遇到的问题:在烧录完程序上电之后液晶闪烁不定,后来一下子不亮了还冒烟。解决方法:赶快拔掉电进行检查,发现有的芯片已经烧坏了,原因是导线焊接的不合适,有长处来的一些线头打在了一起,导致有些引脚之间短路了。发现问题之后重新换上了预备的芯片,剪掉长余的线头,在容易短路的地方用小刀轻轻刻画,将一些细小的焊锡毛刺隔断。遇到的问题:在设置单价之后进行称重计量,发现计算时的单价跟设定的单价不一样。解决方法:逐一检查了矩阵键盘各引脚之间的电路连接。重新检查新程序,重新建立一个新的对应关系。在写好程序之后,一遍遍的调试,幸好在以前学习单片机的过程中对keil软件的使用已经相当熟悉,才得以让整个过程在软件这一方面所遇到的问题一下子就暴露出来了,也很快的找到了问题所在,并进行了及时的修改。5.3 结果分析现将本系统的调试结果列写如下表5-1:表5-1 各键位功能表S2S3S6S7S8S9S11S12S13S14S15S16S17确认清除设置价格7894560123本设计各键位相对应的功能如表5-1所示,由上表可知:当需要设置价格时,首先需要进行的操作是按下清零键S3,在等待清零结束以后,按下S6键来输入金额,这时可以按照上表将所需要输入的金额对应到各自的按键上,再按下相应的键,在输入完价格以后,若要想把一个价格保存起来就按下确认键S2,这时所输入的价格就被暂时的记录当内存中去了。当需要再次输入一个价格时,再次按下价格输入键S6,重复上述过程就可以了。5.4 本章小结本章主要介绍了系统调试部分以及在整个系统的调试过程中所遇到的困难,同时也列写了各个问题的解决方法。在结果分析部分给出了相应按键的功能以及对各功能做了解说。结 论通过这次毕业设计,使我们回忆复习了课堂上所学过的知识,并对所学知识进行了一次系统的整合,将以前学过的零散的知识串到一起。本次设计进行当中发现了许多不足之处,详列如下:(1)由于动手能力差,硬件的焊接的不是很好,有很多不足之处,工作稳定性不是很好,有待进一步提高。(2)系统界面有待于向人性化方面迈进。本设计主要所完成的是硬件电路的焊接和软件的设计两方面的内容,通过这次设计的坎坷进行,对一些常见的元器件有了全面的认识,对整体布局也有了进一步的认识,一件东西不但应该完成其预定的功能,还要布局漂亮美观大方,这样才能受到欢迎。发现在学习理论知识时不懂的方面一下子茅塞顿开,学习理论知识时就应该主动地实践联系在一起,通过本次设计的完