人人范文网 范文大全

单片机电子秤设计报告

发布时间:2020-03-02 00:02:12 来源:范文大全 收藏本文 下载本文 手机版

基于单片机的电子秤

单片机电子秤设计报告

秤是一种在实际工作和生活中经常用到的测量器具。随着计量技术和电子技术的发展,传统纯机械结构的杆秤、台秤、磅秤等称量装置逐步被淘汰,电子称量装置电子秤、电子天平等以其准确、快速、方便、显示直观等诸多优点而受到人们的青睐。

和传统秤相比较,电子秤利用新型传感器、高精度AD转换器件、单片机设计实现,具有精度高、功能强等特点。本课题设计的电子秤具有基本称重、键盘输入、计算价格、显示、超重报警功能。该电子秤的测量范围为0-10Kg,测量精度达到5g,有高精度,低成本,易携带的特点。电子秤采用液晶显示汉字和测量记过,比传统秤具有更高的准确性和直观性。另外,该电子秤电路简单,使用寿命长,应用范围广,可以应用于商场、超市、家庭等场所,成为人们日常生活中不可少的必需品。

一、功能描述

1、采用高精度电阻应变式压力传感器,测量量程0-10kg,测量精度可

达5g。

2、采用电子秤专用模拟/数字(A/D)转换器芯片hx711对传感器信号进行调理转换,HX711 采用了海芯科技集成电路专利技术,是一款专为高精度电子秤而设计的24 位A/D 转换器芯片。

3、采用STC89C52单片机作为主控芯片,实现称重、计算价格等主控功

能。

4、采用128*64汉字液晶屏显示称重重量、单价、总价等信息。

5、采用4*4矩阵键盘进行人机交互,键盘容量大,操作便捷。

6、具有超量程报警功能,可以通过蜂鸣器和LED灯报警。

7、系统通过USB电源供电,单片机程序也可通过USB线串行下载。

二、硬件设计

1、硬件方案

单片机电子秤硬件方案如图1所示:

图1 单片机电子秤硬件方案 称重传感器感应被测重力,输出微弱的毫伏级电压信号。该电压信号经过电子秤专用模拟/数字(A/D)转换器芯片hx711对传感器信号进行调理转换。HX711 采用了海芯科技集成电路专利技术,是一款专为高精度电子秤而设计的24 位A/D 转换器芯片,内置增益控制,精度高,性能稳定。HX711芯片通过2线串行方式与单片机通信。单片机读取被测数据,进行计算转换,再液晶屏上显示出来。

矩阵键盘主要用于计算金额。当被测物体重量得到后,用户可以通过矩阵键盘输入单价,电子秤自动计算总金额并在液晶屏显示。电源系统给单片机、HX711电路及传感器供电。

2、称重传感器

传感器是测量机构最重要的部件。称重传感器本身具有单调性,其主要参数指标是灵敏度、总误差和温度漂移。

(1) 灵敏度

称重传感器的电灵敏度为满负荷输出电压与激励电压的比值,典型值是2mV/V。当使用2 mV/V灵敏度和5 V激励电压的传感器时,其满度输出电压为10 mV。通常,为了使用称重传感器线性度最好的一段称重范围,应当仅使用满度范围的三分之二。因此满度输出电压应当大约为6mV。当电子秤应用于工业环境时,在6mV满度范围内测量微小的信号变化并

非易事。

(2) 总误差

总误差是指输出误差和额定误差的比值。典型电子秤的总误差指标大约是0.02%,这一技术指标相当重要,它限制了使用理想信号调节电路所能达到的精确度,决定了ADC分辨率的选择以及放大电路和滤波器的设

计。 (3) 漂移

称重传感器也产生与时间相关的漂移。

目前常用的称重传感器有电阻应变式压力传感器、电容压力传感器、压电式压力传感器。选用时应按稳定行、精度登记、寿命和安装环境要求

考虑,其主要特点如下:

(1) 电容式压力传感器稳定性较差,精度和灵敏度较高,寿命较短,对环境要求苛刻,不易长距离传输。

(2) 压电式压力传感器稳定性好,精度和灵敏度高,寿命长,但大量程

的压力传感器尚待进一步研究。

(3) 电阻应变式压力传感器稳定性较好,精度和灵敏度较高,寿命较长,

对测量环境要求不太严格。

