1、 毕业设计论文基于单片机的电子秤设计系 别: 机电工程系专业名称: 自动化学 号: 学生姓名: 黄金榕指导教师: 刘保军指导单位: 电子科技大学中山学院机电工程系完毕时间: 2023年5月8日电子科技大学中山学院教务处制发电子科技大学中山学院毕业设计(论文)任务书题目名称基于单片机的电子秤设计设计(撰写)内容基于某种型号的单片机,设计制作一款电子秤。设计规定如下:(1)进行功能需求分析,提出多种方案,并拟定合理可行的方案;(2)选择单片机,并设计以单片机为核心的控制模块;(3)设计控制系统电源模块;(4)选用显示方案,设计显示系统及键盘电路,完毕人机交互界面;(5)选用合适的传感器,设计采样网
2、络;(7)设计合适的算法,对采集到的数据进行噪声过滤(8)加入调零功能。(9)校准电子称。(10)控制方案合理、设计图纸及文字资料应规范,结论简练准确,系统应具有便携性性、可靠性和经济性。预期目的设计目的是为了学习和巩固知识,提高对所学应用基本理论分析和解决实际问题的能力,应设计并制作实际的模型实现电子秤规定的功能,从而达成并熟悉一个产品完整的开发流程和具体内容, 提高实践应用能力。成果形式1、毕业设计论文;2、实物模型;3、C语言软件程序;设计(撰写)地点电子科技大学中山学院起止时间2023 年 10 月20日至 2023年 5月 8 日指导单位电子科技大学中山学院机电工程系指导教师年 月
3、日审核意见审核署名年 月 日电子科技大学中山学院毕业设计(论文)成绩评估表设计(撰写)过程评语:【填写说明】:规定在学生答辩前完毕,要实事求是的准确评价学生在毕业设计(论文)过程中充足理解题目内容,提出、论证、实行、总结问题解决方案的工作量、学术水平和成果价值。指导教师评分满分50分,占毕业设计(论文)总成绩的50。 指导教师: 年 月 日成绩论文评阅评语:【填写说明】:规定在学生答辩前完毕,要准确的基于设计内容评价论文工作量、学术水平、成果价值,对论文撰写的规范性予以评述。评阅教师评分满分20分,占毕业设计(论文)总成绩的20。 评阅教师: 年 月 日成绩论文答辩评语:【填写说明】:本栏目由
4、答辩委员会(小组)认真阅读论文的基础上,考察学生在答辩现场的表现,对其掌握“基础理论和技能”、“新技术”、“新方法”、“论文报告水平”、“快速理解问题实质”、“简明准确回答问题”等予以评价,并给出成绩。答辩成绩满分30分,占毕业设计(论文)总成绩的30。 答辩组长: 年 月 日成绩总分审核人: 年 月 日基于单片机的电子秤设计摘 要电子秤是将检测与转换技术、计算机技术、信息解决、数字技术等技术综合一体的现代新型称重仪器。它与我们平常生活紧密结合成为一种方便、快捷、称量精确的工具,广泛应用于商业、工厂生厂、集贸市场、超市、大型商场、及零售业等公共场合的信息显示和重量计算。电子称重要以单片机作为中
5、心控制单元,通过称重传感器进行模数转换单元,在配以键盘、显示电路及强大软件来组成。电子称不仅计量准确、快速方便,更重要的自动称重、数字显示,对人们生活的影响越来越大,广受欢迎。本系统针对电子称的自动称重、数据解决等进行了设计和制作。为了阐明用单片机是如何对采样数据进行解决,对数据的采集和转换、计算问题进行了研究,讨论了单片机控制系统中关键的计算问题。本文在给出智能电子称硬件设计的基础上,具体分析了电子称的软件控制方法。单片机控制的电子称结构简朴,成本低廉,深受人们的爱慕,本文将对此进行具体讨论。关键词:电子称;单片机;称重传感器 Electrnoic Scale Design Based on
6、 MCUAbstractIntelligent electronic scale is the detection and conversion technology, computer technology, information processing, digital technology, an integrated modern technology of new weighing equipment. It is closely integrated with our daily lives into a convenient, fast, precision weighing i
7、nstrument, widely used in commercial, plant health plant, country markets, supermarkets, shopping malls, and retail and other public places, information display and weight. Intelligent Electronics said the key to SCM as the central control unit, through the weighing sensor analog-digital conversion
8、unit, in the accompanied keyboard, display circuit and powerful software to component. Said not only accurate measurement of the electronic, fast and convenient, more importantly, automatic weighing, statistics show that by the majority of users. Intelligent Electronics said that as easy to carry, e
9、asy to use, the impact on peoples lives more and more. This system is known for the electronic automatic weighing and data processing of research. To illustrate how to use the MCU is sampling data processing, data acquisition and conversion, computational problems studied. Discuss the key SCM system
10、 calculation. This paper presented the hardware design of intelligent electronics that, based on detailed analysis of the electronic control, said the software. As the structure of microprocessor controlled electronics that simple, low cost and very popular, this will be discussed in detail. Keyword
11、s: electronic scale; MCU; Load sensor 目录1 绪 论11.1 称重技术和衡器的发展11.2 电子秤的组成21.2.1电子秤的基本结构21.2.2电子秤的工作原理21.2.3电子秤的计量性能21.3本设计思绪32系统方案论证与选型52.1控制器部分52.2数据采集部分72.2.1传感器的选择72.2.2放大电路选择83硬件设计103.1 总体规划103.2 主控制器电路103.3 传感器放大电路113.4 显示电路114 软件设计144.1 系统应用程序组成144.2 主程序流程图154.3 AD采样程序块154.4 液晶显示程序块164.5 称重数据解决技
12、术215 总结与展望23致 谢25参考文献26附录一 电路原理图27附录二 系统实物图281 绪 论1.1 称重技术和衡器的发展称重技术自古以来就被人们所重视,作为一种计量手段,广泛应用于工农业、科研、交通、内外贸易等各个领域,与人民的生活紧密相连。电子秤是电子衡器中的一种,衡器是国家法定计量器具,是国计民生、国防建设、科学研究、内外贸易不可缺少的计量设备,衡器产品技术水平的高低,将直接影响各行各业的现代化水平和社会经济效益的提高。电子秤的发展过程与其它事物同样,也经历了由简朴到复杂,由粗糙到精密、由机械到机电结合再到全电子化、由单一功能到多功能的过程。特别是近30年以来,工艺流程中的现场称重
13、、配料定量称重、以及产品质量的监测等工作,都离不开能输出电信号的电子衡器。这是由于电子衡器不仅能给出质量或重量信号,并且也能作为总系统中的一个单元承担着控制和检查功能,从而推动工业生产和贸易交往的自动化和合理化。近年来,电子秤已愈来愈多地参与到数据解决和过程控制中。现代称重技术和数据系统已经成为工艺技术、储运技术、预包装技术、收货业务及商业销售领域中不可缺少的组成部分。随着称重传感器各项性能的不断突破,为电子秤的发展奠定了其础,国外如美国、西欧等一些国家在2 0世纪6 0年代就出现了0 .1%称量准确度的电子秤,并在7 0年代中期约对75%的机械秤进行了机电结合式的电子化改造。称重装置不仪是提
14、供重量数据的单体仪表,并且作为工业控制系统和商业管理系统的一个组成部分,推动了工业生产的自动化和管理的现代化,它起到了缩短作业时间、改善操作条件、减少能源和材料的消耗、提高产品质量以及加强公司管理、改善经营管理等多方面的作用。称重装置的应用已遍及到围民经济各领域,取得了显著的经济效益。因此,称重技术的研究和衡器工业的发展各国都非常重视。50年代中期电子技术的渗入推动了衡器制造业的发展。60年代初期出现机电结合式电了衡器以来,通过40数年的不断改善与完善,我国电子衡器从最初的机电结合型发展到现在的全电子型和数字智能型。现今电子衡器制造技术及应用得到了新发展。电子称重技术从静态称重向动态称重发展:
15、计量方法从模拟测量向数字测量发展;测量特点从单参数测量向多参数测量发展,特别是对快速称重和动态称重的研究与应用。通过度析近年来电子衡器产品的发展情况及国内外市场的需求,电子衡器总的发展趋势是小型化、模块化、集成化、智能化;其技术性能趋向是速率高、准确度高、稳定性高、可靠性高;其功能趋向是称重计量的控制信息和非控制信息并重的“智能化”功能;其应用性能趋向于综合性和组合性。电子秤是电了衡器中的一种,衡器是国家法定计量器具,是围计民生、国防建设、科学研究、内外贸易不可缺少的计量设备,衡器产品技术水平的高低,将直接影响各行各业的现代化水平和社会经济效益的提高。1.2 电子秤的组成1.2.1电子秤的基本
16、结构 电子秤是运用物体的重力作用来拟定物体质量(重量)的测量仪器,也可用来拟定与质量相关的其它量大小、参数、或特性。不管根据什么原理制成的电了秤均由以下三部分组成:(1) 承重、传力复位系统 它是被称物体与转换元件之间的机械、传力复位系统,又称电子秤的秤体,一般涉及接受被称物体载荷的承载器、秤桥结构、吊挂连接部件和限位减振机构等。(2) 称重传感器 即由非电量(质量或重量)转换成电量的转换元件,它是把支承力变换成电的或其它形式的适合于计量求值的信号所用的一种辅助手段。 按照称重传感器的结构型式不同,可以分直接位移传感器(电容式、电感式、电位计式、振弦式、空腔谐振器式等)和应变传感器(电阻应变式
17、、卢表面谐振式)或是运用磁弹性、压电和压阻等物理效应的传感器。 对称重传感器的基本规定是:输出电量与输入重量保持单值相应,并有良好的线性关系;有较高的灵敏度;对被称物体的状态的影响要小;能在较差的工作条件下工作;有较好的频响特性;稳定可靠。 (3) 测量显示和数据输出的载荷测量装置 即解决称重传感器信号的电子线路(涉及放人器、模数转换、电流源或电压源、调节器、补尝元件、保护线路等)和指示部件(如显示、打印、数据传输和存贮器件等)。这部分习惯上称载荷测量装置或二次仪表。在数字式的测量电路中,通常涉及前置放大、滤滤、运算、变换、计数、寄存、控制和驱动显示等环节。1.2.2电子秤的工作原理 当被称物
18、体放置在秤体的秤台上时,其重量便通过秤体传递到称重传感器,传感器随之产生力一电效应,将物体的重量转换成与被称物体重量成一定函数关系(一般成正比关系)的电信号(电压或电流等)。此信号由放大电路进行放大、经滤波后再由模数( A/D)器进行转换,数字信号再送到微处器的CPU解决,CPU不断扫描键盘和各功能开关,根据键盘输入内容和各种功能开关的状态进行必要的判断、分析、由仪表的软件来控制各种运算。运算结果送到内存贮器,需要显示时,CPU发出指令,从内存贮器中读出送到显示器显示,或送打印机打印。一般地信号的放大、滤波、A/D转换以及信号各种运算解决都在仪表中完毕。1.2.3电子秤的计量性能 电子秤的计量
19、性能涉及的重要技术指标有:量程、分度值、分度数、准确度等级等。 (1) 量程:电子衡器的最大称量Max,即电子秤在正常工作情况下,所能称量的最大值。 (2) 分度值:电子秤的测量范围被提成若干等份,每份值即为分度值。用e或d来表达。 (3) 分度数:衡器的测量范围被提成若干等份,总份数即为分度数用n表达。 电子衡器的最大称量Max可以用总分度数n与分度值d的乘积来表达,即Max=nd (4) 准确度等级国际法制计量组织把电子秤按不同的分度数提成T、II、III、四类等级,分别相应不同准确度的电子秤和分度数n的范围,如表1所示:表1 不同准确度的电子秤和分度数标志及等级电子秤分类分度数范围特种准
20、确度基准衡器n 100000高准确度精密衡器10000 n100000中准确度商业衡器1000 n10000普通准确度粗衡器100n10001.3本设计思绪目前,台式电子秤在商业贸易中的使用已相称普遍,但存在较大的局限性:体积大、成本高、携带不便、应用场合受到制约。现有的便携秤为杆秤或以弹簧、拉伸变形来实现计量的弹簧秤,居民用户使用的基本是杆秤。弹簧盘秤制造工艺规定较高,弹簧的疲劳问题无法彻底解决,一旦超过弹簧弹性限度,弹簧秤就会产生很大误差,以至损坏,影响到称重的准确性和可靠性,只是一种暂时的代用品,也被列入逐渐取消的行列。微控制器技术、传感器技术的发展和计算机技术的广泛应用,电子产品的更新
21、速度达成了日新月异的地步。本系统在设计过程中,除了能实现系统的基本功能外,还增长了打印和通讯功能,可以实现和其他机器或设备(涉及上位PC机和数据存储设备)互换数据,除此之外,系统的微控制器部分选择了兼容性比较好的51系列单片机,在系统更新换代的时候,只需要增长很少的硬件电路,甚至仅仅删改系统控制程序就可以实现。此外由于实际应用当中,称可以有一定量的过载,但不能超过规定的范围,为此还设计了过载提醒。综上所述,本设计的重要思绪是:运用压力传感器采集因压力变化产生的电压信号,通过电压放大电路放大,然后再通过模数转换器转换为数字信号,最后把数字信号送入单片机。单片机通过相应的解决后,得出当前所称物品的
22、重量及总额,然后再显示出来。重要技术指标为:称量范围0600g,分度值1kg,精度等级III级,电源AC220V。这种高精度智能电子秤体积小、计量准确、携带方便,可以满足商业贸易和居民家庭的使用需求。2系统方案论证与选型按照本设计功能的规定,系统由5个部分组成:控制器部分、测量部分、数据显示部分、键盘部分、和电路电源部分,系统设计总体方案框图如图1所示。图1设计思绪框图测量部分是运用称重传感器检测压力信号,得到薄弱的电信号(本设计为电压信号),而后经解决电路(如滤波电路,差动放大电路,)解决后,送单片机中的A/D转换器,将模拟量转化为数字量输出,控制器接受来自A/D转换器输出的数字信号,通过复
23、杂的运算,将数宁信号转换为物体的实际重量信号,并将其送到显示单元中。2.1控制器部分本设计由于规定必须使用单片机作为系统的主控制器,并且以单片机为主控制器的设计,可以容易地将计算机技术和测量控制技术结合在一起,组成新型的只需要改变软件程序就可以更新换代的“智能化测量控制系统”。这种新型的智能仪表在测量过程自动化、测量结果的数据解决以及功能的多样化方面,都取得了巨大的进展。再则由于系统没有其它高标准的规定,又考虑到本设计中程序部分比较大,根据总体方案设计的分析,设计这样一个简朴的的系统,可以选用带A/D转换器的单片机,由于应用程序不大,应用程序直接存储存片内,不用在外部扩展存储器,这样电路也可简
24、化。STC公司的12系列的单片机都可使用,在这里选用STC生产的STC12C5A60S2单片机。STC12C5A60S2与MCS-51相比有如下优势:第一, 指令集与MCS-51系列单片机完全兼容第二, 片内存储器采用闪速存储器,并且支持SPI-ISP在线编程,使程序写入更加方便,提高了调试效率,缩短了开发周期;第三, 提供了更小尺寸的芯片,使整个硬件电路体积更小。此外价格低廉、性能比较稳定的MPU,具有64K8ROM、1RAM、2个16位定期计数器、5个8位I/O接口。这些配置可以很好地实现本仪器的测量和控制规定。第四, 单指令周期,运营速度高。第五, 自带上电复位电路,可减低单片机外围电路
25、的复杂限度。第六, 内置8路10位高速A/D转换,转换速度25万次/秒。通过放大电路的信号是模拟信号即模拟量,需要把它变成数字量才干送入单片机控制系统受理,所以需要有A/D转换电路。考虑到其他部分所带来的干扰 ,8位 A/D 无法满足系统精度规定。作为一般小商品称重需求,我们只需要选择10位的A/D转换器就可以了。 最后我选择了STC12C5A60S2这个比较常用的单片机来实现系统的功能规定。STC12C5A60S2内部带有60KB的程序存储器,并且带有8路10位精度的A/D转换器,基本上已经可以满足我们的需要。STC12C5A60S2单片机的引脚图如图2所示。图2 STC12C5A60S2单
26、片机的引脚图2.2数据采集部分电子秤的数据采集部分重要涉及称重传感器、解决电路电路,因此对于这部分的论证重要分两方面。2.2.1传感器的选择在设计中,传感器是一个十分重要的元件,因此对传感器的选择也显的特别的重要,不仅要注意其量程和参数,尚有考虑到与其相配置的各种电路的设计的难以限度和设计性价比等等。传感器量程的选择可依据秤的最大称量值、选用传感器的个数、秤体的自重、也许产生的最人偏载及动载等因素综合评价来拟定。一般来说,传感器的量程越接近分派到每个传感器的载荷,其称量的准确度就越高。但在实际使用时,由于加在传感器上的载荷除被称物体外,还存在秤体自重、皮重、偏载及振动冲击等载荷,因此选用传感器
27、量程时,要考虑诸多方面的因素,保证传感器的安全和寿命。传感器量程的计算公式是在充足考虑到影响秤体的各个因素后,通过大量的实验而拟定的。本设计规定称重范围0-600g,重量误差不大于0.1kg。为保证电子秤称量结果的准确度,克服传感器在低量程段线性度差的缺陷。传感器的量程应根据皮带秤的最大流量来选择。在实际工作中,规定称重传感器的有效量程在20%80%之间线性好,精度高。重量误差应控制存0.OIKg,又考虑到秤台自重、振动和冲击分量,还要避免超重损坏传感器,根据设计需要,拟定传感器的额定载荷为1Kg,允许过载为150%F.S,精度为0.05%,最大量程时误差0.1kg,可以满足本系统的精度规定。
28、综合考虑,本设计采用SP20C-G501电阻应变式传感器,其最人量程为1Kg.称重传感器由组合式S型梁结构及金属箔式应变计构成,具有过载保护装置。由于惠斯登电桥具诸如克制温度变化的影响,克制干扰,补偿方便等优点,所以该传感器测量精度高、温度特性好、工作稳定等优点,广泛用于各种结构的动、静态测量及各种电子秆的一次仪表。该称重传感器重要由弹性体、电阻应变片电缆线等组成,其工作原理如图3所示。图3 称重传感器原理图本设计的测量电路采用最常见的桥式测量电路,用到的是电阻应变传感器半桥式测量电路。它的两只应变片和两只电阻贴在弹性梁上,测量电阻随重力变化导致弹性梁应变而产生的变化。其测量原理:用应变片测量
29、时,将其粘贴在弹性体上。当弹性体受力变形时,应变片的敏感栅也随同变形,其电阻值发生相应变化,通过转换电路转换为电压或电流的变化。由于内部线路采用惠更斯电桥,当弹性体承受载荷产生变形时,输出信号电压可由下式给出:上式说明电桥的输出电压V和四个桥臂的应变片感受的应变量的代数和成正比。2.2.2放大电路选择 称重传感器输出电压振幅范围020mV。而A/D转换的输入电压规定为02V,因此放大环节要有100倍左右的增益。对放大环节的规定是增益可调的(70150倍),根据本设计的实际情况增益设为100倍即可,零点和增益的温度漂移和时间漂移极小。按照输入电压20mV,分辨率20230码的情况,漂移要小于1旧
30、。由于其具有极低的失调电压的温漂和时漂(lI.LV),从而保证了放大环节对零点漂移的规定。残余的一点漂移依靠软件的自动零点跟踪来彻底解决。稳定的增益量可以保证其负反馈回路的稳定性,并且最佳选用高阻值的电阻和多圈电位器。 由称重传感器的称量原理可知,电阻应变片组成的传感器是把机械应变转换成R/R,而应变电阻的变化一般都很微小,例如传感器的应变片电阻值120,灵敏系数K=2,弹性体存额定载荷作用下产生的应变为l000,应变电阻相对变化量为:R/R=K=2100010-6 =0. 002 由上式可以看出电阻变化只有0.24,其电阻变化率只有0.2%。这样小的电阻变化既难以直接精确测量,又不便直接解决
31、。因此,必须采用转换电路,把应变计的R/R变化转换成电压或电流变化,但是这个电压或电流信号很小,需要增长增益放大电路来把这个电压或电流信号转换成可以被A/D转换器接受的信号。在前级解决电路部分,我们考虑可以采用以下几种方案: 方案一:运用普通低温漂运算放大器构成前级解决电路; 普通低温漂运算放大器构成多级放大器会引入大量噪声。由于A/D转换器需要很高的精度,所以几毫伏的干扰信号就会直接影响最后的测量精度。所以,此种方案不宜采用。方案二:重要由高精度低漂移运算放大器构成差动放大器,而构成的前级解决电路;差动放人器具有高输入阻抗,增益高的特点,可以运用普通运放(如OP07)做成一个差动放大器。一般
32、说来,集成化仪用放大器具有很高的共模克制比和输入阻抗,因而在传统的电路设计中都是把集成化仪器放人器作为前置放人器。然而,绝人多数的集成化仪器放大器,特别是集成化仪器放大器,它们的共模克制比与增益相关:增益越高,共模克制比越大。而集成化仪器放大器作为心电前置放大器时,由于极化电压的存在,前置放大器的增益只能在几十倍以内,这就使得集成化仪器放大器作为前置放大器时的共模克制比不也许很高。有同学试图在前置放大器的输入端加上隔直电容(高通网络)来避免极化电压使高增益的前置放大器进入饱和状态,但由于信号源的内阻高,且两输入端不平衡,隔直电容(高通网络)使等共模干扰转变为差模干扰,结果适得其反,严重地损害了
33、放人器的性能。 为了实现信号的放人,其设计电路如图4所示:图4 运用高精度低漂移运放设计的差动放大器1 前级采用运放Al和A2组成并联型差动放大器。理论上不难证明,存运算放大器为抱负的情况下,并联型差动放人器的输入阻抗为无穷人,共模克制比也为无穷人。更值得一提的是,在理论上并联型差动放人器的共模克制比与电路的外围电阻的精度和阻值无关。2 阻容耦合电路放存由并联型差动放大器构成的前级放大器和由仪器放大器构成的后级放大器之间,这样可为后级仪器放大器提高增益,进而提高电路的共模克制比提供了条件。同时,南于前置放大器的输出阻抗很低,同时又采用共模驱动技术,避免了阻容耦合电路中的阻、容元件参数不对称(匹
34、配)导致的共模干扰转换成差模干扰的情况发生。3 后级电路采用便宜的仪器放大器,将双端信号转换为单端信号输出。由于阻容耦合电路的隔直作用,后级的仪器放大器可以做到很高的增益,进而得到很高的共模克制比。3硬件设计3.1 总体规划该系统采用应变片式传感器进行测量,得出模拟信号;再进行放大,然后送入单片机进行模数转换解决和数据解决。由传感器模块、主机接口模块、按键与显示模块组成。3.2 主控制器电路主控制器是STC12C5A60S2单片机,其外围电路简朴,只需要加上晶振电路和电源就可以工作。主控制器电路如图5所示。图5 主控制系统3.3 传感器放大电路传感器放大电路由两级组成,前级由两个同相比例运算电
35、路组成,后级是一个差动比例运算电路。传感器信号一方面进过前级进行初步放大,接着进入后级。由于前级的对称性直接影响后级的共模克制比,考虑到元件阻值的误差,R2,R4选用多圈精密可调电阻。为了提高后级对共模信号的克制,反馈电阻R3也采用精密多圈可调电阻。传感器放大电路如图6所示。图6 传感器放大电路3.4 显示电路1602液晶模块的引脚连线如图7。其中,第1、2脚为液晶的驱动电源;第三脚VL为液晶的对比度调节,通过在VCC和GND之间接一个10K多圈可调电阻,中间抽头接VL,可实现液晶对比度的调节;液晶的控制线RS、R/W、E分别接单片机的P0.5、P0.6、P0.7;数据口接在单片机的P2口;B
36、L+、BL-为液晶背光电源。图7 1602液晶模块的接线图1602液晶模块的初始化过程:延迟15ms写指令38H(不检测忙信号)延迟5ms写指令38H(不检测忙信号)延迟5ms写指令38H(不检测忙信号)(以后每次写指令、读/写数据操作之前均需检测忙信号)写指令38H:显示模式设立写指令08H:显示关闭写指令01H:显示清屏写指令06H:显示光标移动设立写指令0CH:显示开及光标设立1602液晶模块的读操作时序如图8所示。图8 1602液晶模块的读操作时序1602液晶模块的写操作时序如图9所示。图9 1602液晶模块的写操作时序4 软件设计4.1 系统应用程序组成本设计采用C语言编程,编译环境
37、为keil UV3。keil c51 是美国Keil Software 公司出品的51 系列兼容单片机C 语言软件开发系统,和汇编相比,C 在功能上、结构性、可读性、可维护性上有明显的优势,因而易学易用。Keil c51 软件提供丰富的库函数和功能强大的集成开发调试工具,全Windows 界面。此外重要的一点,只要看一下编译后生成的汇编代码,就能体会到keil c51 生成的目的代码效率非常之高,多数语句生成的汇编代码很紧凑,容易理解。在开发大型软件时更能体现高级语言的优势。Keil C51 可以完毕编辑、编译、连接、调试、仿真等整个开发流程。开发人员可用IDE 自身或其它编辑器编辑C 或汇编
38、源文献,然后分别有C51 及A51 编辑器编译连接生成单片机可执行的二进制文献(.HEX),然后通过单片机的烧写软件将HEX 文献烧入单片机内。软件重要三个方面:一是初始化系统;二是按键检测;三是数据采集、数据解决并进行显示。这三个方面的操作分别在主程序中来进行。程序采用模块化的结构,这样程序结构清楚,易编程和易读性好,也便于调试和修改。程序结构如图10所示。图10 程序结构4.2 主程序流程图系统程序固化在STC12C5A60S2内部的flash存储器中,分为主程序和若干子程序。主程序的功能是系统初始化,管理和调用各个子程序。本设计的程序流程图如图11所示。图11 程序流程图4.3 AD采样
39、程序块本文设计的STC12C5A60S2片内AD程序如下:#include config.h/- / SPEED1 SPEED0 A/D转换所需时间#define AD_SPEED 0x60 / 0110,0000 1 1 90 个时钟周期转换一次, / CPU工作频率21MHz时 A/D转换速度约 300KHz/#define AD_SPEED 0x40 /0100,0000 1 0 140 个时钟周期转换一次/#define AD_SPEED 0x20 /0010,0000 0 1 280 个时钟周期转换一次/#define AD_SPEED 0x00 /0000,0000 0 0 420
40、 个时钟周期转换一次/-unsigned int get_AD_result(unsigned char channel) unsigned char AD_finished=0; /存储 A/D 转换标志 ADC_RES = 0; /A/D 转换结果高8位 ADC_RESL = 0; /A/D 转换结果低2位 channel &= 0x07; /0000,0111 清0高5位 ADC_CONTR = AD_SPEED; _nop_();ADC_CONTR|=0xE0;/1110,0000清ADC_FLAG,ADC_START位和低三位 ADC_CONTR |= channel; /选择 A/
41、D 当前通道 _nop_(); ADC_CONTR |= 0x80; /启动 A/D 电源 delay(1); /使输入电压达成稳定 ADC_CONTR |= 0x08; /0000,1000 令 ADCS = 1, 启动A/D转换 AD_finished = 0; while (AD_finished = 0 ) /等待A/D转换结束 AD_finished = (ADC_CONTR & 0x10); /0001,0000 测试A/D转换结束否 ADC_CONTR &= 0xE7; /1111,0111 清 ADC_FLAG 位, 关闭A/D转换 return (ADC_RES2|ADC_R
42、ESL);/返回转换后的结果4.4 液晶显示程序块本文设计的1602液晶操作程序如下:/* 函 数 名:WriteDataLCD() 功 能:向1602写数据 说 明: 入口参数:WDLCD 返 回 值:无 */void WriteDataLCD(unsigned char WDLCD)ReadStatusLCD(); /检测忙LCD_Data = WDLCD;LCD_RS = 1;LCD_RW = 0;LCD_E = 0; /若晶振速度太高可以在这后加小的延时LCD_E = 0;LCD_E = 0; /延时LCD_E = 1;/* 函 数 名:WriteCommandLCD() 功 能:向1
43、602写指令 说 明: 入口参数:WDLCD,BuysC 返 回 值:无 */void WriteCommandLCD(unsigned char WCLCD,BuysC) /BuysC为0时忽略忙检测if (BuysC) ReadStatusLCD(); /根据需要检测忙LCD_Data = WCLCD;LCD_RS = 0;LCD_RW = 0; LCD_E = 0;LCD_E = 0;LCD_E = 0;LCD_E = 1; /* 函 数 名:ReadDataLCD() 功 能:从1602读数据 说 明: 入口参数:无 返 回 值:LCD_Data */unsigned char ReadDataLCD(void)LCD_RS = 1; LCD_RW = 1;LCD_E = 0;LCD_E = 0;LCD_E = 0;LCD_E = 1;return(LCD_Data);/* 函