1、 目 录一、绪论11.0引言 11.1问题提出 11.2任务和分析1二、总体方案设计 22.1设计任务22.2 系统设计框图3三、 系统硬件设计33.1 5V直流电源设计模块33.2 传感器数据采集模块53.3信号电路放大模块83.4 A/DC0832数模转换模块93.5 AT89C51单片机控制模块 113.6 LED显示模块 13四、 系统软件设计 144.1 C语言在单片机中用 144.2电子称软件设计和实现 154.3主程序步骤图154.4 子程序设计164.4.1 A/DC0832采样程序164.4.2 LED显示程序16五、 Protues仿真调试175.1 仿真调试结果17设计总
2、结19参考文件 20附录A程序清单 20附录B 原理图 26附录C PCB图27一、绪论1.0引言 在我们生活中常常全部需要测量物体重量,于是就用到秤,不过伴随社会进步、科学发展,我们对其要求操作方便、易于识别。伴随计量技术和电子技术发展,传统纯机械结构杆秤、台秤、磅秤等称量装置逐步被淘汰,电子称量装置电子秤、电子天平等以其正确、快速、方便、显示直观等很多优点而受到大家青睐。经过分析多年来电子衡器产品发展情况及中国外市场需求,电子衡器总发展趋势是小型化、模块化、集成化、智能化;其技术性能趋向是速率高、正确度高、稳定性高、可靠性高;其功效趋向是称重计量控制信息和非控制信息并重“智能化”功效;其应
3、用性能趋向于综合性和组合性。1.1问题提出 电子秤是电子衡器中一个,衡器是国家法定计量器具,是国计民生、国防建设、科学研究、内外贸易不可缺乏计量设备,衡器产品技术水平高低,将直接影响各行各业现代化水平和社会经济效益提升。称重装置不仅是提供重量数据单体仪表,而且作为工业控制系统和商业管理系统一个组成部分,推进了工业生产自动化和管理现代化,它起到了缩短作业时间、改善操作条件、降低能源和材料消耗、提升产品质量和加强企业管理、改善经营管理等多方面作用。伴随时代科技迅猛发展,微电子学和计算机等现代电子技术成就给传统电子测量和仪器带来了巨大冲击和革命性影响。经现今电子衡器制造技术及应用得到了新发展:电子称
4、重技术从静态称重向动态称重发展;计量方法从模拟测量向数字测量发展;测量特点从单参数测量向多参数测量发展。常规测试仪器仪表和控制装置被更优异智能仪器所替换,使得传统电子测量仪器在远离、功效、精度及自动化水平定方面发生了巨大改变,并对应出现了多种多样智能仪器控制系统,使得科学试验和应用工程自动化程度得以显著提升。1.2任务和分析 本设计基于单片机技术原理,以单片机芯片AT89C51作为关键控制器,经过控制外部AD0832芯片来检测滑动变阻器模拟物体质量。而且经过LED数码管显示。首先在protus软件环境中进行硬件电路图设计,再利用keil软件编程,然后在Proteus软件环境中运行仿真。该系统含
5、有简单清楚操作界面,可随时进行物体质量测量观察。系统还含有功耗小、成本低特点,含有很强实用性。本设计系统关键由:AT89C51为中央处理芯片,用于数据处理,初值设定。传感器模块进行物体质量测量,将传感器采集到数据经A/D转换送入单片机,再由单片机处理后由LED显示。本设计方案关键有六大模块: 1、5V直流电源设计模块2、传感器数据采集模块3、信号电路三放大模块4、A/DC0832数模转换模块5、AT89C51单片机控制模块6、LED显示模块二、总体方案设计 2.1设计任务设计要求掌握电子秤基础原理;掌握电子秤硬件电路设计;掌握电子秤软件程序设计,掌握仿真软件使用。1、 采取MCS-51系列单片
6、机为中央处理器2、实现10千克称重,称量精度:克3、采取LED显示器显示4、要求设计出电路原理图、印制板图5、要求写出程序清单6、Protus仿真程序2.2 系统总体设计框图 其工作原理为:前端信号处理时,选择放大、信号转换等方法,在显示方面采取含有字符图文显示功效LED显示器。这种方案不仅加强了人机交换能力,而且满足设计要求。电子秤总体方框图图2.2所表示。信号放大传输压力传感器AT89C51单片机LED数码管显示A/D数模转换 图2.2 系统总体方框图现在单片机技术比较成熟,功效也比较强大,被测信号经放大整形后送入单片机,由单片机对测量信号进行处理并依据对应数据关系译码显示出被测物体重量。
7、单片机控制适合于功效比较简单控制系统,而且其含有成本低,功耗低,体积小算术运算功效强,技术成熟等优点。三、 系统硬件设计3.1 5V直流电源设计模块 需要多个电源,单片机需要5V电源,运放需要5V,传感器需要5V以上线性电源。稳压电源设计,是依据稳压电源输出电压Uo、输出电流Io、输出纹波电压Uop-p等性能指标要求,正确地确定出变压器、集成稳压器、整流二极管和滤波电路中所用元器件性能参数,从而合理选择这些器件。图3.1所表示电路为输出电压+5V、输出电流1.5A稳压电源。它由电源变压器B,桥式整流电路D1D4,滤波电容C1、C3,预防自激电容C2、C3和一只固定式三端稳压器(7805)极为简
8、捷方便地搭成 。220V交流市电经过电源变压器变换成交流低压,再经过桥式整流电路D1D4和滤波电容C1整流和滤波,在固定式三端稳压器LM7805Vin和GND两端形成一个并不十分稳定直流电压(该电压常常会因为市电电压波动或负载改变等原所以发生改变)。此直流电压经过LM7805稳压和C3滤波便在稳压电源输出端产生了精度高、稳定度好直流输出电压。本稳压电源可作为TTL电路或单片机电路电源。三端稳压器是一个标准化、系列化通用线性稳压电源集成电路,以其体积小、成本低、性能好、工作可靠性高、使用简捷方便等特点,成为现在稳压电源中应用最为广泛一个单片式集成稳压器件。 图3.1 5V直流电源设计原理3.2
9、传感器数据采集模块3.2.1电阻应变式传感器组成和原理电阻应变式传感器是将被测量力,经过它产生金属弹性变形转换成电阻改变元件。由电阻应变片和测量线路两部分组成。本设计中采取是电阻丝应变片,为取得高电阻值,电阻丝排成网状,并贴在绝缘基片上,电阻丝两端引出导线,线栅上面粘有覆盖层,起保护作用。电阻应变片也会有误差,产生原因很多,所以测量时我们一定要注意,其中温度影响最关键,环境温度影响电阻值改变原因关键是:A. 电阻丝温度系数引发。B. 电阻丝和被测元件材料线膨胀系数不一样引发。对于因温度改变对桥接零点和输出,灵敏度影响,即使采取同一批应变片,也会因应变片之间稍有温度特征之差而引发误差,所以对要求
10、精度较高传感器,必需进行温度赔偿,处理方法是在被粘贴基片上采取合适温度系数自动赔偿片,并从外部对它加以合适赔偿。非线性误差是传感器特征中最关键一点。产生非线性误差原因很多,通常来说关键是由结构设计决定,经过线性赔偿,也可得到改善。滞后和蠕变是相关应变片及粘合剂误差。因为粘合剂为高分子材料,其特征随温度改变较大,所以称重传感器必需在要求温度范围内使用。全桥测量电路中,将受力性质相同两应变片接入电桥对边,当应变片初始阻值:R1R2R3R4,其改变值R1R2R3R4时,其桥路输出电压UoutKE。其输出灵敏度比半桥又提升了一倍,非线性误差和温度误差均得到改善。安装示意图图3.2.1所表示 图3.2.
11、1应变式传感器安装示意图3.2.2 电阻应变式传感器测量电路常规电阻应变片K值很小,约为2,机械应变度约为0.0000010.001,所以,电阻应变片电阻改变范围为0.00050.1欧姆。所以测量电路应该能正确测量出很小电阻改变,在电阻应变传感器中做常见是桥式测量电路。 桥式测量电路有四个电阻,其中任何一个全部能够是电阻应变片电阻,电桥一个对角线接入工作电压U,另一个对角线为输出电压Uo。其特点是:当四个桥臂电阻达成对应关系时,电桥输出为零,或则就有电压输出,可利用灵敏检流计来测量,所以电桥能够正确地测量微小电阻改变。 测量电路是电子秤设计电路中是一个关键步骤,我们在制作过程中应尽可能选择好元
12、件,调整好测量范围正确度,以避免减小测量数据误差。 它由电阻应变片电阻R1、R2、R3、R4组成测量电桥,R1R2R3R4350,加热丝阻值为50左右,测量电桥电源由稳压电源Uin供给。 传感器全桥测量电桥图3.2.2所表示:Rw1图3.2.2 全桥测量电桥图3.3信号电路放大模块此次课程设计中,需要一个放大电路,我们将采取三运放大电路,关键元件就是三运放大器。在很多需要用A/D转换和数字采集单片机系统中,多数情况下,传感器输出模拟信号全部很微弱,必需经过一个模拟放大器对其进行一定倍数放大,才能满足A/D转换器对输入信号电平要求,在此情况下,就必需选择一个符合要求放大器。 经由传感器或敏感元件
13、转换后输出信号通常电平较低;经由电桥等电路变换后信号亦难以直接用来显示、统计、控制或进行信号转换。为此,测量电路中常设有模拟放大步骤。这一步骤现在关键依靠由集成运算放大器基础元件组成含有多种特征放大器来完成。放大器输入信号通常是由传感器输出。传感器输出信号不仅电平低,内阻高,还常伴有较高共模电压。所以,通常对放大器有以下部分要求:1、输入阻抗应远大于信号源内阻。放大器负载效应会使所测电压造成偏差。2、抗共模电压干扰能力强。3、在预定频带宽度内有稳定正确增益、良好线性,输入漂移和噪声应足够小以确保要求信噪比。从而确保放大器输出性能稳定。4、能附加部分适应特定要求电路。如放大器增益外接电阻调整、方
14、便正确量程切换、极性自动变换等.图为3.3 为AD620放大器 AD620引脚说明: 1、8:外接增益电阻 2:反向输入端 3:同向输入端 4:负电源 5:基准电压 6:共地信号输出 图3.3 AD620 7:正电源 3.4 A/DC0832数模转换模块3.4.1功效特点ADC0832是NS(National Semiconductor)企业生产串行接口8位A/D转换器,经过三线接口和单片机连接,功耗低,性能价格比较高,适宜在袖珍式智能仪器仪表中使用。ADC0832 为8位分辨率A/D转换芯片,其最高分辨可达256级,能够适应通常模拟量转换要求。芯片含有双数据输出可作为数据校验,以降低数据误差
15、,转换速度快且稳定性能强。独立芯片使能输入,使多器件连接和处理器控制变得愈加方便。经过DI 数据输入端,能够轻易实现通道功效选择。其关键特点以下: 8位分辨率,逐次迫近型,基准电压为5V; 5V单电源供电; 输入模拟信号电压范围为05V; 输入和输出电平和TTL和CMOS兼容; 在250KHZ时钟频率时,转换时间为32us; 含有两个可供选择模拟输入通道; 功耗低,15mW。3.4.2外部引脚及其说明ADC0832有DIP和SOIC两种封装,DIP封装ADC0832引脚排列图3.4.2所表示。各引脚说明以下: CS片选端,低电平有效。 CH0,CH1两路模拟信号输入端。 DI两路模拟输入选择输
16、入端。 DO模数转换结果串行输出端。 CLK串行时钟输入端。 图3.4.2 ADC0832引脚图 Vcc/REF正电源端和基准电压输入端。 GND电源地。3.4.3 单片机对ADC0832 控制原理通常情况下ADC0832和单片机接口应为4条数据线,分别是CS、CLK、DO、DI。但因为DO端和DI端在通信时并未同时有效并和单片机接口是双向,所以电路设计时能够将DO和DI 并联在一根数据线上使用。当ADC0832未工作时其CS输入端应为高电平,此时芯片禁用,CLK 和DO/DI 电平可任意。当要进行A/D转换时,须先将CS端置于低电平而且保持低电平直到转换完全结束。此时芯片开始转换工作,同时由
17、处理器向芯片时钟输入端CLK提供时钟脉冲,DO/DI端则使用DI端输入通道功效选择数据信号。在第1个时钟脉冲到来之前DI端必需是高电平,表示开启位。在第2、3个时钟脉冲到来之前DI端应输入2位数据用于选择通道功效,其功效项见表1。 表1输入形式 配置位选择通道CH0CH1CHOCH1差分输入00+-01-+单端输入10+11+如表所表示,当配置位2位数据为1、0时,只对CH0 进行单通道转换。当配置2位数据为1、1时,只对CH1进行单通道转换。当配置2位数据为0、0时,将CH0作为正输入端IN+,CH1作为负输入端IN-进行输入。当配置2位数据为0、1时,将CH0作为负输入端IN-,CH1 作
18、为正输入端IN+进行输入。到第3个时钟脉冲到来以后DI端输入电平就失去输入作用,以后DO/DI端则开始利用数据输出DO进行转换数据读取。从第4个时钟脉冲开始由DO端输出转换数据最高位D7,随即每一个脉冲DO端输出下一位数据。直到第11个脉冲时发出最低位数据D0,一个字节数据输出完成。也正是以后位开始输出下一个相反字节数据,即从第11个时钟脉冲输出D0。随即输出8位数据。3.5 AT89C51单片机控制模块 AT89C51是一个带4K字节闪烁可编程可擦除只读存放器(FPEROMFalsh Programmable and Erasable Read Only Memory)低电压,高性能CMOS
19、 8位微处理器,俗称单片机。该器件采取ATMEL高密度非易失存放器制造技术制造,和工业标准MCS-51指令集和输出管脚相兼容。因为将多功效8位CPU和闪烁存放器组合在单个芯片中,ATMELAT89C51是一个高效微控制器, AT89C51单片机为很多嵌入式控制系统提供了一个灵活性高且价廉方案。AT89C51单片机特点能和MCS-51 兼容,有 4K字节可编程闪烁存放器,寿命能够达成1000写/擦循环,数据能够保留时间长达,全静态工作:0Hz-24MHz,三级程序存放器锁定,1288位内部RAM,32可编程I/O线,两个16位定时器/计数器,5个中止源,可编程串行通道,低功耗闲置和掉电模式,片内
20、振荡器和时钟电路。单片机引脚图3.5所表示: 图3.5 AT89C51单片机引脚图各引脚功效以下: VCC:供电电压。 GND:接地。 P0口:P0口为一个8位漏级开路双向I/O口,每脚可吸收8TTL门电流。当P1口管脚第一次写1时,被定义为高阻输入。P0能够用于外部程序数据存放器,它能够被定义为数据/地址第八位。在FIASH编程时,P0 口作为原码输入口,当FIASH进行校验时,P0输出原码,此时P0外部必需被拉高3。P1口:P1口是一个内部提供上拉电阻8位双向I/O口,P1口缓冲器能接收输出4TTL门电流。P1口管脚写入1后,被内部上拉为高,可用作输入,P1口被外部下拉为低电平时,将输出电
21、流,这是因为内部上拉缘故。在FLASH编程和校验时,P1口作为第八位地址接收。 P2口:P2口为一个内部上拉电阻8位双向I/O口,P2口缓冲器可接收,输出4个TTL门电流,当P2口被写“1”时,其管脚被内部上拉电阻拉高,且作为输入。并所以作为输入时,P2口管脚被外部拉低,将输出电流。这是因为内部上拉缘故。P2口当用于外部程序存放器或16位地址外部数据存放器进行存取时,P2口输出地址高八位。在给出地址“1”时,它利用内部上拉优势,当对外部八位地址数据存放器进行读写时,P2口输出其特殊功效寄存器内容。 P3口:P3口管脚是8个带内部上拉电阻双向I/O口,可接收输出4个TTL门电流。当P3口写入“1
22、”后,它们被内部上拉为高电平,并用作输入。作为输入,因为外部下拉为低电平,P3口将输出电流(ILL)这是因为上拉缘故。 RST:复位输入。当振荡器复位器件时,要保持RST脚两个机器周期高电平时间。 XTAL1:反向振荡放大器输入及内部时钟工作电路输入。 XTAL2:来自反向振荡器输出。芯片擦除:整个PEROM阵列和三个锁定位电擦除可经过正确控制信号组合,并保持ALE管脚处于低电平10ms 来完成。在芯片擦操作中,代码阵列全被写“1”且在任何非空存放字节被反复编程以前,该操作必需被实施。串口和中止系统仍在工作。在掉电模式下,保留RAM内容而且冻结振荡器,严禁所用其它芯片功效,直到下一个硬件复位为
23、止。3.6 LED显示模块3.6.1 LED显示器结构和原理 LED显示块是由发光二极管显示字段显示器件。在单片机应用系统中通常使用是七段LED。这种显示块有共阴极和共阳极两种。共阴极LED显示块发光二极管阴极共地。当某个发光二极管阳极为高电平时,发光二极管点亮;共阳极LED显示块发光二极管阳极并接。3.6.2 LED显示器和显示方法系统采取动态扫描显示方法显示电压,动态显示方法所需元件数量和元件种类较静态显示方法要少多,而且利用人眼视觉暂留效应和发光二极管熄灭时余辉,动态显示方法能够很好地“同时”显示多个字符,只要扫描频率足够高就不会使人产生闪烁感觉。在单片机应用系统中使用LED显示块组成N
24、位LED显示器。N位LED显示器有N根位选线和8*N根段选线。依据显示方法不一样,位选线和段选线连接方法不一样。段选线控制字符选择,位选线控制显示位亮、暗。LED显示器有静态显示和动态显示两种方法。我们使用为动态显示 LED动态显示方法。 LED单片机控制连线图3.6.1所表示: 图3.6.1 LED控制路线四、 系统软件设计 4.1 C语言在单片机中利用在单片机应用系统开发中,软件设计是最复杂和困难,大部分情况下工作量全部较大,尤其是对那些控制系统比较复杂情况。假如是机电一体化设计人员,往往需要同时考虑单片机软硬件资源分配。本系统软件设计关键分为系统初始化、按键、显示处理及信号频率输入处理。
25、程序设计是一件复杂工作,为了把复杂工作条理化,就要有对应步骤和方法。其步骤可概括为以下三点: 分析系统控制要求,确定算法:对复杂问题进行具体分析,找出合理计算方法及合适数据结构,从而确定编写程序步骤。这是能否编制出高质量程序关键。 依据算法画步骤图:画程序框图能够把算法和解题步骤逐步具体化,以降低犯错可能性。编写程序:依据程序框图所表示算法和步骤,选择合适指令排列起来,组成一个有机整体,即程序。C语言是一个通用计算机程序设计语言,在国际上很流行。它既能够用来编写计算机系统程序,也能够用来编写通常应用程序。以前计算机系统软件关键用汇编语言编写,单片机应用系统更是如此。C语言是目前最流行程序设计语
26、言,它像其它高级语言一样,面向用户,面向解题过程,编程者无须熟悉具体计算机内部结构和指令;C语言又像汇编语言一样,能够对机器硬件进行操作。如进行端口I,0操作、位操作、地址操作,并可内嵌汇编指令,将汇编指令看成它语句一样。我们知道,汇编语言将包含计算机硬件,所以C语言又像低级语言一样,能够对计算机硬件进行控制,所以大家把它称为介于高级语言和低级语言之间一个中级语言。正是因为C语言含有这么特征,所以很适合编写要对硬件进行操作软件程序。本文采取C语言进行编写因为此系统软件比较,其存放量较大,所以必需应用C语言编程了。4.2 电子称软件设计和实现电子称软件设计均采取模块化设计,整个程序包含主程序、定
27、时中止程序、INTO中止程序按键程序、数据处理子程序。全部程序均采取C汇编语言编写,电子计价秤软件设计思绪说明以下:主程序作用为程序初始化,并时时显示十进制质量。设定T0为计数工作方法,T1为定时工作方法。其中R0为标志位寄存器当为OOH时为正常显示方法。当为01H时为累计显示方法,在T1定时中止程序中。一秒钟采样物料重量(已转成脉冲频率),并赋值重量计算RAM区和显示RAM区。在INTO外部中止程序中,采样单价并赋值质量。4.3主程序步骤图主程序步骤图给出了系统工作基础过程,描述了信号基础流向,起到一个向导作用。 主程序步骤图图4.3所表示: 图4.3主程序步骤图4.4 子程序设计系统子程序
28、关键包含A/D转换开启及数据读取程序设计、LED显示程序设计等。4.4.1 A/DC0832采样程序开 始拉低CS、拉高CLKDATA右移8位?拉高CS、拉低CLK,返回数据DAT结 束YNMCU经过拉低CS、拉高CLK来开启ADC0832进行外部压力传感转换后电压信号进行采样,每产生8个CLK脉冲,DATA取得一位完整8bit数据,此时MCU发送中止请求,拉高CS,拉低CLK,并将数据DAT返回。ADC0832采样程序程序步骤图图4.4.1所表示。 图4.4.1 A/DC0832采样程序步骤图4.4.2 LED显示程序 7段式LED显示器内部由7个发光二极管和一个小圆点发光二极管组成。这种数
29、码管共阴和共阳两种:共阳极数码管发光二极管全部阳极连接在一起,为公共端。共阴极数码管发光二极管全部阴极连接在一起,为公共端。当需要某个数码管亮时,需要选中该数码管,再由输入端口输入对应段码。LED数码管段码以下所表示:0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90,0x7f,0xff 这些段码分别代表数码管显示对应数字0 1 2 3 4 5 6 7 8 9 . 关闭功效。附录A程序清单#include#include#include #include #define uchar unsigned char#define uint unsign
30、ed int#define BUSY 0x7f /常量定义#define DATAPORT P0sbit ADCS =P35; sbit ADDI =P37; sbit ADDO =P37; sbit ADCLK =P36; sbit LED1=P20;sbit LED2=P21;sbit LED3=P22;sbit LED4=P23;sbit LED5=P24;sbit LED6=P25;uint x1,y1,z1=0,w1,temp1;uchar ad_data,k,n,m,e,num,s; /采样值存放sbit beep =P30; char press_data; /标度变换存放单元u
31、nsigned char press_ge=0; /显示值个位unsigned char press_shifen=0; /显示值十分位unsigned char press_baifen=0; /显示值百分位unsigned char press_qianfen=0; /显示值千分位unsigned char press_shi=0; /显示值十位unsigned char press_dian=0; /显示值小数点 void delay(uint);uchar Adc0832(unsigned char channel);void alarm(void);void data_pro(voi
32、d);int x;/定义数码管共阳极段码uchar code dispcode=0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90,0x7f,0xff;void delayms (unsigned int x) unsigned char j; while (x-) for (j=0;j1)&0x1; _nop_(); _nop_(); ADCLK=0;/拉低CLK端,形成下降沿3 ADDI=1;/控制命令结束 _nop_(); _nop_(); dat=0; for(i=0;i8;i+) dat|=ADDO;/收数据 ADCLK=1; _nop
33、_(); _nop_(); ADCLK=0;/形成一次时钟脉冲 _nop_(); _nop_(); dat=1; if(i=7)dat|=ADDO; for(i=0;i8;i+) j=0; j=j|ADDO;/收数据 ADCLK=1; _nop_(); _nop_(); ADCLK=0;/形成一次时钟脉冲 _nop_(); _nop_(); j=j7; ndat=ndat|j; if(i=1; ADCS=1;/拉低CS端 ADCLK=0;/拉低CLK端 ADDO=1;/拉高数据端,回到初始状态 dat=8; dat|=ndat; return(dat); /return ad k void d
34、ata_pro(void) unsigned int; float press; if(0ad_data256) int vary=ad_data;press=(0.01961*vary);temp1=(int)(press*); /放大倍 press_shi=temp1/10000; /取电压值十位press_ge=(temp1%10000)/1000; /取电压值个位press_shifen=(temp1%10000)%1000)/100; /取电压值十分位press_baifen=(temp1%10000)%1000)%100)/10;/取电压值百分位press_qianfen=(temp1%10000)%1000)%100)%10;/取电压值千分位press_dian=10; /取电压值小数点 附录B、电子称原理图 5V直流电源设计原理图 附录C、PCBPCB三维视图: