基于单片机的智能电子秤设计.pdf
本本 科科 毕毕 业业 设设 计计基于单片机的智能电子秤设计Design of intelligent electronic scale based onMCU学院:电子工程学院专 业 班 级:电子信息工程 DZ 电子 091 班学 生 XX:孙 昕学号:2011140603指 导 教 师:韩晓春(高级实验师)2013 年6 月毕业设计中文摘要毕业设计中文摘要基于单片机的是能电子秤设计摘要:伴随着广泛应用的微电子技术,人们对电子秤的要求越来越高。本电路的控制核心为 AT89S52 单片机,和称重电路,显示电路,键盘电路一起构成的智能称重系统,自动称重系统,以实现各种不同的控制功能。这个系统是为了电子称的称重、计算价格还有数据处理进行钻研的。为了详细说明如何用单片机对采样的数据进行处理,本实验研究了对数据采集、转换、计算等问题。并且讨论了单片机系统中最重要的计算问题,讨论的结果表明用本系统用软件设计的话将会是系统更加完美。本文给出了智能电子硬件设计,详细的分析了基础上已知软件的电子控制方法。可以说,本设计完成的电子秤在最大程度上满足了应用的需求。本设计中的电子秤有很多特点,如功耗低、性价格比高、简单方便的系统设计、速度快、测量的数据准确等特点。因为单片机控制的电子称不仅构造一目了然,而且制造的资金也很少,因此大部分的人们都很喜爱,本文将对于这些进行详细讨论。关键词:AT89S52,压力传感器,单片机,A/D 转换毕业设计外文摘要1/32Design of intelligent electronic scale based on MCUDesign of intelligent electronic scale based on MCUAbstract:Abstract:With the extensive application of microelectronics technology,peoplehave bee increasingly demanding electronic scales.The core of the control circuitfor the AT89S52 microcontroller,and weighing circuit,display circuit,keyboardcircuit together constitute the intelligent weighing system,automatic weighingsystem,in order to achieve a variety of control functions.This system is known for electronic weighing,calculating prices have to delve intothe data processing.For detailed instructions on how to use microcontrollersampled data processing,this experimental study on data acquisition,conversion,calculation and other issues.SCM system and discusses the most importantcalculation discussed results show the system used with the software design,thenthe system will be more perfect.In this paper,intelligent electronic hardwaredesign,based on a detailed analysis of the electronic control method knownsoftware.It can be said,the design is pleted electronic scales to the maximumextent to meet the application requirements.The design of the electronic scale hasmany characteristics,such as low power consumption,sexual price is high,thesystem design is simple and convenient,fast,and accurate measurement datacharacteristics.Because microprocessor controlled electronics,said not onlyconstruct a glance,and made very little money,so most of the people were like,this article will discuss these in detail.KeywordsKeywords:AT89S52;pressure sensor;microcontroller;A/D conversion2/32目录1.绪论 41.1 电子秤的发展现状和发展趋势 41.2 项目研究的意义 51.3 可行性分析 52.系统方案论证与选型 52.1 设计要求 52.2 整体功能 62.3 电子秤的工作原理 62.4 总体设计方案 73.系统硬件设计 73.1 单片机概述 73.2 AT89S52 单片机简介 73.3 最小系统电路 93.4 键盘电路 103.5 时钟电路 133.6 液晶显示电路 133.7 压力感应电路 153.8 电源电路 183.9 本章小结 194 系统软件设计 194.1 编程语言及开发工具的选择 194.2 主程序设计 194.3 显示模块流程图及子程序的设计 214.4 按键处理程序 224.5 本章小结 235 系统仿真及调试 235.1 Proteus ISIS 简介8235.2 keil 简介 245.3 出现的问题和解决方法 245.4 keil 与 proteus 联合仿真及调试 255.5 本章小结 28致谢 29参考文献 303/321.绪论1.1 电子秤的发展现状和发展趋势1.1.1 电子秤的发展现状1这几年来,我们的电子称重系统发展的很快。已经从最初的机电结合,发展至如今的数字和智能。电子称重技术从静态到动态称重发展,从模拟到数字测量发展,从单一到多参数测量发展。现在在很多的发达国家在电子称重力这方面有了很大的提高。他们不断有创新的品种和结构,不断扩大应用 X 围和技术功能。在信息时代正在逼近的时候,数字化电子秤和数字称重系统在各个高端系统中的应用 X 围是越来越广泛了。它作为一种称重计量方式,丰富的应用于各大中型市场、物流配置中心、工厂等,而且作为工组成了工业控制和商业管理系统的一个重要部分,它的作用有:缩短工作时间,改良操作的条件,减少能源和材料的消耗,加强和改善企业管理与经营管理等多个方面,称重设备已经应用到国民经济领域,并取得了明显的经济效益。1.1.2 电子秤的发展趋势2台式的电子秤在买卖中的相当高的使用率,但是它只能应用在特定的地点。电子秤的应用程序性能的产品往往有更多的集成和组合性。(1)小型化新研制的电子秤的发展方向逐渐趋向于体积小、高度低、重量轻。那些量程比较小的电子秤,为了能提高了稳定性和可靠性并且减少投入资金。应该采用薄型或超薄型的圆形称重传感器 3。然而,对于那些对所称重量要求中等或者较大的电子秤,开始采用方形或长方形闭合截面的薄型钢焊接而成的秤体,这种秤体结构的发展前途是很可观的。(2)模块化对于那些大型或超大型的载体结构,所采用的模块的标准结构有很多长度可供选择的。先是分开然后再通过组合去产生一些新的产品规格。这样的构成,不但是提高了产品的通用性、互换性和可靠性,而且也提升了产品的生产效率和产品质量4。与此同时也减少了材料本身所需的成本,并且加强了企业的竞争力。(3)综合性电子称重技术的发展规律是不断的加强基础研究并扩大应用,扩展新技术领域,向相邻学科和行业渗透,综合各种技术去解决称重计量、自动控制、信息处理等问题5。例如在统计流量这个专业,假如使用称重法,只要测量精准的重量和时间,测量大流量的问题自然而然就解开了。现代商业系统还要求商用电子计价秤能提供各种销售信息,把称重与管理自动化紧密结合,实现管理自动化。这就要求电子计价秤能与电子计一算机联网,把称重系统与计算机系统组成一个完4/32整的综合控制系统2。1.2 项目研究的意义随着社会的不断发展和科技的不断进步,各式各样的电子新科技走进了我们的日常生活,让我们的生活变得越来越方便。以前出现的量具多是杆秤或盘秤,1970年代开始出现了电子秤。之前的电子秤大部分都是用模拟电路去实现,现在电子技术日新月异,古老的称重系统在功能、精度、智能化、性价比等方面是很难达到人们的要求的。数字芯片的成本也一年比一年少,模拟控制已渐渐地被数字控制替代,电子秤的模式也大多数都围绕着微处理器来设计,使精度和可靠性都有了明显的提高。同时,也提高了仪器设备的可操作性和可维护性,使用价值也很高。综上所述,有计划有目标地制定出一套电子秤系统并且让他能有实用的价值,尽量地克服系统的不对的地方,对于减少电子秤在系统应用中的缺点,具有现实意义。1.3 可行性分析理论可行性:理论上来讲,电子秤是有由以下部分组成:称重传感器,放大器,显示器,键盘。并且,每一部分都相对应有相关的元器件,而且,会有相关的技术去履行它,而且现在相关单片机的系统运用技术也已很成熟,在很多地方能用得到。经济可行性:因为我们做的电子秤是个简易器件,所以不需要很多的金钱投放,而且有易实行,性价比高,能够方便日常生活。技术可行性:应用C语言开发计算器,可以得心应手,为用户提供非常友好、易实行的用户界面、具有完整和强大的数据操作能力。社会可行性:电子秤是在社会生活中的运用非常多,大家都不能缺少它。2.系统方案论证与选型2.1 设计要求本设计,需要用单片机作为内核,加上一定的外围电路和软件设计,实现智能电子秤系统的设计,本设计任务可以分为硬件设计和软件设计。硬件部分包括:键盘模块、系统控制模块、显示模块等。设计技术要求:(1)熟练的使用 protues 和 keil 软件;5/32(2)选择恰当的单片机并且配以外围电路设计。最终能仿真实现。其他要求:能实现计算、显示和调整数值等多种功能,具有准确度高、实时性好等特点。2.2 整体功能(1)采用高精度电阻应变式压力传感器,测量量程 0-100kg,测量准确度可达 5g。(2)采用电子秤专用 A/D 转换器芯片对传感器信号进行调整和转换。(3)采用 ATC89S52 单片机作为控制核心,实现称重、计算价格等主控功能。(4)采用 LCD 液晶屏去显示称重重量、单价、总价等信息。(5)采用计算器键盘进行人机交互,计算器的键盘容量大,而且运用很方便。2.3 电子秤的工作原理如果要进行对电子秤的探讨,就必须要从它的工作原理说起。电子秤中的压力传感器的作用是非常重要的,通常情况下压力传感器常采用电阻应变式,这时候,传感器有点像是中间人的感觉,即当把要称的东西摆放在秤台的那一刻,它的重量就会传达到压力传感器中,传感器随后便会使这个物件有多重就都会转成电信号。放大电路将该信号进行放大,滤波后由A/D转换器开始转变,然后将数字信号传送到微处器的CPU处理,CPU它就会不停地检测键盘,然后辨别和分析被打入键盘里的内容,由其软件部分来控制各种运算 6。根据本设计对功能的要求,系统由5 个部分组成:时钟电路,复位电路,键盘电路,液晶显示电路,称重电路。本系统的设计框图如图 2-1 所示。图 2-1 电子秤结构框图称重传感器液晶显示A/D转换控制核心AT89S52键盘时钟电路复位电路6/322.4 总体设计方案本设计中,处理前端信号的时候,选用的措施有放大、A/D 转换等,尤其在液晶显示这块采用 LCD 显示器。这几点紧紧抓住了这个设计的重中之重,也能够显示那个被称东西的重量及价格。LCD 显示器的使用大大节省了 I/O 口的使用。目前单片机技术已经比较成熟,功能也更强大,测得的信号被放大转入单片机,由单片机根据相应的数据关系,处理测量信号显示被测物体的重量。单片机适用的控制系统它实现的功能一定不能很复杂。它优点有有很多。但它也有缺点,就是外面的电路不简单,而且,编写的程序比较繁琐。结果就是,如果使用这一个方案就会给自己的设计添加难度。3.系统硬件设计3.1 单片机概述单片机又称单片为控制机器。它是计算机技术的在不断发展过程中的一个重要的标志,它标志着计算机正式发展为通用计算机系统和嵌入式计算机系统两大分支。3.1.1单片机的发展状况7单片机有着简短精湛的历史,它的产生与发展基本上和微处理器同步。它具有轻质量、小体积、成本低等优点,这也为它的发展做了铺垫。并且,通过研究单片机有利于学习计算机原理与结构,它最早是被用在工业控制领域。3.1.2单片机的发展趋势(1)低功耗CMOS化。CMOS电路有着非常多的优点,如极宽的工作X围、极佳的本质低功耗及功耗管理特性等,形成了嵌入式系统独特的低功耗及管理应用技术。随着对单片机功耗要求越来越低,单片机逐渐都要采用CMOS。(2)主流与多品种共同存在。在特定的一段时期内,某一种单片机的垄断局面将会不在存在,而是走向相互补充相互依靠、相互促进、共同发展之路。(3)基于串行方式的外围设备扩展。(4)微型单片机。现在的产品要求占地方少、拿起来不费力的现象有很多,这就要求 MCU 除了强大的功能和消耗少以外,也要求其占地方少。单片机构造的系统正逐步向小型化、微型化的方向发展7。3.2 AT89S52 单片机简介AT89S52单片机是 ATMEL公司推出的高档、增强型产品。它是一个消耗低性能却很高的 CMOS 位微控制器,其片内含有通用 8 位 CPU 和 ISP Flash 存储单元,8k Bytes ISP(In-system programmable)是可反复擦写 1000 次的 Flash 只读程7/32序存储器,片上 Flash 允许程序存储器在系统可参与编程,它也适用于常规编程器。ATMEL 公司的高密度、非易失性内存技术被用在制造器件上,兼容标准MCS-51 指令系统及 80C51 引脚结构,在单个芯片上,拥有灵巧的 8 位 CPU 和在系统可编程 Flash,使得 AT89S52为许多嵌入式控制应用系统提供高灵活、具有高成本效益的解决方案8。3.2.1 主要特性兼容 MCS-51 指令系统它工作的电压基本上是 4.5-5.5V3 个 16 位可编程定时/计数器式时钟频2 个全双工 UART 串行中断通道 256x8BIT 内部 RAM2 个外部中断源低功耗空闲和掉电模式中断唤醒掉电模式三级加密程序存储器灵活的 ISP 字节和分页编程电源关闭标识3.2.3 AT89S52 管脚结构AT89S52有 PDIP、PLCC 和 TQFP 等三种封装形式(其管脚的结构如图 3-1所示)。图 3-1 AT89S52引脚图率 O-24MHz3.2.4 AT89S52 组成框图AT89S52结构框图如图 3-2 所示。图中 VCC 表示+5V 的电源,GND 是接地。8/32图 3-2AT89S52 型单片机结构框图P3 口:P3 口是一个具有内部上拉电阻的 8 位双向 I/O 口,p3 输出缓冲器能驱动 4 个 TTL 逻辑电平。在 flash 编程和校验时,P3 口也接收一些控制信号。P3 口亦作为 AT89S52特殊功能(第二功能)使用,如表 3-2 所示。表 3-2P3 口特殊功能引脚号P3.0P3.1P3.2P3.3P3.4P3.5P3.6P3.7第二功能RXD(串行输入口)TXD(串行输出口)INT0(外中断 0)INT0(外中断 0)T0(定时器 0 外部输入)T1(定时器 1 外部输入)WR(外部数据存储器写选通)RD(外部数据存储器读选通)。3.3 最小系统电路最小系统电路包括复位电路和晶振电路。其系统如图3-3 所示。在单片机片内部每种操作所需的时间信号由单片机的时钟信号来供给,复位操作能够让单片机的内部的电路回到最初状态,让单片机能够从开始运行的时候以一种准确的初始状态9。9/32所有微机系统每次一开始运行就会复位,它能够使整个控制芯片返回到最开始的状态下。51 单片机的复位是通过 RST 引脚去控制的,这个引脚与 HL 连接超过一定标准之后,51 单片机就进入到整个控制中心内部的复位状态。并一直在这个状态下等待,直到 RST 引脚转为 LL 后,才检查 EA 引脚是 HL 或 LL,假如是 HL 就执行芯片的内部程序代码,如果是 LL 便会执行外部程序的代码。图 3-3 最小系统电路3.4 键盘电路电子秤的称重数值的输入用到按键,在这种情况下,如果采用独立按键的方式,编程会很简单,但是会占用大量的I/O 口资源,所以在大多数的情况下一般不会用这个方式,取而代之的是使用矩阵键盘。矩阵键盘使用四条I/O 线作为行线,四条I/O 线作为列线,最终组成键盘,在每一个行列线的交叉点上放置一个按键。最终就知道键盘上的按键个数就是 4*4 个。这样的行列式的键盘结构可以快速的增加单片机系统中 I/O 口的利用率。矩阵键盘的工作原理:当按键没有被按下时,整个输出端接的是高电位,表示没有键按下。当行线输出是低电位,如果有键被按下,那么输入线将会被拉低,所以,只要知道读入输入线的状态就能判别有无按键被按下。3-4 矩阵键盘布局图10/32矩阵键盘内部电路图如图 3-5 所示:图 3-5 矩阵键盘内部电路为了更好的利用单片机的 I/O 口资源,在系统中,我选择了 MM74C922 芯片。它是一款可以扫描 4*4 键盘的 IC,它可以感受到与它接在一起的 4*4 键盘上的操作,并且通过数据输出口使按键相应的编码输出。它的引脚图就如下图3-6 所示:图 3-6MM94C22 硬件图11/32MM74C922 对各按键的响应如下表所示如图3-7 所示,在这个设计里。在仿真图中,键盘的行线 A、B、C、D 分别和 MM74C922的 X1、X2、X3、X4 引脚相连。键盘的列线则分别和 MM74C92 的 Y1、Y2、Y3、Y4;键盘的其中一端是先连接电阻再连接到电源上,不同的是,接地是利用程序输出“0”完成的。当这个期间感受到有按键输入的时候,DA 端就会产生 HL,与它相连的端口感受到 LL。图 3-7 键盘接口电路图12/323.5 时钟电路时钟电路的核心是个比较稳定的振荡器(一般都用晶体振荡器),振荡器所产生的是正弦波,频率不一定是电路工作的时钟频率,因此就要把这正弦波进行分频,处理,最后形成时钟脉冲,然后分配到需要的地方。如下图 3-8 所示,XTAL1和 XTAL2这两个引脚端外接晶体振荡器和电容去构成内部的振荡方式,片内的高增益的反向放大器和作为反馈元件的片外晶体谐振器,它们一起构成自激振荡器,并且能产生振荡时钟脉冲。电容器的最重要的作用就是帮助振荡器起振。电容器容量的大小对振荡频率有轻微调控的作用,它的值一般情况下大概是 30pF,振荡的频率重点由石英晶振的频率确定,振荡电路的频率也就是晶体的固有频率。照目前来看,单片机的晶振频率 f 的 X 围为1.260MHz。晶振频率常 12MHz/6MHz。图 3-8时钟电路3.6 液晶显示电路液晶,通过名字我们就可以猜到,它不同于固态和液态这两种类别,是处于这两种类别之间的一种中间类别。LCD 液晶显示屏是被动式的因为它本身并不能发光,而是在电压的作用下液晶能够改变光线通过的方向,从而达到了显示的目的。液晶显示器因为功耗比较低,所以适用于使用电池的电子设备,一直倍受人们的青睐。在本系统中,要求对重量、价格及总价进行显示,因而选择液晶显示屏 1602。LCD1602 的消耗少,而且价格合算,功能也齐全。LCD1602 采用 14 条引脚线,其中有数据引脚线为 D0 至 D7、控制引脚线分别是 RS,R/W 和 E、对比调整电压引脚线(VDD)、电源和地引脚线。但还有 2 条引脚线是用来接到背光电源正负极的,平时很少会使用到10。13/32LCD1602 主要引脚的功能如表 3-3 所示。表 3-3LCD1602 主要引脚的功能LCD1602 的主要管脚介绍LCD1602 可以通过 VEE 端去调控整个显示器的对比度。对比度是最大的时候就是接电源的地端,对比度是最小的时候就是接电源正端,对比度大的时候就会产生鬼影,但是对比度较低就显示的不清楚。R/W 为读、写选择端,运行写操作的时候为低电平,很显然运行读操作的时候就为高电平。RS 为数据、指令寄存器选择端,为低电平的时候可以选择指令寄存器,而高电平的时候可以选择数据寄存器。E 端为信号使能端,在 E 端脉冲有下降沿出现的时候,液晶模块开始工作。LCD1602 的内部 control 器的指令总的来说有 11 个11:指令 1:将显示屏清除干净,光标归位的同时 AC=0。指令 2:光标归位、AC=0、DDRAM 里的内容保持不变。14/32指令 3:当 I/D=1 的时候,进行数据读和写的操作后,光标右移,反之左移。当 S=1 的时候,进行数据读和写的操作后,显示屏整体右移 1 字符,反之,显示屏不移动。指令 4:当 D=1 的时候显示功能开,反之,关显示屏。当 C=1 的时候有光标,反之,无光标。当 B=1 的时候光标不闪烁,反之,光标闪烁。指令 5:设定光标、字符移动方向。当 S/C 和 R/L 的值为 00H 的时候光标右移一格。值是 01H 时光标左移一格。指令 6:当 N=1 有 2 显示,当 N=0 有 1 显示。DL=1 的时候数据总线为 8 位,DL=0 的时候数据总线为 4 位。指令 9:读取忙标志 BF 的值、AC 的值。BF=1 时显示屏忙,反之,表示显示屏准备好。指令 10:将数据写到 RAM。指令 11:从 RAM 中读取数据。将 LCD1602 的各端口与单片机相连好,如果 E 端为 HL,此时的 RS 端为 LL,同时 R/W 端为 LL 的时候,液晶显示屏就会显示出用户想要显示的数据。单片机与 1602 液晶显示屏的硬件连接图如图 3-9 所示。图 3-9单片机与 1602 液晶显示屏硬件连线图3.7 压力感应电路现代的传感技术发展的越来越快,大家都已经从用传统的杠杆原理去测量物体的重量,发展到至今的用电子秤电子称重,即利用压力传感器把压力的信号转变成为电信号,运用单片机本身的技术,根据电信号和重力信号的数学模型,就能够间接的计算出物体的重量,目前普遍使用的是电阻应变片式称重传感器。电15/32阻应变式压力传感器是把电阻应变计粘贴在弹性敏感元件上,然后以适当方式组成电桥的一种将力转换成电信号的转换元件12。压力感应电路是由气压传感器 MPX4115、A/D 转换器等组成。如图 3-9图 3-9 压力感应电路3.7.1 气压传感器 MPX4115 的原理气压传感器 MPX4115 的管脚如图 3-9,管脚说明如表 3-4 所示图 3-9 MPX4115实物图表 3-4 气压传感器 MPX4115 的管脚说明1VOUT2GND3VS4N/S5N/S6N/S气压传感器 MPX4114 的特性参数如表 3-5 所示:参数符号最小典型最大单位16/32压力 X 围供电电压供电电流最大压力偏置(085)Vs=5.0V满量程输出(085)Vs=5.0V满量程比例(085)Vs=5.0V精度(085)灵敏度响应时间(10%90%)上升报警时间偏置稳定性PopVsLoVpss154.85-0.135-5.17.00.2041155.35100.273KPaVdcmAdcVdcVoff4.7254.7944.863VdcVFSS4.5214.5904.695Vdc-1.5%CPSSV/PtR-45.91.0200.5-mV/KPamsms%VFSS3.7.2 转换器 ADC0808转换器 ADC0808 构成引脚图如图 3-9 所示。图 3-9 ADC0808引脚图(2)转换器 ADC0808 工作原理A、B 和 C 为地址输入线,用于选通IN0IN7 上的一路模拟量输入。通道选择见表 3-4。17/32表 3-4 ADC0807通道选择表C00001111B00110011A01010101选择的通道INT0INT1INT2INT3INT4INT5INT6INT73.8 电源电路本实验所需要的工作电压为+5V,由于该系统不仅要接 220V 电压还有可能要与 USB 相连,USB 的接口所需的电压为12V。所以,先利用适配器把 220V的交流电压通过降压、整流、滤波转变为少一点的直流电压。最后达到5V 的电压供给整个电路13。变压器输出端的电压经桥式整流,电容滤波,在电容C6 两端大约会有高一点的电压,如果在电容两端接上负载,如果出现负载变化或者交流电源有波动情况,那么会对 C6 电压产生较大的影响,所以,当你想要一个稳定的电压源就必须要接上一个稳压器。它是由若干电阻和三极管构成的一种集成电路元器件,在你研究电路的时候,可以把它当作是一个能够调节电阻大小的元件,如果经过负载的电流变大大,那么,其内部的电阻会变小,同样道理,如果电流变小,那么电阻就会变大。只有这样才能够使电压更加稳定。7805 三端稳压集成电路有三个引脚,1 号引脚是输入端,2 号引脚是接地端,3 号引脚是输出端。通过 7805的个位数字我们可以知道输出电压是 5V。TR1 是电源变压器,通过 TR1 把 220v 交流电变为 12v 交流电。然后再通过桥式整流电路,把 12V 交流电变为 12V 直流电。电路如图 3-10 所示。图 3-10 电源电路18/323.9 本章小结本章简单的介绍了单片机的硬件部分的组成。并且介绍单片机选用了 8051系列单片机里的 AT89S52,按键的部分明智选择了矩阵键盘,液晶显示电路的部分则选择了 LCD1602。4 系统软件设计该软件设计的大致思路是:根据自己所编写的程序对系统中的测量进行控制,使其自动完成逻辑判断以及重量的测量:本设计软件的主要的目标如下:(1)设置单价;(2)显示质量、单价及总价;(2)超量程指示。4.1 编程语言及开发工具的选择4.1.1 编程语言的选择对 8051 单片机而言,现在最常用的就是汇编语言和 C 语言。每种语言都有各自的优缺点。在 51 系列单片机下,C 语言和汇编语言相比,有很多的优点,具体叙述如下14:(1)不要求对单片机的指令系统有所了解,如需使用它只要对 51 系列单片机的存储器结构有简单了解就可以;(2)寄存器分配、不同存储器的寻址及数据类型等细节可由编译器管理;(3)其本身所提供的库中有许多的程序,数据的处理有很强大的能力;(4)由于他本身的编程技术运用很便利,已经编写好的程序就可以很方便的复制粘贴去其他地方。结合上面的几点叙述,本设计应该选择的编程语言为 C 语言,并且采用模块化编程方式进行编程。4.1.2 开发环境的选择单片机的开发环境是多种多样的,有很多家公司都研发了单片机的开发软件,如 American Automation、瑞典的 IAR、Avocet和 Keil 等。开发环境的优劣直接影响单片机应用产品的开发效率7。本设计基于 51 系列单片机 AT89S52,而且选用 C 语言进行编程,因此选用来自德国的主流开发软件 Keil 进行编程。Keil 在代码生成方面相比较于其它几款软件很显然是处于先前地位的,它能够产生最少的代码。4.2 主程序设计4.2.1 主程序设计思想称重是电子秤最基础的功能,所以该程序设计的主要出发点就是一定要保证19/32准确的称重。因为这个是虚拟电路,没有实在的重量。所以为了这个,在本系统中还是设置了一个初始的值。然后通过 MPX4115 去调它的值,而且它被设了一个上限的值,当重量到达那个点时,显示器就会显示出“over”字样。通过 MPX4115上的“+,”按键就可以实现调整重量大小的功能,但是重量就通过矩阵键盘来调整。只要按下键盘上的“=”键,就能够算出总价格,并显示出来,计算的使用增加按键的使用,使键盘的使用丰富起来。液晶显示模块采用的液晶显示器,它能够显示那些字符。这样使程序的编写简单了很多,再通过矩阵键盘上的按键实现价格计算和调整等功能。单片机系统按照程序控制所设定操作方式开始运行,系统上电后,会使系统自动回到最初状态。初始化程序主要完成对单片机内专用寄存器的设定,并规定单片机的工作方式,顺便也规定每个端口的工作形态。主程序流程图如图 4-1 所示。图 4-1 系统流程图20/324.3 显示模块流程图及子程序的设计显示模块子程序最重要的功能是来断定是不是需要,以及怎么样去将数值显示出来,因此,显示模块子程序是一段很重要的设计,在设计时要注重这个模块。首先开始显示初始化界面,完后判断有无按键,如果没有返回到上一步,如果有按键则显示出来按键的功能,例如预置的单价等,检测是否有重物,如果没有返回上一步,如果有按键则显示出物重、总价等信息,显示结束返回。显示子程序的流程图如下图 4-2 所示。图 4-2 显示子程序流程图开始显示初始化界面有无按键YN显示按键功能检测重物YN显示总价信息返回显示电路程序分析(取段)void Int()LcdInt();/调用 LCD 初始化函数TMOD=0 x22;/定时器 0 自动从模式EA=1;/开总中断21/32ET0=1;/允许定时器 0 中断TH0=0X14;/赋值TL0=0X00;TR0=1;/开定时器 0BKeyCount=0;/计数器初始化4.4 按键处理程序键盘电路使用 4*4 矩阵式键盘,一共有 16 个按键,主要用到的包括:0 9、确认键、清零键、计算键。在按键程序中应该先开始判断按键的编码,然后将其所表示的数值传送到相对应的存储单元,再开展功能的判断或数据的整理。主要是判断有无按键,如果没有原地跳转,如果有按键则通过 LCD 显示出其按键功能,然后判断是否有清零键按下,如果没有则原地跳转,如果有清零键按下,说明键盘输入重新开始,返回到字符界面显示继续后面的操作。键盘子程序的流程图如图 4-3 所示。图 4-3 键盘子程序流程YYYN按键输入LCD输入界面字符显示有功能键按下输入完毕调用LCD显示N有清零键按下N键盘显示模块的一段程序分析:22/32void main()Int();Write_NO1(0 x00,PC_Data);Write_NO2(0 x00,Price);while(1)if(MMC74C992=0)while(MMC74C992=0);/MMC74C992=0 时,说明有按键按下,很重要,必须有。BKey=(P2&0Xf0)4;/将高 4 位的 BCD 码一到低 4 位,便于计算/将 BKey 的 BCD 码转换成相应的按键值,便于计算。/改转换只转换了 0-9 数字键和“=”按键,其他暂时涉及不到,所以未进行转换switch(BKey)case 0:BKeyNum=7;break;/按键 7 的识别case 1:BKeyNum=4;break;/按键 4 的识别case 11:BKeyNum=10;break;/实则为=按键识别default:BKeyNum=11;break;/其他按键键值为 11,无效按键 if(BKeyNum=10,说明不是数字键,无需存取Write_NO2(0 x00,Price);/显示单价Total_priceBKeyCount+=BKeyNum;/存放价钱WriteAddress(0 x46);/WriteData();起到站空位的作用,清除原来无用显示的数据。4.5 本章小结本章对主程序进行了整体说明,这包括主程序里设计思想和主程序内容解析。接着对于按键调节和按键切换、显示部分的程序作了具体说明及分析。5 系统仿真及调试5.1 Proteus ISIS 简介15Proteus ISIS 是英国 Labcenter 公司所开发的一个软件。它能够对电路进行分析和实物仿真。它已经出现快 20 年了,在全世界拥有非常多的企业用户群,也是目前唯一一个对每一种处理器都能进行迅速的仿真、调试和测试的 EDA 工具,准确的履行了没有实物就能够对系统进行设计、测试和验证的作用。Proteus 的23/32作用真的有很多,是近年来备受电子设计爱好者青睐的一款新型电子线路设计与仿真软件。5.1.1 Protues 运行流程(1)首先,在电脑里下载正确的软件版本,此软件主要是对硬件部分进行模拟。(2)其次,进入软件后蓝色框内就是工作区域,可以在里面随意选择元器件,拖动元器件。根据原理图进行正确的连线。(3)再次,完成所有连接后,双击单片机把生成的 HEX 文件进行导入。(4)最后,如果程序和连好的图都没有问题就可以进行仿真了。5.2 keil 简介Keil 支持 51 系列的单片机的仿真,可通过系统设置生成 51 可执行的 hex文件。Keil 提供了一个完善开发案本,通过一个集成的开发环境将所有组合在一起。还有最关键的是,只要看一下编译后生成的汇编代码,就能体会到 Keil C51生成的目标代码效率非常之高,多数语句生成的汇编代码很紧凑,容易理解。在开发大型软件时更能体现高级语言的优势16。在 Keil 集成开发环境不是在单一文件的模式下使用的,而是用工程的方法来管理文件。其中的文件包括源程序(如 C 语言、汇编语言)、头文件等都能够放在工程项目文件里进行统一的管理。创建新的应用程序就按照下面所介绍的方法来。(1)一个工程项目文件;(2)挑选自己所用到的单片机;(3)创立源程序文件后写入程序的代码;(4)将创建的不曾编译的项目文件 save;(5)将未经编译的程序文件增加到此项目中。5.3出现的问题和解决方法在系统设计完成后进入调试阶段,往往并不能直接得到所要的结果,即很难做到一次性成功。原因主要来自于硬件部分设计存在的问题和软件编程部分程序上的错误等。首先,由于对单片机掌握并不十分熟练导致,对一些接口的功能理解没有十分透彻,因此在硬件连接时存在错误,经过查阅资料和与指导老师交流,反复修改,最终解决了硬件问题。其次,在编程过程中,由于对 C 语言编写的不熟练,在编写过程中出现不少疑难,但经过反复查阅资料,认真理解,最终按照绘制好的程序流程图编写好了程序。24/32最后,在 Proteus 中绘制好电路图,检验无误后,给 AT89S52 加载.HEX 程序文件,但并没有得到预期的结果。(1)反复排查中,发现首先程序中有语句错误,经过 KEIL 的反复调试,排除程序中的语法错误.(2)运行仿真,显示屏仍然无显示结果,经过反复检查调试,发现扫描顺序与显示屏引脚的连接顺序有不一致的情况。于是,通过仔细分析,对设计做认真修改。5.4 keil 与 proteus 联合仿真及调试5.4.1 keil 运行流程Keil 支持 51 系列的单片机的仿真,可通过系统设置生成 51 可执行的 hex 文件。Keil 编译界面进行编译之前先进行工程仿真配置,工程配置界面如图5-1 所示,在“Device”中进行 CPU 型号选择,本系统中选用 AT89S52 芯片,“Output”中选择“CreateHEX File”,以便生成 AT89S52可执行的 hex 文件。也方便加载到proteus 里的单片机中进行仿真,并且“Debug”中选择调试方式为 proteus。在keil 中编写程序并进行编译,生成 hex 文件。图 5-1Keil 工程配置图5.4.2 protues 运行流程Proteus ISIS 的运行界面是一种规则的界面窗口。Proteus 程序被运行后,首先就是软件的主界面。通过左侧工具栏中的 P(从库中选择元件命令)命令,在 Pick Devices 左侧窗口中输入自己所需元