AT89C51体重称电路图原理本文设计一种利用电阻应变式压力传感器和MCS-51单片机等器件制作的体重秤。该体重秤的量程为100kg,能实现称重、数码显示、调零等功能。该体重秤利用电桥测量原理,将压力应变传感器阻值转换为电压值,再经过放大器将电压放大,通过确定输出电压和标准重量的关系,形成一台原始体重秤。将此输出电压经过模数转换,送入MCS-51单片机处理,再控制数码管驱动电路,最后显示出测量结果。1111总体方案设计总体方案设计总体方案设计总体方案设计本设计由以下几部分组成:电阻应变传感器、信号放大器、模数转换、单片机、显示器。由电阻应变式传感器感受被测物体的质量,通过电桥输出电压信号,通过放大电路将输出信号放大,而后送入A/D转换单元进行模数转换,将转换后的数字信号送给单片机;单片机接收数据后,对数据进行处理,将其转换为对应的重量信息,送数码显示模块进行显示。单片机同时也可以进行调零操作。2222硬件电路设计硬件电路设计硬件电路设计硬件电路设计2.2.2.2.1111电阻应变传感器传感器框图:传感器框图:传感器框图:传感器框图:传感器获取信号信号放大模数转换微处理器处理即时显示电阻应变式传感器是将被测量的力,通过它产生的金属弹性变形转换成电阻变化的元件。由电阻应变片和测量线路两部分组成。电阻应变片产生的误差,主要来源于温度的影响,本设计主要在实验室内进行,温度的影响暂不处理。在电桥测量电路中,将一对变化相反的应变片接入电桥一臂,另一臂接两个相同的阻值作为基准值;假设桥臂电阻初始值R1=R2=R3=R4=350时平衡,其变化值为ΔR1=ΔR2=ΔR3=ΔR4=d时,其桥路输出电压Uout与d成正比。2.22.22.22.2输入调零电路调零电路用以抵消传感器的零点输出和称体本身的自重引起的传感器输出信号。它是由高稳定的电阻、多圈线绕电位器和直流稳压源组成的电桥电路图(下图),称为调零电桥。将调零电桥串接在传感器输出和放大器之间,通过调节调零电桥内的可变电位器RV1,改变桥路不平衡输出电压u02,使之与传感器空载输出电压u01大小相等,极性相反。这样就可以使电子称在空载时总的输出电压u0为零。RV1调零范围的计算:供桥电压为12VRV1的滑动臂在极端位置时,其输出电压为△uw1,△uw1=12V/(R5+R6)=12·(±5)/(10+10+10)=±2V调零电桥的输出为△u02,△u02=△uw1R1/[R5//(R6+RV1)+R7+R1]=±18.6mVu01u02到放大环节u02.32.32.32.3放大环节所选的称重传感器输出灵敏度为2mv,输入电桥电压为12V,因此传感器输出的摆幅约为0~24mV。而A/D转换的输入电压要求为0~5V,因此放大环节要有200倍左右的增益。放大环节如下:传感器满额输出时的电压为24mv,放大204倍后输入到A/D转换模块的模拟量为4.896V,用10位A/D时对应输出的数字量为4.896/5*1023=1001,即输出100.1kg,误差0.1%。2.42.42.42.4A/DA/DA/DA/D转换设计要求四位数码管显示,精度为0.1kg,因此转换分辨率为1/1000。这里采用10位模数转换芯片AD7810。AD7810是美国模拟器件公司(AnalogDevices)生产的一种低功耗10位高速串行A/D转换器。该产品有8脚DIP和SOIC两种封装形式,并带有内部时钟。它的外围接线极其简单,AD7810的转换时间为2μs,采用标准SPI同步串行接口输出和单一电源(2.7V~5.5V)供电。在自动低功耗模式下,该器件在转换吞吐率为1kSPS时的功耗仅为27μW,因此特点适合于便携式仪表及各种电池供电的应用场合使用。1111AD7810AD7810AD7810AD7810引脚功能AD7810引脚排列如图1所示,各引脚的功能如下:1脚CONVST:转换启动输入信号。2脚VIN+:模拟信号同相输入端。3脚VIN-:模拟信号反相输入端。4脚GND:接地端口。5脚VREF:转换参考电压输入端。6脚DOUT:串行数据输出端。7脚SCLK:时钟输入端。8脚VDD:电源端。接A/D转换接传感器反相器2222AD7810AD7810AD7810AD7810主要参数AD7810的主要参数如下:●分辨率:10位二进制;●转换时间:2μs;●非线性误差:±1LSB;●电源电压范围:2.7~5.5V;●电源功耗:高速方式时为17.5mW,低功耗方式时为5μW;●参考电压VEFR范围:1.2V~VDD;●模拟电压输入范围:0V~VREF;●输出形式:SPI同步串行输出,与TTL电平兼容。3333AD7810AD7810AD7810AD7810的工作模式3.1高速模式工图2是AD7810工作在高速模式时的时序图。在此模式下,启动信号CONVST一般处于高电平。在CONVST端输入一个负脉冲,其下降沿将启动一次转换。若采用内部时钟,那么,转换需要2μs的时间(图中t1)。当转换结束时(图中A点),AD7810会自动将转换结果锁存到输出移位寄存器中。此后,在每一个SCLK脉冲的上升沿,数据按由高到低的原则(首先发送DB9,最后发送DB0)依次出现在DOUT上。如果在转换还未结束之前就发出SCLK信号来启动数据输出,那么,在DOUT上出现的将是上一次转换的结果。启动信号CONVST应在转换结束前变为高电平,即t3应小于t1,否则器件将自动进入低功耗模式。另外,串行时钟SCLK的最高频率不能超过20MHz。3.2自动低功耗模式图3是AD7810工作在自动低功耗模式时的时序图。在此模式下,启动信号CONVST为低电平时,器件处于低功耗休眠状态。当在CONVST端输入一个正脉冲时,可在其上升沿将器件从休眠状态唤醒,唤醒过程需要1μs的时间(图中t2)。当器件被唤醒后,系统将自动启动一次转换,转换时间也是2μs(图中t1)。转换结束时,AD7810将转换结果锁存到输出移位寄存器中,同时自动将器件再一次置于低拉耗状态。启动信号CONVST正脉冲的宽度(图2中t3)应小于1μs,否则器件被唤醒后将不会自动启动转换,而是将A/D转换的启动时间顺延至CONVST的下降沿处。自动低功耗模式是AD7810是一大特色,一般当数据吞吐率小于100kSPS时,应使器件工作在此模式下。在5V电源电压下,当数据吞吐率为100kSPS时,器件的功耗2.7mW;而当数据吞吐率为10kSPS时,功耗为270μW;若数据吞吐率为1kSPS,则其功耗仅27μW。(3)接口电路:2.52.52.52.5显示输出单元与单片机接口用4位LED共阳数码管显示,P0口输出段码数据,P2口做扫描控制,每个LED数码管亮1ms时间再逐位循环,可以正常显示而不会产生闪烁。模拟输入2.62.62.62.6总电路图总电路图总电路图总电路图3333单片机程序设计单片机程序设计单片机程序设计单片机程序设计主程序流程图所示A/D转换子程序流程图赋循环初值R0=10启动AD7810读数据移位子程序开始R--=0?返回YN源程序:;*******************************************************************;体重秤*;采用4位LED共阳显示重量值,显示精度0.1kg,测量范围0~100kg*;用AT89C51单片机,11.0592MHz晶振*;********************************************************************;****************引脚定义******************SCLKBITP1.0DOUTBITP1.1CONVSTBITP1.2;******************系统初始化*****************ORG1000HSTART:MOVSP,#60HSJMPINITERROR:NOPLJMPSTARTNOPINIT:NOPMOVPSW,#00HCLRSCLKSETBSCLKCLRCONVSTLJMPMAINA/D转换显示计算初始化;*********************主程序***************************MAIN:LCALLMS0;调用模数转换程序LCALLWORK;数据处理LCALLDISP;显示LJMPMAIN;*****************************************************;子程序区;*****************************************************;********************************************;A/D转换子程序,返回时数据低8位在R4中,高2位在R5中MS0:MOVR1,#10;10位数据MOVR4,#0SETBCONVST;唤醒启动AD7810CLRCONVSTMS1:SETBSCLK;发送SCLK信号MOVC,DOUT;读一位数据CLRSCLKMOVA,R4;数据移位RLCAMOVR4,AMOVA,R5RLCAMOVR5,ADJNZR1,MS1RET;*************************************************;计算程序50H~53H分别存个、十、百、千位WORK:MOVR3,#03HMOVR2,#0E8H;求千位,R3R2=1000LCALLDIV2BY2;R5R4/1000MOV53H,R4;商小于10,以二进制的形式存于R4中MOVA,R1MOVR5,A;余数存于R5R4中,准备下一次计算MOVA,R0MOVR4,AMOVR3,#00HMOVR2,#64H;求百位LCALLDIV2BY2MOV52H,R4MOVA,R1MOVR5,AMOVA,R0MOVR4,AMOVR3,#00HMOVR2,#0AH;求十位LCALLDIV2BY2MOV51H,R4MOV50H,R0;R0中为个位RET;**************************************************************;显示子程序;**************************************************************;显示数据在50H~53H单元内,用4位LED共阳数码管显示,P0口输出段码数据,;P2口做扫描控制,每个LED数码管亮1ms时间再逐位循环DISP:MOVR1,#50H;指向显示数据首址MOVR5,#0FEH;扫描控制字初值PLAY:MOVP0,#0FFHMOVA,R5;扫描子放入AMOVP2,A;P2口控制哪个灯亮MOVA,@R1;取显示数据到AMOVDPTR,#TAB;取段码表地址MOVCA,@A+DPTR;查显示数据对应段码MOVP0,AMOVA,R5JBACC.1,LOOP;小数点处理CLRP0.7LOOP:LCALLDL1MS;显示1msINCR1;指向下一个指针MOVA,R5;扫描控制字放入AJNBACC.3,ENDOUT;ACC.3=0时一次显示结束RLA;A中数据循环左移MOVR5,A;放回R5内AJMPPLAY;跳回PLAY循环ENDOUT:MOVP0,#0FFH;一次显示结束,P0复位MOVP2,#0FFH;P2复位RET;子程序返回TAB:DB0C0H,0F9H,0A4H,0B0H,99H,92H,82H,0F8H,80H,90H,0FFH,88H,0BFH;共阳断码表0,1,2,3,4,5,6,7,8,9,不亮,A,-;********************延时程序*********************;延时1msDL1MS:MOVR6,#14HDL1:MOVR7,#19HDL2:DJNZR7,DL2DJNZR6,DL1RET;**************2字节/2字节无符号数除法程序*****************;R5R4/R3R2=R