基于MCS51的电子秤设计.docx

上传人:b****7 文档编号:9261837 上传时间:2023-02-03 格式:DOCX 页数:13 大小:285.97KB
下载 相关 举报
基于MCS51的电子秤设计.docx_第1页
第1页 / 共13页
基于MCS51的电子秤设计.docx_第2页
第2页 / 共13页
基于MCS51的电子秤设计.docx_第3页
第3页 / 共13页
基于MCS51的电子秤设计.docx_第4页
第4页 / 共13页
基于MCS51的电子秤设计.docx_第5页
第5页 / 共13页
点击查看更多>>
下载资源
资源描述

基于MCS51的电子秤设计.docx

《基于MCS51的电子秤设计.docx》由会员分享,可在线阅读,更多相关《基于MCS51的电子秤设计.docx(13页珍藏版)》请在冰豆网上搜索。

基于MCS51的电子秤设计.docx

基于MCS51的电子秤设计

基于MCS-51的电子秤设计

摘 要:

本文设计一种利用电阻应变式压力传感器和MCS-51单片机等器件制作的电子秤。

该秤可以对200g量程范围内的物体进行称量,能实现称重、数码显示、去皮/清零等功能。

该电子秤利用电桥测量原理,将压力应变传感器阻值转换为电压值,再经过放大器将电压放大,通过确定输出电压和标准重量的关系,形成一台原始电子秤。

将此输出电压经过模数转换,送入MCS-51单片机处理,再控制数码管驱动电路,最后显示出测量结果。

关键词:

电子秤;应变式压力传感器;电桥;放大电路;单片机

1总体方案设计

本设计由以下几部分组成:

电阻应变传感器、信号放大器、模数转换、单片机、显示器。

其结构图如下所示。

由电阻应变式传感器感受被测物体的质量,通过电桥输出电压信号,通过放大电路将输出信号放大,而后送入A/D转换单元进行模数转换,将转换后的数字信号送给单片机;单片机接收数据后,对数据进行处理,将其转换为对应的重量信息,送液晶显示模块进行显示。

单片机同时也可以进行去皮调零操作,因此单片机还需查寻键盘是否有输入,执行相应的功能。

2硬件电路设计

2.1电阻应变传感器

电阻应变式传感器是将被测量的力,通过它产生的金属弹性变形转换成电阻变化的元件。

由电阻应变片和测量线路两部分组成。

电阻应变片产生的误差,主要来源于温度的影响,本设计主要在实验室内进行,温度的影响暂不处理。

在电桥测量电路中,将一对变化相反的应变片接入电桥一臂,另一臂接两个相同的阻值作为基准值;当桥臂电阻初始值R1=R2=R3=R4=350时平衡,其变化值为ΔR1=ΔR2=ΔR3=ΔR4=d时,其桥路输出电压Uout与d成正比。

2.2放大电路设计

  由于传感器输出的信号比较微弱,必须通过一个放大器对其进行放大,才能满足A/D转换器对输入信号电平的要求。

本设计中选用由三运放构成的具有高输入阻抗,高共模抑制比的仪表放大器作为前级,再接一个反相比例放大器作为后级输出。

另外,仪表放大电路中电阻Rw1可用于微调放大倍数;而后级放大器原接地端现在通过Rw2接入一电压值,可以对输出电平进行平移。

2.3单片机电路设计

2.3.1单片机最小系统

  对51系列单片机来说,最小系统一般应该包括单片机、晶振电路和复位电路。

下面给出一个51单片机的最小系统电路图。

复位电路:

由电容串联电阻构成,一般教科书推荐C 取10u,R取8.2K.当然也有其他取法的,原则就是要让RC组合可以在RST脚上产生不少于2个机周期的高电平.

晶振电路:

典型的晶振取11.0592MHz(因为可以准确地得到9600波特率和19200波特率,用于有串口通讯的场合)/12MHz(产生精确的us级时歇,方便定时操作)