综上所述,选用电阻应变式压力传感器作为电子秤称重传感器是最为合适的。电阻应变式压力传感器主要由弹性体、电阻应变片电缆线等组成,内部线路采用惠更斯电桥,当弹性体承受载荷产生变形时,电阻应变片(转换元件)受到拉伸或压缩应变片变形后,它的阻值将发生变化(增大或减小),从而使电桥失去平衡,产生相应的差动信号,供后续电路测量和处理。电阻应变式传感器测量原理如图2所示。

图2 电阻应变式传感器测量原理

当垂直正压力P作用于梁上时,梁产生形变,电阻应变片R

1、R3受压弯拉伸,阻值增加;R

2、R4受压缩,阻值减小。电桥失去平衡,产生不平衡电压,不平衡电压与作用在传感器上的载菏P成正比,从而将非

电量转化成电量输出。

R

1、R

2、R3和R4组成惠更斯电桥,将2对电阻应变片的阻值变化转变成输出电压,其工作原理如图3所示。

图3 测量电桥原理

3、电子秤专用24位AD转换芯片HX711及其电路

HX711 采用了海芯科技集成电路专利技术,是一款专为高精度电子秤而设计的24 位A/D 转换器芯片。与同类型其它芯片相比,该芯片集成了包括稳压电源、片内时钟振荡器等其它同类型芯片所需要的外围电路,具有集成度高、响应速度快、抗干扰性强等优点。降低了电子秤的整机成本,提高了整机的性能和可靠性。

该芯片与后端MCU 芯片的接口和编程非常简单,所有控制信号由管脚驱动,无需对芯片内部的寄存器编程。输入选择开关可任意选取通道A 或通道B,与其内部的低噪声可编程放大器相连。通道A 的可编程增益为128 或64,对应的满额度差分输入信号幅值分别为±20mV或±40mV。通道B 则为固定的32 增益,用于系统参数检测。芯片内提供的稳压电源可以直接向外部传感器和芯片内的A/D 转换器提供电源,系统板上无需另外的模拟电源。芯片内的时钟振荡器不需要任何外接器件。上电自动复位功能简化了开机的初始化过程。 HX711内部方框图如图4所

示。其外部管脚如图5所示。

图4 HX711内部方框图

图5 HX711外部管脚图

图5为HX711芯片应用于计价秤的一个参考电路图。该方案使用内部时钟振荡器(XI=0),10Hz的输出数据速率(RATE=0)。电源(2.7~5.5V)直接取用与MCU 芯片相同的供电电源。通道A与传感器相连,通道B通过片外分压电阻与电池相连,用于检测电池电压。

图6 HX711计价秤应用参考电路图

本课题设计的HX711电路如图7所示:

图7 HX711电路

4、单片机STC89C52及其电路 (1) STC89C52 单片机概述

STC89C52系列单片机是宏晶科技生产的单时钟/机器周期(1T)的单片机,是高速/低功耗/超强抗干扰的新一代8051单片机,指令代码完全兼容传统8051,但速度快8-12倍,内部集成MAX810专用复位电路。

(2) STC89C52 单片机特点

l

增强型 8051 CPU,1T,单时钟/机器周期,指令代码

完全兼容传统8051;

l

工作电压: 5.5Vi*100;//得到小数部分

int2str(i,str1);

//显示整数部分

if (i>=1000)

{

display_GB2312_string(5,44,str1);

}

else if (i>=100)

{

display_GB2312_string(5,52,str1);

}

else if (i>=10)

{

display_GB2312_string(5,60,str1);

}

else

{

display_GB2312_string(5,68,str1);

}

//显示小数点