2.3.2模数转换与单片机接口

ADC0809是带有8位A/D转换器、8路多路开关以及微处理机兼容的控制逻辑的CMOS组件。

它是逐次逼近式A/D转换器,可以和单片机直接接口。

(1)引脚说明:

IN0-IN7:

8条模拟量输入通道,要求信号单极性,电压范围是0-5V;

地址输入和控制线:

4条

数字量输出及控制线:

11条

CLK为时钟输入信号线:

所需时钟信号必须由外界提供;

VREF(+),VREF(-):

参考电压输入。

(2)工作过程:

请参考ADC0809时序图。

ST为转换启动信号,当ST上跳沿时,所有内部寄存器清零;下跳沿时,开始进行A/D转换;在转换期间,ST应保持低电平。

EOC为转换结束信号。

当EOC为高电平时,表明转换结束。

OE为输出允许信号,用于控制三条输出锁存器向单片机输出转换得到的数据。

OE=1,输出转换得到的数据;OE=0,输出数据线呈高阻状态。

D7-D0为数字量输出线。

(3)接口电路:

ADC0809的时钟由51ALE信号给出;

数字量输出和51P0口直接相接;

地址控制线同样使用P0口,用一片74373锁存地址,然后连入ADDA~ADDC,373的使能由51ALE控制;

ADC0809各个使能端们由P2.0和读写标志口共同控制,任意写一个数时允许ADALE并启动转换(ADSTART端);读入时应该使AD读端口使能(ADENABLE端);

数字量传输使用中断方式,将ADEOC接入51INT0,转换完成后可以触发51执行中断程序。

这样连接的ADC由于使用51P2.0口和ADIN0,地址应该是0xFEF8;实际使用的实验箱中有唯一地址译码器,地址为0xcfa0;另外,实验箱部分电路已经连好,包括51最小系统和AD、显示输出的必要连线,Vref也已经连为5V不能改变。

2.3.3显示输出单元与单片机接口

利用8279键盘显示接口电路和实验箱上提供的数码显示,可以完成该功能。

利用8279可实现对键盘/显示器的自动扫描,以减轻CPU的负担,且具有显示稳定、程序简单、不会出现误动作等特点。

8279操作命令字较多,根据需要来灵活使用。

实验箱中数码显示地址为0xcfe8,将七段显示编码送入即可;显示控制单元地址为0xcfe9,可以控制输出到哪一位数码显示块上。

2.3.4去皮清零键与单片机的接口

  将一手动控制的高低电平信号(手动单脉冲)送入单片机P1.0口,通知单片机进行去皮操作。

2.4Protel与PCB制版

使用Protel进行PCB制版时应遵循相应的步骤。

(1)连接原理图,选好参数以及封装,还可以对放大部分进行仿真

(2)电器检查

(3)新建pcb图

(4)创建NET表,导入/更新pcb图

(5)排位置,自动布线

(6)手动修补,完成设计

3软件与算法设计

3.1数据采集与放大倍数

传感器输入:

选择一个合适的电桥基准电压,传感器电桥输出电压为300.50mV~301.45mV,对应0~20g重物,平均每克变动不到0.1mV;由于它的变动范围很小,因而设计300mV的偏移量,不让其在0mV上下变动,以减少运放零漂的影响。

输出到AD:

ADC0809的Vref在实验箱内已经设定为5V,因而其分辨率约为5V/256=20mV。

这样,信号的放大倍数应该在200~400左右。

为了使输出更准确,使用+/-15V电源给集成运放供电,最后采用分压电阻使其符合0~5V的AD输入。

根据选取的参数值以及Rw1所调的阻值1k,总的放大倍数为25/1*47/5.1*33/10*1/3=253。

3.2数字量的处理

放上秤盘,调节Rw2,使放大器输出约为0.5V。

这时放上重物200g,放大器输出约2.7V左右。

根据放大器输出电压对应的数字值,以及重物重量(输出显示值),可以确定它们的关系。

砝码个数

0

1

2

3

4

5

6

7

8

9

10

数字量值

31

43

55

59

71

88

104

112

119

131

139

重量显示

0

20

40

60

80

100

120

140

160

180

200

LinearmodelPoly1:

f(x)=p1*x+p2

Coefficients(with95%confidencebounds):

p1=1.784(1.66,1.908)

p2=-54.37(-65.95,-42.8)

式中的常数可以通过去皮清零键补偿,比例系数可以通过单片机进行乘法运算调整。

3.3单片机程序设计

单片机程序主要是输出显示和去皮清零两大部分。

输出显示时需要做乘法运算,同时换成相应的十进制数;去皮清零时需要根据操作者的指示预存一个数字信号。

设计的程序如下。

#include

#include

#defineLed_datXBYTE[0xcfe8]

#defineLed_ctlXBYTE[0xcfe9]

#definead_portXBYTE[0xcfa0]

unsignedchartable1[]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f};/*0-9*/

unsignedcharresig=0,renow=0,vbase=0;

voidDisplay_byte(unsignedcharloc,unsignedchardat)

/*将ad转换的数字值处理并显示为十进制*/

{

unsignedintm;

unsignedchartab[3];

loc&=0xf;

m=dat*1.75;/*换算倍数关系,根据3.2节中p1=1.784*/

tab[0]=m/100;//计算各位

tab[1]=m/10;

tab[1]=tab[1]%10;

tab[2]=m%10;

Led_ctl=loc|0x80;

Led_dat=table1[tab[0]];/*显示由ad转换得到数(对应的十进制数)的高位*/

loc++;

Led_ctl=loc|0x80;

Led_dat=table1[tab[1]];/*显示由ad转换得到数(对应的十进制数)的中位*/

loc++;

Led_ctl=loc|0x80;

Led_dat=table1[tab[2]];

}

voiddelay(unsignedintt)

{

for(;t>0;t--);

}

voidmain(void)

{

Led_ctl=0xd1;//init

while((Led_ctl&0x80)==0x80);

Led_ctl=0x31;

while

(1)

{

ad_port=0;//准备读ad

while(INT0);

while(!

INT0);

renow=P1;

if(renow!

=resig)//清零按键

{

vbase=ad_port;

resig=renow;

}

else{//输出显示

Display_byte(0,ad_port-vbase);

}

delay(20000);

}

}

4总结

本课程设计制作的电子秤,集传感器技术、微机技术于一体,实现了基本的秤重显示功能,稍加扩展,还可与其他生产质量管理系统相连接,实现数据交换记录分析等功能,具有推广应用价值。

我们小组几人分工学习,相互配合,终于完成了课程设计的要求。

课程设计过程中,我们将课上学习的理论知识加以运用,锻炼了自主学习能力,遇到不懂的查资料,出现问题相互讨论,实际操作中锻炼的动手能力。

姜老师对我们的指导和帮助功不可没,她还教会了我们使用Protel软件的方法,我们向她表示由衷的感谢。

在实际操作中,放大器部分遇到的问题最大。

由于传感器输出电压较小,使得放大电路的调适任务比较困难。

对此,我们先是选用合适的电路形式,即仪表放大接一级可调电平高低的比例放大;接下来给放大器各级输入一个容易实现的电压,看看各级放大倍数是否与理论相符;这之后再使传感器输出在一个基准值上下变化,如300mV,而不是在0上下变化,这样放大出的电压较为稳定;增加的基准电压由第三级调到0左右,不能准确调零的部分再由单片机去皮调零。

5参考文献

[1]北京精仪达盛科技有限公司.EL型微机教学实验系统,在线帮助文件.北京.

[2]AtmelCorporation.AT89C52DataBook[Z].1999.

[3]NationalSemiconductorCorporation.ADC080xDataBook[Z].1999.

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 工作范文 > 行政公文

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1