display_GB2312_string(5,76,\".\");

//显示小数部分

int2str(j,str1);

if (j

{

display_GB2312_string(5,84,\"0\");

display_GB2312_string(5,92,str1);

}

else

{

display_GB2312_string(5,84,str1);

} }

//显示重量,单位kg,两位整数,三位小数

void Display_Weight()

{

unsigned int i,j;

display_GB2312_string(3,60,\"

\");

//weight单位是g

i = weight/1000;

//得到整数部分

j = weighti*100;//得到小数部分

int2str(i,str1);

//显示整数部分

if (i>=1000)

{

display_GB2312_string(7,44,str1);

}

else if (i>=100)

{

display_GB2312_string(7,52,str1);

}

else if (i>=10)

{

display_GB2312_string(7,60,str1);

}

else

{

display_GB2312_string(7,68,str1);

}

//显示小数点

display_GB2312_string(7,76,\".\");

//显示小数部分

int2str(j,str1);

if (j

{

display_GB2312_string(7,84,\"0\");

display_GB2312_string(7,92,str1);

}

else

{

display_GB2312_string(7,84,str1);

} }

//数据初始化 void Data_Init()

{

price = 0;

DotPos = 0;

beep = 1;

alert = 1;

}

//管脚配置 void Port_Init()

{

}

//定时器0初始化 void Timer0_Init()

{

ET0 = 1;

//允许定时器0中断

TMOD = 1;

//定时器工作方式选择

TL0 = 0x06;

TH0 = 0xf8;

//定时器赋予初值

TR0 = 1;

//启动定时器

}

//定时器0中断 // void Timer0_ISR (void) interrupt 1 using 0

{

TL0 = 0x06;

TH0 = 0xf8;

//定时器赋予初值

//每0.5秒钟刷新重量

Counter ++;

if (Counter >= 200)

{

FlagTest = 1;

Counter = 0;

}

}

//按键响应程序,参数是键值

//返回键值:

(清0)

10//

4

11

(删除)

//

1

12//

(未定义)

14(未定义) 0

15(.) void KeyPre(uchar keycode)

{

switch (keycode)

{

case 0:

case 1:

case 2:

case 3:

case 4:

case 5:

case 6:

确定价格) 13(

case 7:

case 8:

case 9:

//目前在设置整数位,要注意price是整

型,存储单位为分

if (DotPos == 0)

{

//最多只能设置到

千位

if

(price

{

price=price

*10+keycode*100;

}

}

//目前在设置小数位

else if (DotPos==1) //

小数点后第一位

{

price=price+keyco

de*10;

++;

de;

case 10:

DotPos

}

else if (DotPos==2)

{

price=price+keyco

}

Display_Price();

break; //清零键 To_Zero();

Display_Price();

FlagSetPrice = 0;

DotPos = 0;

break;

case 11: //删除键,按一次删除最右一个数

if (DotPos==2)

{

price=price/10;

price=

price*10;

DotPos

--;

}

else if (DotPos==1)

{

price=price/100;

price=

price*100;

DotPos

--;

}

else if (DotPos==0)

{

price=price/1000;

price=

price*100;

}

Display_Price();

break;

case 13: //确认键

FlagSetPrice = 1;

break;

case 15: //小数点按下

if (DotPos == 0)

{

DotPos = 1;

//小数点后第一位

}

break;

} }

//===============main program===================//

void main(void)

{

Rom_CS=1;

initial_lcd();

EA = 0;

Data_Init();

Port_Init();

Timer0_Init();

//初始化完成,开中断

EA = 1;

//背光

LedA = 1;

clear_screen();

//clear all dots

display_GB2312_string(1,1,\"电子秤初始化....\");

To_Zero();

display_GB2312_string(1,1,\"电子秤初始化成功\");

display_GB2312_string(3,1,\"重量:

kg\");

display_GB2312_string(5,1,\"单价:

元\");

display_GB2312_string(7,1,\"金额:

元\");

Display_Price();

while(1)

{

//每0.5秒称重一次

if (FlagTest==1)

{

//称重,得到重量值weight,单位为g

AdVal=ReadCount();

weight=FullScale-AdVal

/1000;

if (weight>0x8000)

weight=0;

weight=10000*weight/Fu

llScale;

weight=weight*RATIO;

//如果超量程,则报警

if (weight >= 10000)

{

beep = 0;

alert

= 0;

display_GB2312_string(3,60,\"------\");

display_GB2312_string(7,44,\"--------\");

}

//如果不超量程

else

{

beep = 1;

alert

= 1;

//显示

重量值

Display_Weight();

//如果单

价设定好了,则计算价格

if (FlagSetPrice == 1)

{

money = weight*price/1000; //money单位为分

//显示总金

Display_Mon

ey();

}

else

{

display_GB2312_string(7,44,\"

\");

基于51单片机的电子秤设计

电子秤的设计

电子秤

电子秤设计教学设计PPT

实习报告单片机秒表设计

单片机设计心得

电子秤校准程序

电子秤标定档案

电子秤销售信

单片机课程设计报告

单片机电子秤设计报告
《单片机电子秤设计报告.doc》
将本文的Word文档下载到电脑,方便编辑。
推荐度:
点击下载文档
点击下载本文文档